[SEGA Saturn] Дебаг меню для Riglordsaga 2, Shiroki Majo: Mouhitotsu no Eiyuu Densetsu и Magic Knight Rayearth

В этой статье описываются хаки отладочного (дебаг) меню для трёх RPG на SEGA Saturn:

Riglordsaga 2
Shiroki Majo: Mouhitotsu no Eiyuu Densetsu
Magic Knight Rayearth

Меню позволяют изменять параметры игры и телепортироваться в произвольные области, так что вы можете попасть в разные части игры для интереса.

Если вы заинтересованы в переводе Riglordsaga 2 или Shiroki Majo, эти меню, несомненно, будут полезными помощниками. Начнём!

Riglordsaga 2

[SEGA Saturn] Дебаг меню для Riglordsaga 2, Shiroki Majo: Mouhitotsu no Eiyuu Densetsu и Magic Knight Rayearth

Режим отладки. Флаг, который управляет им, находится по адресу памяти 06091484. Установите его в 01, и вы получите дополнительные пункты меню, координаты на экране и возможность выходить за пределы карты.

[SEGA Saturn] Дебаг меню для Riglordsaga 2, Shiroki Majo: Mouhitotsu no Eiyuu Densetsu и Magic Knight Rayearth

(Слева: До установки флага отладки. Справа: После его установки.)

[SEGA Saturn] Дебаг меню для Riglordsaga 2, Shiroki Majo: Mouhitotsu no Eiyuu Densetsu и Magic Knight Rayearth

(Слева: До установки флага отладки. Справа: После его установки.)

В этой игре есть несколько тестовых уровней со специальными меню, которые позволяют просматривать игровые сцены:

[SEGA Saturn] Дебаг меню для Riglordsaga 2, Shiroki Majo: Mouhitotsu no Eiyuu Densetsu и Magic Knight Rayearth

(Перемещение на тестовую карту BOOT3.)

В дебаг меню можно переключать флаг отладки с помощью кнопки Start. Код работает как этот псевдо-Python:

if pressed_button & debug_toggle_button != 0: debug_flag ^= 1

Для финальной версии игры значение debug_toggle_button установлено на 0, поэтому это не работает. Мы можем восстановить его следующим образом:

0600f596 e308 # Read a value of 08 0600f59a 4318 # Shift it to be 0800

Патч образа диска с этими изменениями на SegaXtreme.

Shiroki Majo: Mouhitotsu no Eiyuu Densetsu

В этой игре есть код кнопок для активации отладочного меню с множеством опций.

[SEGA Saturn] Дебаг меню для Riglordsaga 2, Shiroki Majo: Mouhitotsu no Eiyuu Densetsu и Magic Knight Rayearth

После экрана Hudson, во время анимации падающего снега, нажмите A; B; а затем C. Затем на титульном экране удерживайте L и R и нажмите Start. После начала геймплея одновременно удерживайте X, Y и Z, чтобы вызвать отладочное меню.

Функция по адресу проверяет оба шага. Вот моя аннотация декомпиляции Ghidra первого шага:

FUN_0603d8f4(0); do { FUN_0603d954(); uVar2 = get_input_02(); /* Check the pressed button against the A, B, C sequence. Increment the counter if the correct button was pressed, otherwise reset it to 0. */ pl_pressed_l = get_input_01(); if (((uVar2 & Oxffff)» Oxb & 1) != 0) break; if ((code_counter_l = 0) && (pl_pressed_l = 0x400)) { code_counter_l = 1; } else if ((code_counter_l == 1) && (pl_pressed_l == 0x100)) { code_counter_l = 2; } else if ((code_counter_l = 2) && (pl_pressed_l == 0x200)) { code_counter_l = 3; } else if (pl_pressed_l != 0) { code_counter_l = 0; }

(Маска кнопки A - 0x0400; маска кнопки B - 0x0100; маска кнопки C - 0x0200.)

И второй шаг:

/* If the 3 button sequence was entered above, check the held buttons against the L+R+Start pattern. */ pl_held_l = get_input_02(); if ((code_counter_l = 3) && ((pl_held_l & Oxffff) = 0x888)) { FUN_06042c70(0, 0); debug_enabled = 1; DAT_0607d0a8 = 1; return 1; }

(Маска кнопки Start - 0x0800, маска кнопки R - 0x0080, а маска кнопки L - 0x0008. Вместе они дают 0x0888.)

Флаг отладки, который здесь включается, находится по адресу 060793a8.

Перевод пунктов меню верхнего уровня:

[SEGA Saturn] Дебаг меню для Riglordsaga 2, Shiroki Majo: Mouhitotsu no Eiyuu Densetsu и Magic Knight Rayearth

С помощью опции MAP вы можете телепортироваться в разные места, хотя иногда нужно будет настроить начальную позицию, чтобы оказаться где-то осмысленно.

[SEGA Saturn] Дебаг меню для Riglordsaga 2, Shiroki Majo: Mouhitotsu no Eiyuu Densetsu и Magic Knight Rayearth

Magic Knight Rayearth

INITMENU в Magic Knight Rayearth позволяет телепортироваться в произвольные точки игры с помощью опции ROUND. В меню также есть опции для тестирования видео (CINEPACK) и звука.

[SEGA Saturn] Дебаг меню для Riglordsaga 2, Shiroki Majo: Mouhitotsu no Eiyuu Densetsu и Magic Knight Rayearth

Активация этого меню требует небольшого взлома. Четыре байта по адресу 060a13cc определяют, в какой режим переключится игра. Тот, который нам нужен, - 00000004, это отладочное меню.

[SEGA Saturn] Дебаг меню для Riglordsaga 2, Shiroki Majo: Mouhitotsu no Eiyuu Densetsu и Magic Knight Rayearth

Первое переключение режима выглядит так:

06004096 eb01 mov #0x1,r11 # Put an immediate 1 into r11 ... 060041fc 2e00 mov.b r0,@r14 # Load a value into the r14 address 060041fe 70ff add -0x1,r0 # Subtract one from that value 06004200 600c extu.b r0,r0 # Extend the sign of that value 06004202 4008 shll2 r0 # Multiply that value by 4 06004204 0d36 mov.l r3,@(r0,r13) # etc... 06004206 a0cc bra 0x060043a2 # etc... 06004208 2cb2 _mov.l r11,@r12 # Load a 1 into the game mode address

Нужно изменить значение, которое загружается в последней инструкции. Но нет хорошего места, чтобы сделать это, так как значение r11 используется в других местах. Освободим место, убрав инструкцию extu.b: она расширяет знак значения r0 - хорошая практика, поскольку выполняем с ним математические операции. Но это излишне, поскольку в этой точке выполнения значение всегда оказывается положительным.

Убрав эту инструкцию, у нас будет место для загрузки непосредственного значения 4 и запуска игры прямо в отладочном меню.

060041fc 2e00 mov.b r0,@r14 # As before 060041fe 70ff add -0x1,r0 # As before 06004200 4008 shll2 r0 # Skip the sign extension and multiply 06004202 0d36 mov.l r3,@(r0,r13) # As before, but moved up by one slot 06004204 e004 mov #0x4, r0 # Put an immediate 4 into r0 06004206 a0cc bra 0x060043a2 # As before 06004208 2c02 _mov.l r0,@r12 # Load the 4 into the game mode address

Патч образа диска с этими изменениями на SegaXtreme.

Источник:

33
Начать дискуссию