Разработка и ромхакинг > Ромхакинг и программирование
UniPatcher - патчер ROM'ов для Android
(1/2) > >>
Mashin:
UniPatcher - патчер ROM'ов для смартфонов на Android.

Программа поддерживает множество форматов патчей:  IPS, IPS32, UPS, BPS, APS (GBA), APS (N64), PPF, DPS, EBP и XDelta3.

Также программа умеет:
- исправлять контрольную сумму для игр Sega Mega Drive (используется если игра после пропатчивания не запускается, отображая лишь красный экран)
- удалять/добавлять SMC заголовок для игр Super Nintendo
- создавать патчи в формате XDelta3



Сайт программы: https://github.com/btimofeev/UniPatcher
Скачать можно в Google Play или F-Droid.

Я являюсь автором программы, т.ч. принимаю в этой теме пожелания по дальнейшему развитию, отчеты об ошибках и т.п. Проект открытый, если кто-то хочет помочь с развитием пишите мне.
Mr2:

--- Цитата: Mashin от 24 Февраль 2020, 13:36:14 ---Я являюсь автором программы, т.ч. принимаю в этой теме пожелания по дальнейшему развитию
--- Конец цитаты ---
Думаю что полезно будет добавить поддержку чит патчей. Формат простой (скрипт). Тут пример создания патча.
Mashin:

--- Цитата: Mr2 от 24 Февраль 2020, 14:04:33 ---Думаю что полезно будет добавить поддержку чит патчей. Формат простой (скрипт). Тут пример создания патча.

--- Конец цитаты ---

Нужно более подробное описание формата скрипта, из скриншота много не поймешь, а ссылка на Cheat patcher v0.4 битая. А в целом можно добавить.
Mr2:

--- Цитата: Mashin от 24 Февраль 2020, 14:20:43 ---Нужно более подробное описание формата скрипта,
--- Конец цитаты ---

Скрипт описан в файле "Техническая информация.txt" в архиве с программой.


--- Цитата: Mashin от 24 Февраль 2020, 14:20:43 ---А в целом можно добавить.

--- Конец цитаты ---
Круто!  :wow:
Yoti:

--- Цитата: Mashin от 24 Февраль 2020, 14:20:43 ---А в целом можно добавить.
--- Конец цитаты ---
Можешь не тратить зря время, этим никто не пользуется всё равно.
Mr2:
Позиция недалёкого тро-ло-ло сообщества нам давно ясна: "нам ваш интернет не нужОн". :crazy:
Если и патчить чит коды, то только через хекс редактор, естественно он должен быть консольным, а не унылым окном с кнопками.  :thumbup:
PS: Накручивая счётчик постов глупыми сообщениями, ром хакером стать не получится.  ::)
dedok179:

--- Цитата: Mr2 от 26 Февраль 2020, 08:36:37 ---Позиция недалёкого тро-ло-ло сообщества нам давно ясна: "нам ваш интернет не нужОн". :crazy:
Если и патчить чит коды, то только через хекс редактор, естественно он должен быть консольным, а не унылым окном с кнопками.  :thumbup:
PS: Накручивая счётчик постов глупыми сообщениями, ром хакером стать не получится.  ::)

--- Конец цитаты ---
Там уже давно все понятно. Не думал о графической оболочке для написания самих патчей, или оно излишне уже будет? Некоторые недохацкеры негодуют наверное, что это за команды и как их правильно расставить чтобы мир не схлопнулся.
Mr2:

--- Цитата: dedok179 от 26 Февраль 2020, 08:59:34 ---Не думал о графической оболочке для написания самих патчей, или оно излишне уже будет?
--- Конец цитаты ---

Думал, но один все вопросы решить не могу. Да, и изначально формат был открытым, и выкладывался до его реализации на суд публике.
Так что любой, кому не лень, может заняться этим вопросом. :)


--- Цитата: dedok179 от 26 Февраль 2020, 08:59:34 ---Некоторые недохацкеры негодуют наверное, что это за команды и как их правильно расставить чтобы мир не схлопнулся.

--- Конец цитаты ---
Максимум что я мог сделать(Техническая информация.txt), я сделал.
Sharpnull:
* Можно добавить исправление контрольной суммы SNES, это не влияет на запуск в эмуляторе, но он пишет, когда неверная.
* Почему-то SD карту не могу выбрать. Может что-то не понял.
* Сортировку возможно лучше сделать без учёта регистра.
* Патчи читов можно сделать простого формата как список 01FFBE:0A и Game Genie как в Game Genie Guy! (есть исходный код). Такой же формат (наверно общепринятый) на https://gamehacking.org/, только там ещё есть интервалы и ещё некоторые приколы.

