Chief-NET

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Chief-NET » Базовый хакинг » Dragon Warrior 2 [NES]


Dragon Warrior 2 [NES]

Сообщений 1 страница 20 из 26

1

Вот, скрин того места, где находится запакованный текст Dragon Warrior 2, по крайней мере первый текст, который мы можем увидеть (There one day...).
Немного поэкспериментировав с кодами, смею предположить, что таблица MTE кодируется полуторами байтами, в смысле 12-ю битами, не 8 и не 16, а именно 12, причем код h760 (в выделенном фрагменте) - как-то связан с самим сообщением полностью, а последующие уже кодируют текст:
hEA3 - 'T'
hED7 - 'here'
(эти два я точно определил).
Но за неимением времени я не могу продолжить изучение (может только немного погодя), а пока оставляю данную находку в помощь Archisai, надеюсь ты сможешь во всем разобраться.

2

Благодарю!!! Я не совсем тупой и кое-что понял, но мне понадобится много времени на эксперименты и изучение, так что на меня пока не отвлекайся и занимайся своими делами, ибо у тебя их и так по горло!!!

3

Упс, я несколько ошибся, кодировка там не 12-ти битная, а динамичная, то есть битовая ширина может меняться, выше указанные коды - неверны, возможные ширины (найденные - 5 бит и 10 бит)

4

Всё, вчера вечером я разобрался в алгоритме кодировки текста.
В роме используются две таблицы:
первая - 32 элемента, кодируются 5-ю битами,
вторая - 128 элементов, кодируются 10-ю битам.
Причем ширина элементов задается таблицей ширины по адресу &hB44B (4 бита на элемент, максимальная длина - 15 символов), в таблице ширины 80 байт, а сразу за ними идут таблицы элементов (сначала первая, а потом вторая).
Так же есть таблица поинтеров на начала блоков текста, адрес &hB762 (только я не знаю сколько там поинтеров), первый элемент - 0080 -> 8000, указывает на адрес в роме - &h14010 (адрес первого блока текста).
Алгоритм распаковки(запаковки):
Байты переводятся в биты и выстраиваются в двоичную цепочку, затем смотрим на ПЕРВЫЕ ТРИ бита, если они ВСЕ равны 1, то элемент кодируется 10-ю битами, которые ВКЛЮЧАЮТ ТРИ вышеописанных, поэтому следующие СЕМЬ бит переводятся в десятичную систему (получается число от 0 до 127), полученное число есть номер элемента во второй таблице элементов, этот элемент записывается в память и выводится на экран, затем от начала цепочки отбрасывается 10 бит (уже раскодированные) и процесс повторяется сначала. Если же ПЕРВЫЕ ТРИ бита (или хотя бы один из них) не равны 1, то элемент кодируется 5-ю битами, которые также ВКЛЮЧАЮТ ТРИ вышеописанных, эти ПЯТЬ бит переводятся в десятичную систему (число от 0 до 31), полученное число есть номер элемента в первой таблице элементов, этот элемент записывается в память и выводится на экран, затем от начала цепочки отбрасывается 5 бит (уже раскодированные) и процесс повторяется сначала.
Хочу заметить, что коды &b11100 (28), &b11101 (29), &b1110 (30) и &b11111 (31) удовлетворяют условию 10-ти битового кодирования, поэтому в тексте они не используются, а в таблице элементов на их местах стоят непечатаемые символы &hC0, &hC1, &hC2 и &hC3.
Управляющие коды:
&hF8 - имя героя,
&hFC - конец сообщения, остальные я пока еще не опознал.

А также я набросал программу, которая вынимает текст по этому алгоритму (откуда еще я бы узнал об управляющих кодах), так что в ближайшем будущем (как только приведу её в божеский вид) появится возможность перевести эту сложную (по уровню хакинга) игру.

5

Alex_231, тебе за такую работу памятник при жизни надо ставить.

6

Да что там памятник...Аллею славы:)

7

Ну вы меня прям засмущали.
Арч, получил ЛС?

Отредактировано Alex_231 (2006-03-30 09:23:22)

8

ЛС??? Э...Скрипт получал...ЛС...Н-не получал...

9

ЛС - Личное сообщение :-)

10

Как уже повелось: вчера вечером :-), написал алгоритм вставки текста обратно в ром, доработаю интерфейс и можно будет с ней работать.

Отредактировано Alex_231 (2006-04-03 10:10:11)

11

Archisai, ты сам хочешь закончить этот проект или просто займёшься переводом текста?
Если второе, то я могу предложить помощь в возвращении текста и перерисовке графики, хотя некоторые элементы лучше отдать художникам.

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

Отредактировано Alex_231 (2006-04-11 12:19:25)

12

:D Мисьё... художник прибыл.
Если кому понадоблюсь я в мастерской  :)

13

Alex, переводом я займусь сам, мне только понадобится художник (респект мастеру кисти GD) и помощь во вставке текста в РОМ!!!

14

Я про вставку и спрашивал, так как на перевод текста времени катастрофически не хватает (да как и на все остальное)

15

Archisai, ты там как по переводу движешься, или не очень?

16

Ну-ка, в кого патчем кинуть для тестирования?

17

Что?
Желающих нету?
Странно... тогда сам займусь тестингом, надо же игру хоть раз пройти :)

18

У нас есть официальный бета-тестер...

19

Да, что-то он несколько скромничает...
А ты не хочешь приложить руку к переводу?

20

Тут и без меня справились с переводом, значит, справятся и с тестированием...


Вы здесь » Chief-NET » Базовый хакинг » Dragon Warrior 2 [NES]