Ace Lightning
Вот обнаружил интересную вещь:
Если посмотреть на выделенную последовательность
http://i23.fastpic.ru/big/2011/0...6ddaecf32137.jpg
И сравнить с последовательностью в роме
F7 AA B1 B1 DC 61 08
F7 - флаговый байт.
DC 61 - байты сжатия.
Да вот только, если посмотреть на картинке как распаковались эти байты (20 20 00 00)... такой последовательности в распакованных данных нет. Поэтому не понятно откуда они взялись. И если поиграть с этими тремя старшими битами второго байта, то в роме появляются откуда-то байты 20...
61. Ace Lightning - 03 Февраля, 2016 - 07:11:55 - перейти к сообщению
62. Ace Lightning - 03 Февраля, 2016 - 07:12:44 - перейти к сообщению
Ace Lightning
Покопался в ассемблере:
Длина вычисляется правильно - берётся 5 младших бит второго байта и прибавляется 3
Из трёх старших битов второго байта пары сжатия берётся только первые два
И они становятся старшими битами адреса.
Но всё равно мало что понятно.. по поводу моего верхнего поста: в самой игре адрес указывает именно на байты 20 20 00 00... но откуда они там взялись мне не понятно
В интернете почитал про алгоритм LZSS, там объяснялось, что пара байт сжатия - это <смещение, длина>. Здесь же этот алгоритм извратили
Покопался в ассемблере:
Длина вычисляется правильно - берётся 5 младших бит второго байта и прибавляется 3
CODE:
and a,1F
add a, 03
add a, 03
Из трёх старших битов второго байта пары сжатия берётся только первые два
CODE:
and a, 03
И они становятся старшими битами адреса.
Но всё равно мало что понятно.. по поводу моего верхнего поста: в самой игре адрес указывает именно на байты 20 20 00 00... но откуда они там взялись мне не понятно
В интернете почитал про алгоритм LZSS, там объяснялось, что пара байт сжатия - это <смещение, длина>. Здесь же этот алгоритм извратили
63. TrickZter - 03 Февраля, 2016 - 07:13:16 - перейти к сообщению
TrickZter
Картинка распаковывается в некий буфер в оперативке и если указатель направлен за пределы картинки, то будут копироваться какие-нибудь левые данные, которые сейчас хранятся по этому адресу. Я пробовал менять указатель на один, два, десять байтов раньше начала картинки и тоже появлялись 20-ки. Может быть они специально туда были заранее загружены, а может просто для всех адресов не попадающих в картинку берутся 20-ки.
Цитата:
в самой игре адрес указывает именно на байты 20 20 00 00... но откуда они там взялись мне не понятно
Картинка распаковывается в некий буфер в оперативке и если указатель направлен за пределы картинки, то будут копироваться какие-нибудь левые данные, которые сейчас хранятся по этому адресу. Я пробовал менять указатель на один, два, десять байтов раньше начала картинки и тоже появлялись 20-ки. Может быть они специально туда были заранее загружены, а может просто для всех адресов не попадающих в картинку берутся 20-ки.
64. Ace Lightning - 03 Февраля, 2016 - 07:13:37 - перейти к сообщению
Ace Lightning
Нет, определённо не для всех берутся биты 20. Т.к. в случае выше распаковалось 20 20 00 00. На сколько я понял, буфер здесь состоит из 255 байт 22 и 2 байт 00. Вобще, там 34 байта 00 (да и байт 22 встречается там 992 раза )) ), но тогда все нули запаковывались бы из этого буфера, а они берутся из моей распакованной последовательности, поэтому вероятно 32 байта нулей в буфер не входят...
Чтож, тогда придётся ещё и буфер задавать перед распаковкой, посмотрим, что из этого получится..
Нет, определённо не для всех берутся биты 20. Т.к. в случае выше распаковалось 20 20 00 00. На сколько я понял, буфер здесь состоит из 255 байт 22 и 2 байт 00. Вобще, там 34 байта 00 (да и байт 22 встречается там 992 раза )) ), но тогда все нули запаковывались бы из этого буфера, а они берутся из моей распакованной последовательности, поэтому вероятно 32 байта нулей в буфер не входят...
Чтож, тогда придётся ещё и буфер задавать перед распаковкой, посмотрим, что из этого получится..
65. Ace Lightning - 03 Февраля, 2016 - 07:15:09 - перейти к сообщению
Я это сделал!!! Наконец-то я написал распаковщик!!
Сегодня, когда сравнил дамп памяти эмулятора и мою распакованную последовательность, увидел заветное сообщение, которое я ждал так давно:
Теперь нужно найти всю графику, перерисовать и начать писать запаковщик. Так что перевод будет!!!!! yahoo
Сегодня, когда сравнил дамп памяти эмулятора и мою распакованную последовательность, увидел заветное сообщение, которое я ждал так давно:
Теперь нужно найти всю графику, перерисовать и начать писать запаковщик. Так что перевод будет!!!!! yahoo
66. Guyver - 03 Февраля, 2016 - 07:15:30 - перейти к сообщению
Guyver
Молоток!
Молоток!
67. JurasskPark - 03 Февраля, 2016 - 07:15:49 - перейти к сообщению
JurasskPark
Кувалда!
P.S. На компе учетка понравилась.
Кувалда!
P.S. На компе учетка понравилась.
68. TrickZter - 03 Февраля, 2016 - 07:16:07 - перейти к сообщению
TrickZter
Киянка!
Запаковщик чуток сложнее писать, чем распаковщик: ведь надо не просто запаковать, а самым оптимальным способом. Хотя, если ресурс не влезет - его всегда можно перекинуть в конец рома.
Киянка!
Цитата:
и начать писать запаковщик.
Запаковщик чуток сложнее писать, чем распаковщик: ведь надо не просто запаковать, а самым оптимальным способом. Хотя, если ресурс не влезет - его всегда можно перекинуть в конец рома.
69. Guyver - 03 Февраля, 2016 - 07:16:30 - перейти к сообщению
Guyver
А у меня почти всегда "переведённое" меньше оригинала, так что оптимизировать алгоритм не требуется...
А у меня почти всегда "переведённое" меньше оригинала, так что оптимизировать алгоритм не требуется...
70. Ace Lightning - 03 Февраля, 2016 - 07:16:56 - перейти к сообщению
Ace Lightning
Везёт Тебе...
Цитата:
А у меня почти всегда "переведённое" меньше оригинала, так что оптимизировать алгоритм не требуется...
Везёт Тебе...
71. lupus - 03 Февраля, 2016 - 07:17:18 - перейти к сообщению
lupus
Краткость - сестра таланта B)
Цитата:
А у меня почти всегда "переведённое" меньше оригинала, так что оптимизировать алгоритм не требуется...
Краткость - сестра таланта B)
72. Mefistotel - 03 Февраля, 2016 - 07:36:41 - перейти к сообщению
И потом Ace Lightning пропал.
Но я связался с ним по почте. Если найдет на старом компе наработки, то выложит. Возможно, доделаем его перевод.
Но я связался с ним по почте. Если найдет на старом компе наработки, то выложит. Возможно, доделаем его перевод.