Какое сжатие поддерживает xdelta (VCDIFF)?
--------
Про xdelta почему спрашиваю. xdelta3 для винды по умолчанию добавляет сжатие (secondary compression) lzma, которое не поддерживает web-патчер https://www.marcrobledo.com/RomPatcher.js/. Попробовал сейчас в UniPatcher - ошибка, без сжатия ещё не пробовал. UPD: Без сжатия работает, если создан так:

--- Код: ---xdelta3.exe -e -S -s old.bin new.bin delta.vcdiff
--- Конец кода ---
Если убрать -S, то по умолчанию lzma и ошибка в UniPatcher.
--------
* Можно добавить удаление/добавление FDS заголовка. Игр для FDS мало, но некоторые старые эмуляторы понимают только с заголовком или только без. Это легко, одна сторона всегда размером 65500, а заголовок 16 байт, в котором "FDS", количество сторон и нули. Проверка остатка и всё.
Ещё иногда нужно склеивать стороны в один файл, но это, наверно, излишне.

Если что, дописывал конвертер QD <-> FDS на Python 3:
[*]Добавил контрольные суммы, вместо нулей, которые есть в QD, но в образах в сети они не всегда верные и хотя размер QD больше (65536), конец может обрубиться из-за контрольных сумм, но там обычно мусор.
[*]Возможность добавления FDS заголовка при QD -> FDS.
[*]Любое количество сторон (255 макс. для байта).
[*]Исправил некоторые баги.[/list]
https://gist.github.com/infval/18d65dd034290fb908f589dcc10c6d25
--------
* Хорошо бы добавить высчитывание контрольной суммы, как в https://www.marcrobledo.com/RomPatcher.js/. Есть отдельные программы и X-plore показывает SHA-1, MD5 (но не CRC32 :( ), но так было бы удобней.
Mashin:

--- Цитата: Sharpnull от 26 Февраль 2020, 14:23:31 ---* Почему-то SD карту не могу выбрать. Может что-то не понял.
* Сортировку возможно лучше сделать без учёта регистра.
--- Конец цитаты ---
Я в одной из ближайших версий планирую перейти на встроенный в Android диалог выбора файлов, т.к. в моей текущей реализации слишком много проблем и от неё давно надо было отказаться.


--- Цитата: Sharpnull от 26 Февраль 2020, 14:23:31 ---* Хорошо бы добавить высчитывание контрольной суммы, как в https://www.marcrobledo.com/RomPatcher.js/.
--- Конец цитаты ---
Оно есть, но видимо не в самом интуитивно понятном месте. Нужно при выборе файла сделать долгий тап на него, откроется окошко с свойствами файла, там есть контрольные суммы. С переходом на стандартный выбор файла перенесу это в главное окно.


--- Цитата: Sharpnull от 26 Февраль 2020, 14:23:31 ---Какое сжатие поддерживает xdelta (VCDIFF)?
--- Конец цитаты ---
Наверное никакое  :) Подобные патчи мне не попадались. Посмотрю как прикрутить, спасибо.


--- Цитата: Sharpnull от 26 Февраль 2020, 14:23:31 ---* Можно добавить удаление/добавление FDS заголовка.
--- Конец цитаты ---
Даже не знал что такое существует. Посмотрю на досуге.


--- Цитата: Sharpnull от 26 Февраль 2020, 14:23:31 ---* Патчи читов можно сделать простого формата как список 01FFBE:0A и Game Genie
--- Конец цитаты ---
Уже думал о таком, да и для Symbian когда-то давно писал подобное. Добавлю.


Добавлено позже:

--- Цитата: Yoti от 25 Февраль 2020, 02:15:44 ---Можешь не тратить зря время, этим никто не пользуется всё равно.

--- Конец цитаты ---
Ну бежать и прямо сейчас делать я не собираюсь, есть куча вещей которых нужно до этого поменять\добавить в программу. Но себе на заметочку я такие штуки записываю, так что может когда-то будет время и желание добавить.
Sharpnull:

--- Цитата: Mashin от 27 Февраль 2020, 12:01:19 ---Нужно при выборе файла сделать долгий тап на него, откроется окошко с свойствами файла, там есть контрольные суммы.
--- Конец цитаты ---
Я не догадался, но вообще это удобно, чем сначала выбрать файл, а потом смотреть контрольную сумму. Она ещё высчитывается не сразу, поэтому нельзя выводить без явного действия от пользователя. UPD: Но дополнительный пункт в меню для контрольной суммы тоже хорошо.
* Иконку приложения стоило бы заменить на более подходящую по смыслу, обычный геймпад ни о чём не говорит. Добавить изображение заплатки. Например так:
Mashin:

