From b923869ed3d8616025baa772c60946536de70bce Mon Sep 17 00:00:00 2001 From: Lucas Azevedo Date: Fri, 7 Jun 2024 23:08:24 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Decompile=20vm=5Fmenu.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/lnk_matching.sub | 7 +- build/lnk_template.sub | 7 +- build/shc.sub | 14 +- build/shc_matching.sub | 17 + scripts/build.sh | 9 +- scripts/build_gdi.sh | 13 +- scripts/build_matching.sh | 13 +- scripts/run_tests.docker.sh | 55 +- scripts/run_tests.sh | 55 +- src/011120_asset_queues.c | 5 + src/012f44.c | 4 +- src/014b8c_backup.c | 2 +- src/014b8c_backup.h | 7 +- src/015ab8_title.c | 44 +- src/015ab8_title.h | 28 +- src/016c58.c | 56 - src/016c58_prompt.c | 56 + src/016c58_prompt.h | 11 + src/0193c8_vm_menu.c | 754 +++++++++ src/0193c8_vm_menu.h | 14 + src/asm/{_012101_data.src => 012101_data.src} | 1141 +------------ src/asm/012324.src | 4 +- src/asm/012504.src | 11 +- src/asm/0129cc.src | 4 +- src/asm/01614c.src | 38 +- src/asm/016bf4.src | 6 +- src/asm/016d2c.src | 42 +- src/asm/018644.src | 42 +- src/asm/018784.src | 38 +- src/asm/0193c8_pre_data.src | 1436 ++++++++++++++++ src/asm/019e98.src | 8 +- src/asm/01a148.src | 26 +- src/asm/01b19c.src | 58 +- src/asm/01bb48.src | 48 +- src/asm/01c980.src | 12 +- src/asm/01d290.src | 8 +- src/asm/01d7fc.src | 38 +- src/asm/01e27c.src | 24 +- src/asm/01f3c0.src | 8 +- src/asm/022bdc.src | 4 +- src/asm/024280.src | 8 +- src/asm/024b4c.src | 4 +- src/asm/025870.src | 4 +- src/asm/028258.src | 6 +- src/asm/0332a4_sectionC.src | 1453 +---------------- src/asm/03bd80_sectionD.src | 52 +- src/asm/0fcd20_sectionB.src | 93 +- src/asm/decompiled/012f44.src | 4 +- src/asm/decompiled/015ab8_title.src | 28 +- .../{016c58.src => 016c58_prompt.src} | 14 +- .../0193c8_vm_menu.src} | 153 +- src/non_matching/_027636_8c016bf4.c | 14 +- src/serial_debug.h | 4 +- tests/012f44.php | 8 +- tests/015ab8_title.php | 66 +- tests/016c58.php | 38 +- .../193c8_TaskWaitForVmsReady.php | 123 ++ tests/0193c8_vm_menu/1940e_VmMenuMountVms.php | 128 ++ tests/0193c8_vm_menu/1946a_TaskUnmountVms.php | 116 ++ .../0193c8_vm_menu/194de_VmMenuUnmountVms.php | 42 + .../19504_VmMenuFreeAndClear.php | 77 + .../0193c8_vm_menu/19550_fetchVmusStatus.php | 246 +++ .../1967c_VmMenuUpdateVmuStatus.php | 306 ++++ tests/0193c8_vm_menu/19730_saveFileExists.php | 188 +++ tests/0193c8_vm_menu/19788_initCursorLerp.php | 56 + tests/0193c8_vm_menu/197c0_drawVmMenu.php | 175 ++ tests/0193c8_vm_menu/19852_drawVmuWarning.php | 79 + tests/0193c8_vm_menu/198a0_VmMenuTask.php | 1244 ++++++++++++++ .../19e44_VmMenuSwitchFromTask.php | 31 + 69 files changed, 5774 insertions(+), 3153 deletions(-) create mode 100644 build/shc_matching.sub mode change 100644 => 100755 scripts/build_gdi.sh delete mode 100644 src/016c58.c create mode 100644 src/016c58_prompt.c create mode 100644 src/016c58_prompt.h create mode 100644 src/0193c8_vm_menu.c create mode 100644 src/0193c8_vm_menu.h rename src/asm/{_012101_data.src => 012101_data.src} (92%) create mode 100644 src/asm/0193c8_pre_data.src rename src/asm/decompiled/{016c58.src => 016c58_prompt.src} (86%) rename src/asm/{0193c8.src => decompiled/0193c8_vm_menu.src} (92%) create mode 100644 tests/0193c8_vm_menu/193c8_TaskWaitForVmsReady.php create mode 100644 tests/0193c8_vm_menu/1940e_VmMenuMountVms.php create mode 100644 tests/0193c8_vm_menu/1946a_TaskUnmountVms.php create mode 100644 tests/0193c8_vm_menu/194de_VmMenuUnmountVms.php create mode 100644 tests/0193c8_vm_menu/19504_VmMenuFreeAndClear.php create mode 100644 tests/0193c8_vm_menu/19550_fetchVmusStatus.php create mode 100644 tests/0193c8_vm_menu/1967c_VmMenuUpdateVmuStatus.php create mode 100644 tests/0193c8_vm_menu/19730_saveFileExists.php create mode 100644 tests/0193c8_vm_menu/19788_initCursorLerp.php create mode 100644 tests/0193c8_vm_menu/197c0_drawVmMenu.php create mode 100644 tests/0193c8_vm_menu/19852_drawVmuWarning.php create mode 100644 tests/0193c8_vm_menu/198a0_VmMenuTask.php create mode 100644 tests/0193c8_vm_menu/19e44_VmMenuSwitchFromTask.php diff --git a/build/lnk_matching.sub b/build/lnk_matching.sub index 7b0625b..9629735 100644 --- a/build/lnk_matching.sub +++ b/build/lnk_matching.sub @@ -192,7 +192,7 @@ input build\output\012324.obj input build\output\012504.obj input build\output\0129cc.obj input build\output\012f44.obj -input build\output\_012101_data.obj +input build\output\012101_data.obj input build\output\013ae8.obj input build\output\014934.obj input build\output\0149b0_sbinit.obj @@ -203,11 +203,12 @@ input build\output\015ab8_title.obj input build\output\016108.obj input build\output\01614c.obj input build\output\016bf4.obj -input build\output\016c58.obj +input build\output\016c58_prompt.obj input build\output\016d2c.obj input build\output\018644.obj input build\output\018784.obj -input build\output\0193c8.obj +input build\output\0193c8_pre_data.obj +input build\output\0193c8_vm_menu.obj input build\output\019e98.obj input build\output\01a148.obj input build\output\01b19c.obj diff --git a/build/lnk_template.sub b/build/lnk_template.sub index 1a054a5..7c86c26 100644 --- a/build/lnk_template.sub +++ b/build/lnk_template.sub @@ -34,7 +34,7 @@ input build\output\012324.obj input build\output\012504.obj input build\output\0129cc.obj input build\output\012f44.obj -input build\output\_012101_data.obj +input build\output\012101_data.obj input build\output\013ae8.obj input build\output\014934.obj input build\output\0149b0_sbinit.obj @@ -45,11 +45,12 @@ input build\output\015ab8_title.obj input build\output\016108.obj input build\output\01614c.obj input build\output\016bf4.obj -input build\output\016c58.obj +input build\output\016c58_prompt.obj input build\output\016d2c.obj input build\output\018644.obj input build\output\018784.obj -input build\output\0193c8.obj +input build\output\0193c8_pre_data.obj +input build\output\0193c8_vm_menu.obj input build\output\019e98.obj input build\output\01a148.obj input build\output\01b19c.obj diff --git a/build/shc.sub b/build/shc.sub index 1773fbe..b52a444 100644 --- a/build/shc.sub +++ b/build/shc.sub @@ -2,4 +2,16 @@ -debug -section=p=P,c=C,d=D,b=B -fpu=single --show=noobj,source,expansion,w=80,l=0 -comment=nonest -cpu=sh4 -define=__SHC__,SERIAL_DEBUG -division=cpu -endian=little -optimize=1 -pic=0 -macsave=0 -size -sjis -round=nearest -string=const +-show=noobj,source,expansion,w=80,l=0 +-comment=nonest +-cpu=sh4 +-define=__SHC__,SERIAL_DEBUG +-division=cpu +-endian=little +-optimize=1 +-pic=0 +-macsave=0 +-size +-sjis +-round=nearest +-string=const diff --git a/build/shc_matching.sub b/build/shc_matching.sub new file mode 100644 index 0000000..f0254f4 --- /dev/null +++ b/build/shc_matching.sub @@ -0,0 +1,17 @@ +-include=src +-debug +-section=p=P,c=C,d=D,b=B +-fpu=single +-show=noobj,source,expansion,w=80,l=0 +-comment=nonest +-cpu=sh4 +-define=__SHC__,MATCHING +-division=cpu +-endian=little +-optimize=1 +-pic=0 +-macsave=0 +-size +-sjis +-round=nearest +-string=const diff --git a/scripts/build.sh b/scripts/build.sh index cd701d6..692131d 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,3 +1,5 @@ +#!/bin/bash + set -e ASMSH_FLAGS="-debug=d -cpu=sh4 -endian=little -sjis" @@ -32,7 +34,7 @@ assemble src/asm/012324.src assemble src/asm/012504.src assemble src/asm/0129cc.src compile src/012f44.c -assemble src/asm/_012101_data.src +assemble src/asm/012101_data.src assemble src/asm/013ae8.src compile src/014934.c compile src/0149b0_sbinit.c @@ -43,11 +45,12 @@ compile src/015ab8_title.c compile src/016108.c assemble src/asm/01614c.src assemble src/asm/016bf4.src -compile src/016c58.c +compile src//016c58_prompt.c assemble src/asm/016d2c.src assemble src/asm/018644.src assemble src/asm/018784.src -assemble src/asm/0193c8.src +assemble src/asm/0193c8_pre_data.src +compile src/0193c8_vm_menu.c assemble src/asm/019e98.src assemble src/asm/01a148.src assemble src/asm/01b19c.src diff --git a/scripts/build_gdi.sh b/scripts/build_gdi.sh old mode 100644 new mode 100755 index a6a6e91..e8af431 --- a/scripts/build_gdi.sh +++ b/scripts/build_gdi.sh @@ -1,12 +1,15 @@ +#!/bin/bash + set -e -# ./build.sh +./scripts/build.sh +#./scripts/build_matching.sh -# cp build/tbg.bin ../tbg_root/data/1ST_READ.BIN +cp build/output/tbg.bin ../tbg_root/data/1ST_READ.BIN -# ../GDIbuilder/repo/buildgdi/bin/Release/net6.0/linux-x64/buildgdi -raw -data ../tbg_root/data/ -ip ../tbg_root/IP.BIN -output ../tbg_root/ +../GDIbuilder/repo/buildgdi/bin/Release/net6.0/linux-x64/buildgdi -raw -data ../tbg_root/data/ -ip ../tbg_root/IP.BIN -output ../tbg_root/ -# mv ../tbg_root/track03.bin ~/Downloads/Roms/DC/Tokyo\ Bus\ Guide\ \(Japan\)/tbg_t3.bin +mv ../tbg_root/track03.bin ~/Downloads/Roms/DC/Tokyo\ Bus\ Guide\ \(Japan\)/tbg_t3.bin -~/Downloads/flycast-x86_64.AppImage ~/Downloads/Roms/DC/Tokyo\ Bus\ Guide\ \(Japan\)/tbg.gdi +../flycast/build/flycast ~/Downloads/Roms/DC/Tokyo\ Bus\ Guide\ \(Japan\)/tbg.gdi diff --git a/scripts/build_matching.sh b/scripts/build_matching.sh index f37b20a..dbb7755 100755 --- a/scripts/build_matching.sh +++ b/scripts/build_matching.sh @@ -1,6 +1,8 @@ +#!/bin/bash + set -e -ASMSH_FLAGS="-debug=d -cpu=sh4 -endian=little -sjis" +ASMSH_FLAGS="-define=MATCHING=1 -debug=d -cpu=sh4 -endian=little -sjis" assemble() { local src_file="$1" @@ -15,7 +17,7 @@ compile() { local base_name=$(basename "$src_file" .c) local obj_file="build\\output\\$base_name.obj" - wine "$SHC_BIN/shc.exe" $(echo "$src_file" | tr / '\\') -object="$obj_file" -sub=build/shc.sub + wine "$SHC_BIN/shc.exe" $(echo "$src_file" | tr / '\\') -object="$obj_file" -sub=build/shc_matching.sub } rm -rf build/output @@ -31,7 +33,7 @@ assemble src/asm/012324.src assemble src/asm/012504.src assemble src/asm/0129cc.src assemble src/asm/decompiled/012f44.src -assemble src/asm/_012101_data.src +assemble src/asm/012101_data.src assemble src/asm/013ae8.src compile src/014934.c compile src/0149b0_sbinit.c @@ -42,11 +44,12 @@ assemble src/asm/decompiled/015ab8_title.src compile src/016108.c assemble src/asm/01614c.src assemble src/asm/016bf4.src -assemble src/asm/decompiled/016c58.src +assemble src/asm/decompiled/016c58_prompt.src assemble src/asm/016d2c.src assemble src/asm/018644.src assemble src/asm/018784.src -assemble src/asm/0193c8.src +assemble src/asm/0193c8_pre_data.src +assemble src/asm/decompiled/0193c8_vm_menu.src assemble src/asm/019e98.src assemble src/asm/01a148.src assemble src/asm/01b19c.src diff --git a/scripts/run_tests.docker.sh b/scripts/run_tests.docker.sh index fb202b6..3b92e2d 100755 --- a/scripts/run_tests.docker.sh +++ b/scripts/run_tests.docker.sh @@ -55,23 +55,66 @@ $sh4objtest "tests/0100bc_sound/010c2c_FUN.php" "build/output/0100bc_sound_c.obj $sh4objtest "tests/0100bc_sound/010cd6_snd.php" "build/output/0100bc_sound_src.obj" $sh4objtest "tests/0100bc_sound/010cd6_snd.php" "build/output/0100bc_sound_c.obj" -# 015ab8_title +# # 015ab8_title assemble src/asm/decompiled/015ab8_title.src $sh4objtest "tests/015ab8_title.php" "build/output/015ab8_title_src.obj" compile src/015ab8_title.c $sh4objtest "tests/015ab8_title.php" "build/output/015ab8_title_c.obj" +# 0193c8 +assemble src/asm/decompiled/0193c8_vm_menu.src +compile src/0193c8_vm_menu.c + +$sh4objtest "tests/0193c8_vm_menu/198a0_VmMenuTask.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/198a0_VmMenuTask.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/19852_drawVmuWarning.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/19852_drawVmuWarning.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/193c8_TaskWaitForVmsReady.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/193c8_TaskWaitForVmsReady.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/1940e_VmMenuMountVms.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/1940e_VmMenuMountVms.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/1946a_TaskUnmountVms.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/1946a_TaskUnmountVms.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/194de_VmMenuUnmountVms.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/194de_VmMenuUnmountVms.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/19504_VmMenuFreeAndClear.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/19504_VmMenuFreeAndClear.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/19550_fetchVmusStatus.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/19550_fetchVmusStatus.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/19e44_VmMenuSwitchFromTask.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/19e44_VmMenuSwitchFromTask.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/1967c_VmMenuUpdateVmuStatus.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/1967c_VmMenuUpdateVmuStatus.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/19730_saveFileExists.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/19730_saveFileExists.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/19788_initCursorLerp.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/19788_initCursorLerp.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/197c0_drawVmMenu.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/197c0_drawVmMenu.php" "build/output/0193c8_vm_menu_c.obj" + # 0207d4 assemble src/asm/decompiled/0207d4.src $sh4objtest "tests/0207d4.php" "build/output/0207d4_src.obj" compile src/0207d4.c $sh4objtest "tests/0207d4.php" "build/output/0207d4_c.obj" -# 016c58 -assemble src/asm/decompiled/016c58.src -$sh4objtest "tests/016c58.php" "build/output/016c58_src.obj" -compile src/016c58.c -$sh4objtest "tests/016c58.php" "build/output/016c58_c.obj" +# 016c58_prompt +assemble src/asm/decompiled/016c58_prompt.src +$sh4objtest "tests/016c58.php" "build/output/016c58_prompt_src.obj" +compile src/016c58_prompt.c +$sh4objtest "tests/016c58.php" "build/output/016c58_prompt_c.obj" # 012f44 assemble src/asm/decompiled/012f44.src diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index edefdad..519af3f 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -55,23 +55,66 @@ $sh4objtest "tests/0100bc_sound/010c2c_FUN.php" "build/output/0100bc_sound_c.obj $sh4objtest "tests/0100bc_sound/010cd6_snd.php" "build/output/0100bc_sound_src.obj" $sh4objtest "tests/0100bc_sound/010cd6_snd.php" "build/output/0100bc_sound_c.obj" -# 015ab8_title +# # 015ab8_title assemble src/asm/decompiled/015ab8_title.src $sh4objtest "tests/015ab8_title.php" "build/output/015ab8_title_src.obj" compile src/015ab8_title.c $sh4objtest "tests/015ab8_title.php" "build/output/015ab8_title_c.obj" +# 0193c8 +assemble src/asm/decompiled/0193c8_vm_menu.src +compile src/0193c8_vm_menu.c + +$sh4objtest "tests/0193c8_vm_menu/198a0_VmMenuTask.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/198a0_VmMenuTask.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/19852_drawVmuWarning.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/19852_drawVmuWarning.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/193c8_TaskWaitForVmsReady.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/193c8_TaskWaitForVmsReady.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/1940e_VmMenuMountVms.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/1940e_VmMenuMountVms.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/1946a_TaskUnmountVms.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/1946a_TaskUnmountVms.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/194de_VmMenuUnmountVms.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/194de_VmMenuUnmountVms.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/19504_VmMenuFreeAndClear.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/19504_VmMenuFreeAndClear.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/19550_fetchVmusStatus.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/19550_fetchVmusStatus.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/19e44_VmMenuSwitchFromTask.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/19e44_VmMenuSwitchFromTask.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/1967c_VmMenuUpdateVmuStatus.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/1967c_VmMenuUpdateVmuStatus.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/19730_saveFileExists.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/19730_saveFileExists.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/19788_initCursorLerp.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/19788_initCursorLerp.php" "build/output/0193c8_vm_menu_c.obj" + +$sh4objtest "tests/0193c8_vm_menu/197c0_drawVmMenu.php" "build/output/0193c8_vm_menu_src.obj" +$sh4objtest "tests/0193c8_vm_menu/197c0_drawVmMenu.php" "build/output/0193c8_vm_menu_c.obj" + # 0207d4 assemble src/asm/decompiled/0207d4.src $sh4objtest "tests/0207d4.php" "build/output/0207d4_src.obj" compile src/0207d4.c $sh4objtest "tests/0207d4.php" "build/output/0207d4_c.obj" -# 016c58 -assemble src/asm/decompiled/016c58.src -$sh4objtest "tests/016c58.php" "build/output/016c58_src.obj" -compile src/016c58.c -$sh4objtest "tests/016c58.php" "build/output/016c58_c.obj" +# 016c58_prompt +assemble src/asm/decompiled/016c58_prompt.src +$sh4objtest "tests/016c58.php" "build/output/016c58_prompt_src.obj" +compile src/016c58_prompt.c +$sh4objtest "tests/016c58.php" "build/output/016c58_prompt_c.obj" # 012f44 assemble src/asm/decompiled/012f44.src diff --git a/src/011120_asset_queues.c b/src/011120_asset_queues.c index aba84f2..e84cac3 100644 --- a/src/011120_asset_queues.c +++ b/src/011120_asset_queues.c @@ -192,6 +192,11 @@ int init_8c03bf18[10] = { }; +/* ========= + * Functions + ========= + */ + /* Matched :) */ void nop_8c011120() { /* Empty body */ diff --git a/src/012f44.c b/src/012f44.c index 9806f85..b814171 100644 --- a/src/012f44.c +++ b/src/012f44.c @@ -340,7 +340,7 @@ extern void* var_8c1ba344; extern void* var_8c225fb0; extern void* var_8c1ba3c4; extern void* var_8c1bc454; -extern void* var_8c1ba34c; +extern void* var_selectedVm_8c1ba34c; extern BusState var_busState_8c1bb9d0; extern void* var_8c1bbddc; @@ -730,7 +730,7 @@ void njUserInit_8c0134ec() { var_8c225fb0 = (void *) -1; var_8c1ba3c4 = (void *) -1; var_8c1bc454 = (void *) -1; - var_8c1ba34c = (void *) -1; + var_selectedVm_8c1ba34c = (void *) -1; var_8c1bb8c4 = 0; var_8c1bb8d8 = 100; diff --git a/src/014b8c_backup.c b/src/014b8c_backup.c index 75a34aa..115148e 100644 --- a/src/014b8c_backup.c +++ b/src/014b8c_backup.c @@ -113,7 +113,7 @@ void BupUnmount_8c014c46(Sint32 drive) } } -static void ClearInfo_8c014c8a(Sint32 drive) +void ClearInfo_8c014c8a(Sint32 drive) { BACKUPINFO* info; diff --git a/src/014b8c_backup.h b/src/014b8c_backup.h index b9bd965..1e273af 100644 --- a/src/014b8c_backup.h +++ b/src/014b8c_backup.h @@ -28,14 +28,15 @@ typedef struct { void BupInit(void); void BupExit(void); -const BACKUPINFO* BupGetInfo(Sint32 drive); +const BACKUPINFO* BupGetInfo_8c014bba(Sint32 drive); const char* BupGetErrorString(Sint32 err); const char* BupGetOperationString(Sint32 op); Sint32 BupLoad(Sint32 drive, const char* fname, void* buf); Sint32 BupSave(Sint32 drive, const char* fname, void* buf, Sint32 nblock); Sint32 BupDelete(Sint32 drive, const char* fname); -void BupMount(Sint32 drive); -void BupUnmount(Sint32 drive); +void BupMount_8c014c00(Sint32 drive); +void BupUnmount_8c014c46(Sint32 drive); +void ClearInfo_8c014c8a(Sint32 drive); #ifdef __cplusplus } diff --git a/src/015ab8_title.c b/src/015ab8_title.c index c5c6c56..307d7e8 100644 --- a/src/015ab8_title.c +++ b/src/015ab8_title.c @@ -7,20 +7,20 @@ #include "014a9c_tasks.h" #include "015ab8_title.h" #include "serial_debug.h" +#include "0193c8_vm_menu.h" extern Bool getUknPvmBool_8c01432a(); extern void freeQueues_8c011f7e(); -extern void FUN_8c01940e(); extern void push_fadein_8c022a9c(); extern SDMIDI var_midiHandles_8c0fcd28[7]; extern Bool isFading_8c226568; extern void drawSprite_8c014f54(ResourceGroup *r4, int r5, float fr4, float fr5, float fr6); extern void push_fadeout_8c022b60(); -extern char* saveNames_8c044d50[11]; +extern char* init_saveNames_8c044d50[11]; extern Bool init_8c03bd80; extern Bool var_8c1bb8c4; extern ResourceGroupInfo titleResourceGroup_8c044254; -extern PDS_PERIPHERAL peripheral_8c1ba35c[2]; +extern PDS_PERIPHERAL var_peripheral_8c1ba35c[2]; extern Task var_tasks_8c1ba3c8[16]; extern void task_8c012f44(Task* task, void* state); extern NJS_TEXMEMLIST var_tex_8c157af8; @@ -28,8 +28,6 @@ extern FUN_8c02ae3e(int p1, int p2, float fp1, int p3, int p4, int p5, int p6, i extern initQueues_8c011f36(int p1, int p2, int p3, int p4); extern void nop_8c011120(); extern void resetUknPvmBool_8c014322(); -extern FUN_8c019550(char** p1, int p2); -extern void setMenuTaskAction_8c019e44(Task* task); extern FUN_8c016182(); extern FUN_8c0159ac(); extern void resetQueues_8c011f6c(); @@ -46,11 +44,11 @@ void task_title_8c015ab8(Task* task, void *state) { if (menuState_8c1bc7a8.state_0x18 >= TITLE_STATE_0X0B_BUS_SLIDE /* 8c015aec */ && menuState_8c1bc7a8.state_0x18 <= TITLE_STATE_0X0C_FLAG_REVEAL) { /* 8c015af6 */ - if (peripheral_8c1ba35c[0].press & PDD_DGT_ST) { /* 8c015afa */ + if (var_peripheral_8c1ba35c[0].press & PDD_DGT_ST) { /* 8c015afa */ /* 8c015b00 */ sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 0, 0); - peripheral_8c1ba35c[0].press = 0; + var_peripheral_8c1ba35c[0].press = 0; menuState_8c1bc7a8.state_0x18 = TITLE_STATE_0X0E_PRESS_START; LOG_DEBUG(("[TITLE] State changed: 0X0E_PRESS_START\n")); isFading_8c226568 = FALSE; @@ -62,8 +60,8 @@ void task_title_8c015ab8(Task* task, void *state) { case TITLE_STATE_0X00_INIT: { if (getUknPvmBool_8c01432a() == FALSE) { /* 8c015b96 */ - freeQueues_8c011f7e(); /* messes with vmu */ - FUN_8c01940e(); + freeQueues_8c011f7e(); + VmMenuMountVms_1940e(); if (task->field_0x08 == FALSE) { /* 8c015bd8 */ @@ -165,7 +163,7 @@ void task_title_8c015ab8(Task* task, void *state) { case TITLE_STATE_0X06_ADX_FADE_OUT: { if (isFading_8c226568 == FALSE) { // VMU Check? - if (FUN_8c012984() != FALSE && FUN_8c019550(saveNames_8c044d50, 3) == FALSE) { + if (FUN_8c012984() != FALSE && VmMenuUpdateVmusStatus_19550(init_saveNames_8c044d50, 3) == FALSE) { /* 8c015c62 */ menuState_8c1bc7a8.state_0x18 = TITLE_STATE_0X07_VMU_WARNING_FADE_IN; LOG_DEBUG(("[TITLE] State changed: 0X07_VMU_WARNING_FADE_IN\n")); @@ -206,8 +204,8 @@ void task_title_8c015ab8(Task* task, void *state) { /* 0x8c015ca8 (0x8c015b32 + 4 + 0x172) */ case TITLE_STATE_0X08_VMU_WARNING: { if ( - peripheral_8c1ba35c[0].press & (PDD_DGT_TA | PDD_DGT_ST) - || FUN_8c019550(saveNames_8c044d50, 3) + var_peripheral_8c1ba35c[0].press & (PDD_DGT_TA | PDD_DGT_ST) + || VmMenuUpdateVmusStatus_19550(init_saveNames_8c044d50, 3) ) { sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 0, 0); menuState_8c1bc7a8.state_0x18 = TITLE_STATE_0X09_VMU_WARNING_FADE_OUT; @@ -241,7 +239,7 @@ void task_title_8c015ab8(Task* task, void *state) { /* 8c015cf2 */ menuState_8c1bc7a8.state_0x18 = TITLE_STATE_0X0B_BUS_SLIDE; LOG_DEBUG(("[TITLE] State changed: 0X0B_BUS_SLIDE\n")); - menuState_8c1bc7a8.busX_0x20 = 640; + menuState_8c1bc7a8.pos.title.busX_0x20 = 640; /* Related to music */ snd_8c010cd6(0, 0); @@ -256,19 +254,19 @@ void task_title_8c015ab8(Task* task, void *state) { /* 0x8c015d10 (0x8c015b32 + 4 + 0x1DA) */ case TITLE_STATE_0X0B_BUS_SLIDE: { - menuState_8c1bc7a8.busX_0x20 -= 5.111111; /* ~ 46/9 */ + menuState_8c1bc7a8.pos.title.busX_0x20 -= 5.111111; /* ~ 46/9 */ - if (menuState_8c1bc7a8.busX_0x20 <= 180) { + if (menuState_8c1bc7a8.pos.title.busX_0x20 <= 180) { menuState_8c1bc7a8.state_0x18 = TITLE_STATE_0X0C_FLAG_REVEAL; LOG_DEBUG(("[TITLE] State changed: 0X0C_FLAG_REVEAL\n")); - menuState_8c1bc7a8.flagY_0x24 = 167.0; + menuState_8c1bc7a8.pos.title.flagY_0x24 = 167.0; /* Missing break! */ goto gambi; } /* 8c015d38 - Draw bus */ - drawSprite_8c014f54(&menuState_8c1bc7a8.resourceGroupB_0x0c, 1, menuState_8c1bc7a8.busX_0x20, 0.0, -4.0); + drawSprite_8c014f54(&menuState_8c1bc7a8.resourceGroupB_0x0c, 1, menuState_8c1bc7a8.pos.title.busX_0x20, 0.0, -4.0); /* 8c015d7c (shared) - Draw title */ drawSprite_8c014f54(&menuState_8c1bc7a8.resourceGroupB_0x0c, 2, 0.0, 0.0, -5.0); @@ -280,15 +278,15 @@ void task_title_8c015ab8(Task* task, void *state) { /* 0x8c015d4a (0x8c015b32 + 4 + 0x214) */ case TITLE_STATE_0X0C_FLAG_REVEAL: { gambi: - menuState_8c1bc7a8.flagY_0x24 -= 2.3333333; /* ~ 7/3 */ + menuState_8c1bc7a8.pos.title.flagY_0x24 -= 2.3333333; /* ~ 7/3 */ - if (menuState_8c1bc7a8.flagY_0x24 <= 97) { + if (menuState_8c1bc7a8.pos.title.flagY_0x24 <= 97) { menuState_8c1bc7a8.state_0x18 = TITLE_STATE_0X0E_PRESS_START; LOG_DEBUG(("[TITLE] State changed: 0X0E_PRESS_START\n")); } /* 8c015d6a - Draw flag */ - drawSprite_8c014f54(&menuState_8c1bc7a8.resourceGroupB_0x0c, 4, 302, menuState_8c1bc7a8.flagY_0x24, -4.5); + drawSprite_8c014f54(&menuState_8c1bc7a8.resourceGroupB_0x0c, 4, 302, menuState_8c1bc7a8.pos.title.flagY_0x24, -4.5); /* 8c015da4 - Draw bus */ drawSprite_8c014f54(&menuState_8c1bc7a8.resourceGroupB_0x0c, 1, 180, 0.0, -4.0); @@ -320,7 +318,7 @@ void task_title_8c015ab8(Task* task, void *state) { /* 0x8c015e18 (0x8c015b32 + 4 + 0x2E2) */ case TITLE_STATE_0X0E_PRESS_START: { - if (peripheral_8c1ba35c[0].press & PDD_DGT_ST) { + if (var_peripheral_8c1ba35c[0].press & PDD_DGT_ST) { /* 8c015e20 */ FUN_8c010bae(0); FUN_8c010bae(1); @@ -377,7 +375,7 @@ void task_title_8c015ab8(Task* task, void *state) { /* 0x8c015e98 (0x8c015b32 + 4 + 0x362) */ case TITLE_STATE_0X10_START_PRESSED_FADE_OUT: { - FUN_8c019550(saveNames_8c044d50, 3); + VmMenuUpdateVmusStatus_19550(init_saveNames_8c044d50, 3); if (isFading_8c226568 == FALSE) { if (!init_8c03bd80) { @@ -385,7 +383,7 @@ void task_title_8c015ab8(Task* task, void *state) { var_8c1bb8c4 = FALSE; /* Push menu task */ - setMenuTaskAction_8c019e44(task); + VmMenuSwitchFromTask_19e44(task); } return; diff --git a/src/015ab8_title.h b/src/015ab8_title.h index e5280da..b16e118 100644 --- a/src/015ab8_title.h +++ b/src/015ab8_title.h @@ -1,6 +1,8 @@ #ifndef _TITLE_H_ #define _TITLE_H_ +#include "014b8c_backup.h" + enum TITLE_STATE { TITLE_STATE_0X00_INIT, TITLE_STATE_0X01_FORTYFIVE_FADE_IN, @@ -40,19 +42,21 @@ typedef ResourceGroup; struct MenuState { ResourceGroup resourceGroupA_0x00; - // void *field_0x04; - // void *field_0x08; ResourceGroup resourceGroupB_0x0c; - // void *field_0x10; - // void *field_0x14; TITLE_STATE state_0x18; int field_0x1c; - float busX_0x20; - float flagY_0x24; - int field_0x28; - int field_0x2c; - int field_0x30; - int field_0x34; + union { + struct { + float busX_0x20; + float flagY_0x24; + } title; + struct { + NJS_POINT2 cursor_0x20; + NJS_POINT2 cursorTarget_0x28; + } vmSelect; + } pos; + float uknX_0x30; + float uknY_0x34; int field_0x38; int field_0x3c; int field_0x40; @@ -66,6 +70,10 @@ struct MenuState { int field_0x60; int startTimer_0x64; int logo_timer_0x68; + int selectedVmuSlot_0x6c; + int field_0x70; + int field_0x74; + BACKUPINFO* bupInfo_0x78; } typedef MenuState; diff --git a/src/016c58.c b/src/016c58.c deleted file mode 100644 index 1df876d..0000000 --- a/src/016c58.c +++ /dev/null @@ -1,56 +0,0 @@ -/* 8c016c58 */ -// #include -#include -#include - -extern SDMIDI var_midiHandles_8c0fcd28[7]; -extern PDS_PERIPHERAL peripheral_8c1ba35c[2]; - -int cycleOptionAndPlaySound_8c016c58(int *currentOption, int optionCount) -{ - int newOption = *currentOption; - - if (peripheral_8c1ba35c[0].press & PDD_DGT_KL) { - if (--newOption < 0) { - newOption = optionCount - 1; - } - } else if (peripheral_8c1ba35c[0].press & PDD_DGT_KR) { - if (++newOption >= optionCount) { - newOption = 0; - } - } else { - *currentOption = newOption; - return 0; - } - - sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 3, 0); - *currentOption = newOption; - return 1; -} - -int processNavInputAndPlaySound_8c016caa(int* param_1) { - if (*param_1 == 0) { - if (peripheral_8c1ba35c[0].press & PDD_DGT_KR) { - *param_1 = 1; - sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 3, 0); - } - } else if (peripheral_8c1ba35c[0].press & PDD_DGT_KL) { - *param_1 = 0; - sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 3, 0); - } - - if (peripheral_8c1ba35c[0].press & PDD_DGT_TA) { - if (!*param_1) { - sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 0, 0); - return 1; - } else { - sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 1, 0); - return 2; - } - } else if (peripheral_8c1ba35c[0].press & PDD_DGT_TB) { - sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 1, 0); - return 2; - } - - return 0; -} diff --git a/src/016c58_prompt.c b/src/016c58_prompt.c new file mode 100644 index 0000000..3c401ae --- /dev/null +++ b/src/016c58_prompt.c @@ -0,0 +1,56 @@ +/* 8c016c58 */ +#include +#include +#include "016c58_prompt.h" + +extern SDMIDI var_midiHandles_8c0fcd28[7]; +extern PDS_PERIPHERAL var_peripheral_8c1ba35c[2]; + +int promptHandleMultiple_16c58(int *option, int count) +{ + int newOption = *option; + + if (var_peripheral_8c1ba35c[0].press & PDD_DGT_KL) { + if (--newOption < 0) { + newOption = count - 1; + } + } else if (var_peripheral_8c1ba35c[0].press & PDD_DGT_KR) { + if (++newOption >= count) { + newOption = 0; + } + } else { + *option = newOption; + return 0; + } + + sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 3, 0); + *option = newOption; + return 1; +} + +int promptHandleBinary_16caa(int* option) { + if (*option == 0) { + if (var_peripheral_8c1ba35c[0].press & PDD_DGT_KR) { + *option = 1; + sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 3, 0); + } + } else if (var_peripheral_8c1ba35c[0].press & PDD_DGT_KL) { + *option = 0; + sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 3, 0); + } + + if (var_peripheral_8c1ba35c[0].press & PDD_DGT_TA) { + if (*option == 0) { + sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 0, 0); + return 1; + } else { + sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 1, 0); + return 2; + } + } else if (var_peripheral_8c1ba35c[0].press & PDD_DGT_TB) { + sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 1, 0); + return 2; + } + + return 0; +} diff --git a/src/016c58_prompt.h b/src/016c58_prompt.h new file mode 100644 index 0000000..9c174c6 --- /dev/null +++ b/src/016c58_prompt.h @@ -0,0 +1,11 @@ +/* 8c016c58 */ +#ifndef _PROMPT_H +#define _PROMPT_H + +#include +#include + +int promptHandleMultiple_16c58(int *option, int count); +int promptHandleBinary_16caa(int* option); + +#endif // _PROMPT_H diff --git a/src/0193c8_vm_menu.c b/src/0193c8_vm_menu.c new file mode 100644 index 0000000..3d8132a --- /dev/null +++ b/src/0193c8_vm_menu.c @@ -0,0 +1,754 @@ +#include +#include +#include "0193c8_vm_menu.h" +#include "sg_xpt.h" +#include "014a9c_tasks.h" +#include "015ab8_title.h" +#include "014b8c_backup.h" +#include "serial_debug.h" + +/* ==================== + * Compiler Definitions + * ==================== + */ + +#ifdef SERIAL_DEBUG +char *DEBUG_vmMenuStateNames[] = { + "INIT", + "FADE_IN", + "IDLE", + "CURSOR_ANIMATING", + "CONFIRM", + "PROCEED_WITHOUT_SAVING", + "VM_WARNING_FADE_IN", + "VM_WARNING", + "CONFIRM_FADE_OUT_TO_MAIN_MENU", + "FADE_OUT", + "FADE_IN_FROM_VM_WARNING" +}; + +char *DEBUG_vmuStatusNames[] = { + "NOT_CONNECTED", + "NOT_AVAILABLE", + "NOT_ENOUGH_SPACE", + "PROCEED_WITHOUT_SAVING", + "SAVING_POSSIBLE", + "SAVE_EXISTS", + "SAVE_EXISTS_NO_SPACE" +}; + +int intArrayChecksum(int *arr, int size) { + int checksum = 0; + int i; + for (i = 0; i < size; ++i) { + checksum ^= arr[i]; + } + return checksum; +} +#endif + +#define CHANGE_STATE(x) menuState_8c1bc7a8.state_0x18 = x; LOG_DEBUG(("[VM_MENU] State changed: %s\n", DEBUG_vmMenuStateNames[x])) + + +/* ================= + * Type Declarations + * ================= + */ + +enum VM_MENU_STATE { + VM_MENU_STATE_INIT = 0, + VM_MENU_STATE_FADE_IN = 1, + VM_MENU_STATE_IDLE = 2, + VM_MENU_STATE_CURSOR_ANIMATING = 3, + VM_MENU_STATE_CONFIRM = 4, + VM_MENU_STATE_PROCEED_WITHOUT_SAVING = 5, + VM_MENU_STATE_VM_WARNING_FADE_IN = 6, + VM_MENU_STATE_VM_WARNING = 7, + VM_MENU_STATE_CONFIRM_FADE_OUT_TO_MAIN_MENU = 8, + VM_MENU_STATE_FADE_OUT = 9, + VM_MENU_STATE_FADE_IN_FROM_VM_WARNING = 10 +}; + +enum VMU_STATUS { + VMU_STATUS_NOT_CONNECTED = 0, + VMU_STATUS_NOT_AVAILABLE = 1, + VMU_STATUS_NOT_ENOUGH_SPACE = 2, + VMU_STATUS_PROCEED_WITHOUT_SAVING = 3, + VMU_STATUS_SAVING_POSSIBLE = 4, + VMU_STATUS_SAVE_EXISTS = 5, + VMU_STATUS_SAVE_EXISTS_NO_SPACE = 6 +}; + + +/* ===================== + * External Declarations + ===================== + */ + +extern int init_8c03bd80; +extern char* init_saveNames_8c044d50[11]; +extern char* init_vmuStatusMessages_8c044dc4[7]; +extern NJS_POINT2 init_vmIconsPositions_8c044d7c[8]; + +extern SDMIDI var_midiHandles_8c0fcd28[7]; + +extern int var_selectedVm_8c1ba34c; +extern PDS_PERIPHERAL var_peripheral_8c1ba35c[2]; +extern Task var_tasks_8c1ba3c8[]; + +extern BACKUPINFO gBupInfo_8c1bc4ac[8]; + +extern int var_vmuStatus_8c226048[9]; +extern int var_8c22606c; +extern Bool isFading_8c226568; + + +/* ======================= + * Non-initialized Globals + * ======================= + */ + + +/* =================== + * Initialized Globals + =================== + */ + + +/* ========= + * Functions + ========= + */ + +/* Tested */ +STATIC void TaskWaitForVmsReady_193c8(Task *task) +{ + int drive; + + for (drive = 0; drive < 8; drive++) { + const BACKUPINFO* bupInfo = BupGetInfo_8c014bba(drive); + if (bupInfo->Connect && !bupInfo->Ready) + return; + } + + freeTask_8c014b66(task); + var_8c22606c = 0; + return; +} + +/* Tested */ +void VmMenuMountVms_1940e() +{ + int drive; + Task *createdTask; + void *createdState; + for (drive = 0; drive < 8; drive++) { + const BACKUPINFO *bupInfo = BupGetInfo_8c014bba(drive); + if (bupInfo->Connect && !bupInfo->Work) + BupMount_8c014c00(drive); + } + + pushTask_8c014ae8(var_tasks_8c1ba3c8, &TaskWaitForVmsReady_193c8, &createdTask, &createdState, 0); + var_8c22606c = 1; +} + +/* Tested */ +STATIC void TaskUnmountVms_1946a(Task *task, void *state) +{ + int drive; + Bool isBusy = FALSE; + for (drive = 0; drive < 8; drive++) { + const BACKUPINFO *bupInfo = BupGetInfo_8c014bba(drive); + if (bupInfo->Connect) { + int stat = buStat(drive); + if (stat == BUD_STAT_BUSY) { + isBusy = TRUE; + continue; + } + + if (bupInfo->Work) + BupUnmount_8c014c46(drive); + } + } + + if (!isBusy) { + freeTask_8c014b66(task); + var_8c22606c = 0; + } +} + +/* Tested */ +void VmMenuUnmountVms_194de() +{ + Task *createdTask; + void *createdState; + + pushTask_8c014ae8(var_tasks_8c1ba3c8, &TaskUnmountVms_1946a, &createdTask, &createdState, 0); + var_8c22606c = 1; +} + +/* Tested */ +void VmMenuFreeAndClear_19504(void) +{ + int drive; + + for (drive = 0; drive < 8; drive++) { + if (gBupInfo_8c1bc4ac[drive].Work) { + syFree(gBupInfo_8c1bc4ac[drive].Work); + ClearInfo_8c014c8a(drive); + } + } +} + +/* Tested */ +int VmMenuUpdateVmusStatus_19550(char **saveNames, Uint16 blocks) +{ + int drive; + int count = 0; +#ifdef SERIAL_DEBUG + int checksum = intArrayChecksum(var_vmuStatus_8c226048, 9); +#endif + for (drive = 0; drive < 8; drive++) { + int i; + char** saveName; + const BACKUPINFO *bupInfo = BupGetInfo_8c014bba(drive); + + if (!bupInfo->Connect) { + var_vmuStatus_8c226048[drive] = VMU_STATUS_NOT_CONNECTED; + continue; + } + + if (!bupInfo->Work) { + BupMount_8c014c00(drive); + continue; + } + + if (!bupInfo->Ready) { + continue; + } + + for (i = 0; *saveNames[i]; i++) { + switch (buIsExistFile(drive, saveNames[i])) { + case BUD_ERR_OK: + var_vmuStatus_8c226048[drive] = (bupInfo->DiskInfo.free_user_blocks < blocks) + ? VMU_STATUS_SAVE_EXISTS + : VMU_STATUS_SAVE_EXISTS_NO_SPACE; + count++; + break; + + case BUD_ERR_UNFORMAT: + var_vmuStatus_8c226048[drive] = VMU_STATUS_NOT_AVAILABLE; + // Missing break statement in original code + + case BUD_ERR_BUSY: + var_vmuStatus_8c226048[drive] = VMU_STATUS_NOT_AVAILABLE; + break; + + default: + // File not found, continue to next file + continue; + } + + // If this is reached, the vmu status was set + break; + } + + if (!*saveNames[i]) { + if (bupInfo->DiskInfo.free_user_blocks < blocks) { + var_vmuStatus_8c226048[drive] = VMU_STATUS_NOT_ENOUGH_SPACE; + } else { + var_vmuStatus_8c226048[drive] = VMU_STATUS_SAVING_POSSIBLE; + count++; + } + } + } + + var_vmuStatus_8c226048[8] = VMU_STATUS_PROCEED_WITHOUT_SAVING; // Proceed without saving + +#ifdef SERIAL_DEBUG + if (checksum != intArrayChecksum(var_vmuStatus_8c226048, 9)) { + int i; + LOG_INFO(("[VM_MENU] VMU status changed:\n")); + for (i = 0; i < 9; i++) { + LOG_INFO((" Slot %d: %s\n", i, DEBUG_vmuStatusNames[var_vmuStatus_8c226048[i]])); + } + } +#endif + + return count; +} + +/* Tested */ +void VmMenuUpdateVmuStatus_1967c(Sint32 drive, char* saveName, Uint16 blocks) +{ + const BACKUPINFO *bupInfo = BupGetInfo_8c014bba(drive); + + if (!bupInfo->Connect) { + var_vmuStatus_8c226048[drive] = VMU_STATUS_NOT_CONNECTED; + return; + } + + if (!bupInfo->Work) { + BupMount_8c014c00(drive); + } + + if (!bupInfo->Ready) { + var_vmuStatus_8c226048[drive] = VMU_STATUS_NOT_CONNECTED; + return; + } + + switch (buIsExistFile(drive, saveName)) { + case BUD_ERR_OK: + var_vmuStatus_8c226048[drive] = (bupInfo->DiskInfo.free_user_blocks < blocks) + ? VMU_STATUS_SAVE_EXISTS + : VMU_STATUS_SAVE_EXISTS_NO_SPACE; + break; + + case BUD_ERR_UNFORMAT: + var_vmuStatus_8c226048[drive] = VMU_STATUS_NOT_AVAILABLE; + // Missing break statement in original code + + case BUD_ERR_BUSY: + var_vmuStatus_8c226048[drive] = VMU_STATUS_NOT_AVAILABLE; + break; + + default: + if (bupInfo->DiskInfo.free_user_blocks < blocks) { + var_vmuStatus_8c226048[drive] = VMU_STATUS_NOT_ENOUGH_SPACE; + } else { + var_vmuStatus_8c226048[drive] = VMU_STATUS_SAVING_POSSIBLE; + } + break; + } +} + +/* Tested, unused */ +STATIC int saveFileExists_19730(Sint32 drive, char* saveName) +{ + const BACKUPINFO *bupInfo = BupGetInfo_8c014bba(drive); + if (!bupInfo->Connect + || !bupInfo->Work + || !bupInfo->Ready + || buIsExistFile(drive, saveName) != BUD_ERR_OK) + { + return 0; + } + + return 1; +} + +/* Tested */ +STATIC void initCursorLerp_19788(int drive) +{ + menuState_8c1bc7a8.pos.vmSelect.cursorTarget_0x28.x = init_vmIconsPositions_8c044d7c[drive].x; + menuState_8c1bc7a8.pos.vmSelect.cursorTarget_0x28.y = init_vmIconsPositions_8c044d7c[drive].y; + menuState_8c1bc7a8.uknX_0x30 = + (init_vmIconsPositions_8c044d7c[drive].x - menuState_8c1bc7a8.pos.vmSelect.cursor_0x20.x) / 6; + menuState_8c1bc7a8.uknY_0x34 = + (init_vmIconsPositions_8c044d7c[drive].y - menuState_8c1bc7a8.pos.vmSelect.cursor_0x20.y) / 6; +} + +/* Tested */ +STATIC void drawVmMenu_197c0() +{ + int drive; + int textureId = 8; + + // Draw cursor + drawSprite_8c014f54( + &menuState_8c1bc7a8.resourceGroupB_0x0c, + 0x10, + menuState_8c1bc7a8.pos.vmSelect.cursor_0x20.x, + menuState_8c1bc7a8.pos.vmSelect.cursor_0x20.y, + -4.0 + ); + + // Draw connected VMUs + for (drive = 0; drive < 8; drive++) { + if (var_vmuStatus_8c226048[drive]) { + drawSprite_8c014f54( + &menuState_8c1bc7a8.resourceGroupB_0x0c, + textureId, 0.0, 0.0, -5.0 + ); + } + textureId++; + } + + // Draw default VMU icons + drawSprite_8c014f54( + &menuState_8c1bc7a8.resourceGroupB_0x0c, + 7, 0.0, 0.0, -6.0 + ); + + // Draw textbox background + drawSprite_8c014f54( + &menuState_8c1bc7a8.resourceGroupA_0x00, + 1, 0.0, 0.0, -4.3 + ); + + // Draw background + drawSprite_8c014f54( + &menuState_8c1bc7a8.resourceGroupA_0x00, + 0, 0.0, 0.0, -7.0 + ); +} + +/* Tested */ +STATIC void DrawVmWarning_19852() +{ + drawSprite_8c014f54(&menuState_8c1bc7a8.resourceGroupB_0x0c, 0x11, 0.0, 0.0, -5.0); + drawSprite_8c014f54( + &menuState_8c1bc7a8.resourceGroupA_0x00, + menuState_8c1bc7a8.field_0x3c + 2, + 228.0, 304.0, -5.0 + ); + drawSprite_8c014f54( + &menuState_8c1bc7a8.resourceGroupA_0x00, 0, + 0.0, 0.0, -7.0 + ); +} + +/* Tested */ +STATIC void VmMenuTask_198a0(Task* task, void *actionState) +{ + int slot = menuState_8c1bc7a8.field_0x38; + switch (menuState_8c1bc7a8.state_0x18) + { + /* Init */ + case VM_MENU_STATE_INIT: { + menuState_8c1bc7a8.logo_timer_0x68++; + if (menuState_8c1bc7a8.logo_timer_0x68 < 5) { + return; + } + + LOG_INFO(("[VM_MENU] Initializing VM Select menu\n")); + + if (VmMenuUpdateVmusStatus_19550(init_saveNames_8c044d50, 3)) { + CHANGE_STATE(VM_MENU_STATE_FADE_IN); + + // Skip empty slots + for (slot = 0; var_vmuStatus_8c226048[slot] == VMU_STATUS_NOT_CONNECTED; slot++); + initCursorLerp_19788(slot); + + menuState_8c1bc7a8.pos.vmSelect.cursor_0x20 = menuState_8c1bc7a8.pos.vmSelect.cursorTarget_0x28; + swapMessageBoxFor_8c02aefc(init_vmuStatusMessages_8c044dc4[var_vmuStatus_8c226048[slot]]); + FUN_8c010d8a(); + snd_8c010cd6(0,0xe); + } else { + CHANGE_STATE(VM_MENU_STATE_VM_WARNING_FADE_IN); + task->field_0x08 = 0; + menuState_8c1bc7a8.field_0x3c = 0; + } + + push_fadein_8c022a9c(10); + return; + } + + // Fade In + case VM_MENU_STATE_FADE_IN: { + if (!isFading_8c226568) { + CHANGE_STATE(VM_MENU_STATE_IDLE); + } + + drawVmMenu_197c0(); + break; + } + + // Idle + case VM_MENU_STATE_IDLE: { + VmMenuUpdateVmusStatus_19550(init_saveNames_8c044d50, 3); + + if (!var_vmuStatus_8c226048[slot]) { + for (slot = 0; !var_vmuStatus_8c226048[slot]; slot++); + } else { + // If on upper row + if (slot < 4) { + // Move left + if (var_peripheral_8c1ba35c[0].press & PDD_DGT_KL) { + do { + if (--slot < 0) slot = 3; + } while (!var_vmuStatus_8c226048[slot]); + } + // Move right + else if (var_peripheral_8c1ba35c[0].press & PDD_DGT_KR) { + do { + if (++slot > 3) slot = 0; + } while (!var_vmuStatus_8c226048[slot]); + } + // Move down + else if (var_peripheral_8c1ba35c[0].press & PDD_DGT_KD) { + for (slot += 4; !var_vmuStatus_8c226048[slot]; slot++); + } + } + // Else, on lower row + else { + // Move left + if (var_peripheral_8c1ba35c[0].press & PDD_DGT_KL) { + do { + if (--slot < 4) slot = 8; + } while (!var_vmuStatus_8c226048[slot]); + } + // Move right + else if (var_peripheral_8c1ba35c[0].press & PDD_DGT_KR) { + do { + if (++slot > 8) slot = 8; + } while (!var_vmuStatus_8c226048[slot]); + } + // Move up + else if (var_peripheral_8c1ba35c[0].press & PDD_DGT_KU) { + int i; + for (i = 0; !var_vmuStatus_8c226048[i]; i++); + + if (i < 4) { + if (slot == 8) slot = 3; + else slot -= 4; + + for (; !var_vmuStatus_8c226048[slot]; ) { + slot--; + if (slot < 0) slot = 3; + } + + while (!var_vmuStatus_8c226048[slot]) { + if (--slot < 0) slot = 3; + } + } + } + } + + // If slot didn't change and A was pressed + if (slot == menuState_8c1bc7a8.field_0x38 + && (var_peripheral_8c1ba35c[0].press & PDD_DGT_TA)) + { + int status = var_vmuStatus_8c226048[slot]; + if ( + status == VMU_STATUS_SAVING_POSSIBLE + || status == VMU_STATUS_SAVE_EXISTS + || status == VMU_STATUS_SAVE_EXISTS_NO_SPACE) + { + sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 0, 0); + // Is this okay? + swapMessageBoxFor_8c02aefc("よろしいですか?"); + menuState_8c1bc7a8.selectedVmuSlot_0x6c = slot; + menuState_8c1bc7a8.bupInfo_0x78 = BupGetInfo_8c014bba(slot); + CHANGE_STATE(VM_MENU_STATE_CONFIRM); + } + else if (status == VMU_STATUS_PROCEED_WITHOUT_SAVING) { + sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 0, 0); + // You cannot save without setting a file. + // Proceed without saving? + swapMessageBoxFor_8c02aefc( + "ファイルを設定しないとセーブできません" + "このままゲームを開始してもよろしいですか?" + ); + CHANGE_STATE(VM_MENU_STATE_PROCEED_WITHOUT_SAVING); + } + else { + sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 2, 0); + } + + menuState_8c1bc7a8.field_0x3c = 0; + } + } + + // If selection changed + if (slot != menuState_8c1bc7a8.field_0x38) { + sdMidiPlay(var_midiHandles_8c0fcd28[0], 1, 3, 0); + initCursorLerp_19788(slot); + CHANGE_STATE(VM_MENU_STATE_CURSOR_ANIMATING); + swapMessageBoxFor_8c02aefc(init_vmuStatusMessages_8c044dc4[var_vmuStatus_8c226048[slot]]); + } + + drawVmMenu_197c0(); + menuTextboxText_8c02af1c(0x20); + //menuState_8c1bc7a8.field_0x38 = slot; + break; + } + + /* Cursor animating */ + case VM_MENU_STATE_CURSOR_ANIMATING: { + if (interpolated_8c016d2c()) { + CHANGE_STATE(VM_MENU_STATE_IDLE); + swapMessageBoxFor_8c02aefc(init_vmuStatusMessages_8c044dc4[var_vmuStatus_8c226048[slot]]); + } + + drawVmMenu_197c0(); + menuTextboxText_8c02af1c(0x20); + //menuState_8c1bc7a8.field_0x38 = slot; + break; + } + + /* Confirm */ + case VM_MENU_STATE_CONFIRM: { + int promptResult = promptHandleBinary_16caa(&menuState_8c1bc7a8.field_0x3c); + if (promptResult == 1) { + var_selectedVm_8c1ba34c = menuState_8c1bc7a8.selectedVmuSlot_0x6c; + CHANGE_STATE(VM_MENU_STATE_CONFIRM_FADE_OUT_TO_MAIN_MENU); + push_fadeout_8c022b60(10); + } else if (promptResult == 2) { + swapMessageBoxFor_8c02aefc(init_vmuStatusMessages_8c044dc4[var_vmuStatus_8c226048[slot]]); + CHANGE_STATE(VM_MENU_STATE_IDLE); + } + + drawSprite_8c014f54( + &menuState_8c1bc7a8.resourceGroupA_0x00, + menuState_8c1bc7a8.field_0x3c + 2, + 228.0, + 304.0, + -5.0 + ); + drawVmMenu_197c0(); + menuTextboxText_8c02af1c(0xff); + break; + } + + // Proceed without saving? + case VM_MENU_STATE_PROCEED_WITHOUT_SAVING: { + int promptResult = promptHandleBinary_16caa(&menuState_8c1bc7a8.field_0x3c); + if (promptResult == 1) { + var_selectedVm_8c1ba34c = -1; + FUN_8c01895e(); + CHANGE_STATE(VM_MENU_STATE_FADE_OUT); + FUN_8c010bae(0); + FUN_8c010bae(1); + push_fadeout_8c022b60(10); + } else if (promptResult == 2) { + swapMessageBoxFor_8c02aefc(init_vmuStatusMessages_8c044dc4[var_vmuStatus_8c226048[slot]]); + slot = 8; + CHANGE_STATE(VM_MENU_STATE_IDLE); + } + + drawSprite_8c014f54( + &menuState_8c1bc7a8.resourceGroupA_0x00, + menuState_8c1bc7a8.field_0x3c + 2, + 228.0, + 304.0, + -5.0 + ); + drawVmMenu_197c0(); + menuTextboxText_8c02af1c(0xff); + break; + } + + // VM Warning Fade In + case VM_MENU_STATE_VM_WARNING_FADE_IN: { + if (!isFading_8c226568) { + CHANGE_STATE(VM_MENU_STATE_VM_WARNING); + } + DrawVmWarning_19852(); + break; + } + + // VM Warning + case VM_MENU_STATE_VM_WARNING: { + int substate = task->field_0x08; + switch (task->field_0x08) { + // Idle + case 0: { + if (!VmMenuUpdateVmusStatus_19550(init_saveNames_8c044d50, 3)) { + int promptResult = promptHandleBinary_16caa(&menuState_8c1bc7a8.field_0x3c); + if (promptResult == 1) { + var_selectedVm_8c1ba34c = -1; + FUN_8c01895e(); + task->field_0x08 = 2; + push_fadeout_8c022b60(10); + } else if (promptResult == 2) { + for (slot = 0; !var_vmuStatus_8c226048[slot]; slot++); + initCursorLerp_19788(slot); + menuState_8c1bc7a8.pos.vmSelect.cursor_0x20 = menuState_8c1bc7a8.pos.vmSelect.cursorTarget_0x28; + swapMessageBoxFor_8c02aefc(init_vmuStatusMessages_8c044dc4[var_vmuStatus_8c226048[slot]]); + task->field_0x08 = 3; + push_fadeout_8c022b60(10); + } + } + // VM inserted + else { + task->field_0x08 = 1; + push_fadeout_8c022b60(10); + } + + break; + } + + // VM Inserted Fade out + case 1: { + if (!isFading_8c226568) { + menuState_8c1bc7a8.logo_timer_0x68 = 10; + CHANGE_STATE(VM_MENU_STATE_INIT); + return; + } + break; + } + + // VM Warning Fade out to Main Menu + case 2: { + if (!isFading_8c226568) { + switchToMainMenuTask_8c01a09a(task); + return; + } + break; + } + + // VM Warning Fade out to VM Select + case 3: { + if (!isFading_8c226568) { + CHANGE_STATE(VM_MENU_STATE_FADE_IN_FROM_VM_WARNING); + return; + } + break; + } + } + + DrawVmWarning_19852(); + return; + } + + // Confirm Fade Out to Main Menu + case VM_MENU_STATE_CONFIRM_FADE_OUT_TO_MAIN_MENU: { + if (!isFading_8c226568) { + FUN_8c019334(task); + return; + } + + drawSprite_8c014f54( + &menuState_8c1bc7a8.resourceGroupA_0x00, + menuState_8c1bc7a8.field_0x3c + 2, + 228.0, + 304.0, + -5.0 + ); + + drawVmMenu_197c0(); + //menuState_8c1bc7a8.field_0x38 = slot; + break; + } + + // Fade out + case VM_MENU_STATE_FADE_OUT: { + if (isFading_8c226568) { + break; + } + if (init_8c03bd80) return; + switchToMainMenuTask_8c01a09a(task); + return; + } + + // VM Warning Fade In to VM Select + case VM_MENU_STATE_FADE_IN_FROM_VM_WARNING: { + if (!isFading_8c226568) { + CHANGE_STATE(VM_MENU_STATE_IDLE); + } + drawVmMenu_197c0(); + } + } + + menuState_8c1bc7a8.field_0x38 = slot; +} + +/* Tested */ +void VmMenuSwitchFromTask_19e44(Task *task) +{ + setTaskAction_8c014b3e(task, VmMenuTask_198a0); + menuState_8c1bc7a8.state_0x18 = VM_MENU_STATE_INIT; + menuState_8c1bc7a8.field_0x38 = 0; + menuState_8c1bc7a8.logo_timer_0x68 = 0; +} diff --git a/src/0193c8_vm_menu.h b/src/0193c8_vm_menu.h new file mode 100644 index 0000000..ec64769 --- /dev/null +++ b/src/0193c8_vm_menu.h @@ -0,0 +1,14 @@ +#ifndef _VM_MENU_H +#define _VM_MENU_H + +#include "sg_xpt.h" +#include "014a9c_tasks.h" + +void VmMenuMountVms_1940e(); +void VmMenuUnmountVms_194de(); +void VmMenuFreeAndClear_19504(void); +int VmMenuUpdateVmusStatus_19550(char **saveNames, Uint16 blocks); +void VmMenuUpdateVmuStatus_1967c(Sint32 drive, char *saveName, Uint16 blocks); +void VmMenuSwitchFromTask_19e44(Task *task); + +#endif // _VM_MENU_H diff --git a/src/asm/_012101_data.src b/src/asm/012101_data.src similarity index 92% rename from src/asm/_012101_data.src rename to src/asm/012101_data.src index ac6aad1..7c69329 100644 --- a/src/asm/_012101_data.src +++ b/src/asm/012101_data.src @@ -2,1119 +2,36 @@ .IMPORT _init_8c04df38 .IMPORT _init_8c04e988 .IMPORT _var_texname_8c18acf8 - .IMPORT _const_8c033358 - .EXPORT _init_8c03bf40 - .EXPORT _init_texlist_8c03bf44 - .EXPORT _init_8c03bf4c - .EXPORT _init_8c03bf8c - .EXPORT _init_8c03bfa8 - .EXPORT _init_8c03bfac - .EXPORT _init_8c03c008 - .EXPORT _init_8c03c064 - .EXPORT _init_8c03c0c0 - .EXPORT _init_8c03c0d0 - .EXPORT _init_8c03c0ed - .EXPORT _init_8c03c10e - .EXPORT _init_8c03c118 - .EXPORT _init_8c03c11c - .EXPORT _init_8c03c120 - .EXPORT _init_8c03c126 - .EXPORT _init_8c03c130 - .EXPORT _init_8c03c136 - .EXPORT _init_8c03c13a - .EXPORT _init_8c03c140 - .EXPORT _init_8c03c144 - .EXPORT _init_8c03c148 - .EXPORT _init_8c03c14e - .EXPORT _init_8c03c152 - .EXPORT _init_8c03c158 - .EXPORT _init_8c03c15c - .EXPORT _init_8c03c160 - .EXPORT _init_8c03c164 - .EXPORT _init_8c03c168 - .EXPORT _init_8c03c16c - .EXPORT _init_8c03c170 - .EXPORT _init_8c03c174 - .EXPORT _init_8c03c178 - .EXPORT _init_8c03c17c - .EXPORT _init_8c03c17e - .EXPORT _init_8c03c186 - .EXPORT _init_8c03c18e - .EXPORT _init_8c03c196 - .EXPORT _init_8c03c19e - .EXPORT _init_8c03c1a6 - .EXPORT _init_8c03c1ae - .EXPORT _init_8c03c1b6 - .EXPORT _init_8c03c1f8 - .EXPORT _init_8c03c208 - .EXPORT _init_8c03c218 - .EXPORT _init_8c03c228 - .EXPORT _init_8c03c238 - .EXPORT _init_8c03c248 - .EXPORT _init_8c03c258 - .EXPORT _init_8c03c268 - .EXPORT _init_8c03c278 - .EXPORT _init_8c03c28c - .EXPORT _init_8c03c2a0 - .EXPORT _init_8c03c2b4 - .EXPORT _init_8c03c33c - .EXPORT _init_8c03c3c4 - .EXPORT _init_8c03c44c - .EXPORT _init_8c03c460 - .EXPORT _init_8c03c474 - .EXPORT _init_8c03c484 - .EXPORT _init_8c03c494 - .EXPORT _init_8c03c4a4 - .EXPORT _init_8c03c4b4 - .EXPORT _init_8c03c4d4 - .EXPORT _init_8c03c4f4 - .EXPORT _init_8c03c504 - .EXPORT _init_8c03c52c - .EXPORT _init_8c03c53c - .EXPORT _init_8c03c54c - .EXPORT _init_8c03c55c - .EXPORT _init_8c03c56c - .EXPORT _init_8c03c57c - .EXPORT _init_8c03c58c - .EXPORT _init_8c03c9ac - .EXPORT _init_8c03cdcc - .EXPORT _init_8c03d0c4 - .EXPORT _init_8c03d1ec - .EXPORT _init_8c03d254 - .EXPORT _init_8c03d2bc - .EXPORT _init_8c03d324 - .EXPORT _init_8c03d38c - .EXPORT _init_8c03d3f4 - .EXPORT _init_8c03d45c - .EXPORT _init_8c03d4c4 - .EXPORT _init_8c03d52c - .EXPORT _init_8c03d594 - .EXPORT _init_8c03d5f0 - .EXPORT _init_8c03d64c - .EXPORT _init_8c03d6a8 - .EXPORT _init_8c03d6b8 - .EXPORT _init_8c03d6c0 - .EXPORT _init_8c03d6c4 - .EXPORT _init_8c03d6cc - .EXPORT _init_8c03d6de - .EXPORT _init_8c03d6f0 - .EXPORT _init_8c03d6f6 - .EXPORT _init_8c03d6fa - .EXPORT _init_8c03d704 - .EXPORT _init_8c03d708 - .EXPORT _init_8c03d70c - .EXPORT _init_8c03d714 - .EXPORT _init_8c03d71a - .EXPORT _init_8c03d71e - .EXPORT _init_8c03d722 - .EXPORT _init_8c03d726 - .EXPORT _init_8c03d72e - .EXPORT _init_8c03d732 - .EXPORT _init_8c03d736 - .EXPORT _init_8c03d73c - .EXPORT _init_8c03d742 - .EXPORT _init_8c03d748 - .EXPORT _init_8c03d74e - .EXPORT _init_8c03d750 - .EXPORT _init_8c03d758 - .EXPORT _init_8c03d760 - .EXPORT _init_8c03d76c - .EXPORT _init_8c03d774 - .EXPORT _init_8c03d77c - .EXPORT _init_8c03d784 - .EXPORT _init_8c03d78c - .EXPORT _init_8c03d794 - .EXPORT _init_8c03d79c - .EXPORT _init_8c03d7a2 - .EXPORT _init_8c03d7ac - .EXPORT _init_8c03d7b3 - .EXPORT _init_8c03d7b9 - .EXPORT _init_8c03d7be - .EXPORT _init_8c03d7c2 - .EXPORT _init_8c03d7c8 - .EXPORT _init_8c03d7d8 - .EXPORT _init_8c03d7e8 - .EXPORT _init_8c03d7f8 - .EXPORT _init_8c03d808 - .EXPORT _init_8c03d818 - .EXPORT _init_8c03d828 - .EXPORT _init_8c03d838 - .EXPORT _init_8c03d848 - .EXPORT _init_8c03d8d0 - .EXPORT _init_8c03d958 - .EXPORT _init_8c03d9e0 - .EXPORT _init_8c03d9f4 - .EXPORT _init_8c03da08 - .EXPORT _init_8c03da1c - .EXPORT _init_8c03da2c - .EXPORT _init_8c03da3c - .EXPORT _init_8c03da4c - .EXPORT _init_8c03da5c - .EXPORT _init_8c03da6c - .EXPORT _init_8c03da7c - .EXPORT _init_8c03da8c - .EXPORT _init_8c03da9c - .EXPORT _init_8c03daac - .EXPORT _init_8c03dabc - .EXPORT _init_8c03dacc - .EXPORT _init_8c03dadc - .EXPORT _init_8c03daec - .EXPORT _init_8c03dafc - .EXPORT _init_8c03db0c - .EXPORT _init_8c03db20 - .EXPORT _init_8c03db34 - .EXPORT _init_8c03db48 - .EXPORT _init_8c03db5c - .EXPORT _init_8c03db70 - .EXPORT _init_8c03db84 - .EXPORT _init_8c03db98 - .EXPORT _init_8c03dbac - .EXPORT _init_8c03dbbc - .EXPORT _init_8c03dbcc - .EXPORT _init_8c03dbdc - .EXPORT _init_8c03dbec - .EXPORT _init_8c03dbfc - .EXPORT _init_8c03dc0c - .EXPORT _init_8c03dc1c - .EXPORT _init_8c03dc2c - .EXPORT _init_8c03dc3c - .EXPORT _init_8c03dc4c - .EXPORT _init_8c03dc5c - .EXPORT _init_8c03dc6c - .EXPORT _init_8c03dc7c - .EXPORT _init_8c03dc8c - .EXPORT _init_8c03dc9c - .EXPORT _init_8c03dcac - .EXPORT _init_8c03dcbc - .EXPORT _init_8c03dccc - .EXPORT _init_8c03dcdc - .EXPORT _init_8c03dcf0 - .EXPORT _init_8c03dd04 - .EXPORT _init_8c03dd18 - .EXPORT _init_8c03dd2c - .EXPORT _init_8c03dd3c - .EXPORT _init_8c03dd4c - .EXPORT _init_8c03dd94 - .EXPORT _init_8c03ddec - .EXPORT _init_8c03de24 - .EXPORT _init_8c03de5c - .EXPORT _init_8c03de94 - .EXPORT _init_8c03deac - .EXPORT _init_8c03debc - .EXPORT _init_8c03dee4 - .EXPORT _init_8c03df2c - .EXPORT _init_8c03df6c - .EXPORT _init_8c03dfa4 - .EXPORT _init_8c03dff4 - .EXPORT _init_8c03e054 - .EXPORT _init_8c03e06c - .EXPORT _init_8c03e07c - .EXPORT _init_8c03e0ac - .EXPORT _init_8c03e0fc - .EXPORT _init_8c03e13c - .EXPORT _init_8c03e16c - .EXPORT _init_8c03e1ac - .EXPORT _init_8c03e5cc - .EXPORT _init_8c03e9ec - .EXPORT _init_8c03ee0c - .EXPORT _init_8c03f22c - .EXPORT _init_8c03f64c - .EXPORT _init_8c03fa6c - .EXPORT _init_8c03fe8c - .EXPORT _init_8c0402ac - .EXPORT _init_8c0406cc - .EXPORT _init_8c040734 - .EXPORT _init_8c040798 - .EXPORT _init_8c04079c - .EXPORT _init_8c040804 - .EXPORT _init_8c04086c - .EXPORT _init_8c0408c4 - .EXPORT _init_8c0408d4 - .EXPORT _init_8c04093c - .EXPORT _init_8c0409a4 - .EXPORT _init_8c040a0c - .EXPORT _init_8c040a74 - .EXPORT _init_8c040ab4 - .EXPORT _init_8c040af4 - .EXPORT _init_8c040b34 - .EXPORT _init_8c040b44 - .EXPORT _init_8c040b50 - .EXPORT _init_8c040b54 - .EXPORT _init_8c040b64 - .EXPORT _init_8c040b68 - .EXPORT _init_8c040b78 - .EXPORT _init_8c040b7e - .EXPORT _init_8c040b82 - .EXPORT _init_8c040b86 - .EXPORT _init_8c040b8c - .EXPORT _init_8c040b94 - .EXPORT _init_8c040b9c - .EXPORT _init_8c040ba2 - .EXPORT _init_8c040ba6 - .EXPORT _init_8c040bac - .EXPORT _init_8c040bb2 - .EXPORT _init_8c040bb6 - .EXPORT _init_8c040bb8 - .EXPORT _init_8c040bd8 - .EXPORT _init_8c040be0 - .EXPORT _init_8c040be8 - .EXPORT _init_8c040c24 - .EXPORT _init_8c040c34 - .EXPORT _init_8c040c44 - .EXPORT _init_8c040c54 - .EXPORT _init_8c040c64 - .EXPORT _init_8c040c78 - .EXPORT _init_8c040c8c - .EXPORT _init_8c040ca0 - .EXPORT _init_8c040cc0 - .EXPORT _init_8c040d28 - .EXPORT _init_8c040db0 - .EXPORT _init_8c040e38 - .EXPORT _init_8c040e48 - .EXPORT _init_8c040e58 - .EXPORT _init_8c040e68 - .EXPORT _init_8c040e78 - .EXPORT _init_8c040e88 - .EXPORT _init_8c040e98 - .EXPORT _init_8c040ea8 - .EXPORT _init_8c040eb8 - .EXPORT _init_8c040ec8 - .EXPORT _init_8c040ed8 - .EXPORT _init_8c040ee8 - .EXPORT _init_8c040ef8 - .EXPORT _init_8c040f08 - .EXPORT _init_8c040f18 - .EXPORT _init_8c040f28 - .EXPORT _init_8c040f38 - .EXPORT _init_8c040f48 - .EXPORT _init_8c040f58 - .EXPORT _init_8c040f68 - .EXPORT _init_8c040f78 - .EXPORT _init_8c040f88 - .EXPORT _init_8c040f98 - .EXPORT _init_8c040fa8 - .EXPORT _init_8c040fb8 - .EXPORT _init_8c040fc8 - .EXPORT _init_8c040fd8 - .EXPORT _init_8c040fe8 - .EXPORT _init_8c040ff8 - .EXPORT _init_8c041008 - .EXPORT _init_8c041018 - .EXPORT _init_8c041028 - .EXPORT _init_8c041038 - .EXPORT _init_8c04104c - .EXPORT _init_8c041060 - .EXPORT _init_8c041074 - .EXPORT _init_8c041088 - .EXPORT _init_8c04109c - .EXPORT _init_8c0410b0 - .EXPORT _init_8c0410c4 - .EXPORT _init_8c0410d8 - .EXPORT _init_8c0410ec - .EXPORT _init_8c041100 - .EXPORT _init_8c041114 - .EXPORT _init_8c041128 - .EXPORT _init_8c04113c - .EXPORT _init_8c0411ac - .EXPORT _init_8c0411ec - .EXPORT _init_8c04122c - .EXPORT _init_8c041264 - .EXPORT _init_8c0412cc - .EXPORT _init_8c04130c - .EXPORT _init_8c04134c - .EXPORT _init_8c041384 - .EXPORT _init_8c041670 - .EXPORT _init_8c04195c - .EXPORT _init_8c041c48 - .EXPORT _init_8c041cb0 - .EXPORT _init_8c041d18 - .EXPORT _init_8c041d80 - .EXPORT _init_8c041de8 - .EXPORT _init_8c041e50 - .EXPORT _init_8c041eb8 - .EXPORT _init_8c041f20 - .EXPORT _init_8c041f88 - .EXPORT _init_8c041ff0 - .EXPORT _init_8c042000 - .EXPORT _init_8c042008 - .EXPORT _init_8c042010 - .EXPORT _init_8c042094 - .EXPORT _init_8c0420fc - .EXPORT _init_8c04210c - .EXPORT _init_8c042114 - .EXPORT _init_8c04211c - .EXPORT _init_8c0421a0 - .EXPORT _init_8c042208 - .EXPORT _init_8c042218 - .EXPORT _init_8c042220 - .EXPORT _init_8c042228 - .EXPORT _init_8c0422ac - .EXPORT _init_8c042314 - .EXPORT _init_8c042324 - .EXPORT _init_8c04232c - .EXPORT _init_8c042334 - .EXPORT _init_8c0423b8 - .EXPORT _init_8c042420 - .EXPORT _init_8c042430 - .EXPORT _init_8c042438 - .EXPORT _init_8c042440 - .EXPORT _init_8c0424c4 - .EXPORT _init_8c04252c - .EXPORT _init_8c04253c - .EXPORT _init_8c042544 - .EXPORT _init_8c04254c - .EXPORT _init_8c0425d0 - .EXPORT _init_8c042638 - .EXPORT _init_8c042648 - .EXPORT _init_8c042650 - .EXPORT _init_8c042658 - .EXPORT _init_8c0426dc - .EXPORT _init_8c042744 - .EXPORT _init_8c042754 - .EXPORT _init_8c04275c - .EXPORT _init_8c042768 - .EXPORT _init_8c042818 - .EXPORT _init_8c042880 - .EXPORT _init_8c04288a - .EXPORT _init_8c042890 - .EXPORT _init_8c0428a0 - .EXPORT _init_8c0428a8 - .EXPORT _init_8c0428b0 - .EXPORT _init_8c042934 - .EXPORT _init_8c04299c - .EXPORT _init_8c0429a4 - .EXPORT _init_8c0429a8 - .EXPORT _init_8c0429ac - .EXPORT _init_8c0429b0 - .EXPORT _init_8c0429b4 - .EXPORT _init_8c0429c4 - .EXPORT _init_8c0429cc - .EXPORT _init_8c0429e4 - .EXPORT _init_8c042aec - .EXPORT _init_8c042b54 - .EXPORT _init_8c042b5a - .EXPORT _init_8c042b5e - .EXPORT _init_8c042b62 - .EXPORT _init_8c042b6a - .EXPORT _init_8c042b70 - .EXPORT _init_8c042b80 - .EXPORT _init_8c042b90 - .EXPORT _init_8c042b98 - .EXPORT _init_8c042ba0 - .EXPORT _init_8c042bb8 - .EXPORT _init_8c042cc0 - .EXPORT _init_8c042d28 - .EXPORT _init_8c042d38 - .EXPORT _init_8c042d48 - .EXPORT _init_8c042d58 - .EXPORT _init_8c042d60 - .EXPORT _init_8c042d68 - .EXPORT _init_8c042d70 - .EXPORT _init_8c042efc - .EXPORT _init_8c0430e0 - .EXPORT _init_8c043190 - .EXPORT _init_8c0431f8 - .EXPORT _init_8c043260 - .EXPORT _init_8c0432c8 - .EXPORT _init_8c0432d8 - .EXPORT _init_8c0432e8 - .EXPORT _init_8c0432f8 - .EXPORT _init_8c043308 - .EXPORT _init_8c043318 - .EXPORT _init_8c043320 - .EXPORT _init_8c043328 - .EXPORT _init_8c043330 - .EXPORT _init_8c043338 - .EXPORT _init_8c043340 - .EXPORT _init_8c043474 - .EXPORT _init_8c043524 - .EXPORT _init_8c043600 - .EXPORT _init_8c0436b0 - .EXPORT _init_8c043760 - .EXPORT _init_8c0437c8 - .EXPORT _init_8c043830 - .EXPORT _init_8c043898 - .EXPORT _init_8c043900 - .EXPORT _init_8c043968 - .EXPORT _init_8c043978 - .EXPORT _init_8c043988 - .EXPORT _init_8c043990 - .EXPORT _init_8c043998 - .EXPORT _init_8c043acc - .EXPORT _init_8c043bd4 - .EXPORT _init_8c043c3c - .EXPORT _init_8c043ca4 - .EXPORT _init_8c043d64 - .EXPORT _init_8c043dc4 - .EXPORT _init_8c043dc8 - .EXPORT _init_8c043ecc - .EXPORT _init_8c043ed0 - .EXPORT _init_8c043fd4 - .EXPORT _init_8c043fd8 - .EXPORT _init_8c0440dc - .EXPORT _init_8c04410c - .EXPORT s_DUMMY_8c03346c - .EXPORT DAT_8c033474 - .EXPORT s_front_njd_8c033478 - .EXPORT s_front_pvm_8c033484 - .EXPORT s_syanai_njd_8c033490 - .EXPORT s_syanai_pvm_8c03349c - .EXPORT s_mark_pvm_8c0334a8 - .EXPORT s_busstop_pvm_8c0334b4 - .EXPORT s_SD_COMMON_8c0334c0 - .EXPORT s_SD_PVR_8c0334cc - .EXPORT s_SN_COMMON_8c0334d4 - .EXPORT s_SN_PVR_8c0334e0 - .EXPORT s_WD_COMMON_8c0334e8 - .EXPORT s_WD_PVR_8c0334f4 - .EXPORT s_WN_COMMON_8c0334fc - .EXPORT s_WN_PVR_8c033508 - .EXPORT s_OD_COMMON_8c033510 - .EXPORT s_OD_PVR_8c03351c - .EXPORT s_ON_COMMON_8c033524 - .EXPORT s_ON_PVR_8c033530 - .EXPORT _const_8c033538 - .EXPORT _const_8c033544 - .EXPORT _const_8c033554 - .EXPORT _const_8c033560 - .EXPORT _const_8c033578 - .EXPORT _const_8c033588 - .EXPORT _const_8c033598 - .EXPORT _const_8c0335a4 - .EXPORT _const_8c0335bc - .EXPORT _const_8c0335cc - .EXPORT _const_8c0335dc - .EXPORT _const_8c0335e8 - .EXPORT _const_8c033600 - .EXPORT _const_8c03360c - .EXPORT _const_8c03361c - .EXPORT _const_8c033628 - .EXPORT _const_8c033640 - .EXPORT _const_8c033650 - .EXPORT _const_8c033660 - .EXPORT _const_8c03366c - .EXPORT _const_8c033684 - .EXPORT _const_8c033694 - .EXPORT _const_8c0336a4 - .EXPORT _const_8c0336b0 - .EXPORT _const_8c0336c8 - .EXPORT _const_8c0336d8 - .EXPORT _const_8c0336e8 - .EXPORT _const_8c0336f4 - .EXPORT _const_8c03370c - .EXPORT _const_8c03371c - .EXPORT _const_8c03372c - .EXPORT _const_8c033738 - .EXPORT _const_8c033750 - .EXPORT _const_8c033758 - .EXPORT _const_8c033760 - .EXPORT _const_8c033770 - .EXPORT _const_8c033784 - .EXPORT _const_8c033798 - .EXPORT _const_8c0337a8 - .EXPORT _const_8c0337b4 - .EXPORT _const_8c0337c4 - .EXPORT _const_8c0337d4 - .EXPORT _const_8c0337e4 - .EXPORT _const_8c0337f4 - .EXPORT _const_8c033804 - .EXPORT _const_8c033814 - .EXPORT _const_8c033824 - .EXPORT _const_8c033834 - .EXPORT _const_8c033844 - .EXPORT _const_8c033854 - .EXPORT _const_8c033860 - .EXPORT _const_8c03386c - .EXPORT _const_8c033870 - .EXPORT _const_8c03387c - .EXPORT _const_8c033888 - .EXPORT _const_8c033894 - .EXPORT _const_8c0338a0 - .EXPORT _const_8c0338b0 - .EXPORT _const_8c0338c0 - .EXPORT _const_8c0338d0 - .EXPORT _const_8c0338e0 - .EXPORT _const_8c0338f0 - .EXPORT _const_8c033900 - .EXPORT _const_8c033910 - .EXPORT _const_8c033920 - .EXPORT _const_8c033930 - .EXPORT _const_8c033940 - .EXPORT _const_8c033954 - .EXPORT _const_8c033968 - .EXPORT _const_8c03397c - .EXPORT _const_8c03398c - .EXPORT _const_8c03399c - .EXPORT _const_8c0339ac - .EXPORT _const_8c0339bc - .EXPORT _const_8c0339cc - .EXPORT _const_8c0339dc - .EXPORT _const_8c0339ec - .EXPORT _const_8c0339fc - .EXPORT _const_8c033a10 - .EXPORT _const_8c033a24 - .EXPORT _const_8c033a34 - .EXPORT _const_8c033a44 - .EXPORT _const_8c033a54 - .EXPORT _const_8c033a64 - .EXPORT _const_8c033a78 - .EXPORT _const_8c033a8c - .EXPORT _const_8c033a9c - .EXPORT _const_8c033aac - .EXPORT _const_8c033abc - .EXPORT _const_8c033ac8 - .EXPORT _const_8c033ad8 - .EXPORT _const_8c033af4 - .EXPORT _const_8c033b00 - .EXPORT _const_8c033b0c - .EXPORT _const_8c033b1c - .EXPORT _const_8c033b38 - .EXPORT _const_8c033b44 - .EXPORT _const_8c033b54 - .EXPORT _const_8c033b70 - .EXPORT _const_8c033b7c - .EXPORT _const_8c033b8c - .EXPORT _const_8c033ba8 - .EXPORT _const_8c033bb4 - .EXPORT _const_8c033bc4 - .EXPORT _const_8c033be0 - .EXPORT _const_8c033bec - .EXPORT _const_8c033bfc - .EXPORT _const_8c033c18 - .EXPORT _const_8c033c24 - .EXPORT _const_8c033c34 - .EXPORT _const_8c033c50 - .EXPORT _const_8c033c5c - .EXPORT _const_8c033c6c - .EXPORT _const_8c033c88 - .EXPORT _const_8c033c94 - .EXPORT _const_8c033ca0 - .EXPORT _const_8c033cac - .EXPORT _const_8c033cb8 - .EXPORT _const_8c033cc4 - .EXPORT _const_8c033cd0 - .EXPORT _const_8c033ce0 - .EXPORT _const_8c033cf0 - .EXPORT _const_8c033d00 - .EXPORT _const_8c033d10 - .EXPORT _const_8c033d20 - .EXPORT _const_8c033d30 - .EXPORT _const_8c033d40 - .EXPORT _const_8c033d50 - .EXPORT _const_8c033d60 - .EXPORT _const_8c033d70 - .EXPORT _const_8c033d80 - .EXPORT _const_8c033d90 - .EXPORT _const_8c033da0 - .EXPORT _const_8c033db0 - .EXPORT _const_8c033dc0 - .EXPORT _const_8c033dd0 - .EXPORT _const_8c033de0 - .EXPORT _const_8c033df0 - .EXPORT _const_8c033e00 - .EXPORT _const_8c033e10 - .EXPORT _const_8c033e20 - .EXPORT _const_8c033e30 - .EXPORT _const_8c033e40 - .EXPORT _const_8c033e50 - .EXPORT _const_8c033e60 - .EXPORT _const_8c033e70 - .EXPORT _const_8c033e80 - .EXPORT _const_8c033e90 - .EXPORT _const_8c033ea0 - .EXPORT _const_8c033eb0 - .EXPORT _const_8c033ec0 - .EXPORT _const_8c033ed0 - .EXPORT _const_8c033ee0 - .EXPORT _const_8c033ef0 - .EXPORT _const_8c033f00 - .EXPORT _const_8c033f10 - .EXPORT _const_8c033f20 - .EXPORT _const_8c033f2c - .EXPORT _const_8c033f38 - .EXPORT _const_8c033f44 - .EXPORT _const_8c033f54 - .EXPORT _const_8c033f64 - .EXPORT _const_8c033f74 - .EXPORT _const_8c033f84 - .EXPORT _const_8c033f94 - .EXPORT _const_8c033fa4 - .EXPORT _const_8c033fb0 - .EXPORT _const_8c033fbc - .EXPORT _const_8c033fc8 - .EXPORT _const_8c033fd8 - .EXPORT _const_8c033fe8 - .EXPORT _const_8c033ff8 - .EXPORT _const_8c034008 - .EXPORT _const_8c034018 - .EXPORT _const_8c034028 - .EXPORT _const_8c034038 - .EXPORT _const_8c034048 - .EXPORT _const_8c034058 - .EXPORT _const_8c034068 - .EXPORT _const_8c034078 - .EXPORT _const_8c034088 - .EXPORT _const_8c034098 - .EXPORT _const_8c0340a8 - .EXPORT _const_8c0340b8 - .EXPORT _const_8c0340c8 - .EXPORT _const_8c0340d8 - .EXPORT _const_8c0340ec - .EXPORT _const_8c034100 - .EXPORT _const_8c034110 - .EXPORT _const_8c034124 - .EXPORT _const_8c034138 - .EXPORT _const_8c03414c - .EXPORT _const_8c03415c - .EXPORT _const_8c03416c - .EXPORT _const_8c03417c - .EXPORT _const_8c03418c - .EXPORT _const_8c0341a0 - .EXPORT _const_8c0341b4 - .EXPORT _const_8c0341c8 - .EXPORT _const_8c0341d8 - .EXPORT _const_8c0341e8 - .EXPORT _const_8c0341f8 - .EXPORT _const_8c034208 - .EXPORT _const_8c034218 - .EXPORT _const_8c034228 - .EXPORT _const_8c034238 - .EXPORT _const_8c034248 - .EXPORT _const_8c034258 - .EXPORT _const_8c034268 - .EXPORT _const_8c034278 - .EXPORT _const_8c034288 - .EXPORT _const_8c034298 - .EXPORT _const_8c0342a8 - .EXPORT _const_8c0342b8 - .EXPORT _const_8c0342c8 - .EXPORT _const_8c0342d8 - .EXPORT _const_8c0342e8 - .EXPORT _const_8c0342fc - .EXPORT _const_8c034310 - .EXPORT _const_8c034324 - .EXPORT _const_8c034334 - .EXPORT _const_8c034344 - .EXPORT _const_8c034350 - .EXPORT _const_8c034360 - .EXPORT _const_8c034370 - .EXPORT _const_8c034380 - .EXPORT _const_8c034390 - .EXPORT _const_8c0343a4 - .EXPORT _const_8c0343b8 - .EXPORT _const_8c0343c8 - .EXPORT _const_8c0343d8 - .EXPORT _const_8c0343e8 - .EXPORT _const_8c0343fc - .EXPORT _const_8c034410 - .EXPORT _const_8c034420 - .EXPORT _const_8c034430 - .EXPORT _const_8c034440 - .EXPORT _const_8c03444c - .EXPORT _const_8c03445c - .EXPORT _const_8c034474 - .EXPORT _const_8c03448c - .EXPORT _const_8c034498 - .EXPORT _const_8c0344a8 - .EXPORT _const_8c0344c0 - .EXPORT _const_8c0344d8 - .EXPORT _const_8c0344e4 - .EXPORT _const_8c0344f4 - .EXPORT _const_8c03450c - .EXPORT _const_8c034524 - .EXPORT _const_8c034530 - .EXPORT _const_8c034540 - .EXPORT _const_8c034558 - .EXPORT _const_8c034570 - .EXPORT _const_8c034580 - .EXPORT _const_8c034590 - .EXPORT _const_8c0345a0 - .EXPORT _const_8c0345b0 - .EXPORT _const_8c0345c0 - .EXPORT _const_8c0345d0 - .EXPORT _const_8c0345e0 - .EXPORT _const_8c0345f0 - .EXPORT _const_8c034600 - .EXPORT _const_8c034610 - .EXPORT _const_8c034620 - .EXPORT _const_8c034630 - .EXPORT _const_8c034640 - .EXPORT _const_8c034650 - .EXPORT _const_8c034660 - .EXPORT _const_8c034670 - .EXPORT _const_8c034680 - .EXPORT _const_8c034690 - .EXPORT _const_8c0346a0 - .EXPORT _const_8c0346b0 - .EXPORT _const_8c0346c0 - .EXPORT _const_8c0346d0 - .EXPORT _const_8c0346e0 - .EXPORT _const_8c0346f0 - .EXPORT _const_8c034700 - .EXPORT _const_8c034710 - .EXPORT _const_8c034720 - .EXPORT _const_8c034730 - .EXPORT _const_8c034740 - .EXPORT _const_8c034750 - .EXPORT _const_8c034760 - .EXPORT _const_8c034770 - .EXPORT _const_8c034780 - .EXPORT _const_8c034790 - .EXPORT _const_8c0347a0 - .EXPORT _const_8c0347b0 - .EXPORT _const_8c0347c0 - .EXPORT _const_8c0347d0 - .EXPORT _const_8c0347e0 - .EXPORT _const_8c0347f0 - .EXPORT _const_8c034800 - .EXPORT _const_8c034810 - .EXPORT _const_8c034820 - .EXPORT _const_8c034830 - .EXPORT _const_8c034840 - .EXPORT _const_8c034850 - .EXPORT _const_8c034860 - .EXPORT _const_8c034870 - .EXPORT _const_8c034880 - .EXPORT _const_8c034890 - .EXPORT _const_8c0348a0 - .EXPORT _const_8c0348b0 - .EXPORT _const_8c0348c0 - .EXPORT _const_8c0348d0 - .EXPORT _const_8c0348e0 - .EXPORT _const_8c0348f0 - .EXPORT _const_8c034900 - .EXPORT _const_8c034910 - .EXPORT _const_8c034920 - .EXPORT _const_8c034930 - .EXPORT _const_8c034940 - .EXPORT _const_8c034950 - .EXPORT _const_8c034960 - .EXPORT _const_8c034970 - .EXPORT _const_8c034980 - .EXPORT _const_8c034990 - .EXPORT _const_8c0349a0 - .EXPORT _const_8c0349b0 - .EXPORT _const_8c0349c0 - .EXPORT _const_8c0349d0 - .EXPORT _const_8c0349e0 - .EXPORT _const_8c0349f0 - .EXPORT _const_8c034a00 - .EXPORT _const_8c034a10 - .EXPORT _const_8c034a20 - .EXPORT _const_8c034a30 - .EXPORT _const_8c034a40 - .EXPORT _const_8c034a50 - .EXPORT _const_8c034a64 - .EXPORT _const_8c034a78 - .EXPORT _const_8c034a8c - .EXPORT _const_8c034a9c - .EXPORT _const_8c034aac - .EXPORT _const_8c034ab8 - .EXPORT _const_8c034ac8 - .EXPORT _const_8c034ad8 - .EXPORT _const_8c034ae8 - .EXPORT _const_8c034af8 - .EXPORT _const_8c034b0c - .EXPORT _const_8c034b20 - .EXPORT _const_8c034b30 - .EXPORT _const_8c034b40 - .EXPORT _const_8c034b50 - .EXPORT _const_8c034b64 - .EXPORT _const_8c034b78 - .EXPORT _const_8c034b88 - .EXPORT _const_8c034b98 - .EXPORT _const_8c034ba8 - .EXPORT _const_8c034bb8 - .EXPORT _const_8c034bc4 - .EXPORT _const_8c034bd4 - .EXPORT _const_8c034be0 - .EXPORT _const_8c034bf8 - .EXPORT _const_8c034c0c - .EXPORT _const_8c034c1c - .EXPORT _const_8c034c30 - .EXPORT _const_8c034c44 - .EXPORT _const_8c034c58 - .EXPORT _const_8c034c64 - .EXPORT _const_8c034c74 - .EXPORT _const_8c034c80 - .EXPORT _const_8c034c98 - .EXPORT _const_8c034ca8 - .EXPORT _const_8c034cb4 - .EXPORT _const_8c034cc4 - .EXPORT _const_8c034cd0 - .EXPORT _const_8c034ce8 - .EXPORT _const_8c034cfc - .EXPORT _const_8c034d08 - .EXPORT _const_8c034d18 - .EXPORT _const_8c034d38 - .EXPORT _const_8c034d4c - .EXPORT _const_8c034d5c - .EXPORT _const_8c034d70 - .EXPORT _const_8c034d84 - .EXPORT _const_8c034d98 - .EXPORT _const_8c034da4 - .EXPORT _const_8c034db4 - .EXPORT _const_8c034dd4 - .EXPORT _const_8c034de8 - .EXPORT _const_8c034dfc - .EXPORT _const_8c034e08 - .EXPORT _const_8c034e18 - .EXPORT _const_8c034e30 - .EXPORT _const_8c034e48 - .EXPORT _const_8c034e5c - .EXPORT _const_8c034e6c - .EXPORT _const_8c034e80 - .EXPORT _const_8c034e94 - .EXPORT _const_8c034ea8 - .EXPORT _const_8c034eb4 - .EXPORT _const_8c034ec4 - .EXPORT _const_8c034ee4 - .EXPORT _const_8c034ef8 - .EXPORT _const_8c034f04 - .EXPORT _const_8c034f14 - .EXPORT _const_8c034f2c - .EXPORT _const_8c034f44 - .EXPORT _const_8c034f58 - .EXPORT _const_8c034f68 - .EXPORT _const_8c034f7c - .EXPORT _const_8c034f90 - .EXPORT _const_8c034f9c - .EXPORT _const_8c034fac - .EXPORT _const_8c034fc4 - .EXPORT _const_8c034fdc - .EXPORT _const_8c034fe8 - .EXPORT _const_8c034ff8 - .EXPORT _const_8c035000 - .EXPORT _const_8c035018 - .EXPORT _const_8c03502c - .EXPORT _const_8c03503c - .EXPORT _const_8c03504c - .EXPORT _const_8c03506c - .EXPORT _const_8c03507c - .EXPORT _const_8c03508c - .EXPORT _const_8c0350ac - .EXPORT _const_8c0350b8 - .EXPORT _const_8c0350c8 - .EXPORT _const_8c0350e8 - .EXPORT _const_8c0350f4 - .EXPORT _const_8c035104 - .EXPORT _const_8c035124 - .EXPORT _const_8c035130 - .EXPORT _const_8c035140 - .EXPORT _const_8c035160 - .EXPORT _const_8c035174 - .EXPORT _const_8c035180 - .EXPORT _const_8c035190 - .EXPORT _const_8c0351a8 - .EXPORT _const_8c0351c0 - .EXPORT _const_8c0351cc - .EXPORT _const_8c0351dc - .EXPORT _const_8c0351f4 - .EXPORT _const_8c03520c - .EXPORT _const_8c035218 - .EXPORT _const_8c035228 - .EXPORT _const_8c035240 - .EXPORT _const_8c035258 - .EXPORT _const_8c035264 - .EXPORT _const_8c035274 - .EXPORT _const_8c03528c - .EXPORT _const_8c0352a4 - .EXPORT _const_8c0352b0 - .EXPORT _const_8c0352c0 - .EXPORT _const_8c0352d8 - .EXPORT _const_8c0352f0 - .EXPORT _const_8c035304 - .EXPORT _const_8c035310 - .EXPORT _const_8c035320 - .EXPORT _const_8c03532c - .EXPORT _const_8c035344 - .EXPORT _const_8c035350 - .EXPORT _const_8c035360 - .EXPORT _const_8c03536c - .EXPORT _const_8c035384 - .EXPORT _const_8c035398 - .EXPORT _const_8c0353a8 - .EXPORT _const_8c0353b8 - .EXPORT _const_8c0353c8 - .EXPORT _const_8c0353d8 - .EXPORT _const_8c0353e8 - .EXPORT _const_8c0353f8 - .EXPORT _const_8c035408 - .EXPORT _const_8c035418 - .EXPORT _const_8c035428 - .EXPORT _const_8c035438 - .EXPORT _const_8c035448 - .EXPORT _const_8c035458 - .EXPORT _const_8c035468 - .EXPORT _const_8c035478 - .EXPORT _const_8c035488 - .EXPORT _const_8c035498 - .EXPORT _const_8c0354a8 - .EXPORT _const_8c0354b8 - .EXPORT _const_8c0354c8 - .EXPORT _const_8c0354d8 - .EXPORT _const_8c0354e8 - .EXPORT _const_8c0354f8 - .EXPORT _const_8c035508 - .EXPORT _const_8c035518 - .EXPORT _const_8c035528 - .EXPORT _const_8c035538 - .EXPORT _const_8c035548 - .EXPORT _const_8c035558 - .EXPORT _const_8c035568 - .EXPORT _const_8c035578 - .EXPORT _const_8c035588 - .EXPORT _const_8c035598 - .EXPORT _const_8c0355a8 - .EXPORT _const_8c0355b8 - .EXPORT _const_8c0355c8 - .EXPORT _const_8c0355d8 - .EXPORT _const_8c0355e8 - .EXPORT _const_8c0355f8 - .EXPORT _const_8c035608 - .EXPORT _const_8c035618 - .EXPORT _const_8c035628 - .EXPORT _const_8c035638 - .EXPORT _const_8c035648 - .EXPORT _const_8c035658 - .EXPORT _const_8c035668 - .EXPORT _const_8c035678 - .EXPORT _const_8c035688 - .EXPORT _const_8c035698 - .EXPORT _const_8c0356a8 - .EXPORT _const_8c0356b8 - .EXPORT _const_8c0356c8 - .EXPORT _const_8c0356d8 - .EXPORT _const_8c0356e8 - .EXPORT _const_8c0356f8 - .EXPORT _const_8c035708 - .EXPORT _const_8c035718 - .EXPORT _const_8c035728 - .EXPORT _const_8c035738 - .EXPORT _const_8c035748 - .EXPORT _const_8c035758 - .EXPORT _const_8c035768 - .EXPORT _const_8c035778 - .EXPORT _const_8c035788 - .EXPORT _const_8c035798 - .EXPORT _const_8c0357a8 - .EXPORT _const_8c0357b8 - .EXPORT _const_8c0357c8 - .EXPORT _const_8c0357d8 - .EXPORT _const_8c0357e8 - .EXPORT _const_8c0357f8 - .EXPORT _const_8c035808 - .EXPORT _const_8c035818 - .EXPORT _const_8c035828 - .EXPORT _const_8c035838 - .EXPORT _const_8c035848 - .EXPORT _const_8c035858 - .EXPORT _const_8c035868 - .EXPORT _const_8c035878 - .EXPORT _const_8c035888 - .EXPORT _const_8c035898 - .EXPORT _const_8c0358a8 - .EXPORT _const_8c0358b8 - .EXPORT _const_8c0358c8 - .EXPORT _const_8c0358d8 - .EXPORT _const_8c0358e8 - .EXPORT _const_8c0358f8 - .EXPORT _const_8c035908 - .EXPORT _const_8c035918 - .EXPORT _const_8c035928 - .EXPORT _const_8c035938 - .EXPORT _const_8c035948 - .EXPORT _const_8c035958 - .EXPORT _const_8c035968 - .EXPORT _const_8c035978 - .EXPORT _const_8c035988 - .EXPORT _const_8c035998 - .EXPORT _const_8c0359a8 - .EXPORT _const_8c0359b8 - .EXPORT _const_8c0359c8 - .EXPORT _const_8c0359d8 - .EXPORT _const_8c0359e8 - .EXPORT _const_8c0359f8 - .EXPORT _const_8c035a08 - .EXPORT _const_8c035a18 - .EXPORT _const_8c035a28 - .EXPORT _const_8c035a38 - .EXPORT _const_8c035a48 - .EXPORT _const_8c035a54 - .EXPORT _const_8c035a60 - .EXPORT _const_8c035a6c - .EXPORT _const_8c035a78 - .EXPORT _const_8c035a84 - .EXPORT _const_8c035a90 - .EXPORT _const_8c035a9c - .EXPORT _const_8c035aa8 - .EXPORT _const_8c035ab4 - .EXPORT _const_8c035ac0 - .EXPORT _const_8c035acc - .EXPORT _const_8c035ad8 - .EXPORT _const_8c035ae4 - .EXPORT _const_8c035af0 - .EXPORT _const_8c035afc - .EXPORT _const_8c035b08 - .EXPORT _const_8c035b14 - .EXPORT _const_8c035b20 - .EXPORT _const_8c035b2c - .EXPORT _const_8c035b38 - .EXPORT _const_8c035b44 - .EXPORT _const_8c035b50 - .EXPORT _const_8c035b5c - .EXPORT _const_8c035b68 - .EXPORT _const_8c035b74 - .EXPORT _const_8c035b80 - .EXPORT _const_8c035b8c - .EXPORT _const_8c035b98 - .EXPORT _const_8c035ba4 - .EXPORT _const_8c035bb0 - .EXPORT _const_8c035bbc - .EXPORT _const_8c035bc8 - .EXPORT _const_8c035bd4 - .EXPORT _const_8c035be0 - .EXPORT _const_8c035bec - .EXPORT _const_8c035bf8 - .EXPORT _const_8c035c04 - .EXPORT _const_8c035c10 - .EXPORT _const_8c035c1c - .EXPORT _const_8c035c28 - .EXPORT _const_8c035c34 - .EXPORT _const_8c035c40 - .EXPORT _const_8c035c4c - .EXPORT _const_8c035c58 - .EXPORT _const_8c035c64 - .EXPORT _const_8c035c70 - .EXPORT _const_8c035c7c - .EXPORT _const_8c035c88 - .EXPORT _const_8c035c94 - .EXPORT _const_8c035ca0 - .EXPORT _const_8c035cac - .EXPORT _const_8c035cb8 - .EXPORT _const_8c035cc4 - .EXPORT _const_8c035cd0 - .EXPORT _const_8c035cdc - .EXPORT _const_8c035ce8 - .EXPORT _const_8c035cf4 - .EXPORT _const_8c035d00 - .EXPORT _const_8c035d0c - .EXPORT _const_8c035d18 - .EXPORT _const_8c035d24 - .EXPORT _const_8c035d30 - .EXPORT _const_8c035d3c - .EXPORT _const_8c035d48 - .EXPORT _const_8c035d58 - .EXPORT _const_8c035d68 - .EXPORT _const_8c035d78 - .EXPORT _const_8c035d88 - .EXPORT _const_8c035d98 - .EXPORT _const_8c035da8 - .EXPORT _const_8c035db8 - .EXPORT _const_8c035dc8 + .EXPORT _init_texlist_8c03bf44 ; 012f44, 022464 + .EXPORT _init_8c03bf4c ; 0129cc + .EXPORT _init_8c03bfa8 ; 012f44 + .EXPORT _init_8c043ca4 ; 013ae8 + .EXPORT _init_8c043d64 ; 013ae8 + .EXPORT _init_8c043dc4 ; 013ae8 + .EXPORT _init_8c043ecc ; 013ae8 + .EXPORT _init_8c043fd4 ; 013ae8 + .EXPORT _init_8c043fd8 ; 013ae8 + .EXPORT _init_8c0440dc ; 013ae8 + .EXPORT _init_8c04410c ; 01b19c + .EXPORT s_front_njd_8c033478 ; 013ae8 + .EXPORT s_front_pvm_8c033484 ; 013ae8 + .EXPORT s_syanai_njd_8c033490 ; 013ae8 + .EXPORT s_syanai_pvm_8c03349c ; 013ae8 + .EXPORT s_mark_pvm_8c0334a8 ; 013ae8 + .EXPORT s_busstop_pvm_8c0334b4 ; 013ae8 + .EXPORT s_SD_COMMON_8c0334c0 ; 013ae8 + .EXPORT s_SD_PVR_8c0334cc ; 013ae8 + .EXPORT s_SN_COMMON_8c0334d4 ; 013ae8 + .EXPORT s_SN_PVR_8c0334e0 ; 013ae8 + .EXPORT s_WD_COMMON_8c0334e8 ; 013ae8 + .EXPORT s_WD_PVR_8c0334f4 ; 013ae8 + .EXPORT s_WN_COMMON_8c0334fc ; 013ae8 + .EXPORT s_WN_PVR_8c033508 ; 013ae8 + .EXPORT s_OD_COMMON_8c033510 ; 013ae8 + .EXPORT s_OD_PVR_8c03351c ; 013ae8 + .EXPORT s_ON_COMMON_8c033524 ; 013ae8 + .EXPORT s_ON_PVR_8c033530 ; 013ae8 .SECTION D,DATA,ALIGN=4 -_init_8c03bf40: ; from defines - .DATA.L _const_8c033358 ; ukn _init_texlist_8c03bf44: ; from defines .DATA.L _var_texname_8c18acf8 ; ukn .DATA.B H'01, H'00, H'00, H'00 diff --git a/src/asm/012324.src b/src/asm/012324.src index f81cc18..2a5cf67 100644 --- a/src/asm/012324.src +++ b/src/asm/012324.src @@ -1,5 +1,5 @@ ; 8c012324 - .IMPORT _peripheral_8c1ba35c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _var_8c157a78 .IMPORT _var_8c1ba358 .IMPORT _pdGetPeripheral @@ -143,7 +143,7 @@ LAB_8c012406: LP_GEN_72787: .DATA.W H'0080 ; LP_GEN_72787+0 - .DATA.L _peripheral_8c1ba35c + .DATA.L _var_peripheral_8c1ba35c .DATA.L _var_8c157a78 .DATA.L _var_8c1ba358 .DATA.L _pdGetPeripheral diff --git a/src/asm/012504.src b/src/asm/012504.src index 8dde923..36c30ab 100644 --- a/src/asm/012504.src +++ b/src/asm/012504.src @@ -4,7 +4,7 @@ .IMPORT _var_8c157a78 .IMPORT _var_8c1ba358 .IMPORT _var_8c157a70 - .IMPORT _peripheral_8c1ba35c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _init_8c03be80 .IMPORT _init_8c03bef0 .IMPORT _var_8c1bbc4c @@ -22,14 +22,12 @@ .IMPORT _var_8c157ae8 .IMPORT _var_8c157ad4 .IMPORT _var_8c1bb8c8 - .IMPORT _init_8c03bf40 .IMPORT _strcmp .IMPORT _strcpy .EXPORT _FUN_8c012718 .EXPORT _FUN_8c0128cc .EXPORT _FUN_8c012984 .EXPORT _FUN_8c012970 - .EXPORT _const_8c033358 .AIFDEF UNIT_TESTING .EXPORT _var_8c157aec @@ -170,7 +168,7 @@ LP_GEN_80518: .DATA.L _var_8c1ba358 .DATA.L H'000F06FE .DATA.L _var_8c157a70 - .DATA.L _peripheral_8c1ba35c + .DATA.L _var_peripheral_8c1ba35c .DATA.L H'000700FE .DATA.L _init_8c03be80 .DATA.L _init_8c03bef0 @@ -452,7 +450,7 @@ LP_GEN_64371: .DATA.L _var_8c157a78 .DATA.L _var_8c1ba358 .DATA.L H'000F06FE - .DATA.L _peripheral_8c1ba35c + .DATA.L _var_peripheral_8c1ba35c .DATA.L H'000700FE .DATA.L _var_8c157a70 .DATA.L _init_8c03beb8 @@ -674,6 +672,9 @@ LP_GEN_44279: .DATA.L _var_8c157aec .DATA.L _strcmp .DATA.L _strcpy + .SECTION D,DATA,ALIGN=4 +_init_8c03bf40: ; from defines + .DATA.L _const_8c033358 ; ukn .SECTION C,DATA,ALIGN=4 _const_8c033358: .SDATA "FortyFive" diff --git a/src/asm/0129cc.src b/src/asm/0129cc.src index 73391f9..0a0c888 100644 --- a/src/asm/0129cc.src +++ b/src/asm/0129cc.src @@ -43,7 +43,7 @@ .IMPORT _init_8c03bd84 .IMPORT _FUN_adxVol_8c010a40 .IMPORT _FUN_8c010bae - .IMPORT _var_8c1ba36c + .IMPORT _var_peripheral_8c1ba35c .EXPORT _FUN_8c0129cc .EXPORT _task_8c012cbc .EXPORT _task_8c012d06 @@ -631,7 +631,7 @@ LP_GEN_43727: .DATA.L _init_8c03bd84 .DATA.L _FUN_adxVol_8c010a40 .DATA.L _FUN_8c010bae - .DATA.L _var_8c1ba36c + .DATA.L H'10+_var_peripheral_8c1ba35c .DATA.L _var_midiHandles_8c0fcd28 .DATA.L _sdMidiPlay diff --git a/src/asm/01614c.src b/src/asm/01614c.src index 04883c0..6c073f7 100644 --- a/src/asm/01614c.src +++ b/src/asm/01614c.src @@ -1,4 +1,4 @@ -; 8c01614c +; 8c01614c .IMPORT _freeTasks_8c014ab4 .IMPORT _var_tasks_8c1bb448 .IMPORT _var_tasks_8c1bac28 @@ -19,10 +19,10 @@ .IMPORT _var_8c1ba3c4 .IMPORT _var_8c1bc454 .IMPORT _freeResourceGroups_8c016108 - .IMPORT _var_8c1ba34c + .IMPORT _var_selectedVm_8c1ba34c .IMPORT _init_8c044294 - .IMPORT _var_8c1ba36c - .IMPORT _var_8c226048 + .IMPORT _var_peripheral_8c1ba35c + .IMPORT _var_vmuStatus_8c226048 .IMPORT _const_8c0360a4 .IMPORT _BupGetInfo_8c014bba .IMPORT _BupMount_8c014c00 @@ -45,7 +45,7 @@ .IMPORT _var_8c225fa8 .IMPORT _var_8c225fac .IMPORT _var_8c1bbc84 - .IMPORT _peripheral_8c1ba35c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _var_demo_8c1bb8d0 .IMPORT _FUN_8c01328c .IMPORT _var_8c228ba4 @@ -77,8 +77,8 @@ .IMPORT _FUN_8c029cfe .IMPORT _FUN_8c021724 .IMPORT _FUN_8c0187d0 - .IMPORT _FUN_8c019504 - .IMPORT _FUN_8c019550 + .IMPORT _VmMenuFreeAndClear_19504 + .IMPORT _VmMenuUpdateVmusStatus_19550 .IMPORT _FUN_8c017ef2 .EXPORT _task_8c01677e .EXPORT _FUN_8c016182 @@ -428,14 +428,14 @@ LP_GEN_42967: .DATA.L _var_8c1bc454 ; H'8C0163E8 .DATA.L _freeResourceGroups_8c016108 ; H'8C0163EC .DATA.L _FUN_8c0187d0 ; H'8C0163F0 - .DATA.L _FUN_8c019504 ; H'8C0163F4 - .DATA.L _var_8c1ba34c ; H'8C0163F8 + .DATA.L _VmMenuFreeAndClear_19504 ; H'8C0163F4 + .DATA.L _var_selectedVm_8c1ba34c ; H'8C0163F8 .DATA.L H'000A000A ; H'8C0163FC .DATA.L _njPrintC ; H'8C016400 .DATA.L _init_8c044294 ; H'8C016404 - .DATA.L _var_8c1ba36c ; H'8C016408 - .DATA.L _FUN_8c019550 ; H'8C01640C - .DATA.L _var_8c226048 ; H'8C016410 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C016408 + .DATA.L _VmMenuUpdateVmusStatus_19550 ; H'8C01640C + .DATA.L _var_vmuStatus_8c226048 ; H'8C016410 .DATA.L H'000F0000 ; H'8C016414 .DATA.L _njPrintD ; H'8C016418 .DATA.L _const_8c0360a4 ; H'8C01641C @@ -539,7 +539,7 @@ LAB_8c0164bc: OR R3,R4 LP_GEN_63429: .RES.W 1 ; H'8C0164CA - .DATA.L _var_8c1ba36c ; H'8C0164CC + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C0164CC .DATA.L _BupGetInfo_8c014bba ; H'8C0164D0 .DATA.L _BupMount_8c014c00 ; H'8C0164D4 .DATA.L _const_8c0360b0 ; H'8C0164D8 @@ -993,7 +993,7 @@ LAB_8c01681e: BRA LAB_8c016918 MOV.L R1,@(H'8,R14) LP_GEN_94139: - .DATA.L _FUN_8c019550 ; H'8C016824 + .DATA.L _VmMenuUpdateVmusStatus_19550 ; H'8C016824 .DATA.L _const_8c036120 ; H'8C016828 .DATA.L _freeTask_8c014b66 ; H'8C01682C .DATA.L H'0000C060 ; H'8C016830 @@ -1002,7 +1002,7 @@ LP_GEN_94139: .DATA.L _var_tasks_8c1ba3c8 ; H'8C01683C .DATA.L _pushTask_8c014ae8 ; H'8C016840 .DATA.L _init_8c04429c ; H'8C016844 - .DATA.L _var_8c1ba36c ; H'8C016848 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C016848 .DATA.L _var_8c1bc824 ; H'8C01684C .DATA.L _njPrintC ; H'8C016850 .DATA.L H'000C0000 ; H'8C016854 @@ -1016,12 +1016,12 @@ LP_GEN_94139: .DATA.L _var_8c225fac ; H'8C016874 .DATA.L _var_8c1bbc84 ; H'8C016878 .DATA.L _var_8c225fa8 ; H'8C01687C - .DATA.L _peripheral_8c1ba35c ; H'8C016880 + .DATA.L _var_peripheral_8c1ba35c ; H'8C016880 .DATA.L _var_demo_8c1bb8d0 ; H'8C016884 .DATA.L _FUN_8c01328c ; H'8C016888 .DATA.L _BupGetInfo_8c014bba ; H'8C01688C .DATA.L _var_8c1ba3c4 ; H'8C016890 - .DATA.L _var_8c1ba34c ; H'8C016894 + .DATA.L _var_selectedVm_8c1ba34c ; H'8C016894 .DATA.L _BupMount_8c014c00 ; H'8C016898 LAB_8c01689c: JSR @R11 @@ -1260,7 +1260,7 @@ LP_GEN_65913: .DATA.L _FUN_8c0167ca ; H'8C016A68 .DATA.L _var_tasks_8c1ba3c8 ; H'8C016A6C .DATA.L _pushTask_8c014ae8 ; H'8C016A70 - .DATA.L _var_8c1ba34c ; H'8C016A74 + .DATA.L _var_selectedVm_8c1ba34c ; H'8C016A74 .DATA.L _var_8c225fa8 ; H'8C016A78 .DATA.L _var_8c225fa8 ; H'8C016A7C .DATA.L _var_8c1bc828 ; H'8C016A80 @@ -1416,7 +1416,7 @@ LP_GEN_41084: .DATA.L _freeTask_8c014b66 ; H'8C016BD4 .DATA.L _FUN_8c01328c ; H'8C016BD8 .DATA.L _var_demo_8c1bb8d0 ; H'8C016BDC - .DATA.L _var_8c1ba34c ; H'8C016BE0 + .DATA.L _var_selectedVm_8c1ba34c ; H'8C016BE0 .DATA.L _var_8c1bb8d4 ; H'8C016BE4 .DATA.L _FUN_8c0169bc ; H'8C016BE8 .DATA.L _var_tasks_8c1ba3c8 ; H'8C016BEC diff --git a/src/asm/016bf4.src b/src/asm/016bf4.src index 449f86b..ac9e6e6 100644 --- a/src/asm/016bf4.src +++ b/src/asm/016bf4.src @@ -1,8 +1,8 @@ -; 8c016bf4 +; 8c016bf4 .IMPORT _var_8c225fa8 .IMPORT _var_8c1bbc84 .IMPORT _var_8c225fac - .IMPORT _peripheral_8c1ba35c + .IMPORT _var_peripheral_8c1ba35c .EXPORT _task_8c016bf4 .SECTION P,CODE,ALIGN=4 _task_8c016bf4: ; function: task_8c016bf4 @@ -52,6 +52,6 @@ L1: .DATA.L _var_8c1bbc84 ; H'8C016C44 .DATA.L _var_8c225fa8 ; H'8C016C48 .DATA.L _var_8c225fa8 ; H'8C016C4C - .DATA.L _peripheral_8c1ba35c ; H'8C016C50 + .DATA.L _var_peripheral_8c1ba35c ; H'8C016C50 .DATA.L _var_8c225fac ; H'8C016C54 .END diff --git a/src/asm/016d2c.src b/src/asm/016d2c.src index 58f4451..c3693a8 100644 --- a/src/asm/016d2c.src +++ b/src/asm/016d2c.src @@ -7,13 +7,13 @@ .IMPORT _var_midiHandles_8c0fcd28 .IMPORT _sdMidiPlay .IMPORT _const_8c03628c - .IMPORT _FUN_8c02aefc + .IMPORT _swapMessageBoxFor_8c02aefc .IMPORT _drawSprite_8c014f54 .IMPORT __modls .IMPORT __divls .IMPORT _var_8c1ba1cc .IMPORT __modlu - .IMPORT _peripheral_8c1ba35c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _var_8c225fb4 .IMPORT _freeTask_8c014b66 .IMPORT _snd_8c010cd6 @@ -24,7 +24,7 @@ .IMPORT _var_tasks_8c1ba3c8 .IMPORT _pushTask_8c014ae8 .IMPORT _init_8c044c08 - .IMPORT _var_8c1ba36c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _FUN_8c010bae .IMPORT _var_8c1ba25c .IMPORT _var_8c225fd4 @@ -45,7 +45,7 @@ .IMPORT _midiResetFxAndPlay_8c010846 .IMPORT _push_fadeout_8c022b60 .IMPORT _var_8c225fb0 - .IMPORT _FUN_8c01a09a + .IMPORT _switchToMainMenuTask_8c01a09a .IMPORT _menuTextboxText_8c02af1c .IMPORT _FUN_8c012166 .IMPORT _var_8c1bb8c0 @@ -65,7 +65,7 @@ .IMPORT _FUN_8c02ae3e .IMPORT _init_8c044d2e .IMPORT _init_8c044d2f - .IMPORT _processNavInputAndPlaySound_8c016caa + .IMPORT _promptHandleBinary_16caa .IMPORT _FUN_8c016182 .IMPORT _var_8c1bb8e0 .IMPORT _var_8c1bb8e8 @@ -86,7 +86,7 @@ .IMPORT _requestPvm_8c011ac0 .IMPORT _releaseAndFreeTexlist_8c011e3c .IMPORT _syFree - .EXPORT _FUN_8c016d2c + .EXPORT _interpolated_8c016d2c .EXPORT _FUN_8c016dc6 .EXPORT _FUN_8c016e6c .EXPORT _FUN_8c016ed2 @@ -113,7 +113,7 @@ .EXPORT _requestSysResgrp_8c018568 .EXPORT _freeResourceGroup_8c0185c4 .SECTION P, CODE, ALIGN=4 -_FUN_8c016d2c: +_interpolated_8c016d2c: MOV.L LP_GEN_57345+2,R4 MOV #H'30,R1 MOV #H'20,R0 @@ -272,7 +272,7 @@ LP_GEN_57345: .DATA.L _var_midiHandles_8c0fcd28 ; H'8C016E5C .DATA.L _sdMidiPlay ; H'8C016E60 .DATA.L _const_8c03628c ; H'8C016E64 - .DATA.L _FUN_8c02aefc ; H'8C016E68 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C016E68 _FUN_8c016e6c: MOV.L R14,@-R15 MOVA LP_GEN_56413+10,R0 @@ -531,11 +531,11 @@ LAB_8c01705a: BRA LAB_8c0170b4 MOV.L R2,@R14 LP_GEN_49323: - .DATA.L _peripheral_8c1ba35c ; H'8C017060 + .DATA.L _var_peripheral_8c1ba35c ; H'8C017060 .DATA.L _var_8c225fb4 ; H'8C017064 .DATA.L _freeTask_8c014b66 ; H'8C017068 .DATA.L _snd_8c010cd6 ; H'8C01706C - .DATA.L _FUN_8c02aefc ; H'8C017070 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C017070 .DATA.L _var_8c1bc808 ; H'8C017074 .DATA.L _FUN_8c010ca6 ; H'8C017078 LAB_8c01707c: @@ -692,9 +692,9 @@ LP_GEN_21301: .DATA.L _pushTask_8c014ae8 ; H'8C0171B0 .DATA.L _init_8c044c08 ; H'8C0171B4 .DATA.L _var_8c225fb4 ; H'8C0171B8 - .DATA.L _FUN_8c02aefc ; H'8C0171BC + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C0171BC .DATA.L _init_8c04442c ; H'8C0171C0 - .DATA.L _var_8c1ba36c ; H'8C0171C4 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C0171C4 .DATA.L _FUN_8c010bae ; H'8C0171C8 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C0171CC .DATA.L _sdMidiPlay ; H'8C0171D0 @@ -844,7 +844,7 @@ LP_GEN_93380: .DATA.W H'0080 ; H'8C0172CE .DATA.L _var_midiHandles_8c0fcd28 ; H'8C0172D0 .DATA.L _sdMidiPlay ; H'8C0172D4 - .DATA.L _var_8c1ba36c ; H'8C0172D8 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C0172D8 _FUN_8c0172dc: MOV #H'0,R4 MOV.L R14,@-R15 @@ -1618,7 +1618,7 @@ LAB_8c017892: BRA LAB_8c01798a NOP LAB_8c01789a: - BSR _FUN_8c016d2c + BSR _interpolated_8c016d2c NOP TST R0,R0 BT LAB_8c01798a @@ -1854,13 +1854,13 @@ LP_GEN_86103: .DATA.L _sdMidiPlay ; H'8C017A58 .DATA.L _midiResetFxAndPlay_8c010846 ; H'8C017A5C .DATA.L _const_8c03628c ; H'8C017A60 - .DATA.L _FUN_8c02aefc ; H'8C017A64 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C017A64 .DATA.L _push_fadeout_8c022b60 ; H'8C017A68 .DATA.L _var_8c225fb0 ; H'8C017A6C .DATA.L _var_8c1bb8dc ; H'8C017A70 .DATA.L _var_8c1bb8b8 ; H'8C017A74 .DATA.L _var_8c1bb8bc ; H'8C017A78 - .DATA.L _FUN_8c01a09a ; H'8C017A7C + .DATA.L _switchToMainMenuTask_8c01a09a ; H'8C017A7C .DATA.L H'C0A00000 ; H'8C017A80 .DATA.L _drawSprite_8c014f54 ; H'8C017A84 .DATA.L H'C0800000 ; H'8C017A88 @@ -2015,7 +2015,7 @@ LAB_8c017ba2: BRA LAB_8c017cb8 NOP LAB_8c017baa: - BSR _FUN_8c016d2c + BSR _interpolated_8c016d2c NOP TST R0,R0 BF LAB_8c017bb6 @@ -2052,7 +2052,7 @@ LP_GEN_86246: .DATA.L _push_fadein_8c022a9c ; H'8C017BF8 .DATA.L _var_8c225fb4 ; H'8C017BFC .DATA.L _const_8c03628c ; H'8C017C00 - .DATA.L _FUN_8c02aefc ; H'8C017C04 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C017C04 .DATA.L _push_fadeout_8c022b60 ; H'8C017C08 LAB_8c017c0c: MOV.L @R4,R1 @@ -2211,7 +2211,7 @@ LP_GEN_85439: .RES.W 1 ; H'8C017D2A .DATA.L _var_8c225fb0 ; H'8C017D2C .DATA.L _init_8c04442c ; H'8C017D30 - .DATA.L _FUN_8c01a09a ; H'8C017D34 + .DATA.L _switchToMainMenuTask_8c01a09a ; H'8C017D34 .DATA.L H'C0A00000 ; H'8C017D38 .DATA.L _drawSprite_8c014f54 ; H'8C017D3C .DATA.L _var_8c225fb8 ; H'8C017D40 @@ -2651,7 +2651,7 @@ LP_GEN_56170: .DATA.L H'C0000000 ; H'8C0180D4 .DATA.L _FUN_8c02ae3e ; H'8C0180D8 .DATA.L _const_8c03628c ; H'8C0180DC - .DATA.L _FUN_8c02aefc ; H'8C0180E0 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C0180E0 .DATA.L _var_demo_8c1bb8d0 ; H'8C0180E4 .DATA.L _initQueues_8c011f36 ; H'8C0180E8 .DATA.L _resetQueues_8c011f6c ; H'8C0180EC @@ -2987,7 +2987,7 @@ LP_GEN_82242: .DATA.L _freeQueues_8c011f7e ; H'8C01838C .DATA.L _push_fadein_8c022a9c ; H'8C018390 .DATA.L _snd_8c010cd6 ; H'8C018394 - .DATA.L _processNavInputAndPlaySound_8c016caa ; H'8C018398 + .DATA.L _promptHandleBinary_16caa ; H'8C018398 .DATA.L _push_fadeout_8c022b60 ; H'8C01839C .DATA.L _FUN_8c016182 ; H'8C0183A0 .DATA.L _var_8c1bb8e0 ; H'8C0183A4 diff --git a/src/asm/018644.src b/src/asm/018644.src index 40f4950..162c1e6 100644 --- a/src/asm/018644.src +++ b/src/asm/018644.src @@ -1,23 +1,23 @@ ; 8c018644 - .IMPORT _var_8c225fe0 - .IMPORT _var_8c1ba34c - .IMPORT _var_8c22600c - .IMPORT _buIsExistFile - .IMPORT _BupLoad_8c014bc6 - .IMPORT _var_8c225fe4 - .IMPORT _freeTask_8c014b66 - .IMPORT _var_8c226010 - .IMPORT _buStat - .IMPORT _buGetLastError - .IMPORT _var_8c1ba348 - .IMPORT _syMalloc - .IMPORT _var_8c1ba2e4 - .IMPORT _buAnalyzeBackupFileImage - .IMPORT _var_8c1ba33c - .IMPORT _njMemCopy - .IMPORT _syFree - .EXPORT _FUN_8c018644 - .SECTION P, CODE, ALIGN=4 + .IMPORT _var_8c225fe0 + .IMPORT _var_selectedVm_8c1ba34c + .IMPORT _var_8c22600c + .IMPORT _buIsExistFile + .IMPORT _BupLoad_8c014bc6 + .IMPORT _var_8c225fe4 + .IMPORT _freeTask_8c014b66 + .IMPORT _var_8c226010 + .IMPORT _buStat + .IMPORT _buGetLastError + .IMPORT _var_8c1ba348 + .IMPORT _syMalloc + .IMPORT _var_8c1ba2e4 + .IMPORT _buAnalyzeBackupFileImage + .IMPORT _var_8c1ba33c + .IMPORT _njMemCopy + .IMPORT _syFree + .EXPORT _FUN_8c018644 + .SECTION P, CODE, ALIGN=4 _FUN_8c018644: MOV.L R14,@-R15 MOV R4,R14 @@ -154,7 +154,7 @@ LP_GEN_13769: .DATA.W H'00E8 ; H'8C01873C .DATA.W H'0600 ; H'8C01873E .DATA.L _var_8c225fe0 ; H'8C018740 - .DATA.L _var_8c1ba34c ; H'8C018744 + .DATA.L _var_selectedVm_8c1ba34c ; H'8C018744 .DATA.L _var_8c22600c ; H'8C018748 .DATA.L _buIsExistFile ; H'8C01874C .DATA.L _BupLoad_8c014bc6 ; H'8C018750 @@ -170,4 +170,4 @@ LP_GEN_13769: .DATA.L _var_8c1ba33c ; H'8C018778 .DATA.L _njMemCopy ; H'8C01877C .DATA.L _syFree ; H'8C018780 - .END + .END diff --git a/src/asm/018784.src b/src/asm/018784.src index d12b3e2..ad57a76 100644 --- a/src/asm/018784.src +++ b/src/asm/018784.src @@ -3,7 +3,7 @@ .IMPORT _var_tasks_8c1ba3c8 .IMPORT _pushTask_8c014ae8 .IMPORT _var_8c157a7c - .IMPORT _saveNames_8c044d50 + .IMPORT _init_saveNames_8c044d50 .IMPORT _syMalloc .IMPORT _var_8c1ba2e0 .IMPORT _var_8c225fe0 @@ -19,8 +19,8 @@ .IMPORT _setMidiVolAndInitStruct_8c0109f4 .IMPORT _var_8c226014 .IMPORT _var_8c226018 - .IMPORT _var_8c1ba34c - .IMPORT _var_8c226048 + .IMPORT _var_selectedVm_8c1ba34c + .IMPORT _var_vmuStatus_8c226048 .IMPORT _var_8c22600c .IMPORT _var_8c225fe4 .IMPORT _menuState_8c1bc7a8 @@ -28,9 +28,9 @@ .IMPORT __modls .IMPORT __divls .IMPORT _isFading_8c226568 - .IMPORT _FUN_8c02aefc + .IMPORT _swapMessageBoxFor_8c02aefc .IMPORT _sdMidiPlay - .IMPORT _var_8c1ba36c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _var_midiHandles_8c0fcd28 .IMPORT _const_8c037e60 .IMPORT _menuTextboxText_8c02af1c @@ -43,12 +43,12 @@ .IMPORT _FUN_8c01b19c .IMPORT _FUN_8c010bae .IMPORT _const_8c037ec8 - .IMPORT _FUN_8c0194de + .IMPORT _VmMenuUnmountVms_194de .IMPORT _var_8c22606c .IMPORT _init_8c03bd80 .IMPORT _var_8c225fb0 - .IMPORT _FUN_8c01a09a - .IMPORT _setMenuTaskAction_8c019e44 + .IMPORT _switchToMainMenuTask_8c01a09a + .IMPORT _VmMenuSwitchFromTask_19e44 .IMPORT _setTaskAction_8c014b3e .IMPORT _const_8c037ecc .IMPORT _push_fadein_8c022a9c @@ -214,7 +214,7 @@ LP_GEN_28586: .DATA.L _var_tasks_8c1ba3c8 ; H'8C01888C .DATA.L _pushTask_8c014ae8 ; H'8C018890 .DATA.L _var_8c157a7c ; H'8C018894 - .DATA.L _saveNames_8c044d50 ; H'8C018898 + .DATA.L _init_saveNames_8c044d50 ; H'8C018898 .DATA.L _syMalloc ; H'8C01889C .DATA.L _var_8c1ba2e0 ; H'8C0188A0 .DATA.L _var_8c225fe0 ; H'8C0188A4 @@ -545,8 +545,8 @@ LP_GEN_23929: .DATA.L _setMidiVolAndInitStruct_8c0109f4 ; H'8C018B18 .DATA.L _var_8c226014 ; H'8C018B1C .DATA.L _var_8c226018 ; H'8C018B20 - .DATA.L _var_8c1ba34c ; H'8C018B24 - .DATA.L _var_8c226048 ; H'8C018B28 + .DATA.L _var_selectedVm_8c1ba34c ; H'8C018B24 + .DATA.L _var_vmuStatus_8c226048 ; H'8C018B28 .DATA.L _var_8c22600c ; H'8C018B2C .DATA.L _var_8c225fe4 ; H'8C018B30 .DATA.L _menuState_8c1bc7a8 ; H'8C018B34 @@ -1070,9 +1070,9 @@ LP_GEN_84467: .DATA.L H'C0A00000 ; H'8C018F34 .DATA.L _menuState_8c1bc7a8 ; H'8C018F38 .DATA.L _isFading_8c226568 ; H'8C018F3C - .DATA.L _FUN_8c02aefc ; H'8C018F40 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C018F40 .DATA.L _sdMidiPlay ; H'8C018F44 - .DATA.L _var_8c1ba36c ; H'8C018F48 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C018F48 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C018F4C .DATA.L _var_8c157a7c ; H'8C018F50 .DATA.L _const_8c037e60 ; H'8C018F54 @@ -1523,11 +1523,11 @@ LP_GEN_73468: .DATA.L _push_fadeout_8c022b60 ; H'8C0192AC .DATA.L _const_8c037ec8 ; H'8C0192B0 .DATA.L _menuTextboxText_8c02af1c ; H'8C0192B4 - .DATA.L _FUN_8c0194de ; H'8C0192B8 + .DATA.L _VmMenuUnmountVms_194de ; H'8C0192B8 .DATA.L _var_8c22606c ; H'8C0192BC .DATA.L _init_8c03bd80 ; H'8C0192C0 .DATA.L _var_8c225fb0 ; H'8C0192C4 - .DATA.L _FUN_8c01a09a ; H'8C0192C8 + .DATA.L _switchToMainMenuTask_8c01a09a ; H'8C0192C8 LAB_8c0192cc: MOV.L @R6,R2 TST R2,R2 @@ -1639,15 +1639,15 @@ LAB_8c019382: LP_GEN_41958: .RES.W 1 ; H'8C019392 .DATA.L _var_8c22606c ; H'8C019394 - .DATA.L _setMenuTaskAction_8c019e44 ; H'8C019398 + .DATA.L _VmMenuSwitchFromTask_19e44 ; H'8C019398 .DATA.L _FUN_8c018e7e ; H'8C01939C .DATA.L _setTaskAction_8c014b3e ; H'8C0193A0 .DATA.L _var_8c22600c ; H'8C0193A4 .DATA.L _menuState_8c1bc7a8 ; H'8C0193A8 - .DATA.L _var_8c1ba34c ; H'8C0193AC - .DATA.L _var_8c226048 ; H'8C0193B0 + .DATA.L _var_selectedVm_8c1ba34c ; H'8C0193AC + .DATA.L _var_vmuStatus_8c226048 ; H'8C0193B0 .DATA.L _const_8c037ecc ; H'8C0193B4 - .DATA.L _FUN_8c02aefc ; H'8C0193B8 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C0193B8 .DATA.L _vmsLcd_8c01c8fc ; H'8C0193BC .DATA.L _var_8c157a7c ; H'8C0193C0 .DATA.L _push_fadein_8c022a9c ; H'8C0193C4 diff --git a/src/asm/0193c8_pre_data.src b/src/asm/0193c8_pre_data.src new file mode 100644 index 0000000..e5c8d97 --- /dev/null +++ b/src/asm/0193c8_pre_data.src @@ -0,0 +1,1436 @@ + .EXPORT _const_8c035f24 + .EXPORT _const_8c035f74 + .EXPORT _const_8c035f7c + .EXPORT _const_8c035f88 + .EXPORT _const_8c035f94 + .EXPORT _const_8c035fa0 + .EXPORT _const_8c035fac + .EXPORT _const_8c035fb8 + .EXPORT _const_8c035fcc + .EXPORT _const_8c035fd8 + .EXPORT _const_8c035fe4 + .EXPORT _const_8c035ff4 + .EXPORT _const_8c036000 + .EXPORT _const_8c03600c + .EXPORT _const_8c03601c + .EXPORT _const_8c036028 + .EXPORT _const_8c036034 + .EXPORT _const_8c03604c + .EXPORT _const_8c03605c + .EXPORT _const_8c03606c + .EXPORT _const_8c036084 + .EXPORT _const_8c036094 + .EXPORT _const_8c0360a4 + .EXPORT _const_8c0360b0 + .EXPORT _const_8c0360b4 + .EXPORT _const_8c0360c0 + .EXPORT _const_8c0360d4 + .EXPORT _const_8c0360e4 + .EXPORT _const_8c0360fc + .EXPORT _const_8c036120 + .EXPORT _const_8c036130 + .EXPORT _const_8c036148 + .EXPORT _const_8c036160 + .EXPORT _const_8c03616c + .EXPORT _const_8c036170 + .EXPORT _const_8c036180 + .EXPORT _const_8c036190 + .EXPORT _const_8c03619c + .EXPORT _const_8c0361a8 + .EXPORT _const_8c0361b8 + .EXPORT _const_8c0361c8 + .EXPORT _const_8c0361dc + .EXPORT _const_8c0361ec + .EXPORT _const_8c036200 + .EXPORT _const_8c036218 + .EXPORT _const_8c036224 + .EXPORT _const_8c036234 + .EXPORT _const_8c036244 + .EXPORT _const_8c036250 + .EXPORT _const_8c036264 + .EXPORT _const_8c036274 + .EXPORT _const_8c03627c + .EXPORT _const_8c03628c + .EXPORT _const_8c036290 + .EXPORT _const_8c036298 + .EXPORT _const_8c0362ac + .EXPORT _const_8c0362b8 + .EXPORT _const_8c0362c4 + .EXPORT _const_8c0362f8 + .EXPORT _const_8c036334 + .EXPORT _const_8c03636c + .EXPORT _const_8c036398 + .EXPORT _const_8c0363dc + .EXPORT _const_8c036430 + .EXPORT _const_8c036470 + .EXPORT _const_8c0364ac + .EXPORT _const_8c0364e8 + .EXPORT _const_8c036520 + .EXPORT _const_8c03654c + .EXPORT _const_8c036574 + .EXPORT _const_8c0365b4 + .EXPORT _const_8c0365ec + .EXPORT _const_8c036624 + .EXPORT _const_8c03665c + .EXPORT _const_8c036698 + .EXPORT _const_8c0366c0 + .EXPORT _const_8c036704 + .EXPORT _const_8c036748 + .EXPORT _const_8c036778 + .EXPORT _const_8c0367bc + .EXPORT _const_8c0367dc + .EXPORT _const_8c036828 + .EXPORT _const_8c036848 + .EXPORT _const_8c036884 + .EXPORT _const_8c0368c8 + .EXPORT _const_8c036908 + .EXPORT _const_8c03693c + .EXPORT _const_8c036964 + .EXPORT _const_8c036984 + .EXPORT _const_8c0369a8 + .EXPORT _const_8c0369e8 + .EXPORT _const_8c036a08 + .EXPORT _const_8c036a40 + .EXPORT _const_8c036a5c + .EXPORT _const_8c036a94 + .EXPORT _const_8c036ad4 + .EXPORT _const_8c036b0c + .EXPORT _const_8c036b58 + .EXPORT _const_8c036b98 + .EXPORT _const_8c036bd8 + .EXPORT _const_8c036c20 + .EXPORT _const_8c036c5c + .EXPORT _const_8c036c7c + .EXPORT _const_8c036ca8 + .EXPORT _const_8c036ce8 + .EXPORT _const_8c036d34 + .EXPORT _const_8c036d74 + .EXPORT _const_8c036db0 + .EXPORT _const_8c036dd0 + .EXPORT _const_8c036df0 + .EXPORT _const_8c036e30 + .EXPORT _const_8c036e80 + .EXPORT _const_8c036eb0 + .EXPORT _const_8c036ee4 + .EXPORT _const_8c036f24 + .EXPORT _const_8c036f60 + .EXPORT _const_8c036f84 + .EXPORT _const_8c036fd0 + .EXPORT _const_8c037004 + .EXPORT _const_8c037054 + .EXPORT _const_8c037078 + .EXPORT _const_8c0370b8 + .EXPORT _const_8c0370f4 + .EXPORT _const_8c037120 + .EXPORT _const_8c037144 + .EXPORT _const_8c037188 + .EXPORT _const_8c0371b0 + .EXPORT _const_8c0371f0 + .EXPORT _const_8c037228 + .EXPORT _const_8c037264 + .EXPORT _const_8c0372a8 + .EXPORT _const_8c0372f4 + .EXPORT _const_8c037334 + .EXPORT _const_8c037374 + .EXPORT _const_8c0373b8 + .EXPORT _const_8c037410 + .EXPORT _const_8c037434 + .EXPORT _const_8c037474 + .EXPORT _const_8c0374b8 + .EXPORT _const_8c0374e0 + .EXPORT _const_8c037528 + .EXPORT _const_8c037568 + .EXPORT _const_8c0375b4 + .EXPORT _const_8c0375f0 + .EXPORT _const_8c037630 + .EXPORT _const_8c037668 + .EXPORT _const_8c037680 + .EXPORT _const_8c0376b4 + .EXPORT _const_8c037700 + .EXPORT _const_8c037748 + .EXPORT _const_8c037794 + .EXPORT _const_8c0377e0 + .EXPORT _const_8c03782c + .EXPORT _const_8c037874 + .EXPORT _const_8c0378ac + .EXPORT _const_8c0378e8 + .EXPORT _const_8c037924 + .EXPORT _const_8c03794c + .EXPORT _const_8c037970 + .EXPORT _const_8c0379ac + .EXPORT _const_8c0379c8 + .EXPORT _const_8c037a08 + .EXPORT _const_8c037a34 + .EXPORT _const_8c037a70 + .EXPORT _const_8c037aa0 + .EXPORT _const_8c037aec + .EXPORT _const_8c037b14 + .EXPORT _const_8c037b60 + .EXPORT _const_8c037bb0 + .EXPORT _const_8c037bfc + .EXPORT _const_8c037c30 + .EXPORT _const_8c037c6c + .EXPORT _const_8c037c94 + .EXPORT _const_8c037cd4 + .EXPORT _const_8c037cfc + .EXPORT _const_8c037d40 + .EXPORT _const_8c037d78 + .EXPORT _const_8c037dcc + .EXPORT _const_8c037dec + .EXPORT _const_8c037e1c + .EXPORT _const_8c037e38 + .EXPORT _const_8c037e48 + .EXPORT _const_8c037e54 + .EXPORT _const_8c037e60 + .EXPORT _const_8c037e78 + .EXPORT _const_8c037ea8 + .EXPORT _const_8c037ec8 + .EXPORT _const_8c037ecc + .SECTION C, DATA, ALIGN=4 +_const_8c035f24: ; from defines + .DATA.B H'00, H'00, H'5E, H'00, H'6C, H'00, H'AA, H'00, H'FD, H'00, H'53, H'01, H'83, H'01, H'C5, H'01 + .DATA.B H'23, H'02, H'81, H'02, H'DF, H'02, H'3D, H'03, H'9B, H'03, H'F9, H'03, H'57, H'04, H'B5, H'04 + .DATA.B H'13, H'05, H'71, H'05, H'CF, H'05, H'2D, H'06, H'8B, H'06, H'E9, H'06, H'47, H'07, H'A5, H'07 + .DATA.B H'03, H'08, H'61, H'08, H'BF, H'08, H'1D, H'09, H'7B, H'09, H'D9, H'09, H'37, H'0A, H'95, H'0A + .DATA.B H'F3, H'0A, H'51, H'0B, H'AF, H'0B, H'0D, H'0C, H'6B, H'0C, H'C9, H'0C, H'27, H'0D, H'00, H'00 +_const_8c035f74: ; from defines + ;.SDATA "\SYSTEM" + ;.DATA.B H'00 + .DATA.B H'5C, H'53, H'59, H'53, H'54, H'45, H'4D, H'00 +_const_8c035f7c: ; from ghidra + ;.SDATA "demo2.bin" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'64, H'65, H'6D, H'6F, H'32, H'2E, H'62, H'69, H'6E, H'00, H'00, H'00 +_const_8c035f88: ; from ghidra + ;.SDATA "demo6.bin" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'64, H'65, H'6D, H'6F, H'36, H'2E, H'62, H'69, H'6E, H'00, H'00, H'00 +_const_8c035f94: ; from ghidra + ;.SDATA "demo1.bin" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'64, H'65, H'6D, H'6F, H'31, H'2E, H'62, H'69, H'6E, H'00, H'00, H'00 +_const_8c035fa0: ; from ghidra + ;.SDATA "demo0.bin" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'64, H'65, H'6D, H'6F, H'30, H'2E, H'62, H'69, H'6E, H'00, H'00, H'00 +_const_8c035fac: ; from ghidra + ;.SDATA "demo5.bin" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'64, H'65, H'6D, H'6F, H'35, H'2E, H'62, H'69, H'6E, H'00, H'00, H'00 +_const_8c035fb8: ; from ghidra + ;.SDATA "common_parts.dat" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'63, H'6F, H'6D, H'6D, H'6F, H'6E, H'5F, H'70, H'61, H'72, H'74, H'73, H'2E, H'64, H'61, H'74 + .DATA.B H'00, H'00, H'00, H'00 +_const_8c035fcc: ; from ghidra + ;.SDATA "common.dat" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'63, H'6F, H'6D, H'6D, H'6F, H'6E, H'2E, H'64, H'61, H'74, H'00, H'00 +_const_8c035fd8: ; from ghidra + ;.SDATA "common.pvm" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'63, H'6F, H'6D, H'6D, H'6F, H'6E, H'2E, H'70, H'76, H'6D, H'00, H'00 +_const_8c035fe4: ; from ghidra + ;.SDATA "title_parts.dat" + ;.DATA.B H'00 + .DATA.B H'74, H'69, H'74, H'6C, H'65, H'5F, H'70, H'61, H'72, H'74, H'73, H'2E, H'64, H'61, H'74, H'00 +_const_8c035ff4: ; from ghidra + ;.SDATA "title.dat" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'74, H'69, H'74, H'6C, H'65, H'2E, H'64, H'61, H'74, H'00, H'00, H'00 +_const_8c036000: ; from ghidra + ;.SDATA "title.pvm" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'74, H'69, H'74, H'6C, H'65, H'2E, H'70, H'76, H'6D, H'00, H'00, H'00 +_const_8c03600c: ; from ghidra + ;.SDATA "menu_parts.dat" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'6D, H'65, H'6E, H'75, H'5F, H'70, H'61, H'72, H'74, H'73, H'2E, H'64, H'61, H'74, H'00, H'00 +_const_8c03601c: ; from ghidra + ;.SDATA "menu.dat" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'6D, H'65, H'6E, H'75, H'2E, H'64, H'61, H'74, H'00, H'00, H'00, H'00 +_const_8c036028: ; from ghidra + ;.SDATA "menu.pvm" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'6D, H'65, H'6E, H'75, H'2E, H'70, H'76, H'6D, H'00, H'00, H'00, H'00 +_const_8c036034: ; from ghidra + ;.SDATA "practice01_parts.dat" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'70, H'72, H'61, H'63, H'74, H'69, H'63, H'65, H'30, H'31, H'5F, H'70, H'61, H'72, H'74, H'73 + .DATA.B H'2E, H'64, H'61, H'74, H'00, H'00, H'00, H'00 +_const_8c03604c: ; from ghidra + ;.SDATA "practice01.dat" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'70, H'72, H'61, H'63, H'74, H'69, H'63, H'65, H'30, H'31, H'2E, H'64, H'61, H'74, H'00, H'00 +_const_8c03605c: ; from ghidra + ;.SDATA "practice01.pvm" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'70, H'72, H'61, H'63, H'74, H'69, H'63, H'65, H'30, H'31, H'2E, H'70, H'76, H'6D, H'00, H'00 +_const_8c03606c: ; from ghidra + ;.SDATA "practice02_parts.dat" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'70, H'72, H'61, H'63, H'74, H'69, H'63, H'65, H'30, H'32, H'5F, H'70, H'61, H'72, H'74, H'73 + .DATA.B H'2E, H'64, H'61, H'74, H'00, H'00, H'00, H'00 +_const_8c036084: ; from ghidra + ;.SDATA "practice02.dat" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'70, H'72, H'61, H'63, H'74, H'69, H'63, H'65, H'30, H'32, H'2E, H'64, H'61, H'74, H'00, H'00 +_const_8c036094: ; from ghidra + ;.SDATA "practice02.pvm" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'70, H'72, H'61, H'63, H'74, H'69, H'63, H'65, H'30, H'32, H'2E, H'70, H'76, H'6D, H'00, H'00 +_const_8c0360a4: ; from defines + ;.SDATA "NO SAVING" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'4E, H'4F, H'20, H'53, H'41, H'56, H'49, H'4E, H'47, H'00, H'00, H'00 +_const_8c0360b0: ; from defines + .DATA.B H'2D, H'00, H'00, H'00 +_const_8c0360b4: ; from defines + ;.SDATA "CHECKING..." + ;.DATA.B H'00 + .DATA.B H'43, H'48, H'45, H'43, H'4B, H'49, H'4E, H'47, H'2E, H'2E, H'2E, H'00 +_const_8c0360c0: ; from defines + ;.SDATA "%04d/%04d BLOCKS" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'25, H'30, H'34, H'64, H'2F, H'25, H'30, H'34, H'64, H'20, H'42, H'4C, H'4F, H'43, H'4B, H'53 + .DATA.B H'00, H'00, H'00, H'00 +_const_8c0360d4: ; from defines + ;.SDATA "NO SAVING OK?" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'4E, H'4F, H'20, H'53, H'41, H'56, H'49, H'4E, H'47, H'20, H'4F, H'4B, H'3F, H'00, H'00, H'00 +_const_8c0360e4: ; from defines + ;.SDATA "MEMORY_CARD IS UNFORMAT" + ;.DATA.B H'00 + .DATA.B H'4D, H'45, H'4D, H'4F, H'52, H'59, H'5F, H'43, H'41, H'52, H'44, H'20, H'49, H'53, H'20, H'55 + .DATA.B H'4E, H'46, H'4F, H'52, H'4D, H'41, H'54, H'00 +_const_8c0360fc: ; from defines + ;.SDATA "MEMORY_CARD IS NOT ENOUGH FREE AREA" + ;.DATA.B H'00 + .DATA.B H'4D, H'45, H'4D, H'4F, H'52, H'59, H'5F, H'43, H'41, H'52, H'44, H'20, H'49, H'53, H'20, H'4E + .DATA.B H'4F, H'54, H'20, H'45, H'4E, H'4F, H'55, H'47, H'48, H'20, H'46, H'52, H'45, H'45, H'20, H'41 + .DATA.B H'52, H'45, H'41, H'00 +_const_8c036120: ; from defines + ;.SDATA "NO_MEMORY_CARD" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'4E, H'4F, H'5F, H'4D, H'45, H'4D, H'4F, H'52, H'59, H'5F, H'43, H'41, H'52, H'44, H'00, H'00 +_const_8c036130: ; from defines + ;.SDATA "NOW SAVING...(%03d%%)" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'4E, H'4F, H'57, H'20, H'53, H'41, H'56, H'49, H'4E, H'47, H'2E, H'2E, H'2E, H'28, H'25, H'30 + .DATA.B H'33, H'64, H'25, H'25, H'29, H'00, H'00, H'00 +_const_8c036148: ; from defines + ;.SDATA "NOW LOADING...(%03d%%)" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'4E, H'4F, H'57, H'20, H'4C, H'4F, H'41, H'44, H'49, H'4E, H'47, H'2E, H'2E, H'2E, H'28, H'25 + .DATA.B H'30, H'33, H'64, H'25, H'25, H'29, H'00, H'00 +_const_8c036160: ; from defines + ;.SDATA "BUS_REPLAY" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'42, H'55, H'53, H'5F, H'52, H'45, H'50, H'4C, H'41, H'59, H'00, H'00 +_const_8c03616c: ; from ghidra + .DATA.B H'00, H'00, H'00, H'00 +_const_8c036170: ; from ghidra + ;.SDATA "SHINJYUKU_EVENT" + ;.DATA.B H'00 + .DATA.B H'53, H'48, H'49, H'4E, H'4A, H'59, H'55, H'4B, H'55, H'5F, H'45, H'56, H'45, H'4E, H'54, H'00 +_const_8c036180: ; from ghidra + ;.SDATA "WANGAN_EVENT" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'57, H'41, H'4E, H'47, H'41, H'4E, H'5F, H'45, H'56, H'45, H'4E, H'54, H'00, H'00, H'00, H'00 +_const_8c036190: ; from ghidra + ;.SDATA "OUME_EVENT" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'4F, H'55, H'4D, H'45, H'5F, H'45, H'56, H'45, H'4E, H'54, H'00, H'00 +_const_8c03619c: ; from ghidra + ;.SDATA "WANGAN_DAY" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'57, H'41, H'4E, H'47, H'41, H'4E, H'5F, H'44, H'41, H'59, H'00, H'00 +_const_8c0361a8: ; from ghidra + ;.SDATA "WANGAN_DAY_AUTO" + ;.DATA.B H'00 + .DATA.B H'57, H'41, H'4E, H'47, H'41, H'4E, H'5F, H'44, H'41, H'59, H'5F, H'41, H'55, H'54, H'4F, H'00 +_const_8c0361b8: ; from ghidra + ;.SDATA "SHINJYUKU_DAY" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'53, H'48, H'49, H'4E, H'4A, H'59, H'55, H'4B, H'55, H'5F, H'44, H'41, H'59, H'00, H'00, H'00 +_const_8c0361c8: ; from ghidra + ;.SDATA "SHINJYUKU_EVENING" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'53, H'48, H'49, H'4E, H'4A, H'59, H'55, H'4B, H'55, H'5F, H'45, H'56, H'45, H'4E, H'49, H'4E + .DATA.B H'47, H'00, H'00, H'00 +_const_8c0361dc: ; from ghidra + ;.SDATA "SHINJYUKU_NIGHT" + ;.DATA.B H'00 + .DATA.B H'53, H'48, H'49, H'4E, H'4A, H'59, H'55, H'4B, H'55, H'5F, H'4E, H'49, H'47, H'48, H'54, H'00 +_const_8c0361ec: ; from ghidra + ;.SDATA "SHINJYUKU_DAY_AUTO" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'53, H'48, H'49, H'4E, H'4A, H'59, H'55, H'4B, H'55, H'5F, H'44, H'41, H'59, H'5F, H'41, H'55 + .DATA.B H'54, H'4F, H'00, H'00 +_const_8c036200: ; from ghidra + ;.SDATA "SHINJYUKU_NIGHT_AUTO" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'53, H'48, H'49, H'4E, H'4A, H'59, H'55, H'4B, H'55, H'5F, H'4E, H'49, H'47, H'48, H'54, H'5F + .DATA.B H'41, H'55, H'54, H'4F, H'00, H'00, H'00, H'00 +_const_8c036218: ; from ghidra + ;.SDATA "OUME_DAY" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'4F, H'55, H'4D, H'45, H'5F, H'44, H'41, H'59, H'00, H'00, H'00, H'00 +_const_8c036224: ; from ghidra + ;.SDATA "OUME_DAY_AUTO" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'4F, H'55, H'4D, H'45, H'5F, H'44, H'41, H'59, H'5F, H'41, H'55, H'54, H'4F, H'00, H'00, H'00 +_const_8c036234: ; from ghidra + ;.SDATA "WANGAN_NIGHT" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'57, H'41, H'4E, H'47, H'41, H'4E, H'5F, H'4E, H'49, H'47, H'48, H'54, H'00, H'00, H'00, H'00 +_const_8c036244: ; from ghidra + ;.SDATA "OUME_NIGHT" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'4F, H'55, H'4D, H'45, H'5F, H'4E, H'49, H'47, H'48, H'54, H'00, H'00 +_const_8c036250: ; from ghidra + ;.SDATA "WANGAN_NIGHT_AUTO" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'57, H'41, H'4E, H'47, H'41, H'4E, H'5F, H'4E, H'49, H'47, H'48, H'54, H'5F, H'41, H'55, H'54 + .DATA.B H'4F, H'00, H'00, H'00 +_const_8c036264: ; from ghidra + ;.SDATA "OUME_NIGHT_AUTO" + ;.DATA.B H'00 + .DATA.B H'4F, H'55, H'4D, H'45, H'5F, H'4E, H'49, H'47, H'48, H'54, H'5F, H'41, H'55, H'54, H'4F, H'00 +_const_8c036274: ; from ghidra + ;.SDATA "REPLAY" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'52, H'45, H'50, H'4C, H'41, H'59, H'00, H'00 +_const_8c03627c: ; from ghidra + ;.SDATA "VISUAL_MEMORY" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'56, H'49, H'53, H'55, H'41, H'4C, H'5F, H'4D, H'45, H'4D, H'4F, H'52, H'59, H'00, H'00, H'00 +_const_8c03628c: ; from defines + .DATA.B H'00, H'00, H'00, H'00 +_const_8c036290: ; from defines + ;.SDATA "\SYSTEM" + ;.DATA.B H'00 + .DATA.B H'5C, H'53, H'59, H'53, H'54, H'45, H'4D, H'00 +_const_8c036298: ; from defines + ;.SDATA "common_parts.dat" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'63, H'6F, H'6D, H'6D, H'6F, H'6E, H'5F, H'70, H'61, H'72, H'74, H'73, H'2E, H'64, H'61, H'74 + .DATA.B H'00, H'00, H'00, H'00 +_const_8c0362ac: ; from defines + ;.SDATA "common.dat" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'63, H'6F, H'6D, H'6D, H'6F, H'6E, H'2E, H'64, H'61, H'74, H'00, H'00 +_const_8c0362b8: ; from defines + ;.SDATA "common.pvm" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'63, H'6F, H'6D, H'6D, H'6F, H'6E, H'2E, H'70, H'76, H'6D, H'00, H'00 +_const_8c0362c4: ; from ghidra + ;.SDATA "やぁ、よく来たね私がここの所長だ、以後よろしく" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'E2, H'82, H'9F, H'81, H'41, H'82, H'E6, H'82, H'AD, H'97, H'88, H'82, H'BD, H'82, H'CB + .DATA.B H'3C, H'45, H'3E, H'8E, H'84, H'82, H'AA, H'82, H'B1, H'82, H'B1, H'82, H'CC, H'8F, H'8A, H'92 + .DATA.B H'B7, H'82, H'BE, H'81, H'41, H'88, H'C8, H'8C, H'E3, H'82, H'E6, H'82, H'EB, H'82, H'B5, H'82 + .DATA.B H'AD, H'00, H'00, H'00 +_const_8c0362f8: ; aggressive search + ;.SDATA "今日から一ヶ月間、キミにはここで実地研修を受けてもらう" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8D, H'A1, H'93, H'FA, H'82, H'A9, H'82, H'E7, H'88, H'EA, H'83, H'96, H'8C, H'8E, H'8A, H'D4 + .DATA.B H'81, H'41, H'83, H'4C, H'83, H'7E, H'82, H'C9, H'82, H'CD, H'3C, H'45, H'3E, H'82, H'B1, H'82 + .DATA.B H'B1, H'82, H'C5, H'8E, H'C0, H'92, H'6E, H'8C, H'A4, H'8F, H'43, H'82, H'F0, H'8E, H'F3, H'82 + .DATA.B H'AF, H'82, H'C4, H'82, H'E0, H'82, H'E7, H'82, H'A4, H'00, H'00, H'00 +_const_8c036334: ; aggressive search + ;.SDATA "この研修に合格するとキミは晴れて都営バスの運転手だ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'B1, H'82, H'CC, H'8C, H'A4, H'8F, H'43, H'82, H'C9, H'8D, H'87, H'8A, H'69, H'82, H'B7 + .DATA.B H'82, H'E9, H'82, H'C6, H'3C, H'45, H'3E, H'83, H'4C, H'83, H'7E, H'82, H'CD, H'90, H'B0, H'82 + .DATA.B H'EA, H'82, H'C4, H'93, H'73, H'89, H'63, H'83, H'6F, H'83, H'58, H'82, H'CC, H'89, H'5E, H'93 + .DATA.B H'5D, H'8E, H'E8, H'82, H'BE, H'00, H'00, H'00 +_const_8c03636c: ; aggressive search + ;.SDATA "最後の研修だが気を抜かずに頑張ってくれよ" + ;.DATA.B H'00 + .DATA.B H'8D, H'C5, H'8C, H'E3, H'82, H'CC, H'8C, H'A4, H'8F, H'43, H'82, H'BE, H'82, H'AA, H'3C, H'45 + .DATA.B H'3E, H'8B, H'43, H'82, H'F0, H'94, H'B2, H'82, H'A9, H'82, H'B8, H'82, H'C9, H'8A, H'E6, H'92 + .DATA.B H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00 +_const_8c036398: ; aggressive search + ;.SDATA "まずは比較的簡単な〈梅76〉と〈虹01〉の2コースで研修しよう" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'DC, H'82, H'B8, H'82, H'CD, H'94, H'E4, H'8A, H'72, H'93, H'49, H'8A, H'C8, H'92, H'50 + .DATA.B H'82, H'C8, H'81, H'71, H'94, H'7E, H'82, H'56, H'82, H'55, H'81, H'72, H'82, H'C6, H'3C, H'45 + .DATA.B H'3E, H'81, H'71, H'93, H'F8, H'82, H'4F, H'82, H'50, H'81, H'72, H'82, H'CC, H'82, H'51, H'83 + .DATA.B H'52, H'81, H'5B, H'83, H'58, H'82, H'C5, H'8C, H'A4, H'8F, H'43, H'82, H'B5, H'82, H'E6, H'82 + .DATA.B H'A4, H'00, H'00, H'00 +_const_8c0363dc: ; aggressive search + ;.SDATA "視界も広く、交通量も多くない時間帯を選んでいるので、研修にはちょうどいいだろう" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8E, H'8B, H'8A, H'45, H'82, H'E0, H'8D, H'4C, H'82, H'AD, H'81, H'41, H'8C, H'F0, H'92, H'CA + .DATA.B H'97, H'CA, H'82, H'E0, H'91, H'BD, H'82, H'AD, H'82, H'C8, H'82, H'A2, H'8E, H'9E, H'8A, H'D4 + .DATA.B H'91, H'D1, H'82, H'F0, H'3C, H'45, H'3E, H'91, H'49, H'82, H'F1, H'82, H'C5, H'82, H'A2, H'82 + .DATA.B H'E9, H'82, H'CC, H'82, H'C5, H'81, H'41, H'8C, H'A4, H'8F, H'43, H'82, H'C9, H'82, H'CD, H'82 + .DATA.B H'BF, H'82, H'E5, H'82, H'A4, H'82, H'C7, H'82, H'A2, H'82, H'A2, H'82, H'BE, H'82, H'EB, H'82 + .DATA.B H'A4, H'00, H'00, H'00 +_const_8c036430: ; aggressive search + ;.SDATA "慣れてきたら、少しづつ難しいコースも走れるようになるからな" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8A, H'B5, H'82, H'EA, H'82, H'C4, H'82, H'AB, H'82, H'BD, H'82, H'E7, H'81, H'41, H'8F, H'AD + .DATA.B H'82, H'B5, H'82, H'C3, H'82, H'C2, H'93, H'EF, H'82, H'B5, H'82, H'A2, H'83, H'52, H'81, H'5B + .DATA.B H'83, H'58, H'82, H'E0, H'3C, H'45, H'3E, H'91, H'96, H'82, H'EA, H'82, H'E9, H'82, H'E6, H'82 + .DATA.B H'A4, H'82, H'C9, H'82, H'C8, H'82, H'E9, H'82, H'A9, H'82, H'E7, H'82, H'C8, H'00, H'00, H'00 +_const_8c036470: ; aggressive search + ;.SDATA "いきなりコースを走るのが不安なら練習することもできるぞ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'A2, H'82, H'AB, H'82, H'C8, H'82, H'E8, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'F0 + .DATA.B H'91, H'96, H'82, H'E9, H'82, H'CC, H'82, H'AA, H'95, H'73, H'88, H'C0, H'82, H'C8, H'82, H'E7 + .DATA.B H'3C, H'45, H'3E, H'97, H'FB, H'8F, H'4B, H'82, H'B7, H'82, H'E9, H'82, H'B1, H'82, H'C6, H'82 + .DATA.B H'E0, H'82, H'C5, H'82, H'AB, H'82, H'E9, H'82, H'BC, H'00, H'00, H'00 +_const_8c0364ac: ; aggressive search + ;.SDATA "練習したい場合は画面左上のPRACTICEを選ぶといい" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'97, H'FB, H'8F, H'4B, H'82, H'B5, H'82, H'BD, H'82, H'A2, H'8F, H'EA, H'8D, H'87, H'82, H'CD + .DATA.B H'89, H'E6, H'96, H'CA, H'8D, H'B6, H'8F, H'E3, H'82, H'CC, H'3C, H'45, H'3E, H'82, H'6F, H'82 + .DATA.B H'71, H'82, H'60, H'82, H'62, H'82, H'73, H'82, H'68, H'82, H'62, H'82, H'64, H'82, H'F0, H'91 + .DATA.B H'49, H'82, H'D4, H'82, H'C6, H'82, H'A2, H'82, H'A2, H'00, H'00, H'00 +_const_8c0364e8: ; aggressive search + ;.SDATA "キミの成績には、正直、びっくりしたよ実に素晴らしい!" + ;.DATA.B H'00 + .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'CC, H'90, H'AC, H'90, H'D1, H'82, H'C9, H'82, H'CD, H'81, H'41 + .DATA.B H'90, H'B3, H'92, H'BC, H'81, H'41, H'82, H'D1, H'82, H'C1, H'82, H'AD, H'82, H'E8, H'82, H'B5 + .DATA.B H'82, H'BD, H'82, H'E6, H'3C, H'45, H'3E, H'8E, H'C0, H'82, H'C9, H'91, H'66, H'90, H'B0, H'82 + .DATA.B H'E7, H'82, H'B5, H'82, H'A2, H'81, H'49, H'00 +_const_8c036520: ; aggressive search + ;.SDATA "どのコースをとってもまさにパーフェクト!" + ;.DATA.B H'00 + .DATA.B H'82, H'C7, H'82, H'CC, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'F0, H'82, H'C6, H'82, H'C1 + .DATA.B H'82, H'C4, H'82, H'E0, H'3C, H'45, H'3E, H'82, H'DC, H'82, H'B3, H'82, H'C9, H'83, H'70, H'81 + .DATA.B H'5B, H'83, H'74, H'83, H'46, H'83, H'4E, H'83, H'67, H'81, H'49, H'00 +_const_8c03654c: ; aggressive search + ;.SDATA "おめでとう実地研修は満点で合格だ!" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'A8, H'82, H'DF, H'82, H'C5, H'82, H'C6, H'82, H'A4, H'3C, H'45, H'3E, H'8E, H'C0, H'92 + .DATA.B H'6E, H'8C, H'A4, H'8F, H'43, H'82, H'CD, H'96, H'9E, H'93, H'5F, H'82, H'C5, H'8D, H'87, H'8A + .DATA.B H'69, H'82, H'BE, H'81, H'49, H'00, H'00, H'00 +_const_8c036574: ; aggressive search + ;.SDATA "キミならどこに配属されても大丈夫研修を担当した私も鼻が高いよ" + ;.DATA.B H'00 + .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'C8, H'82, H'E7, H'82, H'C7, H'82, H'B1, H'82, H'C9, H'94, H'7A + .DATA.B H'91, H'AE, H'82, H'B3, H'82, H'EA, H'82, H'C4, H'82, H'E0, H'91, H'E5, H'8F, H'E4, H'95, H'76 + .DATA.B H'3C, H'45, H'3E, H'8C, H'A4, H'8F, H'43, H'82, H'F0, H'92, H'53, H'93, H'96, H'82, H'B5, H'82 + .DATA.B H'BD, H'8E, H'84, H'82, H'E0, H'95, H'40, H'82, H'AA, H'8D, H'82, H'82, H'A2, H'82, H'E6, H'00 +_const_8c0365b4: ; aggressive search + ;.SDATA "都営バスの未来を担う一員としてキミには期待しているぞ" + ;.DATA.B H'00 + .DATA.B H'93, H'73, H'89, H'63, H'83, H'6F, H'83, H'58, H'82, H'CC, H'96, H'A2, H'97, H'88, H'82, H'F0 + .DATA.B H'92, H'53, H'82, H'A4, H'88, H'EA, H'88, H'F5, H'82, H'C6, H'82, H'B5, H'82, H'C4, H'3C, H'45 + .DATA.B H'3E, H'83, H'4C, H'83, H'7E, H'82, H'C9, H'82, H'CD, H'8A, H'FA, H'91, H'D2, H'82, H'B5, H'82 + .DATA.B H'C4, H'82, H'A2, H'82, H'E9, H'82, H'BC, H'00 +_const_8c0365ec: ; aggressive search + ;.SDATA "昨日で無事、実地研修が終了した本当によく頑張ったな" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8D, H'F0, H'93, H'FA, H'82, H'C5, H'96, H'B3, H'8E, H'96, H'81, H'41, H'8E, H'C0, H'92, H'6E + .DATA.B H'8C, H'A4, H'8F, H'43, H'82, H'AA, H'8F, H'49, H'97, H'B9, H'82, H'B5, H'82, H'BD, H'3C, H'45 + .DATA.B H'3E, H'96, H'7B, H'93, H'96, H'82, H'C9, H'82, H'E6, H'82, H'AD, H'8A, H'E6, H'92, H'A3, H'82 + .DATA.B H'C1, H'82, H'BD, H'82, H'C8, H'00, H'00, H'00 +_const_8c036624: ; aggressive search + ;.SDATA "キミの成績を見せてもらったが申し分のない成績だったよ" + ;.DATA.B H'00 + .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'CC, H'90, H'AC, H'90, H'D1, H'82, H'F0, H'8C, H'A9, H'82, H'B9 + .DATA.B H'82, H'C4, H'82, H'E0, H'82, H'E7, H'82, H'C1, H'82, H'BD, H'82, H'AA, H'3C, H'45, H'3E, H'90 + .DATA.B H'5C, H'82, H'B5, H'95, H'AA, H'82, H'CC, H'82, H'C8, H'82, H'A2, H'90, H'AC, H'90, H'D1, H'82 + .DATA.B H'BE, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'00 +_const_8c03665c: ; aggressive search + ;.SDATA "全コースとも高得点をあげているこれは並大抵の事ではない" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'91, H'53, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'C6, H'82, H'E0, H'8D, H'82, H'93, H'BE + .DATA.B H'93, H'5F, H'82, H'F0, H'82, H'A0, H'82, H'B0, H'82, H'C4, H'82, H'A2, H'82, H'E9, H'3C, H'45 + .DATA.B H'3E, H'82, H'B1, H'82, H'EA, H'82, H'CD, H'95, H'C0, H'91, H'E5, H'92, H'EF, H'82, H'CC, H'8E + .DATA.B H'96, H'82, H'C5, H'82, H'CD, H'82, H'C8, H'82, H'A2, H'00, H'00, H'00 +_const_8c036698: ; aggressive search + ;.SDATA "おめでとう実地研修はもちろん合格だ!" + ;.DATA.B H'00 + .DATA.B H'82, H'A8, H'82, H'DF, H'82, H'C5, H'82, H'C6, H'82, H'A4, H'3C, H'45, H'3E, H'8E, H'C0, H'92 + .DATA.B H'6E, H'8C, H'A4, H'8F, H'43, H'82, H'CD, H'82, H'E0, H'82, H'BF, H'82, H'EB, H'82, H'F1, H'8D + .DATA.B H'87, H'8A, H'69, H'82, H'BE, H'81, H'49, H'00 +_const_8c0366c0: ; aggressive search + ;.SDATA "今日からキミは都営バスの立派な運転手だこれからもよろしく頼むぞ!" + ;.DATA.B H'00 + .DATA.B H'8D, H'A1, H'93, H'FA, H'82, H'A9, H'82, H'E7, H'83, H'4C, H'83, H'7E, H'82, H'CD, H'93, H'73 + .DATA.B H'89, H'63, H'83, H'6F, H'83, H'58, H'82, H'CC, H'97, H'A7, H'94, H'68, H'82, H'C8, H'89, H'5E + .DATA.B H'93, H'5D, H'8E, H'E8, H'82, H'BE, H'3C, H'45, H'3E, H'82, H'B1, H'82, H'EA, H'82, H'A9, H'82 + .DATA.B H'E7, H'82, H'E0, H'82, H'E6, H'82, H'EB, H'82, H'B5, H'82, H'AD, H'97, H'8A, H'82, H'DE, H'82 + .DATA.B H'BC, H'81, H'49, H'00 +_const_8c036704: ; aggressive search + ;.SDATA "キミの成績を見せてもらったがまぁ、十分に合格点をあげられるだろう" + ;.DATA.B H'00 + .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'CC, H'90, H'AC, H'90, H'D1, H'82, H'F0, H'8C, H'A9, H'82, H'B9 + .DATA.B H'82, H'C4, H'82, H'E0, H'82, H'E7, H'82, H'C1, H'82, H'BD, H'82, H'AA, H'3C, H'45, H'3E, H'82 + .DATA.B H'DC, H'82, H'9F, H'81, H'41, H'8F, H'5C, H'95, H'AA, H'82, H'C9, H'8D, H'87, H'8A, H'69, H'93 + .DATA.B H'5F, H'82, H'F0, H'82, H'A0, H'82, H'B0, H'82, H'E7, H'82, H'EA, H'82, H'E9, H'82, H'BE, H'82 + .DATA.B H'EB, H'82, H'A4, H'00 +_const_8c036748: ; aggressive search + ;.SDATA "各コース、致命的なミスはなく成績も悪くない" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8A, H'65, H'83, H'52, H'81, H'5B, H'83, H'58, H'81, H'41, H'92, H'76, H'96, H'BD, H'93, H'49 + .DATA.B H'82, H'C8, H'83, H'7E, H'83, H'58, H'82, H'CD, H'82, H'C8, H'82, H'AD, H'3C, H'45, H'3E, H'90 + .DATA.B H'AC, H'90, H'D1, H'82, H'E0, H'88, H'AB, H'82, H'AD, H'82, H'C8, H'82, H'A2, H'00, H'00, H'00 +_const_8c036778: ; aggressive search + ;.SDATA "これからも注意を怠ることなくこの調子でますます努力・精進してくれ" + ;.DATA.B H'00 + .DATA.B H'82, H'B1, H'82, H'EA, H'82, H'A9, H'82, H'E7, H'82, H'E0, H'92, H'8D, H'88, H'D3, H'82, H'F0 + .DATA.B H'91, H'D3, H'82, H'E9, H'82, H'B1, H'82, H'C6, H'82, H'C8, H'82, H'AD, H'3C, H'45, H'3E, H'82 + .DATA.B H'B1, H'82, H'CC, H'92, H'B2, H'8E, H'71, H'82, H'C5, H'82, H'DC, H'82, H'B7, H'82, H'DC, H'82 + .DATA.B H'B7, H'93, H'77, H'97, H'CD, H'81, H'45, H'90, H'B8, H'90, H'69, H'82, H'B5, H'82, H'C4, H'82 + .DATA.B H'AD, H'82, H'EA, H'00 +_const_8c0367bc: ; aggressive search + ;.SDATA "おめでとう実地研修は合格だ!" + ;.DATA.B H'00 + .DATA.B H'82, H'A8, H'82, H'DF, H'82, H'C5, H'82, H'C6, H'82, H'A4, H'3C, H'45, H'3E, H'8E, H'C0, H'92 + .DATA.B H'6E, H'8C, H'A4, H'8F, H'43, H'82, H'CD, H'8D, H'87, H'8A, H'69, H'82, H'BE, H'81, H'49, H'00 +_const_8c0367dc: ; aggressive search + ;.SDATA "明日からも気を抜くことなく、研修の延長線だと思って、業務に取り組んでくれ" + ;.DATA.B H'00 + .DATA.B H'96, H'BE, H'93, H'FA, H'82, H'A9, H'82, H'E7, H'82, H'E0, H'8B, H'43, H'82, H'F0, H'94, H'B2 + .DATA.B H'82, H'AD, H'82, H'B1, H'82, H'C6, H'82, H'C8, H'82, H'AD, H'81, H'41, H'3C, H'45, H'3E, H'8C + .DATA.B H'A4, H'8F, H'43, H'82, H'CC, H'89, H'84, H'92, H'B7, H'90, H'FC, H'82, H'BE, H'82, H'C6, H'8E + .DATA.B H'76, H'82, H'C1, H'82, H'C4, H'81, H'41, H'8B, H'C6, H'96, H'B1, H'82, H'C9, H'8E, H'E6, H'82 + .DATA.B H'E8, H'91, H'67, H'82, H'F1, H'82, H'C5, H'82, H'AD, H'82, H'EA, H'00 +_const_8c036828: ; aggressive search + ;.SDATA "1ヶ月間本当によく頑張ったな" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'82, H'50, H'83, H'96, H'8C, H'8E, H'8A, H'D4, H'96, H'7B, H'93, H'96, H'82, H'C9, H'82, H'E6 + .DATA.B H'82, H'AD, H'8A, H'E6, H'92, H'A3, H'82, H'C1, H'82, H'BD, H'82, H'C8, H'00, H'00, H'00, H'00 +_const_8c036848: ; aggressive search + ;.SDATA "…と言いたい所なんだが合格点には少し及ばなかったようだ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'81, H'63, H'82, H'C6, H'8C, H'BE, H'82, H'A2, H'82, H'BD, H'82, H'A2, H'8F, H'8A, H'82, H'C8 + .DATA.B H'82, H'F1, H'82, H'BE, H'82, H'AA, H'3C, H'45, H'3E, H'8D, H'87, H'8A, H'69, H'93, H'5F, H'82 + .DATA.B H'C9, H'82, H'CD, H'8F, H'AD, H'82, H'B5, H'8B, H'79, H'82, H'CE, H'82, H'C8, H'82, H'A9, H'82 + .DATA.B H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'00, H'00, H'00 +_const_8c036884: ; aggressive search + ;.SDATA "運転手は、乗客の命を預かっているんだ軽率な行動やミスは許されない" + ;.DATA.B H'00 + .DATA.B H'89, H'5E, H'93, H'5D, H'8E, H'E8, H'82, H'CD, H'81, H'41, H'8F, H'E6, H'8B, H'71, H'82, H'CC + .DATA.B H'96, H'BD, H'82, H'F0, H'97, H'61, H'82, H'A9, H'82, H'C1, H'82, H'C4, H'82, H'A2, H'82, H'E9 + .DATA.B H'82, H'F1, H'82, H'BE, H'3C, H'45, H'3E, H'8C, H'79, H'97, H'A6, H'82, H'C8, H'8D, H'73, H'93 + .DATA.B H'AE, H'82, H'E2, H'83, H'7E, H'83, H'58, H'82, H'CD, H'8B, H'96, H'82, H'B3, H'82, H'EA, H'82 + .DATA.B H'C8, H'82, H'A2, H'00 +_const_8c0368c8: ; aggressive search + ;.SDATA "キミはもう少し研修を続けた方が良さそうだな、頑張ってくれよ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'CD, H'82, H'E0, H'82, H'A4, H'8F, H'AD, H'82, H'B5, H'8C, H'A4 + .DATA.B H'8F, H'43, H'82, H'F0, H'91, H'B1, H'82, H'AF, H'82, H'BD, H'95, H'FB, H'82, H'AA, H'3C, H'45 + .DATA.B H'3E, H'97, H'C7, H'82, H'B3, H'82, H'BB, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'81, H'41, H'8A + .DATA.B H'E6, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00 +_const_8c036908: ; aggressive search + ;.SDATA "ここでは、好きなコースを何度でも走る事ができるぞ" + ;.DATA.B H'00 + .DATA.B H'82, H'B1, H'82, H'B1, H'82, H'C5, H'82, H'CD, H'81, H'41, H'8D, H'44, H'82, H'AB, H'82, H'C8 + .DATA.B H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'F0, H'3C, H'45, H'3E, H'89, H'BD, H'93, H'78, H'82 + .DATA.B H'C5, H'82, H'E0, H'91, H'96, H'82, H'E9, H'8E, H'96, H'82, H'AA, H'82, H'C5, H'82, H'AB, H'82 + .DATA.B H'E9, H'82, H'BC, H'00 +_const_8c03693c: ; aggressive search + ;.SDATA "但しストーリーモードで走ったコース限る" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'92, H'41, H'82, H'B5, H'83, H'58, H'83, H'67, H'81, H'5B, H'83, H'8A, H'81, H'5B, H'83, H'82 + .DATA.B H'81, H'5B, H'83, H'68, H'82, H'C5, H'91, H'96, H'82, H'C1, H'82, H'BD, H'83, H'52, H'81, H'5B + .DATA.B H'83, H'58, H'8C, H'C0, H'82, H'E9, H'00, H'00 +_const_8c036964: ; aggressive search + ;.SDATA "さぁ、今日の研修を選んでくれ" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'82, H'B3, H'82, H'9F, H'81, H'41, H'8D, H'A1, H'93, H'FA, H'82, H'CC, H'8C, H'A4, H'8F, H'43 + .DATA.B H'82, H'F0, H'91, H'49, H'82, H'F1, H'82, H'C5, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00, H'00 +_const_8c036984: ; aggressive search + ;.SDATA "昨日は充実した練習が出来たようだね" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'8D, H'F0, H'93, H'FA, H'82, H'CD, H'8F, H'5B, H'8E, H'C0, H'82, H'B5, H'82, H'BD, H'97, H'FB + .DATA.B H'8F, H'4B, H'82, H'AA, H'8F, H'6F, H'97, H'88, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE + .DATA.B H'82, H'CB, H'00, H'00 +_const_8c0369a8: ; aggressive search + ;.SDATA "昨日はなんとかうまく走れたようだねその調子で頑張ってくれよ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8D, H'F0, H'93, H'FA, H'82, H'CD, H'82, H'C8, H'82, H'F1, H'82, H'C6, H'82, H'A9, H'82, H'A4 + .DATA.B H'82, H'DC, H'82, H'AD, H'91, H'96, H'82, H'EA, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE + .DATA.B H'82, H'CB, H'3C, H'45, H'3E, H'82, H'BB, H'82, H'CC, H'92, H'B2, H'8E, H'71, H'82, H'C5, H'8A + .DATA.B H'E6, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00 +_const_8c0369e8: ; aggressive search + ;.SDATA "昨日は素晴らしい成績だったな" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'8D, H'F0, H'93, H'FA, H'82, H'CD, H'91, H'66, H'90, H'B0, H'82, H'E7, H'82, H'B5, H'82, H'A2 + .DATA.B H'90, H'AC, H'90, H'D1, H'82, H'BE, H'82, H'C1, H'82, H'BD, H'82, H'C8, H'00, H'00, H'00, H'00 +_const_8c036a08: ; aggressive search + ;.SDATA "キミには優秀ドライバーの証しゴールドバッジを与えよう" + ;.DATA.B H'00 + .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'C9, H'82, H'CD, H'97, H'44, H'8F, H'47, H'83, H'68, H'83, H'89 + .DATA.B H'83, H'43, H'83, H'6F, H'81, H'5B, H'82, H'CC, H'8F, H'D8, H'82, H'B5, H'3C, H'45, H'3E, H'83 + .DATA.B H'53, H'81, H'5B, H'83, H'8B, H'83, H'68, H'83, H'6F, H'83, H'62, H'83, H'57, H'82, H'F0, H'97 + .DATA.B H'5E, H'82, H'A6, H'82, H'E6, H'82, H'A4, H'00 +_const_8c036a40: ; aggressive search + ;.SDATA "この調子で頑張ってくれよ" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'82, H'B1, H'82, H'CC, H'92, H'B2, H'8E, H'71, H'82, H'C5, H'8A, H'E6, H'92, H'A3, H'82, H'C1 + .DATA.B H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00, H'00 +_const_8c036a5c: ; aggressive search + ;.SDATA "キミには優秀ドライバーの証しシルバーバッジを与えよう" + ;.DATA.B H'00 + .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'C9, H'82, H'CD, H'97, H'44, H'8F, H'47, H'83, H'68, H'83, H'89 + .DATA.B H'83, H'43, H'83, H'6F, H'81, H'5B, H'82, H'CC, H'8F, H'D8, H'82, H'B5, H'3C, H'45, H'3E, H'83 + .DATA.B H'56, H'83, H'8B, H'83, H'6F, H'81, H'5B, H'83, H'6F, H'83, H'62, H'83, H'57, H'82, H'F0, H'97 + .DATA.B H'5E, H'82, H'A6, H'82, H'E6, H'82, H'A4, H'00 +_const_8c036a94: ; aggressive search + ;.SDATA "もっと高得点が出れば、さらに上のゴールドバッジもあるからな" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'E0, H'82, H'C1, H'82, H'C6, H'8D, H'82, H'93, H'BE, H'93, H'5F, H'82, H'AA, H'8F, H'6F + .DATA.B H'82, H'EA, H'82, H'CE, H'81, H'41, H'82, H'B3, H'82, H'E7, H'82, H'C9, H'8F, H'E3, H'82, H'CC + .DATA.B H'3C, H'45, H'3E, H'83, H'53, H'81, H'5B, H'83, H'8B, H'83, H'68, H'83, H'6F, H'83, H'62, H'83 + .DATA.B H'57, H'82, H'E0, H'82, H'A0, H'82, H'E9, H'82, H'A9, H'82, H'E7, H'82, H'C8, H'00, H'00, H'00 +_const_8c036ad4: ; aggressive search + ;.SDATA "キミには優秀ドライバーの証しブロンズバッジを与えよう" + ;.DATA.B H'00 + .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'C9, H'82, H'CD, H'97, H'44, H'8F, H'47, H'83, H'68, H'83, H'89 + .DATA.B H'83, H'43, H'83, H'6F, H'81, H'5B, H'82, H'CC, H'8F, H'D8, H'82, H'B5, H'3C, H'45, H'3E, H'83 + .DATA.B H'75, H'83, H'8D, H'83, H'93, H'83, H'59, H'83, H'6F, H'83, H'62, H'83, H'57, H'82, H'F0, H'97 + .DATA.B H'5E, H'82, H'A6, H'82, H'E6, H'82, H'A4, H'00 +_const_8c036b0c: ; aggressive search + ;.SDATA "もっと高得点が出れば、さらに上のシルバーバッジやゴールドバッジもあるぞ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'E0, H'82, H'C1, H'82, H'C6, H'8D, H'82, H'93, H'BE, H'93, H'5F, H'82, H'AA, H'8F, H'6F + .DATA.B H'82, H'EA, H'82, H'CE, H'81, H'41, H'82, H'B3, H'82, H'E7, H'82, H'C9, H'8F, H'E3, H'82, H'CC + .DATA.B H'3C, H'45, H'3E, H'83, H'56, H'83, H'8B, H'83, H'6F, H'81, H'5B, H'83, H'6F, H'83, H'62, H'83 + .DATA.B H'57, H'82, H'E2, H'83, H'53, H'81, H'5B, H'83, H'8B, H'83, H'68, H'83, H'6F, H'83, H'62, H'83 + .DATA.B H'57, H'82, H'E0, H'82, H'A0, H'82, H'E9, H'82, H'BC, H'00, H'00, H'00 +_const_8c036b58: ; aggressive search + ;.SDATA "昨日は残念な結果になってしまったなまぁ、誰にだって失敗はある" + ;.DATA.B H'00 + .DATA.B H'8D, H'F0, H'93, H'FA, H'82, H'CD, H'8E, H'63, H'94, H'4F, H'82, H'C8, H'8C, H'8B, H'89, H'CA + .DATA.B H'82, H'C9, H'82, H'C8, H'82, H'C1, H'82, H'C4, H'82, H'B5, H'82, H'DC, H'82, H'C1, H'82, H'BD + .DATA.B H'82, H'C8, H'3C, H'45, H'3E, H'82, H'DC, H'82, H'9F, H'81, H'41, H'92, H'4E, H'82, H'C9, H'82 + .DATA.B H'BE, H'82, H'C1, H'82, H'C4, H'8E, H'B8, H'94, H'73, H'82, H'CD, H'82, H'A0, H'82, H'E9, H'00 +_const_8c036b98: ; aggressive search + ;.SDATA "特に慣れないうちは仕方ないさ気分を改めて今日も頑張ってくれよ" + ;.DATA.B H'00 + .DATA.B H'93, H'C1, H'82, H'C9, H'8A, H'B5, H'82, H'EA, H'82, H'C8, H'82, H'A2, H'82, H'A4, H'82, H'BF + .DATA.B H'82, H'CD, H'8E, H'64, H'95, H'FB, H'82, H'C8, H'82, H'A2, H'82, H'B3, H'3C, H'45, H'3E, H'8B + .DATA.B H'43, H'95, H'AA, H'82, H'F0, H'89, H'FC, H'82, H'DF, H'82, H'C4, H'8D, H'A1, H'93, H'FA, H'82 + .DATA.B H'E0, H'8A, H'E6, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00 +_const_8c036bd8: ; aggressive search + ;.SDATA "それから…経験も積んだようなのでそろそろ違うコースで研修してみよう" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'BB, H'82, H'EA, H'82, H'A9, H'82, H'E7, H'81, H'63, H'8C, H'6F, H'8C, H'B1, H'82, H'E0 + .DATA.B H'90, H'CF, H'82, H'F1, H'82, H'BE, H'82, H'E6, H'82, H'A4, H'82, H'C8, H'82, H'CC, H'82, H'C5 + .DATA.B H'3C, H'45, H'3E, H'82, H'BB, H'82, H'EB, H'82, H'BB, H'82, H'EB, H'88, H'E1, H'82, H'A4, H'83 + .DATA.B H'52, H'81, H'5B, H'83, H'58, H'82, H'C5, H'8C, H'A4, H'8F, H'43, H'82, H'B5, H'82, H'C4, H'82 + .DATA.B H'DD, H'82, H'E6, H'82, H'A4, H'00, H'00, H'00 +_const_8c036c20: ; aggressive search + ;.SDATA "今までより、少し難しくなっていると思うがキミなら大丈夫だ" + ;.DATA.B H'00 + .DATA.B H'8D, H'A1, H'82, H'DC, H'82, H'C5, H'82, H'E6, H'82, H'E8, H'81, H'41, H'8F, H'AD, H'82, H'B5 + .DATA.B H'93, H'EF, H'82, H'B5, H'82, H'AD, H'82, H'C8, H'82, H'C1, H'82, H'C4, H'82, H'A2, H'82, H'E9 + .DATA.B H'82, H'C6, H'8E, H'76, H'82, H'A4, H'82, H'AA, H'3C, H'45, H'3E, H'83, H'4C, H'83, H'7E, H'82 + .DATA.B H'C8, H'82, H'E7, H'91, H'E5, H'8F, H'E4, H'95, H'76, H'82, H'BE, H'00 +_const_8c036c5c: ; aggressive search + ;.SDATA "勇気を持ってチャレンジしてくれ" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'97, H'45, H'8B, H'43, H'82, H'F0, H'8E, H'9D, H'82, H'C1, H'82, H'C4, H'83, H'60, H'83, H'83 + .DATA.B H'83, H'8C, H'83, H'93, H'83, H'57, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'00, H'00 +_const_8c036c7c: ; aggressive search + ;.SDATA "そうそう、今日はお客さんから手紙が届いたよ" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'82, H'BB, H'82, H'A4, H'82, H'BB, H'82, H'A4, H'81, H'41, H'8D, H'A1, H'93, H'FA, H'82, H'CD + .DATA.B H'82, H'A8, H'8B, H'71, H'82, H'B3, H'82, H'F1, H'82, H'A9, H'82, H'E7, H'8E, H'E8, H'8E, H'86 + .DATA.B H'82, H'AA, H'93, H'CD, H'82, H'A2, H'82, H'BD, H'82, H'E6, H'00, H'00 +_const_8c036ca8: ; aggressive search + ;.SDATA "掲示板に張っておいたから、見るときはALBUMを選んでくれ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8C, H'66, H'8E, H'A6, H'94, H'C2, H'82, H'C9, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'A8 + .DATA.B H'82, H'A2, H'82, H'BD, H'82, H'A9, H'82, H'E7, H'81, H'41, H'3C, H'45, H'3E, H'8C, H'A9, H'82 + .DATA.B H'E9, H'82, H'C6, H'82, H'AB, H'82, H'CD, H'82, H'60, H'82, H'6B, H'82, H'61, H'82, H'74, H'82 + .DATA.B H'6C, H'82, H'F0, H'91, H'49, H'82, H'F1, H'82, H'C5, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00 +_const_8c036ce8: ; aggressive search + ;.SDATA "お客さんってありがたいもんだね運転手やってて本当に良かったって実感するよ" + ;.DATA.B H'00 + .DATA.B H'82, H'A8, H'8B, H'71, H'82, H'B3, H'82, H'F1, H'82, H'C1, H'82, H'C4, H'82, H'A0, H'82, H'E8 + .DATA.B H'82, H'AA, H'82, H'BD, H'82, H'A2, H'82, H'E0, H'82, H'F1, H'82, H'BE, H'82, H'CB, H'3C, H'45 + .DATA.B H'3E, H'89, H'5E, H'93, H'5D, H'8E, H'E8, H'82, H'E2, H'82, H'C1, H'82, H'C4, H'82, H'C4, H'96 + .DATA.B H'7B, H'93, H'96, H'82, H'C9, H'97, H'C7, H'82, H'A9, H'82, H'C1, H'82, H'BD, H'82, H'C1, H'82 + .DATA.B H'C4, H'8E, H'C0, H'8A, H'B4, H'82, H'B7, H'82, H'E9, H'82, H'E6, H'00 +_const_8c036d34: ; aggressive search + ;.SDATA "残念だがそのコースはまだ走れないよもっと経験を積んでからだな" + ;.DATA.B H'00 + .DATA.B H'8E, H'63, H'94, H'4F, H'82, H'BE, H'82, H'AA, H'82, H'BB, H'82, H'CC, H'83, H'52, H'81, H'5B + .DATA.B H'83, H'58, H'82, H'CD, H'82, H'DC, H'82, H'BE, H'91, H'96, H'82, H'EA, H'82, H'C8, H'82, H'A2 + .DATA.B H'82, H'E6, H'3C, H'45, H'3E, H'82, H'E0, H'82, H'C1, H'82, H'C6, H'8C, H'6F, H'8C, H'B1, H'82 + .DATA.B H'F0, H'90, H'CF, H'82, H'F1, H'82, H'C5, H'82, H'A9, H'82, H'E7, H'82, H'BE, H'82, H'C8, H'00 +_const_8c036d74: ; aggressive search + ;.SDATA "はやる気持ちも分からんでもないが、今日は練習してもらうよ" + ;.DATA.B H'00 + .DATA.B H'82, H'CD, H'82, H'E2, H'82, H'E9, H'8B, H'43, H'8E, H'9D, H'82, H'BF, H'82, H'E0, H'95, H'AA + .DATA.B H'82, H'A9, H'82, H'E7, H'82, H'F1, H'82, H'C5, H'82, H'E0, H'82, H'C8, H'82, H'A2, H'82, H'AA + .DATA.B H'81, H'41, H'3C, H'45, H'3E, H'8D, H'A1, H'93, H'FA, H'82, H'CD, H'97, H'FB, H'8F, H'4B, H'82 + .DATA.B H'B5, H'82, H'C4, H'82, H'E0, H'82, H'E7, H'82, H'A4, H'82, H'E6, H'00 +_const_8c036db0: ; aggressive search + ;.SDATA "長かった研修も今日が最後だな" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'92, H'B7, H'82, H'A9, H'82, H'C1, H'82, H'BD, H'8C, H'A4, H'8F, H'43, H'82, H'E0, H'8D, H'A1 + .DATA.B H'93, H'FA, H'82, H'AA, H'8D, H'C5, H'8C, H'E3, H'82, H'BE, H'82, H'C8, H'00, H'00, H'00, H'00 +_const_8c036dd0: ; aggressive search + ;.SDATA "さぁ、最後の研修を選んでくれ" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'82, H'B3, H'82, H'9F, H'81, H'41, H'8D, H'C5, H'8C, H'E3, H'82, H'CC, H'8C, H'A4, H'8F, H'43 + .DATA.B H'82, H'F0, H'91, H'49, H'82, H'F1, H'82, H'C5, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00, H'00 +_const_8c036df0: ; aggressive search + ;.SDATA "今日は初日なので、全てのLESSONを順番にやってもらうよ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8D, H'A1, H'93, H'FA, H'82, H'CD, H'8F, H'89, H'93, H'FA, H'82, H'C8, H'82, H'CC, H'82, H'C5 + .DATA.B H'81, H'41, H'91, H'53, H'82, H'C4, H'82, H'CC, H'82, H'6B, H'82, H'64, H'82, H'72, H'82, H'72 + .DATA.B H'82, H'6E, H'82, H'6D, H'82, H'F0, H'3C, H'45, H'3E, H'8F, H'87, H'94, H'D4, H'82, H'C9, H'82 + .DATA.B H'E2, H'82, H'C1, H'82, H'C4, H'82, H'E0, H'82, H'E7, H'82, H'A4, H'82, H'E6, H'00, H'00, H'00 +_const_8c036e30: ; aggressive search + ;.SDATA "合格ラインは70点。決して難しい事ではないので、落ち着いて慎重に進めていこう" + ;.DATA.B H'00 + .DATA.B H'8D, H'87, H'8A, H'69, H'83, H'89, H'83, H'43, H'83, H'93, H'82, H'CD, H'82, H'56, H'82, H'4F + .DATA.B H'93, H'5F, H'81, H'42, H'8C, H'88, H'82, H'B5, H'82, H'C4, H'93, H'EF, H'82, H'B5, H'82, H'A2 + .DATA.B H'8E, H'96, H'82, H'C5, H'82, H'CD, H'3C, H'45, H'3E, H'82, H'C8, H'82, H'A2, H'82, H'CC, H'82 + .DATA.B H'C5, H'81, H'41, H'97, H'8E, H'82, H'BF, H'92, H'85, H'82, H'A2, H'82, H'C4, H'90, H'54, H'8F + .DATA.B H'64, H'82, H'C9, H'90, H'69, H'82, H'DF, H'82, H'C4, H'82, H'A2, H'82, H'B1, H'82, H'A4, H'00 +_const_8c036e80: ; aggressive search + ;.SDATA "おめでとうこれで全てのLESSONは終了だ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'A8, H'82, H'DF, H'82, H'C5, H'82, H'C6, H'82, H'A4, H'3C, H'45, H'3E, H'82, H'B1, H'82 + .DATA.B H'EA, H'82, H'C5, H'91, H'53, H'82, H'C4, H'82, H'CC, H'82, H'6B, H'82, H'64, H'82, H'72, H'82 + .DATA.B H'72, H'82, H'6E, H'82, H'6D, H'82, H'CD, H'8F, H'49, H'97, H'B9, H'82, H'BE, H'00, H'00, H'00 +_const_8c036eb0: ; aggressive search + ;.SDATA "明日からは実際の街中にでて実地研修を行うとしよう" + ;.DATA.B H'00 + .DATA.B H'96, H'BE, H'93, H'FA, H'82, H'A9, H'82, H'E7, H'82, H'CD, H'8E, H'C0, H'8D, H'DB, H'82, H'CC + .DATA.B H'8A, H'58, H'92, H'86, H'82, H'C9, H'82, H'C5, H'82, H'C4, H'3C, H'45, H'3E, H'8E, H'C0, H'92 + .DATA.B H'6E, H'8C, H'A4, H'8F, H'43, H'82, H'F0, H'8D, H'73, H'82, H'A4, H'82, H'C6, H'82, H'B5, H'82 + .DATA.B H'E6, H'82, H'A4, H'00 +_const_8c036ee4: ; aggressive search + ;.SDATA "もっとも、運行に何か不安があったらここに来て練習すればいい" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'E0, H'82, H'C1, H'82, H'C6, H'82, H'E0, H'81, H'41, H'89, H'5E, H'8D, H'73, H'82, H'C9 + .DATA.B H'89, H'BD, H'82, H'A9, H'95, H'73, H'88, H'C0, H'82, H'AA, H'82, H'A0, H'82, H'C1, H'82, H'BD + .DATA.B H'82, H'E7, H'3C, H'45, H'3E, H'82, H'B1, H'82, H'B1, H'82, H'C9, H'97, H'88, H'82, H'C4, H'97 + .DATA.B H'FB, H'8F, H'4B, H'82, H'B7, H'82, H'EA, H'82, H'CE, H'82, H'A2, H'82, H'A2, H'00, H'00, H'00 +_const_8c036f24: ; aggressive search + ;.SDATA "次からは好きなLESSONが選べるから有効に活用してくれ" + ;.DATA.B H'00 + .DATA.B H'8E, H'9F, H'82, H'A9, H'82, H'E7, H'82, H'CD, H'8D, H'44, H'82, H'AB, H'82, H'C8, H'82, H'6B + .DATA.B H'82, H'64, H'82, H'72, H'82, H'72, H'82, H'6E, H'82, H'6D, H'82, H'AA, H'91, H'49, H'82, H'D7 + .DATA.B H'82, H'E9, H'82, H'A9, H'82, H'E7, H'3C, H'45, H'3E, H'97, H'4C, H'8C, H'F8, H'82, H'C9, H'8A + .DATA.B H'88, H'97, H'70, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'00 +_const_8c036f60: ; aggressive search + ;.SDATA "よーし、次のLESSONに進もう" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'82, H'E6, H'81, H'5B, H'82, H'B5, H'81, H'41, H'8E, H'9F, H'82, H'CC, H'82, H'6B, H'82, H'64 + .DATA.B H'82, H'72, H'82, H'72, H'82, H'6E, H'82, H'6D, H'82, H'C9, H'90, H'69, H'82, H'E0, H'82, H'A4 + .DATA.B H'00, H'00, H'00, H'00 +_const_8c036f84: ; aggressive search + ;.SDATA "誰だって最初はうまくできないものさ気を落とさないで、もう一度やってみよう" + ;.DATA.B H'00 + .DATA.B H'92, H'4E, H'82, H'BE, H'82, H'C1, H'82, H'C4, H'8D, H'C5, H'8F, H'89, H'82, H'CD, H'82, H'A4 + .DATA.B H'82, H'DC, H'82, H'AD, H'82, H'C5, H'82, H'AB, H'82, H'C8, H'82, H'A2, H'82, H'E0, H'82, H'CC + .DATA.B H'82, H'B3, H'3C, H'45, H'3E, H'8B, H'43, H'82, H'F0, H'97, H'8E, H'82, H'C6, H'82, H'B3, H'82 + .DATA.B H'C8, H'82, H'A2, H'82, H'C5, H'81, H'41, H'82, H'E0, H'82, H'A4, H'88, H'EA, H'93, H'78, H'82 + .DATA.B H'E2, H'82, H'C1, H'82, H'C4, H'82, H'DD, H'82, H'E6, H'82, H'A4, H'00 +_const_8c036fd0: ; aggressive search + ;.SDATA "ここでは運行中の諸注意をポイント毎に練習できるぞ" + ;.DATA.B H'00 + .DATA.B H'82, H'B1, H'82, H'B1, H'82, H'C5, H'82, H'CD, H'89, H'5E, H'8D, H'73, H'92, H'86, H'82, H'CC + .DATA.B H'8F, H'94, H'92, H'8D, H'88, H'D3, H'82, H'F0, H'3C, H'45, H'3E, H'83, H'7C, H'83, H'43, H'83 + .DATA.B H'93, H'83, H'67, H'96, H'88, H'82, H'C9, H'97, H'FB, H'8F, H'4B, H'82, H'C5, H'82, H'AB, H'82 + .DATA.B H'E9, H'82, H'BC, H'00 +_const_8c037004: ; aggressive search + ;.SDATA "一度LESSONを選ぶと、今日はコースに出られなくなるので、気を付けるように" + ;.DATA.B H'00 + .DATA.B H'88, H'EA, H'93, H'78, H'82, H'6B, H'82, H'64, H'82, H'72, H'82, H'72, H'82, H'6E, H'82, H'6D + .DATA.B H'82, H'F0, H'91, H'49, H'82, H'D4, H'82, H'C6, H'81, H'41, H'8D, H'A1, H'93, H'FA, H'82, H'CD + .DATA.B H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'C9, H'3C, H'45, H'3E, H'8F, H'6F, H'82, H'E7, H'82 + .DATA.B H'EA, H'82, H'C8, H'82, H'AD, H'82, H'C8, H'82, H'E9, H'82, H'CC, H'82, H'C5, H'81, H'41, H'8B + .DATA.B H'43, H'82, H'F0, H'95, H'74, H'82, H'AF, H'82, H'E9, H'82, H'E6, H'82, H'A4, H'82, H'C9, H'00 +_const_8c037054: ; aggressive search + ;.SDATA "練習したいLESSONを選んでくれ" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'97, H'FB, H'8F, H'4B, H'82, H'B5, H'82, H'BD, H'82, H'A2, H'82, H'6B, H'82, H'64, H'82, H'72 + .DATA.B H'82, H'72, H'82, H'6E, H'82, H'6D, H'82, H'F0, H'91, H'49, H'82, H'F1, H'82, H'C5, H'82, H'AD + .DATA.B H'82, H'EA, H'00, H'00 +_const_8c037078: ; aggressive search + ;.SDATA "そうそう、最高得点が更新されたようだこの調子で頑張ってくれよ" + ;.DATA.B H'00 + .DATA.B H'82, H'BB, H'82, H'A4, H'82, H'BB, H'82, H'A4, H'81, H'41, H'8D, H'C5, H'8D, H'82, H'93, H'BE + .DATA.B H'93, H'5F, H'82, H'AA, H'8D, H'58, H'90, H'56, H'82, H'B3, H'82, H'EA, H'82, H'BD, H'82, H'E6 + .DATA.B H'82, H'A4, H'82, H'BE, H'3C, H'45, H'3E, H'82, H'B1, H'82, H'CC, H'92, H'B2, H'8E, H'71, H'82 + .DATA.B H'C5, H'8A, H'E6, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00 +_const_8c0370b8: ; aggressive search + ;.SDATA "今日は研修の最終日だぞもう練習しているより、実戦あるのみ" + ;.DATA.B H'00 + .DATA.B H'8D, H'A1, H'93, H'FA, H'82, H'CD, H'8C, H'A4, H'8F, H'43, H'82, H'CC, H'8D, H'C5, H'8F, H'49 + .DATA.B H'93, H'FA, H'82, H'BE, H'82, H'BC, H'3C, H'45, H'3E, H'82, H'E0, H'82, H'A4, H'97, H'FB, H'8F + .DATA.B H'4B, H'82, H'B5, H'82, H'C4, H'82, H'A2, H'82, H'E9, H'82, H'E6, H'82, H'E8, H'81, H'41, H'8E + .DATA.B H'C0, H'90, H'ED, H'82, H'A0, H'82, H'E9, H'82, H'CC, H'82, H'DD, H'00 +_const_8c0370f4: ; aggressive search + ;.SDATA "まぁ、どうしてもと言うのなら止めはしないが" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'82, H'DC, H'82, H'9F, H'81, H'41, H'82, H'C7, H'82, H'A4, H'82, H'B5, H'82, H'C4, H'82, H'E0 + .DATA.B H'82, H'C6, H'8C, H'BE, H'82, H'A4, H'82, H'CC, H'82, H'C8, H'82, H'E7, H'8E, H'7E, H'82, H'DF + .DATA.B H'82, H'CD, H'82, H'B5, H'82, H'C8, H'82, H'A2, H'82, H'AA, H'00, H'00 +_const_8c037120: ; aggressive search + ;.SDATA "素晴らしい!パーフェクトで合格だ" + ;.DATA.B H'00 + .DATA.B H'91, H'66, H'90, H'B0, H'82, H'E7, H'82, H'B5, H'82, H'A2, H'81, H'49, H'3C, H'45, H'3E, H'83 + .DATA.B H'70, H'81, H'5B, H'83, H'74, H'83, H'46, H'83, H'4E, H'83, H'67, H'82, H'C5, H'8D, H'87, H'8A + .DATA.B H'69, H'82, H'BE, H'00 +_const_8c037144: ; aggressive search + ;.SDATA "この調子で他のLESSONはもちろんコースの方も頑張ってくれよ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'B1, H'82, H'CC, H'92, H'B2, H'8E, H'71, H'82, H'C5, H'91, H'BC, H'82, H'CC, H'82, H'6B + .DATA.B H'82, H'64, H'82, H'72, H'82, H'72, H'82, H'6E, H'82, H'6D, H'82, H'CD, H'82, H'E0, H'82, H'BF + .DATA.B H'82, H'EB, H'82, H'F1, H'3C, H'45, H'3E, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'CC, H'95 + .DATA.B H'FB, H'82, H'E0, H'8A, H'E6, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82 + .DATA.B H'E6, H'00, H'00, H'00 +_const_8c037188: ; aggressive search + ;.SDATA "しかし、ミスはその1カ所だけのようだな" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'82, H'B5, H'82, H'A9, H'82, H'B5, H'81, H'41, H'83, H'7E, H'83, H'58, H'82, H'CD, H'82, H'BB + .DATA.B H'82, H'CC, H'82, H'50, H'83, H'4A, H'8F, H'8A, H'82, H'BE, H'82, H'AF, H'82, H'CC, H'82, H'E6 + .DATA.B H'82, H'A4, H'82, H'BE, H'82, H'C8, H'00, H'00 +_const_8c0371b0: ; aggressive search + ;.SDATA "他はパーフェクトだっただけに悔やまれるが、十分に合格点だ!" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'91, H'BC, H'82, H'CD, H'83, H'70, H'81, H'5B, H'83, H'74, H'83, H'46, H'83, H'4E, H'83, H'67 + .DATA.B H'82, H'BE, H'82, H'C1, H'82, H'BD, H'82, H'BE, H'82, H'AF, H'82, H'C9, H'3C, H'45, H'3E, H'89 + .DATA.B H'F7, H'82, H'E2, H'82, H'DC, H'82, H'EA, H'82, H'E9, H'82, H'AA, H'81, H'41, H'8F, H'5C, H'95 + .DATA.B H'AA, H'82, H'C9, H'8D, H'87, H'8A, H'69, H'93, H'5F, H'82, H'BE, H'81, H'49, H'00, H'00, H'00 +_const_8c0371f0: ; aggressive search + ;.SDATA "今度走る時はパーフェクトを目指してみてはどうかな?" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8D, H'A1, H'93, H'78, H'91, H'96, H'82, H'E9, H'8E, H'9E, H'82, H'CD, H'83, H'70, H'81, H'5B + .DATA.B H'83, H'74, H'83, H'46, H'83, H'4E, H'83, H'67, H'82, H'F0, H'3C, H'45, H'3E, H'96, H'DA, H'8E + .DATA.B H'77, H'82, H'B5, H'82, H'C4, H'82, H'DD, H'82, H'C4, H'82, H'CD, H'82, H'C7, H'82, H'A4, H'82 + .DATA.B H'A9, H'82, H'C8, H'81, H'48, H'00, H'00, H'00 +_const_8c037228: ; aggressive search + ;.SDATA "まぁ、他にもミスはあったが致命的なものではないようだな" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'DC, H'82, H'9F, H'81, H'41, H'91, H'BC, H'82, H'C9, H'82, H'E0, H'83, H'7E, H'83, H'58 + .DATA.B H'82, H'CD, H'82, H'A0, H'82, H'C1, H'82, H'BD, H'82, H'AA, H'3C, H'45, H'3E, H'92, H'76, H'96 + .DATA.B H'BD, H'93, H'49, H'82, H'C8, H'82, H'E0, H'82, H'CC, H'82, H'C5, H'82, H'CD, H'82, H'C8, H'82 + .DATA.B H'A2, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'00, H'00, H'00 +_const_8c037264: ; aggressive search + ;.SDATA "少し不安は残るが、一応は合格点だ次はもっと高得点を目指してくれよ" + ;.DATA.B H'00 + .DATA.B H'8F, H'AD, H'82, H'B5, H'95, H'73, H'88, H'C0, H'82, H'CD, H'8E, H'63, H'82, H'E9, H'82, H'AA + .DATA.B H'81, H'41, H'88, H'EA, H'89, H'9E, H'82, H'CD, H'8D, H'87, H'8A, H'69, H'93, H'5F, H'82, H'BE + .DATA.B H'3C, H'45, H'3E, H'8E, H'9F, H'82, H'CD, H'82, H'E0, H'82, H'C1, H'82, H'C6, H'8D, H'82, H'93 + .DATA.B H'BE, H'93, H'5F, H'82, H'F0, H'96, H'DA, H'8E, H'77, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82 + .DATA.B H'EA, H'82, H'E6, H'00 +_const_8c0372a8: ; aggressive search + ;.SDATA "ミスはその1カ所だけのようだが状況によっては大事故になる危険なミスだぞ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'83, H'7E, H'83, H'58, H'82, H'CD, H'82, H'BB, H'82, H'CC, H'82, H'50, H'83, H'4A, H'8F, H'8A + .DATA.B H'82, H'BE, H'82, H'AF, H'82, H'CC, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'AA, H'3C, H'45 + .DATA.B H'3E, H'8F, H'F3, H'8B, H'B5, H'82, H'C9, H'82, H'E6, H'82, H'C1, H'82, H'C4, H'82, H'CD, H'91 + .DATA.B H'E5, H'8E, H'96, H'8C, H'CC, H'82, H'C9, H'82, H'C8, H'82, H'E9, H'8A, H'EB, H'8C, H'AF, H'82 + .DATA.B H'C8, H'83, H'7E, H'83, H'58, H'82, H'BE, H'82, H'BC, H'00, H'00, H'00 +_const_8c0372f4: ; aggressive search + ;.SDATA "残念だが今回は不合格だな気を取り直して、次は頑張ってくれよ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8E, H'63, H'94, H'4F, H'82, H'BE, H'82, H'AA, H'8D, H'A1, H'89, H'F1, H'82, H'CD, H'95, H'73 + .DATA.B H'8D, H'87, H'8A, H'69, H'82, H'BE, H'82, H'C8, H'3C, H'45, H'3E, H'8B, H'43, H'82, H'F0, H'8E + .DATA.B H'E6, H'82, H'E8, H'92, H'BC, H'82, H'B5, H'82, H'C4, H'81, H'41, H'8E, H'9F, H'82, H'CD, H'8A + .DATA.B H'E6, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00 +_const_8c037334: ; aggressive search + ;.SDATA "…その他にもミスが目立つようだとても合格点はあげられないな" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'81, H'63, H'82, H'BB, H'82, H'CC, H'91, H'BC, H'82, H'C9, H'82, H'E0, H'83, H'7E, H'83, H'58 + .DATA.B H'82, H'AA, H'96, H'DA, H'97, H'A7, H'82, H'C2, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'3C, H'45 + .DATA.B H'3E, H'82, H'C6, H'82, H'C4, H'82, H'E0, H'8D, H'87, H'8A, H'69, H'93, H'5F, H'82, H'CD, H'82 + .DATA.B H'A0, H'82, H'B0, H'82, H'E7, H'82, H'EA, H'82, H'C8, H'82, H'A2, H'82, H'C8, H'00, H'00, H'00 +_const_8c037374: ; aggressive search + ;.SDATA "乗客を乗せているということは、命を預かっているのと同じことなんだ" + ;.DATA.B H'00 + .DATA.B H'8F, H'E6, H'8B, H'71, H'82, H'F0, H'8F, H'E6, H'82, H'B9, H'82, H'C4, H'82, H'A2, H'82, H'E9 + .DATA.B H'82, H'C6, H'82, H'A2, H'82, H'A4, H'82, H'B1, H'82, H'C6, H'82, H'CD, H'81, H'41, H'3C, H'45 + .DATA.B H'3E, H'96, H'BD, H'82, H'F0, H'97, H'61, H'82, H'A9, H'82, H'C1, H'82, H'C4, H'82, H'A2, H'82 + .DATA.B H'E9, H'82, H'CC, H'82, H'C6, H'93, H'AF, H'82, H'B6, H'82, H'B1, H'82, H'C6, H'82, H'C8, H'82 + .DATA.B H'F1, H'82, H'BE, H'00 +_const_8c0373b8: ; aggressive search + ;.SDATA "我々の不注意が、多くの人々を危険にさらしてしまう事を、よく肝に銘じて練習に励んでくれ" + ;.DATA.B H'00 + .DATA.B H'89, H'E4, H'81, H'58, H'82, H'CC, H'95, H'73, H'92, H'8D, H'88, H'D3, H'82, H'AA, H'81, H'41 + .DATA.B H'91, H'BD, H'82, H'AD, H'82, H'CC, H'90, H'6C, H'81, H'58, H'82, H'F0, H'8A, H'EB, H'8C, H'AF + .DATA.B H'82, H'C9, H'82, H'B3, H'82, H'E7, H'82, H'B5, H'82, H'C4, H'3C, H'45, H'3E, H'82, H'B5, H'82 + .DATA.B H'DC, H'82, H'A4, H'8E, H'96, H'82, H'F0, H'81, H'41, H'82, H'E6, H'82, H'AD, H'8A, H'CC, H'82 + .DATA.B H'C9, H'96, H'C1, H'82, H'B6, H'82, H'C4, H'97, H'FB, H'8F, H'4B, H'82, H'C9, H'97, H'E3, H'82 + .DATA.B H'F1, H'82, H'C5, H'82, H'AD, H'82, H'EA, H'00 +_const_8c037410: ; aggressive search + ;.SDATA "他の車に接触してしまったようだな…" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'91, H'BC, H'82, H'CC, H'8E, H'D4, H'82, H'C9, H'90, H'DA, H'90, H'47, H'82, H'B5, H'82, H'C4 + .DATA.B H'82, H'B5, H'82, H'DC, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8 + .DATA.B H'81, H'63, H'00, H'00 +_const_8c037434: ; aggressive search + ;.SDATA "車間距離を十分に取り、早めにブレーキをかけるようにしてくれ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8E, H'D4, H'8A, H'D4, H'8B, H'97, H'97, H'A3, H'82, H'F0, H'8F, H'5C, H'95, H'AA, H'82, H'C9 + .DATA.B H'8E, H'E6, H'82, H'E8, H'81, H'41, H'3C, H'45, H'3E, H'91, H'81, H'82, H'DF, H'82, H'C9, H'83 + .DATA.B H'75, H'83, H'8C, H'81, H'5B, H'83, H'4C, H'82, H'F0, H'82, H'A9, H'82, H'AF, H'82, H'E9, H'82 + .DATA.B H'E6, H'82, H'A4, H'82, H'C9, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00 +_const_8c037474: ; aggressive search + ;.SDATA "スピードは出ていなかったようだが停車車両に接触してしまったな…" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'83, H'58, H'83, H'73, H'81, H'5B, H'83, H'68, H'82, H'CD, H'8F, H'6F, H'82, H'C4, H'82, H'A2 + .DATA.B H'82, H'C8, H'82, H'A9, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'AA + .DATA.B H'3C, H'45, H'3E, H'92, H'E2, H'8E, H'D4, H'8E, H'D4, H'97, H'BC, H'82, H'C9, H'90, H'DA, H'90 + .DATA.B H'47, H'82, H'B5, H'82, H'C4, H'82, H'B5, H'82, H'DC, H'82, H'C1, H'82, H'BD, H'82, H'C8, H'81 + .DATA.B H'63, H'00, H'00, H'00 +_const_8c0374b8: ; aggressive search + ;.SDATA "一日も早く、車両感覚を身につけてくれ" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'88, H'EA, H'93, H'FA, H'82, H'E0, H'91, H'81, H'82, H'AD, H'81, H'41, H'8E, H'D4, H'97, H'BC + .DATA.B H'8A, H'B4, H'8A, H'6F, H'82, H'F0, H'90, H'67, H'82, H'C9, H'82, H'C2, H'82, H'AF, H'82, H'C4 + .DATA.B H'82, H'AD, H'82, H'EA, H'00, H'00, H'00, H'00 +_const_8c0374e0: ; aggressive search + ;.SDATA "停車車両に接触してしまったようだな…しかもスピードが大分出ていたな" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'92, H'E2, H'8E, H'D4, H'8E, H'D4, H'97, H'BC, H'82, H'C9, H'90, H'DA, H'90, H'47, H'82, H'B5 + .DATA.B H'82, H'C4, H'82, H'B5, H'82, H'DC, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE + .DATA.B H'82, H'C8, H'81, H'63, H'3C, H'45, H'3E, H'82, H'B5, H'82, H'A9, H'82, H'E0, H'83, H'58, H'83 + .DATA.B H'73, H'81, H'5B, H'83, H'68, H'82, H'AA, H'91, H'E5, H'95, H'AA, H'8F, H'6F, H'82, H'C4, H'82 + .DATA.B H'A2, H'82, H'BD, H'82, H'C8, H'00, H'00, H'00 +_const_8c037528: ; aggressive search + ;.SDATA "停車車両に接触してしまったようだな…しかも凄いスピードで…" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'92, H'E2, H'8E, H'D4, H'8E, H'D4, H'97, H'BC, H'82, H'C9, H'90, H'DA, H'90, H'47, H'82, H'B5 + .DATA.B H'82, H'C4, H'82, H'B5, H'82, H'DC, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE + .DATA.B H'82, H'C8, H'81, H'63, H'3C, H'45, H'3E, H'82, H'B5, H'82, H'A9, H'82, H'E0, H'90, H'A6, H'82 + .DATA.B H'A2, H'83, H'58, H'83, H'73, H'81, H'5B, H'83, H'68, H'82, H'C5, H'81, H'63, H'00, H'00, H'00 +_const_8c037568: ; aggressive search + ;.SDATA "まず速度はむやみに出さないこと!そして車両感覚をしっかり身につけてくれ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'DC, H'82, H'B8, H'91, H'AC, H'93, H'78, H'82, H'CD, H'82, H'DE, H'82, H'E2, H'82, H'DD + .DATA.B H'82, H'C9, H'8F, H'6F, H'82, H'B3, H'82, H'C8, H'82, H'A2, H'82, H'B1, H'82, H'C6, H'81, H'49 + .DATA.B H'3C, H'45, H'3E, H'82, H'BB, H'82, H'B5, H'82, H'C4, H'8E, H'D4, H'97, H'BC, H'8A, H'B4, H'8A + .DATA.B H'6F, H'82, H'F0, H'82, H'B5, H'82, H'C1, H'82, H'A9, H'82, H'E8, H'90, H'67, H'82, H'C9, H'82 + .DATA.B H'C2, H'82, H'AF, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00 +_const_8c0375b4: ; aggressive search + ;.SDATA "スピードは出ていなかったようだが壁に接触してしまったな…" + ;.DATA.B H'00 + .DATA.B H'83, H'58, H'83, H'73, H'81, H'5B, H'83, H'68, H'82, H'CD, H'8F, H'6F, H'82, H'C4, H'82, H'A2 + .DATA.B H'82, H'C8, H'82, H'A9, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'AA + .DATA.B H'3C, H'45, H'3E, H'95, H'C7, H'82, H'C9, H'90, H'DA, H'90, H'47, H'82, H'B5, H'82, H'C4, H'82 + .DATA.B H'B5, H'82, H'DC, H'82, H'C1, H'82, H'BD, H'82, H'C8, H'81, H'63, H'00 +_const_8c0375f0: ; aggressive search + ;.SDATA "壁に接触してしまったようだな…しかもスピードが大分出ていたな" + ;.DATA.B H'00 + .DATA.B H'95, H'C7, H'82, H'C9, H'90, H'DA, H'90, H'47, H'82, H'B5, H'82, H'C4, H'82, H'B5, H'82, H'DC + .DATA.B H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'81, H'63, H'3C, H'45 + .DATA.B H'3E, H'82, H'B5, H'82, H'A9, H'82, H'E0, H'83, H'58, H'83, H'73, H'81, H'5B, H'83, H'68, H'82 + .DATA.B H'AA, H'91, H'E5, H'95, H'AA, H'8F, H'6F, H'82, H'C4, H'82, H'A2, H'82, H'BD, H'82, H'C8, H'00 +_const_8c037630: ; aggressive search + ;.SDATA "壁に接触してしまったようだな…しかも凄いスピードで…" + ;.DATA.B H'00 + .DATA.B H'95, H'C7, H'82, H'C9, H'90, H'DA, H'90, H'47, H'82, H'B5, H'82, H'C4, H'82, H'B5, H'82, H'DC + .DATA.B H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'81, H'63, H'3C, H'45 + .DATA.B H'3E, H'82, H'B5, H'82, H'A9, H'82, H'E0, H'90, H'A6, H'82, H'A2, H'83, H'58, H'83, H'73, H'81 + .DATA.B H'5B, H'83, H'68, H'82, H'C5, H'81, H'63, H'00 +_const_8c037668: ; aggressive search + ;.SDATA "ふー、危機一髪だったな" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'82, H'D3, H'81, H'5B, H'81, H'41, H'8A, H'EB, H'8B, H'40, H'88, H'EA, H'94, H'AF, H'82, H'BE + .DATA.B H'82, H'C1, H'82, H'BD, H'82, H'C8, H'00, H'00 +_const_8c037680: ; aggressive search + ;.SDATA "おいおい、通行人の安全は何に替えても守ってくれよ" + ;.DATA.B H'00 + .DATA.B H'82, H'A8, H'82, H'A2, H'82, H'A8, H'82, H'A2, H'81, H'41, H'92, H'CA, H'8D, H'73, H'90, H'6C + .DATA.B H'82, H'CC, H'88, H'C0, H'91, H'53, H'82, H'CD, H'3C, H'45, H'3E, H'89, H'BD, H'82, H'C9, H'91 + .DATA.B H'D6, H'82, H'A6, H'82, H'C4, H'82, H'E0, H'8E, H'E7, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82 + .DATA.B H'EA, H'82, H'E6, H'00 +_const_8c0376b4: ; aggressive search + ;.SDATA "コースを外れてしまったようだな…コースは常に正確に走ってくれないと困るぞ" + ;.DATA.B H'00 + .DATA.B H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'F0, H'8A, H'4F, H'82, H'EA, H'82, H'C4, H'82, H'B5 + .DATA.B H'82, H'DC, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'81, H'63 + .DATA.B H'3C, H'45, H'3E, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'CD, H'8F, H'ED, H'82, H'C9, H'90 + .DATA.B H'B3, H'8A, H'6D, H'82, H'C9, H'91, H'96, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82 + .DATA.B H'C8, H'82, H'A2, H'82, H'C6, H'8D, H'A2, H'82, H'E9, H'82, H'BC, H'00 +_const_8c037700: ; aggressive search + ;.SDATA "コースから外れかけても、慌てずに速度を落とし正しいコースに戻ればいい" + ;.DATA.B H'00 + .DATA.B H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'A9, H'82, H'E7, H'8A, H'4F, H'82, H'EA, H'82, H'A9 + .DATA.B H'82, H'AF, H'82, H'C4, H'82, H'E0, H'81, H'41, H'8D, H'51, H'82, H'C4, H'82, H'B8, H'82, H'C9 + .DATA.B H'91, H'AC, H'93, H'78, H'82, H'F0, H'97, H'8E, H'82, H'C6, H'82, H'B5, H'3C, H'45, H'3E, H'90 + .DATA.B H'B3, H'82, H'B5, H'82, H'A2, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'C9, H'96, H'DF, H'82 + .DATA.B H'EA, H'82, H'CE, H'82, H'A2, H'82, H'A2, H'00 +_const_8c037748: ; aggressive search + ;.SDATA "少しスピードオーバーしたみたいだな…制限速度には常に注意を払ってくれよ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8F, H'AD, H'82, H'B5, H'83, H'58, H'83, H'73, H'81, H'5B, H'83, H'68, H'83, H'49, H'81, H'5B + .DATA.B H'83, H'6F, H'81, H'5B, H'82, H'B5, H'82, H'BD, H'82, H'DD, H'82, H'BD, H'82, H'A2, H'82, H'BE + .DATA.B H'82, H'C8, H'81, H'63, H'3C, H'45, H'3E, H'90, H'A7, H'8C, H'C0, H'91, H'AC, H'93, H'78, H'82 + .DATA.B H'C9, H'82, H'CD, H'8F, H'ED, H'82, H'C9, H'92, H'8D, H'88, H'D3, H'82, H'F0, H'95, H'A5, H'82 + .DATA.B H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00 +_const_8c037794: ; aggressive search + ;.SDATA "大分スピードオーバーしたようだな…制限速度を守るのは安全運転の基本だぞ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'91, H'E5, H'95, H'AA, H'83, H'58, H'83, H'73, H'81, H'5B, H'83, H'68, H'83, H'49, H'81, H'5B + .DATA.B H'83, H'6F, H'81, H'5B, H'82, H'B5, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8 + .DATA.B H'81, H'63, H'3C, H'45, H'3E, H'90, H'A7, H'8C, H'C0, H'91, H'AC, H'93, H'78, H'82, H'F0, H'8E + .DATA.B H'E7, H'82, H'E9, H'82, H'CC, H'82, H'CD, H'88, H'C0, H'91, H'53, H'89, H'5E, H'93, H'5D, H'82 + .DATA.B H'CC, H'8A, H'EE, H'96, H'7B, H'82, H'BE, H'82, H'BC, H'00, H'00, H'00 +_const_8c0377e0: ; aggressive search + ;.SDATA "対向車線を越えるとは言語道断!大事故の元なので、以後、絶対にないように" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'91, H'CE, H'8C, H'FC, H'8E, H'D4, H'90, H'FC, H'82, H'F0, H'89, H'7A, H'82, H'A6, H'82, H'E9 + .DATA.B H'82, H'C6, H'82, H'CD, H'8C, H'BE, H'8C, H'EA, H'93, H'B9, H'92, H'66, H'81, H'49, H'3C, H'45 + .DATA.B H'3E, H'91, H'E5, H'8E, H'96, H'8C, H'CC, H'82, H'CC, H'8C, H'B3, H'82, H'C8, H'82, H'CC, H'82 + .DATA.B H'C5, H'81, H'41, H'88, H'C8, H'8C, H'E3, H'81, H'41, H'90, H'E2, H'91, H'CE, H'82, H'C9, H'82 + .DATA.B H'C8, H'82, H'A2, H'82, H'E6, H'82, H'A4, H'82, H'C9, H'00, H'00, H'00 +_const_8c03782c: ; aggressive search + ;.SDATA "車体が大きいので大変なのは分かるが車線をまたがって走ってはいかんぞ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8E, H'D4, H'91, H'CC, H'82, H'AA, H'91, H'E5, H'82, H'AB, H'82, H'A2, H'82, H'CC, H'82, H'C5 + .DATA.B H'91, H'E5, H'95, H'CF, H'82, H'C8, H'82, H'CC, H'82, H'CD, H'95, H'AA, H'82, H'A9, H'82, H'E9 + .DATA.B H'82, H'AA, H'3C, H'45, H'3E, H'8E, H'D4, H'90, H'FC, H'82, H'F0, H'82, H'DC, H'82, H'BD, H'82 + .DATA.B H'AA, H'82, H'C1, H'82, H'C4, H'91, H'96, H'82, H'C1, H'82, H'C4, H'82, H'CD, H'82, H'A2, H'82 + .DATA.B H'A9, H'82, H'F1, H'82, H'BC, H'00, H'00, H'00 +_const_8c037874: ; aggressive search + ;.SDATA "ウインカーを忘れていたぞ車線変更や交差点での右左折" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'83, H'45, H'83, H'43, H'83, H'93, H'83, H'4A, H'81, H'5B, H'82, H'F0, H'96, H'59, H'82, H'EA + .DATA.B H'82, H'C4, H'82, H'A2, H'82, H'BD, H'82, H'BC, H'3C, H'45, H'3E, H'8E, H'D4, H'90, H'FC, H'95 + .DATA.B H'CF, H'8D, H'58, H'82, H'E2, H'8C, H'F0, H'8D, H'B7, H'93, H'5F, H'82, H'C5, H'82, H'CC, H'89 + .DATA.B H'45, H'8D, H'B6, H'90, H'DC, H'00, H'00, H'00 +_const_8c0378ac: ; aggressive search + ;.SDATA "そして停留所に停車する時は必ずウインカーを出すようにな" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'BB, H'82, H'B5, H'82, H'C4, H'92, H'E2, H'97, H'AF, H'8F, H'8A, H'82, H'C9, H'92, H'E2 + .DATA.B H'8E, H'D4, H'82, H'B7, H'82, H'E9, H'8E, H'9E, H'82, H'CD, H'3C, H'45, H'3E, H'95, H'4B, H'82 + .DATA.B H'B8, H'83, H'45, H'83, H'43, H'83, H'93, H'83, H'4A, H'81, H'5B, H'82, H'F0, H'8F, H'6F, H'82 + .DATA.B H'B7, H'82, H'E6, H'82, H'A4, H'82, H'C9, H'82, H'C8, H'00, H'00, H'00 +_const_8c0378e8: ; aggressive search + ;.SDATA "大切なのは、自分の行動を周りの車にちゃんと知らせることだ" + ;.DATA.B H'00 + .DATA.B H'91, H'E5, H'90, H'D8, H'82, H'C8, H'82, H'CC, H'82, H'CD, H'81, H'41, H'8E, H'A9, H'95, H'AA + .DATA.B H'82, H'CC, H'8D, H'73, H'93, H'AE, H'82, H'F0, H'3C, H'45, H'3E, H'8E, H'FC, H'82, H'E8, H'82 + .DATA.B H'CC, H'8E, H'D4, H'82, H'C9, H'82, H'BF, H'82, H'E1, H'82, H'F1, H'82, H'C6, H'92, H'6D, H'82 + .DATA.B H'E7, H'82, H'B9, H'82, H'E9, H'82, H'B1, H'82, H'C6, H'82, H'BE, H'00 +_const_8c037924: ; aggressive search + ;.SDATA "右左折する時のウインカーを忘れていたぞ" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'89, H'45, H'8D, H'B6, H'90, H'DC, H'82, H'B7, H'82, H'E9, H'8E, H'9E, H'82, H'CC, H'83, H'45 + .DATA.B H'83, H'43, H'83, H'93, H'83, H'4A, H'81, H'5B, H'82, H'F0, H'96, H'59, H'82, H'EA, H'82, H'C4 + .DATA.B H'82, H'A2, H'82, H'BD, H'82, H'BC, H'00, H'00 +_const_8c03794c: ; aggressive search + ;.SDATA "おいおい、大事故になる所だったぞ" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'82, H'A8, H'82, H'A2, H'82, H'A8, H'82, H'A2, H'81, H'41, H'91, H'E5, H'8E, H'96, H'8C, H'CC + .DATA.B H'82, H'C9, H'82, H'C8, H'82, H'E9, H'8F, H'8A, H'82, H'BE, H'82, H'C1, H'82, H'BD, H'82, H'BC + .DATA.B H'00, H'00, H'00, H'00 +_const_8c037970: ; aggressive search + ;.SDATA "信号はしっかりと確認してくれよ交通法規の基本中の基本だぞ" + ;.DATA.B H'00 + .DATA.B H'90, H'4D, H'8D, H'86, H'82, H'CD, H'82, H'B5, H'82, H'C1, H'82, H'A9, H'82, H'E8, H'82, H'C6 + .DATA.B H'8A, H'6D, H'94, H'46, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'3C, H'45 + .DATA.B H'3E, H'8C, H'F0, H'92, H'CA, H'96, H'40, H'8B, H'4B, H'82, H'CC, H'8A, H'EE, H'96, H'7B, H'92 + .DATA.B H'86, H'82, H'CC, H'8A, H'EE, H'96, H'7B, H'82, H'BE, H'82, H'BC, H'00 +_const_8c0379ac: ; aggressive search + ;.SDATA "停止時にちょっと失敗したな" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'92, H'E2, H'8E, H'7E, H'8E, H'9E, H'82, H'C9, H'82, H'BF, H'82, H'E5, H'82, H'C1, H'82, H'C6 + .DATA.B H'8E, H'B8, H'94, H'73, H'82, H'B5, H'82, H'BD, H'82, H'C8, H'00, H'00 +_const_8c0379c8: ; aggressive search + ;.SDATA "停止線をきちんと確認して、正しい位置に停止するようにしてくれ" + ;.DATA.B H'00 + .DATA.B H'92, H'E2, H'8E, H'7E, H'90, H'FC, H'82, H'F0, H'82, H'AB, H'82, H'BF, H'82, H'F1, H'82, H'C6 + .DATA.B H'8A, H'6D, H'94, H'46, H'82, H'B5, H'82, H'C4, H'81, H'41, H'3C, H'45, H'3E, H'90, H'B3, H'82 + .DATA.B H'B5, H'82, H'A2, H'88, H'CA, H'92, H'75, H'82, H'C9, H'92, H'E2, H'8E, H'7E, H'82, H'B7, H'82 + .DATA.B H'E9, H'82, H'E6, H'82, H'A4, H'82, H'C9, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'00 +_const_8c037a08: ; aggressive search + ;.SDATA "してはいけない所で車線変更をしたようだな…" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'82, H'B5, H'82, H'C4, H'82, H'CD, H'82, H'A2, H'82, H'AF, H'82, H'C8, H'82, H'A2, H'8F, H'8A + .DATA.B H'82, H'C5, H'8E, H'D4, H'90, H'FC, H'95, H'CF, H'8D, H'58, H'82, H'F0, H'82, H'B5, H'82, H'BD + .DATA.B H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'81, H'63, H'00, H'00 +_const_8c037a34: ; aggressive search + ;.SDATA "交差点の手前などでは禁止されているので気を付けてくれよ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8C, H'F0, H'8D, H'B7, H'93, H'5F, H'82, H'CC, H'8E, H'E8, H'91, H'4F, H'82, H'C8, H'82, H'C7 + .DATA.B H'82, H'C5, H'82, H'CD, H'8B, H'D6, H'8E, H'7E, H'82, H'B3, H'82, H'EA, H'82, H'C4, H'82, H'A2 + .DATA.B H'82, H'E9, H'82, H'CC, H'82, H'C5, H'3C, H'45, H'3E, H'8B, H'43, H'82, H'F0, H'95, H'74, H'82 + .DATA.B H'AF, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00 +_const_8c037a70: ; aggressive search + ;.SDATA "交差点での立ち往生は絶対にしてはいけないぞ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8C, H'F0, H'8D, H'B7, H'93, H'5F, H'82, H'C5, H'82, H'CC, H'97, H'A7, H'82, H'BF, H'89, H'9D + .DATA.B H'90, H'B6, H'82, H'CD, H'3C, H'45, H'3E, H'90, H'E2, H'91, H'CE, H'82, H'C9, H'82, H'B5, H'82 + .DATA.B H'C4, H'82, H'CD, H'82, H'A2, H'82, H'AF, H'82, H'C8, H'82, H'A2, H'82, H'BC, H'00, H'00, H'00 +_const_8c037aa0: ; aggressive search + ;.SDATA "事故や渋滞を引き起こす危険があるからな…交差点は素早く通り抜けることだ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8E, H'96, H'8C, H'CC, H'82, H'E2, H'8F, H'61, H'91, H'D8, H'82, H'F0, H'88, H'F8, H'82, H'AB + .DATA.B H'8B, H'4E, H'82, H'B1, H'82, H'B7, H'8A, H'EB, H'8C, H'AF, H'82, H'AA, H'82, H'A0, H'82, H'E9 + .DATA.B H'82, H'A9, H'82, H'E7, H'82, H'C8, H'81, H'63, H'3C, H'45, H'3E, H'8C, H'F0, H'8D, H'B7, H'93 + .DATA.B H'5F, H'82, H'CD, H'91, H'66, H'91, H'81, H'82, H'AD, H'92, H'CA, H'82, H'E8, H'94, H'B2, H'82 + .DATA.B H'AF, H'82, H'E9, H'82, H'B1, H'82, H'C6, H'82, H'BE, H'00, H'00, H'00 +_const_8c037aec: ; aggressive search + ;.SDATA "コースを正しく走るこれが運転の基本だ" + ;.DATA.B H'00 + .DATA.B H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'F0, H'90, H'B3, H'82, H'B5, H'82, H'AD, H'91, H'96 + .DATA.B H'82, H'E9, H'3C, H'45, H'3E, H'82, H'B1, H'82, H'EA, H'82, H'AA, H'89, H'5E, H'93, H'5D, H'82 + .DATA.B H'CC, H'8A, H'EE, H'96, H'7B, H'82, H'BE, H'00 +_const_8c037b14: ; aggressive search + ;.SDATA "落ち着いて走れば逆走などするわけがない大事故になるので絶対にやめてくれよ" + ;.DATA.B H'00 + .DATA.B H'97, H'8E, H'82, H'BF, H'92, H'85, H'82, H'A2, H'82, H'C4, H'91, H'96, H'82, H'EA, H'82, H'CE + .DATA.B H'8B, H'74, H'91, H'96, H'82, H'C8, H'82, H'C7, H'82, H'B7, H'82, H'E9, H'82, H'ED, H'82, H'AF + .DATA.B H'82, H'AA, H'82, H'C8, H'82, H'A2, H'3C, H'45, H'3E, H'91, H'E5, H'8E, H'96, H'8C, H'CC, H'82 + .DATA.B H'C9, H'82, H'C8, H'82, H'E9, H'82, H'CC, H'82, H'C5, H'90, H'E2, H'91, H'CE, H'82, H'C9, H'82 + .DATA.B H'E2, H'82, H'DF, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00 +_const_8c037b60: ; aggressive search + ;.SDATA "基本的には、お客さんあってのバスだからね急発進などしないように気を付けよう" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8A, H'EE, H'96, H'7B, H'93, H'49, H'82, H'C9, H'82, H'CD, H'81, H'41, H'82, H'A8, H'8B, H'71 + .DATA.B H'82, H'B3, H'82, H'F1, H'82, H'A0, H'82, H'C1, H'82, H'C4, H'82, H'CC, H'83, H'6F, H'83, H'58 + .DATA.B H'82, H'BE, H'82, H'A9, H'82, H'E7, H'82, H'CB, H'3C, H'45, H'3E, H'8B, H'7D, H'94, H'AD, H'90 + .DATA.B H'69, H'82, H'C8, H'82, H'C7, H'82, H'B5, H'82, H'C8, H'82, H'A2, H'82, H'E6, H'82, H'A4, H'82 + .DATA.B H'C9, H'8B, H'43, H'82, H'F0, H'95, H'74, H'82, H'AF, H'82, H'E6, H'82, H'A4, H'00, H'00, H'00 +_const_8c037bb0: ; aggressive search + ;.SDATA "急ブレーキがあったようだな今度はお客さんの身になって運転してみるといい" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'8B, H'7D, H'83, H'75, H'83, H'8C, H'81, H'5B, H'83, H'4C, H'82, H'AA, H'82, H'A0, H'82, H'C1 + .DATA.B H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'3C, H'45, H'3E, H'8D, H'A1, H'93 + .DATA.B H'78, H'82, H'CD, H'82, H'A8, H'8B, H'71, H'82, H'B3, H'82, H'F1, H'82, H'CC, H'90, H'67, H'82 + .DATA.B H'C9, H'82, H'C8, H'82, H'C1, H'82, H'C4, H'89, H'5E, H'93, H'5D, H'82, H'B5, H'82, H'C4, H'82 + .DATA.B H'DD, H'82, H'E9, H'82, H'C6, H'82, H'A2, H'82, H'A2, H'00, H'00, H'00 +_const_8c037bfc: ; aggressive search + ;.SDATA "荒っぽい運転をすると立っているお客さんは大変だぞ" + ;.DATA.B H'00 + .DATA.B H'8D, H'72, H'82, H'C1, H'82, H'DB, H'82, H'A2, H'89, H'5E, H'93, H'5D, H'82, H'F0, H'82, H'B7 + .DATA.B H'82, H'E9, H'82, H'C6, H'3C, H'45, H'3E, H'97, H'A7, H'82, H'C1, H'82, H'C4, H'82, H'A2, H'82 + .DATA.B H'E9, H'82, H'A8, H'8B, H'71, H'82, H'B3, H'82, H'F1, H'82, H'CD, H'91, H'E5, H'95, H'CF, H'82 + .DATA.B H'BE, H'82, H'BC, H'00 +_const_8c037c30: ; aggressive search + ;.SDATA "もっと安全運転を心がけて急ハンドルなんてしないようにな" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'E0, H'82, H'C1, H'82, H'C6, H'88, H'C0, H'91, H'53, H'89, H'5E, H'93, H'5D, H'82, H'F0 + .DATA.B H'90, H'53, H'82, H'AA, H'82, H'AF, H'82, H'C4, H'3C, H'45, H'3E, H'8B, H'7D, H'83, H'6E, H'83 + .DATA.B H'93, H'83, H'68, H'83, H'8B, H'82, H'C8, H'82, H'F1, H'82, H'C4, H'82, H'B5, H'82, H'C8, H'82 + .DATA.B H'A2, H'82, H'E6, H'82, H'A4, H'82, H'C9, H'82, H'C8, H'00, H'00, H'00 +_const_8c037c6c: ; aggressive search + ;.SDATA "バスが停留所を通り過ぎてどうするんだ" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'83, H'6F, H'83, H'58, H'82, H'AA, H'92, H'E2, H'97, H'AF, H'8F, H'8A, H'82, H'F0, H'92, H'CA + .DATA.B H'82, H'E8, H'89, H'DF, H'82, H'AC, H'82, H'C4, H'82, H'C7, H'82, H'A4, H'82, H'B7, H'82, H'E9 + .DATA.B H'82, H'F1, H'82, H'BE, H'00, H'00, H'00, H'00 +_const_8c037c94: ; aggressive search + ;.SDATA "きちんと停留所情報を確認して必要な停留所では停車してくれよ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'82, H'AB, H'82, H'BF, H'82, H'F1, H'82, H'C6, H'92, H'E2, H'97, H'AF, H'8F, H'8A, H'8F, H'EE + .DATA.B H'95, H'F1, H'82, H'F0, H'8A, H'6D, H'94, H'46, H'82, H'B5, H'82, H'C4, H'3C, H'45, H'3E, H'95 + .DATA.B H'4B, H'97, H'76, H'82, H'C8, H'92, H'E2, H'97, H'AF, H'8F, H'8A, H'82, H'C5, H'82, H'CD, H'92 + .DATA.B H'E2, H'8E, H'D4, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00 +_const_8c037cd4: ; aggressive search + ;.SDATA "停留所の停車位置が良くなかったようだな" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'92, H'E2, H'97, H'AF, H'8F, H'8A, H'82, H'CC, H'92, H'E2, H'8E, H'D4, H'88, H'CA, H'92, H'75 + .DATA.B H'82, H'AA, H'97, H'C7, H'82, H'AD, H'82, H'C8, H'82, H'A9, H'82, H'C1, H'82, H'BD, H'82, H'E6 + .DATA.B H'82, H'A4, H'82, H'BE, H'82, H'C8, H'00, H'00 +_const_8c037cfc: ; aggressive search + ;.SDATA "今度からは、お客さんが乗り降りしやすいように、正確に停車してくれ" + ;.DATA.B H'00 + .DATA.B H'8D, H'A1, H'93, H'78, H'82, H'A9, H'82, H'E7, H'82, H'CD, H'81, H'41, H'82, H'A8, H'8B, H'71 + .DATA.B H'82, H'B3, H'82, H'F1, H'82, H'AA, H'8F, H'E6, H'82, H'E8, H'8D, H'7E, H'82, H'E8, H'3C, H'45 + .DATA.B H'3E, H'82, H'B5, H'82, H'E2, H'82, H'B7, H'82, H'A2, H'82, H'E6, H'82, H'A4, H'82, H'C9, H'81 + .DATA.B H'41, H'90, H'B3, H'8A, H'6D, H'82, H'C9, H'92, H'E2, H'8E, H'D4, H'82, H'B5, H'82, H'C4, H'82 + .DATA.B H'AD, H'82, H'EA, H'00 +_const_8c037d40: ; aggressive search + ;.SDATA "運転技術はもちろんのこと時間配分にも気を配ってくれ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'89, H'5E, H'93, H'5D, H'8B, H'5A, H'8F, H'70, H'82, H'CD, H'82, H'E0, H'82, H'BF, H'82, H'EB + .DATA.B H'82, H'F1, H'82, H'CC, H'82, H'B1, H'82, H'C6, H'3C, H'45, H'3E, H'8E, H'9E, H'8A, H'D4, H'94 + .DATA.B H'7A, H'95, H'AA, H'82, H'C9, H'82, H'E0, H'8B, H'43, H'82, H'F0, H'94, H'7A, H'82, H'C1, H'82 + .DATA.B H'C4, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00 +_const_8c037d78: ; aggressive search + ;.SDATA "バスの運転手がお客さんにしなければならないこととして、車内アナウンスは重要だぞ" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'83, H'6F, H'83, H'58, H'82, H'CC, H'89, H'5E, H'93, H'5D, H'8E, H'E8, H'82, H'AA, H'82, H'A8 + .DATA.B H'8B, H'71, H'82, H'B3, H'82, H'F1, H'82, H'C9, H'82, H'B5, H'82, H'C8, H'82, H'AF, H'82, H'EA + .DATA.B H'82, H'CE, H'82, H'C8, H'82, H'E7, H'82, H'C8, H'82, H'A2, H'3C, H'45, H'3E, H'82, H'B1, H'82 + .DATA.B H'C6, H'82, H'C6, H'82, H'B5, H'82, H'C4, H'81, H'41, H'8E, H'D4, H'93, H'E0, H'83, H'41, H'83 + .DATA.B H'69, H'83, H'45, H'83, H'93, H'83, H'58, H'82, H'CD, H'8F, H'64, H'97, H'76, H'82, H'BE, H'82 + .DATA.B H'BC, H'00, H'00, H'00 +_const_8c037dcc: ; aggressive search + ;.SDATA "ドアの開閉の確認は基本事項だぞ" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'83, H'68, H'83, H'41, H'82, H'CC, H'8A, H'4A, H'95, H'C2, H'82, H'CC, H'8A, H'6D, H'94, H'46 + .DATA.B H'82, H'CD, H'8A, H'EE, H'96, H'7B, H'8E, H'96, H'8D, H'80, H'82, H'BE, H'82, H'BC, H'00, H'00 +_const_8c037dec: ; aggressive search + ;.SDATA "但しストーリーモードで走ったコースに限るがな" + ;.DATA.B H'00 + .DATA.B H'92, H'41, H'82, H'B5, H'83, H'58, H'83, H'67, H'81, H'5B, H'83, H'8A, H'81, H'5B, H'83, H'82 + .DATA.B H'81, H'5B, H'83, H'68, H'82, H'C5, H'3C, H'45, H'3E, H'91, H'96, H'82, H'C1, H'82, H'BD, H'83 + .DATA.B H'52, H'81, H'5B, H'83, H'58, H'82, H'C9, H'8C, H'C0, H'82, H'E9, H'82, H'AA, H'82, H'C8, H'00 +_const_8c037e1c: ; aggressive search + ;.SDATA "さぁ、コースを選んでくれ" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'82, H'B3, H'82, H'9F, H'81, H'41, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'F0, H'91, H'49 + .DATA.B H'82, H'F1, H'82, H'C5, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00, H'00 +_const_8c037e38: ; from ghidra + ;.SDATA "corse_parts.dat" + ;.DATA.B H'00 + .DATA.B H'63, H'6F, H'72, H'73, H'65, H'5F, H'70, H'61, H'72, H'74, H'73, H'2E, H'64, H'61, H'74, H'00 +_const_8c037e48: ; aggressive search + ;.SDATA "course.dat" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'63, H'6F, H'75, H'72, H'73, H'65, H'2E, H'64, H'61, H'74, H'00, H'00 +_const_8c037e54: ; aggressive search + ;.SDATA "corse.pvm" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'63, H'6F, H'72, H'73, H'65, H'2E, H'70, H'76, H'6D, H'00, H'00, H'00 +_const_8c037e60: ; from defines + ;.SDATA "ロードに失敗しました" + ;.DATA.B H'00 + ;.RES.B 3 + .DATA.B H'83, H'8D, H'81, H'5B, H'83, H'68, H'82, H'C9, H'8E, H'B8, H'94, H'73, H'82, H'B5, H'82, H'DC + .DATA.B H'82, H'B5, H'82, H'BD, H'00, H'00, H'00, H'00 +_const_8c037e78: ; from defines + ;.SDATA "新たにファイルを作成しますよろしいですか?" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'90, H'56, H'82, H'BD, H'82, H'C9, H'83, H'74, H'83, H'40, H'83, H'43, H'83, H'8B, H'82, H'F0 + .DATA.B H'8D, H'EC, H'90, H'AC, H'82, H'B5, H'82, H'DC, H'82, H'B7, H'3C, H'45, H'3E, H'82, H'E6, H'82 + .DATA.B H'EB, H'82, H'B5, H'82, H'A2, H'82, H'C5, H'82, H'B7, H'82, H'A9, H'81, H'48, H'00, H'00, H'00 +_const_8c037ea8: ; from defines + ;.SDATA "このファイルでよろしいですか?" + ;.DATA.B H'00 + ;.RES.B 1 + .DATA.B H'82, H'B1, H'82, H'CC, H'83, H'74, H'83, H'40, H'83, H'43, H'83, H'8B, H'82, H'C5, H'82, H'E6 + .DATA.B H'82, H'EB, H'82, H'B5, H'82, H'A2, H'82, H'C5, H'82, H'B7, H'82, H'A9, H'81, H'48, H'00, H'00 +_const_8c037ec8: ; from defines + .DATA.B H'00, H'00, H'00, H'00 +_const_8c037ecc: ; from defines + ;.SDATA "ロード実行中です電源を切らないで下さい" + ;.DATA.B H'00 + ;.RES.B 2 + .DATA.B H'83, H'8D, H'81, H'5B, H'83, H'68, H'8E, H'C0, H'8D, H'73, H'92, H'86, H'82, H'C5, H'82, H'B7 + .DATA.B H'3C, H'45, H'3E, H'93, H'64, H'8C, H'B9, H'82, H'F0, H'90, H'D8, H'82, H'E7, H'82, H'C8, H'82 + .DATA.B H'A2, H'82, H'C5, H'89, H'BA, H'82, H'B3, H'82, H'A2, H'00, H'00, H'00 + .END \ No newline at end of file diff --git a/src/asm/019e98.src b/src/asm/019e98.src index 73fd0eb..9338367 100644 --- a/src/asm/019e98.src +++ b/src/asm/019e98.src @@ -5,7 +5,7 @@ .IMPORT _freeQueues_8c011f7e .IMPORT _push_fadein_8c022a9c .IMPORT _sdMidiPlay - .IMPORT _var_8c1ba36c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _var_midiHandles_8c0fcd28 .IMPORT _push_fadeout_8c022b60 .IMPORT _var_8c1bb8fc @@ -24,7 +24,7 @@ .IMPORT _nop_8c011120 .IMPORT _processQueues_8c011fe0 .EXPORT _task_mainmenu_8c019e98 - .EXPORT _FUN_8c01a09a + .EXPORT _switchToMainMenuTask_8c01a09a .SECTION P, CODE, ALIGN=4 _task_mainmenu_8c019e98: MOV.L R14,@-R15 @@ -162,7 +162,7 @@ LP_GEN_56609: .DATA.L _freeQueues_8c011f7e ; H'8C019F90 .DATA.L _push_fadein_8c022a9c ; H'8C019F94 .DATA.L _sdMidiPlay ; H'8C019F98 - .DATA.L _var_8c1ba36c ; H'8C019F9C + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C019F9C .DATA.L _var_midiHandles_8c0fcd28 ; H'8C019FA0 .DATA.L _push_fadeout_8c022b60 ; H'8C019FA4 LAB_8c019fa8: @@ -297,7 +297,7 @@ LAB_8c01a088: MOV.L @R15+,R13 RTS MOV.L @R15+,R14 -_FUN_8c01a09a: +_switchToMainMenuTask_8c01a09a: MOV.L R14,@-R15 STS.L PR,@-R15 ADD #-H'4,R15 diff --git a/src/asm/01a148.src b/src/asm/01a148.src index 753dcd1..1aa27bc 100644 --- a/src/asm/01a148.src +++ b/src/asm/01a148.src @@ -3,7 +3,7 @@ .IMPORT _menuState_8c1bc7a8 .IMPORT _sdMidiPlay .IMPORT _var_midiHandles_8c0fcd28 - .IMPORT _var_8c1ba36c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _isFading_8c226568 .IMPORT _FUN_8c018862 .IMPORT _push_fadeout_8c022b60 @@ -15,7 +15,7 @@ .IMPORT _njDrawPolygon .IMPORT _var_8c157a70 .IMPORT _var_8c1ba1cc - .IMPORT _peripheral_8c1ba35c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _FUN_8c0188bc .IMPORT __modls .IMPORT __divls @@ -33,7 +33,7 @@ .IMPORT _var_8c226088 .IMPORT _FUN_8c010720 .IMPORT _init_8c044e28 - .IMPORT _FUN_8c01a09a + .IMPORT _switchToMainMenuTask_8c01a09a .IMPORT _var_8c1ba290 .EXPORT _FUN_8c01a148 .EXPORT _FUN_8c01a3c0 @@ -200,7 +200,7 @@ LP_GEN_11111: .DATA.L _menuState_8c1bc7a8 ; H'8C01A250 .DATA.L _sdMidiPlay ; H'8C01A254 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01A258 - .DATA.L _var_8c1ba36c ; H'8C01A25C + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01A25C .DATA.L _isFading_8c226568 ; H'8C01A260 .DATA.L _FUN_8c018862 ; H'8C01A264 .DATA.L _push_fadeout_8c022b60 ; H'8C01A268 @@ -488,7 +488,7 @@ LP_GEN_85851: .DATA.L _setTaskAction_8c014b3e ; H'8C01A488 .DATA.L _menuState_8c1bc7a8 ; H'8C01A48C .DATA.L _push_fadein_8c022a9c ; H'8C01A490 - .DATA.L _var_8c1ba36c ; H'8C01A494 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01A494 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01A498 .DATA.L _sdMidiPlay ; H'8C01A49C .DATA.L H'43800000 ; H'8C01A4A0 @@ -693,12 +693,12 @@ LP_GEN_91649: .DATA.L _var_8c157a70 ; H'8C01A60C .DATA.L H'000F06FE ; H'8C01A610 .DATA.L H'000700FE ; H'8C01A614 - .DATA.L _var_8c1ba36c ; H'8C01A618 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01A618 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01A61C .DATA.L _sdMidiPlay ; H'8C01A620 .DATA.L _var_8c1ba1cc ; H'8C01A624 .DATA.L _isFading_8c226568 ; H'8C01A628 - .DATA.L _peripheral_8c1ba35c ; H'8C01A62C + .DATA.L _var_peripheral_8c1ba35c ; H'8C01A62C .DATA.L _FUN_8c0188bc ; H'8C01A630 .DATA.L _push_fadeout_8c022b60 ; H'8C01A634 LAB_8c01a638: @@ -1268,10 +1268,10 @@ LP_GEN_75770: .DATA.L _setTaskAction_8c014b3e ; H'8C01AA48 .DATA.L _menuState_8c1bc7a8 ; H'8C01AA4C .DATA.L _push_fadein_8c022a9c ; H'8C01AA50 - .DATA.L _var_8c1ba36c ; H'8C01AA54 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01AA54 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01AA58 .DATA.L _sdMidiPlay ; H'8C01AA5C - .DATA.L _peripheral_8c1ba35c ; H'8C01AA60 + .DATA.L _var_peripheral_8c1ba35c ; H'8C01AA60 .DATA.L __modls ; H'8C01AA64 .DATA.L __divls ; H'8C01AA68 .DATA.L _sdMidiStop ; H'8C01AA6C @@ -1555,7 +1555,7 @@ LP_GEN_82753: .DATA.L _isFading_8c226568 ; H'8C01AC70 .DATA.L H'43DA0000 ; H'8C01AC74 .DATA.L H'C0400000 ; H'8C01AC78 - .DATA.L _var_8c1ba36c ; H'8C01AC7C + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01AC7C .DATA.L _FUN_8c0188dc ; H'8C01AC80 .DATA.L _var_soundMode_8c226070 ; H'8C01AC84 .DATA.L _setSoundMode_8c0108c0 ; H'8C01AC88 @@ -1689,7 +1689,7 @@ LP_GEN_27951: .DATA.W H'00D5 ; H'8C01AD72 .DATA.W H'00D6 ; H'8C01AD74 .RES.W 1 ; H'8C01AD76 - .DATA.L _var_8c1ba36c ; H'8C01AD78 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01AD78 .DATA.L _setAdxVol_8c010972 ; H'8C01AD7C .DATA.L _setMidiVolAndInitStruct_8c0109f4 ; H'8C01AD80 .DATA.L _FUN_8c0107ac ; H'8C01AD84 @@ -2197,10 +2197,10 @@ LP_GEN_51773: .DATA.L _isFading_8c226568 ; H'8C01B168 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01B16C .DATA.L _sdMidiPlay ; H'8C01B170 - .DATA.L _var_8c1ba36c ; H'8C01B174 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01B174 .DATA.L _init_8c044e28 ; H'8C01B178 .DATA.L _push_fadeout_8c022b60 ; H'8C01B17C - .DATA.L _FUN_8c01a09a ; H'8C01B180 + .DATA.L _switchToMainMenuTask_8c01a09a ; H'8C01B180 .DATA.L _drawSprite_8c014f54 ; H'8C01B184 .DATA.L H'C0800000 ; H'8C01B188 .DATA.L H'C0A00000 ; H'8C01B18C diff --git a/src/asm/01b19c.src b/src/asm/01b19c.src index 513842f..237c2ef 100644 --- a/src/asm/01b19c.src +++ b/src/asm/01b19c.src @@ -23,20 +23,20 @@ .IMPORT _syMalloc .IMPORT _buMakeBackupFileImage .IMPORT _var_8c1ba350 - .IMPORT _saveNames_8c044d50 - .IMPORT _var_8c1ba34c + .IMPORT _init_saveNames_8c044d50 + .IMPORT _var_selectedVm_8c1ba34c .IMPORT _BupSave_8c014bcc .IMPORT _var_8c157a7c .IMPORT _drawSprite_8c014f54 .IMPORT _menuState_8c1bc7a8 - .IMPORT _FUN_8c01967c - .IMPORT _var_8c226048 + .IMPORT _VmMenuUpdateVmuStatus_1967c + .IMPORT _var_vmuStatus_8c226048 .IMPORT _isFading_8c226568 - .IMPORT _FUN_8c02aefc + .IMPORT _swapMessageBoxFor_8c02aefc .IMPORT _getUknPvmBool_8c01432a .IMPORT _freeQueues_8c011f7e - .IMPORT _cycleOptionAndPlaySound_8c016c58 - .IMPORT _var_8c1ba36c + .IMPORT _promptHandleMultiple_16c58 + .IMPORT _var_peripheral_8c1ba35c .IMPORT _const_8c0380c8 .IMPORT _const_8c0380cc .IMPORT _const_8c0380f8 @@ -54,9 +54,9 @@ .IMPORT _var_8c1bb8fc .IMPORT _const_8c0382d8 .IMPORT _const_8c03830c - .IMPORT _FUN_8c0194de + .IMPORT _VmMenuUnmountVms_194de .IMPORT _push_fadeout_8c022b60 - .IMPORT _processNavInputAndPlaySound_8c016caa + .IMPORT _promptHandleBinary_16caa .IMPORT _var_8c1ba2e0 .IMPORT _BupLoad_8c014bc6 .IMPORT _const_8c038340 @@ -336,8 +336,8 @@ LP_GEN_27906: .DATA.L _syMalloc ; H'8C01B390 .DATA.L _buMakeBackupFileImage ; H'8C01B394 .DATA.L _var_8c1ba350 ; H'8C01B398 - .DATA.L _saveNames_8c044d50 ; H'8C01B39C - .DATA.L _var_8c1ba34c ; H'8C01B3A0 + .DATA.L _init_saveNames_8c044d50 ; H'8C01B39C + .DATA.L _var_selectedVm_8c1ba34c ; H'8C01B3A0 .DATA.L _BupSave_8c014bcc ; H'8C01B3A4 .DATA.L _var_8c157a7c ; H'8C01B3A8 _FUN_8c01b3ac: @@ -593,17 +593,17 @@ LP_GEN_91278: .DATA.L H'C0A00000 ; H'8C01B564 .DATA.L _drawSprite_8c014f54 ; H'8C01B568 .DATA.L _menuState_8c1bc7a8 ; H'8C01B56C - .DATA.L _var_8c1ba34c ; H'8C01B570 + .DATA.L _var_selectedVm_8c1ba34c ; H'8C01B570 .DATA.L _var_8c1ba350 ; H'8C01B574 - .DATA.L _saveNames_8c044d50 ; H'8C01B578 - .DATA.L _FUN_8c01967c ; H'8C01B57C - .DATA.L _var_8c226048 ; H'8C01B580 + .DATA.L _init_saveNames_8c044d50 ; H'8C01B578 + .DATA.L _VmMenuUpdateVmuStatus_1967c ; H'8C01B57C + .DATA.L _var_vmuStatus_8c226048 ; H'8C01B580 .DATA.L _isFading_8c226568 ; H'8C01B584 - .DATA.L _FUN_8c02aefc ; H'8C01B588 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C01B588 .DATA.L _getUknPvmBool_8c01432a ; H'8C01B58C .DATA.L _freeQueues_8c011f7e ; H'8C01B590 - .DATA.L _cycleOptionAndPlaySound_8c016c58 ; H'8C01B594 - .DATA.L _var_8c1ba36c ; H'8C01B598 + .DATA.L _promptHandleMultiple_16c58 ; H'8C01B594 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01B598 .DATA.L _const_8c0380c8 ; H'8C01B59C .DATA.L _const_8c0380cc ; H'8C01B5A0 .DATA.L _const_8c0380f8 ; H'8C01B5A4 @@ -772,13 +772,13 @@ LP_GEN_26888: .DATA.L _var_8c1bb8fc ; H'8C01B6DC .DATA.L _const_8c0382d8 ; H'8C01B6E0 .DATA.L _const_8c03830c ; H'8C01B6E4 - .DATA.L _var_8c1ba36c ; H'8C01B6E8 - .DATA.L _FUN_8c0194de ; H'8C01B6EC + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01B6E8 + .DATA.L _VmMenuUnmountVms_194de ; H'8C01B6EC .DATA.L _push_fadeout_8c022b60 ; H'8C01B6F0 - .DATA.L _processNavInputAndPlaySound_8c016caa ; H'8C01B6F4 + .DATA.L _promptHandleBinary_16caa ; H'8C01B6F4 .DATA.L _var_8c1ba2e0 ; H'8C01B6F8 .DATA.L _var_8c1ba350 ; H'8C01B6FC - .DATA.L _saveNames_8c044d50 ; H'8C01B700 + .DATA.L _init_saveNames_8c044d50 ; H'8C01B700 .DATA.L _BupLoad_8c014bc6 ; H'8C01B704 .DATA.L _var_8c157a7c ; H'8C01B708 .DATA.L _const_8c038340 ; H'8C01B70C @@ -930,7 +930,7 @@ LP_GEN_43539: .DATA.L _const_8c0383d0 ; H'8C01B840 .DATA.L _var_8c157a7c ; H'8C01B844 .DATA.L _vmsLcd_8c01c8fc ; H'8C01B848 - .DATA.L _var_8c1ba36c ; H'8C01B84C + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01B84C .DATA.L _FUN_8c016182 ; H'8C01B850 .DATA.L _pushTitle_8c015fd6 ; H'8C01B854 .DATA.L _menuTextboxText_8c02af1c ; H'8C01B858 @@ -1119,7 +1119,7 @@ LAB_8c01b97a: MOV.L @R15+,R14 LP_GEN_14610: .RES.W 1 ; H'8C01B9AE - .DATA.L _processNavInputAndPlaySound_8c016caa ; H'8C01B9B0 + .DATA.L _promptHandleBinary_16caa ; H'8C01B9B0 .DATA.L _const_8c0383e8 ; H'8C01B9B4 .DATA.L _vmsLcd_8c01c8fc ; H'8C01B9B8 .DATA.L _const_8c0380c8 ; H'8C01B9BC @@ -1133,7 +1133,7 @@ LP_GEN_14610: .DATA.L _var_8c157a7c ; H'8C01B9DC .DATA.L _var_8c1ba348 ; H'8C01B9E0 .DATA.L _syFree ; H'8C01B9E4 - .DATA.L _FUN_8c0194de ; H'8C01B9E8 + .DATA.L _VmMenuUnmountVms_194de ; H'8C01B9E8 .DATA.L _push_fadeout_8c022b60 ; H'8C01B9EC .DATA.L _var_8c22606c ; H'8C01B9F0 .DATA.L _FUN_8c0187d0 ; H'8C01B9F4 @@ -1267,11 +1267,11 @@ LP_GEN_62205: .DATA.L _syMalloc ; H'8C01BAFC .DATA.L _var_8c1ba2e0 ; H'8C01BB00 .DATA.L _var_8c1ba350 ; H'8C01BB04 - .DATA.L _saveNames_8c044d50 ; H'8C01BB08 - .DATA.L _var_8c1ba34c ; H'8C01BB0C - .DATA.L _FUN_8c01967c ; H'8C01BB10 + .DATA.L _init_saveNames_8c044d50 ; H'8C01BB08 + .DATA.L _var_selectedVm_8c1ba34c ; H'8C01BB0C + .DATA.L _VmMenuUpdateVmuStatus_1967c ; H'8C01BB10 .DATA.L _const_8c0380c8 ; H'8C01BB14 - .DATA.L _FUN_8c02aefc ; H'8C01BB18 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C01BB18 .DATA.L _push_fadein_8c022a9c ; H'8C01BB1C .DATA.L _initQueues_8c011f36 ; H'8C01BB20 .DATA.L _resetQueues_8c011f6c ; H'8C01BB24 diff --git a/src/asm/01bb48.src b/src/asm/01bb48.src index efb027f..3e3b085 100644 --- a/src/asm/01bb48.src +++ b/src/asm/01bb48.src @@ -22,20 +22,20 @@ .IMPORT _menuState_8c1bc7a8 .IMPORT _drawSprite_8c014f54 .IMPORT _var_resourceGroup_8c2263a8 - .IMPORT _var_8c226048 + .IMPORT _var_vmuStatus_8c226048 .IMPORT _init_8c044e50 - .IMPORT _FUN_8c02aefc + .IMPORT _swapMessageBoxFor_8c02aefc .IMPORT _const_8c038460 .IMPORT _const_8c03847c .IMPORT _const_8c03867c .IMPORT _init_8c044e48 - .IMPORT _FUN_8c019550 + .IMPORT _VmMenuUpdateVmusStatus_19550 .IMPORT _isFading_8c226568 .IMPORT _getUknPvmBool_8c01432a .IMPORT _freeQueues_8c011f7e - .IMPORT _cycleOptionAndPlaySound_8c016c58 - .IMPORT _var_8c1ba36c - .IMPORT _FUN_8c0194de + .IMPORT _promptHandleMultiple_16c58 + .IMPORT _var_peripheral_8c1ba35c + .IMPORT _VmMenuUnmountVms_194de .IMPORT _push_fadeout_8c022b60 .IMPORT _var_midiHandles_8c0fcd28 .IMPORT _sdMidiPlay @@ -43,8 +43,8 @@ .IMPORT _const_8c038498 .IMPORT _const_8c0384b0 .IMPORT _const_8c0384e8 - .IMPORT _FUN_8c016d2c - .IMPORT _processNavInputAndPlaySound_8c016caa + .IMPORT _interpolated_8c016d2c + .IMPORT _promptHandleBinary_16caa .IMPORT _const_8c03866c .IMPORT _var_8c1bc454 .IMPORT _const_8c038510 @@ -64,7 +64,7 @@ .IMPORT _var_8c22606c .IMPORT _freeResourceGroup_8c0185c4 .IMPORT _syFree - .IMPORT _FUN_8c01a09a + .IMPORT _switchToMainMenuTask_8c01a09a .IMPORT _menuTextboxText_8c02af1c .IMPORT _setTaskAction_8c014b3e .IMPORT _initQueues_8c011f36 @@ -706,14 +706,14 @@ LP_GEN_34738: .DATA.L _drawSprite_8c014f54 ; H'8C01BFB4 .DATA.L _var_resourceGroup_8c2263a8 ; H'8C01BFB8 .DATA.L H'C0800000 ; H'8C01BFBC - .DATA.L _var_8c226048 ; H'8C01BFC0 + .DATA.L _var_vmuStatus_8c226048 ; H'8C01BFC0 .DATA.L H'C0A00000 ; H'8C01BFC4 .DATA.L H'C0C00000 ; H'8C01BFC8 .DATA.L H'C089999A ; H'8C01BFCC .DATA.L H'C0E00000 ; H'8C01BFD0 .DATA.L _init_8c044e50 ; H'8C01BFD4 .DATA.L H'40C00000 ; H'8C01BFD8 - .DATA.L _FUN_8c02aefc ; H'8C01BFDC + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C01BFDC .DATA.L _const_8c038460 ; H'8C01BFE0 .DATA.L _const_8c03847c ; H'8C01BFE4 .DATA.L _const_8c03867c ; H'8C01BFE8 @@ -776,10 +776,10 @@ LP_GEN_95139: .DATA.L H'C0A00000 ; H'8C01C058 .DATA.L _menuState_8c1bc7a8 ; H'8C01C05C .DATA.L _init_8c044e48 ; H'8C01C060 - .DATA.L _FUN_8c019550 ; H'8C01C064 + .DATA.L _VmMenuUpdateVmusStatus_19550 ; H'8C01C064 .DATA.L _isFading_8c226568 ; H'8C01C068 - .DATA.L _FUN_8c02aefc ; H'8C01C06C - .DATA.L _var_8c226048 ; H'8C01C070 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C01C06C + .DATA.L _var_vmuStatus_8c226048 ; H'8C01C070 .DATA.W H'0042 ; H'8C01C074 .DATA.W H'005C ; H'8C01C076 .DATA.W H'0088 ; H'8C01C078 @@ -1081,9 +1081,9 @@ LP_GEN_76857: .DATA.L _getUknPvmBool_8c01432a ; H'8C01C284 .DATA.L _freeQueues_8c011f7e ; H'8C01C288 .DATA.L _drawSprite_8c014f54 ; H'8C01C28C - .DATA.L _cycleOptionAndPlaySound_8c016c58 ; H'8C01C290 - .DATA.L _var_8c1ba36c ; H'8C01C294 - .DATA.L _FUN_8c0194de ; H'8C01C298 + .DATA.L _promptHandleMultiple_16c58 ; H'8C01C290 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01C294 + .DATA.L _VmMenuUnmountVms_194de ; H'8C01C298 .DATA.L _push_fadeout_8c022b60 ; H'8C01C29C .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01C2A0 .DATA.L _sdMidiPlay ; H'8C01C2A4 @@ -1334,15 +1334,15 @@ LAB_8c01c43e: NOP LP_GEN_25641: .RES.W 1 ; H'8C01C452 - .DATA.L _var_8c1ba36c ; H'8C01C454 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01C454 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01C458 .DATA.L _sdMidiPlay ; H'8C01C45C .DATA.L _const_8c0384b0 ; H'8C01C460 .DATA.L _const_8c0384e8 ; H'8C01C464 .DATA.L _push_fadeout_8c022b60 ; H'8C01C468 .DATA.L _const_8c038498 ; H'8C01C46C - .DATA.L _FUN_8c016d2c ; H'8C01C470 - .DATA.L _processNavInputAndPlaySound_8c016caa ; H'8C01C474 + .DATA.L _interpolated_8c016d2c ; H'8C01C470 + .DATA.L _promptHandleBinary_16caa ; H'8C01C474 LAB_8c01c478: MOV #H'6c,R0 MOV.L LP_GEN_18425,R5 @@ -1581,7 +1581,7 @@ LP_GEN_18425: .DATA.L _var_8c2260b8 ; H'8C01C630 .DATA.L _const_8c0385bc ; H'8C01C634 .DATA.L _var_texbuf_8c277ca0 ; H'8C01C638 - .DATA.L _processNavInputAndPlaySound_8c016caa ; H'8C01C63C + .DATA.L _promptHandleBinary_16caa ; H'8C01C63C .DATA.L _const_8c0385d8 ; H'8C01C640 .DATA.L H'43640000 ; H'8C01C644 .DATA.L _drawSprite_8c014f54 ; H'8C01C648 @@ -1849,7 +1849,7 @@ LAB_8c01c826: MOV.L @R15+,R14 LP_GEN_33412: .DATA.W H'00FF ; H'8C01C842 - .DATA.L _var_8c1ba36c ; H'8C01C844 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01C844 .DATA.L _const_8c03867c ; H'8C01C848 .DATA.L _push_fadeout_8c022b60 ; H'8C01C84C .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01C850 @@ -1860,7 +1860,7 @@ LP_GEN_33412: .DATA.L _freeResourceGroup_8c0185c4 ; H'8C01C864 .DATA.L _var_8c1bc454 ; H'8C01C868 .DATA.L _syFree ; H'8C01C86C - .DATA.L _FUN_8c01a09a ; H'8C01C870 + .DATA.L _switchToMainMenuTask_8c01a09a ; H'8C01C870 .DATA.L _menuTextboxText_8c02af1c ; H'8C01C874 .DATA.L H'C0800000 ; H'8C01C878 .DATA.L _drawSprite_8c014f54 ; H'8C01C87C @@ -1967,7 +1967,7 @@ LP_GEN_73212: .DATA.L _nop_8c011120 ; H'8C01C958 .DATA.L _processQueues_8c011fe0 ; H'8C01C95C .DATA.L _const_8c03867c ; H'8C01C960 - .DATA.L _FUN_8c02aefc ; H'8C01C964 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C01C964 .DATA.L _var_8c2260ac ; H'8C01C968 .DATA.L _var_8c2260b8 ; H'8C01C96C .DATA.L _var_8c2260c4 ; H'8C01C970 diff --git a/src/asm/01c980.src b/src/asm/01c980.src index 2fd59a9..45fab30 100644 --- a/src/asm/01c980.src +++ b/src/asm/01c980.src @@ -24,12 +24,12 @@ .IMPORT _sdMidiPlay .IMPORT _push_fadein_8c022a9c .IMPORT _push_fadeout_8c022b60 - .IMPORT _peripheral_8c1ba35c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _isFading_8c226568 .IMPORT _getUknPvmBool_8c01432a .IMPORT _freeQueues_8c011f7e - .IMPORT _FUN_8c016d2c - .IMPORT _cycleOptionAndPlaySound_8c016c58 + .IMPORT _interpolated_8c016d2c + .IMPORT _promptHandleMultiple_16c58 .IMPORT _FUN_8c016182 .IMPORT _FUN_8c017ef2 .IMPORT _njSetBackColor @@ -519,7 +519,7 @@ LP_GEN_41643: .DATA.L _push_fadeout_8c022b60 ; H'8C01CD50 .DATA.L _sdMidiPlay ; H'8C01CD54 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01CD58 - .DATA.L _peripheral_8c1ba35c ; H'8C01CD5C + .DATA.L _var_peripheral_8c1ba35c ; H'8C01CD5C .DATA.L _menuState_8c1bc7a8 ; H'8C01CD60 .DATA.L _isFading_8c226568 ; H'8C01CD64 .DATA.W H'003E ; H'8C01CD68 @@ -814,8 +814,8 @@ LP_GEN_45604: .DATA.L _freeQueues_8c011f7e ; H'8C01CF68 .DATA.L H'42400000 ; H'8C01CF6C .DATA.L H'40C00000 ; H'8C01CF70 - .DATA.L _FUN_8c016d2c ; H'8C01CF74 - .DATA.L _cycleOptionAndPlaySound_8c016c58 ; H'8C01CF78 + .DATA.L _interpolated_8c016d2c ; H'8C01CF74 + .DATA.L _promptHandleMultiple_16c58 ; H'8C01CF78 LAB_8c01cf7c: MOV.L @(H'10,R13),R3 TST R9,R3 diff --git a/src/asm/01d290.src b/src/asm/01d290.src index 0873e35..a9563b5 100644 --- a/src/asm/01d290.src +++ b/src/asm/01d290.src @@ -2,7 +2,7 @@ .IMPORT _menuState_8c1bc7a8 .IMPORT _var_8c1ba1cc .IMPORT _drawSprite_8c014f54 - .IMPORT _peripheral_8c1ba35c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _isFading_8c226568 .IMPORT _getUknPvmBool_8c01432a .IMPORT _freeQueues_8c011f7e @@ -13,7 +13,7 @@ .IMPORT _FUN_8c010bae .IMPORT _push_fadeout_8c022b60 .IMPORT _init_8c045170 - .IMPORT _FUN_8c016d2c + .IMPORT _interpolated_8c016d2c .IMPORT _init_8c03bd80 .IMPORT _FUN_8c016182 .IMPORT _FUN_8c017ef2 @@ -231,7 +231,7 @@ LP_GEN_16673: .DATA.L _drawSprite_8c014f54 ; H'8C01D3F8 .DATA.L H'C0800000 ; H'8C01D3FC .DATA.L H'C0A00000 ; H'8C01D400 - .DATA.L _peripheral_8c1ba35c ; H'8C01D404 + .DATA.L _var_peripheral_8c1ba35c ; H'8C01D404 .DATA.L _isFading_8c226568 ; H'8C01D408 .DATA.L _getUknPvmBool_8c01432a ; H'8C01D40C .DATA.L _freeQueues_8c011f7e ; H'8C01D410 @@ -676,7 +676,7 @@ LP_GEN_43132: .DATA.L _sdMidiPlay ; H'8C01D740 .DATA.L _FUN_8c010bae ; H'8C01D744 .DATA.L _push_fadeout_8c022b60 ; H'8C01D748 - .DATA.L _FUN_8c016d2c ; H'8C01D74C + .DATA.L _interpolated_8c016d2c ; H'8C01D74C .DATA.L H'C0000000 ; H'8C01D750 .DATA.L H'C0400000 ; H'8C01D754 .DATA.L _drawSprite_8c014f54 ; H'8C01D758 diff --git a/src/asm/01d7fc.src b/src/asm/01d7fc.src index 2900de8..1a14b7f 100644 --- a/src/asm/01d7fc.src +++ b/src/asm/01d7fc.src @@ -4,13 +4,13 @@ .IMPORT __modls .IMPORT __divls .IMPORT _menuTextboxText_8c02af1c - .IMPORT _var_8c1ba34c + .IMPORT _var_selectedVm_8c1ba34c .IMPORT _isFading_8c226568 - .IMPORT _FUN_8c02aefc + .IMPORT _swapMessageBoxFor_8c02aefc .IMPORT _var_8c1ba350 - .IMPORT _saveNames_8c044d50 - .IMPORT _var_8c1ba36c - .IMPORT _FUN_8c01967c + .IMPORT _init_saveNames_8c044d50 + .IMPORT _var_peripheral_8c1ba35c + .IMPORT _VmMenuUpdateVmuStatus_1967c .IMPORT _getUknPvmBool_8c01432a .IMPORT _freeQueues_8c011f7e .IMPORT _var_8c226408 @@ -29,14 +29,14 @@ .IMPORT _var_8c1bb8fc .IMPORT _var_8c1ba1cc .IMPORT _push_fadeout_8c022b60 - .IMPORT _var_8c226048 + .IMPORT _var_vmuStatus_8c226048 .IMPORT _const_8c0387fc .IMPORT _const_8c038828 .IMPORT _const_8c038858 .IMPORT _const_8c038894 .IMPORT _const_8c0388b8 .IMPORT _const_8c0388f0 - .IMPORT _processNavInputAndPlaySound_8c016caa + .IMPORT _promptHandleBinary_16caa .IMPORT _push_fadein_8c022a9c .IMPORT _FUN_8c01890a .IMPORT _FUN_8c01b26c @@ -253,13 +253,13 @@ LP_GEN_44131: .DATA.L H'43020000 ; H'8C01D93C .DATA.L H'42C00000 ; H'8C01D940 .DATA.L H'C0800000 ; H'8C01D944 - .DATA.L _var_8c1ba34c ; H'8C01D948 + .DATA.L _var_selectedVm_8c1ba34c ; H'8C01D948 .DATA.L _isFading_8c226568 ; H'8C01D94C - .DATA.L _FUN_8c02aefc ; H'8C01D950 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C01D950 .DATA.L _menuState_8c1bc7a8 ; H'8C01D954 .DATA.L _var_8c1ba350 ; H'8C01D958 - .DATA.L _saveNames_8c044d50 ; H'8C01D95C - .DATA.L _var_8c1ba36c ; H'8C01D960 + .DATA.L _init_saveNames_8c044d50 ; H'8C01D95C + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01D960 .DATA.W H'0044 ; H'8C01D964 .DATA.W H'0094 ; H'8C01D966 .DATA.W H'00AC ; H'8C01D968 @@ -531,7 +531,7 @@ LAB_8c01db36: BRA LAB_8c01df50 NOP LP_GEN_73625: - .DATA.L _FUN_8c01967c ; H'8C01DB48 + .DATA.L _VmMenuUpdateVmuStatus_1967c ; H'8C01DB48 .DATA.L _getUknPvmBool_8c01432a ; H'8C01DB4C .DATA.L _freeQueues_8c011f7e ; H'8C01DB50 .DATA.L _var_8c226408 ; H'8C01DB54 @@ -683,9 +683,9 @@ LP_GEN_38701: .DATA.W H'00FF ; H'8C01DC84 .RES.W 1 ; H'8C01DC86 .DATA.L _var_8c1ba350 ; H'8C01DC88 - .DATA.L _saveNames_8c044d50 ; H'8C01DC8C - .DATA.L _FUN_8c01967c ; H'8C01DC90 - .DATA.L _var_8c226048 ; H'8C01DC94 + .DATA.L _init_saveNames_8c044d50 ; H'8C01DC8C + .DATA.L _VmMenuUpdateVmuStatus_1967c ; H'8C01DC90 + .DATA.L _var_vmuStatus_8c226048 ; H'8C01DC94 .DATA.L _const_8c0387fc ; H'8C01DC98 .DATA.L _const_8c038828 ; H'8C01DC9C .DATA.L _const_8c038858 ; H'8C01DCA0 @@ -693,7 +693,7 @@ LP_GEN_38701: .DATA.L _const_8c0388b8 ; H'8C01DCA8 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01DCAC .DATA.L _sdMidiPlay ; H'8C01DCB0 - .DATA.L _var_8c1ba36c ; H'8C01DCB4 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01DCB4 .DATA.L _const_8c0388f0 ; H'8C01DCB8 .DATA.L _menuTextboxText_8c02af1c ; H'8C01DCBC caseD_6_2: @@ -979,11 +979,11 @@ LAB_8c01dea6: JMP @R2 MOV.L @R15+,R14 LP_GEN_50614: - .DATA.L _FUN_8c01967c ; H'8C01DEC4 - .DATA.L _processNavInputAndPlaySound_8c016caa ; H'8C01DEC8 + .DATA.L _VmMenuUpdateVmuStatus_1967c ; H'8C01DEC4 + .DATA.L _promptHandleBinary_16caa ; H'8C01DEC8 .DATA.L _push_fadeout_8c022b60 ; H'8C01DECC .DATA.L _push_fadein_8c022a9c ; H'8C01DED0 - .DATA.L _var_8c226048 ; H'8C01DED4 + .DATA.L _var_vmuStatus_8c226048 ; H'8C01DED4 .DATA.L _var_8c226408 ; H'8C01DED8 .DATA.L _FUN_8c01890a ; H'8C01DEDC .DATA.L _FUN_8c01b26c ; H'8C01DEE0 diff --git a/src/asm/01e27c.src b/src/asm/01e27c.src index 5e6b486..1e3b5ff 100644 --- a/src/asm/01e27c.src +++ b/src/asm/01e27c.src @@ -10,13 +10,13 @@ .IMPORT _init_8c0451b4 .IMPORT _snd_8c010cd6 .IMPORT _push_fadein_8c022a9c - .IMPORT _var_8c1ba36c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _const_8c03896c - .IMPORT _FUN_8c02aefc + .IMPORT _swapMessageBoxFor_8c02aefc .IMPORT _var_midiHandles_8c0fcd28 .IMPORT _sdMidiPlay .IMPORT _FUN_8c010bae - .IMPORT _processNavInputAndPlaySound_8c016caa + .IMPORT _promptHandleBinary_16caa .IMPORT _push_fadeout_8c022b60 .IMPORT _njSetBackColor .IMPORT _FUN_8c016182 @@ -236,7 +236,7 @@ LP_GEN_72974: .DATA.L _init_8c0451b4 ; H'8C01E3A0 .DATA.L _snd_8c010cd6 ; H'8C01E3A4 .DATA.L _push_fadein_8c022a9c ; H'8C01E3A8 - .DATA.L _var_8c1ba36c ; H'8C01E3AC + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01E3AC LAB_8c01e3b0: MOV.L LP_GEN_38636,R4 MOV #H'3,R3 @@ -523,11 +523,11 @@ _FUN_8c01e576: NOP LP_GEN_38636: .DATA.L _const_8c03896c ; H'8C01E5C0 - .DATA.L _FUN_8c02aefc ; H'8C01E5C4 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C01E5C4 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01E5C8 .DATA.L _sdMidiPlay ; H'8C01E5CC .DATA.L _FUN_8c010bae ; H'8C01E5D0 - .DATA.L _processNavInputAndPlaySound_8c016caa ; H'8C01E5D4 + .DATA.L _promptHandleBinary_16caa ; H'8C01E5D4 .DATA.L _push_fadeout_8c022b60 ; H'8C01E5D8 .DATA.L H'43960000 ; H'8C01E5DC .DATA.L H'C0A00000 ; H'8C01E5E0 @@ -750,7 +750,7 @@ LP_GEN_92116: .DATA.L _isFading_8c226568 ; H'8C01E79C .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01E7A0 .DATA.L _sdMidiPlay ; H'8C01E7A4 - .DATA.L _var_8c1ba36c ; H'8C01E7A8 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01E7A8 .DATA.L _getUknPvmBool_8c01432a ; H'8C01E7AC .DATA.L _freeQueues_8c011f7e ; H'8C01E7B0 .DATA.L _snd_8c010cd6 ; H'8C01E7B4 @@ -1229,7 +1229,7 @@ LP_GEN_88702: .DATA.L _setTaskAction_8c014b3e ; H'8C01EB4C .DATA.L _menuState_8c1bc7a8 ; H'8C01EB50 .DATA.L _const_8c038984 ; H'8C01EB54 - .DATA.L _FUN_8c02aefc ; H'8C01EB58 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C01EB58 .DATA.L _initQueues_8c011f36 ; H'8C01EB5C .DATA.L _resetQueues_8c011f6c ; H'8C01EB60 .DATA.L _init_8c044274 ; H'8C01EB64 @@ -1553,10 +1553,10 @@ LP_GEN_52292: .DATA.L _drawSprite_8c014f54 ; H'8C01EDE4 .DATA.L _var_8c1bb8bc ; H'8C01EDE8 .DATA.L _isFading_8c226568 ; H'8C01EDEC - .DATA.L _FUN_8c02aefc ; H'8C01EDF0 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C01EDF0 .DATA.L _sdMidiPlay ; H'8C01EDF4 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C01EDF8 - .DATA.L _var_8c1ba36c ; H'8C01EDFC + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C01EDFC .DATA.L _getUknPvmBool_8c01432a ; H'8C01EE00 .DATA.L _freeQueues_8c011f7e ; H'8C01EE04 .DATA.L _FUN_8c010d8a ; H'8C01EE08 @@ -1708,7 +1708,7 @@ LAB_8c01ef0c: MOV.L @R15+,R14 LP_GEN_95699: .DATA.W H'0090 ; H'8C01EF2A - .DATA.L _processNavInputAndPlaySound_8c016caa ; H'8C01EF2C + .DATA.L _promptHandleBinary_16caa ; H'8C01EF2C .DATA.L _FUN_8c010bae ; H'8C01EF30 .DATA.L _push_fadeout_8c022b60 ; H'8C01EF34 .DATA.L _const_8c038984 ; H'8C01EF38 @@ -2225,7 +2225,7 @@ LP_GEN_37649: .DATA.L H'C0000000 ; H'8C01F388 .DATA.L _FUN_8c02ae3e ; H'8C01F38C .DATA.L _const_8c038984 ; H'8C01F390 - .DATA.L _FUN_8c02aefc ; H'8C01F394 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C01F394 .DATA.L _initQueues_8c011f36 ; H'8C01F398 .DATA.L _resetQueues_8c011f6c ; H'8C01F39C .DATA.L _var_8c225fb0 ; H'8C01F3A0 diff --git a/src/asm/01f3c0.src b/src/asm/01f3c0.src index 7e2df44..dd08e43 100644 --- a/src/asm/01f3c0.src +++ b/src/asm/01f3c0.src @@ -31,7 +31,7 @@ .IMPORT _var_8c1bc408 .IMPORT _init_8c045290 .IMPORT _FUN_8c016182 - .IMPORT _var_8c1ba34c + .IMPORT _var_selectedVm_8c1ba34c .IMPORT _pushTitle_8c015fd6 .IMPORT _init_8c044c08 .IMPORT _FUN_8c0128cc @@ -42,7 +42,7 @@ .IMPORT _njGarbageTexture .IMPORT _FUN_8c02ae3e .IMPORT _const_8c039f48 - .IMPORT _FUN_8c02aefc + .IMPORT _swapMessageBoxFor_8c02aefc .IMPORT _initQueues_8c011f36 .IMPORT _resetQueues_8c011f6c .IMPORT _init_8c045324 @@ -766,7 +766,7 @@ LP_GEN_28976: .RES.W 1 ; H'8C01F93E .DATA.L _push_fadeout_8c022b60 ; H'8C01F940 .DATA.L _FUN_8c016182 ; H'8C01F944 - .DATA.L _var_8c1ba34c ; H'8C01F948 + .DATA.L _var_selectedVm_8c1ba34c ; H'8C01F948 .DATA.L _FUN_8c01e24e ; H'8C01F94C .DATA.L _pushTitle_8c015fd6 ; H'8C01F950 _FUN_8c01f954: @@ -882,7 +882,7 @@ LP_GEN_38893: .DATA.L H'C0000000 ; H'8C01FA40 .DATA.L _FUN_8c02ae3e ; H'8C01FA44 .DATA.L _const_8c039f48 ; H'8C01FA48 - .DATA.L _FUN_8c02aefc ; H'8C01FA4C + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C01FA4C .DATA.L _var_8c225fb8 ; H'8C01FA50 .DATA.L _initQueues_8c011f36 ; H'8C01FA54 .DATA.L _resetQueues_8c011f6c ; H'8C01FA58 diff --git a/src/asm/022bdc.src b/src/asm/022bdc.src index 7949a2b..827fd6a 100644 --- a/src/asm/022bdc.src +++ b/src/asm/022bdc.src @@ -8,7 +8,7 @@ .IMPORT _acosf .IMPORT _var_8c227db0 .IMPORT _var_8c227db4 - .IMPORT _var_8c1ba36c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _FUN_8c0246b2 .IMPORT _var_8c2264b8 .IMPORT _var_8c1bb8c8 @@ -312,7 +312,7 @@ LP_GEN_73202: .DATA.W H'027C ; H'8C022DEE .DATA.W H'0334 ; H'8C022DF0 .DATA.W H'02BC ; H'8C022DF2 - .DATA.L _var_8c1ba36c ; H'8C022DF4 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C022DF4 .DATA.L _FUN_8c0246b2 ; H'8C022DF8 .DATA.L _var_8c2264b8 ; H'8C022DFC .DATA.L _var_8c1bb8c8 ; H'8C022E00 diff --git a/src/asm/024280.src b/src/asm/024280.src index be471a8..795083e 100644 --- a/src/asm/024280.src +++ b/src/asm/024280.src @@ -2,7 +2,7 @@ .IMPORT _var_busState_8c1bb9d0 .IMPORT _var_tasks_8c1bac28 .IMPORT _var_8c1bb8c8 - .IMPORT _var_8c1ba36c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _var_8c1ba374 .IMPORT _var_8c1ba29c .IMPORT _var_midiHandles_8c0fcd28 @@ -18,7 +18,7 @@ .IMPORT _var_8c2285c4 .IMPORT _var_8c227d8c .IMPORT __divls - .IMPORT _peripheral_8c1ba35c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _var_8c1ba1cc .IMPORT _vib_8c010f7a .IMPORT _var_vibport_8c1ba354 @@ -114,7 +114,7 @@ LP_GEN_37903: .DATA.L H'BE3DA12F ; H'8C024310 .DATA.L _var_tasks_8c1bac28 ; H'8C024314 .DATA.L _var_8c1bb8c8 ; H'8C024318 - .DATA.L _var_8c1ba36c ; H'8C02431C + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C02431C _FUN_8c024320: MOV.L LP_GEN_79582+8,R3 MOVA LP_GEN_79582+16,R0 @@ -673,7 +673,7 @@ LP_GEN_30719: .DATA.W H'0080 ; H'8C02477A .DATA.L __divls ; H'8C02477C .DATA.L _var_8c2285c4 ; H'8C024780 - .DATA.L _peripheral_8c1ba35c ; H'8C024784 + .DATA.L _var_peripheral_8c1ba35c ; H'8C024784 .DATA.L _var_busState_8c1bb9d0 ; H'8C024788 .DATA.L _var_8c1ba1cc ; H'8C02478C .DATA.L _vib_8c010f7a ; H'8C024790 diff --git a/src/asm/024b4c.src b/src/asm/024b4c.src index 9fd698d..c2acc03 100644 --- a/src/asm/024b4c.src +++ b/src/asm/024b4c.src @@ -44,7 +44,7 @@ .IMPORT _njPointCameraInterest .IMPORT _var_8c227dac .IMPORT _njSin - .IMPORT _var_8c1ba36c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _var_8c1bbc84 .IMPORT _njInitCamera .IMPORT _njSetCameraAngle @@ -1023,7 +1023,7 @@ LP_GEN_48962: .DATA.W H'27D2 ; H'8C0252DA .DATA.W H'00C8 ; H'8C0252DC .RES.W 1 ; H'8C0252DE - .DATA.L _var_8c1ba36c ; H'8C0252E0 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C0252E0 .DATA.L _var_8c1bbc84 ; H'8C0252E4 .DATA.L _var_8c227d9c ; H'8C0252E8 .DATA.L _var_8c1bb904 ; H'8C0252EC diff --git a/src/asm/025870.src b/src/asm/025870.src index a54695f..ef59b41 100644 --- a/src/asm/025870.src +++ b/src/asm/025870.src @@ -15,7 +15,7 @@ .IMPORT _var_8c227dd4 .IMPORT _var_8c227e0c .IMPORT __quick_odd_mvn - .IMPORT _FUN_8c02aefc + .IMPORT _swapMessageBoxFor_8c02aefc .IMPORT _menuTextboxText_8c02af1c .IMPORT _FUN_8c0223ea .IMPORT _var_8c18ad1c @@ -317,7 +317,7 @@ LP_GEN_71160: .DATA.L _var_8c227e0c ; H'8C025AB8 .DATA.L _var_8c227d9c ; H'8C025ABC .DATA.L __quick_odd_mvn ; H'8C025AC0 - .DATA.L _FUN_8c02aefc ; H'8C025AC4 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C025AC4 LAB_8c025ac8: TST R4,R4 BF LAB_8c025ace diff --git a/src/asm/028258.src b/src/asm/028258.src index 897a979..e3e29c9 100644 --- a/src/asm/028258.src +++ b/src/asm/028258.src @@ -200,7 +200,7 @@ .EXPORT _FUN_8c02ad8c .EXPORT _FUN_8c02adee .EXPORT _FUN_8c02ae3e - .EXPORT _FUN_8c02aefc + .EXPORT _swapMessageBoxFor_8c02aefc .EXPORT _menuTextboxText_8c02af1c .EXPORT _free_8c1bc404_8c02af32 .SECTION P, CODE, ALIGN=4 @@ -5608,7 +5608,7 @@ LAB_8c02abd0: MOV.L R3,@(H'18,R14) LAB_8c02abe4: MOV.L @(H'18,R14),R4 - BSR _FUN_8c02aefc + BSR _swapMessageBoxFor_8c02aefc MOV.L @R4,R4 MOV.L LP_GEN_90033+6,R3 MOV.L R0,@(H'4,R14) @@ -5992,7 +5992,7 @@ LP_GEN_16602: .DATA.L _FUN_8c0152fc ; H'8C02AEF0 .DATA.L _var_8c1bc40c ; H'8C02AEF4 .DATA.L _var_8c225fb8 ; H'8C02AEF8 -_FUN_8c02aefc: +_swapMessageBoxFor_8c02aefc: MOV.L R14,@-R15 ADD #-H'4,R15 MOV.L LP_GEN_47883,R14 diff --git a/src/asm/0332a4_sectionC.src b/src/asm/0332a4_sectionC.src index e00f582..a2d97e5 100644 --- a/src/asm/0332a4_sectionC.src +++ b/src/asm/0332a4_sectionC.src @@ -1,194 +1,4 @@ -; 8c0332a4 - .EXPORT _const_8c035f24 - .EXPORT _const_8c035f74 - .EXPORT _const_8c035f7c - .EXPORT _const_8c035f88 - .EXPORT _const_8c035f94 - .EXPORT _const_8c035fa0 - .EXPORT _const_8c035fac - .EXPORT _const_8c035fb8 - .EXPORT _const_8c035fcc - .EXPORT _const_8c035fd8 - .EXPORT _const_8c035fe4 - .EXPORT _const_8c035ff4 - .EXPORT _const_8c036000 - .EXPORT _const_8c03600c - .EXPORT _const_8c03601c - .EXPORT _const_8c036028 - .EXPORT _const_8c036034 - .EXPORT _const_8c03604c - .EXPORT _const_8c03605c - .EXPORT _const_8c03606c - .EXPORT _const_8c036084 - .EXPORT _const_8c036094 - .EXPORT _const_8c0360a4 - .EXPORT _const_8c0360b0 - .EXPORT _const_8c0360b4 - .EXPORT _const_8c0360c0 - .EXPORT _const_8c0360d4 - .EXPORT _const_8c0360e4 - .EXPORT _const_8c0360fc - .EXPORT _const_8c036120 - .EXPORT _const_8c036130 - .EXPORT _const_8c036148 - .EXPORT _const_8c036160 - .EXPORT _const_8c03616c - .EXPORT _const_8c036170 - .EXPORT _const_8c036180 - .EXPORT _const_8c036190 - .EXPORT _const_8c03619c - .EXPORT _const_8c0361a8 - .EXPORT _const_8c0361b8 - .EXPORT _const_8c0361c8 - .EXPORT _const_8c0361dc - .EXPORT _const_8c0361ec - .EXPORT _const_8c036200 - .EXPORT _const_8c036218 - .EXPORT _const_8c036224 - .EXPORT _const_8c036234 - .EXPORT _const_8c036244 - .EXPORT _const_8c036250 - .EXPORT _const_8c036264 - .EXPORT _const_8c036274 - .EXPORT _const_8c03627c - .EXPORT _const_8c03628c - .EXPORT _const_8c036290 - .EXPORT _const_8c036298 - .EXPORT _const_8c0362ac - .EXPORT _const_8c0362b8 - .EXPORT _const_8c0362c4 - .EXPORT _const_8c0362f8 - .EXPORT _const_8c036334 - .EXPORT _const_8c03636c - .EXPORT _const_8c036398 - .EXPORT _const_8c0363dc - .EXPORT _const_8c036430 - .EXPORT _const_8c036470 - .EXPORT _const_8c0364ac - .EXPORT _const_8c0364e8 - .EXPORT _const_8c036520 - .EXPORT _const_8c03654c - .EXPORT _const_8c036574 - .EXPORT _const_8c0365b4 - .EXPORT _const_8c0365ec - .EXPORT _const_8c036624 - .EXPORT _const_8c03665c - .EXPORT _const_8c036698 - .EXPORT _const_8c0366c0 - .EXPORT _const_8c036704 - .EXPORT _const_8c036748 - .EXPORT _const_8c036778 - .EXPORT _const_8c0367bc - .EXPORT _const_8c0367dc - .EXPORT _const_8c036828 - .EXPORT _const_8c036848 - .EXPORT _const_8c036884 - .EXPORT _const_8c0368c8 - .EXPORT _const_8c036908 - .EXPORT _const_8c03693c - .EXPORT _const_8c036964 - .EXPORT _const_8c036984 - .EXPORT _const_8c0369a8 - .EXPORT _const_8c0369e8 - .EXPORT _const_8c036a08 - .EXPORT _const_8c036a40 - .EXPORT _const_8c036a5c - .EXPORT _const_8c036a94 - .EXPORT _const_8c036ad4 - .EXPORT _const_8c036b0c - .EXPORT _const_8c036b58 - .EXPORT _const_8c036b98 - .EXPORT _const_8c036bd8 - .EXPORT _const_8c036c20 - .EXPORT _const_8c036c5c - .EXPORT _const_8c036c7c - .EXPORT _const_8c036ca8 - .EXPORT _const_8c036ce8 - .EXPORT _const_8c036d34 - .EXPORT _const_8c036d74 - .EXPORT _const_8c036db0 - .EXPORT _const_8c036dd0 - .EXPORT _const_8c036df0 - .EXPORT _const_8c036e30 - .EXPORT _const_8c036e80 - .EXPORT _const_8c036eb0 - .EXPORT _const_8c036ee4 - .EXPORT _const_8c036f24 - .EXPORT _const_8c036f60 - .EXPORT _const_8c036f84 - .EXPORT _const_8c036fd0 - .EXPORT _const_8c037004 - .EXPORT _const_8c037054 - .EXPORT _const_8c037078 - .EXPORT _const_8c0370b8 - .EXPORT _const_8c0370f4 - .EXPORT _const_8c037120 - .EXPORT _const_8c037144 - .EXPORT _const_8c037188 - .EXPORT _const_8c0371b0 - .EXPORT _const_8c0371f0 - .EXPORT _const_8c037228 - .EXPORT _const_8c037264 - .EXPORT _const_8c0372a8 - .EXPORT _const_8c0372f4 - .EXPORT _const_8c037334 - .EXPORT _const_8c037374 - .EXPORT _const_8c0373b8 - .EXPORT _const_8c037410 - .EXPORT _const_8c037434 - .EXPORT _const_8c037474 - .EXPORT _const_8c0374b8 - .EXPORT _const_8c0374e0 - .EXPORT _const_8c037528 - .EXPORT _const_8c037568 - .EXPORT _const_8c0375b4 - .EXPORT _const_8c0375f0 - .EXPORT _const_8c037630 - .EXPORT _const_8c037668 - .EXPORT _const_8c037680 - .EXPORT _const_8c0376b4 - .EXPORT _const_8c037700 - .EXPORT _const_8c037748 - .EXPORT _const_8c037794 - .EXPORT _const_8c0377e0 - .EXPORT _const_8c03782c - .EXPORT _const_8c037874 - .EXPORT _const_8c0378ac - .EXPORT _const_8c0378e8 - .EXPORT _const_8c037924 - .EXPORT _const_8c03794c - .EXPORT _const_8c037970 - .EXPORT _const_8c0379ac - .EXPORT _const_8c0379c8 - .EXPORT _const_8c037a08 - .EXPORT _const_8c037a34 - .EXPORT _const_8c037a70 - .EXPORT _const_8c037aa0 - .EXPORT _const_8c037aec - .EXPORT _const_8c037b14 - .EXPORT _const_8c037b60 - .EXPORT _const_8c037bb0 - .EXPORT _const_8c037bfc - .EXPORT _const_8c037c30 - .EXPORT _const_8c037c6c - .EXPORT _const_8c037c94 - .EXPORT _const_8c037cd4 - .EXPORT _const_8c037cfc - .EXPORT _const_8c037d40 - .EXPORT _const_8c037d78 - .EXPORT _const_8c037dcc - .EXPORT _const_8c037dec - .EXPORT _const_8c037e1c - .EXPORT _const_8c037e38 - .EXPORT _const_8c037e48 - .EXPORT _const_8c037e54 - .EXPORT _const_8c037e60 - .EXPORT _const_8c037e78 - .EXPORT _const_8c037ea8 - .EXPORT _const_8c037ec8 - .EXPORT _const_8c037ecc - .EXPORT _const_8c037ef8 - .EXPORT _const_8c037f0c +; 8c0332a4 .EXPORT _const_8c037f60 .EXPORT _const_8c037f70 .EXPORT _const_8c037f80 @@ -928,1267 +738,6 @@ .EXPORT _const_8c03bd58 .EXPORT _const_8c03bd5c .SECTION C, DATA, ALIGN=4 -_const_8c035f24: ; from defines - .DATA.B H'00, H'00, H'5E, H'00, H'6C, H'00, H'AA, H'00, H'FD, H'00, H'53, H'01, H'83, H'01, H'C5, H'01 - .DATA.B H'23, H'02, H'81, H'02, H'DF, H'02, H'3D, H'03, H'9B, H'03, H'F9, H'03, H'57, H'04, H'B5, H'04 - .DATA.B H'13, H'05, H'71, H'05, H'CF, H'05, H'2D, H'06, H'8B, H'06, H'E9, H'06, H'47, H'07, H'A5, H'07 - .DATA.B H'03, H'08, H'61, H'08, H'BF, H'08, H'1D, H'09, H'7B, H'09, H'D9, H'09, H'37, H'0A, H'95, H'0A - .DATA.B H'F3, H'0A, H'51, H'0B, H'AF, H'0B, H'0D, H'0C, H'6B, H'0C, H'C9, H'0C, H'27, H'0D, H'00, H'00 -_const_8c035f74: ; from defines - ;.SDATA "\SYSTEM" - ;.DATA.B H'00 - .DATA.B H'5C, H'53, H'59, H'53, H'54, H'45, H'4D, H'00 -_const_8c035f7c: ; from ghidra - ;.SDATA "demo2.bin" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'64, H'65, H'6D, H'6F, H'32, H'2E, H'62, H'69, H'6E, H'00, H'00, H'00 -_const_8c035f88: ; from ghidra - ;.SDATA "demo6.bin" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'64, H'65, H'6D, H'6F, H'36, H'2E, H'62, H'69, H'6E, H'00, H'00, H'00 -_const_8c035f94: ; from ghidra - ;.SDATA "demo1.bin" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'64, H'65, H'6D, H'6F, H'31, H'2E, H'62, H'69, H'6E, H'00, H'00, H'00 -_const_8c035fa0: ; from ghidra - ;.SDATA "demo0.bin" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'64, H'65, H'6D, H'6F, H'30, H'2E, H'62, H'69, H'6E, H'00, H'00, H'00 -_const_8c035fac: ; from ghidra - ;.SDATA "demo5.bin" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'64, H'65, H'6D, H'6F, H'35, H'2E, H'62, H'69, H'6E, H'00, H'00, H'00 -_const_8c035fb8: ; from ghidra - ;.SDATA "common_parts.dat" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'63, H'6F, H'6D, H'6D, H'6F, H'6E, H'5F, H'70, H'61, H'72, H'74, H'73, H'2E, H'64, H'61, H'74 - .DATA.B H'00, H'00, H'00, H'00 -_const_8c035fcc: ; from ghidra - ;.SDATA "common.dat" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'63, H'6F, H'6D, H'6D, H'6F, H'6E, H'2E, H'64, H'61, H'74, H'00, H'00 -_const_8c035fd8: ; from ghidra - ;.SDATA "common.pvm" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'63, H'6F, H'6D, H'6D, H'6F, H'6E, H'2E, H'70, H'76, H'6D, H'00, H'00 -_const_8c035fe4: ; from ghidra - ;.SDATA "title_parts.dat" - ;.DATA.B H'00 - .DATA.B H'74, H'69, H'74, H'6C, H'65, H'5F, H'70, H'61, H'72, H'74, H'73, H'2E, H'64, H'61, H'74, H'00 -_const_8c035ff4: ; from ghidra - ;.SDATA "title.dat" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'74, H'69, H'74, H'6C, H'65, H'2E, H'64, H'61, H'74, H'00, H'00, H'00 -_const_8c036000: ; from ghidra - ;.SDATA "title.pvm" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'74, H'69, H'74, H'6C, H'65, H'2E, H'70, H'76, H'6D, H'00, H'00, H'00 -_const_8c03600c: ; from ghidra - ;.SDATA "menu_parts.dat" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'6D, H'65, H'6E, H'75, H'5F, H'70, H'61, H'72, H'74, H'73, H'2E, H'64, H'61, H'74, H'00, H'00 -_const_8c03601c: ; from ghidra - ;.SDATA "menu.dat" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'6D, H'65, H'6E, H'75, H'2E, H'64, H'61, H'74, H'00, H'00, H'00, H'00 -_const_8c036028: ; from ghidra - ;.SDATA "menu.pvm" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'6D, H'65, H'6E, H'75, H'2E, H'70, H'76, H'6D, H'00, H'00, H'00, H'00 -_const_8c036034: ; from ghidra - ;.SDATA "practice01_parts.dat" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'70, H'72, H'61, H'63, H'74, H'69, H'63, H'65, H'30, H'31, H'5F, H'70, H'61, H'72, H'74, H'73 - .DATA.B H'2E, H'64, H'61, H'74, H'00, H'00, H'00, H'00 -_const_8c03604c: ; from ghidra - ;.SDATA "practice01.dat" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'70, H'72, H'61, H'63, H'74, H'69, H'63, H'65, H'30, H'31, H'2E, H'64, H'61, H'74, H'00, H'00 -_const_8c03605c: ; from ghidra - ;.SDATA "practice01.pvm" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'70, H'72, H'61, H'63, H'74, H'69, H'63, H'65, H'30, H'31, H'2E, H'70, H'76, H'6D, H'00, H'00 -_const_8c03606c: ; from ghidra - ;.SDATA "practice02_parts.dat" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'70, H'72, H'61, H'63, H'74, H'69, H'63, H'65, H'30, H'32, H'5F, H'70, H'61, H'72, H'74, H'73 - .DATA.B H'2E, H'64, H'61, H'74, H'00, H'00, H'00, H'00 -_const_8c036084: ; from ghidra - ;.SDATA "practice02.dat" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'70, H'72, H'61, H'63, H'74, H'69, H'63, H'65, H'30, H'32, H'2E, H'64, H'61, H'74, H'00, H'00 -_const_8c036094: ; from ghidra - ;.SDATA "practice02.pvm" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'70, H'72, H'61, H'63, H'74, H'69, H'63, H'65, H'30, H'32, H'2E, H'70, H'76, H'6D, H'00, H'00 -_const_8c0360a4: ; from defines - ;.SDATA "NO SAVING" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'4E, H'4F, H'20, H'53, H'41, H'56, H'49, H'4E, H'47, H'00, H'00, H'00 -_const_8c0360b0: ; from defines - .DATA.B H'2D, H'00, H'00, H'00 -_const_8c0360b4: ; from defines - ;.SDATA "CHECKING..." - ;.DATA.B H'00 - .DATA.B H'43, H'48, H'45, H'43, H'4B, H'49, H'4E, H'47, H'2E, H'2E, H'2E, H'00 -_const_8c0360c0: ; from defines - ;.SDATA "%04d/%04d BLOCKS" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'25, H'30, H'34, H'64, H'2F, H'25, H'30, H'34, H'64, H'20, H'42, H'4C, H'4F, H'43, H'4B, H'53 - .DATA.B H'00, H'00, H'00, H'00 -_const_8c0360d4: ; from defines - ;.SDATA "NO SAVING OK?" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'4E, H'4F, H'20, H'53, H'41, H'56, H'49, H'4E, H'47, H'20, H'4F, H'4B, H'3F, H'00, H'00, H'00 -_const_8c0360e4: ; from defines - ;.SDATA "MEMORY_CARD IS UNFORMAT" - ;.DATA.B H'00 - .DATA.B H'4D, H'45, H'4D, H'4F, H'52, H'59, H'5F, H'43, H'41, H'52, H'44, H'20, H'49, H'53, H'20, H'55 - .DATA.B H'4E, H'46, H'4F, H'52, H'4D, H'41, H'54, H'00 -_const_8c0360fc: ; from defines - ;.SDATA "MEMORY_CARD IS NOT ENOUGH FREE AREA" - ;.DATA.B H'00 - .DATA.B H'4D, H'45, H'4D, H'4F, H'52, H'59, H'5F, H'43, H'41, H'52, H'44, H'20, H'49, H'53, H'20, H'4E - .DATA.B H'4F, H'54, H'20, H'45, H'4E, H'4F, H'55, H'47, H'48, H'20, H'46, H'52, H'45, H'45, H'20, H'41 - .DATA.B H'52, H'45, H'41, H'00 -_const_8c036120: ; from defines - ;.SDATA "NO_MEMORY_CARD" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'4E, H'4F, H'5F, H'4D, H'45, H'4D, H'4F, H'52, H'59, H'5F, H'43, H'41, H'52, H'44, H'00, H'00 -_const_8c036130: ; from defines - ;.SDATA "NOW SAVING...(%03d%%)" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'4E, H'4F, H'57, H'20, H'53, H'41, H'56, H'49, H'4E, H'47, H'2E, H'2E, H'2E, H'28, H'25, H'30 - .DATA.B H'33, H'64, H'25, H'25, H'29, H'00, H'00, H'00 -_const_8c036148: ; from defines - ;.SDATA "NOW LOADING...(%03d%%)" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'4E, H'4F, H'57, H'20, H'4C, H'4F, H'41, H'44, H'49, H'4E, H'47, H'2E, H'2E, H'2E, H'28, H'25 - .DATA.B H'30, H'33, H'64, H'25, H'25, H'29, H'00, H'00 -_const_8c036160: ; from defines - ;.SDATA "BUS_REPLAY" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'42, H'55, H'53, H'5F, H'52, H'45, H'50, H'4C, H'41, H'59, H'00, H'00 -_const_8c03616c: ; from ghidra - .DATA.B H'00, H'00, H'00, H'00 -_const_8c036170: ; from ghidra - ;.SDATA "SHINJYUKU_EVENT" - ;.DATA.B H'00 - .DATA.B H'53, H'48, H'49, H'4E, H'4A, H'59, H'55, H'4B, H'55, H'5F, H'45, H'56, H'45, H'4E, H'54, H'00 -_const_8c036180: ; from ghidra - ;.SDATA "WANGAN_EVENT" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'57, H'41, H'4E, H'47, H'41, H'4E, H'5F, H'45, H'56, H'45, H'4E, H'54, H'00, H'00, H'00, H'00 -_const_8c036190: ; from ghidra - ;.SDATA "OUME_EVENT" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'4F, H'55, H'4D, H'45, H'5F, H'45, H'56, H'45, H'4E, H'54, H'00, H'00 -_const_8c03619c: ; from ghidra - ;.SDATA "WANGAN_DAY" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'57, H'41, H'4E, H'47, H'41, H'4E, H'5F, H'44, H'41, H'59, H'00, H'00 -_const_8c0361a8: ; from ghidra - ;.SDATA "WANGAN_DAY_AUTO" - ;.DATA.B H'00 - .DATA.B H'57, H'41, H'4E, H'47, H'41, H'4E, H'5F, H'44, H'41, H'59, H'5F, H'41, H'55, H'54, H'4F, H'00 -_const_8c0361b8: ; from ghidra - ;.SDATA "SHINJYUKU_DAY" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'53, H'48, H'49, H'4E, H'4A, H'59, H'55, H'4B, H'55, H'5F, H'44, H'41, H'59, H'00, H'00, H'00 -_const_8c0361c8: ; from ghidra - ;.SDATA "SHINJYUKU_EVENING" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'53, H'48, H'49, H'4E, H'4A, H'59, H'55, H'4B, H'55, H'5F, H'45, H'56, H'45, H'4E, H'49, H'4E - .DATA.B H'47, H'00, H'00, H'00 -_const_8c0361dc: ; from ghidra - ;.SDATA "SHINJYUKU_NIGHT" - ;.DATA.B H'00 - .DATA.B H'53, H'48, H'49, H'4E, H'4A, H'59, H'55, H'4B, H'55, H'5F, H'4E, H'49, H'47, H'48, H'54, H'00 -_const_8c0361ec: ; from ghidra - ;.SDATA "SHINJYUKU_DAY_AUTO" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'53, H'48, H'49, H'4E, H'4A, H'59, H'55, H'4B, H'55, H'5F, H'44, H'41, H'59, H'5F, H'41, H'55 - .DATA.B H'54, H'4F, H'00, H'00 -_const_8c036200: ; from ghidra - ;.SDATA "SHINJYUKU_NIGHT_AUTO" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'53, H'48, H'49, H'4E, H'4A, H'59, H'55, H'4B, H'55, H'5F, H'4E, H'49, H'47, H'48, H'54, H'5F - .DATA.B H'41, H'55, H'54, H'4F, H'00, H'00, H'00, H'00 -_const_8c036218: ; from ghidra - ;.SDATA "OUME_DAY" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'4F, H'55, H'4D, H'45, H'5F, H'44, H'41, H'59, H'00, H'00, H'00, H'00 -_const_8c036224: ; from ghidra - ;.SDATA "OUME_DAY_AUTO" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'4F, H'55, H'4D, H'45, H'5F, H'44, H'41, H'59, H'5F, H'41, H'55, H'54, H'4F, H'00, H'00, H'00 -_const_8c036234: ; from ghidra - ;.SDATA "WANGAN_NIGHT" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'57, H'41, H'4E, H'47, H'41, H'4E, H'5F, H'4E, H'49, H'47, H'48, H'54, H'00, H'00, H'00, H'00 -_const_8c036244: ; from ghidra - ;.SDATA "OUME_NIGHT" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'4F, H'55, H'4D, H'45, H'5F, H'4E, H'49, H'47, H'48, H'54, H'00, H'00 -_const_8c036250: ; from ghidra - ;.SDATA "WANGAN_NIGHT_AUTO" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'57, H'41, H'4E, H'47, H'41, H'4E, H'5F, H'4E, H'49, H'47, H'48, H'54, H'5F, H'41, H'55, H'54 - .DATA.B H'4F, H'00, H'00, H'00 -_const_8c036264: ; from ghidra - ;.SDATA "OUME_NIGHT_AUTO" - ;.DATA.B H'00 - .DATA.B H'4F, H'55, H'4D, H'45, H'5F, H'4E, H'49, H'47, H'48, H'54, H'5F, H'41, H'55, H'54, H'4F, H'00 -_const_8c036274: ; from ghidra - ;.SDATA "REPLAY" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'52, H'45, H'50, H'4C, H'41, H'59, H'00, H'00 -_const_8c03627c: ; from ghidra - ;.SDATA "VISUAL_MEMORY" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'56, H'49, H'53, H'55, H'41, H'4C, H'5F, H'4D, H'45, H'4D, H'4F, H'52, H'59, H'00, H'00, H'00 -_const_8c03628c: ; from defines - .DATA.B H'00, H'00, H'00, H'00 -_const_8c036290: ; from defines - ;.SDATA "\SYSTEM" - ;.DATA.B H'00 - .DATA.B H'5C, H'53, H'59, H'53, H'54, H'45, H'4D, H'00 -_const_8c036298: ; from defines - ;.SDATA "common_parts.dat" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'63, H'6F, H'6D, H'6D, H'6F, H'6E, H'5F, H'70, H'61, H'72, H'74, H'73, H'2E, H'64, H'61, H'74 - .DATA.B H'00, H'00, H'00, H'00 -_const_8c0362ac: ; from defines - ;.SDATA "common.dat" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'63, H'6F, H'6D, H'6D, H'6F, H'6E, H'2E, H'64, H'61, H'74, H'00, H'00 -_const_8c0362b8: ; from defines - ;.SDATA "common.pvm" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'63, H'6F, H'6D, H'6D, H'6F, H'6E, H'2E, H'70, H'76, H'6D, H'00, H'00 -_const_8c0362c4: ; from ghidra - ;.SDATA "やぁ、よく来たね私がここの所長だ、以後よろしく" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'E2, H'82, H'9F, H'81, H'41, H'82, H'E6, H'82, H'AD, H'97, H'88, H'82, H'BD, H'82, H'CB - .DATA.B H'3C, H'45, H'3E, H'8E, H'84, H'82, H'AA, H'82, H'B1, H'82, H'B1, H'82, H'CC, H'8F, H'8A, H'92 - .DATA.B H'B7, H'82, H'BE, H'81, H'41, H'88, H'C8, H'8C, H'E3, H'82, H'E6, H'82, H'EB, H'82, H'B5, H'82 - .DATA.B H'AD, H'00, H'00, H'00 -_const_8c0362f8: ; aggressive search - ;.SDATA "今日から一ヶ月間、キミにはここで実地研修を受けてもらう" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8D, H'A1, H'93, H'FA, H'82, H'A9, H'82, H'E7, H'88, H'EA, H'83, H'96, H'8C, H'8E, H'8A, H'D4 - .DATA.B H'81, H'41, H'83, H'4C, H'83, H'7E, H'82, H'C9, H'82, H'CD, H'3C, H'45, H'3E, H'82, H'B1, H'82 - .DATA.B H'B1, H'82, H'C5, H'8E, H'C0, H'92, H'6E, H'8C, H'A4, H'8F, H'43, H'82, H'F0, H'8E, H'F3, H'82 - .DATA.B H'AF, H'82, H'C4, H'82, H'E0, H'82, H'E7, H'82, H'A4, H'00, H'00, H'00 -_const_8c036334: ; aggressive search - ;.SDATA "この研修に合格するとキミは晴れて都営バスの運転手だ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'B1, H'82, H'CC, H'8C, H'A4, H'8F, H'43, H'82, H'C9, H'8D, H'87, H'8A, H'69, H'82, H'B7 - .DATA.B H'82, H'E9, H'82, H'C6, H'3C, H'45, H'3E, H'83, H'4C, H'83, H'7E, H'82, H'CD, H'90, H'B0, H'82 - .DATA.B H'EA, H'82, H'C4, H'93, H'73, H'89, H'63, H'83, H'6F, H'83, H'58, H'82, H'CC, H'89, H'5E, H'93 - .DATA.B H'5D, H'8E, H'E8, H'82, H'BE, H'00, H'00, H'00 -_const_8c03636c: ; aggressive search - ;.SDATA "最後の研修だが気を抜かずに頑張ってくれよ" - ;.DATA.B H'00 - .DATA.B H'8D, H'C5, H'8C, H'E3, H'82, H'CC, H'8C, H'A4, H'8F, H'43, H'82, H'BE, H'82, H'AA, H'3C, H'45 - .DATA.B H'3E, H'8B, H'43, H'82, H'F0, H'94, H'B2, H'82, H'A9, H'82, H'B8, H'82, H'C9, H'8A, H'E6, H'92 - .DATA.B H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00 -_const_8c036398: ; aggressive search - ;.SDATA "まずは比較的簡単な〈梅76〉と〈虹01〉の2コースで研修しよう" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'DC, H'82, H'B8, H'82, H'CD, H'94, H'E4, H'8A, H'72, H'93, H'49, H'8A, H'C8, H'92, H'50 - .DATA.B H'82, H'C8, H'81, H'71, H'94, H'7E, H'82, H'56, H'82, H'55, H'81, H'72, H'82, H'C6, H'3C, H'45 - .DATA.B H'3E, H'81, H'71, H'93, H'F8, H'82, H'4F, H'82, H'50, H'81, H'72, H'82, H'CC, H'82, H'51, H'83 - .DATA.B H'52, H'81, H'5B, H'83, H'58, H'82, H'C5, H'8C, H'A4, H'8F, H'43, H'82, H'B5, H'82, H'E6, H'82 - .DATA.B H'A4, H'00, H'00, H'00 -_const_8c0363dc: ; aggressive search - ;.SDATA "視界も広く、交通量も多くない時間帯を選んでいるので、研修にはちょうどいいだろう" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8E, H'8B, H'8A, H'45, H'82, H'E0, H'8D, H'4C, H'82, H'AD, H'81, H'41, H'8C, H'F0, H'92, H'CA - .DATA.B H'97, H'CA, H'82, H'E0, H'91, H'BD, H'82, H'AD, H'82, H'C8, H'82, H'A2, H'8E, H'9E, H'8A, H'D4 - .DATA.B H'91, H'D1, H'82, H'F0, H'3C, H'45, H'3E, H'91, H'49, H'82, H'F1, H'82, H'C5, H'82, H'A2, H'82 - .DATA.B H'E9, H'82, H'CC, H'82, H'C5, H'81, H'41, H'8C, H'A4, H'8F, H'43, H'82, H'C9, H'82, H'CD, H'82 - .DATA.B H'BF, H'82, H'E5, H'82, H'A4, H'82, H'C7, H'82, H'A2, H'82, H'A2, H'82, H'BE, H'82, H'EB, H'82 - .DATA.B H'A4, H'00, H'00, H'00 -_const_8c036430: ; aggressive search - ;.SDATA "慣れてきたら、少しづつ難しいコースも走れるようになるからな" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8A, H'B5, H'82, H'EA, H'82, H'C4, H'82, H'AB, H'82, H'BD, H'82, H'E7, H'81, H'41, H'8F, H'AD - .DATA.B H'82, H'B5, H'82, H'C3, H'82, H'C2, H'93, H'EF, H'82, H'B5, H'82, H'A2, H'83, H'52, H'81, H'5B - .DATA.B H'83, H'58, H'82, H'E0, H'3C, H'45, H'3E, H'91, H'96, H'82, H'EA, H'82, H'E9, H'82, H'E6, H'82 - .DATA.B H'A4, H'82, H'C9, H'82, H'C8, H'82, H'E9, H'82, H'A9, H'82, H'E7, H'82, H'C8, H'00, H'00, H'00 -_const_8c036470: ; aggressive search - ;.SDATA "いきなりコースを走るのが不安なら練習することもできるぞ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'A2, H'82, H'AB, H'82, H'C8, H'82, H'E8, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'F0 - .DATA.B H'91, H'96, H'82, H'E9, H'82, H'CC, H'82, H'AA, H'95, H'73, H'88, H'C0, H'82, H'C8, H'82, H'E7 - .DATA.B H'3C, H'45, H'3E, H'97, H'FB, H'8F, H'4B, H'82, H'B7, H'82, H'E9, H'82, H'B1, H'82, H'C6, H'82 - .DATA.B H'E0, H'82, H'C5, H'82, H'AB, H'82, H'E9, H'82, H'BC, H'00, H'00, H'00 -_const_8c0364ac: ; aggressive search - ;.SDATA "練習したい場合は画面左上のPRACTICEを選ぶといい" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'97, H'FB, H'8F, H'4B, H'82, H'B5, H'82, H'BD, H'82, H'A2, H'8F, H'EA, H'8D, H'87, H'82, H'CD - .DATA.B H'89, H'E6, H'96, H'CA, H'8D, H'B6, H'8F, H'E3, H'82, H'CC, H'3C, H'45, H'3E, H'82, H'6F, H'82 - .DATA.B H'71, H'82, H'60, H'82, H'62, H'82, H'73, H'82, H'68, H'82, H'62, H'82, H'64, H'82, H'F0, H'91 - .DATA.B H'49, H'82, H'D4, H'82, H'C6, H'82, H'A2, H'82, H'A2, H'00, H'00, H'00 -_const_8c0364e8: ; aggressive search - ;.SDATA "キミの成績には、正直、びっくりしたよ実に素晴らしい!" - ;.DATA.B H'00 - .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'CC, H'90, H'AC, H'90, H'D1, H'82, H'C9, H'82, H'CD, H'81, H'41 - .DATA.B H'90, H'B3, H'92, H'BC, H'81, H'41, H'82, H'D1, H'82, H'C1, H'82, H'AD, H'82, H'E8, H'82, H'B5 - .DATA.B H'82, H'BD, H'82, H'E6, H'3C, H'45, H'3E, H'8E, H'C0, H'82, H'C9, H'91, H'66, H'90, H'B0, H'82 - .DATA.B H'E7, H'82, H'B5, H'82, H'A2, H'81, H'49, H'00 -_const_8c036520: ; aggressive search - ;.SDATA "どのコースをとってもまさにパーフェクト!" - ;.DATA.B H'00 - .DATA.B H'82, H'C7, H'82, H'CC, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'F0, H'82, H'C6, H'82, H'C1 - .DATA.B H'82, H'C4, H'82, H'E0, H'3C, H'45, H'3E, H'82, H'DC, H'82, H'B3, H'82, H'C9, H'83, H'70, H'81 - .DATA.B H'5B, H'83, H'74, H'83, H'46, H'83, H'4E, H'83, H'67, H'81, H'49, H'00 -_const_8c03654c: ; aggressive search - ;.SDATA "おめでとう実地研修は満点で合格だ!" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'A8, H'82, H'DF, H'82, H'C5, H'82, H'C6, H'82, H'A4, H'3C, H'45, H'3E, H'8E, H'C0, H'92 - .DATA.B H'6E, H'8C, H'A4, H'8F, H'43, H'82, H'CD, H'96, H'9E, H'93, H'5F, H'82, H'C5, H'8D, H'87, H'8A - .DATA.B H'69, H'82, H'BE, H'81, H'49, H'00, H'00, H'00 -_const_8c036574: ; aggressive search - ;.SDATA "キミならどこに配属されても大丈夫研修を担当した私も鼻が高いよ" - ;.DATA.B H'00 - .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'C8, H'82, H'E7, H'82, H'C7, H'82, H'B1, H'82, H'C9, H'94, H'7A - .DATA.B H'91, H'AE, H'82, H'B3, H'82, H'EA, H'82, H'C4, H'82, H'E0, H'91, H'E5, H'8F, H'E4, H'95, H'76 - .DATA.B H'3C, H'45, H'3E, H'8C, H'A4, H'8F, H'43, H'82, H'F0, H'92, H'53, H'93, H'96, H'82, H'B5, H'82 - .DATA.B H'BD, H'8E, H'84, H'82, H'E0, H'95, H'40, H'82, H'AA, H'8D, H'82, H'82, H'A2, H'82, H'E6, H'00 -_const_8c0365b4: ; aggressive search - ;.SDATA "都営バスの未来を担う一員としてキミには期待しているぞ" - ;.DATA.B H'00 - .DATA.B H'93, H'73, H'89, H'63, H'83, H'6F, H'83, H'58, H'82, H'CC, H'96, H'A2, H'97, H'88, H'82, H'F0 - .DATA.B H'92, H'53, H'82, H'A4, H'88, H'EA, H'88, H'F5, H'82, H'C6, H'82, H'B5, H'82, H'C4, H'3C, H'45 - .DATA.B H'3E, H'83, H'4C, H'83, H'7E, H'82, H'C9, H'82, H'CD, H'8A, H'FA, H'91, H'D2, H'82, H'B5, H'82 - .DATA.B H'C4, H'82, H'A2, H'82, H'E9, H'82, H'BC, H'00 -_const_8c0365ec: ; aggressive search - ;.SDATA "昨日で無事、実地研修が終了した本当によく頑張ったな" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8D, H'F0, H'93, H'FA, H'82, H'C5, H'96, H'B3, H'8E, H'96, H'81, H'41, H'8E, H'C0, H'92, H'6E - .DATA.B H'8C, H'A4, H'8F, H'43, H'82, H'AA, H'8F, H'49, H'97, H'B9, H'82, H'B5, H'82, H'BD, H'3C, H'45 - .DATA.B H'3E, H'96, H'7B, H'93, H'96, H'82, H'C9, H'82, H'E6, H'82, H'AD, H'8A, H'E6, H'92, H'A3, H'82 - .DATA.B H'C1, H'82, H'BD, H'82, H'C8, H'00, H'00, H'00 -_const_8c036624: ; aggressive search - ;.SDATA "キミの成績を見せてもらったが申し分のない成績だったよ" - ;.DATA.B H'00 - .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'CC, H'90, H'AC, H'90, H'D1, H'82, H'F0, H'8C, H'A9, H'82, H'B9 - .DATA.B H'82, H'C4, H'82, H'E0, H'82, H'E7, H'82, H'C1, H'82, H'BD, H'82, H'AA, H'3C, H'45, H'3E, H'90 - .DATA.B H'5C, H'82, H'B5, H'95, H'AA, H'82, H'CC, H'82, H'C8, H'82, H'A2, H'90, H'AC, H'90, H'D1, H'82 - .DATA.B H'BE, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'00 -_const_8c03665c: ; aggressive search - ;.SDATA "全コースとも高得点をあげているこれは並大抵の事ではない" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'91, H'53, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'C6, H'82, H'E0, H'8D, H'82, H'93, H'BE - .DATA.B H'93, H'5F, H'82, H'F0, H'82, H'A0, H'82, H'B0, H'82, H'C4, H'82, H'A2, H'82, H'E9, H'3C, H'45 - .DATA.B H'3E, H'82, H'B1, H'82, H'EA, H'82, H'CD, H'95, H'C0, H'91, H'E5, H'92, H'EF, H'82, H'CC, H'8E - .DATA.B H'96, H'82, H'C5, H'82, H'CD, H'82, H'C8, H'82, H'A2, H'00, H'00, H'00 -_const_8c036698: ; aggressive search - ;.SDATA "おめでとう実地研修はもちろん合格だ!" - ;.DATA.B H'00 - .DATA.B H'82, H'A8, H'82, H'DF, H'82, H'C5, H'82, H'C6, H'82, H'A4, H'3C, H'45, H'3E, H'8E, H'C0, H'92 - .DATA.B H'6E, H'8C, H'A4, H'8F, H'43, H'82, H'CD, H'82, H'E0, H'82, H'BF, H'82, H'EB, H'82, H'F1, H'8D - .DATA.B H'87, H'8A, H'69, H'82, H'BE, H'81, H'49, H'00 -_const_8c0366c0: ; aggressive search - ;.SDATA "今日からキミは都営バスの立派な運転手だこれからもよろしく頼むぞ!" - ;.DATA.B H'00 - .DATA.B H'8D, H'A1, H'93, H'FA, H'82, H'A9, H'82, H'E7, H'83, H'4C, H'83, H'7E, H'82, H'CD, H'93, H'73 - .DATA.B H'89, H'63, H'83, H'6F, H'83, H'58, H'82, H'CC, H'97, H'A7, H'94, H'68, H'82, H'C8, H'89, H'5E - .DATA.B H'93, H'5D, H'8E, H'E8, H'82, H'BE, H'3C, H'45, H'3E, H'82, H'B1, H'82, H'EA, H'82, H'A9, H'82 - .DATA.B H'E7, H'82, H'E0, H'82, H'E6, H'82, H'EB, H'82, H'B5, H'82, H'AD, H'97, H'8A, H'82, H'DE, H'82 - .DATA.B H'BC, H'81, H'49, H'00 -_const_8c036704: ; aggressive search - ;.SDATA "キミの成績を見せてもらったがまぁ、十分に合格点をあげられるだろう" - ;.DATA.B H'00 - .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'CC, H'90, H'AC, H'90, H'D1, H'82, H'F0, H'8C, H'A9, H'82, H'B9 - .DATA.B H'82, H'C4, H'82, H'E0, H'82, H'E7, H'82, H'C1, H'82, H'BD, H'82, H'AA, H'3C, H'45, H'3E, H'82 - .DATA.B H'DC, H'82, H'9F, H'81, H'41, H'8F, H'5C, H'95, H'AA, H'82, H'C9, H'8D, H'87, H'8A, H'69, H'93 - .DATA.B H'5F, H'82, H'F0, H'82, H'A0, H'82, H'B0, H'82, H'E7, H'82, H'EA, H'82, H'E9, H'82, H'BE, H'82 - .DATA.B H'EB, H'82, H'A4, H'00 -_const_8c036748: ; aggressive search - ;.SDATA "各コース、致命的なミスはなく成績も悪くない" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8A, H'65, H'83, H'52, H'81, H'5B, H'83, H'58, H'81, H'41, H'92, H'76, H'96, H'BD, H'93, H'49 - .DATA.B H'82, H'C8, H'83, H'7E, H'83, H'58, H'82, H'CD, H'82, H'C8, H'82, H'AD, H'3C, H'45, H'3E, H'90 - .DATA.B H'AC, H'90, H'D1, H'82, H'E0, H'88, H'AB, H'82, H'AD, H'82, H'C8, H'82, H'A2, H'00, H'00, H'00 -_const_8c036778: ; aggressive search - ;.SDATA "これからも注意を怠ることなくこの調子でますます努力・精進してくれ" - ;.DATA.B H'00 - .DATA.B H'82, H'B1, H'82, H'EA, H'82, H'A9, H'82, H'E7, H'82, H'E0, H'92, H'8D, H'88, H'D3, H'82, H'F0 - .DATA.B H'91, H'D3, H'82, H'E9, H'82, H'B1, H'82, H'C6, H'82, H'C8, H'82, H'AD, H'3C, H'45, H'3E, H'82 - .DATA.B H'B1, H'82, H'CC, H'92, H'B2, H'8E, H'71, H'82, H'C5, H'82, H'DC, H'82, H'B7, H'82, H'DC, H'82 - .DATA.B H'B7, H'93, H'77, H'97, H'CD, H'81, H'45, H'90, H'B8, H'90, H'69, H'82, H'B5, H'82, H'C4, H'82 - .DATA.B H'AD, H'82, H'EA, H'00 -_const_8c0367bc: ; aggressive search - ;.SDATA "おめでとう実地研修は合格だ!" - ;.DATA.B H'00 - .DATA.B H'82, H'A8, H'82, H'DF, H'82, H'C5, H'82, H'C6, H'82, H'A4, H'3C, H'45, H'3E, H'8E, H'C0, H'92 - .DATA.B H'6E, H'8C, H'A4, H'8F, H'43, H'82, H'CD, H'8D, H'87, H'8A, H'69, H'82, H'BE, H'81, H'49, H'00 -_const_8c0367dc: ; aggressive search - ;.SDATA "明日からも気を抜くことなく、研修の延長線だと思って、業務に取り組んでくれ" - ;.DATA.B H'00 - .DATA.B H'96, H'BE, H'93, H'FA, H'82, H'A9, H'82, H'E7, H'82, H'E0, H'8B, H'43, H'82, H'F0, H'94, H'B2 - .DATA.B H'82, H'AD, H'82, H'B1, H'82, H'C6, H'82, H'C8, H'82, H'AD, H'81, H'41, H'3C, H'45, H'3E, H'8C - .DATA.B H'A4, H'8F, H'43, H'82, H'CC, H'89, H'84, H'92, H'B7, H'90, H'FC, H'82, H'BE, H'82, H'C6, H'8E - .DATA.B H'76, H'82, H'C1, H'82, H'C4, H'81, H'41, H'8B, H'C6, H'96, H'B1, H'82, H'C9, H'8E, H'E6, H'82 - .DATA.B H'E8, H'91, H'67, H'82, H'F1, H'82, H'C5, H'82, H'AD, H'82, H'EA, H'00 -_const_8c036828: ; aggressive search - ;.SDATA "1ヶ月間本当によく頑張ったな" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'82, H'50, H'83, H'96, H'8C, H'8E, H'8A, H'D4, H'96, H'7B, H'93, H'96, H'82, H'C9, H'82, H'E6 - .DATA.B H'82, H'AD, H'8A, H'E6, H'92, H'A3, H'82, H'C1, H'82, H'BD, H'82, H'C8, H'00, H'00, H'00, H'00 -_const_8c036848: ; aggressive search - ;.SDATA "…と言いたい所なんだが合格点には少し及ばなかったようだ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'81, H'63, H'82, H'C6, H'8C, H'BE, H'82, H'A2, H'82, H'BD, H'82, H'A2, H'8F, H'8A, H'82, H'C8 - .DATA.B H'82, H'F1, H'82, H'BE, H'82, H'AA, H'3C, H'45, H'3E, H'8D, H'87, H'8A, H'69, H'93, H'5F, H'82 - .DATA.B H'C9, H'82, H'CD, H'8F, H'AD, H'82, H'B5, H'8B, H'79, H'82, H'CE, H'82, H'C8, H'82, H'A9, H'82 - .DATA.B H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'00, H'00, H'00 -_const_8c036884: ; aggressive search - ;.SDATA "運転手は、乗客の命を預かっているんだ軽率な行動やミスは許されない" - ;.DATA.B H'00 - .DATA.B H'89, H'5E, H'93, H'5D, H'8E, H'E8, H'82, H'CD, H'81, H'41, H'8F, H'E6, H'8B, H'71, H'82, H'CC - .DATA.B H'96, H'BD, H'82, H'F0, H'97, H'61, H'82, H'A9, H'82, H'C1, H'82, H'C4, H'82, H'A2, H'82, H'E9 - .DATA.B H'82, H'F1, H'82, H'BE, H'3C, H'45, H'3E, H'8C, H'79, H'97, H'A6, H'82, H'C8, H'8D, H'73, H'93 - .DATA.B H'AE, H'82, H'E2, H'83, H'7E, H'83, H'58, H'82, H'CD, H'8B, H'96, H'82, H'B3, H'82, H'EA, H'82 - .DATA.B H'C8, H'82, H'A2, H'00 -_const_8c0368c8: ; aggressive search - ;.SDATA "キミはもう少し研修を続けた方が良さそうだな、頑張ってくれよ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'CD, H'82, H'E0, H'82, H'A4, H'8F, H'AD, H'82, H'B5, H'8C, H'A4 - .DATA.B H'8F, H'43, H'82, H'F0, H'91, H'B1, H'82, H'AF, H'82, H'BD, H'95, H'FB, H'82, H'AA, H'3C, H'45 - .DATA.B H'3E, H'97, H'C7, H'82, H'B3, H'82, H'BB, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'81, H'41, H'8A - .DATA.B H'E6, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00 -_const_8c036908: ; aggressive search - ;.SDATA "ここでは、好きなコースを何度でも走る事ができるぞ" - ;.DATA.B H'00 - .DATA.B H'82, H'B1, H'82, H'B1, H'82, H'C5, H'82, H'CD, H'81, H'41, H'8D, H'44, H'82, H'AB, H'82, H'C8 - .DATA.B H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'F0, H'3C, H'45, H'3E, H'89, H'BD, H'93, H'78, H'82 - .DATA.B H'C5, H'82, H'E0, H'91, H'96, H'82, H'E9, H'8E, H'96, H'82, H'AA, H'82, H'C5, H'82, H'AB, H'82 - .DATA.B H'E9, H'82, H'BC, H'00 -_const_8c03693c: ; aggressive search - ;.SDATA "但しストーリーモードで走ったコース限る" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'92, H'41, H'82, H'B5, H'83, H'58, H'83, H'67, H'81, H'5B, H'83, H'8A, H'81, H'5B, H'83, H'82 - .DATA.B H'81, H'5B, H'83, H'68, H'82, H'C5, H'91, H'96, H'82, H'C1, H'82, H'BD, H'83, H'52, H'81, H'5B - .DATA.B H'83, H'58, H'8C, H'C0, H'82, H'E9, H'00, H'00 -_const_8c036964: ; aggressive search - ;.SDATA "さぁ、今日の研修を選んでくれ" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'82, H'B3, H'82, H'9F, H'81, H'41, H'8D, H'A1, H'93, H'FA, H'82, H'CC, H'8C, H'A4, H'8F, H'43 - .DATA.B H'82, H'F0, H'91, H'49, H'82, H'F1, H'82, H'C5, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00, H'00 -_const_8c036984: ; aggressive search - ;.SDATA "昨日は充実した練習が出来たようだね" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'8D, H'F0, H'93, H'FA, H'82, H'CD, H'8F, H'5B, H'8E, H'C0, H'82, H'B5, H'82, H'BD, H'97, H'FB - .DATA.B H'8F, H'4B, H'82, H'AA, H'8F, H'6F, H'97, H'88, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE - .DATA.B H'82, H'CB, H'00, H'00 -_const_8c0369a8: ; aggressive search - ;.SDATA "昨日はなんとかうまく走れたようだねその調子で頑張ってくれよ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8D, H'F0, H'93, H'FA, H'82, H'CD, H'82, H'C8, H'82, H'F1, H'82, H'C6, H'82, H'A9, H'82, H'A4 - .DATA.B H'82, H'DC, H'82, H'AD, H'91, H'96, H'82, H'EA, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE - .DATA.B H'82, H'CB, H'3C, H'45, H'3E, H'82, H'BB, H'82, H'CC, H'92, H'B2, H'8E, H'71, H'82, H'C5, H'8A - .DATA.B H'E6, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00 -_const_8c0369e8: ; aggressive search - ;.SDATA "昨日は素晴らしい成績だったな" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'8D, H'F0, H'93, H'FA, H'82, H'CD, H'91, H'66, H'90, H'B0, H'82, H'E7, H'82, H'B5, H'82, H'A2 - .DATA.B H'90, H'AC, H'90, H'D1, H'82, H'BE, H'82, H'C1, H'82, H'BD, H'82, H'C8, H'00, H'00, H'00, H'00 -_const_8c036a08: ; aggressive search - ;.SDATA "キミには優秀ドライバーの証しゴールドバッジを与えよう" - ;.DATA.B H'00 - .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'C9, H'82, H'CD, H'97, H'44, H'8F, H'47, H'83, H'68, H'83, H'89 - .DATA.B H'83, H'43, H'83, H'6F, H'81, H'5B, H'82, H'CC, H'8F, H'D8, H'82, H'B5, H'3C, H'45, H'3E, H'83 - .DATA.B H'53, H'81, H'5B, H'83, H'8B, H'83, H'68, H'83, H'6F, H'83, H'62, H'83, H'57, H'82, H'F0, H'97 - .DATA.B H'5E, H'82, H'A6, H'82, H'E6, H'82, H'A4, H'00 -_const_8c036a40: ; aggressive search - ;.SDATA "この調子で頑張ってくれよ" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'82, H'B1, H'82, H'CC, H'92, H'B2, H'8E, H'71, H'82, H'C5, H'8A, H'E6, H'92, H'A3, H'82, H'C1 - .DATA.B H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00, H'00 -_const_8c036a5c: ; aggressive search - ;.SDATA "キミには優秀ドライバーの証しシルバーバッジを与えよう" - ;.DATA.B H'00 - .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'C9, H'82, H'CD, H'97, H'44, H'8F, H'47, H'83, H'68, H'83, H'89 - .DATA.B H'83, H'43, H'83, H'6F, H'81, H'5B, H'82, H'CC, H'8F, H'D8, H'82, H'B5, H'3C, H'45, H'3E, H'83 - .DATA.B H'56, H'83, H'8B, H'83, H'6F, H'81, H'5B, H'83, H'6F, H'83, H'62, H'83, H'57, H'82, H'F0, H'97 - .DATA.B H'5E, H'82, H'A6, H'82, H'E6, H'82, H'A4, H'00 -_const_8c036a94: ; aggressive search - ;.SDATA "もっと高得点が出れば、さらに上のゴールドバッジもあるからな" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'E0, H'82, H'C1, H'82, H'C6, H'8D, H'82, H'93, H'BE, H'93, H'5F, H'82, H'AA, H'8F, H'6F - .DATA.B H'82, H'EA, H'82, H'CE, H'81, H'41, H'82, H'B3, H'82, H'E7, H'82, H'C9, H'8F, H'E3, H'82, H'CC - .DATA.B H'3C, H'45, H'3E, H'83, H'53, H'81, H'5B, H'83, H'8B, H'83, H'68, H'83, H'6F, H'83, H'62, H'83 - .DATA.B H'57, H'82, H'E0, H'82, H'A0, H'82, H'E9, H'82, H'A9, H'82, H'E7, H'82, H'C8, H'00, H'00, H'00 -_const_8c036ad4: ; aggressive search - ;.SDATA "キミには優秀ドライバーの証しブロンズバッジを与えよう" - ;.DATA.B H'00 - .DATA.B H'83, H'4C, H'83, H'7E, H'82, H'C9, H'82, H'CD, H'97, H'44, H'8F, H'47, H'83, H'68, H'83, H'89 - .DATA.B H'83, H'43, H'83, H'6F, H'81, H'5B, H'82, H'CC, H'8F, H'D8, H'82, H'B5, H'3C, H'45, H'3E, H'83 - .DATA.B H'75, H'83, H'8D, H'83, H'93, H'83, H'59, H'83, H'6F, H'83, H'62, H'83, H'57, H'82, H'F0, H'97 - .DATA.B H'5E, H'82, H'A6, H'82, H'E6, H'82, H'A4, H'00 -_const_8c036b0c: ; aggressive search - ;.SDATA "もっと高得点が出れば、さらに上のシルバーバッジやゴールドバッジもあるぞ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'E0, H'82, H'C1, H'82, H'C6, H'8D, H'82, H'93, H'BE, H'93, H'5F, H'82, H'AA, H'8F, H'6F - .DATA.B H'82, H'EA, H'82, H'CE, H'81, H'41, H'82, H'B3, H'82, H'E7, H'82, H'C9, H'8F, H'E3, H'82, H'CC - .DATA.B H'3C, H'45, H'3E, H'83, H'56, H'83, H'8B, H'83, H'6F, H'81, H'5B, H'83, H'6F, H'83, H'62, H'83 - .DATA.B H'57, H'82, H'E2, H'83, H'53, H'81, H'5B, H'83, H'8B, H'83, H'68, H'83, H'6F, H'83, H'62, H'83 - .DATA.B H'57, H'82, H'E0, H'82, H'A0, H'82, H'E9, H'82, H'BC, H'00, H'00, H'00 -_const_8c036b58: ; aggressive search - ;.SDATA "昨日は残念な結果になってしまったなまぁ、誰にだって失敗はある" - ;.DATA.B H'00 - .DATA.B H'8D, H'F0, H'93, H'FA, H'82, H'CD, H'8E, H'63, H'94, H'4F, H'82, H'C8, H'8C, H'8B, H'89, H'CA - .DATA.B H'82, H'C9, H'82, H'C8, H'82, H'C1, H'82, H'C4, H'82, H'B5, H'82, H'DC, H'82, H'C1, H'82, H'BD - .DATA.B H'82, H'C8, H'3C, H'45, H'3E, H'82, H'DC, H'82, H'9F, H'81, H'41, H'92, H'4E, H'82, H'C9, H'82 - .DATA.B H'BE, H'82, H'C1, H'82, H'C4, H'8E, H'B8, H'94, H'73, H'82, H'CD, H'82, H'A0, H'82, H'E9, H'00 -_const_8c036b98: ; aggressive search - ;.SDATA "特に慣れないうちは仕方ないさ気分を改めて今日も頑張ってくれよ" - ;.DATA.B H'00 - .DATA.B H'93, H'C1, H'82, H'C9, H'8A, H'B5, H'82, H'EA, H'82, H'C8, H'82, H'A2, H'82, H'A4, H'82, H'BF - .DATA.B H'82, H'CD, H'8E, H'64, H'95, H'FB, H'82, H'C8, H'82, H'A2, H'82, H'B3, H'3C, H'45, H'3E, H'8B - .DATA.B H'43, H'95, H'AA, H'82, H'F0, H'89, H'FC, H'82, H'DF, H'82, H'C4, H'8D, H'A1, H'93, H'FA, H'82 - .DATA.B H'E0, H'8A, H'E6, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00 -_const_8c036bd8: ; aggressive search - ;.SDATA "それから…経験も積んだようなのでそろそろ違うコースで研修してみよう" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'BB, H'82, H'EA, H'82, H'A9, H'82, H'E7, H'81, H'63, H'8C, H'6F, H'8C, H'B1, H'82, H'E0 - .DATA.B H'90, H'CF, H'82, H'F1, H'82, H'BE, H'82, H'E6, H'82, H'A4, H'82, H'C8, H'82, H'CC, H'82, H'C5 - .DATA.B H'3C, H'45, H'3E, H'82, H'BB, H'82, H'EB, H'82, H'BB, H'82, H'EB, H'88, H'E1, H'82, H'A4, H'83 - .DATA.B H'52, H'81, H'5B, H'83, H'58, H'82, H'C5, H'8C, H'A4, H'8F, H'43, H'82, H'B5, H'82, H'C4, H'82 - .DATA.B H'DD, H'82, H'E6, H'82, H'A4, H'00, H'00, H'00 -_const_8c036c20: ; aggressive search - ;.SDATA "今までより、少し難しくなっていると思うがキミなら大丈夫だ" - ;.DATA.B H'00 - .DATA.B H'8D, H'A1, H'82, H'DC, H'82, H'C5, H'82, H'E6, H'82, H'E8, H'81, H'41, H'8F, H'AD, H'82, H'B5 - .DATA.B H'93, H'EF, H'82, H'B5, H'82, H'AD, H'82, H'C8, H'82, H'C1, H'82, H'C4, H'82, H'A2, H'82, H'E9 - .DATA.B H'82, H'C6, H'8E, H'76, H'82, H'A4, H'82, H'AA, H'3C, H'45, H'3E, H'83, H'4C, H'83, H'7E, H'82 - .DATA.B H'C8, H'82, H'E7, H'91, H'E5, H'8F, H'E4, H'95, H'76, H'82, H'BE, H'00 -_const_8c036c5c: ; aggressive search - ;.SDATA "勇気を持ってチャレンジしてくれ" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'97, H'45, H'8B, H'43, H'82, H'F0, H'8E, H'9D, H'82, H'C1, H'82, H'C4, H'83, H'60, H'83, H'83 - .DATA.B H'83, H'8C, H'83, H'93, H'83, H'57, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'00, H'00 -_const_8c036c7c: ; aggressive search - ;.SDATA "そうそう、今日はお客さんから手紙が届いたよ" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'82, H'BB, H'82, H'A4, H'82, H'BB, H'82, H'A4, H'81, H'41, H'8D, H'A1, H'93, H'FA, H'82, H'CD - .DATA.B H'82, H'A8, H'8B, H'71, H'82, H'B3, H'82, H'F1, H'82, H'A9, H'82, H'E7, H'8E, H'E8, H'8E, H'86 - .DATA.B H'82, H'AA, H'93, H'CD, H'82, H'A2, H'82, H'BD, H'82, H'E6, H'00, H'00 -_const_8c036ca8: ; aggressive search - ;.SDATA "掲示板に張っておいたから、見るときはALBUMを選んでくれ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8C, H'66, H'8E, H'A6, H'94, H'C2, H'82, H'C9, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'A8 - .DATA.B H'82, H'A2, H'82, H'BD, H'82, H'A9, H'82, H'E7, H'81, H'41, H'3C, H'45, H'3E, H'8C, H'A9, H'82 - .DATA.B H'E9, H'82, H'C6, H'82, H'AB, H'82, H'CD, H'82, H'60, H'82, H'6B, H'82, H'61, H'82, H'74, H'82 - .DATA.B H'6C, H'82, H'F0, H'91, H'49, H'82, H'F1, H'82, H'C5, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00 -_const_8c036ce8: ; aggressive search - ;.SDATA "お客さんってありがたいもんだね運転手やってて本当に良かったって実感するよ" - ;.DATA.B H'00 - .DATA.B H'82, H'A8, H'8B, H'71, H'82, H'B3, H'82, H'F1, H'82, H'C1, H'82, H'C4, H'82, H'A0, H'82, H'E8 - .DATA.B H'82, H'AA, H'82, H'BD, H'82, H'A2, H'82, H'E0, H'82, H'F1, H'82, H'BE, H'82, H'CB, H'3C, H'45 - .DATA.B H'3E, H'89, H'5E, H'93, H'5D, H'8E, H'E8, H'82, H'E2, H'82, H'C1, H'82, H'C4, H'82, H'C4, H'96 - .DATA.B H'7B, H'93, H'96, H'82, H'C9, H'97, H'C7, H'82, H'A9, H'82, H'C1, H'82, H'BD, H'82, H'C1, H'82 - .DATA.B H'C4, H'8E, H'C0, H'8A, H'B4, H'82, H'B7, H'82, H'E9, H'82, H'E6, H'00 -_const_8c036d34: ; aggressive search - ;.SDATA "残念だがそのコースはまだ走れないよもっと経験を積んでからだな" - ;.DATA.B H'00 - .DATA.B H'8E, H'63, H'94, H'4F, H'82, H'BE, H'82, H'AA, H'82, H'BB, H'82, H'CC, H'83, H'52, H'81, H'5B - .DATA.B H'83, H'58, H'82, H'CD, H'82, H'DC, H'82, H'BE, H'91, H'96, H'82, H'EA, H'82, H'C8, H'82, H'A2 - .DATA.B H'82, H'E6, H'3C, H'45, H'3E, H'82, H'E0, H'82, H'C1, H'82, H'C6, H'8C, H'6F, H'8C, H'B1, H'82 - .DATA.B H'F0, H'90, H'CF, H'82, H'F1, H'82, H'C5, H'82, H'A9, H'82, H'E7, H'82, H'BE, H'82, H'C8, H'00 -_const_8c036d74: ; aggressive search - ;.SDATA "はやる気持ちも分からんでもないが、今日は練習してもらうよ" - ;.DATA.B H'00 - .DATA.B H'82, H'CD, H'82, H'E2, H'82, H'E9, H'8B, H'43, H'8E, H'9D, H'82, H'BF, H'82, H'E0, H'95, H'AA - .DATA.B H'82, H'A9, H'82, H'E7, H'82, H'F1, H'82, H'C5, H'82, H'E0, H'82, H'C8, H'82, H'A2, H'82, H'AA - .DATA.B H'81, H'41, H'3C, H'45, H'3E, H'8D, H'A1, H'93, H'FA, H'82, H'CD, H'97, H'FB, H'8F, H'4B, H'82 - .DATA.B H'B5, H'82, H'C4, H'82, H'E0, H'82, H'E7, H'82, H'A4, H'82, H'E6, H'00 -_const_8c036db0: ; aggressive search - ;.SDATA "長かった研修も今日が最後だな" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'92, H'B7, H'82, H'A9, H'82, H'C1, H'82, H'BD, H'8C, H'A4, H'8F, H'43, H'82, H'E0, H'8D, H'A1 - .DATA.B H'93, H'FA, H'82, H'AA, H'8D, H'C5, H'8C, H'E3, H'82, H'BE, H'82, H'C8, H'00, H'00, H'00, H'00 -_const_8c036dd0: ; aggressive search - ;.SDATA "さぁ、最後の研修を選んでくれ" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'82, H'B3, H'82, H'9F, H'81, H'41, H'8D, H'C5, H'8C, H'E3, H'82, H'CC, H'8C, H'A4, H'8F, H'43 - .DATA.B H'82, H'F0, H'91, H'49, H'82, H'F1, H'82, H'C5, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00, H'00 -_const_8c036df0: ; aggressive search - ;.SDATA "今日は初日なので、全てのLESSONを順番にやってもらうよ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8D, H'A1, H'93, H'FA, H'82, H'CD, H'8F, H'89, H'93, H'FA, H'82, H'C8, H'82, H'CC, H'82, H'C5 - .DATA.B H'81, H'41, H'91, H'53, H'82, H'C4, H'82, H'CC, H'82, H'6B, H'82, H'64, H'82, H'72, H'82, H'72 - .DATA.B H'82, H'6E, H'82, H'6D, H'82, H'F0, H'3C, H'45, H'3E, H'8F, H'87, H'94, H'D4, H'82, H'C9, H'82 - .DATA.B H'E2, H'82, H'C1, H'82, H'C4, H'82, H'E0, H'82, H'E7, H'82, H'A4, H'82, H'E6, H'00, H'00, H'00 -_const_8c036e30: ; aggressive search - ;.SDATA "合格ラインは70点。決して難しい事ではないので、落ち着いて慎重に進めていこう" - ;.DATA.B H'00 - .DATA.B H'8D, H'87, H'8A, H'69, H'83, H'89, H'83, H'43, H'83, H'93, H'82, H'CD, H'82, H'56, H'82, H'4F - .DATA.B H'93, H'5F, H'81, H'42, H'8C, H'88, H'82, H'B5, H'82, H'C4, H'93, H'EF, H'82, H'B5, H'82, H'A2 - .DATA.B H'8E, H'96, H'82, H'C5, H'82, H'CD, H'3C, H'45, H'3E, H'82, H'C8, H'82, H'A2, H'82, H'CC, H'82 - .DATA.B H'C5, H'81, H'41, H'97, H'8E, H'82, H'BF, H'92, H'85, H'82, H'A2, H'82, H'C4, H'90, H'54, H'8F - .DATA.B H'64, H'82, H'C9, H'90, H'69, H'82, H'DF, H'82, H'C4, H'82, H'A2, H'82, H'B1, H'82, H'A4, H'00 -_const_8c036e80: ; aggressive search - ;.SDATA "おめでとうこれで全てのLESSONは終了だ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'A8, H'82, H'DF, H'82, H'C5, H'82, H'C6, H'82, H'A4, H'3C, H'45, H'3E, H'82, H'B1, H'82 - .DATA.B H'EA, H'82, H'C5, H'91, H'53, H'82, H'C4, H'82, H'CC, H'82, H'6B, H'82, H'64, H'82, H'72, H'82 - .DATA.B H'72, H'82, H'6E, H'82, H'6D, H'82, H'CD, H'8F, H'49, H'97, H'B9, H'82, H'BE, H'00, H'00, H'00 -_const_8c036eb0: ; aggressive search - ;.SDATA "明日からは実際の街中にでて実地研修を行うとしよう" - ;.DATA.B H'00 - .DATA.B H'96, H'BE, H'93, H'FA, H'82, H'A9, H'82, H'E7, H'82, H'CD, H'8E, H'C0, H'8D, H'DB, H'82, H'CC - .DATA.B H'8A, H'58, H'92, H'86, H'82, H'C9, H'82, H'C5, H'82, H'C4, H'3C, H'45, H'3E, H'8E, H'C0, H'92 - .DATA.B H'6E, H'8C, H'A4, H'8F, H'43, H'82, H'F0, H'8D, H'73, H'82, H'A4, H'82, H'C6, H'82, H'B5, H'82 - .DATA.B H'E6, H'82, H'A4, H'00 -_const_8c036ee4: ; aggressive search - ;.SDATA "もっとも、運行に何か不安があったらここに来て練習すればいい" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'E0, H'82, H'C1, H'82, H'C6, H'82, H'E0, H'81, H'41, H'89, H'5E, H'8D, H'73, H'82, H'C9 - .DATA.B H'89, H'BD, H'82, H'A9, H'95, H'73, H'88, H'C0, H'82, H'AA, H'82, H'A0, H'82, H'C1, H'82, H'BD - .DATA.B H'82, H'E7, H'3C, H'45, H'3E, H'82, H'B1, H'82, H'B1, H'82, H'C9, H'97, H'88, H'82, H'C4, H'97 - .DATA.B H'FB, H'8F, H'4B, H'82, H'B7, H'82, H'EA, H'82, H'CE, H'82, H'A2, H'82, H'A2, H'00, H'00, H'00 -_const_8c036f24: ; aggressive search - ;.SDATA "次からは好きなLESSONが選べるから有効に活用してくれ" - ;.DATA.B H'00 - .DATA.B H'8E, H'9F, H'82, H'A9, H'82, H'E7, H'82, H'CD, H'8D, H'44, H'82, H'AB, H'82, H'C8, H'82, H'6B - .DATA.B H'82, H'64, H'82, H'72, H'82, H'72, H'82, H'6E, H'82, H'6D, H'82, H'AA, H'91, H'49, H'82, H'D7 - .DATA.B H'82, H'E9, H'82, H'A9, H'82, H'E7, H'3C, H'45, H'3E, H'97, H'4C, H'8C, H'F8, H'82, H'C9, H'8A - .DATA.B H'88, H'97, H'70, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'00 -_const_8c036f60: ; aggressive search - ;.SDATA "よーし、次のLESSONに進もう" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'82, H'E6, H'81, H'5B, H'82, H'B5, H'81, H'41, H'8E, H'9F, H'82, H'CC, H'82, H'6B, H'82, H'64 - .DATA.B H'82, H'72, H'82, H'72, H'82, H'6E, H'82, H'6D, H'82, H'C9, H'90, H'69, H'82, H'E0, H'82, H'A4 - .DATA.B H'00, H'00, H'00, H'00 -_const_8c036f84: ; aggressive search - ;.SDATA "誰だって最初はうまくできないものさ気を落とさないで、もう一度やってみよう" - ;.DATA.B H'00 - .DATA.B H'92, H'4E, H'82, H'BE, H'82, H'C1, H'82, H'C4, H'8D, H'C5, H'8F, H'89, H'82, H'CD, H'82, H'A4 - .DATA.B H'82, H'DC, H'82, H'AD, H'82, H'C5, H'82, H'AB, H'82, H'C8, H'82, H'A2, H'82, H'E0, H'82, H'CC - .DATA.B H'82, H'B3, H'3C, H'45, H'3E, H'8B, H'43, H'82, H'F0, H'97, H'8E, H'82, H'C6, H'82, H'B3, H'82 - .DATA.B H'C8, H'82, H'A2, H'82, H'C5, H'81, H'41, H'82, H'E0, H'82, H'A4, H'88, H'EA, H'93, H'78, H'82 - .DATA.B H'E2, H'82, H'C1, H'82, H'C4, H'82, H'DD, H'82, H'E6, H'82, H'A4, H'00 -_const_8c036fd0: ; aggressive search - ;.SDATA "ここでは運行中の諸注意をポイント毎に練習できるぞ" - ;.DATA.B H'00 - .DATA.B H'82, H'B1, H'82, H'B1, H'82, H'C5, H'82, H'CD, H'89, H'5E, H'8D, H'73, H'92, H'86, H'82, H'CC - .DATA.B H'8F, H'94, H'92, H'8D, H'88, H'D3, H'82, H'F0, H'3C, H'45, H'3E, H'83, H'7C, H'83, H'43, H'83 - .DATA.B H'93, H'83, H'67, H'96, H'88, H'82, H'C9, H'97, H'FB, H'8F, H'4B, H'82, H'C5, H'82, H'AB, H'82 - .DATA.B H'E9, H'82, H'BC, H'00 -_const_8c037004: ; aggressive search - ;.SDATA "一度LESSONを選ぶと、今日はコースに出られなくなるので、気を付けるように" - ;.DATA.B H'00 - .DATA.B H'88, H'EA, H'93, H'78, H'82, H'6B, H'82, H'64, H'82, H'72, H'82, H'72, H'82, H'6E, H'82, H'6D - .DATA.B H'82, H'F0, H'91, H'49, H'82, H'D4, H'82, H'C6, H'81, H'41, H'8D, H'A1, H'93, H'FA, H'82, H'CD - .DATA.B H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'C9, H'3C, H'45, H'3E, H'8F, H'6F, H'82, H'E7, H'82 - .DATA.B H'EA, H'82, H'C8, H'82, H'AD, H'82, H'C8, H'82, H'E9, H'82, H'CC, H'82, H'C5, H'81, H'41, H'8B - .DATA.B H'43, H'82, H'F0, H'95, H'74, H'82, H'AF, H'82, H'E9, H'82, H'E6, H'82, H'A4, H'82, H'C9, H'00 -_const_8c037054: ; aggressive search - ;.SDATA "練習したいLESSONを選んでくれ" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'97, H'FB, H'8F, H'4B, H'82, H'B5, H'82, H'BD, H'82, H'A2, H'82, H'6B, H'82, H'64, H'82, H'72 - .DATA.B H'82, H'72, H'82, H'6E, H'82, H'6D, H'82, H'F0, H'91, H'49, H'82, H'F1, H'82, H'C5, H'82, H'AD - .DATA.B H'82, H'EA, H'00, H'00 -_const_8c037078: ; aggressive search - ;.SDATA "そうそう、最高得点が更新されたようだこの調子で頑張ってくれよ" - ;.DATA.B H'00 - .DATA.B H'82, H'BB, H'82, H'A4, H'82, H'BB, H'82, H'A4, H'81, H'41, H'8D, H'C5, H'8D, H'82, H'93, H'BE - .DATA.B H'93, H'5F, H'82, H'AA, H'8D, H'58, H'90, H'56, H'82, H'B3, H'82, H'EA, H'82, H'BD, H'82, H'E6 - .DATA.B H'82, H'A4, H'82, H'BE, H'3C, H'45, H'3E, H'82, H'B1, H'82, H'CC, H'92, H'B2, H'8E, H'71, H'82 - .DATA.B H'C5, H'8A, H'E6, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00 -_const_8c0370b8: ; aggressive search - ;.SDATA "今日は研修の最終日だぞもう練習しているより、実戦あるのみ" - ;.DATA.B H'00 - .DATA.B H'8D, H'A1, H'93, H'FA, H'82, H'CD, H'8C, H'A4, H'8F, H'43, H'82, H'CC, H'8D, H'C5, H'8F, H'49 - .DATA.B H'93, H'FA, H'82, H'BE, H'82, H'BC, H'3C, H'45, H'3E, H'82, H'E0, H'82, H'A4, H'97, H'FB, H'8F - .DATA.B H'4B, H'82, H'B5, H'82, H'C4, H'82, H'A2, H'82, H'E9, H'82, H'E6, H'82, H'E8, H'81, H'41, H'8E - .DATA.B H'C0, H'90, H'ED, H'82, H'A0, H'82, H'E9, H'82, H'CC, H'82, H'DD, H'00 -_const_8c0370f4: ; aggressive search - ;.SDATA "まぁ、どうしてもと言うのなら止めはしないが" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'82, H'DC, H'82, H'9F, H'81, H'41, H'82, H'C7, H'82, H'A4, H'82, H'B5, H'82, H'C4, H'82, H'E0 - .DATA.B H'82, H'C6, H'8C, H'BE, H'82, H'A4, H'82, H'CC, H'82, H'C8, H'82, H'E7, H'8E, H'7E, H'82, H'DF - .DATA.B H'82, H'CD, H'82, H'B5, H'82, H'C8, H'82, H'A2, H'82, H'AA, H'00, H'00 -_const_8c037120: ; aggressive search - ;.SDATA "素晴らしい!パーフェクトで合格だ" - ;.DATA.B H'00 - .DATA.B H'91, H'66, H'90, H'B0, H'82, H'E7, H'82, H'B5, H'82, H'A2, H'81, H'49, H'3C, H'45, H'3E, H'83 - .DATA.B H'70, H'81, H'5B, H'83, H'74, H'83, H'46, H'83, H'4E, H'83, H'67, H'82, H'C5, H'8D, H'87, H'8A - .DATA.B H'69, H'82, H'BE, H'00 -_const_8c037144: ; aggressive search - ;.SDATA "この調子で他のLESSONはもちろんコースの方も頑張ってくれよ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'B1, H'82, H'CC, H'92, H'B2, H'8E, H'71, H'82, H'C5, H'91, H'BC, H'82, H'CC, H'82, H'6B - .DATA.B H'82, H'64, H'82, H'72, H'82, H'72, H'82, H'6E, H'82, H'6D, H'82, H'CD, H'82, H'E0, H'82, H'BF - .DATA.B H'82, H'EB, H'82, H'F1, H'3C, H'45, H'3E, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'CC, H'95 - .DATA.B H'FB, H'82, H'E0, H'8A, H'E6, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82 - .DATA.B H'E6, H'00, H'00, H'00 -_const_8c037188: ; aggressive search - ;.SDATA "しかし、ミスはその1カ所だけのようだな" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'82, H'B5, H'82, H'A9, H'82, H'B5, H'81, H'41, H'83, H'7E, H'83, H'58, H'82, H'CD, H'82, H'BB - .DATA.B H'82, H'CC, H'82, H'50, H'83, H'4A, H'8F, H'8A, H'82, H'BE, H'82, H'AF, H'82, H'CC, H'82, H'E6 - .DATA.B H'82, H'A4, H'82, H'BE, H'82, H'C8, H'00, H'00 -_const_8c0371b0: ; aggressive search - ;.SDATA "他はパーフェクトだっただけに悔やまれるが、十分に合格点だ!" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'91, H'BC, H'82, H'CD, H'83, H'70, H'81, H'5B, H'83, H'74, H'83, H'46, H'83, H'4E, H'83, H'67 - .DATA.B H'82, H'BE, H'82, H'C1, H'82, H'BD, H'82, H'BE, H'82, H'AF, H'82, H'C9, H'3C, H'45, H'3E, H'89 - .DATA.B H'F7, H'82, H'E2, H'82, H'DC, H'82, H'EA, H'82, H'E9, H'82, H'AA, H'81, H'41, H'8F, H'5C, H'95 - .DATA.B H'AA, H'82, H'C9, H'8D, H'87, H'8A, H'69, H'93, H'5F, H'82, H'BE, H'81, H'49, H'00, H'00, H'00 -_const_8c0371f0: ; aggressive search - ;.SDATA "今度走る時はパーフェクトを目指してみてはどうかな?" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8D, H'A1, H'93, H'78, H'91, H'96, H'82, H'E9, H'8E, H'9E, H'82, H'CD, H'83, H'70, H'81, H'5B - .DATA.B H'83, H'74, H'83, H'46, H'83, H'4E, H'83, H'67, H'82, H'F0, H'3C, H'45, H'3E, H'96, H'DA, H'8E - .DATA.B H'77, H'82, H'B5, H'82, H'C4, H'82, H'DD, H'82, H'C4, H'82, H'CD, H'82, H'C7, H'82, H'A4, H'82 - .DATA.B H'A9, H'82, H'C8, H'81, H'48, H'00, H'00, H'00 -_const_8c037228: ; aggressive search - ;.SDATA "まぁ、他にもミスはあったが致命的なものではないようだな" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'DC, H'82, H'9F, H'81, H'41, H'91, H'BC, H'82, H'C9, H'82, H'E0, H'83, H'7E, H'83, H'58 - .DATA.B H'82, H'CD, H'82, H'A0, H'82, H'C1, H'82, H'BD, H'82, H'AA, H'3C, H'45, H'3E, H'92, H'76, H'96 - .DATA.B H'BD, H'93, H'49, H'82, H'C8, H'82, H'E0, H'82, H'CC, H'82, H'C5, H'82, H'CD, H'82, H'C8, H'82 - .DATA.B H'A2, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'00, H'00, H'00 -_const_8c037264: ; aggressive search - ;.SDATA "少し不安は残るが、一応は合格点だ次はもっと高得点を目指してくれよ" - ;.DATA.B H'00 - .DATA.B H'8F, H'AD, H'82, H'B5, H'95, H'73, H'88, H'C0, H'82, H'CD, H'8E, H'63, H'82, H'E9, H'82, H'AA - .DATA.B H'81, H'41, H'88, H'EA, H'89, H'9E, H'82, H'CD, H'8D, H'87, H'8A, H'69, H'93, H'5F, H'82, H'BE - .DATA.B H'3C, H'45, H'3E, H'8E, H'9F, H'82, H'CD, H'82, H'E0, H'82, H'C1, H'82, H'C6, H'8D, H'82, H'93 - .DATA.B H'BE, H'93, H'5F, H'82, H'F0, H'96, H'DA, H'8E, H'77, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82 - .DATA.B H'EA, H'82, H'E6, H'00 -_const_8c0372a8: ; aggressive search - ;.SDATA "ミスはその1カ所だけのようだが状況によっては大事故になる危険なミスだぞ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'83, H'7E, H'83, H'58, H'82, H'CD, H'82, H'BB, H'82, H'CC, H'82, H'50, H'83, H'4A, H'8F, H'8A - .DATA.B H'82, H'BE, H'82, H'AF, H'82, H'CC, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'AA, H'3C, H'45 - .DATA.B H'3E, H'8F, H'F3, H'8B, H'B5, H'82, H'C9, H'82, H'E6, H'82, H'C1, H'82, H'C4, H'82, H'CD, H'91 - .DATA.B H'E5, H'8E, H'96, H'8C, H'CC, H'82, H'C9, H'82, H'C8, H'82, H'E9, H'8A, H'EB, H'8C, H'AF, H'82 - .DATA.B H'C8, H'83, H'7E, H'83, H'58, H'82, H'BE, H'82, H'BC, H'00, H'00, H'00 -_const_8c0372f4: ; aggressive search - ;.SDATA "残念だが今回は不合格だな気を取り直して、次は頑張ってくれよ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8E, H'63, H'94, H'4F, H'82, H'BE, H'82, H'AA, H'8D, H'A1, H'89, H'F1, H'82, H'CD, H'95, H'73 - .DATA.B H'8D, H'87, H'8A, H'69, H'82, H'BE, H'82, H'C8, H'3C, H'45, H'3E, H'8B, H'43, H'82, H'F0, H'8E - .DATA.B H'E6, H'82, H'E8, H'92, H'BC, H'82, H'B5, H'82, H'C4, H'81, H'41, H'8E, H'9F, H'82, H'CD, H'8A - .DATA.B H'E6, H'92, H'A3, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00 -_const_8c037334: ; aggressive search - ;.SDATA "…その他にもミスが目立つようだとても合格点はあげられないな" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'81, H'63, H'82, H'BB, H'82, H'CC, H'91, H'BC, H'82, H'C9, H'82, H'E0, H'83, H'7E, H'83, H'58 - .DATA.B H'82, H'AA, H'96, H'DA, H'97, H'A7, H'82, H'C2, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'3C, H'45 - .DATA.B H'3E, H'82, H'C6, H'82, H'C4, H'82, H'E0, H'8D, H'87, H'8A, H'69, H'93, H'5F, H'82, H'CD, H'82 - .DATA.B H'A0, H'82, H'B0, H'82, H'E7, H'82, H'EA, H'82, H'C8, H'82, H'A2, H'82, H'C8, H'00, H'00, H'00 -_const_8c037374: ; aggressive search - ;.SDATA "乗客を乗せているということは、命を預かっているのと同じことなんだ" - ;.DATA.B H'00 - .DATA.B H'8F, H'E6, H'8B, H'71, H'82, H'F0, H'8F, H'E6, H'82, H'B9, H'82, H'C4, H'82, H'A2, H'82, H'E9 - .DATA.B H'82, H'C6, H'82, H'A2, H'82, H'A4, H'82, H'B1, H'82, H'C6, H'82, H'CD, H'81, H'41, H'3C, H'45 - .DATA.B H'3E, H'96, H'BD, H'82, H'F0, H'97, H'61, H'82, H'A9, H'82, H'C1, H'82, H'C4, H'82, H'A2, H'82 - .DATA.B H'E9, H'82, H'CC, H'82, H'C6, H'93, H'AF, H'82, H'B6, H'82, H'B1, H'82, H'C6, H'82, H'C8, H'82 - .DATA.B H'F1, H'82, H'BE, H'00 -_const_8c0373b8: ; aggressive search - ;.SDATA "我々の不注意が、多くの人々を危険にさらしてしまう事を、よく肝に銘じて練習に励んでくれ" - ;.DATA.B H'00 - .DATA.B H'89, H'E4, H'81, H'58, H'82, H'CC, H'95, H'73, H'92, H'8D, H'88, H'D3, H'82, H'AA, H'81, H'41 - .DATA.B H'91, H'BD, H'82, H'AD, H'82, H'CC, H'90, H'6C, H'81, H'58, H'82, H'F0, H'8A, H'EB, H'8C, H'AF - .DATA.B H'82, H'C9, H'82, H'B3, H'82, H'E7, H'82, H'B5, H'82, H'C4, H'3C, H'45, H'3E, H'82, H'B5, H'82 - .DATA.B H'DC, H'82, H'A4, H'8E, H'96, H'82, H'F0, H'81, H'41, H'82, H'E6, H'82, H'AD, H'8A, H'CC, H'82 - .DATA.B H'C9, H'96, H'C1, H'82, H'B6, H'82, H'C4, H'97, H'FB, H'8F, H'4B, H'82, H'C9, H'97, H'E3, H'82 - .DATA.B H'F1, H'82, H'C5, H'82, H'AD, H'82, H'EA, H'00 -_const_8c037410: ; aggressive search - ;.SDATA "他の車に接触してしまったようだな…" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'91, H'BC, H'82, H'CC, H'8E, H'D4, H'82, H'C9, H'90, H'DA, H'90, H'47, H'82, H'B5, H'82, H'C4 - .DATA.B H'82, H'B5, H'82, H'DC, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8 - .DATA.B H'81, H'63, H'00, H'00 -_const_8c037434: ; aggressive search - ;.SDATA "車間距離を十分に取り、早めにブレーキをかけるようにしてくれ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8E, H'D4, H'8A, H'D4, H'8B, H'97, H'97, H'A3, H'82, H'F0, H'8F, H'5C, H'95, H'AA, H'82, H'C9 - .DATA.B H'8E, H'E6, H'82, H'E8, H'81, H'41, H'3C, H'45, H'3E, H'91, H'81, H'82, H'DF, H'82, H'C9, H'83 - .DATA.B H'75, H'83, H'8C, H'81, H'5B, H'83, H'4C, H'82, H'F0, H'82, H'A9, H'82, H'AF, H'82, H'E9, H'82 - .DATA.B H'E6, H'82, H'A4, H'82, H'C9, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00 -_const_8c037474: ; aggressive search - ;.SDATA "スピードは出ていなかったようだが停車車両に接触してしまったな…" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'83, H'58, H'83, H'73, H'81, H'5B, H'83, H'68, H'82, H'CD, H'8F, H'6F, H'82, H'C4, H'82, H'A2 - .DATA.B H'82, H'C8, H'82, H'A9, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'AA - .DATA.B H'3C, H'45, H'3E, H'92, H'E2, H'8E, H'D4, H'8E, H'D4, H'97, H'BC, H'82, H'C9, H'90, H'DA, H'90 - .DATA.B H'47, H'82, H'B5, H'82, H'C4, H'82, H'B5, H'82, H'DC, H'82, H'C1, H'82, H'BD, H'82, H'C8, H'81 - .DATA.B H'63, H'00, H'00, H'00 -_const_8c0374b8: ; aggressive search - ;.SDATA "一日も早く、車両感覚を身につけてくれ" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'88, H'EA, H'93, H'FA, H'82, H'E0, H'91, H'81, H'82, H'AD, H'81, H'41, H'8E, H'D4, H'97, H'BC - .DATA.B H'8A, H'B4, H'8A, H'6F, H'82, H'F0, H'90, H'67, H'82, H'C9, H'82, H'C2, H'82, H'AF, H'82, H'C4 - .DATA.B H'82, H'AD, H'82, H'EA, H'00, H'00, H'00, H'00 -_const_8c0374e0: ; aggressive search - ;.SDATA "停車車両に接触してしまったようだな…しかもスピードが大分出ていたな" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'92, H'E2, H'8E, H'D4, H'8E, H'D4, H'97, H'BC, H'82, H'C9, H'90, H'DA, H'90, H'47, H'82, H'B5 - .DATA.B H'82, H'C4, H'82, H'B5, H'82, H'DC, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE - .DATA.B H'82, H'C8, H'81, H'63, H'3C, H'45, H'3E, H'82, H'B5, H'82, H'A9, H'82, H'E0, H'83, H'58, H'83 - .DATA.B H'73, H'81, H'5B, H'83, H'68, H'82, H'AA, H'91, H'E5, H'95, H'AA, H'8F, H'6F, H'82, H'C4, H'82 - .DATA.B H'A2, H'82, H'BD, H'82, H'C8, H'00, H'00, H'00 -_const_8c037528: ; aggressive search - ;.SDATA "停車車両に接触してしまったようだな…しかも凄いスピードで…" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'92, H'E2, H'8E, H'D4, H'8E, H'D4, H'97, H'BC, H'82, H'C9, H'90, H'DA, H'90, H'47, H'82, H'B5 - .DATA.B H'82, H'C4, H'82, H'B5, H'82, H'DC, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE - .DATA.B H'82, H'C8, H'81, H'63, H'3C, H'45, H'3E, H'82, H'B5, H'82, H'A9, H'82, H'E0, H'90, H'A6, H'82 - .DATA.B H'A2, H'83, H'58, H'83, H'73, H'81, H'5B, H'83, H'68, H'82, H'C5, H'81, H'63, H'00, H'00, H'00 -_const_8c037568: ; aggressive search - ;.SDATA "まず速度はむやみに出さないこと!そして車両感覚をしっかり身につけてくれ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'DC, H'82, H'B8, H'91, H'AC, H'93, H'78, H'82, H'CD, H'82, H'DE, H'82, H'E2, H'82, H'DD - .DATA.B H'82, H'C9, H'8F, H'6F, H'82, H'B3, H'82, H'C8, H'82, H'A2, H'82, H'B1, H'82, H'C6, H'81, H'49 - .DATA.B H'3C, H'45, H'3E, H'82, H'BB, H'82, H'B5, H'82, H'C4, H'8E, H'D4, H'97, H'BC, H'8A, H'B4, H'8A - .DATA.B H'6F, H'82, H'F0, H'82, H'B5, H'82, H'C1, H'82, H'A9, H'82, H'E8, H'90, H'67, H'82, H'C9, H'82 - .DATA.B H'C2, H'82, H'AF, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00 -_const_8c0375b4: ; aggressive search - ;.SDATA "スピードは出ていなかったようだが壁に接触してしまったな…" - ;.DATA.B H'00 - .DATA.B H'83, H'58, H'83, H'73, H'81, H'5B, H'83, H'68, H'82, H'CD, H'8F, H'6F, H'82, H'C4, H'82, H'A2 - .DATA.B H'82, H'C8, H'82, H'A9, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'AA - .DATA.B H'3C, H'45, H'3E, H'95, H'C7, H'82, H'C9, H'90, H'DA, H'90, H'47, H'82, H'B5, H'82, H'C4, H'82 - .DATA.B H'B5, H'82, H'DC, H'82, H'C1, H'82, H'BD, H'82, H'C8, H'81, H'63, H'00 -_const_8c0375f0: ; aggressive search - ;.SDATA "壁に接触してしまったようだな…しかもスピードが大分出ていたな" - ;.DATA.B H'00 - .DATA.B H'95, H'C7, H'82, H'C9, H'90, H'DA, H'90, H'47, H'82, H'B5, H'82, H'C4, H'82, H'B5, H'82, H'DC - .DATA.B H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'81, H'63, H'3C, H'45 - .DATA.B H'3E, H'82, H'B5, H'82, H'A9, H'82, H'E0, H'83, H'58, H'83, H'73, H'81, H'5B, H'83, H'68, H'82 - .DATA.B H'AA, H'91, H'E5, H'95, H'AA, H'8F, H'6F, H'82, H'C4, H'82, H'A2, H'82, H'BD, H'82, H'C8, H'00 -_const_8c037630: ; aggressive search - ;.SDATA "壁に接触してしまったようだな…しかも凄いスピードで…" - ;.DATA.B H'00 - .DATA.B H'95, H'C7, H'82, H'C9, H'90, H'DA, H'90, H'47, H'82, H'B5, H'82, H'C4, H'82, H'B5, H'82, H'DC - .DATA.B H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'81, H'63, H'3C, H'45 - .DATA.B H'3E, H'82, H'B5, H'82, H'A9, H'82, H'E0, H'90, H'A6, H'82, H'A2, H'83, H'58, H'83, H'73, H'81 - .DATA.B H'5B, H'83, H'68, H'82, H'C5, H'81, H'63, H'00 -_const_8c037668: ; aggressive search - ;.SDATA "ふー、危機一髪だったな" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'82, H'D3, H'81, H'5B, H'81, H'41, H'8A, H'EB, H'8B, H'40, H'88, H'EA, H'94, H'AF, H'82, H'BE - .DATA.B H'82, H'C1, H'82, H'BD, H'82, H'C8, H'00, H'00 -_const_8c037680: ; aggressive search - ;.SDATA "おいおい、通行人の安全は何に替えても守ってくれよ" - ;.DATA.B H'00 - .DATA.B H'82, H'A8, H'82, H'A2, H'82, H'A8, H'82, H'A2, H'81, H'41, H'92, H'CA, H'8D, H'73, H'90, H'6C - .DATA.B H'82, H'CC, H'88, H'C0, H'91, H'53, H'82, H'CD, H'3C, H'45, H'3E, H'89, H'BD, H'82, H'C9, H'91 - .DATA.B H'D6, H'82, H'A6, H'82, H'C4, H'82, H'E0, H'8E, H'E7, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82 - .DATA.B H'EA, H'82, H'E6, H'00 -_const_8c0376b4: ; aggressive search - ;.SDATA "コースを外れてしまったようだな…コースは常に正確に走ってくれないと困るぞ" - ;.DATA.B H'00 - .DATA.B H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'F0, H'8A, H'4F, H'82, H'EA, H'82, H'C4, H'82, H'B5 - .DATA.B H'82, H'DC, H'82, H'C1, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'81, H'63 - .DATA.B H'3C, H'45, H'3E, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'CD, H'8F, H'ED, H'82, H'C9, H'90 - .DATA.B H'B3, H'8A, H'6D, H'82, H'C9, H'91, H'96, H'82, H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82 - .DATA.B H'C8, H'82, H'A2, H'82, H'C6, H'8D, H'A2, H'82, H'E9, H'82, H'BC, H'00 -_const_8c037700: ; aggressive search - ;.SDATA "コースから外れかけても、慌てずに速度を落とし正しいコースに戻ればいい" - ;.DATA.B H'00 - .DATA.B H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'A9, H'82, H'E7, H'8A, H'4F, H'82, H'EA, H'82, H'A9 - .DATA.B H'82, H'AF, H'82, H'C4, H'82, H'E0, H'81, H'41, H'8D, H'51, H'82, H'C4, H'82, H'B8, H'82, H'C9 - .DATA.B H'91, H'AC, H'93, H'78, H'82, H'F0, H'97, H'8E, H'82, H'C6, H'82, H'B5, H'3C, H'45, H'3E, H'90 - .DATA.B H'B3, H'82, H'B5, H'82, H'A2, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'C9, H'96, H'DF, H'82 - .DATA.B H'EA, H'82, H'CE, H'82, H'A2, H'82, H'A2, H'00 -_const_8c037748: ; aggressive search - ;.SDATA "少しスピードオーバーしたみたいだな…制限速度には常に注意を払ってくれよ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8F, H'AD, H'82, H'B5, H'83, H'58, H'83, H'73, H'81, H'5B, H'83, H'68, H'83, H'49, H'81, H'5B - .DATA.B H'83, H'6F, H'81, H'5B, H'82, H'B5, H'82, H'BD, H'82, H'DD, H'82, H'BD, H'82, H'A2, H'82, H'BE - .DATA.B H'82, H'C8, H'81, H'63, H'3C, H'45, H'3E, H'90, H'A7, H'8C, H'C0, H'91, H'AC, H'93, H'78, H'82 - .DATA.B H'C9, H'82, H'CD, H'8F, H'ED, H'82, H'C9, H'92, H'8D, H'88, H'D3, H'82, H'F0, H'95, H'A5, H'82 - .DATA.B H'C1, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00 -_const_8c037794: ; aggressive search - ;.SDATA "大分スピードオーバーしたようだな…制限速度を守るのは安全運転の基本だぞ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'91, H'E5, H'95, H'AA, H'83, H'58, H'83, H'73, H'81, H'5B, H'83, H'68, H'83, H'49, H'81, H'5B - .DATA.B H'83, H'6F, H'81, H'5B, H'82, H'B5, H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8 - .DATA.B H'81, H'63, H'3C, H'45, H'3E, H'90, H'A7, H'8C, H'C0, H'91, H'AC, H'93, H'78, H'82, H'F0, H'8E - .DATA.B H'E7, H'82, H'E9, H'82, H'CC, H'82, H'CD, H'88, H'C0, H'91, H'53, H'89, H'5E, H'93, H'5D, H'82 - .DATA.B H'CC, H'8A, H'EE, H'96, H'7B, H'82, H'BE, H'82, H'BC, H'00, H'00, H'00 -_const_8c0377e0: ; aggressive search - ;.SDATA "対向車線を越えるとは言語道断!大事故の元なので、以後、絶対にないように" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'91, H'CE, H'8C, H'FC, H'8E, H'D4, H'90, H'FC, H'82, H'F0, H'89, H'7A, H'82, H'A6, H'82, H'E9 - .DATA.B H'82, H'C6, H'82, H'CD, H'8C, H'BE, H'8C, H'EA, H'93, H'B9, H'92, H'66, H'81, H'49, H'3C, H'45 - .DATA.B H'3E, H'91, H'E5, H'8E, H'96, H'8C, H'CC, H'82, H'CC, H'8C, H'B3, H'82, H'C8, H'82, H'CC, H'82 - .DATA.B H'C5, H'81, H'41, H'88, H'C8, H'8C, H'E3, H'81, H'41, H'90, H'E2, H'91, H'CE, H'82, H'C9, H'82 - .DATA.B H'C8, H'82, H'A2, H'82, H'E6, H'82, H'A4, H'82, H'C9, H'00, H'00, H'00 -_const_8c03782c: ; aggressive search - ;.SDATA "車体が大きいので大変なのは分かるが車線をまたがって走ってはいかんぞ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8E, H'D4, H'91, H'CC, H'82, H'AA, H'91, H'E5, H'82, H'AB, H'82, H'A2, H'82, H'CC, H'82, H'C5 - .DATA.B H'91, H'E5, H'95, H'CF, H'82, H'C8, H'82, H'CC, H'82, H'CD, H'95, H'AA, H'82, H'A9, H'82, H'E9 - .DATA.B H'82, H'AA, H'3C, H'45, H'3E, H'8E, H'D4, H'90, H'FC, H'82, H'F0, H'82, H'DC, H'82, H'BD, H'82 - .DATA.B H'AA, H'82, H'C1, H'82, H'C4, H'91, H'96, H'82, H'C1, H'82, H'C4, H'82, H'CD, H'82, H'A2, H'82 - .DATA.B H'A9, H'82, H'F1, H'82, H'BC, H'00, H'00, H'00 -_const_8c037874: ; aggressive search - ;.SDATA "ウインカーを忘れていたぞ車線変更や交差点での右左折" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'83, H'45, H'83, H'43, H'83, H'93, H'83, H'4A, H'81, H'5B, H'82, H'F0, H'96, H'59, H'82, H'EA - .DATA.B H'82, H'C4, H'82, H'A2, H'82, H'BD, H'82, H'BC, H'3C, H'45, H'3E, H'8E, H'D4, H'90, H'FC, H'95 - .DATA.B H'CF, H'8D, H'58, H'82, H'E2, H'8C, H'F0, H'8D, H'B7, H'93, H'5F, H'82, H'C5, H'82, H'CC, H'89 - .DATA.B H'45, H'8D, H'B6, H'90, H'DC, H'00, H'00, H'00 -_const_8c0378ac: ; aggressive search - ;.SDATA "そして停留所に停車する時は必ずウインカーを出すようにな" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'BB, H'82, H'B5, H'82, H'C4, H'92, H'E2, H'97, H'AF, H'8F, H'8A, H'82, H'C9, H'92, H'E2 - .DATA.B H'8E, H'D4, H'82, H'B7, H'82, H'E9, H'8E, H'9E, H'82, H'CD, H'3C, H'45, H'3E, H'95, H'4B, H'82 - .DATA.B H'B8, H'83, H'45, H'83, H'43, H'83, H'93, H'83, H'4A, H'81, H'5B, H'82, H'F0, H'8F, H'6F, H'82 - .DATA.B H'B7, H'82, H'E6, H'82, H'A4, H'82, H'C9, H'82, H'C8, H'00, H'00, H'00 -_const_8c0378e8: ; aggressive search - ;.SDATA "大切なのは、自分の行動を周りの車にちゃんと知らせることだ" - ;.DATA.B H'00 - .DATA.B H'91, H'E5, H'90, H'D8, H'82, H'C8, H'82, H'CC, H'82, H'CD, H'81, H'41, H'8E, H'A9, H'95, H'AA - .DATA.B H'82, H'CC, H'8D, H'73, H'93, H'AE, H'82, H'F0, H'3C, H'45, H'3E, H'8E, H'FC, H'82, H'E8, H'82 - .DATA.B H'CC, H'8E, H'D4, H'82, H'C9, H'82, H'BF, H'82, H'E1, H'82, H'F1, H'82, H'C6, H'92, H'6D, H'82 - .DATA.B H'E7, H'82, H'B9, H'82, H'E9, H'82, H'B1, H'82, H'C6, H'82, H'BE, H'00 -_const_8c037924: ; aggressive search - ;.SDATA "右左折する時のウインカーを忘れていたぞ" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'89, H'45, H'8D, H'B6, H'90, H'DC, H'82, H'B7, H'82, H'E9, H'8E, H'9E, H'82, H'CC, H'83, H'45 - .DATA.B H'83, H'43, H'83, H'93, H'83, H'4A, H'81, H'5B, H'82, H'F0, H'96, H'59, H'82, H'EA, H'82, H'C4 - .DATA.B H'82, H'A2, H'82, H'BD, H'82, H'BC, H'00, H'00 -_const_8c03794c: ; aggressive search - ;.SDATA "おいおい、大事故になる所だったぞ" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'82, H'A8, H'82, H'A2, H'82, H'A8, H'82, H'A2, H'81, H'41, H'91, H'E5, H'8E, H'96, H'8C, H'CC - .DATA.B H'82, H'C9, H'82, H'C8, H'82, H'E9, H'8F, H'8A, H'82, H'BE, H'82, H'C1, H'82, H'BD, H'82, H'BC - .DATA.B H'00, H'00, H'00, H'00 -_const_8c037970: ; aggressive search - ;.SDATA "信号はしっかりと確認してくれよ交通法規の基本中の基本だぞ" - ;.DATA.B H'00 - .DATA.B H'90, H'4D, H'8D, H'86, H'82, H'CD, H'82, H'B5, H'82, H'C1, H'82, H'A9, H'82, H'E8, H'82, H'C6 - .DATA.B H'8A, H'6D, H'94, H'46, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'3C, H'45 - .DATA.B H'3E, H'8C, H'F0, H'92, H'CA, H'96, H'40, H'8B, H'4B, H'82, H'CC, H'8A, H'EE, H'96, H'7B, H'92 - .DATA.B H'86, H'82, H'CC, H'8A, H'EE, H'96, H'7B, H'82, H'BE, H'82, H'BC, H'00 -_const_8c0379ac: ; aggressive search - ;.SDATA "停止時にちょっと失敗したな" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'92, H'E2, H'8E, H'7E, H'8E, H'9E, H'82, H'C9, H'82, H'BF, H'82, H'E5, H'82, H'C1, H'82, H'C6 - .DATA.B H'8E, H'B8, H'94, H'73, H'82, H'B5, H'82, H'BD, H'82, H'C8, H'00, H'00 -_const_8c0379c8: ; aggressive search - ;.SDATA "停止線をきちんと確認して、正しい位置に停止するようにしてくれ" - ;.DATA.B H'00 - .DATA.B H'92, H'E2, H'8E, H'7E, H'90, H'FC, H'82, H'F0, H'82, H'AB, H'82, H'BF, H'82, H'F1, H'82, H'C6 - .DATA.B H'8A, H'6D, H'94, H'46, H'82, H'B5, H'82, H'C4, H'81, H'41, H'3C, H'45, H'3E, H'90, H'B3, H'82 - .DATA.B H'B5, H'82, H'A2, H'88, H'CA, H'92, H'75, H'82, H'C9, H'92, H'E2, H'8E, H'7E, H'82, H'B7, H'82 - .DATA.B H'E9, H'82, H'E6, H'82, H'A4, H'82, H'C9, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'00 -_const_8c037a08: ; aggressive search - ;.SDATA "してはいけない所で車線変更をしたようだな…" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'82, H'B5, H'82, H'C4, H'82, H'CD, H'82, H'A2, H'82, H'AF, H'82, H'C8, H'82, H'A2, H'8F, H'8A - .DATA.B H'82, H'C5, H'8E, H'D4, H'90, H'FC, H'95, H'CF, H'8D, H'58, H'82, H'F0, H'82, H'B5, H'82, H'BD - .DATA.B H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'81, H'63, H'00, H'00 -_const_8c037a34: ; aggressive search - ;.SDATA "交差点の手前などでは禁止されているので気を付けてくれよ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8C, H'F0, H'8D, H'B7, H'93, H'5F, H'82, H'CC, H'8E, H'E8, H'91, H'4F, H'82, H'C8, H'82, H'C7 - .DATA.B H'82, H'C5, H'82, H'CD, H'8B, H'D6, H'8E, H'7E, H'82, H'B3, H'82, H'EA, H'82, H'C4, H'82, H'A2 - .DATA.B H'82, H'E9, H'82, H'CC, H'82, H'C5, H'3C, H'45, H'3E, H'8B, H'43, H'82, H'F0, H'95, H'74, H'82 - .DATA.B H'AF, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00 -_const_8c037a70: ; aggressive search - ;.SDATA "交差点での立ち往生は絶対にしてはいけないぞ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8C, H'F0, H'8D, H'B7, H'93, H'5F, H'82, H'C5, H'82, H'CC, H'97, H'A7, H'82, H'BF, H'89, H'9D - .DATA.B H'90, H'B6, H'82, H'CD, H'3C, H'45, H'3E, H'90, H'E2, H'91, H'CE, H'82, H'C9, H'82, H'B5, H'82 - .DATA.B H'C4, H'82, H'CD, H'82, H'A2, H'82, H'AF, H'82, H'C8, H'82, H'A2, H'82, H'BC, H'00, H'00, H'00 -_const_8c037aa0: ; aggressive search - ;.SDATA "事故や渋滞を引き起こす危険があるからな…交差点は素早く通り抜けることだ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8E, H'96, H'8C, H'CC, H'82, H'E2, H'8F, H'61, H'91, H'D8, H'82, H'F0, H'88, H'F8, H'82, H'AB - .DATA.B H'8B, H'4E, H'82, H'B1, H'82, H'B7, H'8A, H'EB, H'8C, H'AF, H'82, H'AA, H'82, H'A0, H'82, H'E9 - .DATA.B H'82, H'A9, H'82, H'E7, H'82, H'C8, H'81, H'63, H'3C, H'45, H'3E, H'8C, H'F0, H'8D, H'B7, H'93 - .DATA.B H'5F, H'82, H'CD, H'91, H'66, H'91, H'81, H'82, H'AD, H'92, H'CA, H'82, H'E8, H'94, H'B2, H'82 - .DATA.B H'AF, H'82, H'E9, H'82, H'B1, H'82, H'C6, H'82, H'BE, H'00, H'00, H'00 -_const_8c037aec: ; aggressive search - ;.SDATA "コースを正しく走るこれが運転の基本だ" - ;.DATA.B H'00 - .DATA.B H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'F0, H'90, H'B3, H'82, H'B5, H'82, H'AD, H'91, H'96 - .DATA.B H'82, H'E9, H'3C, H'45, H'3E, H'82, H'B1, H'82, H'EA, H'82, H'AA, H'89, H'5E, H'93, H'5D, H'82 - .DATA.B H'CC, H'8A, H'EE, H'96, H'7B, H'82, H'BE, H'00 -_const_8c037b14: ; aggressive search - ;.SDATA "落ち着いて走れば逆走などするわけがない大事故になるので絶対にやめてくれよ" - ;.DATA.B H'00 - .DATA.B H'97, H'8E, H'82, H'BF, H'92, H'85, H'82, H'A2, H'82, H'C4, H'91, H'96, H'82, H'EA, H'82, H'CE - .DATA.B H'8B, H'74, H'91, H'96, H'82, H'C8, H'82, H'C7, H'82, H'B7, H'82, H'E9, H'82, H'ED, H'82, H'AF - .DATA.B H'82, H'AA, H'82, H'C8, H'82, H'A2, H'3C, H'45, H'3E, H'91, H'E5, H'8E, H'96, H'8C, H'CC, H'82 - .DATA.B H'C9, H'82, H'C8, H'82, H'E9, H'82, H'CC, H'82, H'C5, H'90, H'E2, H'91, H'CE, H'82, H'C9, H'82 - .DATA.B H'E2, H'82, H'DF, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00 -_const_8c037b60: ; aggressive search - ;.SDATA "基本的には、お客さんあってのバスだからね急発進などしないように気を付けよう" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8A, H'EE, H'96, H'7B, H'93, H'49, H'82, H'C9, H'82, H'CD, H'81, H'41, H'82, H'A8, H'8B, H'71 - .DATA.B H'82, H'B3, H'82, H'F1, H'82, H'A0, H'82, H'C1, H'82, H'C4, H'82, H'CC, H'83, H'6F, H'83, H'58 - .DATA.B H'82, H'BE, H'82, H'A9, H'82, H'E7, H'82, H'CB, H'3C, H'45, H'3E, H'8B, H'7D, H'94, H'AD, H'90 - .DATA.B H'69, H'82, H'C8, H'82, H'C7, H'82, H'B5, H'82, H'C8, H'82, H'A2, H'82, H'E6, H'82, H'A4, H'82 - .DATA.B H'C9, H'8B, H'43, H'82, H'F0, H'95, H'74, H'82, H'AF, H'82, H'E6, H'82, H'A4, H'00, H'00, H'00 -_const_8c037bb0: ; aggressive search - ;.SDATA "急ブレーキがあったようだな今度はお客さんの身になって運転してみるといい" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'8B, H'7D, H'83, H'75, H'83, H'8C, H'81, H'5B, H'83, H'4C, H'82, H'AA, H'82, H'A0, H'82, H'C1 - .DATA.B H'82, H'BD, H'82, H'E6, H'82, H'A4, H'82, H'BE, H'82, H'C8, H'3C, H'45, H'3E, H'8D, H'A1, H'93 - .DATA.B H'78, H'82, H'CD, H'82, H'A8, H'8B, H'71, H'82, H'B3, H'82, H'F1, H'82, H'CC, H'90, H'67, H'82 - .DATA.B H'C9, H'82, H'C8, H'82, H'C1, H'82, H'C4, H'89, H'5E, H'93, H'5D, H'82, H'B5, H'82, H'C4, H'82 - .DATA.B H'DD, H'82, H'E9, H'82, H'C6, H'82, H'A2, H'82, H'A2, H'00, H'00, H'00 -_const_8c037bfc: ; aggressive search - ;.SDATA "荒っぽい運転をすると立っているお客さんは大変だぞ" - ;.DATA.B H'00 - .DATA.B H'8D, H'72, H'82, H'C1, H'82, H'DB, H'82, H'A2, H'89, H'5E, H'93, H'5D, H'82, H'F0, H'82, H'B7 - .DATA.B H'82, H'E9, H'82, H'C6, H'3C, H'45, H'3E, H'97, H'A7, H'82, H'C1, H'82, H'C4, H'82, H'A2, H'82 - .DATA.B H'E9, H'82, H'A8, H'8B, H'71, H'82, H'B3, H'82, H'F1, H'82, H'CD, H'91, H'E5, H'95, H'CF, H'82 - .DATA.B H'BE, H'82, H'BC, H'00 -_const_8c037c30: ; aggressive search - ;.SDATA "もっと安全運転を心がけて急ハンドルなんてしないようにな" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'E0, H'82, H'C1, H'82, H'C6, H'88, H'C0, H'91, H'53, H'89, H'5E, H'93, H'5D, H'82, H'F0 - .DATA.B H'90, H'53, H'82, H'AA, H'82, H'AF, H'82, H'C4, H'3C, H'45, H'3E, H'8B, H'7D, H'83, H'6E, H'83 - .DATA.B H'93, H'83, H'68, H'83, H'8B, H'82, H'C8, H'82, H'F1, H'82, H'C4, H'82, H'B5, H'82, H'C8, H'82 - .DATA.B H'A2, H'82, H'E6, H'82, H'A4, H'82, H'C9, H'82, H'C8, H'00, H'00, H'00 -_const_8c037c6c: ; aggressive search - ;.SDATA "バスが停留所を通り過ぎてどうするんだ" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'83, H'6F, H'83, H'58, H'82, H'AA, H'92, H'E2, H'97, H'AF, H'8F, H'8A, H'82, H'F0, H'92, H'CA - .DATA.B H'82, H'E8, H'89, H'DF, H'82, H'AC, H'82, H'C4, H'82, H'C7, H'82, H'A4, H'82, H'B7, H'82, H'E9 - .DATA.B H'82, H'F1, H'82, H'BE, H'00, H'00, H'00, H'00 -_const_8c037c94: ; aggressive search - ;.SDATA "きちんと停留所情報を確認して必要な停留所では停車してくれよ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'82, H'AB, H'82, H'BF, H'82, H'F1, H'82, H'C6, H'92, H'E2, H'97, H'AF, H'8F, H'8A, H'8F, H'EE - .DATA.B H'95, H'F1, H'82, H'F0, H'8A, H'6D, H'94, H'46, H'82, H'B5, H'82, H'C4, H'3C, H'45, H'3E, H'95 - .DATA.B H'4B, H'97, H'76, H'82, H'C8, H'92, H'E2, H'97, H'AF, H'8F, H'8A, H'82, H'C5, H'82, H'CD, H'92 - .DATA.B H'E2, H'8E, H'D4, H'82, H'B5, H'82, H'C4, H'82, H'AD, H'82, H'EA, H'82, H'E6, H'00, H'00, H'00 -_const_8c037cd4: ; aggressive search - ;.SDATA "停留所の停車位置が良くなかったようだな" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'92, H'E2, H'97, H'AF, H'8F, H'8A, H'82, H'CC, H'92, H'E2, H'8E, H'D4, H'88, H'CA, H'92, H'75 - .DATA.B H'82, H'AA, H'97, H'C7, H'82, H'AD, H'82, H'C8, H'82, H'A9, H'82, H'C1, H'82, H'BD, H'82, H'E6 - .DATA.B H'82, H'A4, H'82, H'BE, H'82, H'C8, H'00, H'00 -_const_8c037cfc: ; aggressive search - ;.SDATA "今度からは、お客さんが乗り降りしやすいように、正確に停車してくれ" - ;.DATA.B H'00 - .DATA.B H'8D, H'A1, H'93, H'78, H'82, H'A9, H'82, H'E7, H'82, H'CD, H'81, H'41, H'82, H'A8, H'8B, H'71 - .DATA.B H'82, H'B3, H'82, H'F1, H'82, H'AA, H'8F, H'E6, H'82, H'E8, H'8D, H'7E, H'82, H'E8, H'3C, H'45 - .DATA.B H'3E, H'82, H'B5, H'82, H'E2, H'82, H'B7, H'82, H'A2, H'82, H'E6, H'82, H'A4, H'82, H'C9, H'81 - .DATA.B H'41, H'90, H'B3, H'8A, H'6D, H'82, H'C9, H'92, H'E2, H'8E, H'D4, H'82, H'B5, H'82, H'C4, H'82 - .DATA.B H'AD, H'82, H'EA, H'00 -_const_8c037d40: ; aggressive search - ;.SDATA "運転技術はもちろんのこと時間配分にも気を配ってくれ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'89, H'5E, H'93, H'5D, H'8B, H'5A, H'8F, H'70, H'82, H'CD, H'82, H'E0, H'82, H'BF, H'82, H'EB - .DATA.B H'82, H'F1, H'82, H'CC, H'82, H'B1, H'82, H'C6, H'3C, H'45, H'3E, H'8E, H'9E, H'8A, H'D4, H'94 - .DATA.B H'7A, H'95, H'AA, H'82, H'C9, H'82, H'E0, H'8B, H'43, H'82, H'F0, H'94, H'7A, H'82, H'C1, H'82 - .DATA.B H'C4, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00 -_const_8c037d78: ; aggressive search - ;.SDATA "バスの運転手がお客さんにしなければならないこととして、車内アナウンスは重要だぞ" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'83, H'6F, H'83, H'58, H'82, H'CC, H'89, H'5E, H'93, H'5D, H'8E, H'E8, H'82, H'AA, H'82, H'A8 - .DATA.B H'8B, H'71, H'82, H'B3, H'82, H'F1, H'82, H'C9, H'82, H'B5, H'82, H'C8, H'82, H'AF, H'82, H'EA - .DATA.B H'82, H'CE, H'82, H'C8, H'82, H'E7, H'82, H'C8, H'82, H'A2, H'3C, H'45, H'3E, H'82, H'B1, H'82 - .DATA.B H'C6, H'82, H'C6, H'82, H'B5, H'82, H'C4, H'81, H'41, H'8E, H'D4, H'93, H'E0, H'83, H'41, H'83 - .DATA.B H'69, H'83, H'45, H'83, H'93, H'83, H'58, H'82, H'CD, H'8F, H'64, H'97, H'76, H'82, H'BE, H'82 - .DATA.B H'BC, H'00, H'00, H'00 -_const_8c037dcc: ; aggressive search - ;.SDATA "ドアの開閉の確認は基本事項だぞ" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'83, H'68, H'83, H'41, H'82, H'CC, H'8A, H'4A, H'95, H'C2, H'82, H'CC, H'8A, H'6D, H'94, H'46 - .DATA.B H'82, H'CD, H'8A, H'EE, H'96, H'7B, H'8E, H'96, H'8D, H'80, H'82, H'BE, H'82, H'BC, H'00, H'00 -_const_8c037dec: ; aggressive search - ;.SDATA "但しストーリーモードで走ったコースに限るがな" - ;.DATA.B H'00 - .DATA.B H'92, H'41, H'82, H'B5, H'83, H'58, H'83, H'67, H'81, H'5B, H'83, H'8A, H'81, H'5B, H'83, H'82 - .DATA.B H'81, H'5B, H'83, H'68, H'82, H'C5, H'3C, H'45, H'3E, H'91, H'96, H'82, H'C1, H'82, H'BD, H'83 - .DATA.B H'52, H'81, H'5B, H'83, H'58, H'82, H'C9, H'8C, H'C0, H'82, H'E9, H'82, H'AA, H'82, H'C8, H'00 -_const_8c037e1c: ; aggressive search - ;.SDATA "さぁ、コースを選んでくれ" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'82, H'B3, H'82, H'9F, H'81, H'41, H'83, H'52, H'81, H'5B, H'83, H'58, H'82, H'F0, H'91, H'49 - .DATA.B H'82, H'F1, H'82, H'C5, H'82, H'AD, H'82, H'EA, H'00, H'00, H'00, H'00 -_const_8c037e38: ; from ghidra - ;.SDATA "corse_parts.dat" - ;.DATA.B H'00 - .DATA.B H'63, H'6F, H'72, H'73, H'65, H'5F, H'70, H'61, H'72, H'74, H'73, H'2E, H'64, H'61, H'74, H'00 -_const_8c037e48: ; aggressive search - ;.SDATA "course.dat" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'63, H'6F, H'75, H'72, H'73, H'65, H'2E, H'64, H'61, H'74, H'00, H'00 -_const_8c037e54: ; aggressive search - ;.SDATA "corse.pvm" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'63, H'6F, H'72, H'73, H'65, H'2E, H'70, H'76, H'6D, H'00, H'00, H'00 -_const_8c037e60: ; from defines - ;.SDATA "ロードに失敗しました" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'83, H'8D, H'81, H'5B, H'83, H'68, H'82, H'C9, H'8E, H'B8, H'94, H'73, H'82, H'B5, H'82, H'DC - .DATA.B H'82, H'B5, H'82, H'BD, H'00, H'00, H'00, H'00 -_const_8c037e78: ; from defines - ;.SDATA "新たにファイルを作成しますよろしいですか?" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'90, H'56, H'82, H'BD, H'82, H'C9, H'83, H'74, H'83, H'40, H'83, H'43, H'83, H'8B, H'82, H'F0 - .DATA.B H'8D, H'EC, H'90, H'AC, H'82, H'B5, H'82, H'DC, H'82, H'B7, H'3C, H'45, H'3E, H'82, H'E6, H'82 - .DATA.B H'EB, H'82, H'B5, H'82, H'A2, H'82, H'C5, H'82, H'B7, H'82, H'A9, H'81, H'48, H'00, H'00, H'00 -_const_8c037ea8: ; from defines - ;.SDATA "このファイルでよろしいですか?" - ;.DATA.B H'00 - ;.RES.B 1 - .DATA.B H'82, H'B1, H'82, H'CC, H'83, H'74, H'83, H'40, H'83, H'43, H'83, H'8B, H'82, H'C5, H'82, H'E6 - .DATA.B H'82, H'EB, H'82, H'B5, H'82, H'A2, H'82, H'C5, H'82, H'B7, H'82, H'A9, H'81, H'48, H'00, H'00 -_const_8c037ec8: ; from defines - .DATA.B H'00, H'00, H'00, H'00 -_const_8c037ecc: ; from defines - ;.SDATA "ロード実行中です電源を切らないで下さい" - ;.DATA.B H'00 - ;.RES.B 2 - .DATA.B H'83, H'8D, H'81, H'5B, H'83, H'68, H'8E, H'C0, H'8D, H'73, H'92, H'86, H'82, H'C5, H'82, H'B7 - .DATA.B H'3C, H'45, H'3E, H'93, H'64, H'8C, H'B9, H'82, H'F0, H'90, H'D8, H'82, H'E7, H'82, H'C8, H'82 - .DATA.B H'A2, H'82, H'C5, H'89, H'BA, H'82, H'B3, H'82, H'A2, H'00, H'00, H'00 -_const_8c037ef8: ; from defines - ;.SDATA "よろしいですか?" - ;.DATA.B H'00 - ;.RES.B 3 - .DATA.B H'82, H'E6, H'82, H'EB, H'82, H'B5, H'82, H'A2, H'82, H'C5, H'82, H'B7, H'82, H'A9, H'81, H'48 - .DATA.B H'00, H'00, H'00, H'00 -_const_8c037f0c: ; from defines - ;.SDATA "ファイルを設定しないとセーブできませんこのままゲームを開始してもよろしいですか?" - ;.DATA.B H'00 - .DATA.B H'83, H'74, H'83, H'40, H'83, H'43, H'83, H'8B, H'82, H'F0, H'90, H'DD, H'92, H'E8, H'82, H'B5 - .DATA.B H'82, H'C8, H'82, H'A2, H'82, H'C6, H'83, H'5A, H'81, H'5B, H'83, H'75, H'82, H'C5, H'82, H'AB - .DATA.B H'82, H'DC, H'82, H'B9, H'82, H'F1, H'3C, H'45, H'3E, H'82, H'B1, H'82, H'CC, H'82, H'DC, H'82 - .DATA.B H'DC, H'83, H'51, H'81, H'5B, H'83, H'80, H'82, H'F0, H'8A, H'4A, H'8E, H'6E, H'82, H'B5, H'82 - .DATA.B H'C4, H'82, H'E0, H'82, H'E6, H'82, H'EB, H'82, H'B5, H'82, H'A2, H'82, H'C5, H'82, H'B7, H'82 - .DATA.B H'A9, H'81, H'48, H'00 _const_8c037f60: ; from ghidra ;.SDATA "TOKYOBUS.001" ;.DATA.B H'00 diff --git a/src/asm/03bd80_sectionD.src b/src/asm/03bd80_sectionD.src index 04dc9c4..13ec2aa 100644 --- a/src/asm/03bd80_sectionD.src +++ b/src/asm/03bd80_sectionD.src @@ -1,9 +1,9 @@ -; 8c03bd80 +; 8c03bd80 .IMPORT _FUN_8c016636 .IMPORT _FUN_8c0167c0 .IMPORT _FUN_8c016b4c .IMPORT _FUN_8c0184cc - .IMPORT _FUN_8c01a09a + .IMPORT _switchToMainMenuTask_8c01a09a .IMPORT _FUN_8c01a3c0 .IMPORT _FUN_8c01a89c .IMPORT _FUN_8c01afd8 @@ -805,32 +805,18 @@ .IMPORT _const_8c03b950 .IMPORT _const_8c03b95c .IMPORT _const_8c03b968 - .EXPORT _init_8c044128 - .EXPORT _init_8c04413c - .EXPORT _init_8c044154 + .EXPORT _init_8c044128 ; 014f54 + .EXPORT _init_8c04413c ; 014f54 + .EXPORT _init_8c044154 ; 014f54 .EXPORT _init_8c044158 .EXPORT _init_8c04415c - .EXPORT _init_8c044264 - .EXPORT _init_8c044274 - .EXPORT _init_8c044284 - .EXPORT _init_8c044294 - .EXPORT _init_8c04429c - .EXPORT _init_8c0442b0 - .EXPORT _init_8c04442c - .EXPORT _init_8c044430 - .EXPORT _init_8c04443c - .EXPORT _init_8c04444c - .EXPORT _init_8c044468 - .EXPORT _init_8c044484 - .EXPORT _init_8c04449c - .EXPORT _init_8c0444b8 - .EXPORT _init_8c0444bc - .EXPORT _init_8c0444f4 + .EXPORT _init_8c044264 ; 016d2c + .EXPORT _init_8c044274 ; 01e27c + .EXPORT _init_8c044284 ; 01e27c + .EXPORT _init_8c044294 ; 01614c + .EXPORT _init_8c04429c ; 01614c + .EXPORT _init_8c04442c ; 016d2c .EXPORT _titleResourceGroup_8c044254 - .EXPORT _init_8c044544 - .EXPORT _init_8c0445d0 - .EXPORT _init_8c044620 - .EXPORT _init_8c044650 .EXPORT _init_8c044680 .EXPORT _init_8c0446b8 .EXPORT _init_8c0446e0 @@ -900,10 +886,9 @@ .EXPORT _init_8c044d2e .EXPORT _init_8c044d2f .EXPORT _init_8c044d40 - .EXPORT _saveNames_8c044d50 - .EXPORT _init_8c044d7c - .EXPORT _init_8c044d80 - .EXPORT _init_8c044dc4 + .EXPORT _init_saveNames_8c044d50 + .EXPORT _init_vmIconsPositions_8c044d7c + .EXPORT _init_vmuStatusMessages_8c044dc4 .EXPORT _init_8c044de0 .EXPORT _init_8c044de8 .EXPORT _init_8c044dec @@ -2365,7 +2350,7 @@ _init_8c044d40: ; from defines .DATA.L _const_8c037e48 ; ukn .DATA.L _const_8c037e54 ; ukn .DATA.B H'04, H'00, H'00, H'00 -_saveNames_8c044d50: ; from defines +_init_saveNames_8c044d50: ; from defines .DATA.L _const_8c037f60 ; ukn .DATA.L _const_8c037f70 ; ukn .DATA.L _const_8c037f80 ; ukn @@ -2377,15 +2362,14 @@ _saveNames_8c044d50: ; from defines .DATA.L _const_8c037fe0 ; ukn .DATA.L _const_8c037ff0 ; ukn .DATA.L _const_8c038000 ; ukn -_init_8c044d7c: ; from defines +_init_vmIconsPositions_8c044d7c: ; from defines .DATA.B H'00, H'00, H'39, H'43 -_init_8c044d80: ; from ghidra .DATA.B H'00, H'00, H'C4, H'42, H'00, H'00, H'7F, H'43, H'00, H'00, H'C4, H'42, H'00, H'80, H'A2, H'43 .DATA.B H'00, H'00, H'C4, H'42, H'00, H'80, H'C5, H'43, H'00, H'00, H'C4, H'42, H'00, H'00, H'16, H'43 .DATA.B H'00, H'00, H'42, H'43, H'00, H'00, H'5C, H'43, H'00, H'00, H'42, H'43, H'00, H'00, H'91, H'43 .DATA.B H'00, H'00, H'42, H'43, H'00, H'00, H'B4, H'43, H'00, H'00, H'42, H'43, H'00, H'00, H'D7, H'43 .DATA.B H'00, H'00, H'42, H'43 -_init_8c044dc4: ; from defines +_init_vmuStatusMessages_8c044dc4: ; from defines .DATA.B H'00, H'00, H'00, H'00 .DATA.L _const_8c038004 ; ukn .DATA.L _const_8c038014 ; ukn @@ -2411,7 +2395,7 @@ _init_8c044e28: ; from defines .DATA.L _FUN_8c01a3c0 ; ukn .DATA.L _FUN_8c01a89c ; ukn .DATA.L _FUN_8c01afd8 ; ukn - .DATA.L _FUN_8c01a09a ; ukn + .DATA.L _switchToMainMenuTask_8c01a09a ; ukn _init_8c044e38: ; from defines .DATA.L _var_8c2260ac ; ukn .DATA.L _var_8c2260b8 ; ukn diff --git a/src/asm/0fcd20_sectionB.src b/src/asm/0fcd20_sectionB.src index e391784..33d54ac 100644 --- a/src/asm/0fcd20_sectionB.src +++ b/src/asm/0fcd20_sectionB.src @@ -1,55 +1,54 @@ ; 8c0fcd20 .EXPORT _var_tex_8c157af8 - .EXPORT _var_fogTable_8c18aaf8 - .EXPORT _var_texname_8c18acf8 - .EXPORT _var_8c18ad04 - .EXPORT _var_8c18ad08 - .EXPORT _var_8c18ad0c - .EXPORT _var_8c18ad10 - .EXPORT _var_gdErr_8c18ad14 - .EXPORT _var_8c18ad18 - .EXPORT _var_8c18ad1c - .EXPORT _var_8c18ad20 - .EXPORT _var_8c18ad24 - .EXPORT _var_8c18ad28 - .EXPORT _var_8c18ad2c - .EXPORT _var_8c18ad4c - .EXPORT _var_8c18ad6c - .EXPORT _var_8c18ad8c - .EXPORT _var_8c18adac - .EXPORT _var_8c18adb0 - .EXPORT _var_8c18adb4 - .EXPORT _gMapleRecvBuf - .EXPORT _gMapleSendBuf - .EXPORT _gdfswork - .EXPORT _gdfscurdir - .EXPORT _var_8c1ba1c8 - .EXPORT _var_8c1ba1cc + .EXPORT _var_fogTable_8c18aaf8 ; 012f44 + .EXPORT _var_texname_8c18acf8 ; 012f44 + .EXPORT _var_8c18ad04 ; 0129cc + .EXPORT _var_8c18ad08 ; 0129cc + .EXPORT _var_8c18ad0c ; 0129cc + .EXPORT _var_8c18ad10 ; 0129cc + .EXPORT _var_gdErr_8c18ad14 ; 012f44 + .EXPORT _var_8c18ad18 ; 013ae8 + .EXPORT _var_8c18ad1c ; 013ae8 + .EXPORT _var_8c18ad20 ; 013ae8 + .EXPORT _var_8c18ad24 ; 013ae8 + .EXPORT _var_8c18ad28 ; 013ae8 + .EXPORT _var_8c18ad2c ; 013ae8 + .EXPORT _var_8c18ad4c ; 013ae8 + .EXPORT _var_8c18ad6c ; 013ae8 + .EXPORT _var_8c18ad8c ; 013ae8 + .EXPORT _var_8c18adac ; 013ae8 + .EXPORT _var_8c18adb0 ; 013ae8 + .EXPORT _var_8c18adb4 ; 013ae8 + .EXPORT _gMapleRecvBuf ; 0149b0 + .EXPORT _gMapleSendBuf ; 0149b0 + .EXPORT _gdfswork ; 0149b0 + .EXPORT _gdfscurdir ; 0149b0 + .EXPORT _var_8c1ba1c8 ; 014f54 + .EXPORT _var_8c1ba1cc ; 016d2c .EXPORT _var_8c1ba1d0 .EXPORT _var_8c1ba1e4 - .EXPORT _var_8c1ba210 - .EXPORT _var_8c1ba25c - .EXPORT _var_8c1ba264 - .EXPORT _var_8c1ba290 - .EXPORT _var_8c1ba291 - .EXPORT _var_8c1ba292 + .EXPORT _var_8c1ba210 ; 016d2c + .EXPORT _var_8c1ba25c ; 016d2c + .EXPORT _var_8c1ba264 ; 01e27c + .EXPORT _var_8c1ba290 ; 013ae8 + .EXPORT _var_8c1ba291 ; 012f44 + .EXPORT _var_8c1ba292 ; 012f44 .EXPORT _var_8c1ba293 .EXPORT _var_8c1ba29c .EXPORT _var_8c1ba29d .EXPORT _var_8c1ba2b4 - .EXPORT _var_8c1ba2b8 - .EXPORT _var_8c1ba2cc - .EXPORT _var_8c1ba2e0 - .EXPORT _var_8c1ba2e4 - .EXPORT _var_8c1ba33c - .EXPORT _var_8c1ba344 - .EXPORT _var_8c1ba348 - .EXPORT _var_8c1ba34c + .EXPORT _var_8c1ba2b8 ; 016d2c + .EXPORT _var_8c1ba2cc ; 016d2c + .EXPORT _var_8c1ba2e0 ; 018784 + .EXPORT _var_8c1ba2e4 ; 018644 + .EXPORT _var_8c1ba33c ; 018644 + .EXPORT _var_8c1ba344 ; 018784 + .EXPORT _var_8c1ba348 ; 018644 + .EXPORT _var_selectedVm_8c1ba34c .EXPORT _var_8c1ba350 .EXPORT _var_vibport_8c1ba354 .EXPORT _var_8c1ba358 - .EXPORT _peripheral_8c1ba35c - .EXPORT _var_8c1ba36c + .EXPORT _var_peripheral_8c1ba35c .EXPORT _var_8c1ba374 .EXPORT _var_8c1ba376 .EXPORT _var_8c1ba3c4 @@ -185,7 +184,7 @@ .EXPORT _var_8c226010 .EXPORT _var_8c226014 .EXPORT _var_8c226018 - .EXPORT _var_8c226048 + .EXPORT _var_vmuStatus_8c226048 .EXPORT _var_8c22606c .EXPORT _var_soundMode_8c226070 .EXPORT _var_8c226074 @@ -505,7 +504,7 @@ _var_8c1ba344: .RES.B 4 _var_8c1ba348: .RES.B 4 -_var_8c1ba34c: +_var_selectedVm_8c1ba34c: .RES.B 4 _var_8c1ba350: .RES.B 4 @@ -513,10 +512,8 @@ _var_vibport_8c1ba354: .RES.B 4 _var_8c1ba358: .RES.B 4 -_peripheral_8c1ba35c: - .RES.B 16 -_var_8c1ba36c: - .RES.B 8 +_var_peripheral_8c1ba35c: + .RES.B 24 _var_8c1ba374: .RES.B 2 _var_8c1ba376: @@ -787,7 +784,7 @@ _var_8c226014: .RES.B 4 _var_8c226018: .RES.B 48 -_var_8c226048: +_var_vmuStatus_8c226048: .RES.B 36 _var_8c22606c: .RES.B 4 diff --git a/src/asm/decompiled/012f44.src b/src/asm/decompiled/012f44.src index 988d661..5b4190f 100644 --- a/src/asm/decompiled/012f44.src +++ b/src/asm/decompiled/012f44.src @@ -140,7 +140,7 @@ .IMPORT _var_8c225fb0 .IMPORT _var_8c1ba3c4 .IMPORT _var_8c1bc454 - .IMPORT _var_8c1ba34c + .IMPORT _var_selectedVm_8c1ba34c .IMPORT _var_8c1bb8d8 .IMPORT _var_8c157a6c .IMPORT _FUN_8c01c8dc @@ -1196,7 +1196,7 @@ LP_GEN_90231: .DATA.L _var_8c225fb0 .DATA.L _var_8c1ba3c4 .DATA.L _var_8c1bc454 - .DATA.L _var_8c1ba34c + .DATA.L _var_selectedVm_8c1ba34c .DATA.L _var_8c1bb8c4 .DATA.L _var_8c1bb8d8 .DATA.L _var_8c157a6c diff --git a/src/asm/decompiled/015ab8_title.src b/src/asm/decompiled/015ab8_title.src index 0405dc9..228f3dc 100644 --- a/src/asm/decompiled/015ab8_title.src +++ b/src/asm/decompiled/015ab8_title.src @@ -5,18 +5,18 @@ .IMPORT _pushTask_8c014ae8 .IMPORT _getUknPvmBool_8c01432a .IMPORT _freeQueues_8c011f7e - .IMPORT _FUN_8c01940e + .IMPORT _VmMenuMountVms_1940e .IMPORT _push_fadein_8c022a9c .IMPORT _var_midiHandles_8c0fcd28 .IMPORT _isFading_8c226568 .IMPORT _drawSprite_8c014f54 .IMPORT _push_fadeout_8c022b60 - .IMPORT _saveNames_8c044d50 + .IMPORT _init_saveNames_8c044d50 .IMPORT _init_8c03bd80 .IMPORT _var_8c1bb8c4 .IMPORT _titleResourceGroup_8c044254 .IMPORT _menuState_8c1bc7a8 - .IMPORT _peripheral_8c1ba35c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _var_tasks_8c1ba3c8 .IMPORT _task_8c012f44 .IMPORT _var_tex_8c157af8 @@ -25,8 +25,8 @@ .IMPORT _nop_8c011120 .IMPORT _resetUknPvmBool_8c014322 .IMPORT _var_8c225fb0 - .IMPORT _FUN_8c019550 - .IMPORT _setMenuTaskAction_8c019e44 + .IMPORT _VmMenuUpdateVmusStatus_19550 + .IMPORT _VmMenuSwitchFromTask_19e44 .IMPORT _FUN_8c016182 .IMPORT _FUN_8c0159ac .IMPORT _resetQueues_8c011f6c @@ -64,7 +64,7 @@ _task_title_8c015ab8: ; function: task_title_8c015ab8 MOVA L3+10,R0 MOV #11,R3 MOV.L L3+26,R12; _isFading_8c226568 - MOV.L L3+22,R9 ; _peripheral_8c1ba35c + MOV.L L3+22,R9 ; _var_peripheral_8c1ba35c FMOV.S @R0,FR14 MOV.L R4,@R15 MOV.L @(24,R14),R4 @@ -116,7 +116,7 @@ L3: .DATA.L H'C0A00000 ; -5.0 H'8c015b40 .DATA.L _drawSprite_8c014f54 .DATA.L _menuState_8c1bc7a8 - .DATA.L _peripheral_8c1ba35c + .DATA.L _var_peripheral_8c1ba35c .DATA.L _isFading_8c226568 ; H'8c015b50 .DATA.L _var_midiHandles_8c0fcd28 .DATA.L _sdMidiPlay @@ -153,7 +153,7 @@ L6: MOV.L L37+4,R3;freeQueues_8c011f7e JSR @R3 NOP - MOV.L L37+8,R2;FUN_8c01940e + MOV.L L37+8,R2;VmMenuMountVms_1940e JSR @R2 NOP MOV.L @R15,R3 @@ -467,12 +467,12 @@ L36: L37: .DATA.L _getUknPvmBool_8c01432a ; H'8c015dcc .DATA.L _freeQueues_8c011f7e ; H'8c015dd0 - .DATA.L _FUN_8c01940e + .DATA.L _VmMenuMountVms_1940e .DATA.L H'FF000000 .DATA.L _njSetBackColor .DATA.L _FUN_8c012984 ; H'8c015de0 - .DATA.L _saveNames_8c044d50 - .DATA.L _FUN_8c019550 + .DATA.L _init_saveNames_8c044d50 + .DATA.L _VmMenuUpdateVmusStatus_19550 .DATA.L _var_midiHandles_8c0fcd28 .DATA.L _sdMidiPlay ; H'8c015df0 .DATA.L H'44200000 ; 640.0 @@ -644,11 +644,11 @@ L48: .DATA.L _FUN_8c010bae ; H'8c015f38 .DATA.L _var_midiHandles_8c0fcd28 .DATA.L _sdMidiPlay ; H'8c015f40 - .DATA.L _saveNames_8c044d50 - .DATA.L _FUN_8c019550 + .DATA.L _init_saveNames_8c044d50 + .DATA.L _VmMenuUpdateVmusStatus_19550 .DATA.L _init_8c03bd80 .DATA.L _var_8c1bb8c4 ; H'8c015f50 - .DATA.L _setMenuTaskAction_8c019e44 + .DATA.L _VmMenuSwitchFromTask_19e44 .DATA.L _FUN_8c016182 .DATA.L _FUN_8c0159ac diff --git a/src/asm/decompiled/016c58.src b/src/asm/decompiled/016c58_prompt.src similarity index 86% rename from src/asm/decompiled/016c58.src rename to src/asm/decompiled/016c58_prompt.src index ebad5a1..59495dd 100644 --- a/src/asm/decompiled/016c58.src +++ b/src/asm/decompiled/016c58_prompt.src @@ -1,11 +1,11 @@ ; 8c016c58 .IMPORT _sdMidiPlay .IMPORT _var_midiHandles_8c0fcd28 - .IMPORT _peripheral_8c1ba35c - .EXPORT _cycleOptionAndPlaySound_8c016c58 - .EXPORT _processNavInputAndPlaySound_8c016caa + .IMPORT _var_peripheral_8c1ba35c + .EXPORT _promptHandleMultiple_16c58 + .EXPORT _promptHandleBinary_16caa .SECTION P,CODE,ALIGN=4 -_cycleOptionAndPlaySound_8c016c58: ; function: cycleOptionAndPlaySound_8c016c58 +_promptHandleMultiple_16c58: ; function: promptHandleMultiple_16c58 ; frame size=12 MOV.L R14,@-R15 STS.L PR,@-R15 @@ -51,7 +51,7 @@ L2: LDS.L @R15+,PR RTS MOV.L @R15+,R14 -_processNavInputAndPlaySound_8c016caa: +_promptHandleBinary_16caa: MOV.L R14,@-R15 MOV R4,R14 MOV.L R13,@-R15 @@ -117,8 +117,8 @@ L9: MOV.L @R15+,R14 L10: .DATA.W H'0080 ; H'8C016D1A - .DATA.L H'00000010+_peripheral_8c1ba35c ; H'8C016D1C + .DATA.L H'00000010+_var_peripheral_8c1ba35c ; H'8C016D1C .DATA.L _var_midiHandles_8c0fcd28 ; H'8C016D20 .DATA.L _sdMidiPlay ; H'8C016D24 - .DATA.L _peripheral_8c1ba35c ; H'8C016D28 + .DATA.L _var_peripheral_8c1ba35c ; H'8C016D28 .END diff --git a/src/asm/0193c8.src b/src/asm/decompiled/0193c8_vm_menu.src similarity index 92% rename from src/asm/0193c8.src rename to src/asm/decompiled/0193c8_vm_menu.src index 356e56d..d74572b 100644 --- a/src/asm/0193c8.src +++ b/src/asm/decompiled/0193c8_vm_menu.src @@ -11,49 +11,50 @@ .IMPORT _ClearInfo_8c014c8a .IMPORT _gBupInfo_8c1bc4ac .IMPORT _buIsExistFile - .IMPORT _var_8c226048 - .IMPORT _init_8c044d7c + .IMPORT _var_vmuStatus_8c226048 + .IMPORT _init_vmIconsPositions_8c044d7c .IMPORT _menuState_8c1bc7a8 .IMPORT _drawSprite_8c014f54 .IMPORT _isFading_8c226568 - .IMPORT _saveNames_8c044d50 + .IMPORT _init_saveNames_8c044d50 .IMPORT __quick_evn_mvn - .IMPORT _init_8c044dc4 - .IMPORT _FUN_8c02aefc + .IMPORT _init_vmuStatusMessages_8c044dc4 + .IMPORT _swapMessageBoxFor_8c02aefc .IMPORT _FUN_8c010d8a .IMPORT _snd_8c010cd6 .IMPORT _push_fadein_8c022a9c .IMPORT _var_midiHandles_8c0fcd28 - .IMPORT _var_8c1ba36c + .IMPORT _var_peripheral_8c1ba35c .IMPORT _sdMidiPlay - .IMPORT _const_8c037ef8 - .IMPORT _const_8c037f0c - .IMPORT _FUN_8c016d2c - .IMPORT _processNavInputAndPlaySound_8c016caa - .IMPORT _var_8c1ba34c + .IMPORT _interpolated_8c016d2c + .IMPORT _promptHandleBinary_16caa + .IMPORT _var_selectedVm_8c1ba34c .IMPORT _push_fadeout_8c022b60 .IMPORT _FUN_8c01895e .IMPORT _FUN_8c010bae .IMPORT _menuTextboxText_8c02af1c .IMPORT _FUN_8c019334 .IMPORT _init_8c03bd80 - .IMPORT _FUN_8c01a09a + .IMPORT _switchToMainMenuTask_8c01a09a .IMPORT _setTaskAction_8c014b3e - .EXPORT _FUN_8c0193c8 - .EXPORT _FUN_8c01940e - .EXPORT _task_8c01946a - .EXPORT _FUN_8c0194de - .EXPORT _FUN_8c019504 - .EXPORT _FUN_8c019550 - .EXPORT _FUN_8c01967c - .EXPORT _FUN_8c019730 - .EXPORT _FUN_8c019788 - .EXPORT _FUN_8c0197c0 - .EXPORT _FUN_8c019852 - .EXPORT _task_menu_8c0198a0 - .EXPORT _setMenuTaskAction_8c019e44 + .EXPORT _VmMenuMountVms_1940e + .EXPORT _VmMenuUnmountVms_194de + .EXPORT _VmMenuFreeAndClear_19504 + .EXPORT _VmMenuUpdateVmusStatus_19550 + .EXPORT _VmMenuUpdateVmuStatus_1967c + .EXPORT _VmMenuSwitchFromTask_19e44 + + .AIFDEF UNIT_TESTING + .EXPORT _TaskWaitForVmsReady_193c8 + .EXPORT _TaskUnmountVms_1946a + .EXPORT _saveFileExists_19730 + .EXPORT _initCursorLerp_19788 + .EXPORT _drawVmMenu_197c0 + .EXPORT _DrawVmWarning_19852 + .EXPORT _VmMenuTask_198a0 + .AENDI .SECTION P, CODE, ALIGN=4 -_FUN_8c0193c8: +_TaskWaitForVmsReady_193c8: MOV.L R14,@-R15 MOV.L R13,@-R15 MOV.L R12,@-R15 @@ -93,7 +94,7 @@ LAB_8c019402: MOV.L @R15+,R13 RTS MOV.L @R15+,R14 -_FUN_8c01940e: +_VmMenuMountVms_1940e: MOV.L R14,@-R15 MOV.L R13,@-R15 MOV.L R12,@-R15 @@ -142,7 +143,7 @@ LAB_8c01943c: MOV.L @R15+,R13 RTS MOV.L @R15+,R14 -_task_8c01946a: +_TaskUnmountVms_1946a: MOV.L R14,@-R15 MOV.L R13,@-R15 MOV.L R12,@-R15 @@ -206,7 +207,7 @@ LAB_8c0194ca: MOV.L @R15+,R13 RTS MOV.L @R15+,R14 -_FUN_8c0194de: +_VmMenuUnmountVms_194de: STS.L PR,@-R15 ADD #-H'8,R15 MOV #H'0,R1 @@ -226,7 +227,7 @@ _FUN_8c0194de: LDS.L @R15+,PR RTS NOP -_FUN_8c019504: +_VmMenuFreeAndClear_19504: MOV.L R14,@-R15 MOV.L R13,@-R15 MOV.L R12,@-R15 @@ -268,7 +269,7 @@ LAB_8c01953a: MOV.L @R15+,R13 RTS MOV.L @R15+,R14 -_FUN_8c019550: +_VmMenuUpdateVmusStatus_19550: MOV.L R14,@-R15 MOV.L R13,@-R15 MOV.L R12,@-R15 @@ -314,12 +315,12 @@ LP_GEN_33095: .DATA.L _freeTask_8c014b66 ; H'8C0195A0 .DATA.L _var_8c22606c ; H'8C0195A4 .DATA.L _BupMount_8c014c00 ; H'8C0195A8 - .DATA.L _FUN_8c0193c8 ; H'8C0195AC + .DATA.L _TaskWaitForVmsReady_193c8 ; H'8C0195AC .DATA.L _var_tasks_8c1ba3c8 ; H'8C0195B0 .DATA.L _pushTask_8c014ae8 ; H'8C0195B4 .DATA.L _BupUnmount_8c014c46 ; H'8C0195B8 .DATA.L _buStat ; H'8C0195BC - .DATA.L _task_8c01946a ; H'8C0195C0 + .DATA.L _TaskUnmountVms_1946a ; H'8C0195C0 .DATA.L _syFree ; H'8C0195C4 .DATA.L _ClearInfo_8c014c8a ; H'8C0195C8 .DATA.L _gBupInfo_8c1bc4ac ; H'8C0195CC @@ -420,8 +421,8 @@ LP_GEN_86643: .DATA.W H'FF03 ; H'8C019670 .RES.W 1 ; H'8C019672 .DATA.L _buIsExistFile ; H'8C019674 - .DATA.L _var_8c226048 ; H'8C019678 -_FUN_8c01967c: + .DATA.L _var_vmuStatus_8c226048 ; H'8C019678 +_VmMenuUpdateVmuStatus_1967c: MOV.L R14,@-R15 MOV.L R13,@-R15 MOV.L R12,@-R15 @@ -524,7 +525,7 @@ LAB_8c019722: MOV.L @R15+,R13 RTS MOV.L @R15+,R14 -_FUN_8c019730: +_saveFileExists_19730: STS.L PR,@-R15 ADD #-H'8,R15 MOV.L LP_GEN_27799+4,R3 @@ -564,10 +565,10 @@ LP_GEN_27799: .DATA.W H'FF03 ; H'8C019774 .RES.W 1 ; H'8C019776 .DATA.L _BupGetInfo_8c014bba ; H'8C019778 - .DATA.L _var_8c226048 ; H'8C01977C + .DATA.L _var_vmuStatus_8c226048 ; H'8C01977C .DATA.L _BupMount_8c014c00 ; H'8C019780 .DATA.L _buIsExistFile ; H'8C019784 -_FUN_8c019788: +_initCursorLerp_19788: MOV R4,R5 MOV.L LP_GEN_31723+2,R3 SHLL2 R5 @@ -596,7 +597,7 @@ _FUN_8c019788: FDIV FR6,FR5 RTS FMOV FR5,@(R0,R4) -_FUN_8c0197c0: +_drawVmMenu_197c0: MOV.L R14,@-R15 MOVA LP_GEN_31723+18,R0 MOV.L R13,@-R15 @@ -672,7 +673,7 @@ LAB_8c01980c: MOV.L @R15+,R13 RTS MOV.L @R15+,R14 -_FUN_8c019852: +_DrawVmWarning_19852: MOV.L R14,@-R15 MOVA LP_GEN_31723+26,R0 MOV.L R13,@-R15 @@ -712,7 +713,7 @@ _FUN_8c019852: MOV.L @R15+,R13 RTS MOV.L @R15+,R14 -_task_menu_8c0198a0: +_VmMenuTask_198a0: MOV.L R14,@-R15 MOV.L R13,@-R15 MOV.L R12,@-R15 @@ -804,7 +805,7 @@ LAB_8c019930: NOP LAB_8c019940: MOV.L LP_GEN_31723+54,R4 - BSR _FUN_8c019550 + BSR _VmMenuUpdateVmusStatus_19550 MOV #H'3,R5 TST R0,R0 BT LAB_8c019992 @@ -820,7 +821,7 @@ LAB_8c019954: MOV.L @(R0,R13),R3 TST R3,R3 BT LAB_8c019952 - BSR _FUN_8c019788 + BSR _initCursorLerp_19788 MOV R14,R4 MOV R12,R2 MOV.L LP_GEN_31723+58,R3 @@ -879,7 +880,7 @@ LAB_8c0199c4: BRA LAB_8c019e24 MOV.L R3,@(H'18,R12) LAB_8c0199ca: - BSR _FUN_8c019550 + BSR _VmMenuUpdateVmusStatus_19550 MOV #H'3,R5 MOV.L LP_GEN_31723+82,R2 MOV.L R2,@R15 @@ -891,12 +892,12 @@ LAB_8c0199ca: MOV R9,R14 LP_GEN_31723: .RES.W 1 ; H'8C0199DE - .DATA.L _init_8c044d7c ; H'8C0199E0 + .DATA.L _init_vmIconsPositions_8c044d7c ; H'8C0199E0 .DATA.L _menuState_8c1bc7a8 ; H'8C0199E4 .DATA.L H'40C00000 ; H'8C0199E8 .DATA.L _drawSprite_8c014f54 ; H'8C0199EC .DATA.L H'C0800000 ; H'8C0199F0 - .DATA.L _var_8c226048 ; H'8C0199F4 + .DATA.L _var_vmuStatus_8c226048 ; H'8C0199F4 .DATA.L H'C0A00000 ; H'8C0199F8 .DATA.L H'C0C00000 ; H'8C0199FC .DATA.L H'C089999A ; H'8C019A00 @@ -904,10 +905,10 @@ LP_GEN_31723: .DATA.L H'43980000 ; H'8C019A08 .DATA.L H'43640000 ; H'8C019A0C .DATA.L _isFading_8c226568 ; H'8C019A10 - .DATA.L _saveNames_8c044d50 ; H'8C019A14 + .DATA.L _init_saveNames_8c044d50 ; H'8C019A14 .DATA.L __quick_evn_mvn ; H'8C019A18 - .DATA.L _init_8c044dc4 ; H'8C019A1C - .DATA.L _FUN_8c02aefc ; H'8C019A20 + .DATA.L _init_vmuStatusMessages_8c044dc4 ; H'8C019A1C + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C019A20 .DATA.L _FUN_8c010d8a ; H'8C019A24 .DATA.L _snd_8c010cd6 ; H'8C019A28 .DATA.L _push_fadein_8c022a9c ; H'8C019A2C @@ -1123,7 +1124,7 @@ LAB_8c019b8c: MOV #H'3,R6 JSR @R3 MOV.L @R4,R4 - BSR _FUN_8c019788 + BSR _initCursorLerp_19788 MOV R14,R4 MOV R14,R0 SHLL2 R0 @@ -1152,21 +1153,21 @@ LAB_8c019bba: JSR @R3 MOV.L @(R0,R4),R4 LAB_8c019bd6: - BSR _FUN_8c0197c0 + BSR _drawVmMenu_197c0 NOP BRA LAB_8c019ca2 MOV #H'20,R4 LP_GEN_27695: .RES.W 1 ; H'8C019BDE - .DATA.L _var_8c1ba36c ; H'8C019BE0 + .DATA.L H'10+_var_peripheral_8c1ba35c ; H'8C019BE0 .DATA.L _sdMidiPlay ; H'8C019BE4 .DATA.L _const_8c037ef8 ; H'8C019BE8 - .DATA.L _FUN_8c02aefc ; H'8C019BEC + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C019BEC .DATA.L _BupGetInfo_8c014bba ; H'8C019BF0 .DATA.L _const_8c037f0c ; H'8C019BF4 .DATA.L _var_midiHandles_8c0fcd28 ; H'8C019BF8 - .DATA.L _init_8c044dc4 ; H'8C019BFC - .DATA.L _FUN_8c016d2c ; H'8C019C00 + .DATA.L _init_vmuStatusMessages_8c044dc4 ; H'8C019BFC + .DATA.L _interpolated_8c016d2c ; H'8C019C00 LAB_8c019c04: MOV.L LP_GEN_17403+4,R3 MOV R12,R4 @@ -1250,7 +1251,7 @@ LAB_8c019c8c: FMOV FR15,FR6 JSR @R3 FMOV FR13,FR4 - BSR _FUN_8c0197c0 + BSR _drawVmMenu_197c0 NOP MOV.W LP_GEN_17403,R4 LAB_8c019ca2: @@ -1266,7 +1267,7 @@ LAB_8c019cac: MOV #H'7,R3 MOV.L R3,@(H'18,R12) LAB_8c019cb6: - BSR _FUN_8c019852 + BSR _DrawVmWarning_19852 NOP BRA LAB_8c019e28 NOP @@ -1287,17 +1288,17 @@ LAB_8c019cbe: LP_GEN_17403: .DATA.W H'00FF ; H'8C019CD8 .RES.W 1 ; H'8C019CDA - .DATA.L _processNavInputAndPlaySound_8c016caa ; H'8C019CDC - .DATA.L _var_8c1ba34c ; H'8C019CE0 + .DATA.L _promptHandleBinary_16caa ; H'8C019CDC + .DATA.L _var_selectedVm_8c1ba34c ; H'8C019CE0 .DATA.L _push_fadeout_8c022b60 ; H'8C019CE4 - .DATA.L _init_8c044dc4 ; H'8C019CE8 - .DATA.L _FUN_8c02aefc ; H'8C019CEC + .DATA.L _init_vmuStatusMessages_8c044dc4 ; H'8C019CE8 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C019CEC .DATA.L _FUN_8c01895e ; H'8C019CF0 .DATA.L _FUN_8c010bae ; H'8C019CF4 .DATA.L _drawSprite_8c014f54 ; H'8C019CF8 .DATA.L _menuTextboxText_8c02af1c ; H'8C019CFC LAB_8c019d00: - BSR _FUN_8c019550 + BSR _VmMenuUpdateVmusStatus_19550 MOV #H'3,R5 TST R0,R0 BT LAB_8c019d12 @@ -1338,7 +1339,7 @@ LAB_8c019d3e: MOV.L @(R0,R13),R3 TST R3,R3 BT LAB_8c019d3c - BSR _FUN_8c019788 + BSR _initCursorLerp_19788 MOV R14,R4 MOV R12,R2 MOV.L LP_GEN_77899+14,R3 @@ -1395,7 +1396,7 @@ LAB_8c019d9a: MOV.L @R15+,R11 MOV.L @R15+,R12 MOV.L @R15+,R13 - BRA _FUN_8c019852 + BRA _DrawVmWarning_19852 MOV.L @R15+,R14 LAB_8c019db4: MOV.L @R5,R3 @@ -1459,7 +1460,7 @@ LAB_8c019e1a: MOV #H'2,R3 MOV.L R3,@(H'18,R12) LAB_8c019e24: - BSR _FUN_8c0197c0 + BSR _drawVmMenu_197c0 NOP LAB_8c019e28: MOV.L R14,@(H'38,R12) @@ -1477,7 +1478,7 @@ LAB_8c019e2a: MOV.L @R15+,R13 RTS MOV.L @R15+,R14 -_setMenuTaskAction_8c019e44: +_VmMenuSwitchFromTask_19e44: STS.L PR,@-R15 MOV.L LP_GEN_77899+50,R3 MOV.L LP_GEN_77899+46,R5 @@ -1493,18 +1494,26 @@ _setMenuTaskAction_8c019e44: MOV.L R4,@(R0,R5) LP_GEN_77899: .RES.W 1 ; H'8C019E5E - .DATA.L _processNavInputAndPlaySound_8c016caa ; H'8C019E60 - .DATA.L _var_8c1ba34c ; H'8C019E64 + .DATA.L _promptHandleBinary_16caa ; H'8C019E60 + .DATA.L _var_selectedVm_8c1ba34c ; H'8C019E64 .DATA.L _FUN_8c01895e ; H'8C019E68 .DATA.L __quick_evn_mvn ; H'8C019E6C - .DATA.L _init_8c044dc4 ; H'8C019E70 - .DATA.L _FUN_8c02aefc ; H'8C019E74 + .DATA.L _init_vmuStatusMessages_8c044dc4 ; H'8C019E70 + .DATA.L _swapMessageBoxFor_8c02aefc ; H'8C019E74 .DATA.L _push_fadeout_8c022b60 ; H'8C019E78 .DATA.L _FUN_8c019334 ; H'8C019E7C .DATA.L _drawSprite_8c014f54 ; H'8C019E80 .DATA.L _init_8c03bd80 ; H'8C019E84 - .DATA.L _FUN_8c01a09a ; H'8C019E88 - .DATA.L _task_menu_8c0198a0 ; H'8C019E8C + .DATA.L _switchToMainMenuTask_8c01a09a ; H'8C019E88 + .DATA.L _VmMenuTask_198a0 ; H'8C019E8C .DATA.L _setTaskAction_8c014b3e ; H'8C019E90 .DATA.L _menuState_8c1bc7a8 ; H'8C019E94 + .SECTION C, DATA, ALIGN=4 +_const_8c037ef8: + .SDATA "よろしいですか?" + .DATA.B H'00 + .RES.B 3 +_const_8c037f0c: + .SDATA "ファイルを設定しないとセーブできませんこのままゲームを開始してもよろしいですか?" + .DATA.B H'00 .END diff --git a/src/non_matching/_027636_8c016bf4.c b/src/non_matching/_027636_8c016bf4.c index e5d3964..ab84624 100644 --- a/src/non_matching/_027636_8c016bf4.c +++ b/src/non_matching/_027636_8c016bf4.c @@ -18,7 +18,7 @@ extern Struct8c225fa8* var_8c225fa8_2; extern int var_8c1bbc84; //extern int var_8c1ba364; extern int var_8c225fac; -extern PDS_PERIPHERAL peripheral_8c1ba35c[2]; +extern PDS_PERIPHERAL var_peripheral_8c1ba35c[2]; void task_8c016bf4() { @@ -29,25 +29,25 @@ void task_8c016bf4() if (temp < &var_8c225fa8_2) { // var_8c1ba364 = *_var_8c225fa8; - peripheral_8c1ba35c[0].on = (int) &temp; + var_peripheral_8c1ba35c[0].on = (int) &temp; // var_8c1ba36c = var_8c1ba364 & (_var_8c225fac ^ var_8c1ba364); - peripheral_8c1ba35c[0].press = peripheral_8c1ba35c[0].on & (var_8c225fac ^ peripheral_8c1ba35c[0].on); + var_peripheral_8c1ba35c[0].press = var_peripheral_8c1ba35c[0].on & (var_8c225fac ^ var_peripheral_8c1ba35c[0].on); // var_8c1ba378 = (short)*(char *)(_var_8c225fa8 + 1); - peripheral_8c1ba35c[0].x2 = var_8c225fa8->field_0x04; + var_peripheral_8c1ba35c[0].x2 = var_8c225fa8->field_0x04; // var_8c1ba374 = (ushort)*(byte *)((int)_var_8c225fa8 + 5); - peripheral_8c1ba35c[0].x1 = var_8c225fa8->field_0x05; + var_peripheral_8c1ba35c[0].x1 = var_8c225fa8->field_0x05; // var_8c1ba376 = (ushort)*(byte *)((int)_var_8c225fa8 + 6); - peripheral_8c1ba35c[0].y1 = var_8c225fa8->field_0x06; + var_peripheral_8c1ba35c[0].y1 = var_8c225fa8->field_0x06; // _var_8c225fa8 = _var_8c225fa8 + 2; var_8c225fa8++; // _var_8c225fac = var_8c1ba364; - var_8c225fac = peripheral_8c1ba35c[0].on; + var_8c225fac = var_peripheral_8c1ba35c[0].on; } } } diff --git a/src/serial_debug.h b/src/serial_debug.h index ac6510d..300e8d8 100644 --- a/src/serial_debug.h +++ b/src/serial_debug.h @@ -39,13 +39,13 @@ void serialprintf(const char *fmt, ...); #endif #if defined(SERIAL_DEBUG) && DEBUG_LEVEL >= LOG_LEVEL_WARN -#define LOG_WARN(x) serialprintf("[WARN]"),serialprintf x +#define LOG_WARN(x) serialprintf("[WARN ]"),serialprintf x #else #define LOG_WARN(x) #endif #if defined(SERIAL_DEBUG) && DEBUG_LEVEL >= LOG_LEVEL_INFO -#define LOG_INFO(x) serialprintf("[INFO]"),serialprintf x +#define LOG_INFO(x) serialprintf("[INFO ]"),serialprintf x #else #define LOG_INFO(x) #endif diff --git a/tests/012f44.php b/tests/012f44.php index cfaf8e4..242655c 100644 --- a/tests/012f44.php +++ b/tests/012f44.php @@ -433,7 +433,7 @@ public function test_njUserInit_8c0134ec_Vga_getSoundMode_8c010924Returns1() $this->shouldWriteTo('_var_8c225fb0', -1); $this->shouldWriteTo('_var_8c1ba3c4', -1); $this->shouldWriteTo('_var_8c1bc454', -1); - $this->shouldWriteTo('_var_8c1ba34c', -1); + $this->shouldWriteTo('_var_selectedVm_8c1ba34c', -1); $this->shouldWriteTo('_var_8c1bb8c4', 0); @@ -587,7 +587,7 @@ public function test_njUserInit_8c0134ec_Vga_getSoundMode_8c010924ReturnsNegativ $this->shouldWriteTo('_var_8c225fb0', -1); $this->shouldWriteTo('_var_8c1ba3c4', -1); $this->shouldWriteTo('_var_8c1bc454', -1); - $this->shouldWriteTo('_var_8c1ba34c', -1); + $this->shouldWriteTo('_var_selectedVm_8c1ba34c', -1); $this->shouldWriteTo('_var_8c1bb8c4', 0); @@ -741,7 +741,7 @@ public function test_njUserInit_8c0134ec_Ntsci_getSoundMode_8c010924Returns1() $this->shouldWriteTo('_var_8c225fb0', -1); $this->shouldWriteTo('_var_8c1ba3c4', -1); $this->shouldWriteTo('_var_8c1bc454', -1); - $this->shouldWriteTo('_var_8c1ba34c', -1); + $this->shouldWriteTo('_var_selectedVm_8c1ba34c', -1); $this->shouldWriteTo('_var_8c1bb8c4', 0); @@ -896,7 +896,7 @@ public function test_njUserInit_8c0134ec_Ntsci_getSoundMode_8c010924ReturnsNegat $this->shouldWriteTo('_var_8c225fb0', -1); $this->shouldWriteTo('_var_8c1ba3c4', -1); $this->shouldWriteTo('_var_8c1bc454', -1); - $this->shouldWriteTo('_var_8c1ba34c', -1); + $this->shouldWriteTo('_var_selectedVm_8c1ba34c', -1); $this->shouldWriteTo('_var_8c1bb8c4', 0); $this->shouldWriteTo('_var_8c1bb8d8', 100); diff --git a/tests/015ab8_title.php b/tests/015ab8_title.php index 2d44677..38d7192 100644 --- a/tests/015ab8_title.php +++ b/tests/015ab8_title.php @@ -12,13 +12,13 @@ public function testState0x00_Init_SkipTitleAnimationWhenStartIsPressed() { $this->resolveImports(); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18 , 0x0b); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 0x10, 8); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 0x10, 8); $this->initUint32($this->addressOf('_var_midiHandles_8c0fcd28'), 0xbebacafe); /* Assert */ $this->shouldCall('_sdMidiPlay')->with(0xbebacafe, 1, 0, 0); - $this->shouldWrite($this->addressOf('_peripheral_8c1ba35c') + 16, 0); + $this->shouldWrite($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0); $this->shouldWriteSymbolOffset('_menuState_8c1bc7a8', 0x18, 0x0e); $this->shouldWrite($this->addressOf('_isFading_8c226568'), 0); @@ -37,7 +37,7 @@ public function testState0x00_Init_AdvanceToFortyFiveFadeIn() { $this->shouldCall('_getUknPvmBool_8c01432a')->andReturn(0); $this->shouldCall('_freeQueues_8c011f7e'); - $this->shouldCall('_FUN_8c01940e'); + $this->shouldCall('_VmMenuMountVms_1940e'); $task = $this->alloc(0x0c); $this->shouldRead($task + 0x08, 0); @@ -75,7 +75,7 @@ public function testState0x00_Init_SkipToTitleFadeInDirectWhenTaskField0x08IsTru $this->shouldCall('_getUknPvmBool_8c01432a')->andReturn(0); $this->shouldCall('_freeQueues_8c011f7e'); - $this->shouldCall('_FUN_8c01940e'); + $this->shouldCall('_VmMenuMountVms_1940e'); // TODO: Fix Task size $taskPtr = $this->alloc(0x0c); @@ -303,8 +303,8 @@ public function testState0x06_AdxFadeOut_AdvancesToTitleWhenSecondConditionFails $this->shouldCall('_FUN_8c012984')->andReturn(1); - $this->shouldCall('_FUN_8c019550') - ->with($this->addressOf('_saveNames_8c044d50'), 3) + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3) ->andReturn(1); // Advance title state @@ -325,8 +325,8 @@ public function testState0x06_AdxFadeOut_AdvancesToWarningWhenBothConditionsPass $this->shouldCall('_FUN_8c012984')->andReturn(1); - $this->shouldCall('_FUN_8c019550') - ->with($this->addressOf('_saveNames_8c044d50'), 3) + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3) ->andReturn(0); // Advance title state @@ -373,9 +373,9 @@ public function testState0x08_VmuWarning_WaitsWhenNoInputOrSaveNames() { $this->resolveImports(); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 8); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0); - $this->shouldCall('_FUN_8c019550')->with($this->addressOf('_saveNames_8c044d50'), 3)->andReturn(0); + $this->shouldCall('_VmMenuUpdateVmusStatus_19550')->with($this->addressOf('_init_saveNames_8c044d50'), 3)->andReturn(0); $this->shouldCall('_drawSprite_8c014f54')->with($this->addressOf('_menuState_8c1bc7a8') + 0x0c, 17, 0.0, 0.0, -5.0); @@ -388,7 +388,7 @@ public function testState0x08_VmuWarning_AdvancesWhenStartIsPressed() { $this->resolveImports(); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 8); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 1 << 3); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 1 << 3); $this->initUint32($this->addressOf('_var_midiHandles_8c0fcd28'), 0xbebacafe); $this->shouldCall('_sdMidiPlay')->with(0xbebacafe, 1, 0, 0, 0); @@ -409,7 +409,7 @@ public function testState0x08_VmuWarning_AdvancesWhenAIsPressed() { $this->resolveImports(); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 8); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 1 << 2); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 1 << 2); $this->initUint32($this->addressOf('_var_midiHandles_8c0fcd28'), 0xbebacafe); $this->shouldCall('_sdMidiPlay')->with(0xbebacafe, 1, 0, 0, 0); @@ -431,9 +431,9 @@ public function testState0x08_VmuWarning_DoesNotAdvancesWhenOtherButtonsArePress $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 8); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0xFFFFFFF3); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0xFFFFFFF3); - $this->shouldCall('_FUN_8c019550')->with($this->addressOf('_saveNames_8c044d50'), 3)->andReturn(0); + $this->shouldCall('_VmMenuUpdateVmusStatus_19550')->with($this->addressOf('_init_saveNames_8c044d50'), 3)->andReturn(0); $this->shouldCall('_drawSprite_8c014f54')->with($this->addressOf('_menuState_8c1bc7a8') + 0x0c, 17, 0.0, 0.0, -5.0); @@ -447,10 +447,10 @@ public function testState0x08_VmuWarning_AdvancesWhenSaveNamePasses() { $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 8); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0); $this->initUint32($this->addressOf('_var_midiHandles_8c0fcd28'), 0xbebacafe); - $this->shouldCall('_FUN_8c019550')->with($this->addressOf('_saveNames_8c044d50'), 3)->andReturn(1); + $this->shouldCall('_VmMenuUpdateVmusStatus_19550')->with($this->addressOf('_init_saveNames_8c044d50'), 3)->andReturn(1); $this->shouldCall('_sdMidiPlay')->with(0xbebacafe, 1, 0, 0, 0); // Advance title state @@ -536,7 +536,7 @@ public function testState0x0b_BusSlide_AnimatesBusSlide() { $this->resolveImports(); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0x0b); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0); // 640.0 is stored as 0x44200000 $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x20, 0x44200000); @@ -559,7 +559,7 @@ public function testState0x0b_BusSlide_AdvancesWhenBusReachesCenterOfScreen() { $this->resolveImports(); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0x0b); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0); // 185.0 is stored as 0x43390000 $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x20, 0x43390000); @@ -597,7 +597,7 @@ public function testState0x0c_FlagReveal_AnimatesFlag() { $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0x0c); // Anim skip check - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0); // 167.0 is stored as 0x43270000 $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x24, 0x43270000); @@ -624,7 +624,7 @@ public function testState0x0c_FlagReveal_AdvancesWhenFlagIsRevealed() { $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0x0c); // Anim skip check - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0); // 98 is stored as 0x42c40000 $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x24, 0x42c40000); @@ -700,7 +700,7 @@ public function testState0x0e_PressStart_WaitsWhenNoInputAndTimeIsNotUp() { $this->resolveImports(); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0x0e); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x64, 1049); $this->shouldWrite($this->addressOf('_menuState_8c1bc7a8') + 0x64, 1050); @@ -724,7 +724,7 @@ public function testState0x0e_PressStart_AdvancesToStartPressedWhenStartIsPresse $this->resolveImports(); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0x0e); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 1 << 3); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 1 << 3); $this->initUint32($this->addressOf('_var_midiHandles_8c0fcd28'), 0xbebacafe); $this->shouldCall('_FUN_8c010bae')->with(0); @@ -756,7 +756,7 @@ public function testState0x0e_PressStart_AdvancesToTimeOutWhenTimeIsUp() { $this->resolveImports(); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0x0e); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0xFFFFFFF3); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0xFFFFFFF3); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x64, 1051); $this->shouldWrite($this->addressOf('_menuState_8c1bc7a8') + 0x64, 1052); @@ -870,7 +870,7 @@ public function testState0x10_StartPressedFadeOut_WaitsForFadeOut() { $this->initUint32($this->addressOf('_isFading_8c226568'), 1); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x68, 0); - $this->shouldCall('_FUN_8c019550')->with($this->addressOf('_saveNames_8c044d50'), 3); + $this->shouldCall('_VmMenuUpdateVmusStatus_19550')->with($this->addressOf('_init_saveNames_8c044d50'), 3); $this->shouldCall('_drawSprite_8c014f54')->with($this->addressOf('_menuState_8c1bc7a8') + 0x0c, 5, 0.0, 0.0, -4.0); @@ -898,7 +898,7 @@ public function testState0x10_StartPressedFadeOut_BlinksSpriteWhileWaitingForFad $this->initUint32($this->addressOf('_isFading_8c226568'), 1); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x68, 1); - $this->shouldCall('_FUN_8c019550')->with($this->addressOf('_saveNames_8c044d50'), 3); + $this->shouldCall('_VmMenuUpdateVmusStatus_19550')->with($this->addressOf('_init_saveNames_8c044d50'), 3); $this->shouldCall('_drawSprite_8c014f54')->with($this->addressOf('_menuState_8c1bc7a8') + 0x0c, 5, 0.0, 0.0, -4.0); @@ -925,7 +925,7 @@ public function testState0x10_StartPressedFadeOut_WaitsFor8c03bd80BeforeAdvancin $this->initUint32($this->addressOf('_isFading_8c226568'), 0); $this->initUint32($this->addressOf('_init_8c03bd80'), 1); - $this->shouldCall('_FUN_8c019550')->with($this->addressOf('_saveNames_8c044d50'), 3); + $this->shouldCall('_VmMenuUpdateVmusStatus_19550')->with($this->addressOf('_init_saveNames_8c044d50'), 3); $this->shouldReadSymbolOffset('_init_8c03bd80', 0, 1); @@ -941,11 +941,11 @@ public function testState0x10_StartPressedFadeOut_AdvancesWhenTimeIsUpAnd8c03bd8 $this->initUint32($this->addressOf('_isFading_8c226568'), 0); $this->initUint32($this->addressOf('_init_8c03bd80'), 0); - $this->shouldCall('_FUN_8c019550')->with($this->addressOf('_saveNames_8c044d50'), 3); + $this->shouldCall('_VmMenuUpdateVmusStatus_19550')->with($this->addressOf('_init_saveNames_8c044d50'), 3); $this->shouldReadSymbolOffset('_init_8c03bd80', 0, 0); $this->shouldWriteSymbolOffset('_var_8c1bb8c4', 0, 0); - $this->shouldCall('_setMenuTaskAction_8c019e44')->with(0xbebacafe); + $this->shouldCall('_VmMenuSwitchFromTask_19e44')->with(0xbebacafe); $this->call('_task_title_8c015ab8') ->with(0xbebacafe, 0) @@ -1006,13 +1006,13 @@ public function testState0x0b_BusSlide_SkipsToPressStartWhenStartIsPressed() { $this->resolveImports(); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0x0b); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 1 << 3); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 1 << 3); $this->initUint32($this->addressOf('_var_midiHandles_8c0fcd28'), 0xbebacafe); $this->shouldReadFrom('_var_midiHandles_8c0fcd28', 0xbebacafe); $this->shouldCall('_sdMidiPlay')->with(0xbebacafe, 1, 0, 0); - $this->shouldWrite($this->addressOf('_peripheral_8c1ba35c') + 16, 0); + $this->shouldWrite($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0); // Advance title state $this->shouldWriteSymbolOffset('_menuState_8c1bc7a8', 0x18, 0x0e); $this->shouldWriteSymbolOffset('_isFading_8c226568', 0, 0); @@ -1031,13 +1031,13 @@ public function testState0x0c_FlagReveal_SkipsToPressStartWhenStartIsPressed() { $this->resolveImports(); $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0x0c); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 1 << 3); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 1 << 3); $this->initUint32($this->addressOf('_var_midiHandles_8c0fcd28'), 0xbebacafe); $this->shouldReadSymbolOffset('_var_midiHandles_8c0fcd28', 0, 0xbebacafe); $this->shouldCall('_sdMidiPlay')->with(0xbebacafe, 1, 0, 0); - $this->shouldWrite($this->addressOf('_peripheral_8c1ba35c') + 16, 0); + $this->shouldWrite($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0); // Advance title state $this->shouldWriteSymbolOffset('_menuState_8c1bc7a8', 0x18, 0x0e); $this->shouldWriteSymbolOffset('_isFading_8c226568', 0, 0); @@ -1057,7 +1057,7 @@ private function resolveImports() { $this->setSize('_drawSprite_8c014f54', 4); $this->setSize('_menuState_8c1bc7a8', 0x6c); // sizeof PERIPHERAL = 52 - $this->setSize('_peripheral_8c1ba35c', 52 * 2); + $this->setSize('_var_peripheral_8c1ba35c', 52 * 2); $this->setSize('_var_midiHandles_8c0fcd28', 0x8); $this->setSize('_isFading_8c226568', 4); diff --git a/tests/016c58.php b/tests/016c58.php index 4f2ea26..d1bd2d7 100644 --- a/tests/016c58.php +++ b/tests/016c58.php @@ -5,109 +5,109 @@ use Lhsazevedo\Sh4ObjTest\TestCase; return new class extends TestCase { - public function testCycleOptionAndPlaySound_8c016c58() + public function testpromptHandleMultiple_16c58() { $this->resolveImports(); $optionPtr = $this->alloc(0x0c); $this->initUint32($optionPtr, 0); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0); $this->shouldWrite($optionPtr, 0); - $this->call('_cycleOptionAndPlaySound_8c016c58') + $this->call('_promptHandleMultiple_16c58') ->with($optionPtr, 3) ->shouldReturn(0) ->run(); } - public function testCycleOptionAndPlaySound_8c016c58_right() + public function testpromptHandleMultiple_16c58_right() { $this->resolveImports(); $optionPtr = $this->alloc(0x0c); $this->initUint32($optionPtr, 0); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0x80); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0x80); $this->initUint32($this->addressOf('_var_midiHandles_8c0fcd28'), 0xbebacafe); $this->shouldCall('_sdMidiPlay')->with(0xbebacafe, 1, 3, 0); $this->shouldWrite($optionPtr, 1); - $this->call('_cycleOptionAndPlaySound_8c016c58') + $this->call('_promptHandleMultiple_16c58') ->with($optionPtr, 3) ->shouldReturn(1) ->run(); } - public function testCycleOptionAndPlaySound_8c016c58_left() + public function testpromptHandleMultiple_16c58_left() { $this->resolveImports(); $optionPtr = $this->alloc(0x0c); $this->initUint32($optionPtr, 3); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0x40); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0x40); $this->initUint32($this->addressOf('_var_midiHandles_8c0fcd28'), 0xbebacafe); $this->shouldCall('_sdMidiPlay')->with(0xbebacafe, 1, 3, 0); $this->shouldWrite($optionPtr, 2); - $this->call('_cycleOptionAndPlaySound_8c016c58') + $this->call('_promptHandleMultiple_16c58') ->with($optionPtr, 3) ->shouldReturn(1) ->run(); } - public function testCycleOptionAndPlaySound_8c016c58_rightWrapAround() + public function testpromptHandleMultiple_16c58_rightWrapAround() { $this->resolveImports(); $optionPtr = $this->alloc(0x0c); $this->initUint32($optionPtr, 2); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0x80); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0x80); $this->initUint32($this->addressOf('_var_midiHandles_8c0fcd28'), 0xbebacafe); $this->shouldCall('_sdMidiPlay')->with(0xbebacafe, 1, 3, 0); $this->shouldWrite($optionPtr, 0); - $this->call('_cycleOptionAndPlaySound_8c016c58') + $this->call('_promptHandleMultiple_16c58') ->with($optionPtr, 3) ->shouldReturn(1) ->run(); } - public function testCycleOptionAndPlaySound_8c016c58_leftWrapAround() + public function testpromptHandleMultiple_16c58_leftWrapAround() { $this->resolveImports(); $optionPtr = $this->alloc(0x0c); $this->initUint32($optionPtr, 0); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0x40); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0x40); $this->initUint32($this->addressOf('_var_midiHandles_8c0fcd28'), 0xbebacafe); $this->shouldCall('_sdMidiPlay')->with(0xbebacafe, 1, 3, 0); $this->shouldWrite($optionPtr, 2); - $this->call('_cycleOptionAndPlaySound_8c016c58') + $this->call('_promptHandleMultiple_16c58') ->with($optionPtr, 3) ->shouldReturn(1) ->run(); } - public function testCycleOptionAndPlaySound_8c016c58_noInput() + public function testpromptHandleMultiple_16c58_noInput() { $this->resolveImports(); $optionPtr = $this->alloc(0x0c); $this->initUint32($optionPtr, 1); - $this->initUint32($this->addressOf('_peripheral_8c1ba35c') + 16, 0); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 16, 0); $this->shouldWrite($optionPtr, 1); - $this->call('_cycleOptionAndPlaySound_8c016c58') + $this->call('_promptHandleMultiple_16c58') ->with($optionPtr, 3) ->shouldReturn(0) ->run(); @@ -115,7 +115,7 @@ public function testCycleOptionAndPlaySound_8c016c58_noInput() private function resolveImports() { // sizeof PERIPHERAL = 52 - $this->setSize('_peripheral_8c1ba35c', 52 * 2); + $this->setSize('_var_peripheral_8c1ba35c', 52 * 2); $this->setSize('_var_midiHandles_8c0fcd28', 0x8); } }; diff --git a/tests/0193c8_vm_menu/193c8_TaskWaitForVmsReady.php b/tests/0193c8_vm_menu/193c8_TaskWaitForVmsReady.php new file mode 100644 index 0000000..3f8dcad --- /dev/null +++ b/tests/0193c8_vm_menu/193c8_TaskWaitForVmsReady.php @@ -0,0 +1,123 @@ +resolveSymbols(); + + $task = $this->alloc(0x04); + + $bupInfos = $this->initBackupInfos([ + ['connect' => 0, 'ready' => 0], + ['connect' => 0xcafe0001, 'ready' => 1], + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ['connect' => 0xcafe0006, 'ready' => 1], + ['connect' => 0, 'ready' => 0], + ]); + + foreach ($bupInfos as $i => $bupInfo) { + $this->shouldCall('_BupGetInfo_8c014bba')->with($i)->andReturn($bupInfo); + } + + $this->shouldCall('_freeTask_8c014b66')->with($task); + $this->shouldWriteLongTo('_var_8c22606c', 0); + + $this->call('_TaskWaitForVmsReady_193c8')->with($task, 0)->run(); + } + + public function test_freeWhenNoneConnected() + { + $this->resolveSymbols(); + + $task = $this->alloc(0x04); + + $bupInfos = $this->initBackupInfos([ + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ]); + + foreach ($bupInfos as $i => $bupInfo) { + $this->shouldCall('_BupGetInfo_8c014bba')->with($i)->andReturn($bupInfo); + } + + $this->shouldCall('_freeTask_8c014b66')->with($task); + $this->shouldWriteLongTo('_var_8c22606c', 0); + + $this->call('_TaskWaitForVmsReady_193c8')->with($task, 0)->run(); + } + + public function test_waitsForReady() + { + $this->resolveSymbols(); + + $task = $this->alloc(0x04); + + $bupInfos = $this->initBackupInfos([ + ['connect' => 0, 'ready' => 0], + ['connect' => 1, 'ready' => 1], + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ['connect' => 1, 'ready' => 0], + ['connect' => 0, 'ready' => 0], + ]); + + foreach (array_slice($bupInfos, 0, 7) as $i => $bupInfo) { + $this->shouldCall('_BupGetInfo_8c014bba')->with($i)->andReturn($bupInfo); + } + + $this->call('_TaskWaitForVmsReady_193c8')->with($task, 0)->run(); + } + + private function resolveSymbols(): void + { + // Functions + $this->setSize('_BupGetInfo_8c014bba', 0x4); + } + + private function initUint32Array(int $address, array $values): void + { + foreach ($values as $i => $value) { + $this->initUint32($address + $i * 4, $value); + } + } + + private function initBackupInfo($connect, $ready) + { + $address = $this->alloc(0x50); + $this->initUint32Array($address, array_fill(0, 0x50 / 4, 0)); + $this->initUint32($address + 0x4c, $connect); + $this->initUint32($address + 0x0, $ready); + return $address; + } + + private function initBackupInfos(array $infos) + { + $addresses = []; + foreach ($infos as $info) { + $addresses[] = $this->initBackupInfo($info['connect'], $info['ready']); + } + return $addresses; + } + + private function isAsmObject(): bool + { + return str_ends_with($this->objectFile, '_src.obj'); + } +}; diff --git a/tests/0193c8_vm_menu/1940e_VmMenuMountVms.php b/tests/0193c8_vm_menu/1940e_VmMenuMountVms.php new file mode 100644 index 0000000..922c744 --- /dev/null +++ b/tests/0193c8_vm_menu/1940e_VmMenuMountVms.php @@ -0,0 +1,128 @@ +resolveSymbols(); + + $bupInfos = [ + ['connect' => 0, 'work' => 0], + ['connect' => 0xcafe0001, 'work' => 0xbabe0001], + ['connect' => 0xcafe0002, 'work' => 0], + ['connect' => 0, 'work' => 0], + ['connect' => 0xcafe0004, 'work' => 0xbabe0004], + ['connect' => 0, 'work' => 0], + ['connect' => 0xcafe0006, 'work' => 0], + ['connect' => 0, 'work' => 0], + ]; + $bupAddresses = $this->initBackupInfos($bupInfos); + $createdTask = 0xffffe0; + $createdState = 0xffffe4; + + $this->shouldCall('_BupGetInfo_8c014bba')->with(0)->andReturn($bupAddresses[0]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(1)->andReturn($bupAddresses[1]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(2)->andReturn($bupAddresses[2]); + $this->shouldCall('_BupMount_8c014c00')->with(2); + $this->shouldCall('_BupGetInfo_8c014bba')->with(3)->andReturn($bupAddresses[3]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(4)->andReturn($bupAddresses[4]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(5)->andReturn($bupAddresses[5]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(6)->andReturn($bupAddresses[6]); + $this->shouldCall('_BupMount_8c014c00')->with(6); + $this->shouldCall('_BupGetInfo_8c014bba')->with(7)->andReturn($bupAddresses[7]); + + $this->shouldCall('_pushTask_8c014ae8') + ->with( + $this->addressOf('_var_tasks_8c1ba3c8'), + $this->addressOf('_TaskWaitForVmsReady_193c8'), + $createdTask, + $createdState, + 0 + ); + $this->shouldWriteLongTo('_var_8c22606c', 1); + + $this->call('_VmMenuMountVms_1940e')->run(); + } + + public function test_skipsMountedVms() + { + $this->resolveSymbols(); + + $bupInfos = [ + ['connect' => 0xcafe0000, 'work' => 0xbabe0000], + ['connect' => 0xcafe0001, 'work' => 0xbabe0001], + ['connect' => 0xcafe0002, 'work' => 0xbabe0002], + ['connect' => 0xcafe0003, 'work' => 0xbabe0003], + ['connect' => 0xcafe0004, 'work' => 0xbabe0004], + ['connect' => 0xcafe0005, 'work' => 0xbabe0005], + ['connect' => 0xcafe0006, 'work' => 0xbabe0006], + ['connect' => 0xcafe0007, 'work' => 0xbabe0007], + ]; + $bupAddresses = $this->initBackupInfos($bupInfos); + $createdTask = 0xffffe0; + $createdState = 0xffffe4; + + $this->shouldCall('_BupGetInfo_8c014bba')->with(0)->andReturn($bupAddresses[0]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(1)->andReturn($bupAddresses[1]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(2)->andReturn($bupAddresses[2]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(3)->andReturn($bupAddresses[3]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(4)->andReturn($bupAddresses[4]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(5)->andReturn($bupAddresses[5]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(6)->andReturn($bupAddresses[6]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(7)->andReturn($bupAddresses[7]); + + $this->shouldCall('_pushTask_8c014ae8') + ->with( + $this->addressOf('_var_tasks_8c1ba3c8'), + $this->addressOf('_TaskWaitForVmsReady_193c8'), + $createdTask, + $createdState, + 0 + ); + $this->shouldWriteLongTo('_var_8c22606c', 1); + + $this->call('_VmMenuMountVms_1940e')->run(); + } + + private function resolveSymbols(): void + { + // Functions + $this->setSize('_BupGetInfo_8c014bba', 0x4); + $this->setSize('_BupMount_8c014c00', 0x4); + } + + private function initUint32Array(int $address, array $values): void + { + foreach ($values as $i => $value) { + $this->initUint32($address + $i * 4, $value); + } + } + + private function initBackupInfo($connect, $work) + { + $address = $this->alloc(0x54); + $this->initUint32Array($address, array_fill(0, 0x50 / 4, 0)); + $this->initUint32($address + 0x4c, $connect); + $this->initUint32($address + 0x50, $work); + return $address; + } + + private function initBackupInfos(array $infos) + { + $addresses = []; + foreach ($infos as $info) { + $addresses[] = $this->initBackupInfo($info['connect'], $info['work']); + } + return $addresses; + } + + private function isAsmObject(): bool + { + return str_ends_with($this->objectFile, '_src.obj'); + } +}; diff --git a/tests/0193c8_vm_menu/1946a_TaskUnmountVms.php b/tests/0193c8_vm_menu/1946a_TaskUnmountVms.php new file mode 100644 index 0000000..0336f1d --- /dev/null +++ b/tests/0193c8_vm_menu/1946a_TaskUnmountVms.php @@ -0,0 +1,116 @@ +resolveSymbols(); + + $bupInfos = [ + ['connect' => 0, 'work' => 0], + ['connect' => 0xcafe0001, 'work' => 0xbabe0001], + ['connect' => 0xcafe0002, 'work' => 0], + ['connect' => 0, 'work' => 0], + ['connect' => 0xcafe0004, 'work' => 0xbabe0004], + ['connect' => 0, 'work' => 0], + ['connect' => 0xcafe0006, 'work' => 0], + ['connect' => 0, 'work' => 0], + ]; + $bupAddresses = $this->initBackupInfos($bupInfos); + + $task = 0xbebacafe; + + $this->shouldCall('_BupGetInfo_8c014bba')->with(0)->andReturn($bupAddresses[0]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(1)->andReturn($bupAddresses[1]); + $this->shouldCall('_buStat')->with(1)->andReturn(0); // BUD_STAT_READY + $this->shouldCall('_BupUnmount_8c014c46')->with(1); + $this->shouldCall('_BupGetInfo_8c014bba')->with(2)->andReturn($bupAddresses[2]); + $this->shouldCall('_buStat')->with(2)->andReturn(0); // BUD_STAT_READY + $this->shouldCall('_BupGetInfo_8c014bba')->with(3)->andReturn($bupAddresses[3]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(4)->andReturn($bupAddresses[4]); + $this->shouldCall('_buStat')->with(4)->andReturn(0); // BUD_STAT_READY + $this->shouldCall('_BupUnmount_8c014c46')->with(4); + $this->shouldCall('_BupGetInfo_8c014bba')->with(5)->andReturn($bupAddresses[5]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(6)->andReturn($bupAddresses[6]); + $this->shouldCall('_buStat')->with(6)->andReturn(0); + $this->shouldCall('_BupGetInfo_8c014bba')->with(7)->andReturn($bupAddresses[7]); + + $this->shouldCall('_freeTask_8c014b66')->with($task); + $this->shouldWriteLongTo('_var_8c22606c', 0); + + $this->call('_TaskUnmountVms_1946a')->with($task)->run(); + } + + public function test_doNotFreeWhenThereAreBusyVmus() + { + $this->resolveSymbols(); + + $bupInfos = [ + ['connect' => 0, 'work' => 0], + ['connect' => 0xcafe0001, 'work' => 0xbabe0001], + ['connect' => 0xcafe0002, 'work' => 0], + ['connect' => 0, 'work' => 0], + ['connect' => 0xcafe0004, 'work' => 0xbabe0004], + ['connect' => 0, 'work' => 0], + ['connect' => 0xcafe0006, 'work' => 0], + ['connect' => 0, 'work' => 0], + ]; + $bupAddresses = $this->initBackupInfos($bupInfos); + + $task = 0xbebacafe; + + $this->shouldCall('_BupGetInfo_8c014bba')->with(0)->andReturn($bupAddresses[0]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(1)->andReturn($bupAddresses[1]); + $this->shouldCall('_buStat')->with(1)->andReturn(0); // BUD_STAT_READY + $this->shouldCall('_BupUnmount_8c014c46')->with(1); + $this->shouldCall('_BupGetInfo_8c014bba')->with(2)->andReturn($bupAddresses[2]); + $this->shouldCall('_buStat')->with(2)->andReturn(-1); // BUD_STAT_BUSY + $this->shouldCall('_BupGetInfo_8c014bba')->with(3)->andReturn($bupAddresses[3]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(4)->andReturn($bupAddresses[4]); + $this->shouldCall('_buStat')->with(4)->andReturn(0); // BUD_STAT_READY + $this->shouldCall('_BupUnmount_8c014c46')->with(4); + $this->shouldCall('_BupGetInfo_8c014bba')->with(5)->andReturn($bupAddresses[5]); + $this->shouldCall('_BupGetInfo_8c014bba')->with(6)->andReturn($bupAddresses[6]); + $this->shouldCall('_buStat')->with(6)->andReturn(0); + $this->shouldCall('_BupGetInfo_8c014bba')->with(7)->andReturn($bupAddresses[7]); + + $this->call('_TaskUnmountVms_1946a')->with($task)->run(); + } + + private function resolveSymbols(): void + { + // Functions + $this->setSize('_BupGetInfo_8c014bba', 0x4); + $this->setSize('_BupUnmount_8c014c46', 0x4); + } + + private function initUint32Array(int $address, array $values): void + { + foreach ($values as $i => $value) { + $this->initUint32($address + $i * 4, $value); + } + } + + private function initBackupInfo($connect, $work) + { + $address = $this->alloc(0x54); + $this->initUint32Array($address, array_fill(0, 0x50 / 4, 0)); + $this->initUint32($address + 0x4c, $connect); + $this->initUint32($address + 0x50, $work); + return $address; + } + + private function initBackupInfos(array $infos) + { + $addresses = []; + foreach ($infos as $info) { + $addresses[] = $this->initBackupInfo($info['connect'], $info['work']); + } + return $addresses; + } +}; diff --git a/tests/0193c8_vm_menu/194de_VmMenuUnmountVms.php b/tests/0193c8_vm_menu/194de_VmMenuUnmountVms.php new file mode 100644 index 0000000..fd4b3b3 --- /dev/null +++ b/tests/0193c8_vm_menu/194de_VmMenuUnmountVms.php @@ -0,0 +1,42 @@ +resolveSymbols(); + + $createdTask = 0xfffff0; + $createdState = 0xfffff4; + + $task = 0xbebacafe; + + $this->shouldCall('_pushTask_8c014ae8')->with( + $this->addressOf('_var_tasks_8c1ba3c8'), + $this->addressOf('_TaskUnmountVms_1946a'), + $createdTask, + $createdState, + 0, + ); + $this->shouldWriteLongTo('_var_8c22606c', 1); + + $this->call('_VmMenuUnmountVms_194de')->with($task)->run(); + } + + private function resolveSymbols(): void + { + // Functions + $this->setSize('_BupGetInfo_8c014bba', 0x4); + $this->setSize('_BupUnmount_8c014c46', 0x4); + } + + private function isAsmObject(): bool + { + return str_ends_with($this->objectFile, '_src.obj'); + } +}; diff --git a/tests/0193c8_vm_menu/19504_VmMenuFreeAndClear.php b/tests/0193c8_vm_menu/19504_VmMenuFreeAndClear.php new file mode 100644 index 0000000..1f537ae --- /dev/null +++ b/tests/0193c8_vm_menu/19504_VmMenuFreeAndClear.php @@ -0,0 +1,77 @@ +resolveSymbols(); + + $bupInfos = [ + ['work' => 0], + ['work' => 0xbabe0001], + ['work' => 0xbabe0002], + ['work' => 0], + ['work' => 0xbabe0004], + ['work' => 0], + ['work' => 0xbabe0006], + ['work' => 0], + ]; + $bupAddresses = $this->initBackupInfos($bupInfos); + + $this->shouldCall('_syFree')->with(0xbabe0001); + $this->shouldCall('_ClearInfo_8c014c8a')->with(1); + + $this->shouldCall('_syFree')->with(0xbabe0002); + $this->shouldCall('_ClearInfo_8c014c8a')->with(2); + + $this->shouldCall('_syFree')->with(0xbabe0004); + $this->shouldCall('_ClearInfo_8c014c8a')->with(4); + + $this->shouldCall('_syFree')->with(0xbabe0006); + $this->shouldCall('_ClearInfo_8c014c8a')->with(6); + + $this->call('_VmMenuFreeAndClear_19504')->run(); + } + + private function resolveSymbols(): void + { + $this->setSize('_gBupInfo_8c1bc4ac', 0x5c * 8); + // Functions + $this->setSize('_syFree', 0x4); + $this->setSize('_ClearInfo_8c014c8a', 0x4); + } + + private function initUint32Array(int $address, array $values): void + { + foreach ($values as $i => $value) { + $this->initUint32($address + $i * 4, $value); + } + } + + private function initBackupInfo($i, $work) + { + $address = $this->addressOf('_gBupInfo_8c1bc4ac') + $i * 0x5c; + $this->initUint32Array($address, array_fill(0, 0x5c / 4, 0)); + $this->initUint32($address + 0x50, $work); + return $address; + } + + private function initBackupInfos(array $infos) + { + $addresses = []; + foreach ($infos as $i => $info) { + $addresses[] = $this->initBackupInfo($i, $info['work']); + } + return $addresses; + } + + private function isAsmObject(): bool + { + return str_ends_with($this->objectFile, '_src.obj'); + } +}; diff --git a/tests/0193c8_vm_menu/19550_fetchVmusStatus.php b/tests/0193c8_vm_menu/19550_fetchVmusStatus.php new file mode 100644 index 0000000..2fcc725 --- /dev/null +++ b/tests/0193c8_vm_menu/19550_fetchVmusStatus.php @@ -0,0 +1,246 @@ +resolveSymbols(); + + $this->initUint32Array( + $this->addressOf('_init_saveNames_8c044d50'), + [ + $saveName1 = $this->allocString('TOKYOBUS.001'), + $saveName2 = $this->allocString('TOKYOBUS.002'), + $saveName3 = $this->allocString('TOKYOBUS.003'), + $saveName4 = $this->allocString(''), + ] + ); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [0,0,0,0,0,0,0,0,0,0] + ); + + $bupInfos = [ + [ // Not connected + 'ready' => 1, + 'free_user_blocks' => 1, + 'connect' => 0, + 'work' => 1, + ], [ // Not mounted + 'ready' => 1, + 'free_user_blocks' => 1, + 'connect' => 0xbabe0001, + 'work' => 0, + ], [ // Not ready + 'ready' => 0, + 'free_user_blocks' => 1, + 'connect' => 0xbabe0002, + 'work' => 1, + ], [ // Save data exists + 'ready' => 1, + 'free_user_blocks' => 1, + 'connect' => 0xbabe0003, + 'work' => 1, + ], [ // Save data exists 2 + 'ready' => 1, + 'free_user_blocks' => 4, + 'connect' => 0xbabe0004, + 'work' => 1, + ], [ // Unformat + 'ready' => 1, + 'free_user_blocks' => 4, + 'connect' => 0xbabe0005, + 'work' => 1, + ], [ // Busy + 'ready' => 1, + 'free_user_blocks' => 4, + 'connect' => 0xbabe0005, + 'work' => 1, + ], [ // Saving is possible + 'ready' => 1, + 'free_user_blocks' => 3, + 'connect' => 0xbabe0005, + 'work' => 1, + ], + ]; + $bupAddresses = $this->initBackupInfos($bupInfos); + + $this->shouldCall('_BupGetInfo_8c014bba')->with(0)->andReturn($bupAddresses[0]); + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 0 * 4, 0); + + $this->shouldCall('_BupGetInfo_8c014bba')->with(1)->andReturn($bupAddresses[1]); + $this->shouldCall('_BupMount_8c014c00')->with(1); + + $this->shouldCall('_BupGetInfo_8c014bba')->with(2)->andReturn($bupAddresses[2]); + + $this->shouldCall('_BupGetInfo_8c014bba')->with(3)->andReturn($bupAddresses[3]); + $this->shouldCall('_buIsExistFile')->with(3, $saveName1)->andReturn(0); // BUD_ERR_OK + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 3 * 4, 5); // Save data exists + + $this->shouldCall('_BupGetInfo_8c014bba')->with(4)->andReturn($bupAddresses[4]); + $this->shouldCall('_buIsExistFile')->with(4, $saveName1)->andReturn(0xffffff05); // BUD_ERR_FILE_NOT_FOUND + $this->shouldCall('_buIsExistFile')->with(4, $saveName2)->andReturn(0); // BUD_ERR_OK + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 4 * 4, 6); // Save data exists 2 + + $this->shouldCall('_BupGetInfo_8c014bba')->with(5)->andReturn($bupAddresses[5]); + $this->shouldCall('_buIsExistFile')->with(5, $saveName1)->andReturn(0xffffff03); // BUD_ERR_UNFORMAT + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 5 * 4, 1); // Not available + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 5 * 4, 1); // Not available + + $this->shouldCall('_BupGetInfo_8c014bba')->with(6)->andReturn($bupAddresses[6]); + $this->shouldCall('_buIsExistFile')->with(6, $saveName1)->andReturn(0xffffffff); /// BUD_ERR_BUSY + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 6 * 4, 1); // Not available + + $this->shouldCall('_BupGetInfo_8c014bba')->with(7)->andReturn($bupAddresses[7]); + $this->shouldCall('_buIsExistFile')->with(7, $saveName1)->andReturn(0xffffff05); // BUD_ERR_FILE_NOT_FOUND + $this->shouldCall('_buIsExistFile')->with(7, $saveName2)->andReturn(0xffffff05); // BUD_ERR_FILE_NOT_FOUND + $this->shouldCall('_buIsExistFile')->with(7, $saveName3)->andReturn(0xffffff05); // BUD_ERR_FILE_NOT_FOUND + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 7 * 4, 4); // Saving is possible + + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 8 * 4, 3); + + $this->call('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3) + ->run(); + } + + public function test_fetchVmusNotEnoughSpace() + { + $this->resolveSymbols(); + + $this->initUint32Array( + $this->addressOf('_init_saveNames_8c044d50'), + [ + $saveName1 = $this->allocString('TOKYOBUS.001'), + $saveName2 = $this->allocString('TOKYOBUS.002'), + $saveName3 = $this->allocString('TOKYOBUS.003'), + $saveName4 = $this->allocString(''), + ] + ); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [0,0,0,0,0,0,0,0,0,0] + ); + + $bupInfos = [ + [ // Not enough space + 'ready' => 1, + 'free_user_blocks' => 2, + 'connect' => 1, + 'work' => 1, + ], [ + 'ready' => 0, + 'free_user_blocks' => 0, + 'connect' => 0, + 'work' => 0, + ], [ + 'ready' => 0, + 'free_user_blocks' => 0, + 'connect' => 0, + 'work' => 0, + ], [ + 'ready' => 0, + 'free_user_blocks' => 0, + 'connect' => 0, + 'work' => 0, + ], [ + 'ready' => 0, + 'free_user_blocks' => 0, + 'connect' => 0, + 'work' => 0, + ], [ + 'ready' => 0, + 'free_user_blocks' => 0, + 'connect' => 0, + 'work' => 0, + ], [ + 'ready' => 0, + 'free_user_blocks' => 0, + 'connect' => 0, + 'work' => 0, + ], [ + 'ready' => 0, + 'free_user_blocks' => 0, + 'connect' => 0, + 'work' => 0, + ], + ]; + $bupAddresses = $this->initBackupInfos($bupInfos); + + $this->shouldCall('_BupGetInfo_8c014bba')->with(0)->andReturn($bupAddresses[0]); + $this->shouldCall('_buIsExistFile')->with(0, $saveName1)->andReturn(0xffffff05); // BUD_ERR_FILE_NOT_FOUND + $this->shouldCall('_buIsExistFile')->with(0, $saveName2)->andReturn(0xffffff05); // BUD_ERR_FILE_NOT_FOUND + $this->shouldCall('_buIsExistFile')->with(0, $saveName3)->andReturn(0xffffff05); // BUD_ERR_FILE_NOT_FOUND + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 0 * 4, 2); // Not enough space + + $this->shouldCall('_BupGetInfo_8c014bba')->with(1)->andReturn($bupAddresses[1]); + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 1 * 4, 0); + $this->shouldCall('_BupGetInfo_8c014bba')->with(2)->andReturn($bupAddresses[2]); + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 2 * 4, 0); + $this->shouldCall('_BupGetInfo_8c014bba')->with(3)->andReturn($bupAddresses[3]); + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 3 * 4, 0); + $this->shouldCall('_BupGetInfo_8c014bba')->with(4)->andReturn($bupAddresses[4]); + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 4 * 4, 0); + $this->shouldCall('_BupGetInfo_8c014bba')->with(5)->andReturn($bupAddresses[5]); + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 5 * 4, 0); + $this->shouldCall('_BupGetInfo_8c014bba')->with(6)->andReturn($bupAddresses[6]); + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 6 * 4, 0); + $this->shouldCall('_BupGetInfo_8c014bba')->with(7)->andReturn($bupAddresses[7]); + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 7 * 4, 0); + + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + 8 * 4, 3); + + $this->call('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3) + ->run(); + } + + private function resolveSymbols(): void + { + $this->setSize('_init_saveNames_8c044d50', 4 * 4); + $this->setSize('_var_vmuStatus_8c226048', 4 * 9); + + // Functions + $this->setSize('_BupGetInfo_8c014bba', 4); + $this->setSize('_BupMount_8c014c00', 4); + } + + private function initUint32Array(int $address, array $values): void + { + foreach ($values as $i => $value) { + $this->initUint32($address + $i * 4, $value); + } + } + + private function initBackupInfo($i, $info) + { + $address = $this->addressOf('_gBupInfo_8c1bc4ac') + $i * 0x5c; + $this->initUint32Array($address, array_fill(0, 0x5c / 4, 0)); + $this->initUint16($address + 0x0, $info['ready']); + $this->initUint16($address + 0x3a, $info['free_user_blocks']); + $this->initUint16($address + 0x4c, $info['connect']); + $this->initUint16($address + 0x50, $info['work']); + return $address; + } + + private function initBackupInfos(array $infos) + { + $addresses = []; + foreach ($infos as $i => $info) { + $addresses[] = $this->initBackupInfo($i, $info); + } + return $addresses; + } + + // private function isAsmObject(): bool + // { + // return str_ends_with($this->objectFile, '_src.obj'); + // } +}; diff --git a/tests/0193c8_vm_menu/1967c_VmMenuUpdateVmuStatus.php b/tests/0193c8_vm_menu/1967c_VmMenuUpdateVmuStatus.php new file mode 100644 index 0000000..916e1b9 --- /dev/null +++ b/tests/0193c8_vm_menu/1967c_VmMenuUpdateVmuStatus.php @@ -0,0 +1,306 @@ +resolveSymbols(); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [0,0,0,0,0,0,0,0,0,0] + ); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + // Not connected + $bupInfoData = [ + 'ready' => 1, + 'free_user_blocks' => 1, + 'connect' => 0, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + $drive * 4, 0); + + $this->call('_VmMenuUpdateVmuStatus_1967c') + ->with($drive, $saveName, 3) + ->run(); + } + + public function test_notMounted() + { + $this->resolveSymbols(); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [0,0,0,0,0,0,0,0,0,0] + ); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + // Not mounted + $bupInfoData = [ + 'ready' => 0, + 'free_user_blocks' => 1, + 'connect' => 1, + 'work' => 0, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + $this->shouldCall('_BupMount_8c014c00')->with($drive); + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + $drive * 4, 0); + + $this->call('_VmMenuUpdateVmuStatus_1967c') + ->with($drive, $saveName, 3) + ->run(); + } + + public function test_notReady() + { + $this->resolveSymbols(); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [0,0,0,0,0,0,0,0,0,0] + ); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + // Not ready + $bupInfoData = [ + 'ready' => 0, + 'free_user_blocks' => 1, + 'connect' => 1, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + $drive * 4, 0); + + $this->call('_VmMenuUpdateVmuStatus_1967c') + ->with($drive, $saveName, 3) + ->run(); + } + + public function test_saveExists() + { + $this->resolveSymbols(); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [0,0,0,0,0,0,0,0,0,0] + ); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + // Save exists + $bupInfoData = [ + 'ready' => 1, + 'free_user_blocks' => 1, + 'connect' => 1, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + $this->shouldCall('_buIsExistFile')->with($drive)->andReturn(0); // BUD_ERR_OK + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + $drive * 4, 5); + + $this->call('_VmMenuUpdateVmuStatus_1967c') + ->with($drive, $saveName, 3) + ->run(); + } + + public function test_saveExists2() + { + $this->resolveSymbols(); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [0,0,0,0,0,0,0,0,0,0] + ); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + // Save exists 2 + $bupInfoData = [ + 'ready' => 1, + 'free_user_blocks' => 3, + 'connect' => 1, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + $this->shouldCall('_buIsExistFile')->with($drive)->andReturn(0); // BUD_ERR_OK + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + $drive * 4, 6); + + $this->call('_VmMenuUpdateVmuStatus_1967c') + ->with($drive, $saveName, 3) + ->run(); + } + + public function test_saveUnformat() + { + $this->resolveSymbols(); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [0,0,0,0,0,0,0,0,0,0] + ); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + $bupInfoData = [ + 'ready' => 1, + 'free_user_blocks' => 4, + 'connect' => 1, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + $this->shouldCall('_buIsExistFile')->with($drive)->andReturn(0xffffff03); // BUD_ERR_UNFORMAT + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + $drive * 4, 1); + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + $drive * 4, 1); + + $this->call('_VmMenuUpdateVmuStatus_1967c') + ->with($drive, $saveName, 3) + ->run(); + } + + public function test_saveBusy() + { + $this->resolveSymbols(); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [0,0,0,0,0,0,0,0,0,0] + ); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + $bupInfoData = [ + 'ready' => 1, + 'free_user_blocks' => 4, + 'connect' => 1, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + $this->shouldCall('_buIsExistFile')->with($drive)->andReturn(0xffffffff); // BUD_ERR_BUSY + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + $drive * 4, 1); + + $this->call('_VmMenuUpdateVmuStatus_1967c') + ->with($drive, $saveName, 3) + ->run(); + } + + public function test_saveIsPossible() + { + $this->resolveSymbols(); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [0,0,0,0,0,0,0,0,0,0] + ); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + $bupInfoData = [ + 'ready' => 1, + 'free_user_blocks' => 4, + 'connect' => 1, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + $this->shouldCall('_buIsExistFile')->with($drive)->andReturn(0xffffff05); // BUD_ERR_FILE_NOT_FOUND + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + $drive * 4, 4); + + $this->call('_VmMenuUpdateVmuStatus_1967c') + ->with($drive, $saveName, 3) + ->run(); + } + + public function test_notEnoughSpace() + { + $this->resolveSymbols(); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [0,0,0,0,0,0,0,0,0,0] + ); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + $bupInfoData = [ + 'ready' => 1, + 'free_user_blocks' => 2, + 'connect' => 1, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + $this->shouldCall('_buIsExistFile')->with($drive)->andReturn(0xffffff05); // BUD_ERR_FILE_NOT_FOUND + $this->shouldWriteLong($this->addressOf('_var_vmuStatus_8c226048') + $drive * 4, 2); + + $this->call('_VmMenuUpdateVmuStatus_1967c') + ->with($drive, $saveName, 3) + ->run(); + } + + private function resolveSymbols(): void + { + $this->setSize('_var_vmuStatus_8c226048', 4 * 9); + + // Functions + $this->setSize('_BupGetInfo_8c014bba', 4); + $this->setSize('_BupMount_8c014c00', 4); + } + + private function initUint32Array(int $address, array $values): void + { + foreach ($values as $i => $value) { + $this->initUint32($address + $i * 4, $value); + } + } + + private function initBackupInfo($i, $info) + { + $address = $this->addressOf('_gBupInfo_8c1bc4ac') + $i * 0x5c; + $this->initUint32Array($address, array_fill(0, 0x5c / 4, 0)); + $this->initUint16($address + 0x0, $info['ready']); + $this->initUint16($address + 0x3a, $info['free_user_blocks']); + $this->initUint16($address + 0x4c, $info['connect']); + $this->initUint16($address + 0x50, $info['work']); + return $address; + } + + // private function isAsmObject(): bool + // { + // return str_ends_with($this->objectFile, '_src.obj'); + // } +}; diff --git a/tests/0193c8_vm_menu/19730_saveFileExists.php b/tests/0193c8_vm_menu/19730_saveFileExists.php new file mode 100644 index 0000000..cd3f5aa --- /dev/null +++ b/tests/0193c8_vm_menu/19730_saveFileExists.php @@ -0,0 +1,188 @@ +resolveSymbols(); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + // Not connected + $bupInfoData = [ + 'ready' => 1, + 'free_user_blocks' => 1, + 'connect' => 0, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + + $this->call('_saveFileExists_19730') + ->with($drive, $saveName) + ->shouldReturn(0) + ->run(); + } + + public function test_notMounted() + { + $this->resolveSymbols(); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + // Not connected + $bupInfoData = [ + 'ready' => 1, + 'free_user_blocks' => 1, + 'connect' => 1, + 'work' => 0, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + + $this->call('_saveFileExists_19730') + ->with($drive, $saveName) + ->shouldReturn(0) + ->run(); + } + + public function test_notReady() + { + $this->resolveSymbols(); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + // Not connected + $bupInfoData = [ + 'ready' => 0, + 'free_user_blocks' => 1, + 'connect' => 1, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + + $this->call('_saveFileExists_19730') + ->with($drive, $saveName) + ->shouldReturn(0) + ->run(); + } + + public function test_saveExists() + { + $this->resolveSymbols(); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + // Save exists + $bupInfoData = [ + 'ready' => 1, + 'free_user_blocks' => 1, + 'connect' => 1, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + $this->shouldCall('_buIsExistFile')->with($drive)->andReturn(0); // BUD_ERR_OK + + $this->call('_saveFileExists_19730') + ->with($drive, $saveName) + ->shouldReturn(1) + ->run(); + } + + public function test_saveUnformat() + { + $this->resolveSymbols(); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + // Save exists + $bupInfoData = [ + 'ready' => 1, + 'free_user_blocks' => 1, + 'connect' => 1, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + $this->shouldCall('_buIsExistFile')->with($drive)->andReturn(0xffffff03); // BUD_ERR_UNFORMAT + + $this->call('_saveFileExists_19730') + ->with($drive, $saveName) + ->shouldReturn(0) + ->run(); + } + + public function test_saveBusy() + { + $this->resolveSymbols(); + + $drive = random_int(0, 7); + $saveName = $this->allocString('TOKYOBUS.003'); + + // Save exists + $bupInfoData = [ + 'ready' => 1, + 'free_user_blocks' => 1, + 'connect' => 1, + 'work' => 1, + ]; + $bupInfo = $this->initBackupInfo(1, $bupInfoData); + + $this->shouldCall('_BupGetInfo_8c014bba')->with($drive)->andReturn($bupInfo); + $this->shouldCall('_buIsExistFile')->with($drive)->andReturn(0xffffffff); // BUD_ERR_BUSY + + $this->call('_saveFileExists_19730') + ->with($drive, $saveName) + ->shouldReturn(0) + ->run(); + } + + private function resolveSymbols(): void + { + $this->setSize('_var_vmuStatus_8c226048', 4 * 9); + + // Functions + $this->setSize('_BupGetInfo_8c014bba', 4); + $this->setSize('_BupMount_8c014c00', 4); + } + + private function initUint32Array(int $address, array $values): void + { + foreach ($values as $i => $value) { + $this->initUint32($address + $i * 4, $value); + } + } + + private function initBackupInfo($i, $info) + { + $address = $this->addressOf('_gBupInfo_8c1bc4ac') + $i * 0x5c; + $this->initUint32Array($address, array_fill(0, 0x5c / 4, 0)); + $this->initUint16($address + 0x0, $info['ready']); + $this->initUint16($address + 0x3a, $info['free_user_blocks']); + $this->initUint16($address + 0x4c, $info['connect']); + $this->initUint16($address + 0x50, $info['work']); + return $address; + } + + // private function isAsmObject(): bool + // { + // return str_ends_with($this->objectFile, '_src.obj'); + // } +}; diff --git a/tests/0193c8_vm_menu/19788_initCursorLerp.php b/tests/0193c8_vm_menu/19788_initCursorLerp.php new file mode 100644 index 0000000..ce6e12b --- /dev/null +++ b/tests/0193c8_vm_menu/19788_initCursorLerp.php @@ -0,0 +1,56 @@ +resolveSymbols(); + + $drive = 1; + $saveName = $this->allocString('TOKYOBUS.003'); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x20, fdec(290.0)); + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x24, fdec(194.0)); + + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x28, fdec(255.0)); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x2c, fdec(98.0)); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x30, fdec((255.0 - 290.0) / 6)); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x34, fdec((98.0 - 194.0) / 6)); + + $this->call('_initCursorLerp_19788')->with($drive)->run(); + } + + private function resolveSymbols(): void + { + $this->setSize('_menuState_8c1bc7a8', 0x6c); + + $this->setSize('_init_vmIconsPositions_8c044d7c', 0x24); + $this->initUint32Array($this->addressOf('_init_vmIconsPositions_8c044d7c'), [ + fdec(185.0), fdec(98.0), + fdec(255.0), fdec(98.0), + fdec(325.0), fdec(98.0), + fdec(395.0), fdec(98.0), + fdec(150.0), fdec(194.0), + fdec(220.0), fdec(194.0), + fdec(290.0), fdec(194.0), + fdec(360.0), fdec(194.0), + fdec(430.0), fdec(194.0), + ]); + } + + private function initUint32Array(int $address, array $values): void + { + foreach ($values as $i => $value) { + $this->initUint32($address + $i * 4, $value); + } + } +}; diff --git a/tests/0193c8_vm_menu/197c0_drawVmMenu.php b/tests/0193c8_vm_menu/197c0_drawVmMenu.php new file mode 100644 index 0000000..51d8935 --- /dev/null +++ b/tests/0193c8_vm_menu/197c0_drawVmMenu.php @@ -0,0 +1,175 @@ +resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x20, fdec(290.0)); + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x24, fdec(194.0)); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [0,1,2,4,5,6,0,1,2,3] + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x10, + 290.0, 194.0, -4.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x09, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x0a, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x0b, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x0c, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x0d, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x0f, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x07, + 0.0, 0.0, -6.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x00, 0x01, + 0.0, 0.0, -4.3 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x00, 0x00, + 0.0, 0.0, -7.0 + ); + + $this->call('_drawVmMenu_197c0')->run(); + } + + public function test_B() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x20, fdec(290.0)); + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x24, fdec(194.0)); + + $this->initUint32Array( + $this->addressOf('_var_vmuStatus_8c226048'), + [2,1,0,6,5,4,2,1,0,3] + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x10, + 290.0, 194.0, -4.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x08, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x09, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x0b, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x0c, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x0d, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x0e, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x0f, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x07, + 0.0, 0.0, -6.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x00, 0x01, + 0.0, 0.0, -4.3 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x00, 0x00, + 0.0, 0.0, -7.0 + ); + + $this->call('_drawVmMenu_197c0')->run(); + } + + private function resolveSymbols(): void + { + $this->setSize('_menuState_8c1bc7a8', 0x6c); + $this->setSize('_init_vmIconsPositions_8c044d7c', 9 * 8); + $this->initUint32Array($this->addressOf('_init_vmIconsPositions_8c044d7c'), [ + fdec(185.0), fdec(98.0), + fdec(255.0), fdec(98.0), + fdec(325.0), fdec(98.0), + fdec(395.0), fdec(98.0), + fdec(150.0), fdec(194.0), + fdec(220.0), fdec(194.0), + fdec(290.0), fdec(194.0), + fdec(360.0), fdec(194.0), + fdec(430.0), fdec(194.0), + ]); + + // Functions + $this->setSize('_drawSprite_8c014f54', 0x4); + } + + private function initUint32Array(int $address, array $values): void + { + foreach ($values as $i => $value) { + $this->initUint32($address + $i * 4, $value); + } + } +}; diff --git a/tests/0193c8_vm_menu/19852_drawVmuWarning.php b/tests/0193c8_vm_menu/19852_drawVmuWarning.php new file mode 100644 index 0000000..132ed22 --- /dev/null +++ b/tests/0193c8_vm_menu/19852_drawVmuWarning.php @@ -0,0 +1,79 @@ +resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x3c, 0x0); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x11, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x00, + 2, + 228.0, 304.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x00, 0, + 0.0, 0.0, -7.0 + ); + + $this->call('_DrawVmWarning_19852')->run(); + } + + public function test_drawSecondOption() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x3c, 0x1); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x0c, 0x11, + 0.0, 0.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x00, + 3, + 228.0, 304.0, -5.0 + ); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x00, 0, + 0.0, 0.0, -7.0 + ); + + $this->call('_DrawVmWarning_19852')->run(); + } + + private function resolveSymbols(): void + { + $this->setSize('_menuState_8c1bc7a8', 0x6c); + + // Functions + $this->setSize('_drawSprite_8c014f54', 0x4); + } + + private function isAsmObject(): bool + { + return str_ends_with($this->objectFile, '_src.obj'); + } + + private function entryName(): string + { + return $this->isAsmObject() + ? '_VmMenuTask_198a0' + : '_VmMenuTask_198a0'; + } +}; diff --git a/tests/0193c8_vm_menu/198a0_VmMenuTask.php b/tests/0193c8_vm_menu/198a0_VmMenuTask.php new file mode 100644 index 0000000..3e1e29d --- /dev/null +++ b/tests/0193c8_vm_menu/198a0_VmMenuTask.php @@ -0,0 +1,1244 @@ +resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x68, 3); // timer + + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x68, 4); + + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case0_advancesToCase1() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x68, 4); // timer + + $this->initUint32($this->addressOf('_var_vmuStatus_8c226048') + 0x00, 0); + $this->initUint32($this->addressOf('_var_vmuStatus_8c226048') + 0x04, 4); + + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x68, 5); + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3) + ->andReturn(1); + + $this->shouldWriteMenuState(1); + + $this->shouldCall('_initCursorLerp_19788')->with(1); + + // TODO: Move implementation to Simulator + // TODO: Handle calling conventions for expectations in Simulator + $menuState = $this->addressOf('_menuState_8c1bc7a8'); + $mvn = function () use ($menuState) { + $src = $this->registers[2]; + $dst = $this->registers[1]; + $len = $this->registers[0]; + + if (!$src->equals($menuState + 0x28)) { + throw new \Exception('Unexpected move source ' . $this->registers[2]->readable()); + } + + if (!$dst->equals($menuState + 0x20)) { + throw new \Exception('Unexpected move dest ' . $this->registers[1]->readable()); + } + + for ($i = 0; $i < $len->value; $i++) { + $this->memory->writeUInt8($dst->value + $i, $this->readUInt8($src->value + $i)); + } + }; + + $this->shouldCall('__quick_evn_mvn')->do($mvn); + $this->shouldCall('_swapMessageBoxFor_8c02aefc')->with(0xcafe0004); + $this->shouldCall('_FUN_8c010d8a'); + $this->shouldCall('_snd_8c010cd6'); + + $this->shouldCall('_push_fadein_8c022a9c')->with(10); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case0_advancesToCase6() + { + $this->resolveSymbols(); + + $state = $this->alloc(8 * 4); + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x68, 4); // timer + $this->initUint32($this->addressOf('_var_vmuStatus_8c226048') + 0x00, 0); + $this->initUint32($this->addressOf('_var_vmuStatus_8c226048') + 0x04, 4); + + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x68, 5); + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3) + ->andReturn(0); + + // Advance state + $this->shouldWriteMenuState(6); + $this->shouldWriteLong($state + 0x08, 0); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x3c, 0); + + $this->shouldCall('_push_fadein_8c022a9c')->with(10); + + $this->call($this->entryName())->with($state, 0)->run(); + } + + public function test_case1_waitsForFadeIn() + { + $this->resolveSymbols(); + + $state = $this->alloc(8 * 4); + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 1); // state + $this->initUint32($this->addressOf('_isFading_8c226568'), 1); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldWriteSelectedSlot(0); + + $this->call($this->entryName())->with($state, 0)->run(); + } + + public function test_case1_advancesAfterFade() + { + $this->resolveSymbols(); + + $state = $this->alloc(8 * 4); + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 1); // state + $this->initUint32($this->addressOf('_isFading_8c226568'), 0); + + $this->shouldWriteMenuState(2); + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldWriteSelectedSlot(0); + + $this->call($this->entryName())->with($state, 0)->run(); + } + + public function test_case2_startsInAnAvailableSlot() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 2); // state + // Init slots + $this->initUint32($this->addressOf('_var_vmuStatus_8c226048') + 0 * 4, 0); // Unavailable + $this->initUint32($this->addressOf('_var_vmuStatus_8c226048') + 1 * 4, 0); // Unavailable + $this->initUint32($this->addressOf('_var_vmuStatus_8c226048') + 2 * 4, 4); // Available + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3); + + $this->shouldCall('_sdMidiPlay')->with(0xbeef0000, 1, 3, 0); + $this->shouldCall('_initCursorLerp_19788')->with(2); + $this->shouldWriteMenuState(3); + $this->shouldCall('_swapMessageBoxFor_8c02aefc')->with(0xcafe0004); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0x20); + $this->shouldWriteSelectedSlot(2); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case2_moveRightOnUpperRow() + { + $this->runSelectTest( + slots: [0, 4, 0, 4], + initialSlot: 1, + expectedSlot: 3, + press: PDD_DGT_KR + ); + } + + public function test_case2_loopRightOnUpperRow() + { + $this->runSelectTest( + slots: [0, 4, 0, 4], + initialSlot: 3, + expectedSlot: 1, + press: PDD_DGT_KR + ); + } + + public function test_case2_doNotMoveRightWhenSingleSlotOnUpperRow() + { + $this->runSelectTest( + slots: [0, 4, 0, 0], + initialSlot: 1, + expectedSlot: 1, + press: PDD_DGT_KR + ); + } + + public function test_case2_moveLeftOnUpperRow() + { + $this->runSelectTest( + slots: [0, 4, 0, 4], + initialSlot: 3, + expectedSlot: 1, + press: PDD_DGT_KL + ); + } + + public function test_case2_loopLeftOnUpperRow() + { + $this->runSelectTest( + slots: [0, 4, 0, 4], + initialSlot: 1, + expectedSlot: 3, + press: PDD_DGT_KL + ); + } + + public function test_case2_doNotMoveLeftWhenSingleSlotOnUpperRow() + { + $this->runSelectTest( + slots: [0, 4, 0, 0], + initialSlot: 1, + expectedSlot: 1, + press: PDD_DGT_KL + ); + } + + public function test_case2_moveDownOnUpperRow() + { + $this->runSelectTest( + slots: [ + 0, 4, 0, 4, + 0, 4, 0, 4, 3 + ], + initialSlot: 1, + expectedSlot: 5, + press: PDD_DGT_KD + ); + } + + public function test_case2_preservesColumnWhenMovingDownOnUpperRow() + { + $this->runSelectTest( + slots: [ + 0, 4, 0, 4, + 0, 4, 0, 4, 3 + ], + initialSlot: 3, + expectedSlot: 7, + press: PDD_DGT_KD + ); + } + + public function test_case2_moveRightOnLowerRow() + { + $this->runSelectTest( + slots: [ + 0, 4, 0, 4, + 0, 4, 0, 4, 3 + ], + initialSlot: 5, + expectedSlot: 7, + press: PDD_DGT_KR + ); + } + + public function test_case2_loopRightOnLowerRow() + { + $this->runSelectTest( + slots: [0, 4, 0, 4], + initialSlot: 3, + expectedSlot: 1, + press: PDD_DGT_KR + ); + } + + public function test_case2_doNotMoveRightWhenSingleSlotOnLowerRow() + { + $this->runSelectTest( + slots: [ + 0, 4, 0, 0, + 0, 0, 0, 0, 3, + ], + initialSlot: 8, + expectedSlot: 8, + press: PDD_DGT_KR + ); + } + + public function test_case2_moveLeftOnLowerRow() + { + $this->runSelectTest( + slots: [ + 0, 4, 0, 4, + 0, 4, 0, 4, 3 + ], + initialSlot: 7, + expectedSlot: 5, + press: PDD_DGT_KL + ); + } + + public function test_case2_loopLeftOnLowerRow() + { + $this->runSelectTest( + slots: [ + 0, 4, 0, 4, + 0, 4, 0, 4, 3 + ], + initialSlot: 5, + expectedSlot: 8, + press: PDD_DGT_KL + ); + } + + public function test_case2_doNotMoveLeftWhenSingleSlotOnLowerRow() + { + $this->runSelectTest( + slots: [ + 0, 4, 0, 0, + 0, 0, 0, 0, 3, + ], + initialSlot: 8, + expectedSlot: 8, + press: PDD_DGT_KL + ); + } + + public function test_case2_moveUpOnLowerRow() + { + $this->runSelectTest( + slots: [ + 0, 4, 0, 0, + 0, 4, 0, 0, 3, + ], + initialSlot: 5, + expectedSlot: 1, + press: PDD_DGT_KU + ); + } + + public function test_case2_preservesColumnWhenMovingUpOnLowerRow() + { + $this->runSelectTest( + slots: [ + 0, 4, 0, 4, + 0, 4, 0, 4, 3, + ], + initialSlot: 7, + expectedSlot: 3, + press: PDD_DGT_KU + ); + } + + public function test_case2_findsLastUpperSlotWhenWhenMovingUpOnLowerRow() + { + $this->runSelectTest( + slots: [ + 0, 4, 0, 0, + 0, 4, 0, 4, 3, + ], + initialSlot: 7, + expectedSlot: 1, + press: PDD_DGT_KU + ); + } + + public function test_case2_showConfirmMessageWhenSelectingAvailableSlot() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 2); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 0x10, PDD_DGT_TA); + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 4, 0, 0, + 0, 0, 0, 0, 3, + ]); + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3); + + $this->shouldCall('_sdMidiPlay')->with(0xbeef0000, 1, 0, 0); + $this->shouldCall('_swapMessageBoxFor_8c02aefc')->with("よろしいですか?"); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x6c, 1); + $this->shouldCall('_BupGetInfo_8c014bba')->with(1)->andReturn(0x5a5a5a5a); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x78, 0x5a5a5a5a); + $this->shouldWriteMenuState(4); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x3c, 0); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0x20); + $this->shouldWriteSelectedSlot(1); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case2_showConfirmMessageWhenSelectingExistingSave() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 2); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 0x10, PDD_DGT_TA); + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 5, 0, 0, + 0, 0, 0, 0, 3, + ]); + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3); + + $this->shouldCall('_sdMidiPlay')->with(0xbeef0000, 1, 0, 0); + $this->shouldCall('_swapMessageBoxFor_8c02aefc')->with("よろしいですか?"); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x6c, 1); + $this->shouldCall('_BupGetInfo_8c014bba')->with(1)->andReturn(0x5a5a5a5a); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x78, 0x5a5a5a5a); + $this->shouldWriteMenuState(4); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x3c, 0); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0x20); + $this->shouldWriteSelectedSlot(1); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case2_showConfirmMessageWhenSelectingExistingSaveB() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 2); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 0x10, PDD_DGT_TA); + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 6, 0, 0, + 0, 0, 0, 0, 3, + ]); + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3); + + $this->shouldCall('_sdMidiPlay')->with(0xbeef0000, 1, 0, 0); + $this->shouldCall('_swapMessageBoxFor_8c02aefc')->with("よろしいですか?"); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x6c, 1); + $this->shouldCall('_BupGetInfo_8c014bba')->with(1)->andReturn(0x5a5a5a5a); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x78, 0x5a5a5a5a); + $this->shouldWriteMenuState(4); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x3c, 0); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0x20); + $this->shouldWriteSelectedSlot(1); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case2_showConfirmMessageWhenProceedingWithoutSaving() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 2); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 8); // slot + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 0x10, PDD_DGT_TA); + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 4, 0, 0, + 0, 0, 0, 0, 3, + ]); + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3); + + $this->shouldCall('_sdMidiPlay')->with(0xbeef0000, 1, 0, 0); + $this->shouldCall('_swapMessageBoxFor_8c02aefc')->with("ファイルを設定しないとセーブできませんこのままゲームを開始してもよろしいですか?"); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x18, 5); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x3c, 0); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0x20); + $this->shouldWriteSelectedSlot(8); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case2_playFailSoundOnInvalidOption() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 2); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 0x10, PDD_DGT_TA); + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 2, 0, 0, + 0, 0, 0, 0, 3, + ]); + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3); + + $this->shouldCall('_sdMidiPlay')->with(0xbeef0000, 1, 2, 0); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x3c, 0); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0x20); + $this->shouldWriteSelectedSlot(1); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case2_MoveUpFromNinithSlot() + { + $this->runSelectTest( + slots: [ + 4, 0, 4, 0, + 0, 4, 0, 0, 3, + ], + initialSlot: 8, + expectedSlot: 2, + press: PDD_DGT_KU + ); + } + + public function test_case3_waitsForInterpolation() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 3); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + + $this->shouldCall('_interpolated_8c016d2c')->andReturn(0); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0x20); + $this->shouldWriteSelectedSlot(1); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case3_advancesWhenInterpolated() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 3); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 4, 0, 0, + 0, 0, 0, 0, 3, + ]); + + $this->shouldCall('_interpolated_8c016d2c')->andReturn(1); + + $this->shouldWriteMenuState(2); + $this->shouldCall('_swapMessageBoxFor_8c02aefc')->with(0xcafe0004); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0x20); + $this->shouldWriteSelectedSlot(1); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case4_waitsForUserInput() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 4); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 4, 0, 0, + 0, 0, 0, 0, 3, + ]); + + $this->shouldCall('_promptHandleBinary_16caa') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x3c) + ->andReturn(0); + + $this->shouldCall('_drawSprite_8c014f54') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x00, + 2, + 228.0, + 304.0, + -5.0, + ); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0xff); + $this->shouldWriteSelectedSlot(1); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case4_advancesOnOk() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 4); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); // slot + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x6c, 3); // slot + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 4, 0, 0, + 0, 0, 0, 0, 3, + ]); + + $this->shouldCall('_promptHandleBinary_16caa') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x3c) + ->do(function ($params) { + $this->memory->writeUInt32($params[0], U32::of(1)); + }) + ->andReturn(1); + + $this->shouldWriteLongTo('_var_selectedVm_8c1ba34c', 3); + $this->shouldWriteMenuState(8); + $this->shouldCall('_push_fadeout_8c022b60')->with(10); + + $this->shouldCall('_drawSprite_8c014f54') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x00, + 3, + 228.0, + 304.0, + -5.0, + ); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0xff); + $this->shouldWriteSelectedSlot(3); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case4_goesBackOnCancel() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 4); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); // slot + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x6c, 3); // slot + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 4, 0, 4, + 0, 0, 0, 0, 3, + ]); + + $this->shouldCall('_promptHandleBinary_16caa') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x3c) + ->do(function ($params) { + $this->memory->writeUInt32($params[0], U32::of(2)); + }) + ->andReturn(2); + + $this->shouldCall('_swapMessageBoxFor_8c02aefc')->with(0xcafe0004); + $this->shouldWriteMenuState(2); + + $this->shouldCall('_drawSprite_8c014f54') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x00, + 4, + 228.0, + 304.0, + -5.0, + ); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0xff); + $this->shouldWriteSelectedSlot(3); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case5_waitsForUserInput() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 5); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 8); // slot + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 4, 0, 0, + 0, 0, 0, 0, 3, + ]); + + $this->shouldCall('_promptHandleBinary_16caa') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x3c) + ->andReturn(0); + + $this->shouldCall('_drawSprite_8c014f54') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x00, + 2, + 228.0, + 304.0, + -5.0, + ); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0xff); + $this->shouldWriteSelectedSlot(8); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case5_advancesOnOk() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 5); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 8); // slot + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x6c, 8); // slot + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 4, 0, 0, + 0, 0, 0, 0, 3, + ]); + + $this->shouldCall('_promptHandleBinary_16caa') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x3c) + ->do(function ($params) { + $this->memory->writeUInt32($params[0], U32::of(1)); + }) + ->andReturn(1); + + $this->shouldWriteLongTo('_var_selectedVm_8c1ba34c', -1); + $this->shouldCall('_FUN_8c01895e'); + $this->shouldWriteMenuState(9); + $this->shouldCall('_FUN_8c010bae')->with(0); + $this->shouldCall('_FUN_8c010bae')->with(1); + $this->shouldCall('_push_fadeout_8c022b60')->with(10); + + $this->shouldCall('_drawSprite_8c014f54') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x00, + 3, + 228.0, + 304.0, + -5.0, + ); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0xff); + $this->shouldWriteSelectedSlot(8); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case5_goesBackOnCancel() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 5); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 8); // slot + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x6c, 8); // slot + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 4, 0, 4, + 0, 0, 0, 0, 3, + ]); + + $this->shouldCall('_promptHandleBinary_16caa') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x3c) + ->do(function ($params) { + $this->memory->writeUInt32($params[0], U32::of(2)); + }) + ->andReturn(2); + + $this->shouldCall('_swapMessageBoxFor_8c02aefc')->with(0xcafe0003); + $this->shouldWriteMenuState(2); + + $this->shouldCall('_drawSprite_8c014f54') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x00, + 4, + 228.0, + 304.0, + -5.0, + ); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0xff); + $this->shouldWriteSelectedSlot(8); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case6_waitsForFadeIn() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 6); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $this->initUint32($this->addressOf('_isFading_8c226568'), 1); + + $this->shouldCall('_DrawVmWarning_19852'); + $this->shouldWriteSelectedSlot(1); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case6_advancesAfterFade() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 6); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $this->initUint32($this->addressOf('_isFading_8c226568'), 0); + + $this->shouldWriteMenuState(7); + $this->shouldCall('_DrawVmWarning_19852'); + $this->shouldWriteSelectedSlot(1); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case7_subcase0_waitsForPlayerInput() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 7); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $task = $this->alloc(0x0c); + $this->initUint32($task + 0x08, 0); // substate + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3) + ->andReturn(0); + + $this->shouldCall('_promptHandleBinary_16caa') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x3c) + ->andReturn(0); + + $this->shouldCall('_DrawVmWarning_19852'); + + $this->call($this->entryName())->with($task, 0)->run(); + } + + public function test_case7_subcase0_advancesOnOk() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 7); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $task = $this->alloc(0x0c); + $this->initUint32($task + 0x08, 0); // substate + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3) + ->andReturn(0); + + $this->shouldCall('_promptHandleBinary_16caa') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x3c) + ->andReturn(1); + + $this->shouldWriteLongTo('_var_selectedVm_8c1ba34c', -1); + $this->shouldCall('_FUN_8c01895e'); + $this->shouldWrite($task + 0x08, 2); // substate + $this->shouldCall('_push_fadeout_8c022b60')->with(10); + + $this->shouldCall('_DrawVmWarning_19852'); + + $this->call($this->entryName())->with($task, 0)->run(); + } + + public function test_case7_subcase0_goesBackOnCancel() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 7); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $task = $this->alloc(0x0c); + $this->initUint32($task + 0x08, 0); // substate + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), [ + 0, 0, 0, 0, + 0, 0, 4, 0, 3, + ]); + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3) + ->andReturn(0); + + $this->shouldCall('_promptHandleBinary_16caa') + ->with($this->addressOf('_menuState_8c1bc7a8') + 0x3c) + ->andReturn(2); + + $this->shouldCall('_initCursorLerp_19788')->with(6); + $menuState = $this->addressOf('_menuState_8c1bc7a8'); + $mvn = function () use ($menuState) { + $src = $this->registers[2]; + $dst = $this->registers[1]; + $len = $this->registers[0]; + + if (!$src->equals($menuState + 0x28)) { + throw new \Exception('Unexpected move source ' . $this->registers[2]->readable()); + } + + if (!$dst->equals($menuState + 0x20)) { + throw new \Exception('Unexpected move dest ' . $this->registers[1]->readable()); + } + + for ($i = 0; $i < $len->value; $i++) { + $this->memory->writeUInt8($dst->value + $i, $this->readUInt8($src->value + $i)); + } + }; + $this->shouldCall('__quick_evn_mvn')->do($mvn); + + $this->shouldCall('_swapMessageBoxFor_8c02aefc', 0xcafe0006); + $this->shouldWrite($task + 0x08, 3); // substate + $this->shouldCall('_push_fadeout_8c022b60')->with(10); + + $this->shouldCall('_DrawVmWarning_19852'); + + $this->call($this->entryName())->with($task, 0)->run(); + } + + public function test_case7_subcase0_else() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 7); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $task = $this->alloc(0x0c); + $this->initUint32($task + 0x08, 0); // substate + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3) + ->andReturn(1); + $this->shouldWriteLong($task + 0x08, 1); // substate + $this->shouldCall('_push_fadeout_8c022b60')->with(10); + + $this->shouldCall('_DrawVmWarning_19852'); + + $this->call($this->entryName())->with($task, 0)->run(); + } + + public function test_case7_subcase1_waitsForFade() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 7); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $task = $this->alloc(0x0c); + $this->initUint32($task + 0x08, 1); // substate + $this->initUint32($this->addressOf('_isFading_8c226568'), 1); + + $this->shouldCall('_DrawVmWarning_19852'); + + $this->call($this->entryName())->with($task, 0)->run(); + } + + public function test_case7_subcase1_advancesAfterFade() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 7); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $task = $this->alloc(0x0c); + $this->initUint32($task + 0x08, 1); // substate + $this->initUint32($this->addressOf('_isFading_8c226568'), 0); + + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x68, 10); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0); + + $this->call($this->entryName())->with($task, 0)->run(); + } + + public function test_case7_subcase2_waitsForFade() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 7); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $task = $this->alloc(0x0c); + $this->initUint32($task + 0x08, 2); // substate + $this->initUint32($this->addressOf('_isFading_8c226568'), 1); + + $this->shouldCall('_DrawVmWarning_19852'); + + $this->call($this->entryName())->with($task, 0)->run(); + } + + public function test_case7_subcase2_advancedAfterFade() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 7); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $task = $this->alloc(0x0c); + $this->initUint32($task + 0x08, 2); // substate + $this->initUint32($this->addressOf('_isFading_8c226568'), 0); + + $this->shouldCall('_switchToMainMenuTask_8c01a09a')->with($task); + + $this->call($this->entryName())->with($task, 0)->run(); + } + + public function test_case7_subcase3_waitsForFade() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 7); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $task = $this->alloc(0x0c); + $this->initUint32($task + 0x08, 3); // substate + $this->initUint32($this->addressOf('_isFading_8c226568'), 1); + + $this->shouldCall('_DrawVmWarning_19852'); + + $this->call($this->entryName())->with($task, 0)->run(); + } + + public function test_case7_subcase3() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 7); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 1); // slot + $task = $this->alloc(0x0c); + $this->initUint32($task + 0x08, 3); // substate + $this->initUint32($this->addressOf('_isFading_8c226568'), 0); + + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x18, 10); + //$this->shouldCall('_switchToMainMenuTask_8c01a09a'); + + $this->call($this->entryName())->with($task, 0)->run(); + } + + public function test_case8_waitsForFade() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 8); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); // slot + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x3c, 0); + $this->initUint32($this->addressOf('_isFading_8c226568'), 1); + + $this->shouldCall('_drawSprite_8c014f54')->with( + $this->addressOf('_menuState_8c1bc7a8') + 0x00, + 2, + 228.0, + 304.0, + -5.0 + ); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case8_advancesAfterFade() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 8); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); // slot + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x3c, 0); + $this->initUint32($this->addressOf('_isFading_8c226568'), 0); + + $this->shouldCall('_FUN_8c019334')->with(0xcafecafe); + + $this->call($this->entryName())->with(0xcafecafe, 0)->run(); + } + + public function test_case9_waitsForFade() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 9); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); // slot + $this->initUint32($this->addressOf('_isFading_8c226568'), 1); + $this->initUint32($this->addressOf('_init_8c03bd80'), 0); + + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case9_waitsFor8c03bd80() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 9); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); // slot + $this->initUint32($this->addressOf('_isFading_8c226568'), 0); + $this->initUint32($this->addressOf('_init_8c03bd80'), 1); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case9_advances() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 9); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); // slot + $this->initUint32($this->addressOf('_isFading_8c226568'), 0); + $this->initUint32($this->addressOf('_init_8c03bd80'), 0); + + $this->shouldCall('_switchToMainMenuTask_8c01a09a')->with(0xcafecafe); + + $this->call($this->entryName())->with(0xcafecafe, 0)->run(); + } + + public function test_case10_waitsForFade() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 10); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); // slot + $this->initUint32($this->addressOf('_isFading_8c226568'), 1); + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case10_advancesAfterFade() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 10); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); // slot + $this->initUint32($this->addressOf('_isFading_8c226568'), 0); + + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x18, 2); + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + public function test_case_default() + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 15); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); // slot + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x38, 3); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + private function resolveSymbols(): void + { + $this->setSize('_menuState_8c1bc7a8', 0x6c); + $this->setSize('_var_peripheral_8c1ba35c', 0x34 * 2); + $this->setSize('_init_saveNames_8c044d50', 4 * 11); + $this->setSize('_isFading_8c226568', 4); + $this->setSize('_var_vmuStatus_8c226048', 0x24); + $this->setSize('_var_midiHandles_8c0fcd28', 7 * 4); + + // Basic inits + $this->initUint32Array($this->addressOf('_var_midiHandles_8c0fcd28'), [ + 0xbeef0000, + 0xbeef0001, + 0xbeef0002, + 0xbeef0003, + 0xbeef0004, + 0xbeef0005, + 0xbeef0006, + ]); + + $this->initUint32Array($this->addressOf('_init_vmuStatusMessages_8c044dc4'), [ + 0, + 0xcafe0001, + 0xcafe0002, + 0xcafe0003, + 0xcafe0004, + 0xcafe0005, + 0xcafe0006, + ]); + + // Functions + $this->setSize('_sdMidiPlay', 4); + $this->setSize('_menuTextboxText_8c02af1c', 4); + $this->setSize('_swapMessageBoxFor_8c02aefc', 4); + $this->setSize('_BupGetInfo_8c014bba', 4); + $this->setSize('_drawSprite_8c014f54', 4); + $this->setSize('_push_fadeout_8c022b60', 4); + $this->setSize('_switchToMainMenuTask_8c01a09a', 4); + } + + private function initUint32Array(int $address, array $values): void + { + foreach ($values as $i => $value) { + $this->initUint32($address + $i * 4, $value); + } + } + + private function shouldWriteSelectedSlot(int $slot): void + { + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x38, $slot); + } + + private function shouldWriteMenuState(int $state): void + { + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x18, $state); + } + + private function runSelectTest(array $slots, int $initialSlot, $expectedSlot, $press): void + { + $this->resolveSymbols(); + + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x18, 2); // state + $this->initUint32($this->addressOf('_menuState_8c1bc7a8') + 0x38, $initialSlot); + $this->initUint32($this->addressOf('_var_peripheral_8c1ba35c') + 0x10, $press); + // Init slots + $this->initUint32Array($this->addressOf('_var_vmuStatus_8c226048'), $slots); + + $this->shouldCall('_VmMenuUpdateVmusStatus_19550') + ->with($this->addressOf('_init_saveNames_8c044d50'), 3); + + if ($expectedSlot !== $initialSlot) { + $this->shouldCall('_sdMidiPlay')->with(0xbeef0000, 1, 3, 0); + $this->shouldCall('_initCursorLerp_19788')->with($expectedSlot); + $this->shouldWriteMenuState(3); + + $messages = [ + 0, + 0xcafe0001, + 0xcafe0002, + 0xcafe0003, + 0xcafe0004, + 0xcafe0005, + 0xcafe0006, + ]; + $message = $messages[$slots[$expectedSlot]]; + $this->shouldCall('_swapMessageBoxFor_8c02aefc')->with($message); + } + + $this->shouldCall('_drawVmMenu_197c0'); + $this->shouldCall('_menuTextboxText_8c02af1c')->with(0x20); + $this->shouldWriteSelectedSlot($expectedSlot); + + $this->call($this->entryName())->with(0, 0)->run(); + } + + private function isAsmObject(): bool + { + return str_ends_with($this->objectFile, '_src.obj'); + } + + private function entryName(): string + { + return $this->isAsmObject() + ? '_VmMenuTask_198a0' + : '_VmMenuTask_198a0'; + } +}; diff --git a/tests/0193c8_vm_menu/19e44_VmMenuSwitchFromTask.php b/tests/0193c8_vm_menu/19e44_VmMenuSwitchFromTask.php new file mode 100644 index 0000000..2b32023 --- /dev/null +++ b/tests/0193c8_vm_menu/19e44_VmMenuSwitchFromTask.php @@ -0,0 +1,31 @@ +resolveSymbols(); + + $task = 0xbebacafe; + + $this->shouldCall('_setTaskAction_8c014b3e')->with($task, $this->addressOf('_VmMenuTask_198a0')); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x18, 0); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x38, 0); + $this->shouldWriteLong($this->addressOf('_menuState_8c1bc7a8') + 0x68, 0); + + $this->call('_VmMenuSwitchFromTask_19e44')->with($task)->run(); + } + + private function resolveSymbols(): void + { + $this->setSize('_menuState_8c1bc7a8', 0x6c); + + // Functions + $this->setSize('_setTaskAction_8c014b3e', 0x4); + } +};