форум группы Chief-Net форум группы Chief-Net
Перевод приставочных игр и не только!
drako site Перейти на сайт группы     Наш чат      Помощь      Поиск      Пользователи


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

> Без описания
Mefistotel Администратор
Отправлено: 28 Февраля, 2016 - 03:18:31
Post Id



Chief-Net


Покинул форум
Сообщений всего: 6672
Дата рег-ции: Окт. 2014  
Откуда: МАГАДАН





Mefistotel
Парни, не могу вспомнить, где-то выкладывали пакер/анапкер для алгоритма RLE, применяемого фирмой Конами в своих играх на NES. Во вложении расжатая тайловая карта и пожатая алгоритмом RLE. Может у кого есть в загашнике упаковщик. Особенности местного алгоритма, что кодирует как цепочки из повторяющихся байтов, так и цепочки из последовательных байтов.
P. S. По-моему нашёл что-то нужно на Zophar-e . Судя, по названию, похоже на какой-то развод. Улыбка Хотя...
Надо скачать питон, чтобы понять, работает ли это.

-----
"Перевод старых игр - отличная возможность понять, как устроены программы, подучить иностранный язык и поднять уровень владения родным. Ну и конечно, это просто возможность "общения" со своей любимой игрой детства." © Dimouse
 
 Top
alex_231 Супермодератор
Отправлено: 28 Февраля, 2016 - 03:18:45
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4592
Дата рег-ции: Окт. 2014  





alex_231
Там же описан принцип сжатия, сам бы и написал. Алгоритм-то действительно простой.

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
TrickZter Пользователь
Отправлено: 28 Февраля, 2016 - 03:19:05
Post Id





Покинул форум
Сообщений всего: 560
Дата рег-ции: Июнь 2015  





TrickZter
Я бы RLE не относил к экстриму Улыбка
Рассмотрим первые несколько байт пожатого ресурса:
00 20 4B 00 8B 61 62 90 91 92 93 94 95 B3 B4 73 06 00
Смотрим первый бит первого байта, если он равен нулю, то идёт копирование нескольких байтов, если единице значит идёт несколько непожатых байтов.
Первый байт у нас 00, а его старший бит, соответственно - 0. Значит дальше идёт несколько одинаковых байт, длина определяется 7-ю младшими битами, то есть длина у нас будет 0. Дальше идёт байт, который у нас множится 0 раз. то есть пара 00 20 распаковывается в ничто Голливудская улыбка
Смотрим следующий байт: 4B
У него старший бит равен нулю, значит будет множество одинаковых байтов, их количество берём из младших семи бит 01001011, то есть длина отрезка с одинаковыми байтами - 4B. За ним идёт байт из которого составляется этот отрезок - 00. То есть пара 4B 00 превращается в состоящий из 00 отрезок длиной в 4B (75 в десятичной системе).
Теперь опять идёт флаговый байт: 8B
Смотрим его старший бит - он равен 1, значит дальше идёт не пожатый отрезок. Его длину получаем из 7 младших битов 10001011, то есть длина получается 0B. Следующие 0B (11 в десятичной системе) байтов у нас не пожатые: 61 62 90 91 92 93 94 95 B3 B4 73
И снова идёт флаговый байт, на этот раз он 06.
Смотрим первый бит, он равен нулю, остальные 7 бит дают длину отрезка - 06. Следующий за ним байт говорит из какого байта состоит отрезок - 00. То есть пара 06 00 превращается в шесть нулей (00 00 00 00 00 00).
З.Ы.: Возможно первые два байта и не предназначены для распаковки. Они могут служить просто индикатором RLE сжатия. Так что, если перепакованный ресурс вдруг начнёт выглядеть в игре странно, можно будет попробовать подставить перед ним байты 00 20. Они в любом случае не навредят, так как распаковываются в ничто.
 
 Top
alex_231 Супермодератор
Отправлено: 28 Февраля, 2016 - 03:19:18
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4592
Дата рег-ции: Окт. 2014  





