Solution situation 2:
Примечание:
все коды и адреса указаны в хексе
При использовании (поедании, другие варианты пока не рассматривал, но, думаю они работают по подобнойсистеме**) программа считывает первую букву названия и по ней определяет, что это за предмет.
Для перевода этой системы нужно выбрать, какие буквы будут ответственны за принадлежность предметов, но тут тоже не всё просто.
На каждый предмет отведено по 8 знакомест в 2 строки (по 4 символа) одна над другой.
Предметы строго фиксированы в сетке меню и каждой ячейке соответствует свой адрес:
Меню Адресация
----ЕДА----- 00 01 02 03 04 05 06 07 08 09 0A 0B
| | 0C 0D 0E 0F 10 11 12 13 14 15 16 17
| ХЛЕБ ХЛЕБ| 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23
| | 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
| ХЛЕБ>ХЛЕБ| 30 31 32 33 34 35 36 37 38 39 3A 3B
| | 3C 3D 3E 3F 40 41 42 43 44 45 46 47
| ХЛЕБ ХЛЕБ| 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53
| | 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
| ХЛЕБ ХЛЕБ| 60 61 62 63 64 65 66 67 68 69 6A 6B
| | 6C 6D 6E 6F 70 71 72 73 74 75 76 77
| ХЛЕБ ХЛЕБ| 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83
------------ 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
При выборе какого-либо предмета программа считывает определенный байт (ключ), сравнивает его с эталонами и в зависимости от результата выполняет действия назначенные на соответствующий эталон.
Положение ключей строго определено в сетке меню (их положение, конечно, можно изменить, только делать это нужно осторожно, но об этом позже), в оригинале это каждая первая буква второй строки для каждого предмета, то есть для левого верхнего "хлеба" - это адрес 1A - буква "Х", код-ключ = 21 (из таблицы)
Так, если выбрать предмет, отмеченный на схеме (2-я строка, 2-й столбец), то адрес его ключа будет = 37 (код-ключ тот-же = 21)
Список адресов ключей находится в роме по адресу 0x1A778 - 1A 32 4A 62 7A 1F 37 4F 67 7F
в списке сначала идут адреса ключей для первого столбца, а затем для второго.
Перевод Код-эталон в оригинале Адрес эталона в роме
ХЛЕБ 15 1A712
МЯСО 24 1A720
УДОН 30 1A72E
УТКА 17 1A73C
РИС 50 для этого нет предмета нет эталона, но он определяется исключением остальных вариантов***
ОЧКИ 46
КЛЮЧ 11
КАРТА 23
КОМПАС 74
БОТЫ 3B
ХЛОПУШКА 15 (** вот почему, раз повторяется код-ключ, то должно быть два разных действия на один эталон)
МОЛОТ 5B
ЯБЛОКО 28
***именно поэтому появлялся "неубывающий" РИС, так как его количество, изначально FF - отсутствие предмета, после ошибочного поедания уменьшилось на 1 и стало значимым числом FE, и после каждого поедания уменьшалось на 1 (что в конце концов обнаружилось бы, когда оно подошло бы к 0)
из таблицы видно, что для еды все эталоны различны (мое предположение, что еда - это первые 5 предметов в списке)
отсюда вывод, что для перевода надо выбрать такую позицию, в которой бы символы для всех предметов были бы уникальны.
например, вторая буква каждого слова: для этого нужно адреса ключей в меню увеличить на 1 (так как идентификация предметов идет не по первому символу, а по следующему за ним) и заменить коды эталонов на соответствующие переводу (Л Я Д Т - соответственно).
Solution situation 1:
Тут система подобная, используется такая же адресация:
Меню Адресация
------------ 00 01 02 03 04 05 06 07 08 09 0A 0B
| | 0C 0D 0E 0F 10 11 12 13 14 15 16 17
|>ОЧКИ | 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23
| | 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
| | 30 31 32 33 34 35 36 37 38 39 3A 3B
| | 3C 3D 3E 3F 40 41 42 43 44 45 46 47
| | 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53
| | 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
| | 60 61 62 63 64 65 66 67 68 69 6A 6B
| | 6C 6D 6E 6F 70 71 72 73 74 75 76 77
| | 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83
------------ 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
Так же работают ключи и эталоны, только они другие и находятся в других местах рома:
Список адресов ключей находится по адресу 0x15192 - 1A 32 4A 62 7A 1F 37 4F 67 7F
Перевод Код-эталон в оригинале Адрес эталона в роме
ХЛЕБ 15
МЯСО 24
УДОН 30
УТКА 17
РИС 50
ОЧКИ 46 141CF
КЛЮЧ 11 141D9
КАР-
ТА 23 141E3
КОМ-
ПАС 74 141ED
БОТЫ 3B 141F7
ХЛОП
УШКА 15 14201
МО-
ЛОТ 5B 1420B
ЯБ-
ЛОКО 28 14215 (в отличие от еды здесь все эталоны заданы явно)
вот только подобрать здесь подходящую позицию для ключа не так просто: у слов МО-ЛОТ и ЯБ-ЛОКО (писать ЯБЛ-ОКО - по-моему, не верно) в 1 и 2 позициях 2-й строки стоят одинаковые символы (первую строку использовать не вариант, так как она в нескольких вариантах пуста, как и 4-я позиция 2-й строки)
Предлагаю заменить либо МОЛОТ, либо ЯБЛОКО синонимом, например, КИЯНКА:
КИ-
ЯНКА
Так менять адреса ключей не придётся, а сменить только коды эталонов (0 К Т П Б У Я Л - соответственно).
Поправленный ром прилагаю, также в архиве описание в текстовом файле, там таблицы ровнее смотрятся.
Отредактировано alex_231 (2012-01-18 07:47:56)