форум группы Chief-Net » » Экстрим хакинг » RLE - KONAMI (NES)

Страниц (2): « 1 [2]
 

31. Марат - 28 Февраля, 2016 - 03:27:24 - перейти к сообщению
Марат
Так я его уже написал.
Только ещё не выкладывал.
32. Mefistotel - 28 Февраля, 2016 - 03:28:25 - перейти к сообщению
Mefistotel
Марат, у нас gui другой к программе был, более развернутый.
Володя, исходники нужны, чтобы под твой gui сделать?
33. Guyver - 28 Февраля, 2016 - 03:28:41 - перейти к сообщению
Guyver
Если я найду их, то скину...
34. Mefistotel - 28 Февраля, 2016 - 03:28:58 - перейти к сообщению
Mefistotel
Цитата:
Если я найду их, то скину...

Володя, я говорю, тебе же исходники нужны, чтобы под новый gui сделать программу?
Или достаточно того, что Марат выложил?
35. Guyver - 28 Февраля, 2016 - 03:29:09 - перейти к сообщению
Guyver
Если всё можно как раньше в батниках прописать, то исходники не нужны. Выложите мне ещё файлы для проверки, с описанием что и как делать...
36. Mefistotel - 28 Февраля, 2016 - 03:29:37 - перейти к сообщению
Программу можно скачать на нашем сайте.
Konami RLE [Utilities]
37. ZetpeR - 12 Ноября, 2020 - 21:19:03 - перейти к сообщению
В программе есть ошибка она неправильно сжимает некоторые данные, заместо правильных байт в распакованном файле стоят другие вот пример https://ibb.co/zWcQ7vz

Ещё архив который лежит на сайте содержит только исходники сжатия а исходников распаковки нет.

Ещё картинка которая висит на http://chief-net.ru/index.php?op...78&Itemid=73 от другой версии программы.

Вот пример файлов.
38. Griever - 13 Ноября, 2020 - 21:09:19 - перейти к сообщению
ZetpeR пишет:
В программе есть ошибка она неправильно сжимает некоторые данные, заместо правильных байт в распакованном файле стоят другие.

Формат сжатого файла не совсем Konami RLE. Из какой игры ты его взял?
39. ZetpeR - 13 Ноября, 2020 - 21:36:29 - перейти к сообщению
Griever пишет:
ZetpeR пишет:
В программе есть ошибка она неправильно сжимает некоторые данные, заместо правильных байт в распакованном файле стоят другие.

Формат сжатого файла не совсем Konami RLE. Из какой игры ты его взял?


Сжатый файл который лежит в примере сделан вашей программой http://chief-net.ru/index.php?op...78&Itemid=73
с сжал свой файл а при распаковки получил не то что сжимал изначально.
40. Mefistotel - 14 Ноября, 2020 - 03:17:29 - перейти к сообщению
Марат обещал полные исходники поискать и выложить. И в итоге так и пропал.
Она не со всеми играми работает. К примеру, в первой кастле немного по другому реализовано сжатие, и программа не справляется.
41. ZetpeR - 14 Ноября, 2020 - 11:42:32 - перейти к сообщению
Автор: Guyver
Дата: 14-11-2020 02:26:30
Текст сообщения:

Ну, а в игре как это отображается? Просто иногда алгоритм не совпадает, он может быть даже лучше оригинального по качеству сжатия. В игре при этом всё работает. Т.е. 100% совпадения с оригинальным файлом может и не быть при распаковке/упаковке обратно без изменений.
########################
Мой ответ

В игре отображается неправильно, использую игру Contra Force (U) [!].

Проблема в сжатие, если попадается подряд 126(0x7E)байт которые нельзя сжать он кладёт в сжатый файл 125 оригинальных байт а заместо последнего оригинального байта (Который под номером 126) кладёт байт 0x00 что неправильно. Игра и программа такой файл распакуют, но распакованный файл не будет 100% совпадать с оригиналом и за замены байт которые произвела программа и за внутренний ошибки кода.

Вот пример оригинальная картинка в Djinn Mapper 2.0.5 потом я её сжал и вставляем в ром и за пустил, видно что пропали две буквы заместо них стоят пустые тайлы которые обозначаются байтом 00.
Спойлер (Отобразить)

Дополнительно к картинки
Слева вертикальная строчка букв "A" не отображается это скорей всего особенность игры на неё можно не обращать внимания, в дампе видео памяти эти буквы присутствуют.