alex_231
В архиве неполные файлы, т. е. Packmap оборван, он должен заканчиваться флаговым байтом FF.

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
TrickZter Пользователь
Отправлено: 28 Февраля, 2016 - 03:19:34
Post Id





Покинул форум
Сообщений всего: 560
Дата рег-ции: Июнь 2015  





TrickZter
Цитата:
В архиве неполные файлы, т. е. Packmap оборван, он должен заканчиваться флаговым байтом FF.

Да, и это надо учитывать при запаковке. Если количество разных байт превышает 7E, то флаговый байт следует ограничить этим значением (FE), иначе игрушка посчитает его концом RLE.
 
 Top
Mefistotel Администратор
Отправлено: 28 Февраля, 2016 - 03:19:52
Post Id



Chief-Net


Покинул форум
Сообщений всего: 6672
Дата рег-ции: Окт. 2014  
Откуда: МАГАДАН





Mefistotel
Цитата:
Возможно первые два байта и не предназначены для распаковки.

Я считал, что это размер архива, h0200 - 512 байт.
Парни, я знаю, как это работает, но научиться програмировать у меня банально не было времени и не будет. Это факт. Недовольство, огорчение
Поэтому и ищу готовый компрессор. Сейчас с этой кладбищенской уткой разберусь только. Улыбка Скачал 3 питон, ругается зараза на синтаксис.
Хотя всё понятно изложено:
CODE:
graveduck.py -c [FILENAME] [OFFSET] [BINARY]
graveduck.py -d [FILENAME] [OFFSET] [BINARY]

-c compresses BINARY and sticks it into FILENAME at OFFSET. Don't blame me if it overwrites stuff because the new compressed data is larger -- that is your own fault. My compression is 1-to-1 identical to Konami's and compresses data to exactly match Konami's version.

-d opens FILENAME, goes to OFFSET, decompressed everything and saves it to BINARY.
Соответсвенно, в батнике прописал:

CODE:
graveduck.py -d DandyENG.nes hFD72 map
pause
Причем адрес пробовал вводить и через 0x, $ и h, и в десятичной системе. Пока бесполезно.
P.S. Обновил архив от начала до hFF, убрав ненужные байты в начале.

-----
"Перевод старых игр - отличная возможность понять, как устроены программы, подучить иностранный язык и поднять уровень владения родным. Ну и конечно, это просто возможность "общения" со своей любимой игрой детства." © Dimouse
 
 Top
Mefistotel Администратор
Отправлено: 28 Февраля, 2016 - 03:20:07
Post Id



Chief-Net


Покинул форум
Сообщений всего: 6672
Дата рег-ции: Окт. 2014  
Откуда: МАГАДАН





Mefistotel
Ну вот. Джинни был написан декомпрессор и компрессор. Програмка то нужная. RLE алгоритм пожатия тайловых карт в каждой второй игре на НЕС. У меня карта разжатая без палитры была, то есть без 64 байт.
Во вложении программы. В архиве также находятся исходные коды для Дельфи, bat файлы для примера и прочее необходимое для понимания процесса.
P. S. Кстати, игрушка Adventures of Bayou Billy, The (U) [!]. :P

-----
"Перевод старых игр - отличная возможность понять, как устроены программы, подучить иностранный язык и поднять уровень владения родным. Ну и конечно, это просто возможность "общения" со своей любимой игрой детства." © Dimouse
 
 Top
Mefistotel Администратор
Отправлено: 28 Февраля, 2016 - 03:20:21
Post Id



Chief-Net


Покинул форум
Сообщений всего: 6672
Дата рег-ции: Окт. 2014  
Откуда: МАГАДАН





Mefistotel
Гайв, иконки намутишь? Ещё бы гуи нормальный.

-----
"Перевод старых игр - отличная возможность понять, как устроены программы, подучить иностранный язык и поднять уровень владения родным. Ну и конечно, это просто возможность "общения" со своей любимой игрой детства." © Dimouse
 
 Top
Марат Супермодератор
Отправлено: 28 Февраля, 2016 - 03:20:36
Post Id



