Tigran, спасибо за информацию (насчёт MTE).
Legend of Zelda, The - Oracle of Seasons.gbc...
Попробовал поэкспериментировать с ромом.
На данный момент известно следующее:
1) Файл имеет размер 1 МБ (h00000000-h000FFFFF);
2) Заголовок.
Заголовок расположен в пределах h00000100-h0000014F адресного пространства файла (точно не уверен);
3) Шрифт.
Игровой шрифт расположен в середине файла (Game Boy Format).
В построении тайлов шрифта используются 3 цвета, которые отвечают за ветикальное расположение пикселей символов и цвет фона.
4) Текст.
Используется кодировка ASCII.
Игровой текст расположен в середине файла, после кода с игровым шрифтом, и разбит на 2 части:
MTE-словарь и текст со ссылками на MTE-словарь.
MTE-словарь.
Приблизительное расположение: h00073380-h00075020
MTE-словарь состоит из наиболее встречающихся слов (или их составных частей, а также с использованием знаков препинания и пробелов; в дальнейшем - просто "слово").
Примеры: "for", "If I ", " know", "orth".
Слова в MTE расположены в определённом порядке, каждое слово имеет своё порядковое значение (2 байта, вида hxxxx), которое увеличивается от слова к слову на единицу.
Первое слово имеет порядковое значение h0200 (вроде) (слова не могут иметь порядковые значения h0000-h01ff, т.к байты h00 и h01 используются в других целях).
Слова отделены друг от друга завершающим байтом h00 (end-байт).
Также используется байт h01 - конец строки.
Текст.
Приблизительное расположение: сразу же за MTE, h00075020-h00084E05
Текст состоит из отдельных монологов, диалогов.
Монологи/диалоги в свою очередь состоят из слов и ссылок на MTE-словарь, и отделены друг от друга end-байтом h00.
Разберём пример:
h0245 awak h0391 h02E9 ! Relax--. Jo h0599 h043E jovial h01 troupe h03E3 h01 per h05DE mers h02E2 a bit! h00
В словаре находим слова (по их порядковым значениям):
h0245 - "You're "
h0391 - "e! h01"
h02E9 - "Please"
h0599 - "in "
h043E - "our "
h03E3 - "оf "
h05DE - "for"
h02E2 - "for "
h01 - конец строки
h00 - завершающий байт
Получили следующее:
You're awake! Please! Relax--. Join our jovial troupe of performers for a bit!
и т.д.
5) Поинтеры.
Размер поинтеров - 2 или 3 байта (вида hxxxx, hxxxxxx)
Где в файле раположены поинтеры - пока неизвестно. Предполагается, что поинтеры MTE остносительны (связаны с началом словаря), а текста - абсолютны.
6) В конце рома имеется пространство, заполненное байтами h3F, в пределах h000FF14B-h000FFFFF (3,67 КБ).
Ваши комментарии...
Отредактировано ReCom (2008-07-02 20:19:39)