Спойлер (Отобразить)
42. Griever - 15 Ноября, 2020 - 00:22:58 - перейти к сообщению
ZetpeR прав. Тот, кто писал упаковщик не тестировал граничные случаи максимальной длины неупакованного блока. Потому что таких случаев в его файлах от игр не встречалось.
Исходник упаковщика есть, при сбросе блока уникальных байт забыли заполнить последний байт блока, вместо него остаётся и сбрасывается в упакованный поток ноль.

Graveduck, надо сказать, тоже сильно набажил: пишет двоичные данные в файл как в текстовый (чем в некоторых случаях портит распакованный поток) и тоже забыл последний байт в случае максимальной длины. Всё это висит 7 лет на github и romhacking.net без замечаний и исправлений.

Ну и ваша система с созданием из-под гуя батников для консольных приложений Джинни, конечно, те ещё костыли Улыбка
Я бы на вашем месте просто сделал простое Tkinter'овское приложение на питоне на основе graveduck и получил полный опенсорс на Windows и Linux.
43. Марат - 15 Ноября, 2020 - 21:39:54 - перейти к сообщению
ZetpeR пишет:
Проблема в сжатие, если попадается подряд 126(0x7E)байт которые нельзя сжать он кладёт в сжатый файл 125 оригинальных байт а заместо последнего оригинального байта (Который под номером 126) кладёт байт 0x00 что неправильно. Игра и программа такой файл распакуют, но распакованный файл не будет 100% совпадать с оригиналом и за замены байт которые произвела программа и за внутренний ошибки кода.

Что за файл такой? Это явно не графика. Если сжатые данные будут больше исходных, то это вызовет ошибку в программе. Для карты тайлов используется другой алгоритм.
44. Марат - 15 Ноября, 2020 - 21:44:19 - перейти к сообщению
ZetpeR пишет:
Ещё картинка которая висит на http://chief-net.ru/index.php?op...78&Itemid=73 от другой версии программы.

Кто-то что-то напутал. В файлах на сайте нет почему-то моей программы.
Вот эта утилита
45. Марат - 15 Ноября, 2020 - 22:40:12 - перейти к сообщению
ZetpeR пишет:
В игре отображается неправильно, использую игру Contra Force (U) [!].


Ты напиши что ты хочешь извлечь/вставить, а то, может, ты что-то неправильно делаешь.
46. ZetpeR - 15 Ноября, 2020 - 23:47:56 - перейти к сообщению

Марат пишет:

Что за файл такой? Это явно не графика. Если сжатые данные будут больше исходных, то это вызовет ошибку в программе. Для карты тайлов используется другой алгоритм.


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

В игре я хотел заместо всего титульника добавить свой текст в итоге текст оказался не сжимаемым и при выводе на экран пропали пару букв, я начал анализировать что могло пойти не так и выявил закономерность. Я выше написал под спойлером при каких обстоятельствах возникает ошибка в программе, при которых если программа видит несжимаемые 126 байт она записывает последний байт из них в файл неправильно.
########################################################


Проверил твою программу под спойлером она правильно жмёт файл спасибо. Ха-ха Осталось за малым добавить её на сайт.

Хотя кажется там другой алгоритм надо ещё потестить...
47. ZetpeR - 16 Ноября, 2020 - 00:59:15 - перейти к сообщению
Марат пишет:
ZetpeR пишет:
Ещё картинка которая висит на http://chief-net.ru/index.php?op...78&Itemid=73 от другой версии программы.

Кто-то что-то напутал. В файлах на сайте нет почему-то моей программы.
Вот эта утилита


Марат я проверил запаковщик который ты дал, он не подходит к игре Contra Force. Я сжал файл твоей программой и посмотрел его, похоже там алгоритм RLE + прогрессией скорей всего ты дал распаковщик запаковщик для игры Tiny Toon Adventures 2 - Trouble in Wackyland.

А версия которая лежит на сайте использует только RLE.
Марат пожалуйста посмотри исходный код той программы которая лежит сейчас на сайте вот ссылка на исходник со старого форума http://chief-net.ru/images/files/konami_up.rar

Там надо поправить код, который отвечает за несжатые байты, когда встречается несжимаемые 126 байт записать их все в файл правильно а сейчас он записывает последний байт как 00.


Под спойлером пример строчки из байт которая должна правильно распаковываться.
Спойлер (Отобразить)