Chief-Net


Покинул форум
Сообщений всего: 1757
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





Марат
Ну, пусть заодно и GUI версию сделает. Раз исходники есть.
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:20:49
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver
Иконка

-----
Я не волшебник - я только учусь...
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:21:16
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver
Как я понимаю, иконку нужно одну, ведь гуи можно сделать общим для 2 программ? Если не извращаться - можно сделать посторонний exe, а всё остальное будет в папке. И этот exe сам будет переписывать инфу в батники, сам их запускать - т.е. будет видимость того, что это этот exe всё и делает. Я так всегда делаю, если есть консольное приложение (например не моё) и батник для его запуска. Пишу нужную мне "оболочку" - и делов! Минут на 20 всего делов ;о)))))))))

-----
Я не волшебник - я только учусь...
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:21:28
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver
Короче, я уже почти всё сделал...

-----
Я не волшебник - я только учусь...
 
 Top
Марат Супермодератор
Отправлено: 28 Февраля, 2016 - 03:21:41
Post Id



Chief-Net


Покинул форум
Сообщений всего: 1757
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





Марат
Может сразу оконную программу сделать? Без консолей. У тебя же исходники есть.
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:21:55
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver
Да просто мне так неохота в чужом коде копаться... Эх...
Вот сделал так, пока работает только если файлы лежат в той же директории, что и программа. Ещё и имена сохраняемым файлам надо давать на инглише (но это же и у Джинна так, ибо батники, и получается если файл даже исходный на кириллице - ничего работать не будет). Но это решаемо, дело 5 минут...
П.С. Я и свой-то код через пару дней уже не узнаю, а уж чужой ;о))) Тем более, если его автор, ну вы понимаете... ;о) Вы смотрели его код когда-нить? Это же ужас до чего непонятно всё ;о))))))))

-----
Я не волшебник - я только учусь...
 
 Top
Марат Супермодератор
Отправлено: 28 Февраля, 2016 - 03:23:03
Post Id



Chief-Net


Покинул форум
Сообщений всего: 1757
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





Марат
Смотрел конечно. Уже сколько его программ у меня лежат.
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:23:16
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver

Такс, проблему с кириллицей решил!

-----
Я не волшебник - я только учусь...
 
 Top
alex_231 Супермодератор
Отправлено: 28 Февраля, 2016 - 03:23:44
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4592
Дата рег-ции: Окт. 2014  





alex_231
Цитата:
Да просто мне так неохота в чужом коде копаться... Эх...
...
П.С. Я и свой-то код через пару дней уже не узнаю, а уж чужой ;о))) Тем более, если его автор, ну вы понимаете... ;о) Вы смотрели его код когда-нить? Это же ужас до чего непонятно всё ;о))))))))

А вот и неправда :P в Djinn Tile Mapper'е всё понятно написано было (до того, как я за него взялся Подмигивание ), и даже кодеки не стали большой проблемой.

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:24:08
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver
Такс, кое-как домой приплёлся, вот что успел доделать - сделал, вроде нормально, но не мешало бы потестить (особенно с разными папками в разных местах и с именами, в том числе с пробелами и кириллицей с латиницей)

По идее теперь косяков быть не должно... Можно брать файлы откуда угодно и с какими угодно именами (я надеюсь ;о)))). Если так покатит - то я уменьшу вес проги раз так в 10, если эта поделка того стоит и если уменьшение веса вообще нужно с исходным весом под 400 кБ. Перепишу на KOL.

KONAMI UP (unpacker/packer)

По-моему, даже хорошо, что остаются консольные версии и батники - как раз для любителей таких дел, коих порядочное количество. А для прочих - главный файл, а остальные файлы вынесены в отдельную папку и никому не мешают... Даже не видно что батники работают, я скрыл их запуск... И Джинни не будет нервничать и волноваться - это как с патчами получится. Его проги мы не трогали, код не изменяли и даже исходники не смотрели ;о))))))))))))))))))))

Только я вот про это не понял:

