Вот, скрин того места, где находится запакованный текст Dragon Warrior 2, по крайней мере первый текст, который мы можем увидеть (There one day...).
Немного поэкспериментировав с кодами, смею предположить, что таблица MTE кодируется полуторами байтами, в смысле 12-ю битами, не 8 и не 16, а именно 12, причем код h760 (в выделенном фрагменте) - как-то связан с самим сообщением полностью, а последующие уже кодируют текст:
hEA3 - 'T'
hED7 - 'here'
(эти два я точно определил).
Но за неимением времени я не могу продолжить изучение (может только немного погодя), а пока оставляю данную находку в помощь Archisai, надеюсь ты сможешь во всем разобраться.
Dragon Warrior 2 [NES]
Сообщений 1 страница 20 из 26
Поделиться12006-03-16 08:34:02
Поделиться22006-03-16 09:19:54
Благодарю!!! Я не совсем тупой и кое-что понял, но мне понадобится много времени на эксперименты и изучение, так что на меня пока не отвлекайся и занимайся своими делами, ибо у тебя их и так по горло!!!
Поделиться32006-03-16 12:07:49
Упс, я несколько ошибся, кодировка там не 12-ти битная, а динамичная, то есть битовая ширина может меняться, выше указанные коды - неверны, возможные ширины (найденные - 5 бит и 10 бит)
Поделиться42006-03-29 09:40:54
Всё, вчера вечером я разобрался в алгоритме кодировки текста.
В роме используются две таблицы:
первая - 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 - конец сообщения, остальные я пока еще не опознал.
А также я набросал программу, которая вынимает текст по этому алгоритму (откуда еще я бы узнал об управляющих кодах), так что в ближайшем будущем (как только приведу её в божеский вид) появится возможность перевести эту сложную (по уровню хакинга) игру.
Поделиться52006-03-30 02:17:39
Alex_231, тебе за такую работу памятник при жизни надо ставить.
Поделиться62006-03-30 09:19:57
Да что там памятник...Аллею славы:)
Поделиться72006-03-30 09:21:32
Ну вы меня прям засмущали.
Арч, получил ЛС?
Отредактировано Alex_231 (2006-03-30 09:23:22)
Поделиться82006-03-31 09:28:17
ЛС??? Э...Скрипт получал...ЛС...Н-не получал...
Поделиться92006-03-31 09:29:06
ЛС - Личное сообщение
Поделиться102006-04-03 10:09:59
Как уже повелось: вчера вечером , написал алгоритм вставки текста обратно в ром, доработаю интерфейс и можно будет с ней работать.
Отредактировано Alex_231 (2006-04-03 10:10:11)
Поделиться112006-04-11 12:09:49
Archisai, ты сам хочешь закончить этот проект или просто займёшься переводом текста?
Если второе, то я могу предложить помощь в возвращении текста и перерисовке графики, хотя некоторые элементы лучше отдать художникам.
Позже: В игре 141 печатный символ (включая рамки и спецсимволы: месяц, сердечко и т.п.), так что разместить русский шрифт не составит особого труда.
Отредактировано Alex_231 (2006-04-11 12:19:25)
Поделиться122006-04-12 02:10:16
Мисьё... художник прибыл.
Если кому понадоблюсь я в мастерской
Поделиться132006-04-14 18:00:17
Alex, переводом я займусь сам, мне только понадобится художник (респект мастеру кисти GD) и помощь во вставке текста в РОМ!!!
Поделиться142006-04-17 11:19:09
Я про вставку и спрашивал, так как на перевод текста времени катастрофически не хватает (да как и на все остальное)
Поделиться152006-08-16 09:09:26
Archisai, ты там как по переводу движешься, или не очень?
Поделиться162006-10-17 12:06:08
Ну-ка, в кого патчем кинуть для тестирования?
Поделиться172006-10-20 03:24:56
Что?
Желающих нету?
Странно... тогда сам займусь тестингом, надо же игру хоть раз пройти
Поделиться182006-10-20 10:11:50
У нас есть официальный бета-тестер...
Поделиться192006-10-21 02:16:33
Да, что-то он несколько скромничает...
А ты не хочешь приложить руку к переводу?
Поделиться202006-10-21 03:24:59
Тут и без меня справились с переводом, значит, справятся и с тестированием...