Если это не получится тогда можно будет на основе твоей версии программы сделать просто сжатие RLE без прогресси.
48. Марат - 16 Ноября, 2020 - 11:51:32 - перейти к сообщению
ZetpeR пишет:
Если это не получится тогда можно будет на основе твоей версии программы сделать просто сжатие RLE без прогресси.


Ну там же два вида сжатия. Если тебе не подходит сжатие для карты тайлов, используй сжатие для данных. По коду я вижу, что в Konami UP используется сжатие для данных. В моей программе нижняя группа кнопок Work with Data.
49. Марат - 16 Ноября, 2020 - 12:49:57 - перейти к сообщению
Да, там немного по-другому.
Вот исправил конами ап.

А нет, надо ещё пошаманить. Не так проверил.
50. Марат - 16 Ноября, 2020 - 14:08:12 - перейти к сообщению
Вот, вроде везде поправил.
51. ZetpeR - 16 Ноября, 2020 - 20:44:41 - перейти к сообщению
Марат пишет:
Вот, вроде везде поправил.


Спасибо Марат за исправления бага в программе, я проверил программу теперь она работает как надо, в игре всё нормально отображается.

Теперь осталось за малым обновить эту версию на сайте и подправить там картинку на правильную.
Только перед заливом на сайт надо добавить туда исходник для распаковки сжатия можно взять отсюда http://chief-net.ru/images/files/konami_up.rar из папки files\source\Konami_unpacker\konaunc.dpr только его перед этим надо переименовать чтобы он не затёр исходник запаковщика а то в версии архива с сайта, нет исходника кода распаковки.

Ещё надо на сайте опубликовать твою версию программы для распаковки запаковки сжатия Tiny Toon Adventures 2 - Trouble in Wackyland написать что есть два вида сжатия RLE + прогрессия и просто RLE.
52. Mefistotel - 17 Ноября, 2020 - 13:10:42 - перейти к сообщению
Сюда перенёс и обновил версию программы на сайте.
Konami UP
53. Марат - 17 Ноября, 2020 - 23:34:40 - перейти к сообщению
ZetpeR пишет:
Марат я проверил запаковщик который ты дал, он не подходит к игре Contra Force. Я сжал файл твоей программой и посмотрел его, похоже там алгоритм RLE + прогрессией скорей всего ты дал распаковщик запаковщик для игры Tiny Toon Adventures 2 - Trouble in Wackyland.


А ты не пробовал второй вариант сжатия? Кнопки в группе Work with Data.
По идее он должен был подойти.
54. ZetpeR - 18 Ноября, 2020 - 00:35:10 - перейти к сообщению
Марат пишет:

А ты не пробовал второй вариант сжатия? Кнопки в группе Work with Data.
По идее он должен был подойти.


Пробовал, но у меня в сжатом файле с начало идёт много сжимаемых байт 00 при использование втором сжатие Work with Data я получаю вначале сжатого файла 4 байта которые выглядят так 7F 00 0B 00 алгоритм в игре думает что 7F это конец распаковки и дальше нечего в видео память не распаковывает, в игре получаю чёрный экран. В версии программы с сайта первые 4 байта получается 7E 00 0C 00 так всё распаковывает.
55. Марат - 21 Ноября, 2020 - 20:04:25 - перейти к сообщению


Переделал свой кодек. Добавил алгоритм сжатия из игры Castlevania. Добавил обработку в декомпрессор по ключу $7F. В игре ключ $7F означает считать новый адрес PPU из сжатого потока и продолжить распаковку по новому адресу PPU. По факту это используется для карт тайлов, когда одна карта распаковывается в первую страницу PPU, а вторая во вторую или третью. При распаковке, если такой код попадется, то программа выдаст сообщение, где спросит распаковывать следующую карту тайлов или нет.

В первой кастлевании алгоритм примитивный и сжатый блок не должен превышать 256 байт.
В итоге сжатая карта тайлов состоит из 4 блоков. На каждый блок есть поинтеры. Для распаковки поинтеры на блоки не нужны, достаточно указать адрес начала первого блока.
А вот после вставки запакованного блока, нужно будет руками править поинтеры на блоки.
Ориентировочно блоки будут размером 256 байт, возможно чуть меньше. В конце блока всегда есть байт $D9 - ключ конца распаковки блока.


56. Mefistotel - 22 Ноября, 2020 - 15:13:02 - перейти к сообщению
Марат, скинь прогу с исходниками. Добавлю на сайт.
57. Марат - 22 Ноября, 2020 - 16:02:21 - перейти к сообщению
А я думал прикрепил файл с кодеком.

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®