--- Цитата: Sharpnull от 27 Февраль 2020, 14:24:17 ---* Иконку приложения стоило бы заменить на более подходящую по смыслу, обычный геймпад ни о чём не говорит. Добавить изображение заплатки.
--- Конец цитаты ---
Иконка у этого приложения менялась уже раз 5. Последний раз Nintendo выдвинуло требование изменить, тк геймпад был похож на геймпад SNES (с него и рисовался :)). Мне, честно сказать, надоело их менять, тк художник из меня никакой и это отнимает много времени. А если рисовать с заплаткой, то лучше тогда не геймпад, а картридж, так будет более подходить по смыслу. Но если кто-то нарисует красивую иконку в svg формате, то рассмотрю вариант замены, а так пусть будет пока эта.
Sharpnull:

--- Цитата: Mashin от 27 Февраль 2020, 15:08:12 ---А если рисовать с заплаткой, то лучше тогда не геймпад, а картридж, так будет более подходить по смыслу.
--- Конец цитаты ---
Иконка геймпада символизирует игру, а картридж - ром. Игра более широкое понятие, чем ром, хотя в роме может быть не только игра. В принципе, патчить можно не только ром файлы, но образы дисков и вообще любых файлов. Так как вы позиционируете приложение для применения к файлам игр, то геймпад с заплаткой вполне подходит.
Картридж с заплаткой тоже подходит, но будет ли он смотреться. Мой пример с заплаткой на кнопки органично вписывается (в Photoshop как раз заплатка с 4 точками). Для картриджа придётся выдумывать дополнительные детали, поэтому что спереди это просто прямоугольник с некоторыми углублениями.
У https://www.marcrobledo.com/RomPatcher.js/ просто чип (или как это называется), что суть рома или дампа.
Необязательно лепить заплатку, можно изобразить чип или картридж в котором один кусок заменяется другим (вырезан как от пирога), потому что патчи и есть замена части байтов другими.
Mashin:

--- Цитата: Sharpnull от 26 Февраль 2020, 14:23:31 ---xdelta3 для винды по умолчанию добавляет сжатие (secondary compression) lzma
--- Конец цитаты ---
Добавил сегодня поддержку lzma, появится в следующем обновлении приложения. Ещё раз спасибо за наводку.
Mashin:
Выпустил версию 0.17. Изменения:

- встроенный файловый менеджер заменён на стандартный Storage Access Framework. Теперь можно работать с файлами на SD-карте и облачном хостинге (например Google Drive), но применение патчей требует больше времени и свободного места на диске. Временно удалены просмотр контрольных сумм файла и настройка директорий.
- добавлена поддержка LZMA компрессии в патчах формата XDelta3
- удалена возможность добавления SMC заголовка к ROM'ам Snes (за эти годы мне ни разу не понадобилась эта функция)
- поддержка Android 10 и 11
- исправлено исчезновение уведомлений
- много мелких изменений в интерфейсе

Скачать APK можно с офф.страницы https://github.com/btimofeev/UniPatcher/releases/tag/v0.17 В google play и f-droid обновится попозже.
Durakover900000:
Mashin,  можете добавить в пожертвования яндекс кошелёк а то пей пал и биткоит не перевариваю
Mashin:

--- Цитата: Durakover900000 от 20 Сентябрь 2020, 08:14:09 ---Mashin,  можете добавить в пожертвования яндекс кошелёк а то пей пал и биткоит не перевариваю

--- Конец цитаты ---

В приложение пока добавить не могу, так как страничка донатов создается внешней библиотекой (отдельно для свободного apk и для версии в Google play), а эта библиотека Яндекс деньги не поддерживает. Но если что, то вот мой номер Яндекс кошелька 41001531787062.
Grinmen:
Хотелось чтобы можно было делать по мимо патяиваеия, P. S хотелось бы чтобы можно было корректировать пропатченые файлы если они не запускаются в эмуляторе
Mashin:

--- Цитата: Grinmen от 02 Октябрь 2020, 21:19:01 ---хотелось бы чтобы можно было корректировать пропатченые файлы если они не запускаются в эмуляторе
--- Конец цитаты ---

В каком смысле корректировать? Для SMD есть исправление контрольной суммы для тех эмуляторов которые сами этого не умеют. Для остального существуют Hex-редакторы, тк другого универсального средства пока не придумали.
Photon9:
Для пк есть утилиткпа правящая это дело, пару раз с витой мне помогала когда вместо игры был красный экран
Навигация
Главная страница сообщений
Следующая страница

Перейти к полной версии