форум группы Chief-Net » » Экстрим хакинг » Castlevania: Legends (GB)

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

61. Ace Lightning - 03 Февраля, 2016 - 07:11:55 - перейти к сообщению
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...
62. Ace Lightning - 03 Февраля, 2016 - 07:12:44 - перейти к сообщению
Ace Lightning
Покопался в ассемблере:

Длина вычисляется правильно - берётся 5 младших бит второго байта и прибавляется 3
CODE:
and a,1F
add a, 03


Из трёх старших битов второго байта пары сжатия берётся только первые два
CODE:
and a, 03

И они становятся старшими битами адреса.

Но всё равно мало что понятно.. по поводу моего верхнего поста: в самой игре адрес указывает именно на байты 20 20 00 00... но откуда они там взялись мне не понятно Недовольство, огорчение

В интернете почитал про алгоритм LZSS, там объяснялось, что пара байт сжатия - это <смещение, длина>. Здесь же этот алгоритм извратили Улыбка
63. TrickZter - 03 Февраля, 2016 - 07:13:16 - перейти к сообщению
TrickZter
Цитата:
в самой игре адрес указывает именно на байты 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 байта нулей в буфер не входят...
Чтож, тогда придётся ещё и буфер задавать перед распаковкой, посмотрим, что из этого получится..
65. Ace Lightning - 03 Февраля, 2016 - 07:15:09 - перейти к сообщению
Я это сделал!!! Наконец-то я написал распаковщик!! Ура!
Сегодня, когда сравнил дамп памяти эмулятора и мою распакованную последовательность, увидел заветное сообщение, которое я ждал так давно:
Теперь нужно найти всю графику, перерисовать и начать писать запаковщик. Так что перевод будет!!!!! yahoo Ура! Ура!
66. Guyver - 03 Февраля, 2016 - 07:15:30 - перейти к сообщению
Guyver
Молоток!
67. JurasskPark - 03 Февраля, 2016 - 07:15:49 - перейти к сообщению
JurasskPark

Кувалда!
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)
72. Mefistotel - 03 Февраля, 2016 - 07:36:41 - перейти к сообщению
И потом Ace Lightning пропал.
Но я связался с ним по почте. Если найдет на старом компе наработки, то выложит. Возможно, доделаем его перевод.

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