0xaddress - адрес начало сжатого блока в оригинальном файле. Если вы используете уже вынутый блок запакованных данных, то данный параметр можно опустить.

Какого вида число в батник надо вставлять? А то в примере адреса нет. В анпакере же такого адреса нет, да? Только в анпакере?

Т.е. вводить надо так: 0x5F к примеру? Шестнадцетиричный вид? Или как? Я сделал 16-ричный. Работает, кажется, но верный результат или нет - я точно не знаю... Надо протестировать на каком-нить роме, зная адрес начала пакета...

-----
Я не волшебник - я только учусь...
 
 Top
Mefistotel Администратор
Отправлено: 28 Февраля, 2016 - 03:24:26
Post Id



Chief-Net


Покинул форум
Сообщений всего: 6672
Дата рег-ции: Окт. 2014  
Откуда: МАГАДАН





Mefistotel
Володя, "0x" в 0xaddress говорит об том, что адреса нужно вводить в шестнадцатиричном исчислении. Особенность синтаксиса некоторых языков.
То есть 0x5F - это правильно.
Вечерком проверю работу программы.

-----
"Перевод старых игр - отличная возможность понять, как устроены программы, подучить иностранный язык и поднять уровень владения родным. Ну и конечно, это просто возможность "общения" со своей любимой игрой детства." © Dimouse
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:24:43
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver

Давай, лови баги. Надеюсь, она у тебя хотя бы 1 раз сработает как надо ;о)))

-----
Я не волшебник - я только учусь...
 
 Top
Mefistotel Администратор
Отправлено: 28 Февраля, 2016 - 03:24:55
Post Id



Chief-Net


Покинул форум
Сообщений всего: 6672
Дата рег-ции: Окт. 2014  
Откуда: МАГАДАН





Mefistotel
Работает твой гуй как надо. Удивительно.)

-----
"Перевод старых игр - отличная возможность понять, как устроены программы, подучить иностранный язык и поднять уровень владения родным. Ну и конечно, это просто возможность "общения" со своей любимой игрой детства." © Dimouse
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:25:12
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver
Самый для меня затык, обычно, в папках. Если разные вещи в разных папках находятся - это прямо беда. Пока все условия сделаешь - жесть. Я ещё прогу доделаю, поставлю ограничение на адрес, чтобы нельзя было ввести адрес больше, чем сам файл, и другие мелкие вещи надо доработать...
П.С. Это ещё что, видели бы вы что я понаписал для снятия дампов НЕС - у меня там автоматизированная прога, по звуковой волне контролирует запись с выводом графика в реальном времени. Жесткач полнейший ;о)))

-----
Я не волшебник - я только учусь...
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:25:33
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver
Залил на сайт последнюю версию программы: http://chief-net.ru/images/ostal noe/konami_up.rar

Изменения:
1. Программа при закрытии удаляет все временные файлы, которые появляются в папке dll в процессе работы.
2. Добавлено описание файла программы - щелчок правой кнопки мыши на файле программы - Свойства - вкладки Общие и Подробно.
3. Введена проверка адреса при распаковке, если он больше либо равен файлу - выводится предупреждение.
4. Пофиксил (надеюсь все!) грамматические ошибки.
5. Ввёл фильтр "все файлы" в диалоги открытия и сохранения файлов.
6. Сделал надпись внизу программы с копирайтами кликабельной, ссылка ведёт на наш сайт.

В самом архиве навёл порядок. В нём теперь 2 папки:

1. папка dll - в ней 2 джинновских ехе и 2 пустых (!) батника. Именно пустыми они и должны быть, чтобы не было в них следов предыдущего запуска. Точнее не пустыми, а с пятью строчками, заполненными пробелами.
2. папка source - содержит 2 папки:

Konami_packer и Konami_unpacker с исходными кодами Джинна и его пояснениями (с исправленными опечатками в батниках и описаниях!)

Дописал немного Readme.txt в архиве с программой.

Исправил на самом сайте страницу с программой и картинку залил нормальную.



Прошу ещё раз потестить, кому не лень. А то мало ли что...

-----
Я не волшебник - я только учусь...
 
 Top
Марат Супермодератор
Отправлено: 28 Февраля, 2016 - 03:25:47
Post Id



Chief-Net


Покинул форум
Сообщений всего: 1757
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





Марат
А почему кроме цифр ничего не вводится. Надо разрешить ввод букв ABCDEF и надо чтоб можно было обозначать в каком счислении вводится адрес. Либо знаком $, либо 0x.
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:25:59
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver

Можно вводить, только в английской раскладке и ЗАГЛАВНЫМИ. Значок 16-чный подрисую перед полем...

-----
Я не волшебник - я только учусь...
 
 Top
Марат Супермодератор
Отправлено: 28 Февраля, 2016 - 03:26:14
Post Id



Chief-Net


Покинул форум
Сообщений всего: 1757
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





Марат
Цитата:
... ЗАГЛАВНЫМИ...

А почему только?
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:26:26
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver
Лан, сделаю и мелкими тогда.

-----
Я не волшебник - я только учусь...
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:26:39
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver

Перезалил на сайт.
Изменения:
1. В поле ввода можно вводить как мелкие, так и строчные буквы A B C D E F.
2. Если ввести в окно всякий шлак с помощью мыши и копирования-вставки, то при распаковке весь мусор из поля уберётся и останутся только 16-ричные значения...
3. Написал над полем ввода адреса "hex address"
Т.е. если ввести строку (копипастом, мышкой)
ПривеFG 90cSr шёлк)-=3.4
То в поле останется
F90C34
После нажатия кнопки распаковать...

-----
Я не волшебник - я только учусь...
 
 Top
Mefistotel Администратор
Отправлено: 28 Февраля, 2016 - 03:26:52
Post Id



Chief-Net


Покинул форум
Сообщений всего: 6672
Дата рег-ции: Окт. 2014  
Откуда: МАГАДАН





Mefistotel

На повестке дня вопрос добавления в программу алгоритмов работы с пожатыми картами, в которых два старших бита указывают на режим распаковки.

-----
"Перевод старых игр - отличная возможность понять, как устроены программы, подучить иностранный язык и поднять уровень владения родным. Ну и конечно, это просто возможность "общения" со своей любимой игрой детства." © Dimouse
 
 Top
Guyver Администратор
Отправлено: 28 Февраля, 2016 - 03:27:12
Post Id



Chief-Net


Покинул форум
Сообщений всего: 9160
Дата рег-ции: Окт. 2014  
Откуда: Синегорье





Guyver
Ну... Исходники у вас есть, правьте в них. А Гуй можно прикрутить отдельно...

-----
Я не волшебник - я только учусь...
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Экстрим хакинг »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



> Похожие темы: RLE - KONAMI (NES)
Темы Форум Информация о теме Обновление
Kruptar
...
Программирование Ответов: 0
Автор темы: Mefistotel
24 Июля, 2015 - 10:23:06
Автор: Mefistotel
Genghis Khan II - Clan of the Gray Wolf [GEN]
Основной текст. Часть 2
Закрытые переводы Ответов: 0
Автор темы: Mefistotel
25 Февраля, 2016 - 02:19:27
Автор: Mefistotel
Banjo-Kazooie [N64]
АРХИВНАЯ ТЕМА 2010 года
Переводы Ответов: 0
Автор темы: Mefistotel
19 Сентября, 2016 - 14:26:43
Автор: Mefistotel
Genghis Khan II - Clan of the Gray Wolf [GEN]
Имена и названия. Часть 2
Закрытые переводы Ответов: 0
Автор темы: Mefistotel
25 Февраля, 2016 - 02:01:53
Автор: Mefistotel
Genghis Khan II - Clan of the Gray Wolf [GEN]
Имена и названия. Часть 1
Закрытые переводы Ответов: 3
Автор темы: Mefistotel
23 Февраля, 2016 - 09:25:52
Автор: Guyver
 

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