summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Hall <camthesaxman@users.noreply.github.com>2018-02-06 19:45:56 -0600
committerGitHub <noreply@github.com>2018-02-06 19:45:56 -0600
commitc79d259508d47a8b5bde5b9060b8fe8c6989bd44 (patch)
tree912c739848391da17525e57420570b3730053675
parent5969695b8bbdab5182d0d651bbd2d256a12c0404 (diff)
parent9a8ec555e68fb143ffe900c778ddb85d5bd145a5 (diff)
Merge pull request #541 from camthesaxman/german_debug
build German debug version
-rw-r--r--.travis.yml1
-rw-r--r--Makefile9
-rw-r--r--asm/battle_1.s72
-rw-r--r--asm/battle_9.s171
-rw-r--r--asm/cute_sketch.s1
-rw-r--r--asm/nakamura_debug_menu.s4686
-rw-r--r--asm/nohara_debug_menu.s2198
-rw-r--r--asm/pokemon_storage_system.s144
-rw-r--r--asm/taya_debug_window.s2054
-rw-r--r--asm/tomomichi_debug_menu.s8100
-rw-r--r--asm/unk_debug_menu_3.s747
-rw-r--r--asm/watanabe_debug_menu.s9578
-rwxr-xr-xasmdiff_de_debug.sh7
-rw-r--r--charmap.txt5
-rw-r--r--config.mk7
-rw-r--r--data-de/event_scripts.s1
-rw-r--r--data/btl_attrs.s115
-rw-r--r--data/debug_menu_3.s106
-rw-r--r--data/debug_menu_nohara.s229
-rw-r--r--data/debug_menu_taya.s219
-rw-r--r--data/debug_menu_tomomichi.s2711
-rw-r--r--data/debug_menu_watanabe.s744
-rw-r--r--data/debug_mystery_event_menu.s20
-rw-r--r--data/event_scripts.s1
-rw-r--r--data/graphics.s3
-rw-r--r--data/pokemon_storage_system.s9
-rw-r--r--data/roulette.s7
-rw-r--r--data/scripts/debug.inc536
-rw-r--r--data/start_menu_debug.s495
-rw-r--r--data/unk_debug_menu_3.s105
-rwxr-xr-xde_after.sh3
-rw-r--r--graphics/debug/sprite_browser.pal51
-rw-r--r--graphics/debug/sprite_browser.pngbin0 -> 416 bytes
-rw-r--r--include/battle.h2
-rw-r--r--include/cable_club.h3
-rw-r--r--include/clock.h1
-rw-r--r--include/constants/decorations.h2
-rw-r--r--include/constants/items.h2
-rw-r--r--include/debug.h10
-rw-r--r--include/easy_chat.h1
-rw-r--r--include/field_control_avatar.h1
-rw-r--r--include/field_fadetransition.h1
-rw-r--r--include/link.h4
-rw-r--r--include/mystery_event_menu.h1
-rw-r--r--include/overworld.h2
-rw-r--r--include/pokeblock.h14
-rw-r--r--include/region_map.h1
-rw-r--r--include/reset_rtc_screen.h1
-rw-r--r--include/slot_machine.h1
-rw-r--r--include/strings.h2
-rw-r--r--include/trade.h1
-rw-r--r--include/trainer_card.h2
-rw-r--r--ld_script.txt26
-rw-r--r--ruby_de_debug.sha11
-rw-r--r--sound/music_player_table.inc1
-rw-r--r--src/battle/battle_2.c3640
-rw-r--r--src/battle/battle_4.c340
-rw-r--r--src/battle/battle_ai.c8
-rw-r--r--src/battle/battle_controller_opponent.c338
-rw-r--r--src/battle/battle_controller_player.c726
-rw-r--r--src/battle/battle_controller_safari.c12
-rw-r--r--src/battle/battle_interface.c31
-rw-r--r--src/battle/battle_records.c89
-rw-r--r--src/battle/battle_util.c324
-rw-r--r--src/contest.c192
-rw-r--r--src/data/pokedex_entries_de.h3
-rw-r--r--src/data/pokedex_entries_en.h2
-rw-r--r--src/debug/kagaya_debug_menu.c183
-rw-r--r--src/debug/nakamura_debug_menu.c189
-rw-r--r--src/debug/nohara_debug_menu.c12
-rw-r--r--src/debug/start_menu_debug.c6051
-rw-r--r--src/debug/taya_debug_window.c6
-rw-r--r--src/debug/tomomichi_debug_menu.c20
-rw-r--r--src/debug/watanabe_debug_menu.c11
-rw-r--r--src/engine/cable_club.c475
-rw-r--r--src/engine/clock.c3
-rw-r--r--src/engine/link.c198
-rw-r--r--src/engine/mystery_event_menu.c460
-rw-r--r--src/engine/reset_rtc_screen.c323
-rw-r--r--src/engine/rtc.c29
-rw-r--r--src/engine/save.c41
-rw-r--r--src/engine/save_failed_screen.c192
-rw-r--r--src/engine/sprite.c14
-rw-r--r--src/engine/task.c10
-rw-r--r--src/engine/trade.c2
-rw-r--r--src/engine/trainer_card.c97
-rw-r--r--src/field/battle_tower.c2
-rw-r--r--src/field/berry.c521
-rw-r--r--src/field/berry_tag_screen.c2
-rw-r--r--src/field/bike.c20
-rw-r--r--src/field/choose_party.c101
-rw-r--r--src/field/decoration_inventory.c11
-rw-r--r--src/field/field_control_avatar.c65
-rw-r--r--src/field/field_effect_helpers.c2
-rw-r--r--src/field/field_fadetransition.c16
-rw-r--r--src/field/field_map_obj.c518
-rw-r--r--src/field/field_player_avatar.c195
-rw-r--r--src/field/field_weather.c186
-rw-r--r--src/field/fldeff_cut.c109
-rw-r--r--src/field/fldeff_flash.c30
-rw-r--r--src/field/fldeff_secretpower.c96
-rw-r--r--src/field/fldeff_strength.c23
-rw-r--r--src/field/item_menu.c516
-rw-r--r--src/field/mauville_man.c83
-rw-r--r--src/field/overworld.c95
-rw-r--r--src/field/party_menu.c523
-rw-r--r--src/field/pokeblock.c68
-rw-r--r--src/field/region_map.c22
-rw-r--r--src/field/roamer.c19
-rw-r--r--src/field/safari_zone.c2
-rw-r--r--src/field/secret_base.c173
-rw-r--r--src/field/shop.c21
-rw-r--r--src/field/slot_machine.c2452
-rw-r--r--src/field/start_menu.c303
-rw-r--r--src/field/trader.c2
-rw-r--r--src/field/wild_encounter.c41
-rw-r--r--src/pokemon/mail.c614
-rw-r--r--src/pokemon/pokedex.c4
-rw-r--r--src/pokemon/pokemon_1.c47
-rw-r--r--src/pokemon/pokemon_menu.c25
-rw-r--r--src/pokemon/pokemon_storage_system.c178
-rw-r--r--src/pokemon/pokemon_storage_system_2.c995
-rw-r--r--src/pokemon/pokemon_storage_system_4.c5
-rw-r--r--src/pokemon/pokemon_summary_screen.c556
-rw-r--r--src/pokenav_before.c562
-rw-r--r--src/rom3.c14
-rw-r--r--src/rom6.c18
-rw-r--r--src/roulette.c1098
-rw-r--r--src/scene/berry_blender.c21
-rw-r--r--src/scene/cable_car.c218
-rw-r--r--src/scene/cute_sketch.c344
-rw-r--r--src/scene/new_game.c73
-rw-r--r--src/scene/title_screen.c19
-rw-r--r--src/strings.c14
-rw-r--r--sym_bss.txt11
-rw-r--r--sym_common.txt76
-rw-r--r--sym_ewram.txt56
137 files changed, 58019 insertions, 382 deletions
diff --git a/.travis.yml b/.travis.yml
index 9a196819b..6e88230ac 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -55,5 +55,6 @@ matrix:
- ./build_tools.sh
- make -j2 ruby_de
- make -j2 sapphire_de
+ - make -j2 ruby_de_debug
allow_failures:
- env: _="Formatting"
diff --git a/Makefile b/Makefile
index 91abef07a..9e2a2366e 100644
--- a/Makefile
+++ b/Makefile
@@ -19,9 +19,9 @@ PREPROC := tools/preproc/preproc
SCANINC := tools/scaninc/scaninc
RAMSCRGEN := tools/ramscrgen/ramscrgen
-ASFLAGS := -mcpu=arm7tdmi -I include --defsym $(GAME_VERSION)=1 --defsym REVISION=$(GAME_REVISION) --defsym $(GAME_LANGUAGE)=1
+ASFLAGS := -mcpu=arm7tdmi -I include --defsym $(GAME_VERSION)=1 --defsym REVISION=$(GAME_REVISION) --defsym $(GAME_LANGUAGE)=1 --defsym DEBUG=$(DEBUG)
CC1FLAGS := -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm
-CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef -Werror -Wno-trigraphs -D $(GAME_VERSION) -D REVISION=$(GAME_REVISION) -D $(GAME_LANGUAGE)
+CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef -Werror -Wno-trigraphs -D $(GAME_VERSION) -D REVISION=$(GAME_REVISION) -D $(GAME_LANGUAGE) -D DEBUG=$(DEBUG)
#### Files ####
@@ -100,12 +100,12 @@ clean: tidy
$(RM) $(ALL_OBJECTS)
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' \) -exec rm {} +
-ALL_BUILDS := ruby ruby_rev1 ruby_rev1 sapphire sapphire_rev1 sapphire_rev2 ruby_de sapphire_de
+ALL_BUILDS := ruby ruby_rev1 ruby_rev1 sapphire sapphire_rev1 sapphire_rev2 ruby_de sapphire_de ruby_de_debug
tidy:
$(RM) $(ALL_BUILDS:%=poke%{.gba,.elf,.map})
$(RM) -r build
-%.gba: %.elf
+$(ROM): %.gba: %.elf
$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@
%.elf: $(LD_SCRIPT) $(ALL_OBJECTS)
@@ -138,6 +138,7 @@ sapphire_rev1: ; @$(MAKE) --no-print-directory GAME_VERSION=SAPPHIRE GAME_REVISI
sapphire_rev2: ; @$(MAKE) --no-print-directory GAME_VERSION=SAPPHIRE GAME_REVISION=2
ruby_de: ; @$(MAKE) --no-print-directory GAME_VERSION=RUBY GAME_LANGUAGE=GERMAN
sapphire_de: ; @$(MAKE) --no-print-directory GAME_VERSION=SAPPHIRE GAME_LANGUAGE=GERMAN
+ruby_de_debug: ; @$(MAKE) --no-print-directory GAME_VERSION=RUBY GAME_LANGUAGE=GERMAN DEBUG=1
#### Graphics Rules ####
diff --git a/asm/battle_1.s b/asm/battle_1.s
index 980bd6a65..cd925e10d 100644
--- a/asm/battle_1.s
+++ b/asm/battle_1.s
@@ -794,6 +794,77 @@ _0800DAB0: .4byte 0x0600d000
_0800DAB4: .4byte gBattleTerrainPalette_BattleTower
thumb_func_end DrawMainBattleBackground
+.if DEBUG
+ thumb_func_start sub_800DAB8
+sub_800DAB8:
+.syntax divided
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffffc
+ ldr r0, ._113 @ gUnknown_08D00000
+ mov r1, #0xc0
+ lsl r1, r1, #0x13
+ bl LZDecompressVram
+ ldr r0, ._113 + 4 @ gUnknown_08D00524
+ ldr r4, ._113 + 8 @ 0x600c000
+ mov r2, #0x80
+ lsl r2, r2, #0x4
+ add r1, r4, #0
+ bl CpuSet
+ ldr r0, ._113 + 12 @ gUnknown_08D004E0
+ mov r1, #0x0
+ mov r2, #0x40
+ bl LoadCompressedPalette
+ bl sub_800D74C
+ bl DrawMainBattleBackground
+ ldr r0, ._113 + 16 @ gBattleTypeFlags
+ ldrh r1, [r0]
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._112 @cond_branch
+ ldr r0, ._113 + 20 @ 0x6000600
+ mov r1, #0x0
+ add r2, r4, #0
+ mov r3, #0x1
+ bl debug_sub_8008218
+ ldr r5, ._113 + 24 @ 0x101
+ mov r4, #0x1
+ str r4, [sp]
+ add r0, r5, #0
+ mov r1, #0x3
+ mov r2, #0x1
+ mov r3, #0x3
+ bl debug_sub_8008264
+ str r4, [sp]
+ add r0, r5, #0
+ mov r1, #0x3
+ mov r2, #0x15
+ mov r3, #0x3
+ bl debug_sub_8008264
+ str r4, [sp]
+ add r0, r5, #0
+ mov r1, #0x3
+ mov r2, #0x29
+ mov r3, #0x3
+ bl debug_sub_8008264
+._112:
+ add sp, sp, #0x4
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._114:
+ .align 2, 0
+._113:
+ .word gUnknown_08D00000
+ .word gUnknown_08D00524
+ .word 0x600c000
+ .word gUnknown_08D004E0
+ .word gBattleTypeFlags
+ .word 0x6000600
+ .word 0x101
+.syntax unified
+ thumb_func_end sub_800DAB8
+.else
thumb_func_start sub_800DAB8
sub_800DAB8: @ 800DAB8
push {lr}
@@ -820,6 +891,7 @@ _0800DAEC: .4byte gUnknown_08D00524
_0800DAF0: .4byte 0x0600c000
_0800DAF4: .4byte gUnknown_08D004E0
thumb_func_end sub_800DAB8
+.endif
thumb_func_start sub_800DAF8
sub_800DAF8: @ 800DAF8
diff --git a/asm/battle_9.s b/asm/battle_9.s
index 9dbb7c619..3f162df12 100644
--- a/asm/battle_9.s
+++ b/asm/battle_9.s
@@ -1387,6 +1387,176 @@ _08036AFE:
bx r1
thumb_func_end AI_ShouldSwitch
+.if DEBUG
+ thumb_func_start sub_8036B0C
+sub_8036B0C:
+.syntax divided
+ push {r4, r5, r6, lr}
+ ldr r5, ._205 @ gBattleTypeFlags
+ ldrh r1, [r5]
+ mov r0, #0x8
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._197 @cond_branch
+ b ._216
+._197:
+ bl AI_ShouldSwitch
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._199 @cond_branch
+ b ._200
+._199:
+ ldr r4, ._205 + 4 @ 0x2000000
+ ldr r0, ._205 + 8 @ gActiveBank
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x19
+ ldr r1, ._205 + 12 @ 0x160c8
+ add r0, r0, r1
+ add r0, r0, r4
+ ldrb r0, [r0]
+ cmp r0, #0x6
+ bne ._201 @cond_branch
+ bl sub_8036CD4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x6
+ bne ._211 @cond_branch
+ ldrh r1, [r5]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._203 @cond_branch
+ mov r0, #0x1
+ bl GetBankByIdentity
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r6, r5, #0
+ b ._204
+._206:
+ .align 2, 0
+._205:
+ .word gBattleTypeFlags
+ .word 0x2000000
+ .word gActiveBank
+ .word 0x160c8
+._203:
+ mov r0, #0x1
+ bl GetBankByIdentity
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ mov r0, #0x3
+ bl GetBankByIdentity
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+._204:
+ mov r4, #0x0
+._212:
+ mov r0, #0x64
+ mul r0, r0, r4
+ ldr r1, ._214 @ gEnemyParty
+ add r0, r0, r1
+ mov r1, #0x39
+ bl GetMonData
+ cmp r0, #0
+ beq ._210 @cond_branch
+ ldr r1, ._214 + 4 @ gBattlePartyID
+ lsl r0, r6, #0x1
+ add r0, r0, r1
+ ldrh r0, [r0]
+ cmp r4, r0
+ beq ._210 @cond_branch
+ lsl r0, r5, #0x1
+ add r0, r0, r1
+ ldrh r0, [r0]
+ cmp r4, r0
+ beq ._210 @cond_branch
+ ldr r1, ._214 + 8 @ 0x2000000
+ ldr r2, ._214 + 12 @ 0x16068
+ add r0, r6, r2
+ add r0, r0, r1
+ ldrb r0, [r0]
+ cmp r4, r0
+ beq ._210 @cond_branch
+ add r0, r5, r2
+ add r0, r0, r1
+ ldrb r0, [r0]
+ cmp r4, r0
+ bne ._211 @cond_branch
+._210:
+ add r4, r4, #0x1
+ cmp r4, #0x5
+ ble ._212 @cond_branch
+._211:
+ ldr r0, ._214 + 16 @ gActiveBank
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ ldr r1, ._214 + 8 @ 0x2000000
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x19
+ ldr r3, ._214 + 20 @ 0x160c8
+ add r0, r0, r3
+ add r0, r0, r1
+ strb r4, [r0]
+._201:
+ ldr r4, ._214 + 16 @ gActiveBank
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ ldr r2, ._214 + 8 @ 0x2000000
+ ldrb r1, [r4]
+ ldr r3, ._214 + 12 @ 0x16068
+ add r1, r1, r3
+ add r1, r1, r2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x19
+ add r3, r3, #0x60
+ add r0, r0, r3
+ add r0, r0, r2
+ ldrb r0, [r0]
+ strb r0, [r1]
+ b ._217
+._215:
+ .align 2, 0
+._214:
+ .word gEnemyParty
+ .word gBattlePartyID
+ .word 0x2000000
+ .word 0x16068
+ .word gActiveBank
+ .word 0x160c8
+._200:
+ ldr r0, ._218 @ gUnknown_02023A14
+ ldrb r1, [r0]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._216 @cond_branch
+ bl AI_ShouldUseItem
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._217 @cond_branch
+._216:
+ ldr r0, ._218 + 4 @ gActiveBank
+ ldrb r0, [r0]
+ mov r2, #0x1
+ eor r2, r2, r0
+ lsl r2, r2, #0x8
+ mov r0, #0x1
+ mov r1, #0x0
+ bl Emitcmd33
+._217:
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._219:
+ .align 2, 0
+._218:
+ .word gUnknown_02023A14+0x50
+ .word gActiveBank
+.syntax unified
+ thumb_func_end sub_8036B0C
+.else
thumb_func_start sub_8036B0C
sub_8036B0C: @ 8036B0C
push {r4-r6,lr}
@@ -1540,6 +1710,7 @@ _08036C40:
.align 2, 0
_08036C48: .4byte gActiveBank
thumb_func_end sub_8036B0C
+.endif
thumb_func_start sub_8036C4C
sub_8036C4C: @ 8036C4C
diff --git a/asm/cute_sketch.s b/asm/cute_sketch.s
index 8cb6cdbd8..bc72a6ef5 100644
--- a/asm/cute_sketch.s
+++ b/asm/cute_sketch.s
@@ -5,7 +5,6 @@
.text
-
thumb_func_start sub_80FCB5C
sub_80FCB5C: @ 80FCB5C
push {r4-r7,lr}
diff --git a/asm/nakamura_debug_menu.s b/asm/nakamura_debug_menu.s
new file mode 100644
index 000000000..21092fe4b
--- /dev/null
+++ b/asm/nakamura_debug_menu.s
@@ -0,0 +1,4686 @@
+.if DEBUG
+
+ .include "constants/gba_constants.inc"
+ .include "include/macros.inc"
+
+ .text
+
+ thumb_func_start debug_sub_815F1B8
+debug_sub_815F1B8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0xe
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._1 @ _843E3DC
+ mov r0, #0x10
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xe
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0xf
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ add sp, sp, #0x8
+ pop {r0}
+ bx r0
+._2:
+ .align 2, 0
+._1:
+ .word _843E3DC
+
+ thumb_func_end debug_sub_815F1B8
+
+ thumb_func_start InitNakamuraDebugMenu
+InitNakamuraDebugMenu:
+ push {lr}
+ bl debug_sub_815F1B8
+ ldr r1, ._3 @ gMenuCallback
+ ldr r0, ._3 + 4 @ debug_sub_815F214
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._4:
+ .align 2, 0
+._3:
+ .word gMenuCallback
+ .word debug_sub_815F214+1
+
+ thumb_func_end InitNakamuraDebugMenu
+
+ thumb_func_start debug_sub_815F214
+debug_sub_815F214:
+ push {r4, lr}
+ ldr r4, ._9 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._5 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ bl Menu_MoveCursor
+._5:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._6 @cond_branch
+ mov r0, #0x1
+ bl Menu_MoveCursor
+._6:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._7 @cond_branch
+ ldr r4, ._9 + 4 @ _843E3DC
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x15
+ add r4, r4, #0x4
+ add r0, r0, r4
+ ldr r4, [r0]
+ bl Menu_DestroyCursor
+ bl _call_via_r4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._12
+._10:
+ .align 2, 0
+._9:
+ .word gMain
+ .word _843E3DC
+._7:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._11 @cond_branch
+ mov r0, #0x0
+ b ._12
+._11:
+ bl CloseMenu
+ mov r0, #0x1
+._12:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815F214
+
+ thumb_func_start debug_sub_815F284
+debug_sub_815F284:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, ._14 @ gPaletteFade
+ ldrb r1, [r0, #0x7]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._13 @cond_branch
+ bl debug_sub_81381B4
+ mov r0, #0x5
+ mov r1, #0x0
+ bl OpenPartyMenu
+ add r0, r4, #0
+ bl DestroyTask
+._13:
+ pop {r4}
+ pop {r0}
+ bx r0
+._15:
+ .align 2, 0
+._14:
+ .word gPaletteFade
+
+ thumb_func_end debug_sub_815F284
+
+ thumb_func_start debug_sub_815F2B4
+debug_sub_815F2B4:
+ push {lr}
+ add sp, sp, #0xfffffffc
+ bl CloseMenu
+ bl Menu_EraseScreen
+ ldr r1, ._16 @ gMain
+ ldr r0, ._16 + 4 @ sub_805469C
+ str r0, [r1, #0x8]
+ ldr r0, ._16 + 8 @ debug_sub_815F284
+ mov r1, #0x0
+ bl CreateTask
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ mov r0, #0x1
+ add sp, sp, #0x4
+ pop {r1}
+ bx r1
+._17:
+ .align 2, 0
+._16:
+ .word gMain
+ .word sub_805469C+1
+ .word debug_sub_815F284+1
+
+ thumb_func_end debug_sub_815F2B4
+
+ thumb_func_start debug_sub_815F2F4
+debug_sub_815F2F4:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xfffffffc
+ bl CloseMenu
+ mov r7, #0x1
+._34:
+ lsl r1, r7, #0x2
+ add r0, r1, r7
+ lsl r2, r0, #0x5
+ ldr r3, ._24 @ gSaveBlock1
+ add r0, r2, r3
+ ldr r5, ._24 + 4 @ 0x1a08
+ add r0, r0, r5
+ ldrb r0, [r0]
+ mov r9, r1
+ add r1, r7, #1
+ str r1, [sp]
+ cmp r0, #0
+ beq ._18 @cond_branch
+ b ._19
+._18:
+ mov r5, #0x0
+ ldr r6, ._24 + 8 @ gSaveBlock2
+ add r4, r7, #0
+ sub r4, r4, #0x46
+ ldr r3, ._24 + 12 @ gSaveBlock1
+._21:
+ add r1, r5, r2
+ add r1, r1, r3
+ add r0, r5, r6
+ ldrb r0, [r0]
+ strb r0, [r1]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0xff
+ beq ._20 @cond_branch
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x6
+ bls ._21 @cond_branch
+._20:
+ cmp r5, #0x7
+ bne ._22 @cond_branch
+ add r0, r2, #6
+ b ._23
+._25:
+ .align 2, 0
+._24:
+ .word gSaveBlock1
+ .word 0x1a08
+ .word gSaveBlock2
+ .word gSaveBlock1+0x1a0a
+._22:
+ add r0, r5, r2
+._23:
+ add r0, r0, r3
+ strb r4, [r0]
+ ldr r1, ._35 @ gSaveBlock1
+ ldr r2, ._35 + 4 @ 0x1a08
+ add r2, r2, r1
+ mov sl, r2
+ mov r3, r9
+ add r0, r3, r7
+ lsl r6, r0, #0x5
+ add r1, r6, r1
+ ldr r5, ._35 + 4 @ 0x1a08
+ add r5, r5, r1
+ mov r8, r5
+._30:
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x4b
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0xe
+ ldr r1, ._35 + 8 @ _843E424
+ add r0, r0, r1
+ ldrb r0, [r0]
+ mov r2, r8
+ strb r0, [r2]
+ mov r5, #0x0
+ cmp r5, r7
+ bcs ._28 @cond_branch
+ mov r3, sl
+ ldrb r3, [r3]
+ cmp r0, r3
+ beq ._28 @cond_branch
+ ldr r4, ._35 @ gSaveBlock1
+ add r0, r6, r4
+ ldr r2, ._35 + 4 @ 0x1a08
+ add r3, r0, r2
+._29:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r7
+ bcs ._28 @cond_branch
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x5
+ add r0, r0, r4
+ add r0, r0, r2
+ ldrb r1, [r3]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne ._29 @cond_branch
+._28:
+ cmp r5, r7
+ bne ._30 @cond_branch
+ bl Random
+ mov r5, r9
+ add r4, r5, r7
+ lsl r4, r4, #0x5
+ ldr r1, ._35 @ gSaveBlock1
+ add r3, r4, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x1
+ ldr r2, ._35 + 12 @ 0x1a09
+ add r3, r3, r2
+ and r0, r0, r1
+ lsl r0, r0, #0x4
+ ldrb r1, [r3]
+ mov r5, #0x11
+ neg r5, r5
+ add r2, r5, #0
+ and r1, r1, r2
+ orr r1, r1, r0
+ strb r1, [r3]
+ mov r5, #0x0
+ ldr r6, ._35 + 16 @ gSaveBlock1
+._31:
+ bl Random
+ add r1, r5, r4
+ add r1, r1, r6
+ strb r0, [r1]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x3
+ bls ._31 @cond_branch
+ mov r5, #0x0
+ mov r1, r9
+ add r0, r1, r7
+ lsl r4, r0, #0x5
+ ldr r3, ._35 + 20 @ gSaveBlock1
+ mov r2, #0x0
+ add r6, r3, #0
+ add r6, r6, #0x10
+._32:
+ add r1, r5, r4
+ add r0, r1, r3
+ strb r2, [r0]
+ add r1, r1, r6
+ strb r2, [r1]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0xf
+ bls ._32 @cond_branch
+ add r0, r7, #0
+ bl unref_sub_80BCD7C
+._19:
+ ldr r2, [sp]
+ lsl r0, r2, #0x18
+ lsr r7, r0, #0x18
+ cmp r7, #0x13
+ bhi ._33 @cond_branch
+ b ._34
+._33:
+ mov r0, #0x1
+ add sp, sp, #0x4
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._36:
+ .align 2, 0
+._35:
+ .word gSaveBlock1
+ .word 0x1a08
+ .word _843E424
+ .word 0x1a09
+ .word gSaveBlock1+0x1a11
+ .word gSaveBlock1+0x1a1a
+
+ thumb_func_end debug_sub_815F2F4
+
+ thumb_func_start debug_sub_815F470
+debug_sub_815F470:
+ push {r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov ip, r2
+ ldr r2, ._39 @ gSaveBlock1
+ ldr r0, ._39 + 4 @ _nakamuraData0
+ ldrb r1, [r0]
+ lsl r0, r1, #0x2
+ add r0, r0, r1
+ lsl r0, r0, #0x5
+ add r0, r0, r2
+ ldr r1, ._39 + 8 @ 0x1a08
+ add r0, r0, r1
+ ldrb r4, [r0]
+ mov r2, #0x0
+ ldr r3, ._39 + 12 @ _843E424
+ add r5, r3, #0
+._41:
+ lsl r1, r2, #0x2
+ add r0, r1, r5
+ ldrb r0, [r0]
+ cmp r0, r4
+ bne ._37 @cond_branch
+ add r0, r1, #1
+ add r0, r0, r3
+ ldrb r0, [r0]
+ strb r0, [r6]
+ add r0, r1, #2
+ add r0, r0, r3
+ ldrb r0, [r0]
+ strb r0, [r7]
+ add r0, r1, #3
+ add r0, r0, r3
+ ldrb r0, [r0]
+ mov r1, ip
+ strb r0, [r1]
+ b ._38
+._40:
+ .align 2, 0
+._39:
+ .word gSaveBlock1
+ .word _nakamuraData0
+ .word 0x1a08
+ .word _843E424
+._37:
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x4a
+ bls ._41 @cond_branch
+._38:
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_815F470
+
+ thumb_func_start debug_sub_815F4D8
+debug_sub_815F4D8:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xfffffffc
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0xa
+ mov r3, #0xa
+ bl Menu_BlankWindowRect
+ ldr r6, ._43 @ gStringVar1
+ ldr r7, ._43 + 4 @ _nakamuraData0
+ ldrb r1, [r7]
+ add r0, r6, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r2, ._43 + 8 @ gSaveBlock1
+ ldrb r1, [r7]
+ lsl r0, r1, #0x2
+ add r0, r0, r1
+ lsl r0, r0, #0x5
+ add r0, r0, r2
+ ldr r1, ._43 + 12 @ 0x1a08
+ add r0, r0, r1
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._42 @cond_branch
+ mov r4, sp
+ add r4, r4, #0x1
+ mov r5, sp
+ add r5, r5, #0x2
+ mov r0, sp
+ add r1, r4, #0
+ add r2, r5, #0
+ bl debug_sub_815F470
+ ldrb r1, [r7]
+ add r0, r6, #0
+ bl sub_80BC190
+ add r0, r6, #0
+ mov r1, #0x1
+ mov r2, #0x3
+ bl Menu_PrintText
+ ldr r0, ._43 + 16 @ Str_843E550
+ mov r1, #0x1
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, sp
+ ldrb r1, [r0]
+ add r0, r6, #0
+ mov r2, #0x0
+ mov r3, #0x3
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x2
+ mov r2, #0x5
+ bl Menu_PrintText
+ ldr r0, ._43 + 20 @ Str_843E552
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldrb r1, [r4]
+ add r0, r6, #0
+ mov r2, #0x0
+ mov r3, #0x3
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x3
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r0, ._43 + 24 @ Str_843E554
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintText
+ ldrb r1, [r5]
+ add r0, r6, #0
+ mov r2, #0x0
+ mov r3, #0x3
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x3
+ mov r2, #0x9
+ bl Menu_PrintText
+._42:
+ add sp, sp, #0x4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._44:
+ .align 2, 0
+._43:
+ .word gStringVar1
+ .word _nakamuraData0
+ .word gSaveBlock1
+ .word 0x1a08
+ .word Str_843E550
+ .word Str_843E552
+ .word Str_843E554
+
+ thumb_func_end debug_sub_815F4D8
+
+ thumb_func_start debug_sub_815F5C4
+debug_sub_815F5C4:
+ push {lr}
+ ldr r0, ._48 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ cmp r2, #0
+ beq ._45 @cond_branch
+ ldr r1, ._48 + 4 @ _nakamuraData0
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._46 @cond_branch
+ mov r0, #0x13
+ b ._50
+._49:
+ .align 2, 0
+._48:
+ .word gMain
+ .word _nakamuraData0
+._46:
+ sub r0, r0, #0x1
+ b ._50
+._45:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._51 @cond_branch
+ ldr r1, ._54 @ _nakamuraData0
+ ldrb r0, [r1]
+ cmp r0, #0x13
+ bne ._52 @cond_branch
+ strb r2, [r1]
+ b ._53
+._55:
+ .align 2, 0
+._54:
+ .word _nakamuraData0
+._52:
+ add r0, r0, #0x1
+._50:
+ strb r0, [r1]
+._53:
+ bl debug_sub_815F4D8
+ mov r0, #0x0
+ b ._58
+._51:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._57 @cond_branch
+ mov r0, #0x0
+ b ._58
+._57:
+ bl CloseMenu
+ mov r0, #0x1
+._58:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815F5C4
+
+ thumb_func_start debug_sub_815F62C
+debug_sub_815F62C:
+ push {lr}
+ ldr r1, ._59 @ _nakamuraData0
+ mov r0, #0x0
+ strb r0, [r1]
+ ldr r1, ._59 + 4 @ gMenuCallback
+ ldr r0, ._59 + 8 @ debug_sub_815F5C4
+ str r0, [r1]
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xb
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ bl debug_sub_815F4D8
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._60:
+ .align 2, 0
+._59:
+ .word _nakamuraData0
+ .word gMenuCallback
+ .word debug_sub_815F5C4+1
+
+ thumb_func_end debug_sub_815F62C
+
+ thumb_func_start debug_sub_815F668
+debug_sub_815F668:
+ push {r4, r5, r6, lr}
+ ldr r0, ._61 @ _nakamuraData0
+ ldrb r0, [r0]
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x5
+ ldr r0, ._61 + 4 @ gSaveBlock1
+ add r1, r1, r0
+ ldrb r4, [r1, #0x3]
+ lsl r4, r4, #0x18
+ ldrb r0, [r1, #0x2]
+ lsl r0, r0, #0x10
+ orr r4, r4, r0
+ ldrb r0, [r1, #0x1]
+ lsl r0, r0, #0x8
+ orr r4, r4, r0
+ ldrb r0, [r1]
+ orr r4, r4, r0
+ ldr r5, ._61 + 8 @ gStringVar1
+ ldr r6, ._61 + 12 @ 0x186a0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl __udivsi3
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #0x2
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r5, #0
+ mov r1, #0x2
+ mov r2, #0x7
+ bl Menu_PrintText
+ add r0, r4, #0
+ add r1, r6, #0
+ bl __umodsi3
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #0x2
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r5, #0
+ mov r1, #0x7
+ mov r2, #0x7
+ bl Menu_PrintText
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._62:
+ .align 2, 0
+._61:
+ .word _nakamuraData0
+ .word gSaveBlock1+0x1a11
+ .word gStringVar1
+ .word 0x186a0
+
+ thumb_func_end debug_sub_815F668
+
+ thumb_func_start debug_sub_815F6E4
+debug_sub_815F6E4:
+ push {r4, lr}
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0xb
+ mov r3, #0x4
+ bl Menu_BlankWindowRect
+ ldr r4, ._63 @ gStringVar1
+ ldr r0, ._63 + 4 @ _nakamuraData0
+ ldrb r0, [r0]
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x5
+ ldr r0, ._63 + 8 @ gSaveBlock1
+ add r1, r1, r0
+ add r0, r4, #0
+ mov r2, #0x7
+ bl StringCopyN
+ mov r1, #0xff
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x2
+ mov r2, #0x3
+ bl Menu_PrintText
+ pop {r4}
+ pop {r0}
+ bx r0
+._64:
+ .align 2, 0
+._63:
+ .word gStringVar1
+ .word _nakamuraData0
+ .word gSaveBlock1+0x1a0a
+
+ thumb_func_end debug_sub_815F6E4
+
+ thumb_func_start debug_sub_815F72C
+debug_sub_815F72C:
+ push {r4, r5, lr}
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0xb
+ mov r3, #0xa
+ bl Menu_BlankWindowRect
+ ldr r4, ._66 @ gStringVar1
+ ldr r5, ._66 + 4 @ _nakamuraData0
+ ldrb r1, [r5]
+ add r0, r4, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r2, ._66 + 8 @ gSaveBlock1
+ ldrb r1, [r5]
+ lsl r0, r1, #0x2
+ add r0, r0, r1
+ lsl r0, r0, #0x5
+ add r0, r0, r2
+ ldr r1, ._66 + 12 @ 0x1a08
+ add r0, r0, r1
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._65 @cond_branch
+ bl debug_sub_815F6E4
+ bl debug_sub_815F668
+._65:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._67:
+ .align 2, 0
+._66:
+ .word gStringVar1
+ .word _nakamuraData0
+ .word gSaveBlock1
+ .word 0x1a08
+
+ thumb_func_end debug_sub_815F72C
+
+ thumb_func_start debug_sub_815F788
+debug_sub_815F788:
+ push {lr}
+ mov r0, #0x2
+ mov r1, #0x5
+ mov r2, #0xb
+ mov r3, #0x6
+ bl Menu_BlankWindowRect
+ ldr r0, ._68 @ Str_843E574
+ ldr r1, ._68 + 4 @ _nakamuraData2
+ ldrb r1, [r1]
+ add r1, r1, #0x2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #0x5
+ bl Menu_PrintText
+ pop {r0}
+ bx r0
+._69:
+ .align 2, 0
+._68:
+ .word Str_843E574
+ .word _nakamuraData2
+
+ thumb_func_end debug_sub_815F788
+
+ thumb_func_start debug_sub_815F7B4
+debug_sub_815F7B4:
+ push {lr}
+ ldr r0, ._72 @ _nakamuraData1
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._70 @cond_branch
+ mov r0, #0xb
+ mov r1, #0x1
+ mov r2, #0xb
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ b ._71
+._73:
+ .align 2, 0
+._72:
+ .word _nakamuraData1
+._70:
+ ldr r0, ._74 @ _nakamuraData3
+ ldrb r0, [r0]
+ lsl r0, r0, #0x1
+ ldr r1, ._74 + 4 @ Str_843E576
+ add r0, r0, r1
+ mov r1, #0xb
+ mov r2, #0x1
+ bl Menu_PrintText
+._71:
+ pop {r0}
+ bx r0
+._75:
+ .align 2, 0
+._74:
+ .word _nakamuraData3
+ .word Str_843E576
+
+ thumb_func_end debug_sub_815F7B4
+
+ thumb_func_start debug_sub_815F7F0
+debug_sub_815F7F0:
+ push {r4, r5, lr}
+ ldr r1, ._78 @ _nakamuraData0
+ ldrb r2, [r1]
+ lsl r1, r2, #0x2
+ add r1, r1, r2
+ lsl r1, r1, #0x5
+ ldr r2, ._78 + 4 @ gSaveBlock1
+ add r3, r1, r2
+ ldrb r1, [r3, #0x3]
+ lsl r2, r1, #0x18
+ ldrb r1, [r3, #0x2]
+ lsl r1, r1, #0x10
+ orr r2, r2, r1
+ ldrb r1, [r3, #0x1]
+ lsl r1, r1, #0x8
+ orr r2, r2, r1
+ ldrb r1, [r3]
+ orr r2, r2, r1
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r4, #0x9
+ ldr r0, ._78 + 8 @ _nakamuraData2
+ ldrb r0, [r0]
+ cmp r4, r0
+ ble ._76 @cond_branch
+ add r5, r0, #0
+._77:
+ lsl r0, r1, #0x2
+ add r0, r0, r1
+ lsl r1, r0, #0x1
+ lsl r0, r4, #0x18
+ mov r4, #0xff
+ lsl r4, r4, #0x18
+ add r0, r0, r4
+ lsr r4, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, r5
+ bgt ._77 @cond_branch
+._76:
+ add r2, r2, r1
+ lsr r0, r2, #0x18
+ strb r0, [r3, #0x3]
+ mov r0, #0xff
+ lsl r0, r0, #0x10
+ and r0, r0, r2
+ lsr r0, r0, #0x10
+ strb r0, [r3, #0x2]
+ mov r0, #0xff
+ lsl r0, r0, #0x8
+ and r0, r0, r2
+ lsr r0, r0, #0x8
+ strb r0, [r3, #0x1]
+ strb r2, [r3]
+ bl debug_sub_815F668
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._79:
+ .align 2, 0
+._78:
+ .word _nakamuraData0
+ .word gSaveBlock1+0x1a11
+ .word _nakamuraData2
+
+ thumb_func_end debug_sub_815F7F0
+
+ thumb_func_start debug_sub_815F86C
+debug_sub_815F86C:
+ push {r4, r5, r6, lr}
+ lsl r0, r0, #0x18
+ ldr r1, ._84 @ _nakamuraData0
+ ldrb r2, [r1]
+ lsl r1, r2, #0x2
+ add r1, r1, r2
+ lsl r1, r1, #0x5
+ ldr r2, ._84 + 4 @ gSaveBlock1
+ add r5, r1, r2
+ mov r2, #0x0
+ mov r3, #0x0
+ lsr r6, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, #0x64
+ bne ._80 @cond_branch
+ ldr r0, ._84 + 8 @ _nakamuraData2
+ ldrb r1, [r0]
+ cmp r1, #0x6
+ bhi ._100 @cond_branch
+ mov r2, #0xff
+._82:
+ add r0, r5, r1
+ strb r2, [r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #0x6
+ bls ._82 @cond_branch
+ b ._100
+._85:
+ .align 2, 0
+._84:
+ .word _nakamuraData0
+ .word gSaveBlock1+0x1a0a
+ .word _nakamuraData2
+._80:
+ ldr r0, ._87 @ _nakamuraData3
+ ldrb r0, [r0]
+ cmp r0, #0x4
+ bhi ._98 @cond_branch
+ lsl r0, r0, #0x2
+ ldr r1, ._87 + 4 @
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+._88:
+ .align 2, 0
+._87:
+ .word _nakamuraData3
+ .word ._89
+._89:
+ .word ._90
+ .word ._91
+ .word ._92
+ .word ._93
+ .word ._94
+._90:
+ mov r3, #0x1
+ mov r2, #0x50
+ b ._98
+._91:
+ mov r3, #0x51
+ mov r2, #0xa0
+ b ._98
+._92:
+ mov r3, #0xbb
+ mov r2, #0xd4
+ b ._98
+._93:
+ mov r3, #0xd5
+ mov r2, #0xee
+ b ._98
+._94:
+ mov r3, #0xa1
+ mov r2, #0xaa
+._98:
+ ldr r4, ._101 @ _nakamuraData2
+ ldrb r1, [r4]
+ add r1, r5, r1
+ ldrb r0, [r1]
+ add r0, r0, r6
+ strb r0, [r1]
+ ldrb r0, [r4]
+ add r1, r5, r0
+ ldrb r0, [r1]
+ cmp r0, r3
+ bcs ._99 @cond_branch
+ strb r2, [r1]
+._99:
+ ldrb r0, [r4]
+ add r1, r5, r0
+ ldrb r0, [r1]
+ cmp r0, r2
+ bls ._100 @cond_branch
+ strb r3, [r1]
+._100:
+ bl debug_sub_815F6E4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._102:
+ .align 2, 0
+._101:
+ .word _nakamuraData2
+
+ thumb_func_end debug_sub_815F86C
+
+ thumb_func_start debug_sub_815F930
+debug_sub_815F930:
+ push {r4, r5, lr}
+ ldr r0, ._107 @ _nakamuraData1
+ ldrb r2, [r0]
+ mov r4, #0xa
+ cmp r2, #0
+ bne ._103 @cond_branch
+ mov r4, #0x7
+._103:
+ ldr r5, ._107 + 4 @ gMain
+ ldrh r1, [r5, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._104 @cond_branch
+ cmp r2, #0
+ beq ._105 @cond_branch
+ mov r0, #0x1
+ bl debug_sub_815F7F0
+ b ._136
+._108:
+ .align 2, 0
+._107:
+ .word _nakamuraData1
+ .word gMain
+._105:
+ mov r0, #0x1
+ b ._113
+._104:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._110 @cond_branch
+ cmp r2, #0
+ beq ._111 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ bl debug_sub_815F7F0
+ b ._136
+._111:
+ mov r0, #0x1
+ neg r0, r0
+ b ._113
+._110:
+ mov r0, #0x20
+ and r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ cmp r3, #0
+ beq ._114 @cond_branch
+ ldr r1, ._117 @ _nakamuraData2
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._115 @cond_branch
+ sub r0, r4, #1
+ b ._116
+._118:
+ .align 2, 0
+._117:
+ .word _nakamuraData2
+._115:
+ sub r0, r0, #0x1
+._116:
+ strb r0, [r1]
+._125:
+ bl debug_sub_815F788
+ b ._136
+._114:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._120 @cond_branch
+ ldr r2, ._123 @ _nakamuraData2
+ ldrb r1, [r2]
+ sub r0, r4, #1
+ cmp r1, r0
+ bne ._121 @cond_branch
+ strb r3, [r2]
+ b ._125
+._124:
+ .align 2, 0
+._123:
+ .word _nakamuraData2
+._121:
+ add r0, r1, #1
+ strb r0, [r2]
+ b ._125
+._120:
+ ldrh r1, [r5, #0x2e]
+ mov r0, #0x4
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._126 @cond_branch
+ cmp r2, #0
+ bne ._127 @cond_branch
+ ldr r4, ._129 @ _nakamuraData3
+ ldrb r0, [r4]
+ add r0, r0, #0x1
+ mov r1, #0x5
+ bl __modsi3
+ strb r0, [r4]
+._127:
+ bl debug_sub_815F7B4
+ b ._136
+._130:
+ .align 2, 0
+._129:
+ .word _nakamuraData3
+._126:
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._131 @cond_branch
+ mov r0, #0x2
+ mov r1, #0x5
+ mov r2, #0xb
+ mov r3, #0x6
+ bl Menu_BlankWindowRect
+ mov r0, #0xb
+ mov r1, #0x1
+ mov r2, #0xb
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ ldr r1, ._133 @ gMenuCallback
+ ldr r0, ._133 + 4 @ debug_sub_815FA38
+ str r0, [r1]
+ b ._136
+._134:
+ .align 2, 0
+._133:
+ .word gMenuCallback
+ .word debug_sub_815FA38+1
+._131:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._136 @cond_branch
+ cmp r2, #0
+ bne ._136 @cond_branch
+ mov r0, #0x64
+._113:
+ bl debug_sub_815F86C
+._136:
+ mov r0, #0x0
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815F930
+
+ thumb_func_start debug_sub_815FA38
+debug_sub_815FA38:
+ push {r4, lr}
+ ldr r0, ._139 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._137 @cond_branch
+ mov r0, #0x2
+ neg r0, r0
+ b ._138
+._140:
+ .align 2, 0
+._139:
+ .word gMain
+._137:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._141 @cond_branch
+ mov r0, #0x2
+._138:
+ bl Menu_MoveCursor
+._161:
+ mov r0, #0x0
+ b ._142
+._141:
+ mov r0, #0x20
+ and r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ cmp r2, #0
+ beq ._143 @cond_branch
+ ldr r1, ._146 @ _nakamuraData0
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._144 @cond_branch
+ mov r0, #0x13
+ b ._148
+._147:
+ .align 2, 0
+._146:
+ .word _nakamuraData0
+._144:
+ sub r0, r0, #0x1
+ b ._148
+._143:
+ mov r0, #0x10
+ and r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0
+ beq ._149 @cond_branch
+ ldr r1, ._152 @ _nakamuraData0
+ ldrb r0, [r1]
+ cmp r0, #0x13
+ bne ._150 @cond_branch
+ strb r2, [r1]
+ b ._151
+._153:
+ .align 2, 0
+._152:
+ .word _nakamuraData0
+._150:
+ add r0, r0, #0x1
+._148:
+ strb r0, [r1]
+._151:
+ bl debug_sub_815F72C
+ b ._161
+._149:
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._155 @cond_branch
+ ldr r1, ._159 @ _nakamuraData0
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._161 @cond_branch
+ ldr r2, ._159 + 4 @ gSaveBlock1
+ add r1, r0, #0
+ lsl r0, r1, #0x2
+ add r0, r0, r1
+ lsl r0, r0, #0x5
+ add r0, r0, r2
+ ldr r1, ._159 + 8 @ 0x1a08
+ add r0, r0, r1
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._161 @cond_branch
+ bl Menu_GetCursorPos
+ ldr r1, ._159 + 12 @ _nakamuraData1
+ strb r0, [r1]
+ ldr r0, ._159 + 16 @ _nakamuraData2
+ strb r4, [r0]
+ bl debug_sub_815F788
+ bl debug_sub_815F7B4
+ ldr r1, ._159 + 20 @ gMenuCallback
+ ldr r0, ._159 + 24 @ debug_sub_815F930
+ str r0, [r1]
+ b ._161
+._160:
+ .align 2, 0
+._159:
+ .word _nakamuraData0
+ .word gSaveBlock1
+ .word 0x1a08
+ .word _nakamuraData1
+ .word _nakamuraData2
+ .word gMenuCallback
+ .word debug_sub_815F930+1
+._155:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._161 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+._142:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815FA38
+
+ thumb_func_start debug_sub_815FB1C
+debug_sub_815FB1C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ ldr r0, ._162 @ _nakamuraData0
+ mov r1, #0x0
+ strb r1, [r0]
+ ldr r0, ._162 + 4 @ _nakamuraData3
+ strb r1, [r0]
+ ldr r1, ._162 + 8 @ gMenuCallback
+ ldr r0, ._162 + 12 @ debug_sub_815FA38
+ str r0, [r1]
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xc
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ bl debug_sub_815F72C
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x3
+ bl InitMenu
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._163:
+ .align 2, 0
+._162:
+ .word _nakamuraData0
+ .word _nakamuraData3
+ .word gMenuCallback
+ .word debug_sub_815FA38+1
+
+ thumb_func_end debug_sub_815FB1C
+
+ thumb_func_start debug_sub_815FB78
+debug_sub_815FB78:
+ push {lr}
+ ldr r0, ._166 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._164 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ b ._165
+._167:
+ .align 2, 0
+._166:
+ .word gMain
+._164:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._168 @cond_branch
+ mov r0, #0x1
+._165:
+ bl Menu_MoveCursor
+ mov r0, #0x0
+ b ._177
+._168:
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._170 @cond_branch
+ bl CloseMenu
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0
+ beq ._171 @cond_branch
+ cmp r0, #0x1
+ beq ._172 @cond_branch
+ b ._175
+._171:
+ bl debug_sub_814A714
+ b ._175
+._172:
+ bl ClearRoamerData
+ bl ClearRoamerLocationData
+ b ._175
+._170:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._176 @cond_branch
+ mov r0, #0x0
+ b ._177
+._176:
+ bl CloseMenu
+._175:
+ mov r0, #0x1
+._177:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815FB78
+
+ thumb_func_start debug_sub_815FBE8
+debug_sub_815FBE8:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ ldr r1, ._178 @ gMenuCallback
+ ldr r0, ._178 + 4 @ debug_sub_815FB78
+ str r0, [r1]
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ ldr r4, ._178 + 8 @ gStringVar1
+ add r0, r4, #0
+ bl debug_sub_814A73C
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xb
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ add r0, r4, #0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._178 + 12 @ Str_843E580
+ mov r1, #0x2
+ mov r2, #0x3
+ bl Menu_PrintText
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x3
+ bl InitMenu
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._179:
+ .align 2, 0
+._178:
+ .word gMenuCallback
+ .word debug_sub_815FB78+1
+ .word gStringVar1
+ .word Str_843E580
+
+ thumb_func_end debug_sub_815FBE8
+
+ thumb_func_start debug_sub_815FC54
+debug_sub_815FC54:
+ push {r4, r5, r6, r7, lr}
+ mov r3, #0x0
+ ldr r7, ._181 @ gSaveBlock1
+ mov r6, #0xe8
+ lsl r6, r6, #0x3
+ ldr r5, ._181 + 4 @ 0x3e7
+ ldr r4, ._181 + 8 @ 0x742
+._180:
+ lsl r1, r3, #0x2
+ add r1, r1, r7
+ add r2, r3, #0
+ add r2, r2, #0x85
+ add r0, r1, r6
+ strh r2, [r0]
+ add r1, r1, r4
+ strh r5, [r1]
+ add r0, r3, #1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ cmp r3, #0x2a
+ bls ._180 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._182:
+ .align 2, 0
+._181:
+ .word gSaveBlock1
+ .word 0x3e7
+ .word 0x742
+
+ thumb_func_end debug_sub_815FC54
+
+ thumb_func_start debug_sub_815FC94
+debug_sub_815FC94:
+ push {lr}
+ bl ClearDecorationInventories
+ bl debug_sub_814A3A8
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815FC94
+
+ thumb_func_start debug_sub_815FCB4
+debug_sub_815FCB4:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ mov r7, #0x0
+ ldr r5, ._188 @ gMapHeader
+ ldr r0, [r5]
+ ldr r0, [r0, #0x4]
+ mov r1, #0x3
+ bl __divsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r1, r0, #0
+ mul r1, r1, r4
+ lsl r1, r1, #0x10
+ lsr r6, r1, #0x10
+ add r0, r6, r0
+ mov r9, r5
+ cmp r6, r0
+ bge ._183 @cond_branch
+ mov r8, r0
+._187:
+ mov r4, #0x0
+ mov r1, r9
+ ldr r0, [r1]
+ ldr r0, [r0]
+ add r5, r6, #1
+ cmp r4, r0
+ bge ._184 @cond_branch
+ ldr r0, ._188 @ gMapHeader
+ mov r9, r0
+._186:
+ add r0, r4, #7
+ add r1, r6, #7
+ bl MapGridGetMetatileBehaviorAt
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl sub_805759C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bne ._185 @cond_branch
+ add r0, r7, #1
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+._185:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, ._188 @ gMapHeader
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r4, r0
+ blt ._186 @cond_branch
+._184:
+ lsl r0, r5, #0x10
+ lsr r6, r0, #0x10
+ cmp r6, r8
+ blt ._187 @cond_branch
+._183:
+ add r0, r7, #0
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._189:
+ .align 2, 0
+._188:
+ .word gMapHeader
+
+ thumb_func_end debug_sub_815FCB4
+
+ thumb_func_start debug_sub_815FD40
+debug_sub_815FD40:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xfffffffc
+ mov r6, #0x0
+ mov r4, sp
+ add r4, r4, #0x2
+ mov r0, sp
+ add r1, r4, #0
+ bl GetXYCoordsOneStepInFrontOfPlayer
+ mov r1, sp
+ mov r0, sp
+ ldrh r0, [r0]
+ sub r0, r0, #0x7
+ strh r0, [r1]
+ ldrh r0, [r4]
+ sub r0, r0, #0x7
+ strh r0, [r4]
+ mov r5, #0x0
+ ldr r1, ._192 @ gMapHeader
+ ldr r0, [r1]
+ ldr r0, [r0, #0x4]
+ add r7, r4, #0
+ cmp r6, r0
+ bge ._190 @cond_branch
+._199:
+ mov r4, #0x0
+ ldr r0, [r1]
+ b ._191
+._193:
+ .align 2, 0
+._192:
+ .word gMapHeader
+._198:
+ add r0, r4, #7
+ add r1, r5, #7
+ bl MapGridGetMetatileBehaviorAt
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl sub_805759C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bne ._196 @cond_branch
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ mov r0, sp
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, r4
+ bne ._196 @cond_branch
+ mov r1, #0x0
+ ldsh r0, [r7, r1]
+ cmp r0, r5
+ bne ._196 @cond_branch
+ add r0, r6, #0
+ b ._197
+._196:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, ._200 @ gMapHeader
+ ldr r0, [r0]
+._191:
+ ldr r0, [r0]
+ cmp r4, r0
+ blt ._198 @cond_branch
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r1, ._200 @ gMapHeader
+ ldr r0, [r1]
+ ldr r0, [r0, #0x4]
+ cmp r5, r0
+ blt ._199 @cond_branch
+._190:
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+._197:
+ add sp, sp, #0x4
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._201:
+ .align 2, 0
+._200:
+ .word gMapHeader
+
+ thumb_func_end debug_sub_815FD40
+
+ thumb_func_start debug_sub_815FDE4
+debug_sub_815FDE4:
+ push {lr}
+ ldr r0, ._205 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._202 @cond_branch
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._203 @cond_branch
+._202:
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl CloseMenu
+ mov r0, #0x1
+ b ._204
+._206:
+ .align 2, 0
+._205:
+ .word gMain
+._203:
+ mov r0, #0x0
+._204:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815FDE4
+
+ thumb_func_start debug_sub_815FE1C
+debug_sub_815FE1C:
+ push {r4, r5, r6, r7, lr}
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x10
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._210 @ Str_843E58D
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r6, ._210 + 4 @ gStringVar1
+ mov r0, #0x0
+ bl debug_sub_815FCB4
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x5
+ mov r2, #0x3
+ bl Menu_PrintText
+ mov r0, #0x1
+ bl debug_sub_815FCB4
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x5
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0x2
+ bl debug_sub_815FCB4
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x5
+ mov r2, #0x7
+ bl Menu_PrintText
+ mov r0, #0x0
+ bl debug_sub_8092344
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0xb
+ mov r2, #0x3
+ bl Menu_PrintText
+ mov r0, #0x1
+ bl debug_sub_8092344
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0xb
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0x2
+ bl debug_sub_8092344
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0xb
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r0, ._210 + 8 @ gSaveBlock1
+ ldr r1, ._210 + 12 @ 0x2dd6
+ add r0, r0, r1
+ ldrh r0, [r0]
+ bl FeebasSeedRng
+ mov r0, #0x0
+ bl debug_sub_815FCB4
+ add r4, r0, #0
+ mov r0, #0x1
+ bl debug_sub_815FCB4
+ add r5, r0, #0
+ mov r0, #0x2
+ bl debug_sub_815FCB4
+ add r4, r4, r5
+ add r0, r0, r4
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ mov r5, #0x0
+._209:
+ bl FeebasRandom
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r1, r7, #0
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r1, #0
+ bne ._207 @cond_branch
+ add r1, r7, #0
+._207:
+ sub r0, r1, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x2
+ bls ._208 @cond_branch
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x4
+ bl ConvertIntToDecimalStringN
+ add r0, r5, #0
+ mov r1, #0x3
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r4, r0, #0x2
+ add r4, r4, r0
+ add r4, r4, #0x2
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r5, #0
+ mov r1, #0x3
+ bl __udivsi3
+ add r2, r0, #0
+ lsl r2, r2, #0x19
+ mov r0, #0xb0
+ lsl r0, r0, #0x14
+ add r2, r2, r0
+ lsr r2, r2, #0x18
+ add r0, r6, #0
+ add r1, r4, #0
+ bl Menu_PrintText
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+._208:
+ cmp r5, #0x6
+ bne ._209 @cond_branch
+ ldr r4, ._210 + 4 @ gStringVar1
+ bl debug_sub_815FD40
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r4, #0
+ mov r2, #0x1
+ mov r3, #0x4
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x2
+ mov r2, #0x11
+ bl Menu_PrintText
+ ldr r1, ._210 + 16 @ gMenuCallback
+ ldr r0, ._210 + 20 @ debug_sub_815FDE4
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._211:
+ .align 2, 0
+._210:
+ .word Str_843E58D
+ .word gStringVar1
+ .word gSaveBlock1
+ .word 0x2dd6
+ .word gMenuCallback
+ .word debug_sub_815FDE4+1
+
+ thumb_func_end debug_sub_815FE1C
+
+ thumb_func_start debug_sub_815FFDC
+debug_sub_815FFDC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ mov r0, #0xe
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0xe
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._214 @ Str_843E5D4
+ mov r1, #0x1
+ mov r2, #0xf
+ bl Menu_PrintText
+ mov r5, #0x0
+ ldr r0, ._214 + 4 @ _nakamuraStatic0
+ mov r8, r0
+._216:
+ mov r0, #0x64
+ add r1, r5, #0
+ mul r1, r1, r0
+ ldr r0, ._214 + 8 @ gPlayerParty
+ add r6, r1, r0
+ add r0, r6, #0
+ mov r1, #0xb
+ bl GetMonData
+ lsl r1, r5, #0x2
+ mov r2, r8
+ add r4, r1, r2
+ strh r0, [r4]
+ lsl r0, r0, #0x10
+ add r7, r1, #0
+ cmp r0, #0
+ beq ._212 @cond_branch
+ add r0, r6, #0
+ mov r1, #0x38
+ bl GetMonData
+ strb r0, [r4, #0x2]
+ add r0, r5, #0
+ bl debug_sub_816009C
+ add r0, r5, #0
+ bl debug_sub_81600D0
+ add r0, r5, #0
+ bl debug_sub_816013C
+ b ._213
+._215:
+ .align 2, 0
+._214:
+ .word Str_843E5D4
+ .word _nakamuraStatic0
+ .word gPlayerParty
+._212:
+ mov r0, #0x1
+ strb r0, [r4, #0x2]
+._213:
+ mov r0, r8
+ add r1, r7, r0
+ mov r0, #0x0
+ strb r0, [r1, #0x3]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x5
+ bls ._216 @cond_branch
+ ldr r1, ._217 @ _nakamuraData4
+ mov r0, #0x0
+ strb r0, [r1]
+ mov r0, #0xf
+ mov r1, #0x1
+ mov r2, #0xff
+ bl PrintTriangleCursorWithPalette
+ ldr r1, ._217 + 4 @ gMenuCallback
+ ldr r0, ._217 + 8 @ debug_sub_8160498
+ str r0, [r1]
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._218:
+ .align 2, 0
+._217:
+ .word _nakamuraData4
+ .word gMenuCallback
+ .word debug_sub_8160498+1
+
+ thumb_func_end debug_sub_815FFDC
+
+ thumb_func_start debug_sub_816009C
+debug_sub_816009C:
+ push {lr}
+ add r2, r0, #0
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ ldr r1, ._219 @ _nakamuraStatic0
+ lsl r0, r2, #0x2
+ add r0, r0, r1
+ mov r3, #0x0
+ ldsh r1, [r0, r3]
+ mov r0, #0xb
+ mul r0, r0, r1
+ ldr r1, ._219 + 4 @ gSpeciesNames
+ add r0, r0, r1
+ lsl r2, r2, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r1, #0x10
+ bl Menu_PrintText
+ pop {r0}
+ bx r0
+._220:
+ .align 2, 0
+._219:
+ .word _nakamuraStatic0
+ .word gSpeciesNames
+
+ thumb_func_end debug_sub_816009C
+
+ thumb_func_start debug_sub_81600D0
+debug_sub_81600D0:
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r5, r4, #0
+ ldr r1, ._223 @ Str_843E5F0
+ mov r0, sp
+ mov r2, #0x2
+ bl memcpy
+ mov r0, #0x64
+ mul r0, r0, r4
+ ldr r1, ._223 + 4 @ gPlayerParty
+ add r0, r0, r1
+ bl GetMonGender
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0
+ bne ._221 @cond_branch
+ ldr r0, ._223 + 8 @ gOtherText_MaleSymbol2
+ b ._222
+._224:
+ .align 2, 0
+._223:
+ .word Str_843E5F0
+ .word gPlayerParty
+ .word gOtherText_MaleSymbol2
+._221:
+ cmp r0, #0xfe
+ bne ._225 @cond_branch
+ ldr r0, ._227 @ gOtherText_FemaleSymbolAndLv
+._222:
+ lsl r2, r4, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r1, #0x17
+ bl Menu_PrintText
+ b ._226
+._228:
+ .align 2, 0
+._227:
+ .word gOtherText_FemaleSymbolAndLv
+._225:
+ lsl r2, r5, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r0, sp
+ mov r1, #0x17
+ bl Menu_PrintText
+._226:
+ add sp, sp, #0x4
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_81600D0
+
+ thumb_func_start debug_sub_816013C
+debug_sub_816013C:
+ push {r4, r5, lr}
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r5, ._229 @ gStringVar1
+ ldr r1, ._229 + 4 @ _nakamuraStatic0
+ lsl r0, r4, #0x2
+ add r0, r0, r1
+ mov r1, #0x2
+ ldrsb r1, [r0, r1]
+ add r0, r5, #0
+ mov r2, #0x1
+ mov r3, #0x3
+ bl ConvertIntToDecimalStringN
+ lsl r4, r4, #0x1
+ add r4, r4, #0x1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r5, #0
+ mov r1, #0x1a
+ add r2, r4, #0
+ bl Menu_PrintText
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._230:
+ .align 2, 0
+._229:
+ .word gStringVar1
+ .word _nakamuraStatic0
+
+ thumb_func_end debug_sub_816013C
+
+ thumb_func_start debug_sub_816017C
+debug_sub_816017C:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ lsl r3, r4, #0x1
+ add r1, r3, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r3, r3, #0x2
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ mov r0, #0x10
+ mov r2, #0x1c
+ bl Menu_BlankWindowRect
+ ldr r1, ._232 @ _nakamuraStatic0
+ lsl r0, r4, #0x2
+ add r0, r0, r1
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, #0
+ beq ._231 @cond_branch
+ add r0, r4, #0
+ bl debug_sub_816009C
+ add r0, r4, #0
+ bl debug_sub_81600D0
+ add r0, r4, #0
+ bl debug_sub_816013C
+._231:
+ mov r0, #0x5
+ bl debug_sub_81603B8
+ pop {r4}
+ pop {r0}
+ bx r0
+._233:
+ .align 2, 0
+._232:
+ .word _nakamuraStatic0
+
+ thumb_func_end debug_sub_816017C
+
+ thumb_func_start debug_sub_81601C8
+debug_sub_81601C8:
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffff0
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r1, ._239 @ _nakamuraStatic0
+ lsl r0, r5, #0x2
+ add r2, r0, r1
+ mov r4, #0x0
+ ldsh r0, [r2, r4]
+ cmp r0, #0
+ bne ._236 @cond_branch
+ ldrb r0, [r2, #0x3]
+ cmp r0, #0
+ bne ._236 @cond_branch
+ cmp r3, #0x1
+ bne ._236 @cond_branch
+ mov r0, #0x8a
+ lsl r0, r0, #0x1
+ strh r0, [r2]
+._236:
+ lsl r0, r5, #0x2
+ add r4, r0, r1
+ lsl r0, r3, #0x18
+ asr r0, r0, #0x18
+ ldrh r1, [r4]
+ add r2, r0, r1
+ mov r3, #0x0
+ strh r2, [r4]
+ lsl r1, r2, #0x10
+ mov r0, #0xcd
+ lsl r0, r0, #0x11
+ cmp r1, r0
+ ble ._237 @cond_branch
+ ldr r1, ._239 + 4 @ 0xfffffe65
+ add r0, r2, r1
+ strh r0, [r4]
+._237:
+ ldrh r1, [r4]
+ mov r2, #0x0
+ ldsh r0, [r4, r2]
+ cmp r0, #0
+ bge ._238 @cond_branch
+ ldr r2, ._239 + 8 @ 0x19b
+ add r0, r1, r2
+ strh r0, [r4]
+._238:
+ mov r0, #0x64
+ mul r0, r0, r5
+ ldr r1, ._239 + 12 @ gPlayerParty
+ add r0, r0, r1
+ ldrh r1, [r4]
+ ldrb r2, [r4, #0x2]
+ str r3, [sp]
+ str r3, [sp, #0x4]
+ str r3, [sp, #0x8]
+ str r3, [sp, #0xc]
+ mov r3, #0x20
+ bl CreateMon
+ mov r0, #0x1
+ strb r0, [r4, #0x3]
+ add sp, sp, #0x10
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._240:
+ .align 2, 0
+._239:
+ .word _nakamuraStatic0
+ .word 0xfffffe65
+ .word 0x19b
+ .word gPlayerParty
+
+ thumb_func_end debug_sub_81601C8
+
+ thumb_func_start debug_sub_8160258
+debug_sub_8160258:
+ push {lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ ldr r1, ._242 @ _nakamuraStatic0
+ lsl r0, r2, #0x2
+ add r0, r0, r1
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, #0
+ beq ._241 @cond_branch
+ add r0, r2, #0
+ bl debug_sub_816062C
+._241:
+ pop {r0}
+ bx r0
+._243:
+ .align 2, 0
+._242:
+ .word _nakamuraStatic0
+
+ thumb_func_end debug_sub_8160258
+
+ thumb_func_start debug_sub_816027C
+debug_sub_816027C:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r4, r0, #0
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ ldr r1, ._247 @ _nakamuraStatic0
+ lsl r0, r4, #0x2
+ add r3, r0, r1
+ mov r1, #0x0
+ ldsh r0, [r3, r1]
+ cmp r0, #0
+ beq ._244 @cond_branch
+ lsl r0, r2, #0x18
+ asr r0, r0, #0x18
+ ldrb r1, [r3, #0x2]
+ add r0, r0, r1
+ strb r0, [r3, #0x2]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, #0x64
+ ble ._245 @cond_branch
+ mov r0, #0x1
+ strb r0, [r3, #0x2]
+._245:
+ mov r0, #0x2
+ ldrsb r0, [r3, r0]
+ cmp r0, #0
+ bgt ._246 @cond_branch
+ mov r0, #0x64
+ strb r0, [r3, #0x2]
+._246:
+ mov r0, #0x64
+ mul r4, r4, r0
+ ldr r0, ._247 + 4 @ gPlayerParty
+ add r4, r4, r0
+ ldr r2, ._247 + 8 @ gBaseStats
+ mov r0, #0x0
+ ldsh r1, [r3, r0]
+ lsl r0, r1, #0x3
+ sub r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r2
+ ldrb r1, [r0, #0x13]
+ mov r0, #0xca
+ lsl r0, r0, #0x1
+ add r2, r1, #0
+ mul r2, r2, r0
+ mov r0, #0x2
+ ldrsb r0, [r3, r0]
+ lsl r0, r0, #0x2
+ ldr r1, ._247 + 12 @ gExperienceTables
+ add r0, r0, r1
+ add r2, r2, r0
+ add r0, r4, #0
+ mov r1, #0x19
+ bl SetMonData
+ add r0, r4, #0
+ bl debug_sub_803F55C
+._244:
+ pop {r4}
+ pop {r0}
+ bx r0
+._248:
+ .align 2, 0
+._247:
+ .word _nakamuraStatic0
+ .word gPlayerParty
+ .word gBaseStats
+ .word gExperienceTables
+
+ thumb_func_end debug_sub_816027C
+
+ thumb_func_start debug_sub_8160308
+debug_sub_8160308:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ add sp, sp, #0xffffff8c
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ mov r2, #0x0
+._252:
+ add r1, r2, #1
+ lsl r0, r1, #0x18
+ lsr r5, r0, #0x18
+ mov r8, r1
+ cmp r5, #0x5
+ bhi ._249 @cond_branch
+ mov r0, #0x64
+ mov r9, r0
+ mov r0, r9
+ mul r0, r0, r2
+ ldr r7, ._254 @ gPlayerParty
+ add r6, r0, r7
+._251:
+ add r0, r6, #0
+ mov r1, #0xb
+ mov r2, #0x0
+ bl GetMonData
+ cmp r0, #0
+ bne ._250 @cond_branch
+ add r0, sp, #0x10
+ add r1, r6, #0
+ mov r2, #0x64
+ bl memcpy
+ mov r4, r9
+ mul r4, r4, r5
+ add r4, r4, r7
+ add r0, r6, #0
+ add r1, r4, #0
+ mov r2, #0x64
+ bl memcpy
+ add r0, r4, #0
+ add r1, sp, #0x10
+ mov r2, #0x64
+ bl memcpy
+._250:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x5
+ bls ._251 @cond_branch
+._249:
+ mov r1, r8
+ lsl r0, r1, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x4
+ bls ._252 @cond_branch
+ bl CalculatePlayerPartyCount
+ ldr r4, ._254 + 4 @ gPlayerPartyCount
+ ldrb r1, [r4]
+ cmp r1, #0
+ bne ._253 @cond_branch
+ ldr r0, ._254 @ gPlayerParty
+ str r1, [sp]
+ str r1, [sp, #0x4]
+ str r1, [sp, #0x8]
+ str r1, [sp, #0xc]
+ mov r1, #0x1
+ mov r2, #0xa
+ mov r3, #0x20
+ bl CreateMon
+ mov r0, #0x1
+ strb r0, [r4]
+._253:
+ add sp, sp, #0x74
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._255:
+ .align 2, 0
+._254:
+ .word gPlayerParty
+ .word gPlayerPartyCount
+
+ thumb_func_end debug_sub_8160308
+
+ thumb_func_start debug_sub_81603B8
+debug_sub_81603B8:
+ push {r4, r5, r6, r7, lr}
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ mov r0, #0x5
+ bl PlaySE
+ ldr r7, ._259 @ _nakamuraData4
+ ldrb r4, [r7]
+ add r0, r4, #0
+ mov r1, #0x6
+ bl __udivsi3
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r0, r4, #0
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, ._259 + 4 @ _843E5D1
+ add r0, r5, r0
+ ldrb r2, [r0]
+ lsl r3, r4, #0x1
+ add r1, r3, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r3, r3, #0x2
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ add r0, r2, #0
+ bl Menu_BlankWindowRect
+ cmp r6, #0
+ bne ._256 @cond_branch
+ cmp r4, #0
+ beq ._257 @cond_branch
+ ldrb r0, [r7]
+ sub r0, r0, #0x1
+ b ._258
+._260:
+ .align 2, 0
+._259:
+ .word _nakamuraData4
+ .word _843E5D1
+._257:
+ lsl r0, r5, #0x1
+ add r0, r0, r5
+ lsl r0, r0, #0x1
+ add r0, r0, #0x5
+._258:
+ strb r0, [r7]
+._256:
+ ldr r1, ._264 @ _nakamuraData4
+ cmp r6, #0x1
+ bne ._261 @cond_branch
+ cmp r4, #0x5
+ beq ._262 @cond_branch
+ ldrb r0, [r1]
+ add r0, r0, #0x1
+ b ._263
+._265:
+ .align 2, 0
+._264:
+ .word _nakamuraData4
+._262:
+ lsl r0, r5, #0x1
+ add r0, r0, r5
+ lsl r0, r0, #0x1
+._263:
+ strb r0, [r1]
+._261:
+ cmp r6, #0x2
+ bne ._266 @cond_branch
+ cmp r5, #0
+ beq ._267 @cond_branch
+ ldrb r0, [r1]
+ sub r0, r0, #0x6
+ b ._268
+._267:
+ add r0, r4, #0
+ add r0, r0, #0xc
+._268:
+ strb r0, [r1]
+._266:
+ cmp r6, #0x3
+ bne ._271 @cond_branch
+ cmp r5, #0x2
+ beq ._270 @cond_branch
+ ldrb r0, [r1]
+ add r0, r0, #0x6
+ strb r0, [r1]
+ b ._271
+._270:
+ strb r4, [r1]
+._271:
+ ldrb r4, [r1]
+ add r0, r4, #0
+ mov r1, #0x6
+ bl __udivsi3
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r0, r4, #0
+ mov r1, #0x6
+ bl __umodsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ ldr r0, ._272 @ _843E5D1
+ add r0, r5, r0
+ ldrb r0, [r0]
+ lsr r1, r1, #0x17
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #0xff
+ bl PrintTriangleCursorWithPalette
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._273:
+ .align 2, 0
+._272:
+ .word _843E5D1
+
+ thumb_func_end debug_sub_81603B8
+
+ thumb_func_start debug_sub_8160498
+debug_sub_8160498:
+ push {r4, lr}
+ ldr r1, ._276 @ gMain
+ ldrh r2, [r1, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._274 @cond_branch
+ mov r0, #0x0
+ b ._281
+._277:
+ .align 2, 0
+._276:
+ .word gMain
+._274:
+ mov r0, #0x80
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._278 @cond_branch
+ mov r0, #0x1
+ b ._281
+._278:
+ mov r0, #0x20
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._280 @cond_branch
+ mov r0, #0x2
+ b ._281
+._280:
+ mov r0, #0x10
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._282 @cond_branch
+ mov r0, #0x3
+._281:
+ bl debug_sub_81603B8
+ mov r0, #0x0
+ b ._311
+._282:
+ ldrh r1, [r1, #0x30]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._284 @cond_branch
+ ldr r4, ._289 @ _nakamuraData4
+ ldrb r0, [r4]
+ cmp r0, #0x5
+ bhi ._285 @cond_branch
+ mov r1, #0x1
+ bl debug_sub_81601C8
+._285:
+ ldrb r0, [r4]
+ sub r0, r0, #0x6
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi ._286 @cond_branch
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl debug_sub_8160258
+._286:
+ ldrb r0, [r4]
+ sub r0, r0, #0xc
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi ._306 @cond_branch
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ b ._300
+._290:
+ .align 2, 0
+._289:
+ .word _nakamuraData4
+._284:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._291 @cond_branch
+ ldr r4, ._294 @ _nakamuraData4
+ ldrb r0, [r4]
+ cmp r0, #0x5
+ bhi ._304 @cond_branch
+ mov r1, #0x1
+ neg r1, r1
+ b ._293
+._295:
+ .align 2, 0
+._294:
+ .word _nakamuraData4
+._291:
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._296 @cond_branch
+ ldr r4, ._301 @ _nakamuraData4
+ ldrb r0, [r4]
+ cmp r0, #0x5
+ bhi ._297 @cond_branch
+ mov r1, #0xa
+ bl debug_sub_81601C8
+._297:
+ ldrb r0, [r4]
+ sub r0, r0, #0x6
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi ._298 @cond_branch
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl debug_sub_8160258
+._298:
+ ldrb r0, [r4]
+ sub r0, r0, #0xc
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi ._306 @cond_branch
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ b ._300
+._302:
+ .align 2, 0
+._301:
+ .word _nakamuraData4
+._296:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._303 @cond_branch
+ ldr r4, ._308 @ _nakamuraData4
+ ldrb r0, [r4]
+ cmp r0, #0x5
+ bhi ._304 @cond_branch
+ mov r1, #0xa
+ neg r1, r1
+._293:
+ bl debug_sub_81601C8
+._304:
+ ldrb r0, [r4]
+ sub r0, r0, #0x6
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi ._305 @cond_branch
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl debug_sub_8160258
+._305:
+ ldrb r0, [r4]
+ sub r0, r0, #0xc
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi ._306 @cond_branch
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ neg r1, r1
+._300:
+ bl debug_sub_816027C
+._306:
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl debug_sub_816017C
+ mov r0, #0x0
+ b ._311
+._309:
+ .align 2, 0
+._308:
+ .word _nakamuraData4
+._303:
+ mov r0, #0x8
+ and r0, r0, r2
+ cmp r0, #0
+ bne ._310 @cond_branch
+ mov r0, #0x0
+ b ._311
+._310:
+ bl debug_sub_8160308
+ bl CloseMenu
+ mov r0, #0x1
+._311:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8160498
+
+ thumb_func_start debug_sub_816062C
+debug_sub_816062C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ add sp, sp, #0xfffffff0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r8, r0
+ mov r0, #0x64
+ mov r4, r8
+ mul r4, r4, r0
+ ldr r0, ._316 @ gPlayerParty
+ add r4, r4, r0
+ add r0, r4, #0
+ mov r1, #0xb
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ add r0, r4, #0
+ bl GetMonGender
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ ldr r1, ._316 + 4 @ gBaseStats
+ lsl r0, r7, #0x3
+ sub r0, r0, r7
+ lsl r0, r0, #0x2
+ add r0, r0, r1
+ ldrb r6, [r0, #0x10]
+ cmp r6, #0
+ beq ._313 @cond_branch
+ cmp r6, #0xfe
+ beq ._313 @cond_branch
+ cmp r6, #0xff
+ bne ._314 @cond_branch
+._313:
+ mov r0, #0x64
+ mov r1, r8
+ mul r1, r1, r0
+ add r0, r1, #0
+ ldr r1, ._316 @ gPlayerParty
+ add r0, r0, r1
+ bl GetMonGender
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._320
+._317:
+ .align 2, 0
+._316:
+ .word gPlayerParty
+ .word gBaseStats
+._314:
+ cmp r2, #0
+ beq ._318 @cond_branch
+ cmp r2, #0xfe
+ beq ._319 @cond_branch
+ mov r0, #0x0
+ b ._320
+._318:
+ mov r6, #0xfe
+ b ._321
+._319:
+ mov r6, #0x0
+._321:
+ mov r0, r8
+ lsl r0, r0, #0x2
+ mov r9, r0
+._322:
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ bl Random
+ lsl r0, r0, #0x10
+ orr r5, r5, r0
+ add r0, r7, #0
+ add r1, r5, #0
+ bl GetGenderFromSpeciesAndPersonality
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, r6
+ bne ._322 @cond_branch
+ mov r0, #0x64
+ mov r4, r8
+ mul r4, r4, r0
+ ldr r0, ._323 @ gPlayerParty
+ add r4, r4, r0
+ add r0, r4, #0
+ mov r1, #0x42
+ bl GetMonData
+ ldr r0, ._323 + 4 @ _nakamuraStatic0
+ add r0, r0, r9
+ ldrh r1, [r0]
+ ldrb r2, [r0, #0x2]
+ mov r0, #0x1
+ str r0, [sp]
+ str r5, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ mov r3, #0x20
+ bl CreateMon
+ add r0, r6, #0
+._320:
+ add sp, sp, #0x10
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._324:
+ .align 2, 0
+._323:
+ .word gPlayerParty
+ .word _nakamuraStatic0
+
+ thumb_func_end debug_sub_816062C
+
+ thumb_func_start debug_sub_8160714
+debug_sub_8160714:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ add sp, sp, #0xfffffff0
+ add r6, r0, #0
+ mov r9, r1
+ mov r7, #0x0
+ mov r0, #0x0
+ mov r8, r0
+ mov r2, #0x0
+ mov r5, #0x0
+._329:
+ add r4, r5, #1
+ lsl r1, r4, #0x18
+ lsr r1, r1, #0x18
+ mov r0, r9
+ str r2, [sp, #0xc]
+ bl GetPokeblockData
+ add r1, r0, #0
+ lsl r0, r5, #0x1
+ add r0, r0, sp
+ strh r1, [r0]
+ ldr r2, [sp, #0xc]
+ cmp r5, #0x5
+ beq ._328 @cond_branch
+ lsl r0, r1, #0x10
+ asr r1, r0, #0x10
+ cmp r1, #0
+ ble ._326 @cond_branch
+ add r0, r7, #1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._326:
+ cmp r1, #0
+ bge ._327 @cond_branch
+ mov r0, r8
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r8, r0
+._327:
+ cmp r1, #0
+ bne ._328 @cond_branch
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+._328:
+ lsl r0, r4, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x5
+ bls ._329 @cond_branch
+ mov r0, sp
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, #0x31
+ bgt ._333 @cond_branch
+ mov r0, sp
+ ldrh r0, [r0, #0x2]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ cmp r0, #0x31
+ bgt ._333 @cond_branch
+ mov r0, sp
+ mov r4, #0x4
+ ldsh r0, [r0, r4]
+ cmp r0, #0x31
+ bgt ._333 @cond_branch
+ mov r0, sp
+ mov r1, #0x6
+ ldsh r0, [r0, r1]
+ cmp r0, #0x31
+ bgt ._333 @cond_branch
+ mov r0, sp
+ mov r4, #0x8
+ ldsh r0, [r0, r4]
+ cmp r0, #0x31
+ ble ._334 @cond_branch
+._333:
+ ldr r1, ._336 @ ContestStatsText_GoldPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0xe
+ b ._400
+._337:
+ .align 2, 0
+._336:
+ .word ContestStatsText_GoldPokeBlock
+._334:
+ cmp r7, #0x4
+ bne ._338 @cond_branch
+ ldr r1, ._340 @ ContestStatsText_WhitePokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0xd
+ b ._400
+._341:
+ .align 2, 0
+._340:
+ .word ContestStatsText_WhitePokeBlock
+._338:
+ mov r3, #0x0
+ mov r5, #0x0
+._343:
+ lsl r0, r5, #0x1
+ add r0, r0, sp
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, #0x2
+ bne ._342 @cond_branch
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+._342:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x4
+ bls ._343 @cond_branch
+ cmp r3, #0x3
+ beq ._345 @cond_branch
+ cmp r2, #0x5
+ beq ._345 @cond_branch
+ mov r4, r8
+ cmp r4, #0x4
+ bne ._346 @cond_branch
+._345:
+ ldr r1, ._348 @ ContestStatsText_BlackPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0xc
+ b ._400
+._349:
+ .align 2, 0
+._348:
+ .word ContestStatsText_BlackPokeBlock
+._346:
+ cmp r7, #0x3
+ bne ._350 @cond_branch
+ ldr r1, ._352 @ ContestStatsText_GrayPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0xb
+ b ._400
+._353:
+ .align 2, 0
+._352:
+ .word ContestStatsText_GrayPokeBlock
+._350:
+ cmp r7, #0x2
+ beq ._354 @cond_branch
+ mov r0, r8
+ cmp r0, #0x2
+ bne ._377 @cond_branch
+._354:
+ mov r3, #0x6
+ mov r2, #0x0
+ mov r5, #0x0
+._359:
+ lsl r0, r5, #0x1
+ add r0, r0, sp
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, #0
+ beq ._358 @cond_branch
+ cmp r3, #0x6
+ bne ._357 @cond_branch
+ add r3, r5, #0
+ b ._358
+._357:
+ add r2, r5, #0
+._358:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x4
+ bls ._359 @cond_branch
+ lsl r0, r3, #0x1
+ mov r4, sp
+ add r1, r4, r0
+ lsl r0, r2, #0x1
+ add r0, r0, sp
+ mov r4, #0x0
+ ldsh r1, [r1, r4]
+ mov r4, #0x0
+ ldsh r0, [r0, r4]
+ cmp r1, r0
+ blt ._360 @cond_branch
+ add r2, r3, #0
+._360:
+ cmp r2, #0
+ bne ._361 @cond_branch
+ ldr r1, ._363 @ ContestStatsText_PurplePokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x6
+ b ._400
+._364:
+ .align 2, 0
+._363:
+ .word ContestStatsText_PurplePokeBlock
+._361:
+ cmp r2, #0x1
+ bne ._365 @cond_branch
+ ldr r1, ._367 @ ContestStatsText_IndigoPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x7
+ b ._400
+._368:
+ .align 2, 0
+._367:
+ .word ContestStatsText_IndigoPokeBlock
+._365:
+ cmp r2, #0x2
+ bne ._369 @cond_branch
+ ldr r1, ._371 @ ContestStatsText_BrownPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x8
+ b ._400
+._372:
+ .align 2, 0
+._371:
+ .word ContestStatsText_BrownPokeBlock
+._369:
+ cmp r2, #0x3
+ bne ._373 @cond_branch
+ ldr r1, ._375 @ ContestStatsText_LiteBluePokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x9
+ b ._400
+._376:
+ .align 2, 0
+._375:
+ .word ContestStatsText_LiteBluePokeBlock
+._373:
+ cmp r2, #0x4
+ bne ._377 @cond_branch
+ ldr r1, ._379 @ ContestStatsText_OlivePokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0xa
+ b ._400
+._380:
+ .align 2, 0
+._379:
+ .word ContestStatsText_OlivePokeBlock
+._377:
+ cmp r7, #0x1
+ beq ._381 @cond_branch
+ mov r0, r8
+ cmp r0, #0x1
+ bne ._399 @cond_branch
+._381:
+ mov r0, sp
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, #0
+ beq ._383 @cond_branch
+ ldr r1, ._385 @ ContestStatsText_RedPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x1
+ b ._400
+._386:
+ .align 2, 0
+._385:
+ .word ContestStatsText_RedPokeBlock
+._383:
+ mov r0, sp
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0
+ beq ._387 @cond_branch
+ ldr r1, ._389 @ ContestStatsText_BluePokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x2
+ b ._400
+._390:
+ .align 2, 0
+._389:
+ .word ContestStatsText_BluePokeBlock
+._387:
+ mov r0, sp
+ mov r4, #0x4
+ ldsh r0, [r0, r4]
+ cmp r0, #0
+ beq ._391 @cond_branch
+ ldr r1, ._393 @ ContestStatsText_PinkPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x3
+ b ._400
+._394:
+ .align 2, 0
+._393:
+ .word ContestStatsText_PinkPokeBlock
+._391:
+ mov r0, sp
+ mov r1, #0x6
+ ldsh r0, [r0, r1]
+ cmp r0, #0
+ beq ._395 @cond_branch
+ ldr r1, ._397 @ ContestStatsText_GreenPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x4
+ b ._400
+._398:
+ .align 2, 0
+._397:
+ .word ContestStatsText_GreenPokeBlock
+._395:
+ mov r0, sp
+ mov r4, #0x8
+ ldsh r0, [r0, r4]
+ cmp r0, #0
+ beq ._399 @cond_branch
+ ldr r1, ._401 @ ContestStatsText_YellowPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x5
+ b ._400
+._402:
+ .align 2, 0
+._401:
+ .word ContestStatsText_YellowPokeBlock
+._399:
+ ldr r1, ._403 @ gOtherText_FiveQuestions
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x0
+._400:
+ add sp, sp, #0x10
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._404:
+ .align 2, 0
+._403:
+ .word gOtherText_FiveQuestions
+
+ thumb_func_end debug_sub_8160714
+
+ thumb_func_start debug_sub_816097C
+debug_sub_816097C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add r7, r0, #0
+ lsl r1, r1, #0x10
+ lsr r5, r1, #0x10
+ mov r6, #0x0
+ mov r1, #0x0
+._405:
+ add r0, r7, r6
+ strb r1, [r0]
+ add r0, r6, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x3
+ bls ._405 @cond_branch
+ mov r0, #0xff
+ strb r0, [r7, #0x4]
+ lsl r0, r5, #0x10
+ asr r0, r0, #0x10
+ cmp r0, #0
+ bne ._406 @cond_branch
+ mov r0, #0xa1
+ strb r0, [r7, #0x3]
+ b ._414
+._406:
+ cmp r0, #0
+ ble ._408 @cond_branch
+ mov r4, #0x64
+ mov r0, #0x0
+ mov r8, r0
+ mov r6, #0x0
+._412:
+ lsl r5, r5, #0x10
+ asr r0, r5, #0x10
+ lsl r4, r4, #0x10
+ asr r1, r4, #0x10
+ bl __divsi3
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ mov r1, r8
+ cmp r1, #0
+ bne ._410 @cond_branch
+ cmp r6, #0x2
+ beq ._410 @cond_branch
+ cmp r2, #0
+ beq ._411 @cond_branch
+._410:
+ add r1, r6, r7
+ add r0, r2, #0
+ sub r0, r0, #0x5f
+ strb r0, [r1, #0x1]
+ mov r0, #0x1
+ mov r8, r0
+._411:
+ asr r0, r5, #0x10
+ asr r4, r4, #0x10
+ add r1, r4, #0
+ bl __modsi3
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, #0
+ mov r1, #0xa
+ bl __divsi3
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r6, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x2
+ bls ._412 @cond_branch
+ b ._414
+._408:
+ cmp r0, #0
+ bge ._414 @cond_branch
+ neg r0, r0
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ mov r4, #0x64
+ mov r1, #0x0
+ mov r8, r1
+ mov r6, #0x0
+._419:
+ lsl r5, r5, #0x10
+ asr r0, r5, #0x10
+ lsl r4, r4, #0x10
+ asr r1, r4, #0x10
+ bl __divsi3
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ mov r1, r8
+ lsl r0, r1, #0x10
+ add r3, r0, #0
+ cmp r3, #0
+ bne ._416 @cond_branch
+ cmp r6, #0x2
+ beq ._416 @cond_branch
+ cmp r2, #0
+ beq ._417 @cond_branch
+._416:
+ add r1, r6, r7
+ add r0, r2, #0
+ sub r0, r0, #0x5f
+ strb r0, [r1, #0x1]
+ cmp r3, #0
+ bne ._418 @cond_branch
+ mov r0, #0xae
+ strb r0, [r1]
+._418:
+ mov r0, #0x1
+ mov r8, r0
+._417:
+ asr r0, r5, #0x10
+ asr r4, r4, #0x10
+ add r1, r4, #0
+ bl __modsi3
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, #0
+ mov r1, #0xa
+ bl __divsi3
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r6, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x2
+ bls ._419 @cond_branch
+._414:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_816097C
+
+ thumb_func_start debug_sub_8160A80
+debug_sub_8160A80:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r2, r0, #0
+ ldr r1, ._422 @ _nakamuraStatic18
+ cmp r0, #0
+ bne ._420 @cond_branch
+ ldr r4, ._422 + 4 @ gStringVar1
+ ldrb r1, [r1, #0x1]
+ add r0, r4, #0
+ bl debug_sub_816097C
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0x3
+ bl Menu_PrintText
+ b ._440
+._423:
+ .align 2, 0
+._422:
+ .word _nakamuraStatic18
+ .word gStringVar1
+._420:
+ cmp r0, #0x1
+ bne ._424 @cond_branch
+ ldr r4, ._426 @ gStringVar1
+ ldrb r1, [r1, #0x2]
+ add r0, r4, #0
+ bl debug_sub_816097C
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0x5
+ bl Menu_PrintText
+ b ._440
+._427:
+ .align 2, 0
+._426:
+ .word gStringVar1
+._424:
+ cmp r0, #0x2
+ bne ._428 @cond_branch
+ ldr r4, ._430 @ gStringVar1
+ ldrb r1, [r1, #0x3]
+ add r0, r4, #0
+ bl debug_sub_816097C
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0x7
+ bl Menu_PrintText
+ b ._440
+._431:
+ .align 2, 0
+._430:
+ .word gStringVar1
+._428:
+ cmp r0, #0x3
+ bne ._432 @cond_branch
+ ldr r4, ._434 @ gStringVar1
+ ldrb r1, [r1, #0x4]
+ add r0, r4, #0
+ bl debug_sub_816097C
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0x9
+ bl Menu_PrintText
+ b ._440
+._435:
+ .align 2, 0
+._434:
+ .word gStringVar1
+._432:
+ cmp r0, #0x4
+ bne ._436 @cond_branch
+ ldr r4, ._438 @ gStringVar1
+ ldrb r1, [r1, #0x5]
+ add r0, r4, #0
+ bl debug_sub_816097C
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0xb
+ bl Menu_PrintText
+ b ._440
+._439:
+ .align 2, 0
+._438:
+ .word gStringVar1
+._436:
+ cmp r2, #0x5
+ bne ._440 @cond_branch
+ ldr r4, ._441 @ gStringVar1
+ ldrb r1, [r1, #0x6]
+ add r0, r4, #0
+ bl debug_sub_816097C
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0xd
+ bl Menu_PrintText
+._440:
+ pop {r4}
+ pop {r0}
+ bx r0
+._442:
+ .align 2, 0
+._441:
+ .word gStringVar1
+
+ thumb_func_end debug_sub_8160A80
+
+ thumb_func_start debug_sub_8160B50
+debug_sub_8160B50:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r3, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r4, r1, #0
+ ldr r2, ._445 @ _nakamuraStatic18
+ cmp r0, #0
+ bne ._443 @cond_branch
+ ldrb r0, [r2, #0x1]
+ add r0, r0, r1
+ strb r0, [r2, #0x1]
+ b ._455
+._446:
+ .align 2, 0
+._445:
+ .word _nakamuraStatic18
+._443:
+ cmp r0, #0x1
+ bne ._447 @cond_branch
+ ldrb r0, [r2, #0x2]
+ add r0, r0, r1
+ strb r0, [r2, #0x2]
+ b ._455
+._447:
+ cmp r0, #0x2
+ bne ._449 @cond_branch
+ ldrb r0, [r2, #0x3]
+ add r0, r0, r1
+ strb r0, [r2, #0x3]
+ b ._455
+._449:
+ cmp r0, #0x3
+ bne ._451 @cond_branch
+ ldrb r0, [r2, #0x4]
+ add r0, r0, r1
+ strb r0, [r2, #0x4]
+ b ._455
+._451:
+ cmp r0, #0x4
+ bne ._453 @cond_branch
+ ldrb r0, [r2, #0x5]
+ add r0, r0, r1
+ strb r0, [r2, #0x5]
+ b ._455
+._453:
+ cmp r3, #0x5
+ bne ._455 @cond_branch
+ ldrb r0, [r2, #0x6]
+ add r0, r0, r4
+ strb r0, [r2, #0x6]
+._455:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_8160B50
+
+ thumb_func_start debug_sub_8160BB0
+debug_sub_8160BB0:
+ push {r4, r5, lr}
+ ldr r5, ._456 @ gStringVar1
+ ldr r4, ._456 + 4 @ _nakamuraStatic18
+ add r0, r5, #0
+ add r1, r4, #0
+ bl debug_sub_8160714
+ strb r0, [r4]
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x8
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._457:
+ .align 2, 0
+._456:
+ .word gStringVar1
+ .word _nakamuraStatic18
+
+ thumb_func_end debug_sub_8160BB0
+
+ thumb_func_start debug_sub_8160BE4
+debug_sub_8160BE4:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xc
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ bl debug_sub_8160BB0
+ ldr r0, ._459 @ gContestStatsText_Spicy
+ mov r1, #0x2
+ mov r2, #0x3
+ bl Menu_PrintText
+ ldr r0, ._459 + 4 @ gContestStatsText_Dry
+ mov r1, #0x2
+ mov r2, #0x5
+ bl Menu_PrintText
+ ldr r0, ._459 + 8 @ gContestStatsText_Sweet
+ mov r1, #0x2
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r0, ._459 + 12 @ gContestStatsText_Bitter
+ mov r1, #0x2
+ mov r2, #0x9
+ bl Menu_PrintText
+ ldr r0, ._459 + 16 @ gContestStatsText_Sour
+ mov r1, #0x2
+ mov r2, #0xb
+ bl Menu_PrintText
+ ldr r0, ._459 + 20 @ gContestStatsText_Tasty
+ mov r1, #0x2
+ mov r2, #0xd
+ bl Menu_PrintText
+ mov r4, #0x0
+._458:
+ add r0, r4, #0
+ bl debug_sub_8160A80
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x5
+ bls ._458 @cond_branch
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x6
+ bl InitMenu
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r0}
+ bx r0
+._460:
+ .align 2, 0
+._459:
+ .word gContestStatsText_Spicy
+ .word gContestStatsText_Dry
+ .word gContestStatsText_Sweet
+ .word gContestStatsText_Bitter
+ .word gContestStatsText_Sour
+ .word gContestStatsText_Tasty
+
+ thumb_func_end debug_sub_8160BE4
+
+ thumb_func_start debug_sub_8160C7C
+debug_sub_8160C7C:
+ push {r4, lr}
+ ldr r2, ._469 @ _nakamuraStatic18
+ mov r1, #0x0
+ ldrb r0, [r2]
+ cmp r0, #0xc
+ bne ._467 @cond_branch
+ ldrb r0, [r2, #0x1]
+ cmp r0, #0x2
+ bne ._462 @cond_branch
+ mov r1, #0x1
+._462:
+ ldrb r0, [r2, #0x3]
+ cmp r0, #0x2
+ bne ._463 @cond_branch
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+._463:
+ ldrb r0, [r2, #0x4]
+ cmp r0, #0x2
+ bne ._464 @cond_branch
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+._464:
+ ldrb r0, [r2, #0x2]
+ cmp r0, #0x2
+ bne ._465 @cond_branch
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+._465:
+ ldrb r0, [r2, #0x5]
+ cmp r0, #0x2
+ bne ._466 @cond_branch
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+._466:
+ cmp r1, #0x3
+ beq ._467 @cond_branch
+ mov r0, #0x2
+ strb r0, [r2, #0x1]
+ strb r0, [r2, #0x3]
+ strb r0, [r2, #0x4]
+._467:
+ add r0, r2, #0
+ bl sub_810CA34
+ bl debug_sub_8160BB0
+ mov r4, #0x0
+._468:
+ add r0, r4, #0
+ bl debug_sub_8160A80
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x5
+ bls ._468 @cond_branch
+ pop {r4}
+ pop {r0}
+ bx r0
+._470:
+ .align 2, 0
+._469:
+ .word _nakamuraStatic18
+
+ thumb_func_end debug_sub_8160C7C
+
+ thumb_func_start debug_sub_8160CF4
+debug_sub_8160CF4:
+ push {lr}
+ ldr r2, ._473 @ gMain
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._471 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ b ._472
+._474:
+ .align 2, 0
+._473:
+ .word gMain
+._471:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._475 @cond_branch
+ mov r0, #0x1
+._472:
+ bl Menu_MoveCursor
+ mov r0, #0x0
+ b ._484
+._475:
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._477 @cond_branch
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ neg r1, r1
+ b ._478
+._477:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._479 @cond_branch
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+._478:
+ bl debug_sub_8160B50
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl debug_sub_8160A80
+ bl debug_sub_8160BB0
+ mov r0, #0x0
+ b ._484
+._479:
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._481 @cond_branch
+ bl debug_sub_8160C7C
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x0
+ b ._484
+._481:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._483 @cond_branch
+ mov r0, #0x0
+ b ._484
+._483:
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl CloseMenu
+ mov r0, #0x1
+._484:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8160CF4
+
+ thumb_func_start debug_sub_8160D98
+debug_sub_8160D98:
+ push {lr}
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl debug_sub_8160BE4
+ ldr r1, ._485 @ gMenuCallback
+ ldr r0, ._485 + 4 @ debug_sub_8160CF4
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._486:
+ .align 2, 0
+._485:
+ .word gMenuCallback
+ .word debug_sub_8160CF4+1
+
+ thumb_func_end debug_sub_8160D98
+
+ thumb_func_start debug_sub_8160DC0
+debug_sub_8160DC0:
+ push {lr}
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x16
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._487 @ gOtherText_Slash
+ mov r1, #0xb
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._487 + 4 @ Str_843E5F2
+ mov r1, #0x2
+ mov r2, #0x3
+ bl Menu_PrintText
+ ldr r0, ._487 + 8 @ Str_843E5FB
+ mov r1, #0x2
+ mov r2, #0x5
+ bl Menu_PrintText
+ ldr r0, ._487 + 12 @ Str_843E606
+ mov r1, #0x2
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r0, ._487 + 16 @ Str_843E611
+ mov r1, #0x2
+ mov r2, #0x9
+ bl Menu_PrintText
+ ldr r0, ._487 + 20 @ Str_843E61C
+ mov r1, #0x2
+ mov r2, #0xb
+ bl Menu_PrintText
+ ldr r0, ._487 + 24 @ Str_843E627
+ mov r1, #0x2
+ mov r2, #0xd
+ bl Menu_PrintText
+ ldr r0, ._487 + 28 @ Str_843E637
+ mov r1, #0x2
+ mov r2, #0xf
+ bl Menu_PrintText
+ ldr r0, ._487 + 32 @ Str_843E632
+ mov r1, #0x2
+ mov r2, #0x11
+ bl Menu_PrintText
+ pop {r0}
+ bx r0
+._488:
+ .align 2, 0
+._487:
+ .word gOtherText_Slash
+ .word Str_843E5F2
+ .word Str_843E5FB
+ .word Str_843E606
+ .word Str_843E611
+ .word Str_843E61C
+ .word Str_843E627
+ .word Str_843E637
+ .word Str_843E632
+
+ thumb_func_end debug_sub_8160DC0
+
+ thumb_func_start debug_sub_8160E50
+debug_sub_8160E50:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0xa
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ ldr r5, ._489 @ gStringVar1
+ add r0, r6, #0
+ mov r1, #0x2
+ add r2, r5, #0
+ bl GetMonData
+ add r0, r5, #0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r0, #0xc
+ mov r1, #0x1
+ mov r2, #0x15
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ add r0, r6, #0
+ mov r1, #0xb
+ bl GetMonData
+ mov r1, #0xb
+ mul r0, r0, r1
+ ldr r1, ._489 + 4 @ gSpeciesNames
+ add r0, r0, r1
+ mov r1, #0xc
+ mov r2, #0x1
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x1a
+ bl GetMonData
+ add r4, r0, #0
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0x3
+ mov r2, #0x11
+ mov r3, #0x4
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0x3
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x1b
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r4, r4, r1
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0x5
+ mov r2, #0x11
+ mov r3, #0x6
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0x5
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x1c
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r4, r4, r1
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0x7
+ mov r2, #0x11
+ mov r3, #0x8
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0x7
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x1d
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r4, r4, r1
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0x9
+ mov r2, #0x11
+ mov r3, #0xa
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0x9
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x1e
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r4, r4, r1
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0xb
+ mov r2, #0x11
+ mov r3, #0xc
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0xb
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x1f
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r4, r4, r1
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0xd
+ mov r2, #0x11
+ mov r3, #0xe
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0xd
+ bl Menu_PrintText
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0xf
+ mov r2, #0x11
+ mov r3, #0x10
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0xf
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x20
+ bl GetMonData
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0x11
+ mov r2, #0x11
+ mov r3, #0x12
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0x11
+ bl Menu_PrintText
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._490:
+ .align 2, 0
+._489:
+ .word gStringVar1
+ .word gSpeciesNames
+
+ thumb_func_end debug_sub_8160E50
+
+ thumb_func_start debug_sub_8161028
+debug_sub_8161028:
+ push {r4, r5, r6, lr}
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ bne ._491 @cond_branch
+ ldr r0, ._496 @ _nakamuraData5
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne ._492 @cond_branch
+ mov r5, #0x5
+._494:
+ lsl r0, r5, #0x10
+ asr r4, r0, #0x10
+ mov r0, #0x64
+ mul r0, r0, r4
+ ldr r1, ._496 + 4 @ gPlayerParty
+ add r0, r0, r1
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ bne ._493 @cond_branch
+ sub r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r0, #0
+ bge ._494 @cond_branch
+._492:
+ ldr r1, ._496 @ _nakamuraData5
+ ldrb r0, [r1]
+ add r0, r0, r6
+ strb r0, [r1]
+ b ._506
+._497:
+ .align 2, 0
+._496:
+ .word _nakamuraData5
+ .word gPlayerParty
+._491:
+ cmp r1, #0x1
+ bne ._506 @cond_branch
+ ldr r4, ._501 @ _nakamuraData5
+ ldrb r0, [r4]
+ add r0, r0, r6
+ strb r0, [r4]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x6
+ bne ._499 @cond_branch
+ mov r0, #0x0
+ b ._500
+._502:
+ .align 2, 0
+._501:
+ .word _nakamuraData5
+._493:
+ ldr r0, ._504 @ _nakamuraData5
+ strb r5, [r0]
+ b ._506
+._505:
+ .align 2, 0
+._504:
+ .word _nakamuraData5
+._499:
+ ldrb r1, [r4]
+ mov r0, #0x64
+ mul r0, r0, r1
+ ldr r1, ._507 @ gPlayerParty
+ add r0, r0, r1
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ bne ._506 @cond_branch
+._500:
+ strb r0, [r4]
+._506:
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._508:
+ .align 2, 0
+._507:
+ .word gPlayerParty
+
+ thumb_func_end debug_sub_8161028
+
+ thumb_func_start debug_sub_81610BC
+debug_sub_81610BC:
+ push {lr}
+ ldr r0, ._511 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._509 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ b ._510
+._512:
+ .align 2, 0
+._511:
+ .word gMain
+._509:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._513 @cond_branch
+ mov r0, #0x1
+._510:
+ bl debug_sub_8161028
+ ldr r0, ._515 @ _nakamuraData5
+ ldrb r1, [r0]
+ mov r0, #0x64
+ mul r0, r0, r1
+ ldr r1, ._515 + 4 @ gPlayerParty
+ add r0, r0, r1
+ bl debug_sub_8160E50
+ mov r0, #0x0
+ b ._518
+._516:
+ .align 2, 0
+._515:
+ .word _nakamuraData5
+ .word gPlayerParty
+._513:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._517 @cond_branch
+ mov r0, #0x0
+ b ._518
+._517:
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl CloseMenu
+ mov r0, #0x1
+._518:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_81610BC
+
+ thumb_func_start DebugMenu_EffortValues
+DebugMenu_EffortValues:
+ push {lr}
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ ldr r1, ._519 @ _nakamuraData5
+ mov r0, #0x0
+ strb r0, [r1]
+ bl debug_sub_8160DC0
+ ldr r0, ._519 + 4 @ gPlayerParty
+ bl debug_sub_8160E50
+ ldr r1, ._519 + 8 @ gMenuCallback
+ ldr r0, ._519 + 12 @ debug_sub_81610BC
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._520:
+ .align 2, 0
+._519:
+ .word _nakamuraData5
+ .word gPlayerParty
+ .word gMenuCallback
+ .word debug_sub_81610BC+1
+
+ thumb_func_end DebugMenu_EffortValues
+
+ thumb_func_start debug_sub_8161160
+debug_sub_8161160:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ mov r7, #0x0
+ ldr r2, ._523 @ _nakamuraData6
+ ldr r1, ._523 + 4 @ _nakamuraData8
+ ldrh r0, [r2]
+ ldrh r3, [r1]
+ cmp r0, r3
+ bhi ._521 @cond_branch
+ add r6, r0, #0
+ ldrh r5, [r1]
+ b ._522
+._524:
+ .align 2, 0
+._523:
+ .word _nakamuraData6
+ .word _nakamuraData8
+._521:
+ ldrh r6, [r1]
+ ldrh r5, [r2]
+._522:
+ mov r4, #0x0
+ ldr r0, ._529 @ _nakamuraDataA
+ ldrh r0, [r0]
+ cmp r4, r0
+ bcs ._525 @cond_branch
+ ldr r0, ._529 + 4 @ _nakamuraDataC
+ mov r8, r0
+._528:
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r2, r8
+ ldrh r1, [r2]
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, r6
+ bcc ._527 @cond_branch
+ cmp r0, r5
+ bhi ._527 @cond_branch
+ add r0, r7, #1
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+._527:
+ add r4, r4, #0x1
+ ldr r0, ._529 @ _nakamuraDataA
+ ldrh r0, [r0]
+ cmp r4, r0
+ bcc ._528 @cond_branch
+._525:
+ add r0, r7, #0
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._530:
+ .align 2, 0
+._529:
+ .word _nakamuraDataA
+ .word _nakamuraDataC
+
+ thumb_func_end debug_sub_8161160
+
+ thumb_func_start debug_sub_81611D8
+debug_sub_81611D8:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xf
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._531 @ Str_843E642
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._531 + 4 @ Str_843E647
+ mov r1, #0x2
+ mov r2, #0x3
+ bl Menu_PrintText
+ ldr r0, ._531 + 8 @ Str_843E65A
+ mov r1, #0x2
+ mov r2, #0x5
+ bl Menu_PrintText
+ ldr r0, ._531 + 12 @ Str_843E64C
+ mov r1, #0x2
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r0, ._531 + 16 @ Str_843E651
+ mov r1, #0x2
+ mov r2, #0x9
+ bl Menu_PrintText
+ ldr r0, ._531 + 20 @ Str_843E655
+ mov r1, #0xd
+ mov r2, #0x9
+ bl Menu_PrintText
+ ldr r4, ._531 + 24 @ Str_843E658
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0x1
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0x3
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0x5
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0x7
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0x9
+ bl Menu_PrintText
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xe
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x4
+ bl InitMenu
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r0}
+ bx r0
+._532:
+ .align 2, 0
+._531:
+ .word Str_843E642
+ .word Str_843E647
+ .word Str_843E65A
+ .word Str_843E64C
+ .word Str_843E651
+ .word Str_843E655
+ .word Str_843E658
+
+ thumb_func_end debug_sub_81611D8
+
+ thumb_func_start debug_sub_8161290
+debug_sub_8161290:
+ push {r4, lr}
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ ldr r4, ._533 @ gStringVar1
+ add r0, r4, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0x9
+ bl Menu_PrintText
+ pop {r4}
+ pop {r0}
+ bx r0
+._534:
+ .align 2, 0
+._533:
+ .word gStringVar1
+
+ thumb_func_end debug_sub_8161290
+
+ thumb_func_start debug_sub_81612B8
+debug_sub_81612B8:
+ push {r4, r5, lr}
+ add r4, r2, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x18
+ ldrh r2, [r0]
+ add r1, r1, r2
+ strh r1, [r0]
+ ldr r5, ._535 @ gStringVar1
+ ldrh r1, [r0]
+ add r0, r5, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r5, #0
+ mov r1, #0x8
+ add r2, r4, #0
+ bl Menu_PrintText
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._536:
+ .align 2, 0
+._535:
+ .word gStringVar1
+
+ thumb_func_end debug_sub_81612B8
+
+ thumb_func_start debug_sub_81612EC
+debug_sub_81612EC:
+ push {r4, r5, lr}
+ ldr r2, ._540 @ gMain
+ ldrh r1, [r2, #0x2c]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ mov r5, #0x1
+ cmp r0, #0
+ beq ._537 @cond_branch
+ mov r5, #0x64
+._537:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._538 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ b ._539
+._541:
+ .align 2, 0
+._540:
+ .word gMain
+._538:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._542 @cond_branch
+ mov r0, #0x1
+._539:
+ bl Menu_MoveCursor
+._565:
+ mov r0, #0x0
+ b ._543
+._542:
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._544 @cond_branch
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+ cmp r4, #0
+ bne ._545 @cond_branch
+ ldr r0, ._550 @ _nakamuraData6
+ neg r1, r5
+ mov r2, #0x1
+ bl debug_sub_81612B8
+._545:
+ cmp r4, #0x1
+ bne ._546 @cond_branch
+ ldr r0, ._550 + 4 @ _nakamuraData8
+ neg r1, r5
+ mov r2, #0x3
+ bl debug_sub_81612B8
+._546:
+ cmp r4, #0x2
+ bne ._547 @cond_branch
+ ldr r0, ._550 + 8 @ _nakamuraDataC
+ neg r1, r5
+ mov r2, #0x5
+ bl debug_sub_81612B8
+._547:
+ cmp r4, #0x3
+ bne ._565 @cond_branch
+ ldr r0, ._550 + 12 @ _nakamuraDataA
+ neg r1, r5
+ mov r2, #0x7
+ bl debug_sub_81612B8
+ b ._565
+._551:
+ .align 2, 0
+._550:
+ .word _nakamuraData6
+ .word _nakamuraData8
+ .word _nakamuraDataC
+ .word _nakamuraDataA
+._544:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._552 @cond_branch
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+ cmp r4, #0
+ bne ._553 @cond_branch
+ ldr r0, ._558 @ _nakamuraData6
+ add r1, r5, #0
+ mov r2, #0x1
+ bl debug_sub_81612B8
+._553:
+ cmp r4, #0x1
+ bne ._554 @cond_branch
+ ldr r0, ._558 + 4 @ _nakamuraData8
+ add r1, r5, #0
+ mov r2, #0x3
+ bl debug_sub_81612B8
+._554:
+ cmp r4, #0x2
+ bne ._555 @cond_branch
+ ldr r0, ._558 + 8 @ _nakamuraDataC
+ add r1, r5, #0
+ mov r2, #0x5
+ bl debug_sub_81612B8
+._555:
+ cmp r4, #0x3
+ bne ._565 @cond_branch
+ ldr r0, ._558 + 12 @ _nakamuraDataA
+ add r1, r5, #0
+ mov r2, #0x7
+ bl debug_sub_81612B8
+ b ._565
+._559:
+ .align 2, 0
+._558:
+ .word _nakamuraData6
+ .word _nakamuraData8
+ .word _nakamuraDataC
+ .word _nakamuraDataA
+._552:
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._560 @cond_branch
+ ldr r0, ._563 @ _nakamuraDataC
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq ._565 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ bl debug_sub_8161160
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl debug_sub_8161290
+ b ._565
+._564:
+ .align 2, 0
+._563:
+ .word _nakamuraDataC
+._560:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._565 @cond_branch
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl CloseMenu
+ mov r0, #0x1
+._543:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_81612EC
+
+ thumb_func_start DebugMenu_RandomNumberTest
+DebugMenu_RandomNumberTest:
+ push {lr}
+ ldr r0, ._566 @ _nakamuraData6
+ mov r1, #0x0
+ strh r1, [r0]
+ ldr r0, ._566 + 4 @ _nakamuraData8
+ strh r1, [r0]
+ ldr r0, ._566 + 8 @ _nakamuraDataC
+ strh r1, [r0]
+ ldr r0, ._566 + 12 @ _nakamuraDataA
+ strh r1, [r0]
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl debug_sub_81611D8
+ ldr r1, ._566 + 16 @ gMenuCallback
+ ldr r0, ._566 + 20 @ debug_sub_81612EC
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._567:
+ .align 2, 0
+._566:
+ .word _nakamuraData6
+ .word _nakamuraData8
+ .word _nakamuraDataC
+ .word _nakamuraDataA
+ .word gMenuCallback
+ .word debug_sub_81612EC+1
+
+ thumb_func_end DebugMenu_RandomNumberTest
+
+ .align 2, 0
+
+.endif
diff --git a/asm/nohara_debug_menu.s b/asm/nohara_debug_menu.s
new file mode 100644
index 000000000..003f34798
--- /dev/null
+++ b/asm/nohara_debug_menu.s
@@ -0,0 +1,2198 @@
+.if DEBUG
+
+ .include "constants/gba_constants.inc"
+ .include "include/macros.inc"
+
+ .text
+
+ thumb_func_start InitNoharaDebugMenu
+InitNoharaDebugMenu:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x13
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._1 @ gUnknown_Debug_083C4938
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x12
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._1 + 4 @ gMenuCallback
+ ldr r0, ._1 + 8 @ debug_sub_808F414
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._2:
+ .align 2, 0
+._1:
+ .word gUnknown_Debug_083C4938
+ .word gMenuCallback
+ .word debug_sub_808F414+1
+
+ thumb_func_end InitNoharaDebugMenu
+
+ thumb_func_start debug_sub_808F414
+debug_sub_808F414:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._3 @cond_branch
+ add r0, r0, #0x1
+ cmp r1, r0
+ beq ._4 @cond_branch
+ ldr r2, ._6 @ gMenuCallback
+ ldr r0, ._6 + 4 @ gUnknown_Debug_083C4938
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+._3:
+ mov r0, #0x0
+ b ._5
+._7:
+ .align 2, 0
+._6:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C4938
+._4:
+ bl CloseMenu
+ mov r0, #0x1
+._5:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808F414
+
+ thumb_func_start NoharaDebugMenu_TV
+NoharaDebugMenu_TV:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ ldr r1, ._8 @ gDebug_03000726
+ mov r0, #0x0
+ strb r0, [r1]
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xa
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._8 + 4 @ gUnknown_Debug_083C4B8C
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x9
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._8 + 8 @ gMenuCallback
+ ldr r0, ._8 + 12 @ debug_sub_808F4AC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._9:
+ .align 2, 0
+._8:
+ .word gDebug_03000726
+ .word gUnknown_Debug_083C4B8C
+ .word gMenuCallback
+ .word debug_sub_808F4AC+1
+
+ thumb_func_end NoharaDebugMenu_TV
+
+ thumb_func_start debug_sub_808F4AC
+debug_sub_808F4AC:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._10 @cond_branch
+ add r0, r0, #0x1
+ cmp r1, r0
+ beq ._11 @cond_branch
+ ldr r2, ._13 @ gMenuCallback
+ ldr r0, ._13 + 4 @ gUnknown_Debug_083C4B8C
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+._10:
+ mov r0, #0x0
+ b ._12
+._14:
+ .align 2, 0
+._13:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C4B8C
+._11:
+ bl CloseMenu
+ mov r0, #0x1
+._12:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808F4AC
+
+ thumb_func_start debug_sub_808F4EC
+debug_sub_808F4EC:
+ push {lr}
+ bl debug_sub_808F6BC
+ ldr r0, ._15 @ gUnknown_Debug_083C4980
+ bl sub_8071F40
+ mov r0, #0x3
+ mov r1, #0x3
+ mov r2, #0x1
+ bl DisplayYesNoMenu
+ ldr r1, ._15 + 4 @ gMenuCallback
+ ldr r0, ._15 + 8 @ debug_sub_808F648
+ str r0, [r1]
+ pop {r0}
+ bx r0
+._16:
+ .align 2, 0
+._15:
+ .word gUnknown_Debug_083C4980
+ .word gMenuCallback
+ .word debug_sub_808F648+1
+
+ thumb_func_end debug_sub_808F4EC
+
+ thumb_func_start debug_sub_808F518
+debug_sub_808F518:
+ push {r4, lr}
+ mov r2, #0x0
+ ldr r4, ._20 @ gSaveBlock1
+ ldr r3, ._20 + 4 @ 0x2738
+._19:
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ lsl r0, r0, #0x2
+ add r1, r0, r4
+ add r0, r1, r3
+ ldrb r0, [r0]
+ sub r0, r0, #0x15
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x13
+ bhi ._18 @cond_branch
+ ldr r0, ._20 + 8 @ 0x2739
+ add r1, r1, r0
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._18 @cond_branch
+ mov r0, #0x1
+ strb r0, [r1]
+._18:
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x17
+ bls ._19 @cond_branch
+ pop {r4}
+ pop {r0}
+ bx r0
+._21:
+ .align 2, 0
+._20:
+ .word gSaveBlock1
+ .word 0x2738
+ .word 0x2739
+
+ thumb_func_end debug_sub_808F518
+
+ thumb_func_start debug_sub_808F560
+debug_sub_808F560:
+ push {r4, lr}
+ mov r1, #0x0
+ ldr r4, ._23 @ gSaveBlock1
+ ldr r3, ._23 + 4 @ 0x2739
+ mov r2, #0x0
+._22:
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r4
+ add r0, r0, r3
+ strb r2, [r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #0x17
+ bls ._22 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r4}
+ pop {r1}
+ bx r1
+._24:
+ .align 2, 0
+._23:
+ .word gSaveBlock1
+ .word 0x2739
+
+ thumb_func_end debug_sub_808F560
+
+ thumb_func_start debug_sub_808F594
+debug_sub_808F594:
+ push {r4, r5, r6, lr}
+ mov r2, #0x0
+ ldr r6, ._27 @ gSaveBlock1
+ ldr r5, ._27 + 4 @ 0x2738
+ ldr r4, ._27 + 8 @ 0x2739
+ mov r3, #0x1
+._26:
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ lsl r0, r0, #0x2
+ add r1, r0, r6
+ add r0, r1, r5
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._25 @cond_branch
+ add r0, r1, r4
+ strb r3, [r0]
+._25:
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x17
+ bls ._26 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._28:
+ .align 2, 0
+._27:
+ .word gSaveBlock1
+ .word 0x2738
+ .word 0x2739
+
+ thumb_func_end debug_sub_808F594
+
+ thumb_func_start debug_sub_808F5D8
+debug_sub_808F5D8:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ mov r4, #0x0
+ ldr r6, ._30 @ gStringVar1
+ ldr r7, ._30 + 4 @ gUnknown_Debug_083C4BD4
+ add r0, r7, #1
+ mov r8, r0
+._29:
+ ldr r5, ._30 + 8 @ gSpecialVar_0x8004
+ strh r4, [r5]
+ bl GetSlotMachineId
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x0
+ mov r3, #0x1
+ bl ConvertIntToDecimalStringN
+ lsl r0, r4, #0x1
+ add r0, r0, r4
+ lsl r0, r0, #0x2
+ add r1, r0, r7
+ ldrb r1, [r1]
+ add r0, r0, r8
+ ldrb r2, [r0]
+ add r0, r6, #0
+ bl Menu_PrintText
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xb
+ bls ._29 @cond_branch
+ mov r0, #0x0
+ strh r0, [r5]
+ ldr r1, ._30 + 12 @ gMenuCallback
+ ldr r0, ._30 + 16 @ debug_sub_8090278
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._31:
+ .align 2, 0
+._30:
+ .word gStringVar1
+ .word gUnknown_Debug_083C4BD4
+ .word gSpecialVar_0x8004
+ .word gMenuCallback
+ .word debug_sub_8090278+1
+
+ thumb_func_end debug_sub_808F5D8
+
+ thumb_func_start debug_sub_808F648
+debug_sub_808F648:
+ push {lr}
+ ldr r0, ._35 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._32 @cond_branch
+ mov r0, #0xa
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_EraseWindowRect
+ ldr r0, ._35 + 4 @ gDebug_03000726
+ ldrb r1, [r0]
+ mov r2, #0x1
+ eor r1, r1, r2
+ strb r1, [r0]
+ cmp r1, #0
+ beq ._33 @cond_branch
+ bl debug_sub_808F7B4
+ b ._40
+._36:
+ .align 2, 0
+._35:
+ .word gMain
+ .word gDebug_03000726
+._33:
+ bl debug_sub_808F6BC
+ b ._40
+._32:
+ bl Menu_ProcessInputNoWrap_
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._43 @cond_branch
+ cmp r1, r0
+ bgt ._39 @cond_branch
+ sub r0, r0, #0x1
+ cmp r1, r0
+ beq ._40 @cond_branch
+ b ._43
+._39:
+ cmp r1, #0
+ beq ._42 @cond_branch
+ b ._43
+._40:
+ mov r0, #0x0
+ b ._44
+._42:
+ bl debug_sub_808F518
+._43:
+ bl CloseMenu
+ mov r0, #0x1
+._44:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808F648
+
+ thumb_func_start debug_sub_808F6BC
+debug_sub_808F6BC:
+ push {r4, r5, r6, lr}
+ mov r4, #0x0
+ ldr r5, ._48 @ gStringVar1
+ ldr r6, ._48 + 4 @ gSaveBlock1
+._45:
+ lsl r0, r4, #0x3
+ add r0, r0, r4
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldr r1, ._48 + 8 @ 0x2738
+ add r0, r0, r1
+ ldrb r1, [r0]
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ lsl r1, r4, #0x19
+ mov r0, #0xa0
+ lsl r0, r0, #0x14
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x0
+ bl Menu_PrintText
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x4
+ bls ._45 @cond_branch
+ mov r4, #0x5
+ ldr r5, ._48 @ gStringVar1
+ ldr r6, ._48 + 4 @ gSaveBlock1
+._50:
+ lsl r0, r4, #0x3
+ add r0, r0, r4
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldr r1, ._48 + 8 @ 0x2738
+ add r0, r0, r1
+ ldrb r1, [r0]
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ cmp r4, #0xe
+ bhi ._46 @cond_branch
+ lsl r1, r4, #0x19
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x3
+ bl Menu_PrintText
+ b ._47
+._49:
+ .align 2, 0
+._48:
+ .word gStringVar1
+ .word gSaveBlock1
+ .word 0x2738
+._46:
+ lsl r1, r4, #0x19
+ mov r0, #0xec
+ lsl r0, r0, #0x18
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x6
+ bl Menu_PrintText
+._47:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x17
+ bls ._50 @cond_branch
+ mov r4, #0x0
+ ldr r5, ._53 @ gStringVar1
+._55:
+ ldr r0, ._53 + 4 @ gSaveBlock1
+ lsl r1, r4, #0x2
+ add r1, r1, r0
+ ldr r0, ._53 + 8 @ 0x2abc
+ add r1, r1, r0
+ ldrb r1, [r1]
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ cmp r4, #0x7
+ bhi ._51 @cond_branch
+ lsl r1, r4, #0x19
+ mov r0, #0xa0
+ lsl r0, r0, #0x14
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x9
+ bl Menu_PrintText
+ b ._52
+._54:
+ .align 2, 0
+._53:
+ .word gStringVar1
+ .word gSaveBlock1
+ .word 0x2abc
+._51:
+ lsl r1, r4, #0x19
+ mov r0, #0xfa
+ lsl r0, r0, #0x18
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0xc
+ bl Menu_PrintText
+._52:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xf
+ bls ._55 @cond_branch
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808F6BC
+
+ thumb_func_start debug_sub_808F7B4
+debug_sub_808F7B4:
+ push {r4, r5, r6, lr}
+ mov r4, #0x0
+ ldr r5, ._59 @ gStringVar1
+ ldr r6, ._59 + 4 @ gSaveBlock1
+._56:
+ lsl r0, r4, #0x3
+ add r0, r0, r4
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldr r1, ._59 + 8 @ 0x2739
+ add r0, r0, r1
+ ldrb r1, [r0]
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ lsl r1, r4, #0x19
+ mov r0, #0xa0
+ lsl r0, r0, #0x14
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x0
+ bl Menu_PrintText
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x4
+ bls ._56 @cond_branch
+ mov r4, #0x5
+ ldr r5, ._59 @ gStringVar1
+ ldr r6, ._59 + 4 @ gSaveBlock1
+._61:
+ lsl r0, r4, #0x3
+ add r0, r0, r4
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldr r1, ._59 + 8 @ 0x2739
+ add r0, r0, r1
+ ldrb r1, [r0]
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ cmp r4, #0xe
+ bhi ._57 @cond_branch
+ lsl r1, r4, #0x19
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x3
+ bl Menu_PrintText
+ b ._58
+._60:
+ .align 2, 0
+._59:
+ .word gStringVar1
+ .word gSaveBlock1
+ .word 0x2739
+._57:
+ lsl r1, r4, #0x19
+ mov r0, #0xec
+ lsl r0, r0, #0x18
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x6
+ bl Menu_PrintText
+._58:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x17
+ bls ._61 @cond_branch
+ mov r4, #0x0
+ ldr r5, ._64 @ gStringVar1
+._66:
+ ldr r0, ._64 + 4 @ gSaveBlock1
+ lsl r1, r4, #0x2
+ add r1, r1, r0
+ ldr r0, ._64 + 8 @ 0x2abd
+ add r1, r1, r0
+ ldrb r1, [r1]
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ cmp r4, #0x7
+ bhi ._62 @cond_branch
+ lsl r1, r4, #0x19
+ mov r0, #0xa0
+ lsl r0, r0, #0x14
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x9
+ bl Menu_PrintText
+ b ._63
+._65:
+ .align 2, 0
+._64:
+ .word gStringVar1
+ .word gSaveBlock1
+ .word 0x2abd
+._62:
+ lsl r1, r4, #0x19
+ mov r0, #0xfa
+ lsl r0, r0, #0x18
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0xc
+ bl Menu_PrintText
+._63:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xf
+ bls ._66 @cond_branch
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808F7B4
+
+ thumb_func_start debug_sub_808F8AC
+debug_sub_808F8AC:
+ push {lr}
+ ldr r0, ._67 @ 0x832
+ bl FlagSet
+ ldr r0, ._67 + 4 @ 0x818
+ bl FlagSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._68:
+ .align 2, 0
+._67:
+ .word 0x832
+ .word 0x818
+
+ thumb_func_end debug_sub_808F8AC
+
+ thumb_func_start debug_sub_808F8CC
+debug_sub_808F8CC:
+ push {r4, lr}
+ ldr r1, ._69 @ gDebug_03000724
+ mov r0, #0x0
+ strb r0, [r1]
+ ldr r0, ._69 + 4 @ gUnknown_Debug_083C49CA
+ bl sub_8071F40
+ mov r0, #0xd
+ mov r1, #0x6
+ mov r2, #0x1a
+ mov r3, #0x8
+ bl Menu_BlankWindowRect
+ ldr r0, ._69 + 8 @ gUnknown_Debug_083C4ABD
+ ldr r0, [r0]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl Menu_PrintText
+ mov r0, #0x16
+ mov r1, #0x1
+ mov r2, #0x18
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ ldr r4, ._69 + 12 @ gStringVar1
+ add r0, r4, #0
+ mov r1, #0x0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x17
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r1, ._69 + 16 @ gMenuCallback
+ ldr r0, ._69 + 20 @ debug_sub_808F93C
+ str r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+._70:
+ .align 2, 0
+._69:
+ .word gDebug_03000724
+ .word gUnknown_Debug_083C49CA
+ .word gUnknown_Debug_083C4ABD+0xf
+ .word gStringVar1
+ .word gMenuCallback
+ .word debug_sub_808F93C+1
+
+ thumb_func_end debug_sub_808F8CC
+
+ thumb_func_start debug_sub_808F93C
+debug_sub_808F93C:
+ push {r4, lr}
+ mov r2, #0x0
+ ldr r0, ._83 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._71 @cond_branch
+ ldr r1, ._83 + 4 @ gDebug_03000725
+ ldrb r0, [r1]
+ add r0, r0, #0x1
+ strb r0, [r1]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x18
+ bne ._72 @cond_branch
+ strb r2, [r1]
+._72:
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._71:
+ ldr r0, ._83 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._73 @cond_branch
+ ldr r1, ._83 + 4 @ gDebug_03000725
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._74 @cond_branch
+ mov r0, #0x18
+ strb r0, [r1]
+._74:
+ ldrb r0, [r1]
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._73:
+ ldr r0, ._83 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._75 @cond_branch
+ ldr r1, ._83 + 8 @ gDebug_03000724
+ ldrb r0, [r1]
+ add r0, r0, #0x1
+ strb r0, [r1]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0xc
+ bne ._76 @cond_branch
+ mov r0, #0x0
+ strb r0, [r1]
+._76:
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._75:
+ ldr r0, ._83 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._77 @cond_branch
+ ldr r1, ._83 + 8 @ gDebug_03000724
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._78 @cond_branch
+ mov r0, #0xc
+ strb r0, [r1]
+._78:
+ ldrb r0, [r1]
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._77:
+ cmp r2, #0
+ beq ._79 @cond_branch
+ mov r0, #0xd
+ mov r1, #0x6
+ mov r2, #0x1a
+ mov r3, #0x8
+ bl Menu_BlankWindowRect
+ ldr r1, ._83 + 12 @ gUnknown_Debug_083C4ABD
+ ldr r0, ._83 + 8 @ gDebug_03000724
+ ldrb r0, [r0]
+ lsl r0, r0, #0x2
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl Menu_PrintText
+ mov r0, #0x16
+ mov r1, #0x1
+ mov r2, #0x18
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ ldr r4, ._83 + 16 @ gStringVar1
+ ldr r0, ._83 + 4 @ gDebug_03000725
+ ldrb r1, [r0]
+ add r0, r4, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x17
+ mov r2, #0x1
+ bl Menu_PrintText
+._79:
+ ldr r4, ._83 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._80 @cond_branch
+ mov r0, #0x15
+ bl PlaySE
+ ldr r0, ._83 + 4 @ gDebug_03000725
+ ldrb r0, [r0]
+ ldr r2, ._83 + 20 @ gUnknown_Debug_083C4ABD
+ ldr r1, ._83 + 8 @ gDebug_03000724
+ ldrb r1, [r1]
+ add r1, r1, r2
+ ldrb r1, [r1]
+ bl debug_sub_808FA88
+._80:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._81 @cond_branch
+ mov r0, #0x0
+ b ._82
+._84:
+ .align 2, 0
+._83:
+ .word gMain
+ .word gDebug_03000725
+ .word gDebug_03000724
+ .word gUnknown_Debug_083C4ABD+0xf
+ .word gStringVar1
+ .word gUnknown_Debug_083C4ABD
+._81:
+ ldr r0, ._85 @ gSaveBlock1
+ bl sub_80BF588
+ bl CloseMenu
+ mov r0, #0x1
+._82:
+ pop {r4}
+ pop {r1}
+ bx r1
+._86:
+ .align 2, 0
+._85:
+ .word gSaveBlock1+0x2738
+
+ thumb_func_end debug_sub_808F93C
+
+ thumb_func_start debug_sub_808FA88
+debug_sub_808FA88:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ add sp, sp, #0xffffffcc
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r7, r1, #0x18
+ bl GetLeadMonIndex
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r9, r0
+ ldr r3, ._92 @ gSaveBlock1
+ lsl r4, r6, #0x3
+ add r2, r4, r6
+ lsl r2, r2, #0x2
+ add r0, r2, r3
+ ldr r5, ._92 + 4 @ 0x2738
+ add r1, r0, r5
+ strb r7, [r1]
+ ldr r1, ._92 + 8 @ 0x2739
+ add r0, r0, r1
+ mov r1, #0x1
+ strb r1, [r0]
+ mov r1, #0x0
+ ldr r0, ._92 + 12 @ 0x273a
+ add r5, r3, r0
+ mov r3, #0x1
+._87:
+ add r0, r1, r2
+ add r0, r0, r5
+ strb r3, [r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #0x21
+ bls ._87 @cond_branch
+ add r0, r7, #0
+ bl GetTVChannelByShowType
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r1, r0, #0
+ cmp r0, #0x3
+ beq ._88 @cond_branch
+ cmp r0, #0x3
+ bgt ._89 @cond_branch
+ cmp r0, #0x2
+ beq ._90 @cond_branch
+ b ._95
+._93:
+ .align 2, 0
+._92:
+ .word gSaveBlock1
+ .word 0x2738
+ .word 0x2739
+ .word 0x273a
+._89:
+ cmp r1, #0x4
+ bne ._95 @cond_branch
+._90:
+ add r0, r4, r6
+ lsl r0, r0, #0x2
+ ldr r1, ._96 @ gSaveBlock1
+ add r0, r0, r1
+ bl sub_80BE160
+ b ._95
+._97:
+ .align 2, 0
+._96:
+ .word gSaveBlock1+0x2738
+._88:
+ add r0, r4, r6
+ lsl r0, r0, #0x2
+ ldr r1, ._100 @ gSaveBlock1
+ add r0, r0, r1
+ bl sub_80BE138
+._95:
+ sub r0, r7, #1
+ cmp r0, #0x28
+ bls ._98 @cond_branch
+ b ._173
+._98:
+ lsl r0, r0, #0x2
+ ldr r1, ._100 + 4 @
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+._101:
+ .align 2, 0
+._100:
+ .word gSaveBlock1+0x2738
+ .word ._102
+._102:
+ .word ._104
+ .word ._104
+ .word ._105
+ .word ._173
+ .word ._107
+ .word ._108
+ .word ._109
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._123
+ .word ._124
+ .word ._125
+ .word ._126
+ .word ._127
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._143
+._104:
+ add r0, r4, r6
+ lsl r0, r0, #0x2
+ ldr r1, ._145 @ gSaveBlock1
+ add r4, r0, r1
+ mov r2, #0x1
+ strh r2, [r4, #0x2]
+ add r1, r1, #0x10
+ add r0, r0, r1
+ ldr r1, ._145 + 4 @ gSaveBlock2
+ bl StringCopy
+ mov r0, #0x5
+ strb r0, [r4, #0x18]
+ b ._173
+._146:
+ .align 2, 0
+._145:
+ .word gSaveBlock1+0x2738
+ .word gSaveBlock2
+._105:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r6, ._148 @ gSaveBlock1
+ add r1, r4, r6
+ mov r8, r1
+ mov r0, #0x1
+ strh r0, [r1, #0x2]
+ add r0, r6, #5
+ add r0, r4, r0
+ ldr r1, ._148 + 4 @ gSaveBlock2
+ bl StringCopy
+ mov r0, #0x64
+ mov r5, r9
+ mul r5, r5, r0
+ ldr r0, ._148 + 8 @ gPlayerParty
+ add r5, r5, r0
+ add r6, r6, #0x10
+ add r4, r4, r6
+ add r0, r5, #0
+ mov r1, #0x2
+ add r2, r4, #0
+ bl GetMonData
+ mov r0, #0x5
+ mov r1, r8
+ strb r0, [r1, #0xd]
+ add r0, r5, #0
+ mov r1, #0x3
+ bl GetMonData
+ mov r5, r8
+ strb r0, [r5, #0xe]
+ b ._173
+._149:
+ .align 2, 0
+._148:
+ .word gSaveBlock1+0x2738
+ .word gSaveBlock2
+ .word gPlayerParty
+._107:
+ mov r0, #0x64
+ mov r1, r9
+ mul r1, r1, r0
+ mov r8, r1
+ ldr r0, ._151 @ gPlayerParty
+ add r8, r8, r0
+ mov r0, r8
+ mov r1, #0xb
+ bl GetMonData
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r5, ._151 + 4 @ gSaveBlock1
+ add r6, r4, r5
+ strh r0, [r6, #0x2]
+ mov r0, #0x1
+ strh r0, [r6, #0x1c]
+ add r0, r5, #0
+ add r0, r0, #0xf
+ add r0, r4, r0
+ ldr r1, ._151 + 8 @ gSaveBlock2
+ bl StringCopy
+ add r5, r5, #0x4
+ add r4, r4, r5
+ mov r0, r8
+ mov r1, #0x2
+ add r2, r4, #0
+ bl GetMonData
+ mov r0, #0x5
+ strb r0, [r6, #0x1e]
+ mov r0, r8
+ mov r1, #0x3
+ bl GetMonData
+ strb r0, [r6, #0x1f]
+ b ._173
+._152:
+ .align 2, 0
+._151:
+ .word gPlayerParty
+ .word gSaveBlock1+0x2738
+ .word gSaveBlock2
+._108:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r6, ._154 @ gSaveBlock1
+ add r5, r4, r6
+ mov r8, r5
+ mov r0, #0x1
+ strh r0, [r5, #0x2]
+ add r0, r6, #0
+ add r0, r0, #0x16
+ add r0, r4, r0
+ ldr r1, ._154 + 4 @ gSaveBlock2
+ bl StringCopy
+ mov r0, #0x64
+ mov r5, r9
+ mul r5, r5, r0
+ ldr r0, ._154 + 8 @ gPlayerParty
+ add r5, r5, r0
+ add r6, r6, #0x8
+ add r4, r4, r6
+ add r0, r5, #0
+ mov r1, #0x2
+ add r2, r4, #0
+ bl GetMonData
+ mov r0, #0x5
+ mov r1, r8
+ strb r0, [r1, #0x1e]
+ add r0, r5, #0
+ mov r1, #0x3
+ bl GetMonData
+ mov r5, r8
+ strb r0, [r5, #0x1f]
+ b ._173
+._155:
+ .align 2, 0
+._154:
+ .word gSaveBlock1+0x2738
+ .word gSaveBlock2
+ .word gPlayerParty
+._109:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r5, ._157 @ gSaveBlock1
+ add r6, r4, r5
+ mov r0, #0x1
+ strh r0, [r6, #0xa]
+ strh r0, [r6, #0x14]
+ add r0, r5, #2
+ add r0, r4, r0
+ ldr r1, ._157 + 4 @ gSaveBlock2
+ mov r8, r1
+ bl StringCopy
+ add r5, r5, #0xc
+ add r4, r4, r5
+ add r0, r4, #0
+ mov r1, r8
+ bl StringCopy
+ mov r0, #0x5
+ strb r0, [r6, #0x1d]
+ b ._173
+._158:
+ .align 2, 0
+._157:
+ .word gSaveBlock1+0x2738
+ .word gSaveBlock2
+._143:
+ add r0, r4, r6
+ lsl r0, r0, #0x2
+ ldr r1, ._160 @ gSaveBlock1
+ add r0, r0, r1
+ mov r1, #0x1
+ strh r1, [r0, #0xc]
+ strh r1, [r0, #0x16]
+ b ._173
+._161:
+ .align 2, 0
+._160:
+ .word gSaveBlock1+0x2738
+._123:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r0, ._163 @ gSaveBlock1
+ add r4, r4, r0
+ ldr r1, ._163 + 4 @ gUnknown_Debug_083C4C64
+ mov r0, sp
+ mov r2, #0x8
+ bl memcpy
+ add r5, sp, #0x8
+ ldr r1, ._163 + 8 @ gUnknown_Debug_083C4C6C
+ add r0, r5, #0
+ mov r2, #0xb
+ bl memcpy
+ mov r0, #0xff
+ strb r0, [r4, #0x12]
+ add r0, r4, #0
+ add r0, r0, #0x13
+ mov r1, sp
+ bl StringCopy
+ add r0, r4, #4
+ add r1, r5, #0
+ bl StringCopy
+ mov r0, #0xc
+ strb r0, [r4, #0xf]
+ mov r0, #0x28
+ strh r0, [r4, #0x10]
+ mov r0, #0x5
+ strb r0, [r4, #0x2]
+ strb r0, [r4, #0x3]
+ b ._173
+._164:
+ .align 2, 0
+._163:
+ .word gSaveBlock1+0x2738
+ .word gUnknown_Debug_083C4C64
+ .word gUnknown_Debug_083C4C6C
+._124:
+ add r0, r4, r6
+ lsl r0, r0, #0x2
+ ldr r1, ._168 @ gSaveBlock1
+ add r5, r0, r1
+ add r4, sp, #0x14
+ ldr r1, ._168 + 4 @ gUnknown_Debug_083C4C64
+ add r0, r4, #0
+ mov r2, #0x8
+ bl memcpy
+ add r1, r4, #0
+ mov r3, #0xfe
+ mov r2, #0x2
+ add r0, r5, #0
+ add r0, r0, #0x10
+._165:
+ strh r3, [r0]
+ sub r0, r0, #0x2
+ sub r2, r2, #0x1
+ cmp r2, #0
+ bge ._165 @cond_branch
+ mov r0, #0x1
+ strb r0, [r5, #0x2]
+ mov r0, #0x28
+ strb r0, [r5, #0x12]
+ add r0, r5, #0
+ add r0, r0, #0x13
+ add r3, r5, #6
+ mov r6, #0x1e
+ add r2, r5, #0
+ add r2, r2, #0xa
+._166:
+ strh r6, [r2]
+ sub r2, r2, #0x2
+ cmp r2, r3
+ bge ._166 @cond_branch
+ bl StringCopy
+ mov r0, #0x5
+ strb r0, [r5, #0x3]
+ b ._173
+._169:
+ .align 2, 0
+._168:
+ .word gSaveBlock1+0x2738
+ .word gUnknown_Debug_083C4C64
+._125:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r0, ._171 @ gSaveBlock1
+ add r4, r4, r0
+ add r5, sp, #0x1c
+ ldr r1, ._171 + 4 @ gUnknown_Debug_083C4C64
+ add r0, r5, #0
+ mov r2, #0x8
+ bl memcpy
+ mov r0, #0x28
+ strh r0, [r4, #0xc]
+ strh r0, [r4, #0xe]
+ mov r0, #0x3
+ strb r0, [r4, #0x12]
+ mov r0, #0xff
+ strb r0, [r4, #0x10]
+ mov r0, #0x1
+ strb r0, [r4, #0x11]
+ add r0, r4, #0
+ add r0, r0, #0x13
+ add r1, r5, #0
+ bl StringCopy
+ mov r0, #0x5
+ strb r0, [r4, #0x2]
+ b ._173
+._172:
+ .align 2, 0
+._171:
+ .word gSaveBlock1+0x2738
+ .word gUnknown_Debug_083C4C64
+._126:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r0, ._174 @ gSaveBlock1
+ add r4, r4, r0
+ add r5, sp, #0x24
+ ldr r1, ._174 + 4 @ gUnknown_Debug_083C4C64
+ add r0, r5, #0
+ mov r2, #0x8
+ bl memcpy
+ mov r0, #0xff
+ strb r0, [r4, #0x2]
+ mov r0, #0x0
+ strb r0, [r4, #0x3]
+ mov r0, #0x28
+ strh r0, [r4, #0x4]
+ add r0, r4, #0
+ add r0, r0, #0x13
+ add r1, r5, #0
+ bl StringCopy
+ mov r0, #0x5
+ strb r0, [r4, #0x6]
+ b ._173
+._175:
+ .align 2, 0
+._174:
+ .word gSaveBlock1+0x2738
+ .word gUnknown_Debug_083C4C64
+._127:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r0, ._176 @ gSaveBlock1
+ add r4, r4, r0
+ add r5, sp, #0x2c
+ ldr r1, ._176 + 4 @ gUnknown_Debug_083C4C64
+ add r0, r5, #0
+ mov r2, #0x8
+ bl memcpy
+ ldr r0, ._176 + 8 @ 0xffff
+ strh r0, [r4, #0x2]
+ mov r0, #0x1
+ neg r0, r0
+ strh r0, [r4, #0x6]
+ mov r0, #0x28
+ strh r0, [r4, #0x4]
+ strh r0, [r4, #0x8]
+ mov r0, #0x3
+ strb r0, [r4, #0xa]
+ add r0, r4, #0
+ add r0, r0, #0x13
+ add r1, r5, #0
+ bl StringCopy
+ mov r0, #0x5
+ strb r0, [r4, #0xb]
+._173:
+ add sp, sp, #0x34
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._177:
+ .align 2, 0
+._176:
+ .word gSaveBlock1+0x2738
+ .word gUnknown_Debug_083C4C64
+ .word 0xffff
+
+ thumb_func_end debug_sub_808FA88
+
+ thumb_func_start debug_sub_808FEBC
+debug_sub_808FEBC:
+ push {lr}
+ bl ClearTVShowData
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808FEBC
+
+ thumb_func_start debug_sub_808FECC
+debug_sub_808FECC:
+ push {r4, lr}
+ ldr r1, ._178 @ gDebug_03000724
+ mov r0, #0x0
+ strb r0, [r1]
+ ldr r0, ._178 + 4 @ gUnknown_Debug_083C49CA
+ bl sub_8071F40
+ mov r0, #0xd
+ mov r1, #0x6
+ mov r2, #0x17
+ mov r3, #0x8
+ bl Menu_BlankWindowRect
+ ldr r0, ._178 + 8 @ gUnknown_Debug_083C4B20
+ ldr r0, [r0]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl Menu_PrintText
+ mov r0, #0x16
+ mov r1, #0x1
+ mov r2, #0x18
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ ldr r4, ._178 + 12 @ gStringVar1
+ add r0, r4, #0
+ mov r1, #0x0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x17
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r1, ._178 + 16 @ gMenuCallback
+ ldr r0, ._178 + 20 @ debug_sub_808FF3C
+ str r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+._179:
+ .align 2, 0
+._178:
+ .word gDebug_03000724
+ .word gUnknown_Debug_083C49CA
+ .word gUnknown_Debug_083C4B20+0x4
+ .word gStringVar1
+ .word gMenuCallback
+ .word debug_sub_808FF3C+1
+
+ thumb_func_end debug_sub_808FECC
+
+ thumb_func_start debug_sub_808FF3C
+debug_sub_808FF3C:
+ push {r4, lr}
+ mov r2, #0x0
+ ldr r0, ._192 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._180 @cond_branch
+ ldr r1, ._192 + 4 @ gDebug_03000725
+ ldrb r0, [r1]
+ add r0, r0, #0x1
+ strb r0, [r1]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x10
+ bne ._181 @cond_branch
+ strb r2, [r1]
+._181:
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._180:
+ ldr r0, ._192 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._182 @cond_branch
+ ldr r1, ._192 + 4 @ gDebug_03000725
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._183 @cond_branch
+ mov r0, #0x10
+ strb r0, [r1]
+._183:
+ ldrb r0, [r1]
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._182:
+ ldr r0, ._192 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._184 @cond_branch
+ ldr r1, ._192 + 8 @ gDebug_03000724
+ ldrb r0, [r1]
+ add r0, r0, #0x1
+ strb r0, [r1]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x3
+ bne ._185 @cond_branch
+ mov r0, #0x0
+ strb r0, [r1]
+._185:
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._184:
+ ldr r0, ._192 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._186 @cond_branch
+ ldr r1, ._192 + 8 @ gDebug_03000724
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._187 @cond_branch
+ mov r0, #0x3
+ strb r0, [r1]
+._187:
+ ldrb r0, [r1]
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._186:
+ cmp r2, #0
+ beq ._188 @cond_branch
+ mov r0, #0xd
+ mov r1, #0x6
+ mov r2, #0x17
+ mov r3, #0x8
+ bl Menu_BlankWindowRect
+ ldr r1, ._192 + 12 @ gUnknown_Debug_083C4B20
+ ldr r0, ._192 + 8 @ gDebug_03000724
+ ldrb r0, [r0]
+ lsl r0, r0, #0x2
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl Menu_PrintText
+ mov r0, #0x16
+ mov r1, #0x1
+ mov r2, #0x18
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ ldr r4, ._192 + 16 @ gStringVar1
+ ldr r0, ._192 + 4 @ gDebug_03000725
+ ldrb r1, [r0]
+ add r0, r4, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x17
+ mov r2, #0x1
+ bl Menu_PrintText
+._188:
+ ldr r4, ._192 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._189 @cond_branch
+ mov r0, #0x15
+ bl PlaySE
+ ldr r0, ._192 + 4 @ gDebug_03000725
+ ldrb r0, [r0]
+ ldr r2, ._192 + 20 @ gUnknown_Debug_083C4B20
+ ldr r1, ._192 + 8 @ gDebug_03000724
+ ldrb r1, [r1]
+ add r1, r1, r2
+ ldrb r1, [r1]
+ bl debug_sub_8090080
+._189:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._190 @cond_branch
+ mov r0, #0x0
+ b ._191
+._193:
+ .align 2, 0
+._192:
+ .word gMain
+ .word gDebug_03000725
+ .word gDebug_03000724
+ .word gUnknown_Debug_083C4B20+0x4
+ .word gStringVar1
+ .word gUnknown_Debug_083C4B20
+._190:
+ bl sub_80BEC40
+ bl CloseMenu
+ mov r0, #0x1
+._191:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808FF3C
+
+ thumb_func_start debug_sub_8090080
+debug_sub_8090080:
+ lsl r0, r0, #0x18
+ ldr r2, ._194 @ gSaveBlock1
+ lsr r0, r0, #0x16
+ add r0, r0, r2
+ ldr r3, ._194 + 4 @ 0x2abc
+ add r2, r0, r3
+ strb r1, [r2]
+ ldr r1, ._194 + 8 @ 0x2abd
+ add r2, r0, r1
+ mov r1, #0x1
+ strb r1, [r2]
+ add r3, r3, #0x2
+ add r0, r0, r3
+ mov r1, #0x4
+ strh r1, [r0]
+ bx lr
+._195:
+ .align 2, 0
+._194:
+ .word gSaveBlock1
+ .word 0x2abc
+ .word 0x2abd
+
+ thumb_func_end debug_sub_8090080
+
+ thumb_func_start debug_sub_80900AC
+debug_sub_80900AC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ mov r7, #0x0
+ mov r5, #0x0
+ ldr r0, ._202 @ gSaveBlock1
+ mov r8, r0
+._198:
+ lsl r0, r5, #0x3
+ add r0, r0, r5
+ lsl r0, r0, #0x2
+ mov r1, r8
+ add r6, r0, r1
+ ldr r1, ._202 + 4 @ 0x2738
+ add r0, r6, r1
+ ldrb r4, [r0]
+ cmp r4, #0
+ bne ._196 @cond_branch
+ cmp r7, #0xc
+ bne ._197 @cond_branch
+ mov r7, #0x0
+._197:
+ ldr r0, ._202 + 8 @ gUnknown_Debug_083C4ABD
+ add r0, r7, r0
+ ldrb r1, [r0]
+ add r0, r5, #0
+ bl debug_sub_808FA88
+ ldr r1, ._202 + 12 @ 0x2739
+ add r0, r6, r1
+ strb r4, [r0]
+ add r0, r7, #1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._196:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x17
+ bls ._198 @cond_branch
+ mov r7, #0x0
+ mov r5, #0x0
+._201:
+ ldr r0, ._202 @ gSaveBlock1
+ lsl r1, r5, #0x2
+ add r1, r1, r0
+ ldr r0, ._202 + 16 @ 0x2abc
+ add r1, r1, r0
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._199 @cond_branch
+ cmp r7, #0x3
+ bne ._200 @cond_branch
+ mov r7, #0x0
+._200:
+ ldr r0, ._202 + 20 @ gUnknown_Debug_083C4B20
+ add r0, r7, r0
+ ldrb r1, [r0]
+ add r0, r5, #0
+ bl debug_sub_8090080
+ add r0, r7, #1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._199:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0xf
+ bls ._201 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._203:
+ .align 2, 0
+._202:
+ .word gSaveBlock1
+ .word 0x2738
+ .word gUnknown_Debug_083C4ABD
+ .word 0x2739
+ .word 0x2abc
+ .word gUnknown_Debug_083C4B20
+
+ thumb_func_end debug_sub_80900AC
+
+ thumb_func_start NoharaDebugMenu_Fan
+NoharaDebugMenu_Fan:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xb
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._204 @ gUnknown_Debug_083C4D28
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._204 + 4 @ gMenuCallback
+ ldr r0, ._204 + 8 @ debug_sub_80901A4
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._205:
+ .align 2, 0
+._204:
+ .word gUnknown_Debug_083C4D28
+ .word gMenuCallback
+ .word debug_sub_80901A4+1
+
+ thumb_func_end NoharaDebugMenu_Fan
+
+ thumb_func_start debug_sub_80901A4
+debug_sub_80901A4:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._206 @cond_branch
+ add r0, r0, #0x1
+ cmp r1, r0
+ beq ._207 @cond_branch
+ ldr r2, ._209 @ gMenuCallback
+ ldr r0, ._209 + 4 @ gUnknown_Debug_083C4D28
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+._206:
+ mov r0, #0x0
+ b ._208
+._210:
+ .align 2, 0
+._209:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C4D28
+._207:
+ bl CloseMenu
+ mov r0, #0x1
+._208:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_80901A4
+
+ thumb_func_start debug_sub_80901E4
+debug_sub_80901E4:
+ push {lr}
+ bl ResetFanClub
+ bl sub_810FAA0
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_80901E4
+
+ thumb_func_start debug_sub_80901F8
+debug_sub_80901F8:
+ push {lr}
+ bl sub_810FB9C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._211 @ gUnknown_Debug_083C4CA8
+ ldr r1, ._211 + 4 @ gUnknown_083F8408
+ add r0, r0, r1
+ ldrb r0, [r0]
+ sub r0, r0, #0x8
+ lsl r0, r0, #0x2
+ add r0, r0, r2
+ ldr r0, [r0]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r1, ._211 + 8 @ gMenuCallback
+ ldr r0, ._211 + 12 @ debug_sub_8090278
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._212:
+ .align 2, 0
+._211:
+ .word gUnknown_Debug_083C4CA8
+ .word gUnknown_083F8408
+ .word gMenuCallback
+ .word debug_sub_8090278+1
+
+ thumb_func_end debug_sub_80901F8
+
+ thumb_func_start debug_sub_8090238
+debug_sub_8090238:
+ push {lr}
+ bl sub_810FC18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._213 @ gUnknown_Debug_083C4CA8
+ ldr r1, ._213 + 4 @ gUnknown_083F8410
+ add r0, r0, r1
+ ldrb r0, [r0]
+ sub r0, r0, #0x8
+ lsl r0, r0, #0x2
+ add r0, r0, r2
+ ldr r0, [r0]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r1, ._213 + 8 @ gMenuCallback
+ ldr r0, ._213 + 12 @ debug_sub_8090278
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._214:
+ .align 2, 0
+._213:
+ .word gUnknown_Debug_083C4CA8
+ .word gUnknown_083F8410
+ .word gMenuCallback
+ .word debug_sub_8090278+1
+
+ thumb_func_end debug_sub_8090238
+
+ thumb_func_start debug_sub_8090278
+debug_sub_8090278:
+ push {lr}
+ ldr r0, ._217 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._215 @cond_branch
+ mov r0, #0x0
+ b ._216
+._218:
+ .align 2, 0
+._217:
+ .word gMain
+._215:
+ bl CloseMenu
+ mov r0, #0x1
+._216:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090278
+
+ thumb_func_start debug_sub_809029C
+debug_sub_809029C:
+ push {r4, lr}
+ ldr r4, ._219 @ gStringVar1
+ ldr r0, ._219 + 4 @ gSaveBlock1
+ ldr r1, ._219 + 8 @ 0x13c2
+ add r0, r0, r1
+ ldrh r0, [r0]
+ mov r1, #0x7f
+ and r1, r1, r0
+ add r0, r4, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x10
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r1, ._219 + 12 @ gMenuCallback
+ ldr r0, ._219 + 16 @ debug_sub_8090278
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r4}
+ pop {r1}
+ bx r1
+._220:
+ .align 2, 0
+._219:
+ .word gStringVar1
+ .word gSaveBlock1
+ .word 0x13c2
+ .word gMenuCallback
+ .word debug_sub_8090278+1
+
+ thumb_func_end debug_sub_809029C
+
+ thumb_func_start debug_sub_80902E4
+debug_sub_80902E4:
+ push {lr}
+ ldr r1, ._221 @ gSaveBlock2
+ ldrh r0, [r1, #0xe]
+ add r0, r0, #0x6
+ strh r0, [r1, #0xe]
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._222:
+ .align 2, 0
+._221:
+ .word gSaveBlock2
+
+ thumb_func_end debug_sub_80902E4
+
+ thumb_func_start debug_sub_80902FC
+debug_sub_80902FC:
+ push {lr}
+ mov r0, #0x0
+ bl sub_810FB10
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_80902FC
+
+ thumb_func_start debug_sub_8090310
+debug_sub_8090310:
+ push {lr}
+ mov r0, #0x1
+ bl sub_810FB10
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090310
+
+ thumb_func_start debug_sub_8090324
+debug_sub_8090324:
+ push {lr}
+ mov r0, #0x2
+ bl sub_810FB10
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090324
+
+ thumb_func_start debug_sub_8090338
+debug_sub_8090338:
+ push {lr}
+ mov r0, #0x3
+ bl sub_810FB10
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090338
+
+ thumb_func_start NoharaDebugMenu_BattleVSDad
+NoharaDebugMenu_BattleVSDad:
+ push {lr}
+ ldr r0, ._223 @ 0x4085
+ mov r1, #0x6
+ bl VarSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._224:
+ .align 2, 0
+._223:
+ .word 0x4085
+
+ thumb_func_end NoharaDebugMenu_BattleVSDad
+
+ thumb_func_start NoharaDebugMenu_DadAfterBattle
+NoharaDebugMenu_DadAfterBattle:
+ push {lr}
+ ldr r0, ._225 @ 0x4085
+ mov r1, #0x7
+ bl VarSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._226:
+ .align 2, 0
+._225:
+ .word 0x4085
+
+ thumb_func_end NoharaDebugMenu_DadAfterBattle
+
+ thumb_func_start NoharaDebugMenu_SootopolisCity
+NoharaDebugMenu_SootopolisCity:
+ push {lr}
+ mov r0, #0x81
+ bl FlagSet
+ mov r0, #0x71
+ bl FlagSet
+ ldr r0, ._227 @ 0x32f
+ bl FlagClear
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._228:
+ .align 2, 0
+._227:
+ .word 0x32f
+
+ thumb_func_end NoharaDebugMenu_SootopolisCity
+
+ thumb_func_start NoharaDebugMenu_Embark
+NoharaDebugMenu_Embark:
+ push {lr}
+ ldr r0, ._229 @ 0x2e3
+ bl FlagClear
+ ldr r0, ._229 + 4 @ 0x4090
+ mov r1, #0x1
+ bl VarSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._230:
+ .align 2, 0
+._229:
+ .word 0x2e3
+ .word 0x4090
+
+ thumb_func_end NoharaDebugMenu_Embark
+
+ thumb_func_start NoharaDebugMenu_Yes9999
+NoharaDebugMenu_Yes9999:
+ push {lr}
+ ldr r0, ._231 @ 0x4048
+ ldr r1, ._231 + 4 @ 0x270f
+ bl VarSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._232:
+ .align 2, 0
+._231:
+ .word 0x4048
+ .word 0x270f
+
+ thumb_func_end NoharaDebugMenu_Yes9999
+
+ thumb_func_start NoharaDebugMenu_LegendsFlagOn
+NoharaDebugMenu_LegendsFlagOn:
+ push {lr}
+ mov r0, #0xe4
+ bl FlagSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end NoharaDebugMenu_LegendsFlagOn
+
+ thumb_func_start NoharaDebugMenu_AddNumWinningStreaks
+NoharaDebugMenu_AddNumWinningStreaks:
+ push {lr}
+ ldr r0, ._235 @ gSaveBlock2
+ ldr r1, ._235 + 4 @ 0x572
+ add r2, r0, r1
+ ldrh r1, [r2]
+ cmp r1, #0x31
+ bhi ._233 @cond_branch
+ mov r0, #0x32
+ b ._244
+._236:
+ .align 2, 0
+._235:
+ .word gSaveBlock2
+ .word 0x572
+._233:
+ cmp r1, #0x63
+ bhi ._237 @cond_branch
+ mov r0, #0x64
+ b ._244
+._237:
+ ldr r0, ._241 @ 0x3e7
+ cmp r1, r0
+ bhi ._239 @cond_branch
+ add r0, r0, #0x1
+ b ._244
+._242:
+ .align 2, 0
+._241:
+ .word 0x3e7
+._239:
+ ldr r0, ._245 @ 0x1387
+ cmp r1, r0
+ bhi ._243 @cond_branch
+ ldr r0, ._245 + 4 @ 0x2706
+ b ._244
+._246:
+ .align 2, 0
+._245:
+ .word 0x1387
+ .word 0x2706
+._243:
+ ldr r0, ._248 @ 0x2705
+ cmp r1, r0
+ bhi ._247 @cond_branch
+ add r0, r0, #0xa
+._244:
+ strh r0, [r2]
+._247:
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._249:
+ .align 2, 0
+._248:
+ .word 0x2705
+
+ thumb_func_end NoharaDebugMenu_AddNumWinningStreaks
+
+ .align 2, 0
+
+.endif
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index ad3f371f5..cee93a9e4 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -323,6 +323,149 @@ sub_809CA8C: @ 809CA8C
bx r0
thumb_func_end sub_809CA8C
+.if DEBUG
+ thumb_func_start debug_sub_80AA40C
+debug_sub_80AA40C:
+.syntax divided
+ push {lr}
+ bl sub_809AB8C
+ lsl r0, r0, #0x10
+ cmp r0, #0
+ beq ._2084 @cond_branch
+ bl sub_809CDCC
+ mov r0, #0x20
+ bl sub_809CDEC
+ mov r0, #0x6
+ bl sub_809CDEC
+ mov r0, #0x1
+ b ._2085
+._2084:
+ mov r0, #0x0
+._2085:
+ pop {r1}
+ bx r1
+.syntax unified
+ thumb_func_end debug_sub_80AA40C
+.endif
+
+.if DEBUG
+ thumb_func_start sub_809CAB0
+sub_809CAB0:
+.syntax divided
+ push {lr}
+ ldr r0, ._2088 @ unk_2038790
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._2086 @cond_branch
+ bl debug_sub_80AA40C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._2110
+._2089:
+ .align 2, 0
+._2088:
+ .word unk_2038790
+._2086:
+ bl sub_809CDCC
+ bl sub_809AB8C
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, ._2094 @ gPokemonStorageSystemPtr
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x5]
+ cmp r0, #0x1
+ beq ._2090 @cond_branch
+ cmp r0, #0x1
+ bgt ._2091 @cond_branch
+ cmp r0, #0
+ beq ._2092 @cond_branch
+ b ._2108
+._2095:
+ .align 2, 0
+._2094:
+ .word gPokemonStorageSystemPtr
+._2091:
+ cmp r0, #0x2
+ beq ._2096 @cond_branch
+ b ._2108
+._2090:
+ cmp r1, #0
+ beq ._2108 @cond_branch
+ mov r0, #0x1
+ bl sub_809CDEC
+ b ._2109
+._2092:
+ cmp r1, #0
+ beq ._2108 @cond_branch
+ mov r0, #0x2
+ bl sub_809CDEC
+ b ._2109
+._2096:
+ ldr r0, ._2105 @ gUnknown_020384E6
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._2102 @cond_branch
+ cmp r1, #0
+ beq ._2103 @cond_branch
+ mov r0, #0x4
+ bl sub_809CDEC
+ b ._2109
+._2106:
+ .align 2, 0
+._2105:
+ .word gUnknown_020384E6
+._2103:
+ mov r0, #0x5
+ bl sub_809CDEC
+ b ._2109
+._2102:
+ cmp r1, #0
+ beq ._2108 @cond_branch
+ mov r0, #0x3
+ bl sub_809CDEC
+ b ._2109
+._2108:
+ mov r0, #0x0
+ b ._2110
+._2109:
+ mov r0, #0x6
+ bl sub_809CDEC
+ ldr r0, ._2114 @ gPokemonStorageSystemPtr
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x5]
+ cmp r0, #0x2
+ bne ._2113 @cond_branch
+ ldr r0, ._2114 + 4 @ gUnknown_020384E4
+ ldrb r0, [r0]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, #0
+ bne ._2112 @cond_branch
+ mov r0, #0x2
+ bl sub_809CDEC
+ b ._2113
+._2115:
+ .align 2, 0
+._2114:
+ .word gPokemonStorageSystemPtr
+ .word gUnknown_020384E4
+._2112:
+ mov r0, #0x1
+ bl sub_809CDEC
+._2113:
+ mov r0, #0x8
+ bl sub_809CDEC
+ mov r0, #0x7
+ bl sub_809CDEC
+ mov r0, #0x0
+ bl sub_809CDEC
+ mov r0, #0x1
+._2110:
+ pop {r1}
+ bx r1
+.syntax unified
+ thumb_func_end sub_809CAB0
+.else
thumb_func_start sub_809CAB0
sub_809CAB0: @ 809CAB0
push {lr}
@@ -418,6 +561,7 @@ _0809CB6E:
pop {r1}
bx r1
thumb_func_end sub_809CAB0
+.endif
thumb_func_start sub_809CB74
sub_809CB74: @ 809CB74
diff --git a/asm/taya_debug_window.s b/asm/taya_debug_window.s
new file mode 100644
index 000000000..68d27390d
--- /dev/null
+++ b/asm/taya_debug_window.s
@@ -0,0 +1,2054 @@
+.if DEBUG
+
+ .include "constants/gba_constants.inc"
+ .include "include/macros.inc"
+
+ .text
+
+ thumb_func_start TayaDebugMenu_Trend
+TayaDebugMenu_Trend:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xffffffd8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1e
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r5, ._3 @ gSaveBlock1
+ mov r7, #0x0
+ mov r0, #0x1
+ add r0, r0, sp
+ mov sl, r0
+ mov r9, sp
+ mov r0, #0x0
+ mov r8, r0
+ add r6, sp, #0x20
+._2:
+ ldrb r1, [r5, #0x1]
+ mov r0, #0x40
+ and r0, r0, r1
+ mov r1, #0xa1
+ cmp r0, #0
+ beq ._1 @cond_branch
+ mov r1, #0xa2
+._1:
+ mov r0, r9
+ strb r1, [r0]
+ ldrh r1, [r5, #0x4]
+ add r0, r6, #0
+ bl EasyChat_GetWordText
+ mov r0, sl
+ add r1, r6, #0
+ mov r2, #0x0
+ mov r3, #0x7
+ bl StringCopyPadded
+ add r4, r0, #0
+ ldrh r1, [r5, #0x6]
+ add r0, r6, #0
+ bl EasyChat_GetWordText
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x0
+ mov r3, #0x8
+ bl StringCopyPadded
+ add r4, r0, #0
+ ldrb r1, [r5]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x19
+ mov r2, #0x1
+ mov r3, #0x3
+ bl ConvertIntToDecimalStringN
+ add r4, r0, #0
+ mov r0, r8
+ strb r0, [r4]
+ add r4, r4, #0x1
+ ldrh r1, [r5]
+ lsl r1, r1, #0x12
+ lsr r1, r1, #0x19
+ add r0, r4, #0
+ mov r2, #0x1
+ mov r3, #0x3
+ bl ConvertIntToDecimalStringN
+ add r4, r0, #0
+ mov r0, r8
+ strb r0, [r4]
+ add r4, r4, #0x1
+ ldrh r1, [r5, #0x2]
+ add r0, r4, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ lsl r2, r7, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r0, sp
+ mov r1, #0x1
+ bl Menu_PrintText
+ add r5, r5, #0x8
+ add r0, r7, #1
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ cmp r7, #0x4
+ bls ._2 @cond_branch
+ ldr r1, ._3 + 4 @ gMenuCallback
+ ldr r0, ._3 + 8 @ debug_sub_8090808
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x28
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._4:
+ .align 2, 0
+._3:
+ .word gSaveBlock1+0x2dd4
+ .word gMenuCallback
+ .word debug_sub_8090808+1
+
+ thumb_func_end TayaDebugMenu_Trend
+
+ thumb_func_start debug_sub_8090808
+debug_sub_8090808:
+ push {lr}
+ ldr r0, ._7 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x3
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._5 @cond_branch
+ mov r0, #0x0
+ b ._6
+._8:
+ .align 2, 0
+._7:
+ .word gMain
+._5:
+ bl Menu_EraseScreen
+ bl CloseMenu
+ mov r0, #0x1
+._6:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090808
+
+ thumb_func_start TayaDebugMenu_TrendR
+TayaDebugMenu_TrendR:
+ push {r4, r5, r6, r7, lr}
+ mov r0, #0x0
+ ldr r7, ._11 @ gSaveBlock1
+._10:
+ mov r4, #0x0
+ lsl r5, r0, #0x3
+ add r6, r0, #1
+._9:
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x16
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl sub_80EB72C
+ lsl r1, r4, #0x1
+ add r1, r1, r5
+ add r1, r1, r7
+ strh r0, [r1]
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x1
+ bls ._9 @cond_branch
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x4
+ bls ._10 @cond_branch
+ bl Menu_EraseScreen
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._12:
+ .align 2, 0
+._11:
+ .word gSaveBlock1+0x2dd8
+
+ thumb_func_end TayaDebugMenu_TrendR
+
+ thumb_func_start debug_sub_8090880
+debug_sub_8090880:
+ push {lr}
+ bl UpdatePaletteFade
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._13 @cond_branch
+ mov r0, #0x0
+ b ._14
+._13:
+ bl sub_80E60D8
+ mov r0, #0x1
+._14:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090880
+
+ thumb_func_start debug_sub_809089C
+debug_sub_809089C:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._15 @cond_branch
+ add r0, r0, #0x1
+ cmp r1, r0
+ bne ._16 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ b ._17
+._16:
+ ldr r2, ._19 @ gSpecialVar_0x8004
+ ldr r0, ._19 + 4 @ gUnknown_Debug_083C4EC0
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ strh r0, [r2]
+ ldrh r0, [r2]
+ sub r0, r0, #0x5
+ cmp r0, #0x7
+ bhi ._27 @cond_branch
+ lsl r0, r0, #0x2
+ ldr r1, ._19 + 8 @
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+._20:
+ .align 2, 0
+._19:
+ .word gSpecialVar_0x8004
+ .word gUnknown_Debug_083C4EC0
+ .word ._21
+._21:
+ .word ._29
+ .word ._27
+ .word ._29
+ .word ._29
+ .word ._27
+ .word ._27
+ .word ._29
+ .word ._29
+._29:
+ ldr r0, ._30 @ gSpecialVar_0x8005
+ mov r1, #0x0
+ strh r1, [r0]
+ ldr r0, ._30 + 4 @ gSpecialVar_0x8006
+ strh r1, [r0]
+._27:
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FadeScreen
+ ldr r1, ._30 + 8 @ gMenuCallback
+ ldr r0, ._30 + 12 @ debug_sub_8090880
+ str r0, [r1]
+._15:
+ mov r0, #0x0
+._17:
+ pop {r1}
+ bx r1
+._31:
+ .align 2, 0
+._30:
+ .word gSpecialVar_0x8005
+ .word gSpecialVar_0x8006
+ .word gMenuCallback
+ .word debug_sub_8090880+1
+
+ thumb_func_end debug_sub_809089C
+
+ thumb_func_start TayaDebugMenu_SimpleText
+TayaDebugMenu_SimpleText:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xc
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._32 @ gUnknown_Debug_083C4EC0
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._32 + 4 @ gMenuCallback
+ ldr r0, ._32 + 8 @ debug_sub_809089C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._33:
+ .align 2, 0
+._32:
+ .word gUnknown_Debug_083C4EC0
+ .word gMenuCallback
+ .word debug_sub_809089C+1
+
+ thumb_func_end TayaDebugMenu_SimpleText
+
+ thumb_func_start debug_sub_8090984
+debug_sub_8090984:
+ push {r4, r5, r6, r7, lr}
+ bl Menu_ProcessInput
+ lsl r2, r0, #0x18
+ asr r1, r2, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._34 @cond_branch
+ add r0, r0, #0x1
+ cmp r1, r0
+ beq ._46 @cond_branch
+ cmp r1, #0x4
+ bgt ._36 @cond_branch
+ lsr r0, r2, #0x18
+ bl debug_sub_810B32C
+ b ._46
+._34:
+ mov r0, #0x0
+ b ._38
+._36:
+ cmp r1, #0x5
+ bne ._39 @cond_branch
+ bl sub_80F7F30
+ b ._46
+._39:
+ cmp r1, #0x6
+ bne ._41 @cond_branch
+ mov r4, #0x0
+ ldr r0, ._44 @ gSaveBlock1
+ add r1, r0, #2
+ mov ip, r1
+ ldr r7, ._44 + 4 @ gUnknown_Debug_083C4F08
+ ldr r1, ._44 + 8 @ 0xfffffd94
+ add r6, r0, r1
+ add r5, r0, #0
+ add r5, r5, #0xe
+._42:
+ lsl r1, r4, #0x1
+ mov r0, ip
+ add r3, r1, r0
+ add r0, r1, r7
+ ldrh r2, [r0]
+ strh r2, [r3]
+ add r0, r1, r5
+ strh r2, [r0]
+ add r1, r6, r1
+ strh r2, [r1]
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x2
+ bls ._42 @cond_branch
+ b ._46
+._45:
+ .align 2, 0
+._44:
+ .word gSaveBlock1+0x2d94
+ .word gUnknown_Debug_083C4F08
+ .word 0xfffffd94
+._41:
+ cmp r1, #0x7
+ bne ._46 @cond_branch
+ mov r4, #0x0
+._47:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl sub_80EB890
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x20
+ bls ._47 @cond_branch
+._46:
+ bl CloseMenu
+ mov r0, #0x1
+._38:
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090984
+
+ thumb_func_start TayaDebugMenu_OldMan
+TayaDebugMenu_OldMan:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xa
+ mov r3, #0x11
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._48 @ gUnknown_Debug_083C4F54
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x8
+ bl Menu_PrintItems
+ bl GetCurrentMauvilleOldMan
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x9
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x8
+ bl InitMenu
+ ldr r1, ._48 + 4 @ gMenuCallback
+ ldr r0, ._48 + 8 @ debug_sub_8090984
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._49:
+ .align 2, 0
+._48:
+ .word gUnknown_Debug_083C4F54
+ .word gMenuCallback
+ .word debug_sub_8090984+1
+
+ thumb_func_end TayaDebugMenu_OldMan
+
+ thumb_func_start TayaDebugMenu_LanettesPC
+TayaDebugMenu_LanettesPC:
+ push {lr}
+ bl Menu_EraseScreen
+ bl ShowPokemonStorageSystem
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end TayaDebugMenu_LanettesPC
+
+ thumb_func_start TayaDebugMenu_TownFlags
+TayaDebugMenu_TownFlags:
+ push {lr}
+ ldr r0, ._50 @ 0x80f
+ bl FlagSet
+ mov r0, #0x81
+ lsl r0, r0, #0x4
+ bl FlagSet
+ ldr r0, ._50 + 4 @ 0x811
+ bl FlagSet
+ ldr r0, ._50 + 8 @ 0x812
+ bl FlagSet
+ ldr r0, ._50 + 12 @ 0x813
+ bl FlagSet
+ ldr r0, ._50 + 16 @ 0x814
+ bl FlagSet
+ ldr r0, ._50 + 20 @ 0x815
+ bl FlagSet
+ ldr r0, ._50 + 24 @ 0x816
+ bl FlagSet
+ ldr r0, ._50 + 28 @ 0x817
+ bl FlagSet
+ ldr r0, ._50 + 32 @ 0x818
+ bl FlagSet
+ ldr r0, ._50 + 36 @ 0x819
+ bl FlagSet
+ ldr r0, ._50 + 40 @ 0x81a
+ bl FlagSet
+ ldr r0, ._50 + 44 @ 0x81b
+ bl FlagSet
+ ldr r0, ._50 + 48 @ 0x81c
+ bl FlagSet
+ ldr r0, ._50 + 52 @ 0x81d
+ bl FlagSet
+ ldr r0, ._50 + 56 @ 0x81e
+ bl FlagSet
+ ldr r0, ._50 + 60 @ 0x848
+ bl FlagSet
+ ldr r0, ._50 + 64 @ 0x849
+ bl FlagSet
+ ldr r0, ._50 + 68 @ 0x84a
+ bl FlagSet
+ ldr r0, ._50 + 72 @ 0x854
+ bl FlagSet
+ ldr r0, ._50 + 76 @ 0x855
+ bl FlagSet
+ ldr r0, ._50 + 80 @ 0x856
+ bl FlagSet
+ ldr r0, ._50 + 84 @ 0x857
+ bl FlagSet
+ ldr r0, ._50 + 88 @ 0x858
+ bl FlagSet
+ ldr r0, ._50 + 92 @ 0x859
+ bl FlagSet
+ ldr r0, ._50 + 96 @ 0x85a
+ bl FlagSet
+ ldr r0, ._50 + 100 @ 0x85b
+ bl FlagSet
+ ldr r0, ._50 + 104 @ 0x85c
+ bl FlagSet
+ ldr r0, ._50 + 108 @ 0x83c
+ bl FlagSet
+ ldr r0, ._50 + 112 @ 0x83d
+ bl FlagSet
+ ldr r0, ._50 + 116 @ 0x83e
+ bl FlagSet
+ ldr r0, ._50 + 120 @ 0x83f
+ bl FlagSet
+ mov r0, #0x84
+ lsl r0, r0, #0x4
+ bl FlagSet
+ ldr r0, ._50 + 124 @ 0x841
+ bl FlagSet
+ ldr r0, ._50 + 128 @ 0x842
+ bl FlagSet
+ ldr r0, ._50 + 132 @ 0x843
+ bl FlagSet
+ ldr r0, ._50 + 136 @ 0x844
+ bl FlagSet
+ ldr r0, ._50 + 140 @ 0x845
+ bl FlagSet
+ ldr r0, ._50 + 144 @ 0x846
+ bl FlagSet
+ ldr r0, ._50 + 148 @ 0x847
+ bl FlagSet
+ ldr r0, ._50 + 152 @ 0x83b
+ bl FlagSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._51:
+ .align 2, 0
+._50:
+ .word 0x80f
+ .word 0x811
+ .word 0x812
+ .word 0x813
+ .word 0x814
+ .word 0x815
+ .word 0x816
+ .word 0x817
+ .word 0x818
+ .word 0x819
+ .word 0x81a
+ .word 0x81b
+ .word 0x81c
+ .word 0x81d
+ .word 0x81e
+ .word 0x848
+ .word 0x849
+ .word 0x84a
+ .word 0x854
+ .word 0x855
+ .word 0x856
+ .word 0x857
+ .word 0x858
+ .word 0x859
+ .word 0x85a
+ .word 0x85b
+ .word 0x85c
+ .word 0x83c
+ .word 0x83d
+ .word 0x83e
+ .word 0x83f
+ .word 0x841
+ .word 0x842
+ .word 0x843
+ .word 0x844
+ .word 0x845
+ .word 0x846
+ .word 0x847
+ .word 0x83b
+
+ thumb_func_end TayaDebugMenu_TownFlags
+
+ thumb_func_start TayaDebugMenu_AwardARibbon
+TayaDebugMenu_AwardARibbon:
+ push {lr}
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x10
+ mov r2, #0x0
+ bl BlendPalettes
+ ldr r0, ._52 @ debug_sub_80915BC
+ bl SetMainCallback2
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._53:
+ .align 2, 0
+._52:
+ .word debug_sub_80915BC+1
+
+ thumb_func_end TayaDebugMenu_AwardARibbon
+
+ thumb_func_start debug_sub_8090C44
+debug_sub_8090C44:
+ push {r4, r5, lr}
+ ldr r4, ._54 @ gSharedMem
+ sub r5, r4, #1
+ ldrh r1, [r5, #0x8]
+ add r0, r4, #0
+ mov r2, #0x2
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0x0
+ mov r2, #0x5
+ bl StringFill
+ ldrb r0, [r5]
+ add r0, r0, r4
+ mov r1, #0x79
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x1
+ mov r2, #0x3
+ bl Menu_PrintText
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._55:
+ .align 2, 0
+._54:
+ .word gSharedMem+1
+
+ thumb_func_end debug_sub_8090C44
+
+ thumb_func_start debug_sub_8090C88
+debug_sub_8090C88:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xfffffffc
+ mov r0, #0x1
+ mov r8, r0
+ ldr r2, ._59 @ gMain
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ add r3, r2, #0
+ cmp r0, #0
+ beq ._57 @cond_branch
+ ldr r1, ._59 + 4 @ gSharedMem
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._57 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ b ._62
+._60:
+ .align 2, 0
+._59:
+ .word gMain
+ .word gSharedMem
+._67:
+ add r0, r0, #0x1
+ strb r0, [r1]
+ b ._62
+._77:
+ strh r1, [r7, #0x8]
+ b ._62
+._79:
+ ldr r0, ._64 @ gSharedMem
+ ldrh r0, [r0, #0x8]
+ bl SetLotteryNumber16_Unused
+._78:
+ bl CloseMenu
+ mov r0, #0x1
+ b ._63
+._65:
+ .align 2, 0
+._64:
+ .word gSharedMem
+._57:
+ ldrh r1, [r3, #0x2e]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._66 @cond_branch
+ ldr r1, ._81 @ gSharedMem
+ ldrb r0, [r1]
+ cmp r0, #0x3
+ bls ._67 @cond_branch
+._66:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._68 @cond_branch
+ ldr r0, ._81 @ gSharedMem
+ ldrh r1, [r0, #0x8]
+ str r1, [r0, #0xc]
+ ldr r1, ._81 + 4 @ 0x2710
+ strh r1, [r0, #0x10]
+ mov r4, #0x0
+ ldrb r1, [r0]
+ add r7, r0, #0
+ cmp r4, r1
+ bcs ._69 @cond_branch
+ add r5, r7, #0
+ add r6, r1, #0
+._70:
+ ldrh r0, [r5, #0x10]
+ mov r1, #0xa
+ str r3, [sp]
+ bl __udivsi3
+ strh r0, [r5, #0x10]
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r3, [sp]
+ cmp r4, r6
+ bcc ._70 @cond_branch
+._69:
+ ldrh r1, [r7, #0x10]
+ ldr r0, [r7, #0xc]
+ add r0, r0, r1
+ str r0, [r7, #0xc]
+ ldr r1, ._81 + 8 @ 0xffff
+ cmp r0, r1
+ ble ._71 @cond_branch
+ str r1, [r7, #0xc]
+._71:
+ ldrh r0, [r7, #0x8]
+ ldr r1, [r7, #0xc]
+ cmp r0, r1
+ bne ._77 @cond_branch
+._68:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._73 @cond_branch
+ ldr r0, ._81 @ gSharedMem
+ ldrh r1, [r0, #0x8]
+ str r1, [r0, #0xc]
+ ldr r1, ._81 + 4 @ 0x2710
+ strh r1, [r0, #0x10]
+ mov r4, #0x0
+ ldrb r1, [r0]
+ add r7, r0, #0
+ cmp r4, r1
+ bcs ._74 @cond_branch
+ add r5, r7, #0
+ add r6, r1, #0
+._75:
+ ldrh r0, [r5, #0x10]
+ mov r1, #0xa
+ str r3, [sp]
+ bl __udivsi3
+ strh r0, [r5, #0x10]
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r3, [sp]
+ cmp r4, r6
+ bcc ._75 @cond_branch
+._74:
+ add r2, r7, #0
+ ldrh r1, [r2, #0x10]
+ ldr r0, [r2, #0xc]
+ sub r0, r0, r1
+ str r0, [r2, #0xc]
+ cmp r0, #0
+ bge ._76 @cond_branch
+ mov r0, #0x0
+ str r0, [r2, #0xc]
+._76:
+ ldrh r0, [r2, #0x8]
+ ldr r1, [r2, #0xc]
+ cmp r0, r1
+ bne ._77 @cond_branch
+._73:
+ ldrh r2, [r3, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ bne ._78 @cond_branch
+ mov r0, #0x1
+ and r0, r0, r2
+ cmp r0, #0
+ bne ._79 @cond_branch
+ mov r0, #0x0
+ mov r8, r0
+._62:
+ mov r0, r8
+ cmp r0, #0
+ beq ._80 @cond_branch
+ bl debug_sub_8090C44
+._80:
+ mov r0, #0x0
+._63:
+ add sp, sp, #0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._82:
+ .align 2, 0
+._81:
+ .word gSharedMem
+ .word 0x2710
+ .word 0xffff
+
+ thumb_func_end debug_sub_8090C88
+
+ thumb_func_start TayaDebugMenu_PKMNLottery
+TayaDebugMenu_PKMNLottery:
+ push {lr}
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x6
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ bl RetrieveLotteryNumber
+ ldr r2, ._83 @ gSharedMem
+ ldr r0, ._83 + 4 @ gSpecialVar_Result
+ ldrh r0, [r0]
+ mov r1, #0x0
+ strh r0, [r2, #0x8]
+ strb r1, [r2]
+ bl debug_sub_8090C44
+ ldr r1, ._83 + 8 @ gMenuCallback
+ ldr r0, ._83 + 12 @ debug_sub_8090C88
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._84:
+ .align 2, 0
+._83:
+ .word gSharedMem
+ .word gSpecialVar_Result
+ .word gMenuCallback
+ .word debug_sub_8090C88+1
+
+ thumb_func_end TayaDebugMenu_PKMNLottery
+
+ thumb_func_start TayaDebugMenu_Trainer
+TayaDebugMenu_Trainer:
+ push {r4, r5, lr}
+ mov r4, #0x0
+ ldr r5, ._86 @ gTrainerEyeTrainers
+._85:
+ lsl r0, r4, #0x4
+ add r0, r0, r5
+ ldrh r0, [r0]
+ bl SetTrainerFlag
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x37
+ bls ._85 @cond_branch
+ ldr r0, ._86 + 4 @ 0x109
+ bl SetTrainerFlag
+ mov r0, #0x85
+ lsl r0, r0, #0x1
+ bl SetTrainerFlag
+ ldr r0, ._86 + 8 @ 0x10b
+ bl SetTrainerFlag
+ mov r0, #0x86
+ lsl r0, r0, #0x1
+ bl SetTrainerFlag
+ ldr r0, ._86 + 12 @ 0x10d
+ bl SetTrainerFlag
+ mov r0, #0x87
+ lsl r0, r0, #0x1
+ bl SetTrainerFlag
+ ldr r0, ._86 + 16 @ 0x10f
+ bl SetTrainerFlag
+ mov r0, #0x88
+ lsl r0, r0, #0x1
+ bl SetTrainerFlag
+ ldr r0, ._86 + 20 @ 0x105
+ bl SetTrainerFlag
+ mov r0, #0x83
+ lsl r0, r0, #0x1
+ bl SetTrainerFlag
+ ldr r0, ._86 + 24 @ 0x107
+ bl SetTrainerFlag
+ mov r0, #0x84
+ lsl r0, r0, #0x1
+ bl SetTrainerFlag
+ ldr r0, ._86 + 28 @ 0x14f
+ bl SetTrainerFlag
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+._87:
+ .align 2, 0
+._86:
+ .word gTrainerEyeTrainers
+ .word 0x109
+ .word 0x10b
+ .word 0x10d
+ .word 0x10f
+ .word 0x105
+ .word 0x107
+ .word 0x14f
+
+ thumb_func_end TayaDebugMenu_Trainer
+
+ thumb_func_start TayaDebugMenu_PokenavD
+TayaDebugMenu_PokenavD:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xffffffe4
+ bl Menu_DisplayDialogueFrame
+ mov r0, #0x0
+ mov sl, r0
+ mov r6, #0x1
+ mov r7, #0xff
+ mov r1, #0x3
+ mov r9, r1
+._93:
+ ldr r4, ._94 @ gSharedMem
+ add r0, r4, #0
+ ldr r1, ._94 + 4 @ gUnknown_Debug_083C4F94
+ bl StringCopy
+ mov r5, sl
+ add r5, r5, #0x1
+ add r1, r5, r4
+ mov r0, #0xff
+ strb r0, [r1]
+ add r0, r4, #0
+ mov r1, #0x2
+ mov r2, #0xf
+ bl Menu_PrintText
+ mov r0, #0x0
+ mov r8, r0
+ str r5, [sp, #0x14]
+ mov r1, sl
+ lsl r1, r1, #0x2
+ str r1, [sp, #0x18]
+._91:
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r0, r0, #0x1
+ str r0, [sp, #0x10]
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x64
+ bl __umodsi3
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xc1
+ lsl r1, r1, #0x1
+ bl __umodsi3
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ cmp r3, #0xfb
+ bls ._89 @cond_branch
+ add r0, r3, #0
+ add r0, r0, #0x19
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ ldr r0, ._94 + 8 @ 0x19b
+ cmp r3, r0
+ bls ._89 @cond_branch
+ mov r3, #0x1
+._89:
+ ldr r0, [sp, #0x18]
+ add r0, r0, sl
+ lsl r4, r0, #0x4
+ sub r4, r4, r0
+ lsl r4, r4, #0x5
+ mov r1, r8
+ lsl r0, r1, #0x2
+ add r0, r0, r8
+ lsl r0, r0, #0x4
+ ldr r1, ._94 + 12 @ gPokemonStorage
+ add r0, r0, r1
+ add r4, r4, r0
+ lsl r2, r5, #0x18
+ lsr r2, r2, #0x18
+ mov r0, #0x0
+ str r0, [sp]
+ str r0, [sp, #0x4]
+ str r6, [sp, #0x8]
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r1, r3, #0
+ mov r3, #0x20
+ bl CreateBoxMon
+ bl Random
+ add r1, r7, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x16
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r7, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x17
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r7, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x18
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r7, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x21
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r7, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x2f
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r7, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x30
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ mov r1, r9
+ and r1, r1, r0
+ add r1, r1, #0x1
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x32
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ mov r1, r9
+ and r1, r1, r0
+ add r1, r1, #0x1
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x33
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ mov r1, r9
+ and r1, r1, r0
+ add r1, r1, #0x1
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x34
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ mov r1, r9
+ and r1, r1, r0
+ add r1, r1, #0x1
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x36
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ mov r1, r9
+ and r1, r1, r0
+ add r1, r1, #0x1
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x35
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x43
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x44
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x45
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x46
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x47
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x48
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x49
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x4a
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x4b
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x4c
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x4d
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x4e
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ mov r0, r8
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r8, r0
+ cmp r0, #0x1d
+ bhi ._90 @cond_branch
+ b ._91
+._90:
+ ldr r1, [sp, #0x14]
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ mov sl, r0
+ cmp r0, #0xd
+ bhi ._92 @cond_branch
+ b ._93
+._92:
+ bl TayaDebugMenu_TownFlags
+ bl TayaDebugMenu_Trainer
+ bl CloseMenu
+ mov r0, #0x1
+ add sp, sp, #0x1c
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._95:
+ .align 2, 0
+._94:
+ .word gSharedMem
+ .word gUnknown_Debug_083C4F94
+ .word 0x19b
+ .word gPokemonStorage+0x4
+
+ thumb_func_end TayaDebugMenu_PokenavD
+
+ thumb_func_start TayaDebugMenu_8091190
+TayaDebugMenu_8091190:
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r3, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r3, r0
+ beq ._96 @cond_branch
+ add r0, r0, #0x1
+ cmp r3, r0
+ beq ._97 @cond_branch
+ ldr r2, ._99 @ gMenuCallback
+ ldr r1, ._99 + 4 @ gUnknown_Debug_83C5068
+ ldr r0, ._99 + 8 @ unk_2030224
+ ldrb r0, [r0]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, [r0]
+ lsl r0, r3, #0x3
+ add r0, r0, r1
+ ldr r0, [r0, #0x4]
+ str r0, [r2]
+._106:
+ mov r0, #0x0
+ b ._98
+._100:
+ .align 2, 0
+._99:
+ .word gMenuCallback
+ .word gUnknown_Debug_83C5068
+ .word unk_2030224
+._96:
+ ldr r3, ._107 @ unk_2030224
+ ldrb r4, [r3]
+ ldr r2, ._107 + 4 @ gMain
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ add r5, r3, #0
+ cmp r0, #0
+ beq ._102 @cond_branch
+ sub r0, r4, #1
+ strb r0, [r5]
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bge ._102 @cond_branch
+ mov r0, #0x1
+ strb r0, [r5]
+._102:
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._104 @cond_branch
+ ldrb r0, [r5]
+ add r0, r0, #0x1
+ strb r0, [r5]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bls ._104 @cond_branch
+ mov r0, #0x0
+ strb r0, [r5]
+._104:
+ lsl r0, r4, #0x18
+ asr r0, r0, #0x18
+ mov r1, #0x0
+ ldrsb r1, [r5, r1]
+ cmp r0, r1
+ beq ._106 @cond_branch
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xb
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r4, ._107 + 8 @ gUnknown_Debug_83C5068
+ mov r0, #0x0
+ ldrsb r0, [r5, r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r4
+ ldrb r2, [r0, #0x4]
+ ldr r3, [r0]
+ mov r0, #0x1
+ mov r1, #0x1
+ bl Menu_PrintItems
+ mov r0, #0x0
+ ldrsb r0, [r5, r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r4
+ ldrb r3, [r0, #0x4]
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl InitMenu
+ b ._106
+._108:
+ .align 2, 0
+._107:
+ .word unk_2030224
+ .word gMain
+ .word gUnknown_Debug_83C5068
+._97:
+ bl CloseMenu
+ mov r0, #0x1
+._98:
+ add sp, sp, #0x8
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end TayaDebugMenu_8091190
+
+ thumb_func_start InitTayaDebugWindow
+InitTayaDebugWindow:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ ldr r1, ._109 @ unk_2030224
+ mov r0, #0x0
+ strb r0, [r1]
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xb
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._109 + 4 @ gUnknown_Debug_83C5068
+ ldr r3, [r0]
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._109 + 8 @ gMenuCallback
+ ldr r0, ._109 + 12 @ TayaDebugMenu_8091190
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._110:
+ .align 2, 0
+._109:
+ .word unk_2030224
+ .word gUnknown_Debug_83C5068
+ .word gMenuCallback
+ .word TayaDebugMenu_8091190+1
+
+ thumb_func_end InitTayaDebugWindow
+
+ thumb_func_start debug_sub_80912D8
+debug_sub_80912D8:
+ push {lr}
+ ldr r0, ._113 @ gPaletteFade
+ ldrb r1, [r0, #0x7]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._111 @cond_branch
+ mov r0, #0x0
+ b ._112
+._114:
+ .align 2, 0
+._113:
+ .word gPaletteFade
+._111:
+ ldr r0, ._115 @ debug_sub_8110F28
+ bl SetMainCallback2
+ mov r0, #0x1
+._112:
+ pop {r1}
+ bx r1
+._116:
+ .align 2, 0
+._115:
+ .word debug_sub_8110F28+1
+
+ thumb_func_end debug_sub_80912D8
+
+ thumb_func_start debug_sub_8091300
+debug_sub_8091300:
+ push {lr}
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FadeScreen
+ ldr r1, ._117 @ gMenuCallback
+ ldr r0, ._117 + 4 @ debug_sub_80912D8
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._118:
+ .align 2, 0
+._117:
+ .word gMenuCallback
+ .word debug_sub_80912D8+1
+
+ thumb_func_end debug_sub_8091300
+
+ thumb_func_start debug_sub_8091320
+debug_sub_8091320:
+ push {lr}
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ bl TransferPlttBuffer
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_8091320
+
+ thumb_func_start debug_sub_8091334
+debug_sub_8091334:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ bl AnimateSprites
+ bl BuildOamBuffer
+ ldr r3, ._123 @ gSharedMem
+ add r0, r3, #0
+ add r0, r0, #0x52
+ ldrb r4, [r0]
+ cmp r4, #0
+ beq ._119 @cond_branch
+ cmp r4, #0x1
+ bne ._120 @cond_branch
+ b ._121
+._120:
+ b ._162
+._124:
+ .align 2, 0
+._123:
+ .word gSharedMem
+._119:
+ add r5, r3, #0
+ add r5, r5, #0x55
+ strb r4, [r5]
+ ldr r2, ._131 @ gMain
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ mov r9, r2
+ cmp r0, #0
+ beq ._126 @cond_branch
+ add r1, r3, #0
+ add r1, r1, #0x54
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._126 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ mov r0, #0x1
+ strb r0, [r5]
+._126:
+ mov r0, r9
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ ldr r5, ._131 + 4 @ gSharedMem
+ cmp r0, #0
+ beq ._133 @cond_branch
+ add r0, r5, #0
+ add r0, r0, #0x53
+ ldrb r0, [r0]
+ cmp r0, #0x2
+ beq ._128 @cond_branch
+ add r1, r5, #0
+ add r1, r1, #0x54
+ ldrb r0, [r1]
+ cmp r0, #0x4
+ bhi ._133 @cond_branch
+ b ._130
+._132:
+ .align 2, 0
+._131:
+ .word gMain
+ .word gSharedMem
+._128:
+ add r1, r5, #0
+ add r1, r1, #0x54
+ ldrb r0, [r1]
+ cmp r0, #0x3
+ bhi ._133 @cond_branch
+._130:
+ add r0, r0, #0x1
+ strb r0, [r1]
+ add r1, r1, #0x1
+ mov r0, #0x1
+ strb r0, [r1]
+._133:
+ mov r2, r9
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._135 @cond_branch
+ add r1, r5, #0
+ add r1, r1, #0x53
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._135 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ add r1, r1, #0x2
+ mov r0, #0x1
+ strb r0, [r1]
+._135:
+ mov r3, r9
+ ldrh r1, [r3, #0x2e]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._140 @cond_branch
+ add r0, r5, #0
+ add r0, r0, #0x54
+ ldrb r0, [r0]
+ cmp r0, #0x5
+ beq ._137 @cond_branch
+ add r1, r5, #0
+ add r1, r1, #0x53
+ ldrb r0, [r1]
+ cmp r0, #0x1
+ bhi ._140 @cond_branch
+ b ._139
+._137:
+ add r1, r5, #0
+ add r1, r1, #0x53
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._140 @cond_branch
+._139:
+ add r0, r0, #0x1
+ strb r0, [r1]
+ add r1, r1, #0x2
+ mov r0, #0x1
+ strb r0, [r1]
+._140:
+ add r0, r5, #0
+ add r0, r0, #0x55
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne ._141 @cond_branch
+ mov r0, r9
+ ldrh r2, [r0, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._142 @cond_branch
+ ldr r2, ._145 @ gUnknown_Debug_083C50EC
+ add r3, r5, #0
+ add r3, r3, #0x53
+ add r0, r5, #0
+ add r0, r0, #0x54
+ ldrb r1, [r0]
+ lsl r0, r1, #0x1
+ add r0, r0, r1
+ ldrb r3, [r3]
+ add r0, r0, r3
+ lsl r0, r0, #0x3
+ add r0, r0, r2
+ ldrh r0, [r0, #0x4]
+ sub r0, r0, #0x32
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x4
+ bhi ._143 @cond_branch
+ add r1, r5, #0
+ add r1, r1, #0x56
+ mov r0, #0x4
+ b ._144
+._146:
+ .align 2, 0
+._145:
+ .word gUnknown_Debug_083C50EC
+._143:
+ add r1, r5, #0
+ add r1, r1, #0x56
+ mov r0, #0x1
+._144:
+ strb r0, [r1]
+ add r1, r5, #0
+ add r1, r1, #0x52
+ mov r0, #0x1
+ strb r0, [r1]
+ b ._162
+._142:
+ mov r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ bne ._148 @cond_branch
+ b ._162
+._148:
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x10
+ mov r2, #0x0
+ bl BlendPalettes
+ ldr r0, ._151 @ sub_80546F0
+ bl SetMainCallback2
+ b ._162
+._152:
+ .align 2, 0
+._151:
+ .word sub_80546F0+1
+._121:
+ add r5, r3, #0
+ add r5, r5, #0x55
+ mov r0, #0x0
+ strb r0, [r5]
+ ldr r2, ._159 @ gMain
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ mov r9, r2
+ cmp r0, #0
+ beq ._154 @cond_branch
+ add r2, r3, #0
+ add r2, r2, #0x53
+ add r0, r3, #0
+ add r0, r0, #0x54
+ ldrb r1, [r0]
+ lsl r0, r1, #0x1
+ add r0, r0, r1
+ ldrb r2, [r2]
+ add r0, r0, r2
+ add r2, r0, r3
+ add r0, r3, #0
+ add r0, r0, #0x56
+ ldrb r1, [r2]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bcs ._154 @cond_branch
+ add r0, r1, #1
+ strb r0, [r2]
+ strb r4, [r5]
+._154:
+ mov r2, r9
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ ldr r5, ._159 + 4 @ gSharedMem
+ cmp r0, #0
+ beq ._156 @cond_branch
+ add r2, r5, #0
+ add r2, r2, #0x53
+ add r0, r5, #0
+ add r0, r0, #0x54
+ ldrb r1, [r0]
+ lsl r0, r1, #0x1
+ add r0, r0, r1
+ ldrb r2, [r2]
+ add r0, r0, r2
+ add r1, r0, r5
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._156 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ add r1, r5, #0
+ add r1, r1, #0x55
+ mov r0, #0x1
+ strb r0, [r1]
+._156:
+ add r6, r5, #0
+ add r0, r6, #0
+ add r0, r0, #0x55
+ ldrb r7, [r0]
+ cmp r7, #0
+ beq ._157 @cond_branch
+._141:
+ bl debug_sub_80916AC
+ b ._162
+._160:
+ .align 2, 0
+._159:
+ .word gMain
+ .word gSharedMem
+._157:
+ mov r3, r9
+ ldrh r1, [r3, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._161 @cond_branch
+ ldr r0, ._164 @ gPlayerParty
+ ldr r1, ._164 + 4 @ gUnknown_Debug_083C50EC
+ mov ip, r1
+ mov r2, #0x53
+ add r2, r2, r6
+ mov r8, r2
+ add r4, r6, #0
+ add r4, r4, #0x54
+ ldrb r2, [r4]
+ lsl r1, r2, #0x1
+ add r1, r1, r2
+ mov r3, r8
+ ldrb r3, [r3]
+ add r1, r1, r3
+ lsl r1, r1, #0x3
+ add r1, r1, ip
+ ldrh r1, [r1, #0x4]
+ bl GetMonData
+ ldrb r2, [r4]
+ lsl r1, r2, #0x1
+ add r1, r1, r2
+ mov r2, r8
+ ldrb r2, [r2]
+ add r1, r1, r2
+ add r1, r1, r6
+ strb r0, [r1]
+ bl debug_sub_80916AC
+ add r0, r6, #0
+ add r0, r0, #0x52
+ strb r7, [r0]
+._161:
+ mov r3, r9
+ ldrh r1, [r3, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._162 @cond_branch
+ ldr r2, ._164 + 4 @ gUnknown_Debug_083C50EC
+ add r0, r6, #0
+ add r0, r0, #0x53
+ ldrb r4, [r0]
+ add r0, r0, #0x1
+ ldrb r1, [r0]
+ lsl r0, r1, #0x1
+ add r3, r0, r1
+ add r0, r3, r4
+ lsl r0, r0, #0x3
+ add r1, r0, r2
+ ldrh r0, [r1, #0x4]
+ cmp r0, #0
+ beq ._163 @cond_branch
+ ldr r0, ._164 @ gPlayerParty
+ ldrh r1, [r1, #0x4]
+ add r2, r4, r6
+ add r2, r3, r2
+ bl SetMonData
+._163:
+ add r0, r5, #0
+ add r0, r0, #0x52
+ strb r7, [r0]
+._162:
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._165:
+ .align 2, 0
+._164:
+ .word gPlayerParty
+ .word gUnknown_Debug_083C50EC
+
+ thumb_func_end debug_sub_8091334
+
+ thumb_func_start debug_sub_80915BC
+debug_sub_80915BC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ ldr r0, ._168 @ 0x4000010
+ mov r1, #0x0
+ strh r1, [r0]
+ add r0, r0, #0x2
+ strh r1, [r0]
+ mov r1, #0x0
+ ldr r0, ._168 + 4 @ gUnknown_Debug_083C50EC
+ mov r8, r0
+ ldr r7, ._168 + 8 @ gSharedMem
+._171:
+ mov r4, #0x0
+ lsl r0, r1, #0x1
+ add r6, r1, #1
+ add r5, r0, r1
+._170:
+ add r0, r5, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r8
+ ldrh r1, [r0, #0x4]
+ cmp r1, #0
+ beq ._166 @cond_branch
+ ldr r0, ._168 + 12 @ gPlayerParty
+ bl GetMonData
+ add r1, r4, r5
+ add r1, r1, r7
+ strb r0, [r1]
+ b ._167
+._169:
+ .align 2, 0
+._168:
+ .word 0x4000010
+ .word gUnknown_Debug_083C50EC
+ .word gSharedMem
+ .word gPlayerParty
+._166:
+ add r0, r4, r5
+ add r0, r0, r7
+ strb r1, [r0]
+._167:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x2
+ bls ._170 @cond_branch
+ lsl r0, r6, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #0x5
+ bls ._171 @cond_branch
+ ldr r4, ._172 @ gWindowTemplate_81E7224
+ add r0, r4, #0
+ bl Text_LoadWindowTemplate
+ add r0, r4, #0
+ bl InitMenuWindow
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x3
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._172 + 4 @ gUnknown_Debug_083C517C
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r0, #0x0
+ mov r1, #0x4
+ mov r2, #0x1d
+ mov r3, #0x11
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0x12
+ mov r2, #0x1d
+ mov r3, #0x15
+ bl Menu_DrawStdWindowFrame
+ mov r1, #0x80
+ lsl r1, r1, #0x13
+ mov r2, #0x8a
+ lsl r2, r2, #0x5
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r2, ._172 + 8 @ gSharedMem
+ add r0, r2, #0
+ add r0, r0, #0x53
+ mov r1, #0x0
+ strb r1, [r0]
+ add r0, r0, #0x1
+ strb r1, [r0]
+ sub r0, r0, #0x2
+ strb r1, [r0]
+ bl debug_sub_80916AC
+ ldr r0, ._172 + 12 @ debug_sub_8091320
+ bl SetVBlankCallback
+ ldr r0, ._172 + 16 @ debug_sub_8091334
+ bl SetMainCallback2
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._173:
+ .align 2, 0
+._172:
+ .word gWindowTemplate_81E7224
+ .word gUnknown_Debug_083C517C
+ .word gSharedMem
+ .word debug_sub_8091320+1
+ .word debug_sub_8091334+1
+
+ thumb_func_end debug_sub_80915BC
+
+ thumb_func_start debug_sub_80916AC
+debug_sub_80916AC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xfffffffc
+ mov r6, #0x0
+ ldr r0, ._177 @ gSharedMem
+ mov sl, r0
+ mov r1, #0x0
+ mov r8, r1
+._182:
+ ldr r2, ._177 + 4 @ gSharedMem
+ mov r5, #0x0
+ lsl r0, r6, #0x1
+ mov r9, r0
+ add r1, r6, #1
+ str r1, [sp]
+._181:
+ mov r0, sl
+ add r0, r0, #0x53
+ ldrb r0, [r0]
+ cmp r0, r5
+ bne ._175 @cond_branch
+ ldr r1, ._177 + 8 @ gSharedMem
+ ldrb r0, [r1]
+ cmp r0, r6
+ bne ._175 @cond_branch
+ mov r0, #0xef
+ b ._176
+._178:
+ .align 2, 0
+._177:
+ .word gSharedMem
+ .word gSharedMem+0x12
+ .word gSharedMem+0x54
+._175:
+ mov r0, r8
+ strb r0, [r2]
+ add r2, r2, #0x1
+._176:
+ strb r0, [r2]
+ add r2, r2, #0x1
+ mov r1, r9
+ add r4, r1, r6
+ add r0, r4, r5
+ lsl r0, r0, #0x3
+ ldr r1, ._183 @ gUnknown_Debug_083C50EC
+ add r0, r0, r1
+ ldr r1, [r0]
+ add r0, r2, #0
+ bl StringCopy
+ add r2, r0, #0
+ mov r0, r8
+ strb r0, [r2]
+ add r2, r2, #0x1
+ ldr r7, ._183 + 4 @ gSharedMem
+ add r4, r5, r4
+ add r4, r4, r7
+ ldrb r1, [r4]
+ add r0, r2, #0
+ mov r2, #0x0
+ mov r3, #0x1
+ bl ConvertIntToDecimalStringN
+ add r2, r0, #0
+ mov r1, r8
+ strb r1, [r2]
+ add r2, r2, #0x1
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x2
+ bhi ._179 @cond_branch
+ cmp r6, #0x5
+ bne ._181 @cond_branch
+ cmp r5, #0x2
+ bne ._181 @cond_branch
+._179:
+ sub r1, r2, #1
+ mov r0, #0xff
+ strb r0, [r1]
+ mov r2, r9
+ add r2, r2, #0x5
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ add r0, r7, #0
+ add r0, r0, #0x12
+ mov r1, #0x1
+ bl Menu_PrintText
+ ldr r1, [sp]
+ lsl r0, r1, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x5
+ bls ._182 @cond_branch
+ add sp, sp, #0x4
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._184:
+ .align 2, 0
+._183:
+ .word gUnknown_Debug_083C50EC
+ .word gSharedMem
+
+ thumb_func_end debug_sub_80916AC
+
+ .align 2, 0
+
+.endif
diff --git a/asm/tomomichi_debug_menu.s b/asm/tomomichi_debug_menu.s
new file mode 100644
index 000000000..c0dfe38e0
--- /dev/null
+++ b/asm/tomomichi_debug_menu.s
@@ -0,0 +1,8100 @@
+.if DEBUG
+
+ .include "constants/gba_constants.inc"
+ .include "include/macros.inc"
+
+ thumb_func_start InitTomomichiDebugWindow
+InitTomomichiDebugWindow:
+ push {lr}
+ bl debug_sub_808B874
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+
+ thumb_func_end InitTomomichiDebugWindow
+
+ thumb_func_start debug_sub_808B868
+debug_sub_808B868:
+ push {lr}
+ bl c2_exit_to_overworld_1_continue_scripts_restart_music
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808B868
+
+ thumb_func_start debug_sub_808B874
+debug_sub_808B874:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xd
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._1 @ gUnknown_Debug_083C0CBA
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ ldr r0, ._1 + 4 @ gDebug_0300071D
+ ldrb r0, [r0]
+ str r0, [sp]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._1 + 8 @ gMenuCallback
+ ldr r0, ._1 + 12 @ debug_sub_808B8C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._2:
+ .align 2, 0
+._1:
+ .word gUnknown_Debug_083C0CBA
+ .word gDebug_0300071D
+ .word gMenuCallback
+ .word debug_sub_808B8C8+1
+
+ thumb_func_end debug_sub_808B874
+
+ thumb_func_start debug_sub_808B8C8
+debug_sub_808B8C8:
+ push {r4, lr}
+ ldr r4, ._7 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._3 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ bl Menu_MoveCursor
+ ldr r1, ._7 + 4 @ gDebug_0300071D
+ strb r0, [r1]
+._3:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._4 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ bl Menu_MoveCursor
+ ldr r1, ._7 + 4 @ gDebug_0300071D
+ strb r0, [r1]
+._4:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._5 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._7 + 8 @ gUnknown_Debug_083C0CBA
+ ldr r0, ._7 + 4 @ gDebug_0300071D
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r1, r1, #0x4
+ add r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._10
+._8:
+ .align 2, 0
+._7:
+ .word gMain
+ .word gDebug_0300071D
+ .word gUnknown_Debug_083C0CBA
+._5:
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._9 @cond_branch
+ mov r0, #0x0
+ b ._10
+._9:
+ bl CloseMenu
+ mov r0, #0x1
+._10:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808B8C8
+
+ thumb_func_start TomomichiDebugMenu_ContestGraphics
+TomomichiDebugMenu_ContestGraphics:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x14
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._11 @ gUnknown_Debug_083C0CF4
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r3, ._11 + 4 @ gUnknown_Debug_083C0D2C
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0x4
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x13
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x4
+ bl InitMenu
+ ldr r1, ._11 + 8 @ gMenuCallback
+ ldr r0, ._11 + 12 @ debug_sub_808BC48
+ str r0, [r1]
+ ldr r0, ._11 + 16 @ gDebug_03000700
+ mov r2, #0x1
+ strh r2, [r0]
+ ldr r1, ._11 + 20 @ gDebug_03000704
+ ldr r0, ._11 + 24 @ 0x6f33
+ str r0, [r1]
+ ldr r0, ._11 + 28 @ gDebug_03000708
+ str r4, [r0]
+ ldr r0, ._11 + 32 @ gDebug_0300070C
+ strb r2, [r0]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._12:
+ .align 2, 0
+._11:
+ .word gUnknown_Debug_083C0CF4
+ .word gUnknown_Debug_083C0D2C
+ .word gMenuCallback
+ .word debug_sub_808BC48+1
+ .word gDebug_03000700
+ .word gDebug_03000704
+ .word 0x6f33
+ .word gDebug_03000708
+ .word gDebug_0300070C
+
+ thumb_func_end TomomichiDebugMenu_ContestGraphics
+
+ thumb_func_start TomomichiDebugMenu_ArtMusGraphics
+TomomichiDebugMenu_ArtMusGraphics:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x14
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._13 @ gUnknown_Debug_083C0D4C
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r3, ._13 + 4 @ gUnknown_Debug_083C0D83
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0x4
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x13
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x4
+ bl InitMenu
+ ldr r1, ._13 + 8 @ gMenuCallback
+ ldr r0, ._13 + 12 @ debug_sub_808BCBC
+ str r0, [r1]
+ ldr r0, ._13 + 16 @ gDebug_03000700
+ mov r2, #0x1
+ strh r2, [r0]
+ ldr r1, ._13 + 20 @ gDebug_03000704
+ ldr r0, ._13 + 24 @ 0x6f33
+ str r0, [r1]
+ ldr r0, ._13 + 28 @ gDebug_03000708
+ str r4, [r0]
+ ldr r0, ._13 + 32 @ gDebug_0300070D
+ strb r2, [r0]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._14:
+ .align 2, 0
+._13:
+ .word gUnknown_Debug_083C0D4C
+ .word gUnknown_Debug_083C0D83
+ .word gMenuCallback
+ .word debug_sub_808BCBC+1
+ .word gDebug_03000700
+ .word gDebug_03000704
+ .word 0x6f33
+ .word gDebug_03000708
+ .word gDebug_0300070D
+
+ thumb_func_end TomomichiDebugMenu_ArtMusGraphics
+
+ thumb_func_start TomomichiDebugMenu_PreviewData
+TomomichiDebugMenu_PreviewData:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x14
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._15 @ gUnknown_Debug_083C0DA4
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r3, ._15 + 4 @ gUnknown_Debug_083C0DD4
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0x4
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x13
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x4
+ bl InitMenu
+ ldr r1, ._15 + 8 @ gMenuCallback
+ ldr r0, ._15 + 12 @ debug_sub_808BD30
+ str r0, [r1]
+ ldr r0, ._15 + 16 @ gDebug_03000700
+ mov r2, #0x1
+ strh r2, [r0]
+ ldr r1, ._15 + 20 @ gDebug_03000704
+ ldr r0, ._15 + 24 @ 0x6f33
+ str r0, [r1]
+ ldr r0, ._15 + 28 @ gDebug_03000708
+ str r4, [r0]
+ ldr r0, ._15 + 32 @ gDebug_0300070E
+ strb r2, [r0]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._16:
+ .align 2, 0
+._15:
+ .word gUnknown_Debug_083C0DA4
+ .word gUnknown_Debug_083C0DD4
+ .word gMenuCallback
+ .word debug_sub_808BD30+1
+ .word gDebug_03000700
+ .word gDebug_03000704
+ .word 0x6f33
+ .word gDebug_03000708
+ .word gDebug_0300070E
+
+ thumb_func_end TomomichiDebugMenu_PreviewData
+
+ thumb_func_start TomomichiDebugMenu_TrickHouse
+TomomichiDebugMenu_TrickHouse:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._17 @ gUnknown_Debug_083C0DF4
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r3, ._17 + 4 @ gUnknown_Debug_083C0E15
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0x2
+ bl Menu_PrintItems
+ ldr r0, ._17 + 8 @ gDebug_0300071E
+ ldrb r0, [r0]
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._17 + 12 @ gMenuCallback
+ ldr r0, ._17 + 16 @ debug_sub_808BDA4
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._18:
+ .align 2, 0
+._17:
+ .word gUnknown_Debug_083C0DF4
+ .word gUnknown_Debug_083C0E15
+ .word gDebug_0300071E
+ .word gMenuCallback
+ .word debug_sub_808BDA4+1
+
+ thumb_func_end TomomichiDebugMenu_TrickHouse
+
+ thumb_func_start TomomichiDebugMenu_ControlEvents
+TomomichiDebugMenu_ControlEvents:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._19 @ gUnknown_Debug_083C0E32
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ ldr r0, ._19 + 4 @ gDebug_0300071F
+ ldrb r0, [r0]
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._19 + 8 @ gMenuCallback
+ ldr r0, ._19 + 12 @ debug_sub_808BE2C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._20:
+ .align 2, 0
+._19:
+ .word gUnknown_Debug_083C0E32
+ .word gDebug_0300071F
+ .word gMenuCallback
+ .word debug_sub_808BE2C+1
+
+ thumb_func_end TomomichiDebugMenu_ControlEvents
+
+ thumb_func_start TomomichiDebugMenu_ControlFlags
+TomomichiDebugMenu_ControlFlags:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._21 @ gUnknown_Debug_083C0E7F
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ ldr r0, ._21 + 4 @ gDebug_03000720
+ ldrb r0, [r0]
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._21 + 8 @ gMenuCallback
+ ldr r0, ._21 + 12 @ debug_sub_808BEB4
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._22:
+ .align 2, 0
+._21:
+ .word gUnknown_Debug_083C0E7F
+ .word gDebug_03000720
+ .word gMenuCallback
+ .word debug_sub_808BEB4+1
+
+ thumb_func_end TomomichiDebugMenu_ControlFlags
+
+ thumb_func_start TomomichiDebugMenu_ControlWorks
+TomomichiDebugMenu_ControlWorks:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._23 @ gUnknown_Debug_083C0EF1
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ ldr r0, ._23 + 4 @ gDebug_03000721
+ ldrb r0, [r0]
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._23 + 8 @ gMenuCallback
+ ldr r0, ._23 + 12 @ debug_sub_808BF3C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._24:
+ .align 2, 0
+._23:
+ .word gUnknown_Debug_083C0EF1
+ .word gDebug_03000721
+ .word gMenuCallback
+ .word debug_sub_808BF3C+1
+
+ thumb_func_end TomomichiDebugMenu_ControlWorks
+
+ thumb_func_start debug_sub_808BC48
+debug_sub_808BC48:
+ push {r4, lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, #0x1
+ beq ._25 @cond_branch
+ cmp r0, #0x1
+ bgt ._26 @cond_branch
+ cmp r0, #0
+ beq ._27 @cond_branch
+ b ._32
+._26:
+ cmp r0, #0x2
+ beq ._29 @cond_branch
+ b ._32
+._27:
+ bl debug_sub_808ED0C
+ b ._32
+._25:
+ bl debug_sub_808ED9C
+ b ._32
+._29:
+ bl debug_sub_808EE3C
+._32:
+ mov r0, #0x0
+ bl debug_sub_808EF8C
+ lsl r0, r4, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._36 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ bne ._34 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ b ._35
+._34:
+ cmp r1, #0x3
+ bne ._36 @cond_branch
+ ldr r0, ._37 @ gMenuCallback
+ ldr r1, ._37 + 4 @ gUnknown_Debug_083C0D2C
+ ldr r1, [r1, #0x1c]
+ str r1, [r0]
+._36:
+ mov r0, #0x0
+._35:
+ pop {r4}
+ pop {r1}
+ bx r1
+._38:
+ .align 2, 0
+._37:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C0D2C
+
+ thumb_func_end debug_sub_808BC48
+
+ thumb_func_start debug_sub_808BCBC
+debug_sub_808BCBC:
+ push {r4, lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, #0x1
+ beq ._39 @cond_branch
+ cmp r0, #0x1
+ bgt ._40 @cond_branch
+ cmp r0, #0
+ beq ._41 @cond_branch
+ b ._46
+._40:
+ cmp r0, #0x2
+ beq ._43 @cond_branch
+ b ._46
+._41:
+ bl debug_sub_808ED0C
+ b ._46
+._39:
+ bl debug_sub_808ED9C
+ b ._46
+._43:
+ bl debug_sub_808EE9C
+._46:
+ mov r0, #0x1
+ bl debug_sub_808EF8C
+ lsl r0, r4, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._50 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ bne ._48 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ b ._49
+._48:
+ cmp r1, #0x3
+ bne ._50 @cond_branch
+ ldr r0, ._51 @ gMenuCallback
+ ldr r1, ._51 + 4 @ gUnknown_Debug_083C0D83
+ ldr r1, [r1, #0x1c]
+ str r1, [r0]
+._50:
+ mov r0, #0x0
+._49:
+ pop {r4}
+ pop {r1}
+ bx r1
+._52:
+ .align 2, 0
+._51:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C0D83
+
+ thumb_func_end debug_sub_808BCBC
+
+ thumb_func_start debug_sub_808BD30
+debug_sub_808BD30:
+ push {r4, lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, #0x1
+ beq ._53 @cond_branch
+ cmp r0, #0x1
+ bgt ._54 @cond_branch
+ cmp r0, #0
+ beq ._55 @cond_branch
+ b ._60
+._54:
+ cmp r0, #0x2
+ beq ._57 @cond_branch
+ b ._60
+._55:
+ bl debug_sub_808ED0C
+ b ._60
+._53:
+ bl debug_sub_808ED9C
+ b ._60
+._57:
+ bl debug_sub_808EF14
+._60:
+ mov r0, #0x2
+ bl debug_sub_808EF8C
+ lsl r0, r4, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._64 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ bne ._62 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ b ._63
+._62:
+ cmp r1, #0x3
+ bne ._64 @cond_branch
+ ldr r0, ._65 @ gMenuCallback
+ ldr r1, ._65 + 4 @ gUnknown_Debug_083C0DD4
+ ldr r1, [r1, #0x1c]
+ str r1, [r0]
+._64:
+ mov r0, #0x0
+._63:
+ pop {r4}
+ pop {r1}
+ bx r1
+._66:
+ .align 2, 0
+._65:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C0DD4
+
+ thumb_func_end debug_sub_808BD30
+
+ thumb_func_start debug_sub_808BDA4
+debug_sub_808BDA4:
+ push {r4, lr}
+ ldr r4, ._71 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._67 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ bl Menu_MoveCursor
+ ldr r1, ._71 + 4 @ gDebug_0300071E
+ strb r0, [r1]
+._67:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._68 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ bl Menu_MoveCursor
+ ldr r1, ._71 + 4 @ gDebug_0300071E
+ strb r0, [r1]
+._68:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._69 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._71 + 8 @ gUnknown_Debug_083C0E15
+ ldr r0, ._71 + 4 @ gDebug_0300071E
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r1, r1, #0x4
+ add r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._74
+._72:
+ .align 2, 0
+._71:
+ .word gMain
+ .word gDebug_0300071E
+ .word gUnknown_Debug_083C0E15
+._69:
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._73 @cond_branch
+ mov r0, #0x0
+ b ._74
+._73:
+ bl CloseMenu
+ mov r0, #0x1
+._74:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808BDA4
+
+ thumb_func_start debug_sub_808BE2C
+debug_sub_808BE2C:
+ push {r4, lr}
+ ldr r4, ._79 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._75 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ bl Menu_MoveCursor
+ ldr r1, ._79 + 4 @ gDebug_0300071F
+ strb r0, [r1]
+._75:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._76 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ bl Menu_MoveCursor
+ ldr r1, ._79 + 4 @ gDebug_0300071F
+ strb r0, [r1]
+._76:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._77 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._79 + 8 @ gUnknown_Debug_083C0E32
+ ldr r0, ._79 + 4 @ gDebug_0300071F
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r1, r1, #0x4
+ add r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._82
+._80:
+ .align 2, 0
+._79:
+ .word gMain
+ .word gDebug_0300071F
+ .word gUnknown_Debug_083C0E32
+._77:
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._81 @cond_branch
+ mov r0, #0x0
+ b ._82
+._81:
+ bl CloseMenu
+ mov r0, #0x1
+._82:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808BE2C
+
+ thumb_func_start debug_sub_808BEB4
+debug_sub_808BEB4:
+ push {r4, lr}
+ ldr r4, ._87 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._83 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ bl Menu_MoveCursor
+ ldr r1, ._87 + 4 @ gDebug_03000720
+ strb r0, [r1]
+._83:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._84 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ bl Menu_MoveCursor
+ ldr r1, ._87 + 4 @ gDebug_03000720
+ strb r0, [r1]
+._84:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._85 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._87 + 8 @ gUnknown_Debug_083C0E7F
+ ldr r0, ._87 + 4 @ gDebug_03000720
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r1, r1, #0x4
+ add r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._90
+._88:
+ .align 2, 0
+._87:
+ .word gMain
+ .word gDebug_03000720
+ .word gUnknown_Debug_083C0E7F
+._85:
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._89 @cond_branch
+ mov r0, #0x0
+ b ._90
+._89:
+ bl CloseMenu
+ mov r0, #0x1
+._90:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808BEB4
+
+ thumb_func_start debug_sub_808BF3C
+debug_sub_808BF3C:
+ push {r4, lr}
+ ldr r4, ._95 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._91 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ bl Menu_MoveCursor
+ ldr r1, ._95 + 4 @ gDebug_03000721
+ strb r0, [r1]
+._91:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._92 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ bl Menu_MoveCursor
+ ldr r1, ._95 + 4 @ gDebug_03000721
+ strb r0, [r1]
+._92:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._93 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._95 + 8 @ gUnknown_Debug_083C0EF1
+ ldr r0, ._95 + 4 @ gDebug_03000721
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r1, r1, #0x4
+ add r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._98
+._96:
+ .align 2, 0
+._95:
+ .word gMain
+ .word gDebug_03000721
+ .word gUnknown_Debug_083C0EF1
+._93:
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._97 @cond_branch
+ mov r0, #0x0
+ b ._98
+._97:
+ bl CloseMenu
+ mov r0, #0x1
+._98:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808BF3C
+
+ thumb_func_start debug_sub_808BFC4
+debug_sub_808BFC4:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._99 @ gUnknown_Debug_083C0F79
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._99 + 4 @ gMenuCallback
+ ldr r0, ._99 + 8 @ debug_sub_808C064
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._100:
+ .align 2, 0
+._99:
+ .word gUnknown_Debug_083C0F79
+ .word gMenuCallback
+ .word debug_sub_808C064+1
+
+ thumb_func_end debug_sub_808BFC4
+
+ thumb_func_start debug_sub_808C014
+debug_sub_808C014:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._101 @ gUnknown_Debug_083C0FFC
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._101 + 4 @ gMenuCallback
+ ldr r0, ._101 + 8 @ debug_sub_808C0A8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._102:
+ .align 2, 0
+._101:
+ .word gUnknown_Debug_083C0FFC
+ .word gMenuCallback
+ .word debug_sub_808C0A8+1
+
+ thumb_func_end debug_sub_808C014
+
+ thumb_func_start debug_sub_808C064
+debug_sub_808C064:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._103 @cond_branch
+ mov r0, #0x0
+ b ._106
+._103:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._105 @cond_branch
+ ldr r2, ._107 @ gMenuCallback
+ ldr r0, ._107 + 4 @ gUnknown_Debug_083C0F79
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._106
+._108:
+ .align 2, 0
+._107:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C0F79
+._105:
+ bl CloseMenu
+ mov r0, #0x1
+._106:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808C064
+
+ thumb_func_start debug_sub_808C0A8
+debug_sub_808C0A8:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._109 @cond_branch
+ mov r0, #0x0
+ b ._112
+._109:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._111 @cond_branch
+ ldr r2, ._113 @ gMenuCallback
+ ldr r0, ._113 + 4 @ gUnknown_Debug_083C0FFC
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._112
+._114:
+ .align 2, 0
+._113:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C0FFC
+._111:
+ bl CloseMenu
+ mov r0, #0x1
+._112:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808C0A8
+
+ thumb_func_start debug_sub_808C0EC
+debug_sub_808C0EC:
+ push {lr}
+ ldr r0, ._115 @ DebugScript_081C1CFE
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._116:
+ .align 2, 0
+._115:
+ .word DebugScript_081C1CFE
+
+ thumb_func_end debug_sub_808C0EC
+
+ thumb_func_start debug_sub_808C104
+debug_sub_808C104:
+ push {lr}
+ ldr r0, ._117 @ DebugScript_081C1D07
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._118:
+ .align 2, 0
+._117:
+ .word DebugScript_081C1D07
+
+ thumb_func_end debug_sub_808C104
+
+ thumb_func_start debug_sub_808C11C
+debug_sub_808C11C:
+ push {lr}
+ ldr r0, ._119 @ DebugScript_081C1D1E
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._120:
+ .align 2, 0
+._119:
+ .word DebugScript_081C1D1E
+
+ thumb_func_end debug_sub_808C11C
+
+ thumb_func_start debug_sub_808C134
+debug_sub_808C134:
+ push {lr}
+ ldr r0, ._121 @ DebugScript_081C1D24
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._122:
+ .align 2, 0
+._121:
+ .word DebugScript_081C1D24
+
+ thumb_func_end debug_sub_808C134
+
+ thumb_func_start debug_sub_808C14C
+debug_sub_808C14C:
+ push {lr}
+ ldr r0, ._123 @ DebugScript_081C1D2A
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._124:
+ .align 2, 0
+._123:
+ .word DebugScript_081C1D2A
+
+ thumb_func_end debug_sub_808C14C
+
+ thumb_func_start debug_sub_808C164
+debug_sub_808C164:
+ push {lr}
+ ldr r0, ._125 @ DebugScript_081C1D35
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._126:
+ .align 2, 0
+._125:
+ .word DebugScript_081C1D35
+
+ thumb_func_end debug_sub_808C164
+
+ thumb_func_start debug_sub_808C17C
+debug_sub_808C17C:
+ push {lr}
+ ldr r0, ._127 @ DebugScript_081C1D46
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._128:
+ .align 2, 0
+._127:
+ .word DebugScript_081C1D46
+
+ thumb_func_end debug_sub_808C17C
+
+ thumb_func_start debug_sub_808C194
+debug_sub_808C194:
+ push {lr}
+ ldr r0, ._129 @ DebugScript_081C221F
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._130:
+ .align 2, 0
+._129:
+ .word DebugScript_081C221F
+
+ thumb_func_end debug_sub_808C194
+
+ thumb_func_start debug_sub_808C1AC
+debug_sub_808C1AC:
+ push {lr}
+ ldr r0, ._131 @ DebugScript_081C23E2
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._132:
+ .align 2, 0
+._131:
+ .word DebugScript_081C23E2
+
+ thumb_func_end debug_sub_808C1AC
+
+ thumb_func_start debug_sub_808C1C4
+debug_sub_808C1C4:
+ push {lr}
+ ldr r0, ._133 @ DebugScript_081C23E6
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._134:
+ .align 2, 0
+._133:
+ .word DebugScript_081C23E6
+
+ thumb_func_end debug_sub_808C1C4
+
+ thumb_func_start debug_sub_808C1DC
+debug_sub_808C1DC:
+ push {lr}
+ ldr r0, ._135 @ DebugScript_081C23F6
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._136:
+ .align 2, 0
+._135:
+ .word DebugScript_081C23F6
+
+ thumb_func_end debug_sub_808C1DC
+
+ thumb_func_start debug_sub_808C1F4
+debug_sub_808C1F4:
+ push {lr}
+ ldr r0, ._137 @ DebugScript_081C2482
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._138:
+ .align 2, 0
+._137:
+ .word DebugScript_081C2482
+
+ thumb_func_end debug_sub_808C1F4
+
+ thumb_func_start debug_sub_808C20C
+debug_sub_808C20C:
+ push {lr}
+ ldr r0, ._139 @ DebugScript_081C23FD
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._140:
+ .align 2, 0
+._139:
+ .word DebugScript_081C23FD
+
+ thumb_func_end debug_sub_808C20C
+
+ thumb_func_start debug_sub_808C224
+debug_sub_808C224:
+ push {lr}
+ ldr r0, ._141 @ DebugScript_081C2518
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._142:
+ .align 2, 0
+._141:
+ .word DebugScript_081C2518
+
+ thumb_func_end debug_sub_808C224
+
+ thumb_func_start debug_sub_808C23C
+debug_sub_808C23C:
+ push {lr}
+ ldr r0, ._143 @ DebugScript_081C2507
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._144:
+ .align 2, 0
+._143:
+ .word DebugScript_081C2507
+
+ thumb_func_end debug_sub_808C23C
+
+ thumb_func_start TomomichiDebugMenu_ContestGraphics_Show
+TomomichiDebugMenu_ContestGraphics_Show:
+ push {lr}
+ add sp, sp, #0xfffffffc
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r1, ._145 @ gMenuCallback
+ ldr r0, ._145 + 4 @ debug_sub_808C280
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ pop {r1}
+ bx r1
+._146:
+ .align 2, 0
+._145:
+ .word gMenuCallback
+ .word debug_sub_808C280+1
+
+ thumb_func_end TomomichiDebugMenu_ContestGraphics_Show
+
+ thumb_func_start debug_sub_808C280
+debug_sub_808C280:
+ push {lr}
+ bl UpdatePaletteFade
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._147 @cond_branch
+ mov r0, #0x0
+ b ._148
+._147:
+ bl CloseMenu
+ mov r0, #0x0
+ bl debug_sub_808F168
+ ldr r0, ._149 @ CB2_ContestPainting
+ bl SetMainCallback2
+ ldr r1, ._149 + 4 @ gMain
+ ldr r0, ._149 + 8 @ debug_sub_808B868
+ str r0, [r1, #0x8]
+ mov r0, #0x1
+._148:
+ pop {r1}
+ bx r1
+._150:
+ .align 2, 0
+._149:
+ .word CB2_ContestPainting+1
+ .word gMain
+ .word debug_sub_808B868+1
+
+ thumb_func_end debug_sub_808C280
+
+ thumb_func_start TomomichiDebugMenu_MuseumGraphics_Show
+TomomichiDebugMenu_MuseumGraphics_Show:
+ push {lr}
+ add sp, sp, #0xfffffffc
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r1, ._151 @ gMenuCallback
+ ldr r0, ._151 + 4 @ debug_sub_808C2E4
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ pop {r1}
+ bx r1
+._152:
+ .align 2, 0
+._151:
+ .word gMenuCallback
+ .word debug_sub_808C2E4+1
+
+ thumb_func_end TomomichiDebugMenu_MuseumGraphics_Show
+
+ thumb_func_start debug_sub_808C2E4
+debug_sub_808C2E4:
+ push {lr}
+ bl UpdatePaletteFade
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._153 @cond_branch
+ mov r0, #0x0
+ b ._154
+._153:
+ bl CloseMenu
+ mov r0, #0x1
+ bl debug_sub_808F168
+ ldr r0, ._155 @ CB2_ContestPainting
+ bl SetMainCallback2
+ ldr r1, ._155 + 4 @ gMain
+ ldr r0, ._155 + 8 @ debug_sub_808B868
+ str r0, [r1, #0x8]
+ mov r0, #0x1
+._154:
+ pop {r1}
+ bx r1
+._156:
+ .align 2, 0
+._155:
+ .word CB2_ContestPainting+1
+ .word gMain
+ .word debug_sub_808B868+1
+
+ thumb_func_end debug_sub_808C2E4
+
+ thumb_func_start debug_sub_808C31C
+debug_sub_808C31C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._157 @ gUnknown_Debug_083C2828
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._157 + 4 @ gMenuCallback
+ ldr r0, ._157 + 8 @ debug_sub_808C36C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._158:
+ .align 2, 0
+._157:
+ .word gUnknown_Debug_083C2828
+ .word gMenuCallback
+ .word debug_sub_808C36C+1
+
+ thumb_func_end debug_sub_808C31C
+
+ thumb_func_start debug_sub_808C36C
+debug_sub_808C36C:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._159 @cond_branch
+ mov r0, #0x0
+ b ._162
+._159:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._161 @cond_branch
+ ldr r2, ._163 @ gMenuCallback
+ ldr r0, ._163 + 4 @ gUnknown_Debug_083C2828
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._162
+._164:
+ .align 2, 0
+._163:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C2828
+._161:
+ bl CloseMenu
+ mov r0, #0x1
+._162:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808C36C
+
+ thumb_func_start debug_sub_808C3B0
+debug_sub_808C3B0:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._165 @ gUnknown_Debug_083C2938
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r0, ._165 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._165 + 8 @ gMenuCallback
+ ldr r0, ._165 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._166:
+ .align 2, 0
+._165:
+ .word gUnknown_Debug_083C2938
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C3B0
+
+ thumb_func_start debug_sub_808C408
+debug_sub_808C408:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._167 @ gUnknown_Debug_083C2A48
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._167 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._167 + 8 @ gMenuCallback
+ ldr r0, ._167 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._168:
+ .align 2, 0
+._167:
+ .word gUnknown_Debug_083C2A48
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C408
+
+ thumb_func_start debug_sub_808C460
+debug_sub_808C460:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._169 @ gUnknown_Debug_083C2B4C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._169 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._169 + 8 @ gMenuCallback
+ ldr r0, ._169 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._170:
+ .align 2, 0
+._169:
+ .word gUnknown_Debug_083C2B4C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C460
+
+ thumb_func_start debug_sub_808C4B8
+debug_sub_808C4B8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._171 @ gUnknown_Debug_083C2C80
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._171 + 4 @ gDebug_0300070F
+ mov r0, #0x3
+ strb r0, [r1]
+ ldr r1, ._171 + 8 @ gMenuCallback
+ ldr r0, ._171 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._172:
+ .align 2, 0
+._171:
+ .word gUnknown_Debug_083C2C80
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C4B8
+
+ thumb_func_start debug_sub_808C510
+debug_sub_808C510:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._173 @ gUnknown_Debug_083C2D8C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._173 + 4 @ gDebug_0300070F
+ mov r0, #0x4
+ strb r0, [r1]
+ ldr r1, ._173 + 8 @ gMenuCallback
+ ldr r0, ._173 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._174:
+ .align 2, 0
+._173:
+ .word gUnknown_Debug_083C2D8C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C510
+
+ thumb_func_start debug_sub_808C568
+debug_sub_808C568:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._175 @ gUnknown_Debug_083C2EB0
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._175 + 4 @ gDebug_0300070F
+ mov r0, #0x5
+ strb r0, [r1]
+ ldr r1, ._175 + 8 @ gMenuCallback
+ ldr r0, ._175 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._176:
+ .align 2, 0
+._175:
+ .word gUnknown_Debug_083C2EB0
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C568
+
+ thumb_func_start debug_sub_808C5C0
+debug_sub_808C5C0:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._177 @ gUnknown_Debug_083C2FE0
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._177 + 4 @ gDebug_0300070F
+ mov r0, #0x6
+ strb r0, [r1]
+ ldr r1, ._177 + 8 @ gMenuCallback
+ ldr r0, ._177 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._178:
+ .align 2, 0
+._177:
+ .word gUnknown_Debug_083C2FE0
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C5C0
+
+ thumb_func_start debug_sub_808C618
+debug_sub_808C618:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._179 @ gUnknown_Debug_083C3100
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._179 + 4 @ gDebug_0300070F
+ mov r0, #0x7
+ strb r0, [r1]
+ ldr r1, ._179 + 8 @ gMenuCallback
+ ldr r0, ._179 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._180:
+ .align 2, 0
+._179:
+ .word gUnknown_Debug_083C3100
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C618
+
+ thumb_func_start debug_sub_808C670
+debug_sub_808C670:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._181 @ gUnknown_Debug_083C3194
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x3
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x3
+ bl InitMenu
+ ldr r1, ._181 + 4 @ gDebug_0300070F
+ mov r0, #0x8
+ strb r0, [r1]
+ ldr r1, ._181 + 8 @ gMenuCallback
+ ldr r0, ._181 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._182:
+ .align 2, 0
+._181:
+ .word gUnknown_Debug_083C3194
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C670
+
+ thumb_func_start debug_sub_808C6C8
+debug_sub_808C6C8:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._186 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808C714
+ ldrb r0, [r5]
+ bl debug_sub_808C764
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._183 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._184 @cond_branch
+._183:
+ mov r0, #0x0
+ b ._185
+._187:
+ .align 2, 0
+._186:
+ .word gDebug_0300070F
+._184:
+ bl CloseMenu
+ mov r0, #0x1
+._185:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808C6C8
+
+ thumb_func_start debug_sub_808C714
+debug_sub_808C714:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._191 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._190 @cond_branch
+ ldr r0, ._191 + 4 @ gUnknown_Debug_83C31E6
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._189 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._190
+._192:
+ .align 2, 0
+._191:
+ .word gMain
+ .word gUnknown_Debug_83C31E6
+._189:
+ add r0, r4, #0
+ bl FlagClear
+._190:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808C714
+
+ thumb_func_start debug_sub_808C764
+debug_sub_808C764:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._195 @ gUnknown_Debug_083C31DC
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._193 @cond_branch
+ ldr r0, ._195 + 4 @ gUnknown_Debug_83C31E6
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._194:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._194 @cond_branch
+._193:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._196:
+ .align 2, 0
+._195:
+ .word gUnknown_Debug_083C31DC
+ .word gUnknown_Debug_83C31E6
+
+ thumb_func_end debug_sub_808C764
+
+ thumb_func_start debug_sub_808C7C8
+debug_sub_808C7C8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._197 @ gUnknown_Debug_083C1CE8
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._197 + 4 @ gMenuCallback
+ ldr r0, ._197 + 8 @ debug_sub_808C818
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._198:
+ .align 2, 0
+._197:
+ .word gUnknown_Debug_083C1CE8
+ .word gMenuCallback
+ .word debug_sub_808C818+1
+
+ thumb_func_end debug_sub_808C7C8
+
+ thumb_func_start debug_sub_808C818
+debug_sub_808C818:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._199 @cond_branch
+ mov r0, #0x0
+ b ._202
+._199:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._201 @cond_branch
+ ldr r2, ._203 @ gMenuCallback
+ ldr r0, ._203 + 4 @ gUnknown_Debug_083C1CE8
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._202
+._204:
+ .align 2, 0
+._203:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C1CE8
+._201:
+ bl CloseMenu
+ mov r0, #0x1
+._202:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808C818
+
+ thumb_func_start debug_sub_808C85C
+debug_sub_808C85C:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._205 @ gUnknown_Debug_083C1E0C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r0, ._205 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._205 + 8 @ gMenuCallback
+ ldr r0, ._205 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._206:
+ .align 2, 0
+._205:
+ .word gUnknown_Debug_083C1E0C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808C85C
+
+ thumb_func_start debug_sub_808C8B4
+debug_sub_808C8B4:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._207 @ gUnknown_Debug_083C1F38
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._207 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._207 + 8 @ gMenuCallback
+ ldr r0, ._207 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._208:
+ .align 2, 0
+._207:
+ .word gUnknown_Debug_083C1F38
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808C8B4
+
+ thumb_func_start debug_sub_808C90C
+debug_sub_808C90C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._209 @ gUnknown_Debug_083C206C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._209 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._209 + 8 @ gMenuCallback
+ ldr r0, ._209 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._210:
+ .align 2, 0
+._209:
+ .word gUnknown_Debug_083C206C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808C90C
+
+ thumb_func_start debug_sub_808C964
+debug_sub_808C964:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._211 @ gUnknown_Debug_083C2190
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._211 + 4 @ gDebug_0300070F
+ mov r0, #0x3
+ strb r0, [r1]
+ ldr r1, ._211 + 8 @ gMenuCallback
+ ldr r0, ._211 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._212:
+ .align 2, 0
+._211:
+ .word gUnknown_Debug_083C2190
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808C964
+
+ thumb_func_start debug_sub_808C9BC
+debug_sub_808C9BC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._213 @ gUnknown_Debug_083C2264
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._213 + 4 @ gDebug_0300070F
+ mov r0, #0x4
+ strb r0, [r1]
+ ldr r1, ._213 + 8 @ gMenuCallback
+ ldr r0, ._213 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._214:
+ .align 2, 0
+._213:
+ .word gUnknown_Debug_083C2264
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808C9BC
+
+ thumb_func_start debug_sub_808CA14
+debug_sub_808CA14:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._215 @ gUnknown_Debug_083C2370
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._215 + 4 @ gDebug_0300070F
+ mov r0, #0x5
+ strb r0, [r1]
+ ldr r1, ._215 + 8 @ gMenuCallback
+ ldr r0, ._215 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._216:
+ .align 2, 0
+._215:
+ .word gUnknown_Debug_083C2370
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808CA14
+
+ thumb_func_start debug_sub_808CA6C
+debug_sub_808CA6C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._217 @ gUnknown_Debug_083C248C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._217 + 4 @ gDebug_0300070F
+ mov r0, #0x6
+ strb r0, [r1]
+ ldr r1, ._217 + 8 @ gMenuCallback
+ ldr r0, ._217 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._218:
+ .align 2, 0
+._217:
+ .word gUnknown_Debug_083C248C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808CA6C
+
+ thumb_func_start debug_sub_808CAC4
+debug_sub_808CAC4:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._219 @ gUnknown_Debug_083C259C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._219 + 4 @ gDebug_0300070F
+ mov r0, #0x7
+ strb r0, [r1]
+ ldr r1, ._219 + 8 @ gMenuCallback
+ ldr r0, ._219 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._220:
+ .align 2, 0
+._219:
+ .word gUnknown_Debug_083C259C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808CAC4
+
+ thumb_func_start debug_sub_808CB1C
+debug_sub_808CB1C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._221 @ gUnknown_Debug_083C26C8
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._221 + 4 @ gDebug_0300070F
+ mov r0, #0x8
+ strb r0, [r1]
+ ldr r1, ._221 + 8 @ gMenuCallback
+ ldr r0, ._221 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._222:
+ .align 2, 0
+._221:
+ .word gUnknown_Debug_083C26C8
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808CB1C
+
+ thumb_func_start debug_sub_808CB74
+debug_sub_808CB74:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._226 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808CBC0
+ ldrb r0, [r5]
+ bl debug_sub_808CC10
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._223 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._224 @cond_branch
+._223:
+ mov r0, #0x0
+ b ._225
+._227:
+ .align 2, 0
+._226:
+ .word gDebug_0300070F
+._224:
+ bl CloseMenu
+ mov r0, #0x1
+._225:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808CB74
+
+ thumb_func_start debug_sub_808CBC0
+debug_sub_808CBC0:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._231 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._230 @cond_branch
+ ldr r0, ._231 + 4 @ gUnknown_Debug_083C271A
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._229 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._230
+._232:
+ .align 2, 0
+._231:
+ .word gMain
+ .word gUnknown_Debug_083C271A
+._229:
+ add r0, r4, #0
+ bl FlagClear
+._230:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808CBC0
+
+ thumb_func_start debug_sub_808CC10
+debug_sub_808CC10:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._235 @ gUnknown_Debug_083C2710
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._233 @cond_branch
+ ldr r0, ._235 + 4 @ gUnknown_Debug_083C271A
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._234:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._234 @cond_branch
+._233:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._236:
+ .align 2, 0
+._235:
+ .word gUnknown_Debug_083C2710
+ .word gUnknown_Debug_083C271A
+
+ thumb_func_end debug_sub_808CC10
+
+ thumb_func_start debug_sub_808CC74
+debug_sub_808CC74:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._237 @ gUnknown_Debug_083C1ADC
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x3
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x3
+ bl InitMenu
+ ldr r1, ._237 + 4 @ gMenuCallback
+ ldr r0, ._237 + 8 @ debug_sub_808CCC4
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._238:
+ .align 2, 0
+._237:
+ .word gUnknown_Debug_083C1ADC
+ .word gMenuCallback
+ .word debug_sub_808CCC4+1
+
+ thumb_func_end debug_sub_808CC74
+
+ thumb_func_start debug_sub_808CCC4
+debug_sub_808CCC4:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._239 @cond_branch
+ mov r0, #0x0
+ b ._242
+._239:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._241 @cond_branch
+ ldr r2, ._243 @ gMenuCallback
+ ldr r0, ._243 + 4 @ gUnknown_Debug_083C1ADC
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._242
+._244:
+ .align 2, 0
+._243:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C1ADC
+._241:
+ bl CloseMenu
+ mov r0, #0x1
+._242:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808CCC4
+
+ thumb_func_start debug_sub_808CD08
+debug_sub_808CD08:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x11
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._245 @ gUnknown_Debug_083C1B7C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x8
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x8
+ bl InitMenu
+ ldr r0, ._245 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._245 + 8 @ gMenuCallback
+ ldr r0, ._245 + 12 @ debug_sub_808CE10
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._246:
+ .align 2, 0
+._245:
+ .word gUnknown_Debug_083C1B7C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CE10+1
+
+ thumb_func_end debug_sub_808CD08
+
+ thumb_func_start debug_sub_808CD60
+debug_sub_808CD60:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._247 @ gUnknown_Debug_083C1BF0
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x4
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x4
+ bl InitMenu
+ ldr r1, ._247 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._247 + 8 @ gMenuCallback
+ ldr r0, ._247 + 12 @ debug_sub_808CE10
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._248:
+ .align 2, 0
+._247:
+ .word gUnknown_Debug_083C1BF0
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CE10+1
+
+ thumb_func_end debug_sub_808CD60
+
+ thumb_func_start debug_sub_808CDB8
+debug_sub_808CDB8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x3
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._249 @ gUnknown_Debug_083C1C2C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x1
+ bl InitMenu
+ ldr r1, ._249 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._249 + 8 @ gMenuCallback
+ ldr r0, ._249 + 12 @ debug_sub_808CE10
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._250:
+ .align 2, 0
+._249:
+ .word gUnknown_Debug_083C1C2C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CE10+1
+
+ thumb_func_end debug_sub_808CDB8
+
+ thumb_func_start debug_sub_808CE10
+debug_sub_808CE10:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._254 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808CE5C
+ ldrb r0, [r5]
+ bl debug_sub_808CEAC
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._251 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._252 @cond_branch
+._251:
+ mov r0, #0x0
+ b ._253
+._255:
+ .align 2, 0
+._254:
+ .word gDebug_0300070F
+._252:
+ bl CloseMenu
+ mov r0, #0x1
+._253:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808CE10
+
+ thumb_func_start debug_sub_808CE5C
+debug_sub_808CE5C:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._259 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._258 @cond_branch
+ ldr r0, ._259 + 4 @ gUnknown_Debug_083C1C38
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._257 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._258
+._260:
+ .align 2, 0
+._259:
+ .word gMain
+ .word gUnknown_Debug_083C1C38
+._257:
+ add r0, r4, #0
+ bl FlagClear
+._258:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808CE5C
+
+ thumb_func_start debug_sub_808CEAC
+debug_sub_808CEAC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._263 @ gUnknown_Debug_083C1C34
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._261 @cond_branch
+ ldr r0, ._263 + 4 @ gUnknown_Debug_083C1C38
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._262:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._262 @cond_branch
+._261:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._264:
+ .align 2, 0
+._263:
+ .word gUnknown_Debug_083C1C34
+ .word gUnknown_Debug_083C1C38
+
+ thumb_func_end debug_sub_808CEAC
+
+ thumb_func_start debug_sub_808CF10
+debug_sub_808CF10:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._265 @ gUnknown_Debug_083C1330
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._265 + 4 @ gMenuCallback
+ ldr r0, ._265 + 8 @ debug_sub_808CF60
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._266:
+ .align 2, 0
+._265:
+ .word gUnknown_Debug_083C1330
+ .word gMenuCallback
+ .word debug_sub_808CF60+1
+
+ thumb_func_end debug_sub_808CF10
+
+ thumb_func_start debug_sub_808CF60
+debug_sub_808CF60:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._267 @cond_branch
+ mov r0, #0x0
+ b ._270
+._267:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._269 @cond_branch
+ ldr r2, ._271 @ gMenuCallback
+ ldr r0, ._271 + 4 @ gUnknown_Debug_083C1330
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._270
+._272:
+ .align 2, 0
+._271:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C1330
+._269:
+ bl CloseMenu
+ mov r0, #0x1
+._270:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808CF60
+
+ thumb_func_start debug_sub_808CFA4
+debug_sub_808CFA4:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x11
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._273 @ gUnknown_Debug_083C13D8
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x8
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x8
+ bl InitMenu
+ ldr r0, ._273 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._273 + 8 @ gMenuCallback
+ ldr r0, ._273 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._274:
+ .align 2, 0
+._273:
+ .word gUnknown_Debug_083C13D8
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808CFA4
+
+ thumb_func_start debug_sub_808CFFC
+debug_sub_808CFFC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._275 @ gUnknown_Debug_083C1465
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._275 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._275 + 8 @ gMenuCallback
+ ldr r0, ._275 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._276:
+ .align 2, 0
+._275:
+ .word gUnknown_Debug_083C1465
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808CFFC
+
+ thumb_func_start debug_sub_808D054
+debug_sub_808D054:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._277 @ gUnknown_Debug_083C1503
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._277 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._277 + 8 @ gMenuCallback
+ ldr r0, ._277 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._278:
+ .align 2, 0
+._277:
+ .word gUnknown_Debug_083C1503
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D054
+
+ thumb_func_start debug_sub_808D0AC
+debug_sub_808D0AC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._279 @ gUnknown_Debug_083C158A
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x4
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x4
+ bl InitMenu
+ ldr r1, ._279 + 4 @ gDebug_0300070F
+ mov r0, #0x3
+ strb r0, [r1]
+ ldr r1, ._279 + 8 @ gMenuCallback
+ ldr r0, ._279 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._280:
+ .align 2, 0
+._279:
+ .word gUnknown_Debug_083C158A
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D0AC
+
+ thumb_func_start debug_sub_808D104
+debug_sub_808D104:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._281 @ gUnknown_Debug_083C1647
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._281 + 4 @ gDebug_0300070F
+ mov r0, #0x4
+ strb r0, [r1]
+ ldr r1, ._281 + 8 @ gMenuCallback
+ ldr r0, ._281 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._282:
+ .align 2, 0
+._281:
+ .word gUnknown_Debug_083C1647
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D104
+
+ thumb_func_start debug_sub_808D15C
+debug_sub_808D15C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._283 @ gUnknown_Debug_083C1712
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._283 + 4 @ gDebug_0300070F
+ mov r0, #0x5
+ strb r0, [r1]
+ ldr r1, ._283 + 8 @ gMenuCallback
+ ldr r0, ._283 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._284:
+ .align 2, 0
+._283:
+ .word gUnknown_Debug_083C1712
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D15C
+
+ thumb_func_start debug_sub_808D1B4
+debug_sub_808D1B4:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._285 @ gUnknown_Debug_083C17F8
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._285 + 4 @ gDebug_0300070F
+ mov r0, #0x6
+ strb r0, [r1]
+ ldr r1, ._285 + 8 @ gMenuCallback
+ ldr r0, ._285 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._286:
+ .align 2, 0
+._285:
+ .word gUnknown_Debug_083C17F8
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D1B4
+
+ thumb_func_start debug_sub_808D20C
+debug_sub_808D20C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._287 @ gUnknown_Debug_083C18B8
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._287 + 4 @ gDebug_0300070F
+ mov r0, #0x7
+ strb r0, [r1]
+ ldr r1, ._287 + 8 @ gMenuCallback
+ ldr r0, ._287 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._288:
+ .align 2, 0
+._287:
+ .word gUnknown_Debug_083C18B8
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D20C
+
+ thumb_func_start debug_sub_808D264
+debug_sub_808D264:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._289 @ gDebug_0x83C1974
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x5
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x5
+ bl InitMenu
+ ldr r1, ._289 + 4 @ gDebug_0300070F
+ mov r0, #0x8
+ strb r0, [r1]
+ ldr r1, ._289 + 8 @ gMenuCallback
+ ldr r0, ._289 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._290:
+ .align 2, 0
+._289:
+ .word gDebug_0x83C1974
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D264
+
+ thumb_func_start debug_sub_808D2BC
+debug_sub_808D2BC:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._294 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808D308
+ ldrb r0, [r5]
+ bl debug_sub_808D358
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._291 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._292 @cond_branch
+._291:
+ mov r0, #0x0
+ b ._293
+._295:
+ .align 2, 0
+._294:
+ .word gDebug_0300070F
+._292:
+ bl CloseMenu
+ mov r0, #0x1
+._293:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D2BC
+
+ thumb_func_start debug_sub_808D308
+debug_sub_808D308:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._299 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._298 @cond_branch
+ ldr r0, ._299 + 4 @ gUnknown_Debug_083C19C6
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._297 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._298
+._300:
+ .align 2, 0
+._299:
+ .word gMain
+ .word gUnknown_Debug_083C19C6
+._297:
+ add r0, r4, #0
+ bl FlagClear
+._298:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808D308
+
+ thumb_func_start debug_sub_808D358
+debug_sub_808D358:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._303 @ gUnknown_Debug_083C19BC
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._301 @cond_branch
+ ldr r0, ._303 + 4 @ gUnknown_Debug_083C19C6
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._302:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._302 @cond_branch
+._301:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._304:
+ .align 2, 0
+._303:
+ .word gUnknown_Debug_083C19BC
+ .word gUnknown_Debug_083C19C6
+
+ thumb_func_end debug_sub_808D358
+
+ thumb_func_start debug_sub_808D3BC
+debug_sub_808D3BC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._305 @ gUnknown_Debug_083C105C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._305 + 4 @ gMenuCallback
+ ldr r0, ._305 + 8 @ debug_sub_808D40C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._306:
+ .align 2, 0
+._305:
+ .word gUnknown_Debug_083C105C
+ .word gMenuCallback
+ .word debug_sub_808D40C+1
+
+ thumb_func_end debug_sub_808D3BC
+
+ thumb_func_start debug_sub_808D40C
+debug_sub_808D40C:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._307 @cond_branch
+ mov r0, #0x0
+ b ._310
+._307:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._309 @cond_branch
+ ldr r2, ._311 @ gMenuCallback
+ ldr r0, ._311 + 4 @ gUnknown_Debug_083C105C
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._310
+._312:
+ .align 2, 0
+._311:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C105C
+._309:
+ bl CloseMenu
+ mov r0, #0x1
+._310:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D40C
+
+ thumb_func_start debug_sub_808D450
+debug_sub_808D450:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._313 @ gUnknown_Debug_083C10BD
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r0, ._313 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._313 + 8 @ gMenuCallback
+ ldr r0, ._313 + 12 @ debug_sub_808D500
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._314:
+ .align 2, 0
+._313:
+ .word gUnknown_Debug_083C10BD
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D500+1
+
+ thumb_func_end debug_sub_808D450
+
+ thumb_func_start debug_sub_808D4A8
+debug_sub_808D4A8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._315 @ gUnknown_Debug_083C1149
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._315 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._315 + 8 @ gMenuCallback
+ ldr r0, ._315 + 12 @ debug_sub_808D500
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._316:
+ .align 2, 0
+._315:
+ .word gUnknown_Debug_083C1149
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D500+1
+
+ thumb_func_end debug_sub_808D4A8
+
+ thumb_func_start debug_sub_808D500
+debug_sub_808D500:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._320 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808D54C
+ ldrb r0, [r5]
+ bl debug_sub_808D59C
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._317 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._318 @cond_branch
+._317:
+ mov r0, #0x0
+ b ._319
+._321:
+ .align 2, 0
+._320:
+ .word gDebug_0300070F
+._318:
+ bl CloseMenu
+ mov r0, #0x1
+._319:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D500
+
+ thumb_func_start debug_sub_808D54C
+debug_sub_808D54C:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._325 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._324 @cond_branch
+ ldr r0, ._325 + 4 @ gUnknown_Debug_083C1196
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._323 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._324
+._326:
+ .align 2, 0
+._325:
+ .word gMain
+ .word gUnknown_Debug_083C1196
+._323:
+ add r0, r4, #0
+ bl FlagClear
+._324:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808D54C
+
+ thumb_func_start debug_sub_808D59C
+debug_sub_808D59C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._329 @ gUnknown_Debug_083C1194
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._327 @cond_branch
+ ldr r0, ._329 + 4 @ gUnknown_Debug_083C1196
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._328:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._328 @cond_branch
+._327:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._330:
+ .align 2, 0
+._329:
+ .word gUnknown_Debug_083C1194
+ .word gUnknown_Debug_083C1196
+
+ thumb_func_end debug_sub_808D59C
+
+ thumb_func_start debug_sub_808D600
+debug_sub_808D600:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._331 @ gUnknown_Debug_083C11CC
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._331 + 4 @ gMenuCallback
+ ldr r0, ._331 + 8 @ debug_sub_808D650
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._332:
+ .align 2, 0
+._331:
+ .word gUnknown_Debug_083C11CC
+ .word gMenuCallback
+ .word debug_sub_808D650+1
+
+ thumb_func_end debug_sub_808D600
+
+ thumb_func_start debug_sub_808D650
+debug_sub_808D650:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._333 @cond_branch
+ mov r0, #0x0
+ b ._336
+._333:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._335 @cond_branch
+ ldr r2, ._337 @ gMenuCallback
+ ldr r0, ._337 + 4 @ gUnknown_Debug_083C11CC
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._336
+._338:
+ .align 2, 0
+._337:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C11CC
+._335:
+ bl CloseMenu
+ mov r0, #0x1
+._336:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D650
+
+ thumb_func_start debug_sub_808D694
+debug_sub_808D694:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._339 @ gUnknown_Debug_083C1212
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r0, ._339 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._339 + 8 @ gMenuCallback
+ ldr r0, ._339 + 12 @ debug_sub_808D744
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._340:
+ .align 2, 0
+._339:
+ .word gUnknown_Debug_083C1212
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D744+1
+
+ thumb_func_end debug_sub_808D694
+
+ thumb_func_start debug_sub_808D6EC
+debug_sub_808D6EC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._341 @ gUnknown_Debug_083C1288
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._341 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._341 + 8 @ gMenuCallback
+ ldr r0, ._341 + 12 @ debug_sub_808D744
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._342:
+ .align 2, 0
+._341:
+ .word gUnknown_Debug_083C1288
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D744+1
+
+ thumb_func_end debug_sub_808D6EC
+
+ thumb_func_start debug_sub_808D744
+debug_sub_808D744:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._346 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808D790
+ ldrb r0, [r5]
+ bl debug_sub_808D7E0
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._343 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._344 @cond_branch
+._343:
+ mov r0, #0x0
+ b ._345
+._347:
+ .align 2, 0
+._346:
+ .word gDebug_0300070F
+._344:
+ bl CloseMenu
+ mov r0, #0x1
+._345:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D744
+
+ thumb_func_start debug_sub_808D790
+debug_sub_808D790:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._351 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._350 @cond_branch
+ ldr r0, ._351 + 4 @ gUnknown_Debug_083C12D2
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._349 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._350
+._352:
+ .align 2, 0
+._351:
+ .word gMain
+ .word gUnknown_Debug_083C12D2
+._349:
+ add r0, r4, #0
+ bl FlagClear
+._350:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808D790
+
+ thumb_func_start debug_sub_808D7E0
+debug_sub_808D7E0:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._355 @ gUnknown_Debug_083C12D0
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._353 @cond_branch
+ ldr r0, ._355 + 4 @ gUnknown_Debug_083C12D2
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._354:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._354 @cond_branch
+._353:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._356:
+ .align 2, 0
+._355:
+ .word gUnknown_Debug_083C12D0
+ .word gUnknown_Debug_083C12D2
+
+ thumb_func_end debug_sub_808D7E0
+
+ thumb_func_start debug_sub_808D844
+debug_sub_808D844:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x3
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._357 @ gUnknown_Debug_083C1A78
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x1
+ bl InitMenu
+ ldr r1, ._357 + 4 @ gMenuCallback
+ ldr r0, ._357 + 8 @ debug_sub_808D894
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._358:
+ .align 2, 0
+._357:
+ .word gUnknown_Debug_083C1A78
+ .word gMenuCallback
+ .word debug_sub_808D894+1
+
+ thumb_func_end debug_sub_808D844
+
+ thumb_func_start debug_sub_808D894
+debug_sub_808D894:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r3, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r3, r0
+ bne ._359 @cond_branch
+ mov r0, #0x0
+ b ._362
+._359:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r3, r0
+ beq ._361 @cond_branch
+ ldr r2, ._363 @ gMenuCallback
+ ldr r1, ._363 + 4 @ gUnknown_Debug_083C1A78
+ lsl r0, r3, #0x3
+ add r0, r0, r1
+ ldr r0, [r0, #0x4]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._362
+._364:
+ .align 2, 0
+._363:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C1A78
+._361:
+ bl CloseMenu
+ mov r0, #0x1
+._362:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D894
+
+ thumb_func_start debug_sub_808D8D8
+debug_sub_808D8D8:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._365 @ gUnknown_Debug_083C1A9C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r0, ._365 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._365 + 8 @ gMenuCallback
+ ldr r0, ._365 + 12 @ debug_sub_808D930
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._366:
+ .align 2, 0
+._365:
+ .word gUnknown_Debug_083C1A9C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D930+1
+
+ thumb_func_end debug_sub_808D8D8
+
+ thumb_func_start debug_sub_808D930
+debug_sub_808D930:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._370 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808D97C
+ ldrb r0, [r5]
+ bl debug_sub_808D9CC
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._367 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._368 @cond_branch
+._367:
+ mov r0, #0x0
+ b ._369
+._371:
+ .align 2, 0
+._370:
+ .word gDebug_0300070F
+._368:
+ bl CloseMenu
+ mov r0, #0x1
+._369:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D930
+
+ thumb_func_start debug_sub_808D97C
+debug_sub_808D97C:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._375 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._374 @cond_branch
+ ldr r0, ._375 + 4 @ gUnknown_Debug_083C1AAE
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._373 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._374
+._376:
+ .align 2, 0
+._375:
+ .word gMain
+ .word gUnknown_Debug_083C1AAE
+._373:
+ add r0, r4, #0
+ bl FlagClear
+._374:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808D97C
+
+ thumb_func_start debug_sub_808D9CC
+debug_sub_808D9CC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._379 @ gUnknown_Debug_083C1AAC
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._377 @cond_branch
+ ldr r0, ._379 + 4 @ gUnknown_Debug_083C1AAE
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._378:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._378 @cond_branch
+._377:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._380:
+ .align 2, 0
+._379:
+ .word gUnknown_Debug_083C1AAC
+ .word gUnknown_Debug_083C1AAE
+
+ thumb_func_end debug_sub_808D9CC
+
+ thumb_func_start debug_sub_808DA30
+debug_sub_808DA30:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x3
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._381 @ gUnknown_Debug_083C103A
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x1
+ bl InitMenu
+ ldr r1, ._381 + 4 @ gMenuCallback
+ ldr r0, ._381 + 8 @ debug_sub_808DA80
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._382:
+ .align 2, 0
+._381:
+ .word gUnknown_Debug_083C103A
+ .word gMenuCallback
+ .word debug_sub_808DA80+1
+
+ thumb_func_end debug_sub_808DA30
+
+ thumb_func_start debug_sub_808DA80
+debug_sub_808DA80:
+ push {r4, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ bl debug_sub_808DAD4
+ bl debug_sub_808DABC
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._383 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._384 @cond_branch
+._383:
+ mov r0, #0x0
+ b ._385
+._384:
+ bl CloseMenu
+ mov r0, #0x1
+._385:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808DA80
+
+ thumb_func_start debug_sub_808DABC
+debug_sub_808DABC:
+ push {lr}
+ ldr r0, ._386 @ gSpecialVar_Result
+ ldrh r2, [r0]
+ mov r0, #0x18
+ mov r1, #0x1
+ bl debug_sub_808F31C
+ pop {r0}
+ bx r0
+._387:
+ .align 2, 0
+._386:
+ .word gSpecialVar_Result
+
+ thumb_func_end debug_sub_808DABC
+
+ thumb_func_start debug_sub_808DAD4
+debug_sub_808DAD4:
+ push {lr}
+ ldr r0, ._390 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._388 @cond_branch
+ mov r2, #0x1
+ b ._389
+._391:
+ .align 2, 0
+._390:
+ .word gMain
+._388:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._392 @cond_branch
+ ldr r2, ._393 @ 0xffff
+._389:
+ ldr r1, ._393 + 4 @ gSpecialVar_Result
+ ldrh r0, [r1]
+ add r0, r2, r0
+ strh r0, [r1]
+._392:
+ pop {r0}
+ bx r0
+._394:
+ .align 2, 0
+._393:
+ .word 0xffff
+ .word gSpecialVar_Result
+
+ thumb_func_end debug_sub_808DAD4
+
+ thumb_func_start debug_sub_808DB0C
+debug_sub_808DB0C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._395 @ gUnknown_Debug_083C3D08
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._395 + 4 @ gMenuCallback
+ ldr r0, ._395 + 8 @ debug_sub_808DB5C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._396:
+ .align 2, 0
+._395:
+ .word gUnknown_Debug_083C3D08
+ .word gMenuCallback
+ .word debug_sub_808DB5C+1
+
+ thumb_func_end debug_sub_808DB0C
+
+ thumb_func_start debug_sub_808DB5C
+debug_sub_808DB5C:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._397 @cond_branch
+ mov r0, #0x0
+ b ._400
+._397:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._399 @cond_branch
+ ldr r2, ._401 @ gMenuCallback
+ ldr r0, ._401 + 4 @ gUnknown_Debug_083C3D08
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._400
+._402:
+ .align 2, 0
+._401:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C3D08
+._399:
+ bl CloseMenu
+ mov r0, #0x1
+._400:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808DB5C
+
+ thumb_func_start debug_sub_808DBA0
+debug_sub_808DBA0:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x11
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._403 @ gUnknown_Debug_083C432C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x8
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x8
+ bl InitMenu
+ ldr r0, ._403 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._403 + 8 @ gMenuCallback
+ ldr r0, ._403 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._404:
+ .align 2, 0
+._403:
+ .word gUnknown_Debug_083C432C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DBA0
+
+ thumb_func_start debug_sub_808DBF8
+debug_sub_808DBF8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._405 @ gUnknown_Debug_083C436C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._405 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._405 + 8 @ gMenuCallback
+ ldr r0, ._405 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._406:
+ .align 2, 0
+._405:
+ .word gUnknown_Debug_083C436C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DBF8
+
+ thumb_func_start debug_sub_808DC50
+debug_sub_808DC50:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._407 @ gUnknown_Debug_083C43B4
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._407 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._407 + 8 @ gMenuCallback
+ ldr r0, ._407 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._408:
+ .align 2, 0
+._407:
+ .word gUnknown_Debug_083C43B4
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DC50
+
+ thumb_func_start debug_sub_808DCA8
+debug_sub_808DCA8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._409 @ gUnknown_Debug_083C43FC
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._409 + 4 @ gDebug_0300070F
+ mov r0, #0x3
+ strb r0, [r1]
+ ldr r1, ._409 + 8 @ gMenuCallback
+ ldr r0, ._409 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._410:
+ .align 2, 0
+._409:
+ .word gUnknown_Debug_083C43FC
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DCA8
+
+ thumb_func_start debug_sub_808DD00
+debug_sub_808DD00:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._411 @ gUnknown_Debug_083C4444
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._411 + 4 @ gDebug_0300070F
+ mov r0, #0x4
+ strb r0, [r1]
+ ldr r1, ._411 + 8 @ gMenuCallback
+ ldr r0, ._411 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._412:
+ .align 2, 0
+._411:
+ .word gUnknown_Debug_083C4444
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DD00
+
+ thumb_func_start debug_sub_808DD58
+debug_sub_808DD58:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._413 @ gUnknown_Debug_083C448C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._413 + 4 @ gDebug_0300070F
+ mov r0, #0x5
+ strb r0, [r1]
+ ldr r1, ._413 + 8 @ gMenuCallback
+ ldr r0, ._413 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._414:
+ .align 2, 0
+._413:
+ .word gUnknown_Debug_083C448C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DD58
+
+ thumb_func_start debug_sub_808DDB0
+debug_sub_808DDB0:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._415 @ gUnknown_Debug_83C44C4
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._415 + 4 @ gDebug_0300070F
+ mov r0, #0x6
+ strb r0, [r1]
+ ldr r1, ._415 + 8 @ gMenuCallback
+ ldr r0, ._415 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._416:
+ .align 2, 0
+._415:
+ .word gUnknown_Debug_83C44C4
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DDB0
+
+ thumb_func_start debug_sub_808DE08
+debug_sub_808DE08:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._417 @ gUnknown_Debug_83C44EC
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._417 + 4 @ gDebug_0300070F
+ mov r0, #0x7
+ strb r0, [r1]
+ ldr r1, ._417 + 8 @ gMenuCallback
+ ldr r0, ._417 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._418:
+ .align 2, 0
+._417:
+ .word gUnknown_Debug_83C44EC
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DE08
+
+ thumb_func_start debug_sub_808DE60
+debug_sub_808DE60:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._419 @ gUnknown_Debug_083C4534
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._419 + 4 @ gDebug_0300070F
+ mov r0, #0x8
+ strb r0, [r1]
+ ldr r1, ._419 + 8 @ gMenuCallback
+ ldr r0, ._419 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._420:
+ .align 2, 0
+._419:
+ .word gUnknown_Debug_083C4534
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DE60
+
+ thumb_func_start debug_sub_808DEB8
+debug_sub_808DEB8:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._424 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808DF64
+ ldrb r0, [r5]
+ bl debug_sub_808DF04
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._421 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._422 @cond_branch
+._421:
+ mov r0, #0x0
+ b ._423
+._425:
+ .align 2, 0
+._424:
+ .word gDebug_0300070F
+._422:
+ bl CloseMenu
+ mov r0, #0x1
+._423:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808DEB8
+
+ thumb_func_start debug_sub_808DF04
+debug_sub_808DF04:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._428 @ gUnknown_Debug_083C457C
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._426 @cond_branch
+ ldr r0, ._428 + 4 @ gUnknown_Debug_083C4586
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._427:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl VarGet
+ add r2, r0, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ mov r0, #0x18
+ add r1, r4, #0
+ bl debug_sub_808F31C
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._427 @cond_branch
+._426:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._429:
+ .align 2, 0
+._428:
+ .word gUnknown_Debug_083C457C
+ .word gUnknown_Debug_083C4586
+
+ thumb_func_end debug_sub_808DF04
+
+ thumb_func_start debug_sub_808DF64
+debug_sub_808DF64:
+ push {r4, r5, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._432 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._430 @cond_branch
+ mov r5, #0x1
+ b ._431
+._433:
+ .align 2, 0
+._432:
+ .word gMain
+._430:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._434 @cond_branch
+ ldr r5, ._435 @ 0xffff
+._431:
+ ldr r1, ._435 + 4 @ gUnknown_Debug_083C4586
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ add r0, r0, r3
+ lsl r0, r0, #0x1
+ add r0, r0, r1
+ ldrh r4, [r0]
+ add r0, r4, #0
+ bl VarGet
+ add r1, r0, #0
+ add r1, r5, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r4, #0
+ bl VarSet
+._434:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._436:
+ .align 2, 0
+._435:
+ .word 0xffff
+ .word gUnknown_Debug_083C4586
+
+ thumb_func_end debug_sub_808DF64
+
+ thumb_func_start debug_sub_808DFC0
+debug_sub_808DFC0:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._437 @ gUnknown_Debug_083C377C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._437 + 4 @ gMenuCallback
+ ldr r0, ._437 + 8 @ debug_sub_808E010
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._438:
+ .align 2, 0
+._437:
+ .word gUnknown_Debug_083C377C
+ .word gMenuCallback
+ .word debug_sub_808E010+1
+
+ thumb_func_end debug_sub_808DFC0
+
+ thumb_func_start debug_sub_808E010
+debug_sub_808E010:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._439 @cond_branch
+ mov r0, #0x0
+ b ._442
+._439:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._441 @cond_branch
+ ldr r2, ._443 @ gMenuCallback
+ ldr r0, ._443 + 4 @ gUnknown_Debug_083C377C
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._442
+._444:
+ .align 2, 0
+._443:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C377C
+._441:
+ bl CloseMenu
+ mov r0, #0x1
+._442:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E010
+
+ thumb_func_start debug_sub_808E054
+debug_sub_808E054:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._445 @ gUnknown_Debug_083C3AA0
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r0, ._445 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._445 + 8 @ gMenuCallback
+ ldr r0, ._445 + 12 @ debug_sub_808E264
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._446:
+ .align 2, 0
+._445:
+ .word gUnknown_Debug_083C3AA0
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E264+1
+
+ thumb_func_end debug_sub_808E054
+
+ thumb_func_start debug_sub_808E0AC
+debug_sub_808E0AC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._447 @ gUnknown_Debug_83C3AE0
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x5
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x5
+ bl InitMenu
+ ldr r1, ._447 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._447 + 8 @ gMenuCallback
+ ldr r0, ._447 + 12 @ debug_sub_808E264
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._448:
+ .align 2, 0
+._447:
+ .word gUnknown_Debug_83C3AE0
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E264+1
+
+ thumb_func_end debug_sub_808E0AC
+
+ thumb_func_start debug_sub_808E104
+debug_sub_808E104:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._449 @ gUnknown_Debug_83C3B28
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._449 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._449 + 8 @ gMenuCallback
+ ldr r0, ._449 + 12 @ debug_sub_808E264
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._450:
+ .align 2, 0
+._449:
+ .word gUnknown_Debug_83C3B28
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E264+1
+
+ thumb_func_end debug_sub_808E104
+
+ thumb_func_start debug_sub_808E15C
+debug_sub_808E15C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._451 @ gUnknown_Debug_83C3B70
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._451 + 4 @ gDebug_0300070F
+ mov r0, #0x3
+ strb r0, [r1]
+ ldr r1, ._451 + 8 @ gMenuCallback
+ ldr r0, ._451 + 12 @ debug_sub_808E264
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._452:
+ .align 2, 0
+._451:
+ .word gUnknown_Debug_83C3B70
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E264+1
+
+ thumb_func_end debug_sub_808E15C
+
+ thumb_func_start debug_sub_808E1B4
+debug_sub_808E1B4:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._453 @ gUnknown_Debug_83C3BB8
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._453 + 4 @ gDebug_0300070F
+ mov r0, #0x4
+ strb r0, [r1]
+ ldr r1, ._453 + 8 @ gMenuCallback
+ ldr r0, ._453 + 12 @ debug_sub_808E264
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._454:
+ .align 2, 0
+._453:
+ .word gUnknown_Debug_83C3BB8
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E264+1
+
+ thumb_func_end debug_sub_808E1B4
+
+ thumb_func_start debug_sub_808E20C
+debug_sub_808E20C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._455 @ gUnknown_Debug_83C3C00
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._455 + 4 @ gDebug_0300070F
+ mov r0, #0x5
+ strb r0, [r1]
+ ldr r1, ._455 + 8 @ gMenuCallback
+ ldr r0, ._455 + 12 @ debug_sub_808E264
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._456:
+ .align 2, 0
+._455:
+ .word gUnknown_Debug_83C3C00
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E264+1
+
+ thumb_func_end debug_sub_808E20C
+
+ thumb_func_start debug_sub_808E264
+debug_sub_808E264:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._460 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808E310
+ ldrb r0, [r5]
+ bl debug_sub_808E2B0
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._457 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._458 @cond_branch
+._457:
+ mov r0, #0x0
+ b ._459
+._461:
+ .align 2, 0
+._460:
+ .word gDebug_0300070F
+._458:
+ bl CloseMenu
+ mov r0, #0x1
+._459:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E264
+
+ thumb_func_start debug_sub_808E2B0
+debug_sub_808E2B0:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._464 @ gUnknown_Debug_083C3C48
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._462 @cond_branch
+ ldr r0, ._464 + 4 @ gUnknown_Debug_83C3C4E
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._463:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl VarGet
+ add r2, r0, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ mov r0, #0x18
+ add r1, r4, #0
+ bl debug_sub_808F31C
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._463 @cond_branch
+._462:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._465:
+ .align 2, 0
+._464:
+ .word gUnknown_Debug_083C3C48
+ .word gUnknown_Debug_83C3C4E
+
+ thumb_func_end debug_sub_808E2B0
+
+ thumb_func_start debug_sub_808E310
+debug_sub_808E310:
+ push {r4, r5, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._468 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._466 @cond_branch
+ mov r5, #0x1
+ b ._467
+._469:
+ .align 2, 0
+._468:
+ .word gMain
+._466:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._470 @cond_branch
+ ldr r5, ._471 @ 0xffff
+._467:
+ ldr r1, ._471 + 4 @ gUnknown_Debug_83C3C4E
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ add r0, r0, r3
+ lsl r0, r0, #0x1
+ add r0, r0, r1
+ ldrh r4, [r0]
+ add r0, r4, #0
+ bl VarGet
+ add r1, r0, #0
+ add r1, r5, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r4, #0
+ bl VarSet
+._470:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._472:
+ .align 2, 0
+._471:
+ .word 0xffff
+ .word gUnknown_Debug_83C3C4E
+
+ thumb_func_end debug_sub_808E310
+
+ thumb_func_start debug_sub_808E36C
+debug_sub_808E36C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._473 @ gUnknown_Debug_083C32AC
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x5
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x5
+ bl InitMenu
+ ldr r1, ._473 + 4 @ gMenuCallback
+ ldr r0, ._473 + 8 @ debug_sub_808E3BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._474:
+ .align 2, 0
+._473:
+ .word gUnknown_Debug_083C32AC
+ .word gMenuCallback
+ .word debug_sub_808E3BC+1
+
+ thumb_func_end debug_sub_808E36C
+
+ thumb_func_start debug_sub_808E3BC
+debug_sub_808E3BC:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._475 @cond_branch
+ mov r0, #0x0
+ b ._478
+._475:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._477 @cond_branch
+ ldr r2, ._479 @ gMenuCallback
+ ldr r0, ._479 + 4 @ gUnknown_Debug_083C32AC
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._478
+._480:
+ .align 2, 0
+._479:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C32AC
+._477:
+ bl CloseMenu
+ mov r0, #0x1
+._478:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E3BC
+
+ thumb_func_start debug_sub_808E400
+debug_sub_808E400:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._481 @ gUnknown_Debug_083C347C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x3
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x3
+ bl InitMenu
+ ldr r0, ._481 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._481 + 8 @ gMenuCallback
+ ldr r0, ._481 + 12 @ debug_sub_808E5B8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._482:
+ .align 2, 0
+._481:
+ .word gUnknown_Debug_083C347C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E5B8+1
+
+ thumb_func_end debug_sub_808E400
+
+ thumb_func_start debug_sub_808E458
+debug_sub_808E458:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._483 @ gUnknown_Debug_083C3494
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._483 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._483 + 8 @ gMenuCallback
+ ldr r0, ._483 + 12 @ debug_sub_808E5B8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._484:
+ .align 2, 0
+._483:
+ .word gUnknown_Debug_083C3494
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E5B8+1
+
+ thumb_func_end debug_sub_808E458
+
+ thumb_func_start debug_sub_808E4B0
+debug_sub_808E4B0:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._485 @ gUnknown_Debug_083C34A4
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._485 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._485 + 8 @ gMenuCallback
+ ldr r0, ._485 + 12 @ debug_sub_808E5B8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._486:
+ .align 2, 0
+._485:
+ .word gUnknown_Debug_083C34A4
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E5B8+1
+
+ thumb_func_end debug_sub_808E4B0
+
+ thumb_func_start debug_sub_808E508
+debug_sub_808E508:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._487 @ gUnknown_Debug_083C34D4
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._487 + 4 @ gDebug_0300070F
+ mov r0, #0x3
+ strb r0, [r1]
+ ldr r1, ._487 + 8 @ gMenuCallback
+ ldr r0, ._487 + 12 @ debug_sub_808E5B8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._488:
+ .align 2, 0
+._487:
+ .word gUnknown_Debug_083C34D4
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E5B8+1
+
+ thumb_func_end debug_sub_808E508
+
+ thumb_func_start debug_sub_808E560
+debug_sub_808E560:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._489 @ gUnknown_Debug_083C351C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x5
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x5
+ bl InitMenu
+ ldr r1, ._489 + 4 @ gDebug_0300070F
+ mov r0, #0x4
+ strb r0, [r1]
+ ldr r1, ._489 + 8 @ gMenuCallback
+ ldr r0, ._489 + 12 @ debug_sub_808E5B8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._490:
+ .align 2, 0
+._489:
+ .word gUnknown_Debug_083C351C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E5B8+1
+
+ thumb_func_end debug_sub_808E560
+
+ thumb_func_start debug_sub_808E5B8
+debug_sub_808E5B8:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._494 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808E604
+ ldrb r0, [r5]
+ bl debug_sub_808E660
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._491 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._492 @cond_branch
+._491:
+ mov r0, #0x0
+ b ._493
+._495:
+ .align 2, 0
+._494:
+ .word gDebug_0300070F
+._492:
+ bl CloseMenu
+ mov r0, #0x1
+._493:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E5B8
+
+ thumb_func_start debug_sub_808E604
+debug_sub_808E604:
+ push {r4, r5, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._498 @ gMain
+ ldrh r1, [r0, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._496 @cond_branch
+ mov r5, #0x1
+ b ._497
+._499:
+ .align 2, 0
+._498:
+ .word gMain
+._496:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._500 @cond_branch
+ ldr r5, ._501 @ 0xffff
+._497:
+ ldr r1, ._501 + 4 @ gUnknown_Debug_083C354A
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ add r0, r0, r3
+ lsl r0, r0, #0x1
+ add r0, r0, r1
+ ldrh r4, [r0]
+ add r0, r4, #0
+ bl VarGet
+ add r1, r0, #0
+ add r1, r5, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r4, #0
+ bl VarSet
+._500:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._502:
+ .align 2, 0
+._501:
+ .word 0xffff
+ .word gUnknown_Debug_083C354A
+
+ thumb_func_end debug_sub_808E604
+
+ thumb_func_start debug_sub_808E660
+debug_sub_808E660:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._505 @ gUnknown_Debug_083C3544
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._503 @cond_branch
+ ldr r0, ._505 + 4 @ gUnknown_Debug_083C354A
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._504:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl VarGet
+ add r2, r0, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ mov r0, #0x18
+ add r1, r4, #0
+ bl debug_sub_808F31C
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._504 @cond_branch
+._503:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._506:
+ .align 2, 0
+._505:
+ .word gUnknown_Debug_083C3544
+ .word gUnknown_Debug_083C354A
+
+ thumb_func_end debug_sub_808E660
+
+ thumb_func_start debug_sub_808E6C0
+debug_sub_808E6C0:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._507 @ gUnknown_Debug_083C4644
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._507 + 4 @ gMenuCallback
+ ldr r0, ._507 + 8 @ debug_sub_808E710
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._508:
+ .align 2, 0
+._507:
+ .word gUnknown_Debug_083C4644
+ .word gMenuCallback
+ .word debug_sub_808E710+1
+
+ thumb_func_end debug_sub_808E6C0
+
+ thumb_func_start debug_sub_808E710
+debug_sub_808E710:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._509 @cond_branch
+ mov r0, #0x0
+ b ._512
+._509:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._511 @cond_branch
+ ldr r2, ._513 @ gMenuCallback
+ ldr r0, ._513 + 4 @ gUnknown_Debug_083C4644
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._512
+._514:
+ .align 2, 0
+._513:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C4644
+._511:
+ bl CloseMenu
+ mov r0, #0x1
+._512:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E710
+
+ thumb_func_start debug_sub_808E754
+debug_sub_808E754:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._515 @ gUnknown_Debug_083C470C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r0, ._515 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._515 + 8 @ gMenuCallback
+ ldr r0, ._515 + 12 @ debug_sub_808E804
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._516:
+ .align 2, 0
+._515:
+ .word gUnknown_Debug_083C470C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E804+1
+
+ thumb_func_end debug_sub_808E754
+
+ thumb_func_start debug_sub_808E7AC
+debug_sub_808E7AC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._517 @ gUnknown_Debug_083C4754C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._517 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._517 + 8 @ gMenuCallback
+ ldr r0, ._517 + 12 @ debug_sub_808E804
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._518:
+ .align 2, 0
+._517:
+ .word gUnknown_Debug_083C4754C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E804+1
+
+ thumb_func_end debug_sub_808E7AC
+
+ thumb_func_start debug_sub_808E804
+debug_sub_808E804:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._522 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808E850
+ ldrb r0, [r5]
+ bl debug_sub_808E8AC
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._519 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._520 @cond_branch
+._519:
+ mov r0, #0x0
+ b ._521
+._523:
+ .align 2, 0
+._522:
+ .word gDebug_0300070F
+._520:
+ bl CloseMenu
+ mov r0, #0x1
+._521:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E804
+
+ thumb_func_start debug_sub_808E850
+debug_sub_808E850:
+ push {r4, r5, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._526 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._524 @cond_branch
+ mov r5, #0x1
+ b ._525
+._527:
+ .align 2, 0
+._526:
+ .word gMain
+._524:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._528 @cond_branch
+ ldr r5, ._529 @ 0xffff
+._525:
+ ldr r1, ._529 + 4 @ gUnknown_Debug_083C478E
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ add r0, r0, r3
+ lsl r0, r0, #0x1
+ add r0, r0, r1
+ ldrh r4, [r0]
+ add r0, r4, #0
+ bl VarGet
+ add r1, r0, #0
+ add r1, r5, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r4, #0
+ bl VarSet
+._528:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._530:
+ .align 2, 0
+._529:
+ .word 0xffff
+ .word gUnknown_Debug_083C478E
+
+ thumb_func_end debug_sub_808E850
+
+ thumb_func_start debug_sub_808E8AC
+debug_sub_808E8AC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._533 @ gUnknown_Debug_083C478C
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._531 @cond_branch
+ ldr r0, ._533 + 4 @ gUnknown_Debug_083C478E
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._532:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl VarGet
+ add r2, r0, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ mov r0, #0x18
+ add r1, r4, #0
+ bl debug_sub_808F31C
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._532 @cond_branch
+._531:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._534:
+ .align 2, 0
+._533:
+ .word gUnknown_Debug_083C478C
+ .word gUnknown_Debug_083C478E
+
+ thumb_func_end debug_sub_808E8AC
+
+ thumb_func_start debug_sub_808E90C
+debug_sub_808E90C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._535 @ gUnknown_Debug_083C35C4
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._535 + 4 @ gMenuCallback
+ ldr r0, ._535 + 8 @ debug_sub_808E95C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._536:
+ .align 2, 0
+._535:
+ .word gUnknown_Debug_083C35C4
+ .word gMenuCallback
+ .word debug_sub_808E95C+1
+
+ thumb_func_end debug_sub_808E90C
+
+ thumb_func_start debug_sub_808E95C
+debug_sub_808E95C:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._537 @cond_branch
+ mov r0, #0x0
+ b ._540
+._537:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._539 @cond_branch
+ ldr r2, ._541 @ gMenuCallback
+ ldr r0, ._541 + 4 @ gUnknown_Debug_083C35C4
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._540
+._542:
+ .align 2, 0
+._541:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C35C4
+._539:
+ bl CloseMenu
+ mov r0, #0x1
+._540:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E95C
+
+ thumb_func_start debug_sub_808E9A0
+debug_sub_808E9A0:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._543 @ gUnknown_Debug_083C369C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r0, ._543 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._543 + 8 @ gMenuCallback
+ ldr r0, ._543 + 12 @ debug_sub_808EA50
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._544:
+ .align 2, 0
+._543:
+ .word gUnknown_Debug_083C369C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808EA50+1
+
+ thumb_func_end debug_sub_808E9A0
+
+ thumb_func_start debug_sub_808E9F8
+debug_sub_808E9F8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._545 @ gUnknown_Debug_083C36E4
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._545 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._545 + 8 @ gMenuCallback
+ ldr r0, ._545 + 12 @ debug_sub_808EA50
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._546:
+ .align 2, 0
+._545:
+ .word gUnknown_Debug_083C36E4
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808EA50+1
+
+ thumb_func_end debug_sub_808E9F8
+
+ thumb_func_start debug_sub_808EA50
+debug_sub_808EA50:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._550 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808EAFC
+ ldrb r0, [r5]
+ bl debug_sub_808EA9C
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._547 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._548 @cond_branch
+._547:
+ mov r0, #0x0
+ b ._549
+._551:
+ .align 2, 0
+._550:
+ .word gDebug_0300070F
+._548:
+ bl CloseMenu
+ mov r0, #0x1
+._549:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808EA50
+
+ thumb_func_start debug_sub_808EA9C
+debug_sub_808EA9C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._554 @ gUnknown_Debug_083C371C
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._552 @cond_branch
+ ldr r0, ._554 + 4 @ gUnknown_Debug_083C371E
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._553:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl VarGet
+ add r2, r0, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ mov r0, #0x18
+ add r1, r4, #0
+ bl debug_sub_808F31C
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._553 @cond_branch
+._552:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._555:
+ .align 2, 0
+._554:
+ .word gUnknown_Debug_083C371C
+ .word gUnknown_Debug_083C371E
+
+ thumb_func_end debug_sub_808EA9C
+
+ thumb_func_start debug_sub_808EAFC
+debug_sub_808EAFC:
+ push {r4, r5, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._558 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._556 @cond_branch
+ mov r5, #0x1
+ b ._557
+._559:
+ .align 2, 0
+._558:
+ .word gMain
+._556:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._560 @cond_branch
+ ldr r5, ._561 @ 0xffff
+._557:
+ ldr r1, ._561 + 4 @ gUnknown_Debug_083C371E
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ add r0, r0, r3
+ lsl r0, r0, #0x1
+ add r0, r0, r1
+ ldrh r4, [r0]
+ add r0, r4, #0
+ bl VarGet
+ add r1, r0, #0
+ add r1, r5, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r4, #0
+ bl VarSet
+._560:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._562:
+ .align 2, 0
+._561:
+ .word 0xffff
+ .word gUnknown_Debug_083C371E
+
+ thumb_func_end debug_sub_808EAFC
+
+ thumb_func_start debug_sub_808EB58
+debug_sub_808EB58:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xc
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._563 @ gUnknown_Debug_083C47B2
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r3, ._563 + 4 @ gUnknown_Debug_083C47F0
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0x8
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x8
+ bl InitMenu
+ ldr r1, ._563 + 8 @ gMenuCallback
+ ldr r0, ._563 + 12 @ debug_sub_808EC10
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._564:
+ .align 2, 0
+._563:
+ .word gUnknown_Debug_083C47B2
+ .word gUnknown_Debug_083C47F0
+ .word gMenuCallback
+ .word debug_sub_808EC10+1
+
+ thumb_func_end debug_sub_808EB58
+
+ thumb_func_start debug_sub_808EBB4
+debug_sub_808EBB4:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xd
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._565 @ gUnknown_Debug_083C4830
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r3, ._565 + 4 @ gUnknown_Debug_083C4888
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0x5
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x5
+ bl InitMenu
+ ldr r1, ._565 + 8 @ gMenuCallback
+ ldr r0, ._565 + 12 @ debug_sub_808EC5C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._566:
+ .align 2, 0
+._565:
+ .word gUnknown_Debug_083C4830
+ .word gUnknown_Debug_083C4888
+ .word gMenuCallback
+ .word debug_sub_808EC5C+1
+
+ thumb_func_end debug_sub_808EBB4
+
+ thumb_func_start debug_sub_808EC10
+debug_sub_808EC10:
+ push {r4, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._568 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._568 @cond_branch
+ ldr r1, ._570 @ gSaveBlock1
+ lsl r0, r2, #0x18
+ asr r0, r0, #0x18
+ ldr r2, ._570 + 4 @ 0x13c8
+ add r1, r1, r2
+ strh r0, [r1]
+ bl CloseMenu
+ mov r0, #0x1
+ b ._569
+._571:
+ .align 2, 0
+._570:
+ .word gSaveBlock1
+ .word 0x13c8
+._568:
+ mov r0, #0x0
+._569:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808EC10
+
+ thumb_func_start debug_sub_808EC5C
+debug_sub_808EC5C:
+ push {r4, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._573 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._573 @cond_branch
+ ldr r0, ._575 @ 0x40a7
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x8
+ lsr r1, r1, #0x10
+ bl VarSet
+ bl CloseMenu
+ mov r0, #0x1
+ b ._574
+._576:
+ .align 2, 0
+._575:
+ .word 0x40a7
+._573:
+ mov r0, #0x0
+._574:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808EC5C
+
+ thumb_func_start debug_sub_808ECA4
+debug_sub_808ECA4:
+ push {lr}
+ add sp, sp, #0xfffffffc
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r1, ._577 @ gMenuCallback
+ ldr r0, ._577 + 4 @ debug_sub_808ECD0
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ pop {r1}
+ bx r1
+._578:
+ .align 2, 0
+._577:
+ .word gMenuCallback
+ .word debug_sub_808ECD0+1
+
+ thumb_func_end debug_sub_808ECA4
+
+ thumb_func_start debug_sub_808ECD0
+debug_sub_808ECD0:
+ push {lr}
+ bl UpdatePaletteFade
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._579 @cond_branch
+ mov r0, #0x0
+ b ._580
+._579:
+ bl CloseMenu
+ mov r0, #0x2
+ bl debug_sub_808F168
+ ldr r0, ._581 @ CB2_ContestPainting
+ bl SetMainCallback2
+ ldr r1, ._581 + 4 @ gMain
+ ldr r0, ._581 + 8 @ debug_sub_808B868
+ str r0, [r1, #0x8]
+ mov r0, #0x1
+._580:
+ pop {r1}
+ bx r1
+._582:
+ .align 2, 0
+._581:
+ .word CB2_ContestPainting+1
+ .word gMain
+ .word debug_sub_808B868+1
+
+ thumb_func_end debug_sub_808ECD0
+
+ thumb_func_start TomomichiDebugMenu_Config
+TomomichiDebugMenu_Config:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_end TomomichiDebugMenu_Config
+
+ thumb_func_start debug_sub_808ED0C
+debug_sub_808ED0C:
+ push {lr}
+ ldr r2, ._590 @ gMain
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._584 @cond_branch
+ ldr r1, ._590 + 4 @ gDebug_03000700
+ ldrh r0, [r1]
+ cmp r0, #0x1
+ beq ._584 @cond_branch
+ sub r0, r0, #0x1
+ strh r0, [r1]
+._584:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._586 @cond_branch
+ ldr r3, ._590 + 4 @ gDebug_03000700
+ ldrh r1, [r3]
+ ldr r0, ._590 + 8 @ 0x19b
+ cmp r1, r0
+ beq ._586 @cond_branch
+ add r0, r1, #1
+ strh r0, [r3]
+._586:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._587 @cond_branch
+ ldr r1, ._590 + 4 @ gDebug_03000700
+ ldrh r0, [r1]
+ cmp r0, #0xa
+ bls ._588 @cond_branch
+ sub r0, r0, #0xa
+ b ._589
+._591:
+ .align 2, 0
+._590:
+ .word gMain
+ .word gDebug_03000700
+ .word 0x19b
+._588:
+ mov r0, #0x1
+._589:
+ strh r0, [r1]
+._587:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._592 @cond_branch
+ ldr r2, ._595 @ gDebug_03000700
+ ldrh r1, [r2]
+ ldr r0, ._595 + 4 @ 0x191
+ cmp r1, r0
+ bhi ._593 @cond_branch
+ add r0, r1, #0
+ add r0, r0, #0xa
+ b ._594
+._596:
+ .align 2, 0
+._595:
+ .word gDebug_03000700
+ .word 0x191
+._593:
+ ldr r1, ._597 @ 0x19b
+ add r0, r1, #0
+._594:
+ strh r0, [r2]
+._592:
+ pop {r0}
+ bx r0
+._598:
+ .align 2, 0
+._597:
+ .word 0x19b
+
+ thumb_func_end debug_sub_808ED0C
+
+ thumb_func_start debug_sub_808ED9C
+debug_sub_808ED9C:
+ push {lr}
+ ldr r2, ._606 @ gMain
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._600 @cond_branch
+ ldr r1, ._606 + 4 @ gDebug_03000708
+ ldr r0, [r1]
+ cmp r0, #0
+ beq ._600 @cond_branch
+ sub r0, r0, #0x1
+ str r0, [r1]
+._600:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._602 @cond_branch
+ ldr r3, ._606 + 4 @ gDebug_03000708
+ ldr r1, [r3]
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._602 @cond_branch
+ add r0, r1, #1
+ str r0, [r3]
+._602:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._603 @cond_branch
+ ldr r1, ._606 + 4 @ gDebug_03000708
+ ldr r0, [r1]
+ cmp r0, #0xf
+ bls ._604 @cond_branch
+ sub r0, r0, #0x10
+ b ._605
+._607:
+ .align 2, 0
+._606:
+ .word gMain
+ .word gDebug_03000708
+._604:
+ mov r0, #0x0
+._605:
+ str r0, [r1]
+._603:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._608 @cond_branch
+ ldr r3, ._611 @ gDebug_03000708
+ ldr r1, [r3]
+ mov r0, #0x11
+ neg r0, r0
+ cmp r1, r0
+ bhi ._609 @cond_branch
+ add r0, r1, #0
+ add r0, r0, #0x10
+ b ._610
+._612:
+ .align 2, 0
+._611:
+ .word gDebug_03000708
+._609:
+ mov r0, #0x1
+ neg r0, r0
+._610:
+ str r0, [r3]
+._608:
+ ldrh r2, [r2, #0x2e]
+ mov r1, #0xc0
+ lsl r1, r1, #0x2
+ add r0, r1, #0
+ and r0, r0, r2
+ cmp r0, r1
+ bne ._613 @cond_branch
+ ldr r1, ._614 @ gDebug_03000708
+ mov r0, #0x1
+ neg r0, r0
+ str r0, [r1]
+._613:
+ pop {r0}
+ bx r0
+._615:
+ .align 2, 0
+._614:
+ .word gDebug_03000708
+
+ thumb_func_end debug_sub_808ED9C
+
+ thumb_func_start debug_sub_808EE3C
+debug_sub_808EE3C:
+ push {lr}
+ ldr r2, ._622 @ gMain
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._617 @cond_branch
+ ldr r1, ._622 + 4 @ gDebug_0300070C
+ ldrb r0, [r1]
+ cmp r0, #0x1
+ beq ._617 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+._617:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._619 @cond_branch
+ ldr r1, ._622 + 4 @ gDebug_0300070C
+ ldrb r0, [r1]
+ cmp r0, #0x5
+ beq ._619 @cond_branch
+ add r0, r0, #0x1
+ strb r0, [r1]
+._619:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._620 @cond_branch
+ ldr r1, ._622 + 4 @ gDebug_0300070C
+ mov r0, #0x1
+ strb r0, [r1]
+._620:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._621 @cond_branch
+ ldr r1, ._622 + 4 @ gDebug_0300070C
+ mov r0, #0x5
+ strb r0, [r1]
+._621:
+ pop {r0}
+ bx r0
+._623:
+ .align 2, 0
+._622:
+ .word gMain
+ .word gDebug_0300070C
+
+ thumb_func_end debug_sub_808EE3C
+
+ thumb_func_start debug_sub_808EE9C
+debug_sub_808EE9C:
+ push {lr}
+ ldr r2, ._631 @ gMain
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._625 @cond_branch
+ ldr r1, ._631 + 4 @ gDebug_0300070D
+ ldrb r0, [r1]
+ cmp r0, #0x1
+ beq ._625 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+._625:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._627 @cond_branch
+ ldr r1, ._631 + 4 @ gDebug_0300070D
+ ldrb r0, [r1]
+ cmp r0, #0xf
+ beq ._627 @cond_branch
+ add r0, r0, #0x1
+ strb r0, [r1]
+._627:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._628 @cond_branch
+ ldr r1, ._631 + 4 @ gDebug_0300070D
+ ldrb r0, [r1]
+ cmp r0, #0xa
+ bls ._629 @cond_branch
+ sub r0, r0, #0xa
+ b ._630
+._632:
+ .align 2, 0
+._631:
+ .word gMain
+ .word gDebug_0300070D
+._629:
+ mov r0, #0x0
+._630:
+ strb r0, [r1]
+._628:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._633 @cond_branch
+ ldr r1, ._636 @ gDebug_0300070D
+ ldrb r0, [r1]
+ cmp r0, #0x5
+ bhi ._634 @cond_branch
+ add r0, r0, #0xa
+ b ._635
+._637:
+ .align 2, 0
+._636:
+ .word gDebug_0300070D
+._634:
+ mov r0, #0xf
+._635:
+ strb r0, [r1]
+._633:
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808EE9C
+
+ thumb_func_start debug_sub_808EF14
+debug_sub_808EF14:
+ push {lr}
+ ldr r2, ._645 @ gMain
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._639 @cond_branch
+ ldr r1, ._645 + 4 @ gDebug_0300070E
+ ldrb r0, [r1]
+ cmp r0, #0x1
+ beq ._639 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+._639:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._641 @cond_branch
+ ldr r1, ._645 + 4 @ gDebug_0300070E
+ ldrb r0, [r1]
+ cmp r0, #0xf
+ beq ._641 @cond_branch
+ add r0, r0, #0x1
+ strb r0, [r1]
+._641:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._642 @cond_branch
+ ldr r1, ._645 + 4 @ gDebug_0300070E
+ ldrb r0, [r1]
+ cmp r0, #0xa
+ bls ._643 @cond_branch
+ sub r0, r0, #0xa
+ b ._644
+._646:
+ .align 2, 0
+._645:
+ .word gMain
+ .word gDebug_0300070E
+._643:
+ mov r0, #0x0
+._644:
+ strb r0, [r1]
+._642:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._647 @cond_branch
+ ldr r1, ._650 @ gDebug_0300070E
+ ldrb r0, [r1]
+ cmp r0, #0x5
+ bhi ._648 @cond_branch
+ add r0, r0, #0xa
+ b ._649
+._651:
+ .align 2, 0
+._650:
+ .word gDebug_0300070E
+._648:
+ mov r0, #0xf
+._649:
+ strb r0, [r1]
+._647:
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808EF14
+
+ thumb_func_start debug_sub_808EF8C
+debug_sub_808EF8C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x2
+ bgt ._653 @cond_branch
+ cmp r6, #0
+ blt ._653 @cond_branch
+ mov r3, #0x0
+ ldr r0, ._656 @ gDebug_03000708
+ mov r8, r0
+ ldr r4, ._656 + 4 @ gDebug_03000710
+ mov r7, #0x7
+ mov r5, #0xf
+._658:
+ sub r0, r7, r3
+ lsl r0, r0, #0x2
+ mov r1, r8
+ ldr r2, [r1]
+ LSR r2, r0
+ and r2, r2, r5
+ cmp r2, #0x9
+ bhi ._654 @cond_branch
+ add r1, r3, r4
+ add r0, r2, #0
+ add r0, r0, #0xa1
+ b ._655
+._657:
+ .align 2, 0
+._656:
+ .word gDebug_03000708
+ .word gDebug_03000710
+._654:
+ add r1, r3, r4
+ add r0, r2, #0
+ sub r0, r0, #0x4f
+._655:
+ strb r0, [r1]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ cmp r3, #0x7
+ bls ._658 @cond_branch
+ ldr r0, ._666 @ gDebug_03000710
+ mov r1, #0xff
+ strb r1, [r0, #0x8]
+ mov r1, #0xc
+ mov r2, #0x5
+ bl Menu_PrintText
+._653:
+ mov r3, #0x0
+ ldr r7, ._666 @ gDebug_03000710
+ ldr r5, ._666 + 4 @ gDebug_03000700
+ ldr r2, ._666 + 8 @ gSpeciesNames
+ mov r8, r2
+ add r4, r7, #0
+ mov r2, #0x0
+._659:
+ add r1, r3, #1
+ add r0, r1, r4
+ strb r2, [r0]
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ cmp r3, #0x9
+ bls ._659 @cond_branch
+ mov r3, #0x0
+ ldrh r2, [r5]
+ mov r0, #0xb
+ add r1, r2, #0
+ mul r1, r1, r0
+ mov r2, r8
+ add r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._661 @cond_branch
+ ldr r0, ._666 @ gDebug_03000710
+ mov ip, r0
+ mov r5, r8
+ add r4, r1, #0
+._662:
+ add r1, r3, #1
+ mov r0, ip
+ add r2, r1, r0
+ add r0, r3, r4
+ add r0, r0, r5
+ ldrb r0, [r0]
+ strb r0, [r2]
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ add r0, r3, r4
+ add r0, r0, r5
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._661 @cond_branch
+ cmp r3, #0x9
+ bls ._662 @cond_branch
+._661:
+ mov r0, #0xb1
+ strb r0, [r7]
+ mov r0, #0xb2
+ strb r0, [r7, #0xb]
+ mov r0, #0xff
+ strb r0, [r7, #0xc]
+ cmp r6, #0x2
+ bgt ._664 @cond_branch
+ cmp r6, #0
+ blt ._664 @cond_branch
+ add r0, r7, #0
+ mov r1, #0x8
+ mov r2, #0x1
+ bl Menu_PrintText
+ b ._665
+._667:
+ .align 2, 0
+._666:
+ .word gDebug_03000710
+ .word gDebug_03000700
+ .word gSpeciesNames
+._664:
+ ldr r0, ._672 @ gDebug_03000710
+ mov r1, #0xc
+ mov r2, #0x1
+ bl Menu_PrintText
+._665:
+ ldr r5, ._672 @ gDebug_03000710
+ mov r0, #0xff
+ strb r0, [r5, #0x3]
+ ldr r4, ._672 + 4 @ gDebug_03000700
+ ldrh r0, [r4]
+ mov r1, #0x64
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5]
+ ldrh r0, [r4]
+ mov r1, #0x64
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xa
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x1]
+ ldrh r0, [r4]
+ mov r1, #0xa
+ bl __umodsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x2]
+ add r0, r5, #0
+ mov r1, #0xc
+ mov r2, #0x3
+ bl Menu_PrintText
+ cmp r6, #0x1
+ beq ._668 @cond_branch
+ cmp r6, #0x1
+ bgt ._669 @cond_branch
+ cmp r6, #0
+ beq ._670 @cond_branch
+ b ._679
+._673:
+ .align 2, 0
+._672:
+ .word gDebug_03000710
+ .word gDebug_03000700
+._669:
+ cmp r6, #0x2
+ beq ._674 @cond_branch
+ b ._679
+._670:
+ ldr r4, ._677 @ gDebug_0300070C
+ b ._676
+._678:
+ .align 2, 0
+._677:
+ .word gDebug_0300070C
+._668:
+ ldr r4, ._680 @ gDebug_0300070D
+._676:
+ ldrb r0, [r4]
+ mov r1, #0x64
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5]
+ ldrb r0, [r4]
+ mov r1, #0x64
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0xa
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x1]
+ ldrb r0, [r4]
+ mov r1, #0xa
+ bl __umodsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x2]
+ add r0, r5, #0
+ mov r1, #0xc
+ mov r2, #0x7
+ bl Menu_PrintText
+ b ._679
+._681:
+ .align 2, 0
+._680:
+ .word gDebug_0300070D
+._674:
+ ldr r4, ._682 @ gDebug_0300070E
+ ldrb r0, [r4]
+ mov r1, #0x64
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5]
+ ldrb r0, [r4]
+ mov r1, #0x64
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0xa
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x1]
+ ldrb r0, [r4]
+ mov r1, #0xa
+ bl __umodsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x2]
+ add r0, r5, #0
+ mov r1, #0xc
+ mov r2, #0x7
+ bl Menu_PrintText
+._679:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._683:
+ .align 2, 0
+._682:
+ .word gDebug_0300070E
+
+ thumb_func_end debug_sub_808EF8C
+
+ thumb_func_start debug_sub_808F168
+debug_sub_808F168:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r4, ._686 @ 0x2015de0
+ ldr r0, ._686 + 4 @ gDebug_03000700
+ ldrh r0, [r0]
+ strh r0, [r4, #0x8]
+ ldr r0, ._686 + 8 @ gDebug_03000704
+ ldr r0, [r0]
+ str r0, [r4, #0x4]
+ ldr r0, ._686 + 12 @ gDebug_03000708
+ ldr r0, [r0]
+ str r0, [r4]
+ cmp r1, #0x5
+ bls ._684 @cond_branch
+ b ._707
+._684:
+ lsl r0, r1, #0x2
+ ldr r1, ._686 + 16 @
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+._687:
+ .align 2, 0
+._686:
+ .word 0x2015de0
+ .word gDebug_03000700
+ .word gDebug_03000704
+ .word gDebug_03000708
+ .word ._688
+._688:
+ .word ._689
+ .word ._690
+ .word ._691
+ .word ._692
+ .word ._693
+ .word ._694
+._689:
+ ldr r0, ._696 @ 0x2000000
+ ldr r2, ._696 + 4 @ 0x15ddf
+ add r1, r0, r2
+ mov r2, #0x0
+ strb r2, [r1]
+ ldr r1, ._696 + 8 @ 0x15dde
+ add r0, r0, r1
+ strb r2, [r0]
+ ldr r0, ._696 + 12 @ gDebug_0300070C
+ ldrb r0, [r0]
+ sub r0, r0, #0x1
+ strb r0, [r4, #0xa]
+ add r0, r4, #0
+ add r0, r0, #0x16
+ ldr r1, ._696 + 16 @ gUnknown_Debug_083C48BB
+ bl StringCopy
+ b ._704
+._697:
+ .align 2, 0
+._696:
+ .word 0x2000000
+ .word 0x15ddf
+ .word 0x15dde
+ .word gDebug_0300070C
+ .word gUnknown_Debug_083C48BB
+._690:
+ ldr r1, ._699 @ 0x2000000
+ ldr r0, ._699 + 4 @ 0x15ddf
+ add r2, r1, r0
+ mov r0, #0x0
+ strb r0, [r2]
+ ldr r2, ._699 + 8 @ 0x15dde
+ add r1, r1, r2
+ mov r0, #0x8
+ strb r0, [r1]
+ ldr r0, ._699 + 12 @ gDebug_0300070D
+ ldrb r0, [r0]
+ sub r0, r0, #0x1
+ b ._698
+._700:
+ .align 2, 0
+._699:
+ .word 0x2000000
+ .word 0x15ddf
+ .word 0x15dde
+ .word gDebug_0300070D
+._691:
+ ldr r1, ._702 @ 0x2000000
+ ldr r0, ._702 + 4 @ 0x15ddf
+ add r2, r1, r0
+ mov r0, #0x1
+ strb r0, [r2]
+ ldr r2, ._702 + 8 @ 0x15dde
+ add r1, r1, r2
+ mov r0, #0x8
+ strb r0, [r1]
+ ldr r0, ._702 + 12 @ gDebug_0300070E
+ ldrb r0, [r0]
+ sub r0, r0, #0x1
+ strb r0, [r4, #0xa]
+ b ._707
+._703:
+ .align 2, 0
+._702:
+ .word 0x2000000
+ .word 0x15ddf
+ .word 0x15dde
+ .word gDebug_0300070E
+._692:
+ ldr r1, ._705 @ 0x2000000
+ ldr r2, ._705 + 4 @ 0x15ddf
+ add r0, r1, r2
+ mov r2, #0x0
+ strb r2, [r0]
+ ldr r0, ._705 + 8 @ 0x15dde
+ add r1, r1, r0
+ mov r0, #0x8
+ strb r0, [r1]
+ strb r2, [r4, #0xa]
+ b ._704
+._706:
+ .align 2, 0
+._705:
+ .word 0x2000000
+ .word 0x15ddf
+ .word 0x15dde
+._693:
+ ldr r1, ._708 @ 0x2000000
+ ldr r0, ._708 + 4 @ 0x15ddf
+ add r2, r1, r0
+ mov r0, #0x0
+ strb r0, [r2]
+ ldr r2, ._708 + 8 @ 0x15dde
+ add r1, r1, r2
+ mov r0, #0x8
+ strb r0, [r1]
+ mov r0, #0x3
+._698:
+ strb r0, [r4, #0xa]
+._704:
+ add r0, r4, #0
+ add r0, r0, #0xb
+ ldr r1, ._708 + 12 @ gUnknown_Debug_083C48B0
+ bl StringCopy
+ b ._707
+._709:
+ .align 2, 0
+._708:
+ .word 0x2000000
+ .word 0x15ddf
+ .word 0x15dde
+ .word gUnknown_Debug_083C48B0
+._694:
+ ldr r1, ._710 @ 0x2000000
+ ldr r0, ._710 + 4 @ 0x15ddf
+ add r2, r1, r0
+ mov r0, #0x0
+ strb r0, [r2]
+ ldr r2, ._710 + 8 @ 0x15dde
+ add r1, r1, r2
+ mov r0, #0x8
+ strb r0, [r1]
+ mov r0, #0x9
+ strb r0, [r4, #0xa]
+ add r0, r4, #0
+ add r0, r0, #0xb
+ ldr r1, ._710 + 12 @ gUnknown_Debug_083C48B0
+ bl StringCopy
+._707:
+ pop {r4}
+ pop {r0}
+ bx r0
+._711:
+ .align 2, 0
+._710:
+ .word 0x2000000
+ .word 0x15ddf
+ .word 0x15dde
+ .word gUnknown_Debug_083C48B0
+
+ thumb_func_end debug_sub_808F168
+
+ thumb_func_start debug_sub_808F2E0
+debug_sub_808F2E0:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ lsl r2, r2, #0x18
+ cmp r2, #0
+ bne ._712 @cond_branch
+ ldr r1, ._714 @ gDebug_03000710
+ mov r0, #0xa1
+ b ._713
+._715:
+ .align 2, 0
+._714:
+ .word gDebug_03000710
+._712:
+ ldr r1, ._716 @ gDebug_03000710
+ mov r0, #0xa2
+._713:
+ strb r0, [r1]
+ mov r0, #0xff
+ strb r0, [r1, #0x1]
+ add r0, r1, #0
+ add r1, r4, #0
+ add r2, r3, #0
+ bl Menu_PrintText
+ pop {r4}
+ pop {r0}
+ bx r0
+._717:
+ .align 2, 0
+._716:
+ .word gDebug_03000710
+
+ thumb_func_end debug_sub_808F2E0
+
+ thumb_func_start debug_sub_808F31C
+debug_sub_808F31C:
+ push {r4, r5, r6, lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6}
+ mov r8, r0
+ mov r9, r1
+ add r4, r2, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r8, r0
+ mov r0, r9
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r9, r0
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ ldr r5, ._718 @ gDebug_03000710
+ ldr r6, ._718 + 4 @ 0x2710
+ add r0, r4, #0
+ add r1, r6, #0
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r6, #0xfa
+ lsl r6, r6, #0x2
+ add r1, r6, #0
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x1]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x64
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x2]
+ add r0, r4, #0
+ mov r1, #0x64
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xa
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x3]
+ add r0, r4, #0
+ mov r1, #0xa
+ bl __umodsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x4]
+ mov r0, #0xff
+ strb r0, [r5, #0x5]
+ add r0, r5, #0
+ mov r1, r8
+ mov r2, r9
+ bl Menu_PrintText
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._719:
+ .align 2, 0
+._718:
+ .word gDebug_03000710
+ .word 0x2710
+
+ thumb_func_end debug_sub_808F31C
+
+ thumb_func_start debug_nullsub_66
+debug_nullsub_66:
+ bx lr
+
+ thumb_func_end debug_nullsub_66
+
+ .align 2, 0
+
+.endif
diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s
new file mode 100644
index 000000000..2e4bef06c
--- /dev/null
+++ b/asm/unk_debug_menu_3.s
@@ -0,0 +1,747 @@
+.if DEBUG
+
+ .include "constants/gba_constants.inc"
+ .include "include/macros.inc"
+
+ .text
+
+ thumb_func_start debug_sub_813C404
+debug_sub_813C404:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, ._1 @ gUnknown_Debug_845DDB2
+ ldr r4, ._1 + 4 @ gUnknown_Debug_845DAE1
+ sub r5, r5, r4
+ add r1, r4, #0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r6, #0
+ add r1, r4, #0
+ bl unref_sub_812620C
+ add r0, r5, #0
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._2:
+ .align 2, 0
+._1:
+ .word gUnknown_Debug_845DDB2
+ .word gUnknown_Debug_845DAE1
+
+ thumb_func_end debug_sub_813C404
+
+ thumb_func_start debug_sub_813C430
+debug_sub_813C430:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, ._3 @ gUnknown_Debug_845E402
+ ldr r4, ._3 + 4 @ gUnknown_Debug_845E3E0
+ sub r5, r5, r4
+ add r1, r4, #0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r6, #0
+ add r1, r4, #0
+ bl unref_sub_812620C
+ add r0, r5, #0
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._4:
+ .align 2, 0
+._3:
+ .word gUnknown_Debug_845E402
+ .word gUnknown_Debug_845E3E0
+
+ thumb_func_end debug_sub_813C430
+
+ thumb_func_start debug_sub_813C45C
+debug_sub_813C45C:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, ._5 @ gUnknown_Debug_845E443
+ ldr r4, ._5 + 4 @ gUnknown_Debug_845E422
+ sub r5, r5, r4
+ add r1, r4, #0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r6, #0
+ add r1, r4, #0
+ bl unref_sub_812620C
+ add r0, r5, #0
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._6:
+ .align 2, 0
+._5:
+ .word gUnknown_Debug_845E443
+ .word gUnknown_Debug_845E422
+
+ thumb_func_end debug_sub_813C45C
+
+ thumb_func_start debug_sub_813C488
+debug_sub_813C488:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, ._7 @ gUnknown_Debug_845E422
+ ldr r4, ._7 + 4 @ gUnknown_Debug_845E402
+ sub r5, r5, r4
+ add r1, r4, #0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r6, #0
+ add r1, r4, #0
+ bl unref_sub_812620C
+ add r0, r5, #0
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._8:
+ .align 2, 0
+._7:
+ .word gUnknown_Debug_845E422
+ .word gUnknown_Debug_845E402
+
+ thumb_func_end debug_sub_813C488
+
+ thumb_func_start debug_sub_813C4B4
+debug_sub_813C4B4:
+ push {r4, lr}
+ ldr r4, ._9 @ gUnknown_Debug_845E619
+ ldr r1, ._9 + 4 @ gUnknown_Debug_845E606
+ sub r4, r4, r1
+ add r2, r4, #0
+ bl memcpy
+ add r0, r4, #0
+ pop {r4}
+ pop {r1}
+ bx r1
+._10:
+ .align 2, 0
+._9:
+ .word gUnknown_Debug_845E619
+ .word gUnknown_Debug_845E606
+
+ thumb_func_end debug_sub_813C4B4
+
+ thumb_func_start debug_sub_813C4D4
+debug_sub_813C4D4:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, ._11 @ gUnknown_Debug_845E712
+ ldr r4, ._11 + 4 @ gUnknown_Debug_845E619
+ sub r5, r5, r4
+ add r1, r4, #0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r6, #0
+ add r1, r4, #0
+ bl unref_sub_81261B4
+ add r0, r5, #0
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._12:
+ .align 2, 0
+._11:
+ .word gUnknown_Debug_845E712
+ .word gUnknown_Debug_845E619
+
+ thumb_func_end debug_sub_813C4D4
+
+ thumb_func_start debug_sub_813C500
+debug_sub_813C500:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, ._13 @ gUnknown_Debug_845E797
+ ldr r4, ._13 + 4 @ gUnknown_Debug_845E712
+ sub r5, r5, r4
+ add r1, r4, #0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r6, #0
+ add r1, r4, #0
+ bl unref_sub_812620C
+ add r0, r5, #0
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._14:
+ .align 2, 0
+._13:
+ .word gUnknown_Debug_845E797
+ .word gUnknown_Debug_845E712
+
+ thumb_func_end debug_sub_813C500
+
+ thumb_func_start debug_sub_813C52C
+debug_sub_813C52C:
+ push {r4, r5, r6, lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6}
+ mov r8, r0
+ lsl r5, r1, #0x10
+ lsr r0, r5, #0x10
+ mov r9, r0
+ ldr r6, ._15 @ gUnknown_Debug_845E7BB
+ ldr r4, ._15 + 4 @ gUnknown_Debug_845E797
+ sub r6, r6, r4
+ mov r0, r8
+ add r1, r4, #0
+ add r2, r6, #0
+ bl memcpy
+ ldr r0, ._15 + 8 @ gUnknown_Debug_845E7B5
+ sub r0, r0, r4
+ add r0, r0, r8
+ add r0, r0, #0x3
+ mov r1, r9
+ strb r1, [r0]
+ lsr r5, r5, #0x18
+ strb r5, [r0, #0x1]
+ mov r0, r8
+ add r1, r4, #0
+ bl unref_sub_812620C
+ add r0, r6, #0
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._16:
+ .align 2, 0
+._15:
+ .word gUnknown_Debug_845E7BB
+ .word gUnknown_Debug_845E797
+ .word gUnknown_Debug_845E7B5
+
+ thumb_func_end debug_sub_813C52C
+
+ thumb_func_start debug_sub_813C580
+debug_sub_813C580:
+ push {lr}
+ mov r1, #0xd
+ bl debug_sub_813C52C
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_813C580
+
+ thumb_func_start debug_sub_813C58C
+debug_sub_813C58C:
+ push {lr}
+ mov r1, #0x4
+ bl debug_sub_813C52C
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_813C58C
+
+ thumb_func_start debug_sub_813C598
+debug_sub_813C598:
+ push {lr}
+ mov r1, #0x85
+ bl debug_sub_813C52C
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_813C598
+
+ thumb_func_start debug_sub_813C5A4
+debug_sub_813C5A4:
+ push {lr}
+ ldr r1, ._17 @ 0x121
+ bl debug_sub_813C52C
+ pop {r1}
+ bx r1
+._18:
+ .align 2, 0
+._17:
+ .word 0x121
+
+ thumb_func_end debug_sub_813C5A4
+
+ thumb_func_start debug_sub_813C5B4
+debug_sub_813C5B4:
+ push {r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r7, ._23 @ gSaveBlock1
+ ldr r0, ._23 + 4 @ gUnknown_Debug_845DDD6
+ ldr r1, ._23 + 8 @ gUnknown_Debug_845DDB2
+ sub r0, r0, r1
+ add r6, r0, r4
+ ldr r0, ._23 + 12 @ gUnknown_Debug_845E306
+ sub r5, r0, r1
+ ldr r0, ._23 + 16 @ Str_842E23C
+ mov r1, #0x0
+ mov r2, #0x0
+ bl GetEnigmaBerryChecksum
+ mov r2, #0x0
+ ldr r3, ._23 + 20 @ 0xfff
+ mov r1, #0x0
+._19:
+ add r0, r4, r2
+ strb r1, [r0]
+ add r2, r2, #0x1
+ cmp r2, r3
+ ble ._19 @cond_branch
+ mov r2, #0x0
+ cmp r2, r5
+ bcs ._20 @cond_branch
+ ldr r3, ._23 + 8 @ gUnknown_Debug_845DDB2
+._21:
+ add r0, r4, r2
+ add r1, r2, r3
+ ldrb r1, [r1]
+ strb r1, [r0]
+ add r2, r2, #0x1
+ cmp r2, r5
+ bcc ._21 @cond_branch
+._20:
+ mov r2, #0x0
+ ldr r3, ._23 + 24 @ 0x52f
+._22:
+ add r0, r6, r2
+ add r1, r7, r2
+ ldrb r1, [r1]
+ strb r1, [r0]
+ add r2, r2, #0x1
+ cmp r2, r3
+ bls ._22 @cond_branch
+ bl ClearEnigmaBerries
+ ldr r1, ._23 + 8 @ gUnknown_Debug_845DDB2
+ add r0, r4, #0
+ bl unref_sub_81261B4
+ add r0, r5, #0
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._24:
+ .align 2, 0
+._23:
+ .word gSaveBlock1+0x3160
+ .word gUnknown_Debug_845DDD6
+ .word gUnknown_Debug_845DDB2
+ .word gUnknown_Debug_845E306
+ .word Str_842E23C
+ .word 0xfff
+ .word 0x52f
+
+ thumb_func_end debug_sub_813C5B4
+
+ thumb_func_start debug_sub_813C638
+debug_sub_813C638:
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ add sp, sp, #0xffffffec
+ mov r8, r0
+ add r4, r1, #0
+ add r5, r2, #0
+ add r6, r3, #0
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ lsl r6, r6, #0x10
+ lsr r6, r6, #0x10
+ bl ZeroMonData
+ mov r0, #0x0
+ str r0, [sp]
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ ldr r0, ._25 @ 0x270f
+ str r0, [sp, #0xc]
+ mov r0, r8
+ add r1, r4, #0
+ add r2, r5, #0
+ mov r3, #0x20
+ bl CreateMon
+ ldr r2, ._25 + 4 @ Str_842E240
+ mov r0, r8
+ mov r1, #0x7
+ bl SetMonData
+ ldr r2, ._25 + 8 @ Str_842E248
+ mov r0, r8
+ mov r1, #0x2
+ bl SetMonData
+ str r6, [sp, #0x10]
+ mov r0, r8
+ mov r1, #0xc
+ add r2, sp, #0x10
+ bl SetMonData
+ add sp, sp, #0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._26:
+ .align 2, 0
+._25:
+ .word 0x270f
+ .word Str_842E240
+ .word Str_842E248
+
+ thumb_func_end debug_sub_813C638
+
+ thumb_func_start debug_sub_813C6AC
+debug_sub_813C6AC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xfffffff8
+ add r6, r0, #0
+ add r5, r1, #0
+ add r0, r5, #0
+ bl ClearMailStruct
+ add r0, r6, #0
+ mov r1, #0xc
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r8, r0
+ bl ItemIsMail
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._27 @cond_branch
+ add r4, r5, #0
+ add r4, r4, #0x12
+ add r7, r5, #0
+ add r7, r7, #0x1a
+ mov r1, #0x9
+ add r0, r5, #0
+ add r0, r0, #0x10
+._28:
+ strh r1, [r0]
+ sub r1, r1, #0x1
+ sub r0, r0, #0x2
+ cmp r0, r5
+ bge ._28 @cond_branch
+ add r0, r6, #0
+ mov r1, #0x7
+ mov r2, sp
+ bl GetMonData
+ add r0, r4, #0
+ mov r1, sp
+ mov r2, #0x8
+ bl StringCopyN
+ add r0, r6, #0
+ mov r1, #0x1
+ bl GetMonData
+ add r1, r7, #0
+ bl write_word_to_mem
+ add r0, r6, #0
+ mov r1, #0xb
+ bl GetMonData
+ add r4, r0, #0
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r6, #0
+ mov r1, #0x0
+ bl GetMonData
+ add r1, r0, #0
+ add r0, r4, #0
+ bl SpeciesToMailSpecies
+ strh r0, [r5, #0x1e]
+ mov r0, r8
+ strh r0, [r5, #0x20]
+._27:
+ add sp, sp, #0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_813C6AC
+
+ thumb_func_start debug_sub_813C740
+debug_sub_813C740:
+ push {r4, r5, r6, lr}
+ mov r6, sl
+ mov r5, r9
+ mov r4, r8
+ push {r4, r5, r6}
+ add sp, sp, #0xffffffd0
+ add r6, r0, #0
+ ldr r0, ._29 @ gUnknown_Debug_845E443
+ mov r8, r0
+ ldr r1, ._29 + 4 @ gUnknown_Debug_845E4EF
+ ldr r5, ._29 + 8 @ gEnemyParty
+ sub r1, r1, r0
+ mov r9, r1
+ add r0, r6, #0
+ mov r1, r8
+ mov r2, r9
+ bl memcpy
+ add r0, r5, #0
+ mov r1, #0x19
+ mov r2, #0x5
+ mov r3, #0x0
+ bl debug_sub_813C638
+ add r4, sp, #0x24
+ mov r0, #0x1
+ mov sl, r0
+ mov r1, sl
+ strb r1, [r4]
+ add r0, r5, #0
+ mov r1, #0x2d
+ add r2, r4, #0
+ bl SetMonData
+ mov r0, #0x3
+ strb r0, [r4]
+ add r0, r5, #0
+ mov r1, #0x20
+ add r2, r4, #0
+ bl SetMonData
+ mov r0, #0xff
+ strb r0, [r4]
+ add r0, r5, #0
+ mov r1, #0x23
+ add r2, r4, #0
+ bl SetMonData
+ ldr r1, ._29 + 12 @ Str_842E238
+ add r0, r4, #0
+ mov r2, #0xb
+ bl StringCopyN
+ add r0, r5, #0
+ mov r1, #0x2
+ add r2, r4, #0
+ bl SetMonData
+ mov r0, sl
+ strb r0, [r4]
+ add r0, r5, #0
+ mov r1, #0x3
+ add r2, r4, #0
+ bl SetMonData
+ ldr r0, ._29 + 16 @ gUnknown_Debug_845E467
+ add r0, r6, r0
+ mov r1, r8
+ sub r0, r0, r1
+ add r1, r5, #0
+ mov r2, #0x64
+ bl memcpy
+ ldr r0, ._29 + 20 @ gUnknown_Debug_845E4CB
+ add r6, r6, r0
+ mov r0, r8
+ sub r6, r6, r0
+ add r0, r6, #0
+ mov r1, sp
+ mov r2, #0x24
+ bl memcpy
+ mov r0, r9
+ add sp, sp, #0x30
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._30:
+ .align 2, 0
+._29:
+ .word gUnknown_Debug_845E443
+ .word gUnknown_Debug_845E4EF
+ .word gEnemyParty
+ .word Str_842E238
+ .word gUnknown_Debug_845E467
+ .word gUnknown_Debug_845E4CB
+
+ thumb_func_end debug_sub_813C740
+
+ thumb_func_start debug_sub_813C810
+debug_sub_813C810:
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ add sp, sp, #0xffffffdc
+ add r6, r0, #0
+ ldr r5, ._31 @ gUnknown_Debug_845E443
+ ldr r0, ._31 + 4 @ gUnknown_Debug_845E4EF
+ ldr r4, ._31 + 8 @ gEnemyParty
+ sub r0, r0, r5
+ mov r8, r0
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r2, r8
+ bl memcpy
+ add r0, r4, #0
+ mov r1, #0xc9
+ mov r2, #0x15
+ mov r3, #0x82
+ bl debug_sub_813C638
+ add r0, r4, #0
+ mov r1, sp
+ bl debug_sub_813C6AC
+ ldr r0, ._31 + 12 @ gUnknown_Debug_845E467
+ add r0, r6, r0
+ sub r0, r0, r5
+ add r1, r4, #0
+ mov r2, #0x64
+ bl memcpy
+ ldr r0, ._31 + 16 @ gUnknown_Debug_845E4CB
+ add r0, r6, r0
+ sub r0, r0, r5
+ mov r1, sp
+ mov r2, #0x24
+ bl memcpy
+ add r0, r6, #0
+ add r1, r5, #0
+ bl unref_sub_812620C
+ mov r0, r8
+ add sp, sp, #0x24
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._32:
+ .align 2, 0
+._31:
+ .word gUnknown_Debug_845E443
+ .word gUnknown_Debug_845E4EF
+ .word gEnemyParty
+ .word gUnknown_Debug_845E467
+ .word gUnknown_Debug_845E4CB
+
+ thumb_func_end debug_sub_813C810
+
+ thumb_func_start debug_sub_813C888
+debug_sub_813C888:
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ add sp, sp, #0xffffffdc
+ add r6, r0, #0
+ ldr r5, ._33 @ gUnknown_Debug_845E443
+ ldr r0, ._33 + 4 @ gUnknown_Debug_845E4EF
+ ldr r4, ._33 + 8 @ gEnemyParty
+ sub r0, r0, r5
+ mov r8, r0
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r2, r8
+ bl memcpy
+ add r0, r4, #0
+ mov r1, #0xc9
+ mov r2, #0x15
+ mov r3, #0x82
+ bl debug_sub_813C638
+ add r0, r4, #0
+ mov r1, sp
+ bl debug_sub_813C6AC
+ mov r0, #0x0
+ strh r0, [r4, #0x1c]
+ ldr r0, ._33 + 12 @ gUnknown_Debug_845E467
+ add r0, r6, r0
+ sub r0, r0, r5
+ add r1, r4, #0
+ mov r2, #0x64
+ bl memcpy
+ ldr r0, ._33 + 16 @ gUnknown_Debug_845E4CB
+ add r0, r6, r0
+ sub r0, r0, r5
+ mov r1, sp
+ mov r2, #0x24
+ bl memcpy
+ add r0, r6, #0
+ add r1, r5, #0
+ bl unref_sub_812620C
+ mov r0, r8
+ add sp, sp, #0x24
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._34:
+ .align 2, 0
+._33:
+ .word gUnknown_Debug_845E443
+ .word gUnknown_Debug_845E4EF
+ .word gEnemyParty
+ .word gUnknown_Debug_845E467
+ .word gUnknown_Debug_845E4CB
+
+ thumb_func_end debug_sub_813C888
+
+ thumb_func_start debug_sub_813C904
+debug_sub_813C904:
+ push {r4, lr}
+ ldr r4, ._35 @ gPlayerParty
+ add r0, r4, #0
+ mov r1, #0x5
+ mov r2, #0x32
+ mov r3, #0xb7
+ bl debug_sub_813C638
+ add r0, r4, #0
+ add r0, r0, #0x64
+ mov r1, #0x8
+ mov r2, #0x32
+ mov r3, #0xc4
+ bl debug_sub_813C638
+ add r4, r4, #0xc8
+ add r0, r4, #0
+ mov r1, #0x2
+ mov r2, #0x32
+ mov r3, #0x8d
+ bl debug_sub_813C638
+ pop {r4}
+ pop {r0}
+ bx r0
+._36:
+ .align 2, 0
+._35:
+ .word gPlayerParty
+
+ thumb_func_end debug_sub_813C904
+
+ thumb_func_start debug_sub_813C93C
+debug_sub_813C93C:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xffffff44
+ add r4, r0, #0
+ ldr r6, ._37 @ gUnknown_Debug_845E4EF
+ ldr r5, ._37 + 4 @ gUnknown_Debug_845E606
+ sub r5, r5, r6
+ add r1, r6, #0
+ add r2, r5, #0
+ bl memcpy
+ bl SavePlayerParty
+ bl debug_sub_813C904
+ ldr r1, ._37 + 8 @ Str_842E253
+ ldr r2, ._37 + 12 @ 0x270f
+ mov r0, sp
+ bl debug_sub_8075DB4
+ bl LoadPlayerParty
+ ldr r0, ._37 + 16 @ gUnknown_Debug_845E506
+ add r4, r4, r0
+ sub r4, r4, r6
+ add r0, r4, #0
+ mov r1, sp
+ mov r2, #0xbc
+ bl memcpy
+ add r0, r5, #0
+ add sp, sp, #0xbc
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._38:
+ .align 2, 0
+._37:
+ .word gUnknown_Debug_845E4EF
+ .word gUnknown_Debug_845E606
+ .word Str_842E253+5 @ weird...
+ .word 0x270f
+ .word gUnknown_Debug_845E506
+
+ thumb_func_end debug_sub_813C93C
+
+ .align 2, 0
+
+.endif
diff --git a/asm/watanabe_debug_menu.s b/asm/watanabe_debug_menu.s
new file mode 100644
index 000000000..7f613b7a3
--- /dev/null
+++ b/asm/watanabe_debug_menu.s
@@ -0,0 +1,9578 @@
+.if DEBUG
+
+ .include "constants/gba_constants.inc"
+ .include "include/macros.inc"
+
+ .text
+
+ thumb_func_start debug_69
+debug_69:
+ bx lr
+
+ thumb_func_end debug_69
+
+ thumb_func_start debug_80C35DC
+debug_80C35DC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xfffffff8
+ mov r0, #0x0
+ bl SetVBlankCallback
+ mov r0, #0x80
+ lsl r0, r0, #0x13
+ mov r1, #0x0
+ strh r1, [r0]
+ add r0, r0, #0xe
+ strh r1, [r0]
+ sub r0, r0, #0x2
+ strh r1, [r0]
+ sub r0, r0, #0x2
+ strh r1, [r0]
+ sub r0, r0, #0x2
+ strh r1, [r0]
+ add r0, r0, #0x14
+ strh r1, [r0]
+ add r0, r0, #0x2
+ strh r1, [r0]
+ sub r0, r0, #0x6
+ strh r1, [r0]
+ add r0, r0, #0x2
+ strh r1, [r0]
+ sub r0, r0, #0x6
+ strh r1, [r0]
+ add r0, r0, #0x2
+ strh r1, [r0]
+ sub r0, r0, #0x6
+ strh r1, [r0]
+ add r0, r0, #0x2
+ strh r1, [r0]
+ mov r3, #0xc0
+ lsl r3, r3, #0x13
+ mov r4, #0xc0
+ lsl r4, r4, #0x9
+ add r0, sp, #0x4
+ mov r8, r0
+ mov r2, sp
+ mov r6, #0x0
+ ldr r1, ._2 @ 0x40000d4
+ mov r5, #0x80
+ lsl r5, r5, #0x5
+ ldr r7, ._2 + 4 @ 0x81000800
+ mov r0, #0x81
+ lsl r0, r0, #0x18
+ mov ip, r0
+._1:
+ strh r6, [r2]
+ mov r0, sp
+ str r0, [r1]
+ str r3, [r1, #0x4]
+ str r7, [r1, #0x8]
+ ldr r0, [r1, #0x8]
+ add r3, r3, r5
+ sub r4, r4, r5
+ cmp r4, r5
+ bhi ._1 @cond_branch
+ strh r6, [r2]
+ mov r2, sp
+ str r2, [r1]
+ str r3, [r1, #0x4]
+ lsr r0, r4, #0x1
+ mov r2, ip
+ orr r0, r0, r2
+ str r0, [r1, #0x8]
+ ldr r0, [r1, #0x8]
+ mov r0, #0xe0
+ lsl r0, r0, #0x13
+ mov r3, #0x80
+ lsl r3, r3, #0x3
+ mov r4, #0x0
+ str r4, [sp, #0x4]
+ ldr r2, ._2 @ 0x40000d4
+ mov r1, r8
+ str r1, [r2]
+ str r0, [r2, #0x4]
+ lsr r0, r3, #0x2
+ mov r1, #0x85
+ lsl r1, r1, #0x18
+ orr r0, r0, r1
+ str r0, [r2, #0x8]
+ ldr r0, [r2, #0x8]
+ mov r1, #0xa0
+ lsl r1, r1, #0x13
+ mov r0, sp
+ strh r4, [r0]
+ str r0, [r2]
+ str r1, [r2, #0x4]
+ lsr r3, r3, #0x1
+ mov r0, #0x81
+ lsl r0, r0, #0x18
+ orr r3, r3, r0
+ str r3, [r2, #0x8]
+ ldr r0, [r2, #0x8]
+ bl ResetPaletteFade
+ bl ScanlineEffect_Stop
+ bl ResetTasks
+ bl ResetSpriteData
+ bl ResetPaletteFade
+ bl FreeAllSpritePalettes
+ ldr r0, ._2 + 8 @ stru_83F8828
+ bl LoadSpriteSheet
+ ldr r0, ._2 + 12 @ stru_83F8838
+ bl LoadSpritePalette
+ ldr r0, ._2 + 16 @ gWindowTemplate_81E6C3C
+ bl Text_LoadWindowTemplate
+ ldr r0, ._2 + 20 @ gWindowTemplate_81E6CE4
+ bl InitMenuWindow
+ add sp, sp, #0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._3:
+ .align 2, 0
+._2:
+ .word 0x40000d4
+ .word 0x81000800
+ .word stru_83F8828
+ .word stru_83F8838
+ .word gWindowTemplate_81E6C3C
+ .word gWindowTemplate_81E6CE4
+
+ thumb_func_end debug_80C35DC
+
+ thumb_func_start debug_80C36F4
+debug_80C36F4:
+ push {lr}
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C36F4
+
+ thumb_func_start debug_80C370C
+debug_80C370C:
+ push {lr}
+ ldr r0, ._6 @ gPaletteFade
+ ldrb r1, [r0, #0x7]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._4 @cond_branch
+ ldr r0, ._6 + 4 @ debug_80C36F4
+ bl SetMainCallback2
+ b ._5
+._7:
+ .align 2, 0
+._6:
+ .word gPaletteFade
+ .word debug_80C36F4+1
+._4:
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+._5:
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C370C
+
+ thumb_func_start debug_80C373C
+debug_80C373C:
+ push {lr}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl DestroyTask
+ bl ScriptContext2_Disable
+ ldr r0, ._8 @ sub_80546F0
+ bl SetMainCallback2
+ pop {r0}
+ bx r0
+._9:
+ .align 2, 0
+._8:
+ .word sub_80546F0+1
+
+ thumb_func_end debug_80C373C
+
+ thumb_func_start debug_80C3758
+debug_80C3758:
+ push {lr}
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ bl TransferPlttBuffer
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C3758
+
+ thumb_func_start debug_80C376C
+debug_80C376C:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ lsl r1, r1, #0x18
+ lsr r7, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r6, r2, #0x18
+ mov r1, #0x0
+ mov r2, #0x0
+._10:
+ mov r3, sp
+ add r0, r3, r1
+ strb r2, [r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #0x2
+ bls ._10 @cond_branch
+ mov r1, sp
+ mov r0, #0xff
+ strb r0, [r1, #0x3]
+ mov r4, #0x0
+ add r0, r5, #0
+ mov r1, #0x64
+ bl __udivsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0
+ beq ._11 @cond_branch
+ mov r1, sp
+ add r0, r0, #0xa1
+ strb r0, [r1]
+ mov r4, #0x1
+._11:
+ add r0, r5, #0
+ mov r1, #0x64
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xa
+ bl __udivsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0
+ bne ._12 @cond_branch
+ cmp r4, #0
+ beq ._13 @cond_branch
+._12:
+ mov r1, sp
+ add r0, r0, #0xa1
+ strb r0, [r1, #0x1]
+._13:
+ mov r4, sp
+ add r0, r5, #0
+ mov r1, #0x64
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xa
+ bl __umodsi3
+ add r0, r0, #0xa1
+ strb r0, [r4, #0x2]
+ mov r0, sp
+ add r1, r7, #0
+ add r2, r6, #0
+ bl Menu_PrintText
+ add sp, sp, #0x4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C376C
+
+ thumb_func_start debug_80C3800
+debug_80C3800:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xfffffff4
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ lsl r1, r1, #0x18
+ lsr r6, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r5, r2, #0x18
+ mov r3, #0x0
+ ldr r2, ._18 @ gSpeciesNames
+ mov r1, #0x0
+._14:
+ mov r7, sp
+ add r0, r7, r3
+ strb r1, [r0]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ cmp r3, #0x9
+ bls ._14 @cond_branch
+ add r1, r7, r3
+ mov r0, #0xff
+ strb r0, [r1]
+ mov r3, #0x0
+ mov r0, #0xb
+ add r1, r4, #0
+ mul r1, r1, r0
+ add r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._16 @cond_branch
+ add r4, r2, #0
+ add r2, r1, #0
+._17:
+ mov r0, sp
+ add r1, r0, r3
+ add r0, r3, r2
+ add r0, r0, r4
+ ldrb r0, [r0]
+ strb r0, [r1]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ add r0, r3, r2
+ add r0, r0, r4
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._16 @cond_branch
+ cmp r3, #0x9
+ bls ._17 @cond_branch
+._16:
+ mov r0, sp
+ add r1, r6, #0
+ add r2, r5, #0
+ bl Menu_PrintText
+ add sp, sp, #0xc
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._19:
+ .align 2, 0
+._18:
+ .word gSpeciesNames
+
+ thumb_func_end debug_80C3800
+
+ thumb_func_start debug_80C3878
+debug_80C3878:
+ push {lr}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ cmp r0, #0
+ beq ._20 @cond_branch
+ cmp r0, #0x1
+ beq ._21 @cond_branch
+._20:
+ cmp r1, #0x1
+ bls ._22 @cond_branch
+ sub r0, r1, #1
+ b ._23
+._22:
+ ldr r1, ._25 @ 0x19b
+ b ._28
+._26:
+ .align 2, 0
+._25:
+ .word 0x19b
+._21:
+ mov r0, #0xcd
+ lsl r0, r0, #0x1
+ cmp r1, r0
+ bhi ._27 @cond_branch
+ add r0, r1, #1
+._23:
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ b ._28
+._27:
+ mov r1, #0x1
+._28:
+ add r0, r1, #0
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_80C3878
+
+ thumb_func_start debug_80C38B4
+debug_80C38B4:
+ push {lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x10
+ lsr r0, r1, #0x10
+ cmp r2, #0
+ beq ._29 @cond_branch
+ cmp r2, #0x1
+ beq ._30 @cond_branch
+._29:
+ cmp r0, #0
+ beq ._31 @cond_branch
+ sub r0, r0, #0x1
+ b ._32
+._31:
+ mov r0, #0x52
+ b ._35
+._30:
+ cmp r0, #0x51
+ bhi ._34 @cond_branch
+ add r0, r0, #0x1
+._32:
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ b ._35
+._34:
+ mov r0, #0x0
+._35:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_80C38B4
+
+ thumb_func_start debug_80C38E4
+debug_80C38E4:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xfffffffc
+ add r4, r2, #0
+ add r5, r3, #0
+ ldr r6, [sp, #0x1c]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r8, r0
+ lsl r1, r1, #0x18
+ lsr r7, r1, #0x18
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ lsl r6, r6, #0x18
+ lsr r6, r6, #0x18
+ ldr r1, ._37 @ gUnknown_Debug_083F7FD4
+ mov r0, sp
+ mov r2, #0x2
+ bl memcpy
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ add r3, r5, #0
+ bl Menu_BlankWindowRect
+ cmp r6, #0
+ beq ._36 @cond_branch
+ mov r0, sp
+ add r1, r7, #0
+ mov r2, r8
+ bl Menu_PrintText
+._36:
+ add sp, sp, #0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._38:
+ .align 2, 0
+._37:
+ .word gUnknown_Debug_083F7FD4
+
+ thumb_func_end debug_80C38E4
+
+ thumb_func_start debug_80C393C
+debug_80C393C:
+ push {lr}
+ ldr r1, ._39 @ gUnknown_Debug_083F7FD6
+ mov r0, #0x1e
+ bl ProgramFlashSectorAndVerify
+ pop {r0}
+ bx r0
+._40:
+ .align 2, 0
+._39:
+ .word gUnknown_Debug_083F7FD6
+
+ thumb_func_end debug_80C393C
+
+ thumb_func_start InitWatanabeDebugMenu
+InitWatanabeDebugMenu:
+ push {r4, lr}
+ ldr r0, ._46 @ gMain
+ ldr r1, ._46 + 4 @ 0x43c
+ add r4, r0, r1
+ ldrb r0, [r4]
+ cmp r0, #0x1
+ beq ._41 @cond_branch
+ cmp r0, #0x1
+ ble ._42 @cond_branch
+ cmp r0, #0x2
+ beq ._43 @cond_branch
+ cmp r0, #0x3
+ beq ._44 @cond_branch
+._42:
+ bl save_serialize_map
+ bl sub_8125E2C
+ mov r0, #0x1
+ strb r0, [r4]
+ b ._51
+._47:
+ .align 2, 0
+._46:
+ .word gMain
+ .word 0x43c
+._41:
+ bl sub_8125E6C
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._51 @cond_branch
+ b ._49
+._43:
+ mov r0, #0x37
+ bl PlaySE
+._49:
+ ldrb r0, [r4]
+ add r0, r0, #0x1
+ strb r0, [r4]
+ b ._51
+._44:
+ bl IsSEPlaying
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._51 @cond_branch
+ bl ScriptContext2_Disable
+ ldr r0, ._52 @ sub_80546F0
+ bl SetMainCallback2
+._51:
+ pop {r4}
+ pop {r0}
+ bx r0
+._53:
+ .align 2, 0
+._52:
+ .word sub_80546F0+1
+
+ thumb_func_end InitWatanabeDebugMenu
+
+ thumb_func_start InitSizeComparison
+InitSizeComparison:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ bl debug_80C35DC
+ ldr r1, ._54 @ gReservedSpritePaletteCount
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r0, ._54 + 4 @ gUnknown_Debug_20389EC
+ mov r1, #0x80
+ lsl r1, r1, #0x1
+ mov r2, #0x20
+ bl LoadPalette
+ ldr r3, ._54 + 8 @ 0x4000208
+ ldrh r2, [r3]
+ mov r0, #0x0
+ strh r0, [r3]
+ ldr r4, ._54 + 12 @ 0x4000200
+ ldrh r0, [r4]
+ mov r1, #0x1
+ orr r0, r0, r1
+ strh r0, [r4]
+ strh r2, [r3]
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x10
+ mov r3, #0x0
+ bl BeginNormalPaletteFade
+ ldr r0, ._54 + 16 @ debug_80C3758
+ bl SetVBlankCallback
+ ldr r0, ._54 + 20 @ debug_80C370C
+ bl SetMainCallback2
+ mov r1, #0x80
+ lsl r1, r1, #0x13
+ mov r2, #0x8a
+ lsl r2, r2, #0x5
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, ._54 + 24 @ debug_80C3A50
+ mov r1, #0x0
+ bl CreateTask
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._54 + 28 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ mov r0, #0xfc
+ strh r0, [r1, #0x8]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._55:
+ .align 2, 0
+._54:
+ .word gReservedSpritePaletteCount
+ .word gUnknown_Debug_20389EC
+ .word 0x4000208
+ .word 0x4000200
+ .word debug_80C3758+1
+ .word debug_80C370C+1
+ .word debug_80C3A50+1
+ .word gTasks
+
+ thumb_func_end InitSizeComparison
+
+ thumb_func_start debug_80C3A50
+debug_80C3A50:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xffffffd8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r1, ._56 @ gTasks
+ lsl r2, r0, #0x2
+ add r0, r2, r0
+ lsl r0, r0, #0x3
+ add r7, r0, r1
+ ldrh r0, [r7, #0x8]
+ str r0, [sp, #0x4]
+ bl NationalPokedexNumToSpecies
+ mov r1, sp
+ strh r0, [r1, #0x8]
+ add r2, r0, #0
+ lsl r2, r2, #0x10
+ str r2, [sp, #0xc]
+ lsr r2, r2, #0x10
+ mov r9, r2
+ ldr r3, ._56 + 4 @ gSaveBlock2
+ mov r8, r3
+ mov r0, #0x6
+ mov r1, #0x0
+ mov r2, #0x17
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x5
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ ldr r5, ._56 + 8 @ gUnknown_Debug_083F7FD6
+ add r0, r5, #0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r4, ._56 + 12 @ gUnknown_Debug_083F7FDE
+ add r0, r4, #0
+ mov r1, #0x1
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0x18
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ add r0, r5, #0
+ mov r1, #0x19
+ mov r2, #0x1
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0x19
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0x0
+ mov r1, #0xa
+ mov r2, #0xb
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._56 + 16 @ gUnknown_Debug_083F7FE2
+ mov r1, #0x1
+ mov r2, #0xb
+ bl Menu_PrintText
+ ldr r0, ._56 + 20 @ gUnknown_Debug_083F7FED
+ mov r1, #0x1
+ mov r2, #0xd
+ bl Menu_PrintText
+ ldr r0, ._56 + 24 @ gUnknown_Debug_083F7FF6
+ mov r1, #0x1
+ mov r2, #0xf
+ bl Menu_PrintText
+ ldr r0, ._56 + 28 @ gUnknown_Debug_083F8001
+ mov r1, #0x1
+ mov r2, #0x11
+ bl Menu_PrintText
+ mov r0, #0xc
+ mov r1, #0xa
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._56 + 32 @ gUnknown_Debug_083F800C
+ mov r1, #0xd
+ mov r2, #0xb
+ bl Menu_PrintText
+ ldr r0, ._56 + 36 @ gUnknown_Debug_083F8019
+ mov r1, #0xd
+ mov r2, #0xd
+ bl Menu_PrintText
+ mov r0, #0xc
+ mov r1, #0x10
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._56 + 40 @ gUnknown_Debug_083F8022
+ mov r1, #0xd
+ mov r2, #0x11
+ bl Menu_PrintText
+ ldr r0, ._56 + 44 @ gUnknown_Debug_083F8028
+ mov r1, #0x18
+ mov r2, #0x11
+ bl Menu_PrintText
+ mov r0, r9
+ mov r1, #0x12
+ mov r2, #0x11
+ bl debug_80C3800
+ mov r1, r8
+ ldrb r0, [r1, #0x8]
+ mov r1, #0x98
+ mov r2, #0x28
+ mov r3, #0x0
+ bl sub_8091A4C
+ mov r2, sp
+ strh r0, [r2, #0x10]
+ add r3, r0, #0
+ lsl r3, r3, #0x10
+ str r3, [sp, #0x18]
+ lsr r0, r3, #0x10
+ str r0, [sp, #0x14]
+ lsl r4, r0, #0x4
+ add r4, r4, r0
+ lsl r4, r4, #0x2
+ ldr r1, ._56 + 48 @ gSprites
+ add r4, r4, r1
+ ldrb r1, [r4, #0x1]
+ mov r2, #0x4
+ neg r2, r2
+ mov sl, r2
+ mov r0, sl
+ and r0, r0, r1
+ mov r3, #0x1
+ orr r0, r0, r3
+ strb r0, [r4, #0x1]
+ ldrb r1, [r4, #0x3]
+ mov r0, #0x3f
+ neg r0, r0
+ mov r9, r0
+ and r0, r0, r1
+ mov r1, #0x4
+ orr r0, r0, r1
+ strb r0, [r4, #0x3]
+ ldrb r1, [r4, #0x5]
+ sub r2, r2, #0x9
+ mov r8, r2
+ mov r0, r8
+ and r0, r0, r1
+ mov r3, #0xf
+ and r0, r0, r3
+ strb r0, [r4, #0x5]
+ mov r0, #0x0
+ bl GetSpritePaletteTagByPaletteNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FreeSpritePaletteByTag
+ ldr r0, ._56 + 52 @ gPokedexEntries
+ ldr r1, [sp, #0x4]
+ lsl r5, r1, #0x3
+ add r5, r5, r1
+ lsl r5, r5, #0x2
+ add r5, r5, r0
+ ldrh r6, [r5, #0x20]
+ strh r6, [r4, #0x26]
+ ldrh r4, [r5, #0x1e]
+ str r4, [sp]
+ mov r0, #0x2
+ add r1, r4, #0
+ mov r2, #0x0
+ mov r3, #0x0
+ bl SetOamMatrix
+ mov r2, sp
+ ldrh r2, [r2, #0x14]
+ strh r2, [r7, #0xe]
+ strh r6, [r7, #0x10]
+ strh r4, [r7, #0x14]
+ ldr r0, [sp, #0x4]
+ mov r1, #0x58
+ mov r2, #0x28
+ mov r3, #0x1
+ bl sub_80918EC
+ mov r3, sp
+ strh r0, [r3, #0x1c]
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x24]
+ lsr r1, r0, #0x10
+ str r1, [sp, #0x20]
+ lsl r4, r1, #0x4
+ add r4, r4, r1
+ lsl r4, r4, #0x2
+ ldr r2, ._56 + 48 @ gSprites
+ add r4, r4, r2
+ ldrb r0, [r4, #0x1]
+ mov r3, sl
+ and r3, r3, r0
+ mov r0, #0x1
+ orr r3, r3, r0
+ strb r3, [r4, #0x1]
+ ldrb r0, [r4, #0x3]
+ mov r1, r9
+ and r1, r1, r0
+ mov r0, #0x2
+ orr r1, r1, r0
+ strb r1, [r4, #0x3]
+ ldrb r0, [r4, #0x5]
+ mov r2, r8
+ and r2, r2, r0
+ mov r3, #0xf
+ and r2, r2, r3
+ strb r2, [r4, #0x5]
+ mov r0, #0x0
+ bl GetSpritePaletteTagByPaletteNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FreeSpritePaletteByTag
+ ldrh r0, [r5, #0x1c]
+ mov r8, r0
+ strh r0, [r4, #0x26]
+ ldrh r4, [r5, #0x1a]
+ str r4, [sp]
+ mov r0, #0x1
+ add r1, r4, #0
+ mov r2, #0x0
+ mov r3, #0x0
+ bl SetOamMatrix
+ mov r1, sp
+ ldrh r1, [r1, #0x20]
+ strh r1, [r7, #0xc]
+ mov r2, r8
+ strh r2, [r7, #0x12]
+ strh r4, [r7, #0x16]
+ mov r3, #0x0
+ strh r3, [r7, #0x18]
+ strh r3, [r7, #0x1a]
+ ldr r1, ._56 + 56 @ 0x4000048
+ ldr r2, ._56 + 60 @ 0x3f1f
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x2
+ mov r0, #0x1f
+ strh r0, [r1]
+ ldr r2, ._56 + 64 @ 0x4000040
+ mov r3, #0x18
+ ldsh r1, [r7, r3]
+ lsl r1, r1, #0x6
+ add r0, r1, #0
+ add r0, r0, #0x38
+ lsl r0, r0, #0x8
+ add r1, r1, #0x78
+ add r0, r0, r1
+ strh r0, [r2]
+ ldr r1, ._56 + 68 @ 0x4000044
+ ldr r2, ._56 + 72 @ 0x848
+ add r0, r2, #0
+ strh r0, [r1]
+ sub r1, r1, #0x2
+ ldr r3, ._56 + 76 @ 0x31bf
+ add r0, r3, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._56 + 80 @ 0x14f
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0xa
+ mov r0, #0xe1
+ strh r0, [r1]
+ ldr r0, ._56 + 84 @ 0x4000052
+ mov r3, #0x0
+ strh r3, [r0]
+ add r1, r1, #0x4
+ mov r0, #0x7
+ strh r0, [r1]
+ mov r2, #0x80
+ lsl r2, r2, #0x13
+ ldrh r0, [r2]
+ mov r3, #0xc0
+ lsl r3, r3, #0x7
+ add r1, r3, #0
+ orr r0, r0, r1
+ strh r0, [r2]
+ ldr r0, ._56 + 88 @ debug_80C3D2C
+ str r0, [r7]
+ add sp, sp, #0x28
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._57:
+ .align 2, 0
+._56:
+ .word gTasks
+ .word gSaveBlock2
+ .word gUnknown_Debug_083F7FD6+0x4
+ .word gUnknown_Debug_083F7FDE
+ .word gUnknown_Debug_083F7FE2
+ .word gUnknown_Debug_083F7FED
+ .word gUnknown_Debug_083F7FF6
+ .word gUnknown_Debug_083F8001
+ .word gUnknown_Debug_083F800C
+ .word gUnknown_Debug_083F8019
+ .word gUnknown_Debug_083F8022
+ .word gUnknown_Debug_083F8028
+ .word gSprites
+ .word gPokedexEntries
+ .word 0x4000048
+ .word 0x3f1f
+ .word 0x4000040
+ .word 0x4000044
+ .word 0x848
+ .word 0x31bf
+ .word 0x14f
+ .word 0x4000052
+ .word debug_80C3D2C+1
+
+ thumb_func_end debug_80C3A50
+
+ thumb_func_start debug_80C3D2C
+debug_80C3D2C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ add r7, r6, #0
+ ldr r4, ._60 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._58 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r0, ._60 + 4 @ debug_80C370C
+ bl SetMainCallback2
+ ldr r1, ._60 + 8 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._60 + 12 @ debug_80C373C
+ str r1, [r0]
+ b ._117
+._61:
+ .align 2, 0
+._60:
+ .word gMain
+ .word debug_80C370C+1
+ .word gTasks
+ .word debug_80C373C+1
+._58:
+ mov r5, #0x1
+ add r0, r5, #0
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._62 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._64 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldrh r1, [r0, #0x18]
+ mov r2, #0x1
+ eor r1, r1, r2
+ strh r1, [r0, #0x18]
+ b ._117
+._65:
+ .align 2, 0
+._64:
+ .word gTasks
+._62:
+ ldrh r1, [r4, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._66 @cond_branch
+ ldr r1, ._70 @ gTasks
+ lsl r2, r6, #0x2
+ add r0, r2, r6
+ lsl r0, r0, #0x3
+ add r3, r0, r1
+ mov r5, #0x18
+ ldsh r0, [r3, r5]
+ mov r8, r1
+ cmp r0, #0
+ beq ._67 @cond_branch
+ ldrh r1, [r4, #0x2c]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._68 @cond_branch
+ ldrh r0, [r3, #0x14]
+ add r0, r0, #0x10
+ b ._69
+._71:
+ .align 2, 0
+._70:
+ .word gTasks
+._68:
+ ldrh r0, [r3, #0x14]
+ add r0, r0, #0x1
+._69:
+ strh r0, [r3, #0x14]
+ add r0, r2, r7
+ lsl r0, r0, #0x3
+ mov r2, r8
+ add r1, r0, r2
+ ldrh r0, [r1, #0x14]
+ mov r6, #0x80
+ lsl r6, r6, #0x8
+ cmp r0, r6
+ bhi ._72 @cond_branch
+ b ._117
+._72:
+ strh r6, [r1, #0x14]
+ b ._117
+._67:
+ ldrh r1, [r4, #0x2c]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._75 @cond_branch
+ ldrh r0, [r3, #0x16]
+ add r0, r0, #0x10
+ b ._76
+._75:
+ ldrh r0, [r3, #0x16]
+ add r0, r0, #0x1
+._76:
+ strh r0, [r3, #0x16]
+ add r0, r2, r7
+ lsl r0, r0, #0x3
+ mov r4, r8
+ add r1, r0, r4
+ ldrh r0, [r1, #0x16]
+ mov r6, #0x80
+ lsl r6, r6, #0x8
+ cmp r0, r6
+ bhi ._77 @cond_branch
+ b ._117
+._77:
+ strh r6, [r1, #0x16]
+ b ._117
+._66:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._80 @cond_branch
+ ldr r1, ._84 @ gTasks
+ lsl r2, r6, #0x2
+ add r0, r2, r6
+ lsl r0, r0, #0x3
+ add r3, r0, r1
+ mov r5, #0x18
+ ldsh r0, [r3, r5]
+ mov r8, r1
+ cmp r0, #0
+ beq ._81 @cond_branch
+ ldrh r1, [r4, #0x2c]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._82 @cond_branch
+ ldrh r0, [r3, #0x14]
+ sub r0, r0, #0x10
+ b ._83
+._85:
+ .align 2, 0
+._84:
+ .word gTasks
+._82:
+ ldrh r0, [r3, #0x14]
+ sub r0, r0, #0x1
+._83:
+ strh r0, [r3, #0x14]
+ add r0, r2, r7
+ lsl r0, r0, #0x3
+ mov r2, r8
+ add r1, r0, r2
+ mov r4, #0x14
+ ldsh r0, [r1, r4]
+ cmp r0, #0xff
+ ble ._86 @cond_branch
+ b ._117
+._86:
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ strh r0, [r1, #0x14]
+ b ._117
+._81:
+ ldrh r1, [r4, #0x2c]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._89 @cond_branch
+ ldrh r0, [r3, #0x16]
+ sub r0, r0, #0x10
+ b ._90
+._89:
+ ldrh r0, [r3, #0x16]
+ sub r0, r0, #0x1
+._90:
+ strh r0, [r3, #0x16]
+ add r0, r2, r7
+ lsl r0, r0, #0x3
+ mov r5, r8
+ add r1, r0, r5
+ mov r2, #0x16
+ ldsh r0, [r1, r2]
+ cmp r0, #0xff
+ ble ._91 @cond_branch
+ b ._117
+._91:
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ strh r0, [r1, #0x16]
+ b ._117
+._80:
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._94 @cond_branch
+ ldr r0, ._97 @ gTasks
+ lsl r1, r6, #0x2
+ add r1, r1, r6
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ mov r4, #0x18
+ ldsh r0, [r1, r4]
+ cmp r0, #0
+ beq ._95 @cond_branch
+ ldrh r0, [r1, #0x10]
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x10]
+ b ._117
+._98:
+ .align 2, 0
+._97:
+ .word gTasks
+._95:
+ ldrh r0, [r1, #0x12]
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x12]
+ b ._117
+._94:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._100 @cond_branch
+ ldr r0, ._103 @ gTasks
+ lsl r1, r6, #0x2
+ add r1, r1, r6
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ mov r5, #0x18
+ ldsh r0, [r1, r5]
+ cmp r0, #0
+ beq ._101 @cond_branch
+ ldrh r0, [r1, #0x10]
+ add r0, r0, #0x1
+ strh r0, [r1, #0x10]
+ b ._117
+._104:
+ .align 2, 0
+._103:
+ .word gTasks
+._101:
+ ldrh r0, [r1, #0x12]
+ add r0, r0, #0x1
+ strh r0, [r1, #0x12]
+ b ._117
+._100:
+ mov r0, #0x8
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._106 @cond_branch
+ ldr r2, ._109 @ gTasks
+ lsl r3, r6, #0x2
+ add r0, r3, r6
+ lsl r0, r0, #0x3
+ add r6, r0, r2
+ ldrh r4, [r6, #0x8]
+ mov r0, #0x8
+ ldsh r1, [r6, r0]
+ ldr r0, ._109 + 4 @ 0x181
+ mov r8, r2
+ add r2, r3, #0
+ cmp r1, r0
+ bgt ._107 @cond_branch
+ add r0, r4, #1
+ strh r0, [r6, #0x8]
+ b ._108
+._110:
+ .align 2, 0
+._109:
+ .word gTasks
+ .word 0x181
+._107:
+ strh r5, [r6, #0x8]
+._108:
+ add r4, r2, r7
+ lsl r4, r4, #0x3
+ add r4, r4, r8
+ mov r2, #0xc
+ ldsh r1, [r4, r2]
+ b ._111
+._106:
+ mov r0, #0x4
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._112 @cond_branch
+ ldr r1, ._115 @ gTasks
+ lsl r2, r6, #0x2
+ add r0, r2, r6
+ lsl r0, r0, #0x3
+ add r3, r0, r1
+ ldrh r6, [r3, #0x8]
+ mov r4, #0x8
+ ldsh r0, [r3, r4]
+ mov r8, r1
+ cmp r0, #0x1
+ ble ._113 @cond_branch
+ sub r0, r6, #1
+ b ._114
+._116:
+ .align 2, 0
+._115:
+ .word gTasks
+._113:
+ mov r0, #0xc1
+ lsl r0, r0, #0x1
+._114:
+ strh r0, [r3, #0x8]
+ add r4, r2, r7
+ lsl r4, r4, #0x3
+ add r4, r4, r8
+ mov r5, #0xc
+ ldsh r1, [r4, r5]
+._111:
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ ldr r5, ._118 @ gSprites
+ add r0, r0, r5
+ bl DestroySprite
+ mov r0, #0xe
+ ldsh r1, [r4, r0]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r5
+ bl DestroySprite
+ ldr r0, ._118 + 4 @ debug_80C3A50
+ str r0, [r4]
+ b ._117
+._119:
+ .align 2, 0
+._118:
+ .word gSprites
+ .word debug_80C3A50+1
+._112:
+ ldr r0, ._120 @ gTasks
+ lsl r5, r7, #0x2
+ add r5, r5, r7
+ lsl r5, r5, #0x3
+ add r5, r5, r0
+ ldrh r4, [r5, #0x16]
+ ldrh r6, [r5, #0x12]
+ str r4, [sp]
+ mov r0, #0x1
+ add r1, r4, #0
+ mov r2, #0x0
+ mov r3, #0x0
+ bl SetOamMatrix
+ add r0, r4, #0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x4
+ bl debug_80C68CC
+ add r0, r6, #0
+ mov r1, #0x1
+ mov r2, #0x7
+ mov r3, #0x4
+ bl debug_80C68CC
+ ldr r2, ._120 + 4 @ gSprites
+ mov r8, r2
+ mov r4, #0xc
+ ldsh r1, [r5, r4]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r8
+ strh r6, [r0, #0x26]
+ ldrh r4, [r5, #0x14]
+ ldrh r6, [r5, #0x10]
+ str r4, [sp]
+ mov r0, #0x2
+ add r1, r4, #0
+ mov r2, #0x0
+ mov r3, #0x0
+ bl SetOamMatrix
+ add r0, r4, #0
+ mov r1, #0x19
+ mov r2, #0x3
+ mov r3, #0x4
+ bl debug_80C68CC
+ add r0, r6, #0
+ mov r1, #0x19
+ mov r2, #0x7
+ mov r3, #0x4
+ bl debug_80C68CC
+ mov r0, #0xe
+ ldsh r1, [r5, r0]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r8
+ strh r6, [r0, #0x26]
+ ldr r2, ._120 + 8 @ 0x4000040
+ mov r4, #0x18
+ ldsh r1, [r5, r4]
+ lsl r1, r1, #0x6
+ add r0, r1, #0
+ add r0, r0, #0x38
+ lsl r0, r0, #0x8
+ add r1, r1, #0x78
+ add r0, r0, r1
+ strh r0, [r2]
+._117:
+ add sp, sp, #0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._121:
+ .align 2, 0
+._120:
+ .word gTasks
+ .word gSprites
+ .word 0x4000040
+
+ thumb_func_end debug_80C3D2C
+
+ thumb_func_start debug_80C405C
+debug_80C405C:
+ push {r4, r5, lr}
+ add r4, r0, #0
+ lsl r1, r1, #0x10
+ lsr r5, r1, #0x10
+ mov r2, #0x0
+ mov r1, #0x0
+._122:
+ add r0, r4, r2
+ strb r1, [r0]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x9
+ bls ._122 @cond_branch
+ add r0, r4, r2
+ mov r1, #0xff
+ strb r1, [r0]
+ mov r0, #0xae
+ strb r0, [r4]
+ cmp r5, #0
+ beq ._125 @cond_branch
+ mov r2, #0x0
+ ldr r3, ._127 @ gSpeciesNames
+ mov r0, #0xb
+ add r1, r5, #0
+ mul r1, r1, r0
+ add r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._125 @cond_branch
+ add r5, r3, #0
+ add r3, r1, #0
+._126:
+ add r1, r4, r2
+ add r0, r2, r3
+ add r0, r0, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ add r0, r2, r3
+ add r0, r0, r5
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._125 @cond_branch
+ cmp r2, #0x9
+ bls ._126 @cond_branch
+._125:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._128:
+ .align 2, 0
+._127:
+ .word gSpeciesNames
+
+ thumb_func_end debug_80C405C
+
+ thumb_func_start debug_80C40C4
+debug_80C40C4:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ mov r5, #0x0
+ mov r6, sp
+._135:
+ cmp r7, #0
+ beq ._129 @cond_branch
+ mov r0, #0x64
+ add r1, r5, #0
+ mul r1, r1, r0
+ ldr r0, ._132 @ gEnemyParty
+ add r4, r1, r0
+ add r0, r4, #0
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ beq ._134 @cond_branch
+ add r0, r4, #0
+ bl CalculateMonStats
+ add r0, r4, #0
+ mov r1, #0x3a
+ bl GetMonData
+ strh r0, [r6]
+ add r0, r4, #0
+ mov r1, #0x39
+ mov r2, sp
+ bl SetMonData
+ b ._134
+._133:
+ .align 2, 0
+._132:
+ .word gEnemyParty
+._129:
+ mov r0, #0x64
+ add r1, r5, #0
+ mul r1, r1, r0
+ ldr r0, ._136 @ gPlayerParty
+ add r4, r1, r0
+ add r0, r4, #0
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ beq ._134 @cond_branch
+ add r0, r4, #0
+ bl CalculateMonStats
+ add r0, r4, #0
+ mov r1, #0x3a
+ bl GetMonData
+ strh r0, [r6]
+ add r0, r4, #0
+ mov r1, #0x39
+ mov r2, sp
+ bl SetMonData
+._134:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x5
+ bls ._135 @cond_branch
+ add sp, sp, #0x4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._137:
+ .align 2, 0
+._136:
+ .word gPlayerParty
+
+ thumb_func_end debug_80C40C4
+
+ thumb_func_start InitBattleForDebug
+InitBattleForDebug:
+ push {lr}
+ bl SavePlayerParty
+ ldr r1, ._138 @ gUnknown_Debug_2038A0C
+ ldr r0, ._138 + 4 @ gSaveBlock2
+ ldrb r2, [r0, #0x8]
+ mov r0, #0x0
+ strb r2, [r1, #0xd]
+ strb r0, [r1]
+ strb r0, [r1, #0x1]
+ strb r0, [r1, #0x2]
+ strb r0, [r1, #0x3]
+ strb r0, [r1, #0x4]
+ strb r0, [r1, #0x5]
+ strb r0, [r1, #0x6]
+ strb r0, [r1, #0x7]
+ strb r0, [r1, #0x8]
+ strb r0, [r1, #0xc]
+ ldr r1, ._138 + 8 @ byte_3005E30
+ str r0, [r1]
+ bl ZeroPlayerPartyMons
+ bl ZeroEnemyPartyMons
+ mov r0, #0x0
+ bl debug_80C4214
+ ldr r0, ._138 + 12 @ debug_80C47BC
+ mov r1, #0x0
+ bl CreateTask
+ pop {r0}
+ bx r0
+._139:
+ .align 2, 0
+._138:
+ .word gUnknown_Debug_2038A0C
+ .word gSaveBlock2
+ .word byte_3005E30
+ .word debug_80C47BC+1
+
+ thumb_func_end InitBattleForDebug
+
+ thumb_func_start debug_80C41A8
+debug_80C41A8:
+ push {lr}
+ ldr r1, ._140 @ gUnknown_Debug_2038A0C
+ mov r0, #0x0
+ strb r0, [r1, #0x1]
+ strb r0, [r1, #0x2]
+ bl ZeroPlayerPartyMons
+ bl ZeroEnemyPartyMons
+ mov r0, #0x0
+ bl debug_80C4214
+ ldr r0, ._140 + 4 @ debug_80C47BC
+ mov r1, #0x0
+ bl CreateTask
+ pop {r0}
+ bx r0
+._141:
+ .align 2, 0
+._140:
+ .word gUnknown_Debug_2038A0C
+ .word debug_80C47BC+1
+
+ thumb_func_end debug_80C41A8
+
+ thumb_func_start debug_80C41D4
+debug_80C41D4:
+ push {lr}
+ mov r0, #0x0
+ bl debug_80C40C4
+ mov r0, #0x0
+ bl debug_80C4214
+ ldr r0, ._142 @ debug_80C42B8
+ mov r1, #0x0
+ bl CreateTask
+ pop {r0}
+ bx r0
+._143:
+ .align 2, 0
+._142:
+ .word debug_80C42B8+1
+
+ thumb_func_end debug_80C41D4
+
+ thumb_func_start debug_80C41F4
+debug_80C41F4:
+ push {lr}
+ mov r0, #0x1
+ bl debug_80C40C4
+ mov r0, #0x1
+ bl debug_80C4214
+ ldr r0, ._144 @ debug_80C42B8
+ mov r1, #0x0
+ bl CreateTask
+ pop {r0}
+ bx r0
+._145:
+ .align 2, 0
+._144:
+ .word debug_80C42B8+1
+
+ thumb_func_end debug_80C41F4
+
+ thumb_func_start debug_80C4214
+debug_80C4214:
+ push {r4, r5, r6, lr}
+ bl debug_80C35DC
+ ldr r6, ._146 @ 0x4000040
+ mov r4, #0x0
+ strh r4, [r6]
+ ldr r5, ._146 + 4 @ 0x4000044
+ strh r4, [r5]
+ ldr r0, ._146 + 8 @ 0x4000042
+ strh r4, [r0]
+ add r0, r0, #0x4
+ strh r4, [r0]
+ ldr r1, ._146 + 12 @ 0x4000048
+ ldr r2, ._146 + 16 @ 0x1111
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x2
+ mov r0, #0x31
+ strh r0, [r1]
+ add r1, r1, #0x6
+ mov r0, #0xe1
+ strh r0, [r1]
+ ldr r0, ._146 + 20 @ 0x4000052
+ strh r4, [r0]
+ add r1, r1, #0x4
+ mov r0, #0x7
+ strh r0, [r1]
+ ldr r3, ._146 + 24 @ 0x4000208
+ ldrh r2, [r3]
+ strh r4, [r3]
+ ldr r4, ._146 + 28 @ 0x4000200
+ ldrh r0, [r4]
+ mov r1, #0x1
+ orr r0, r0, r1
+ strh r0, [r4]
+ strh r2, [r3]
+ ldr r0, ._146 + 32 @ debug_80C3758
+ bl SetVBlankCallback
+ ldr r0, ._146 + 36 @ debug_80C370C
+ bl SetMainCallback2
+ mov r1, #0x80
+ lsl r1, r1, #0x13
+ ldr r2, ._146 + 40 @ 0x7140
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._146 + 44 @ 0x1ef
+ add r0, r1, #0
+ strh r0, [r6]
+ ldr r2, ._146 + 48 @ 0x819f
+ add r0, r2, #0
+ strh r0, [r5]
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._147:
+ .align 2, 0
+._146:
+ .word 0x4000040
+ .word 0x4000044
+ .word 0x4000042
+ .word 0x4000048
+ .word 0x1111
+ .word 0x4000052
+ .word 0x4000208
+ .word 0x4000200
+ .word debug_80C3758+1
+ .word debug_80C370C+1
+ .word 0x7140
+ .word 0x1ef
+ .word 0x819f
+
+ thumb_func_end debug_80C4214
+
+ thumb_func_start debug_80C42B8
+debug_80C42B8:
+ push {r4, r5, lr}
+ add sp, sp, #0xffffffe4
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r1, ._150 @ gUnknown_Debug_083F8194
+ mov r0, sp
+ mov r2, #0xc
+ bl memcpy
+ add r4, sp, #0xc
+ ldr r1, ._150 + 4 @ gUnknown_Debug_083F81A0
+ add r0, r4, #0
+ mov r2, #0xd
+ bl memcpy
+ mov r0, #0x0
+ mov r1, #0x10
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r0, sp
+ mov r1, #0x1
+ mov r2, #0x11
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #0x11
+ bl Menu_PrintText
+ bl debug_80C4694
+ bl debug_80C4704
+ ldr r0, ._150 + 8 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._148 @cond_branch
+ ldr r0, ._150 + 12 @ gTasks
+ lsl r1, r5, #0x2
+ add r1, r1, r5
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._150 + 16 @ debug_80C44EC
+ b ._149
+._151:
+ .align 2, 0
+._150:
+ .word gUnknown_Debug_083F8194
+ .word gUnknown_Debug_083F81A0
+ .word gUnknown_Debug_2038A0C
+ .word gTasks
+ .word debug_80C44EC+1
+._148:
+ ldr r0, ._152 @ gTasks
+ lsl r1, r5, #0x2
+ add r1, r1, r5
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._152 + 4 @ debug_80C4348
+._149:
+ str r0, [r1]
+ add sp, sp, #0x1c
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._153:
+ .align 2, 0
+._152:
+ .word gTasks
+ .word debug_80C4348+1
+
+ thumb_func_end debug_80C42B8
+
+ thumb_func_start debug_80C4348
+debug_80C4348:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r0, ._154 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x1]
+ lsl r0, r0, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ str r1, [sp]
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r1, ._154 + 4 @ 0x4000042
+ ldr r2, ._154 + 8 @ 0x177
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ add r2, r2, #0x8
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._154 + 12 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._154 + 16 @ debug_80C43A8
+ str r1, [r0]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._155:
+ .align 2, 0
+._154:
+ .word gUnknown_Debug_2038A0C
+ .word 0x4000042
+ .word 0x177
+ .word gTasks
+ .word debug_80C43A8+1
+
+ thumb_func_end debug_80C4348
+
+ thumb_func_start debug_80C43A8
+debug_80C43A8:
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r1, ._158 @ gMain
+ ldrh r2, [r1, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r2
+ add r3, r1, #0
+ cmp r0, #0
+ beq ._156 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r0, ._158 + 4 @ gUnknown_Debug_2038A0C
+ ldrb r1, [r0, #0x1]
+ mov r0, #0x64
+ mul r0, r0, r1
+ ldr r1, ._158 + 8 @ gPlayerParty
+ add r0, r0, r1
+ ldr r1, ._158 + 12 @ debug_80C41D4
+ bl debug_sub_80A433C
+ add r0, r4, #0
+ bl DestroyTask
+ b ._180
+._159:
+ .align 2, 0
+._158:
+ .word gMain
+ .word gUnknown_Debug_2038A0C
+ .word gPlayerParty
+ .word debug_80C41D4+1
+._156:
+ mov r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._160 @cond_branch
+ ldr r0, ._162 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._162 + 4 @ debug_80C4F48
+ str r0, [r1]
+ b ._180
+._163:
+ .align 2, 0
+._162:
+ .word gTasks
+ .word debug_80C4F48+1
+._160:
+ mov r0, #0x8
+ and r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r1, #0
+ beq ._164 @cond_branch
+ bl debug_80C4774
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._180 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ bl CalculatePlayerPartyCount
+ bl CalculateEnemyPartyCount
+ ldr r0, ._167 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._167 + 4 @ debug_80C4D14
+ str r0, [r1]
+ b ._180
+._168:
+ .align 2, 0
+._167:
+ .word gTasks
+ .word debug_80C4D14+1
+._164:
+ mov r0, #0x88
+ lsl r0, r0, #0x1
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._169 @cond_branch
+ str r1, [sp]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r0, ._171 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._171 + 4 @ debug_80C44EC
+ str r0, [r1]
+ b ._180
+._172:
+ .align 2, 0
+._171:
+ .word gTasks
+ .word debug_80C44EC+1
+._169:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._174 @cond_branch
+ ldr r1, ._176 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r1, #0x1]
+ cmp r0, #0
+ beq ._174 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1, #0x1]
+ b ._175
+._177:
+ .align 2, 0
+._176:
+ .word gUnknown_Debug_2038A0C
+._174:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._180 @cond_branch
+ ldr r5, ._181 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r5, #0x1]
+ cmp r0, #0x4
+ bhi ._180 @cond_branch
+ add r1, r0, #0
+ mov r0, #0x64
+ mul r0, r0, r1
+ ldr r1, ._181 + 4 @ gPlayerParty
+ add r0, r0, r1
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ beq ._180 @cond_branch
+ ldrb r0, [r5, #0x1]
+ add r0, r0, #0x1
+ strb r0, [r5, #0x1]
+._175:
+ ldr r1, ._181 + 8 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._181 + 12 @ debug_80C4348
+ str r1, [r0]
+._180:
+ add sp, sp, #0x4
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._182:
+ .align 2, 0
+._181:
+ .word gUnknown_Debug_2038A0C
+ .word gPlayerParty
+ .word gTasks
+ .word debug_80C4348+1
+
+ thumb_func_end debug_80C43A8
+
+ thumb_func_start debug_80C44EC
+debug_80C44EC:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r0, ._183 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x2]
+ lsl r0, r0, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ str r1, [sp]
+ mov r1, #0x10
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r1, ._183 + 4 @ 0x4000042
+ ldr r2, ._183 + 8 @ 0x79ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._183 + 12 @ 0x17f
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._183 + 16 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._183 + 20 @ debug_80C4550
+ str r1, [r0]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._184:
+ .align 2, 0
+._183:
+ .word gUnknown_Debug_2038A0C
+ .word 0x4000042
+ .word 0x79ef
+ .word 0x17f
+ .word gTasks
+ .word debug_80C4550+1
+
+ thumb_func_end debug_80C44EC
+
+ thumb_func_start debug_80C4550
+debug_80C4550:
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r1, ._187 @ gMain
+ ldrh r2, [r1, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r2
+ add r3, r1, #0
+ cmp r0, #0
+ beq ._185 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r0, ._187 + 4 @ gUnknown_Debug_2038A0C
+ ldrb r1, [r0, #0x2]
+ mov r0, #0x64
+ mul r0, r0, r1
+ ldr r1, ._187 + 8 @ gEnemyParty
+ add r0, r0, r1
+ ldr r1, ._187 + 12 @ debug_80C41F4
+ bl debug_sub_80A433C
+ add r0, r4, #0
+ bl DestroyTask
+ b ._209
+._188:
+ .align 2, 0
+._187:
+ .word gMain
+ .word gUnknown_Debug_2038A0C
+ .word gEnemyParty
+ .word debug_80C41F4+1
+._185:
+ mov r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._189 @cond_branch
+ ldr r0, ._191 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._191 + 4 @ debug_80C4F48
+ str r0, [r1]
+ b ._209
+._192:
+ .align 2, 0
+._191:
+ .word gTasks
+ .word debug_80C4F48+1
+._189:
+ mov r0, #0x8
+ and r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r1, #0
+ beq ._193 @cond_branch
+ bl debug_80C4774
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._209 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ bl CalculatePlayerPartyCount
+ bl CalculateEnemyPartyCount
+ ldr r0, ._196 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._196 + 4 @ debug_80C4D14
+ str r0, [r1]
+ b ._209
+._197:
+ .align 2, 0
+._196:
+ .word gTasks
+ .word debug_80C4D14+1
+._193:
+ mov r0, #0x88
+ lsl r0, r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._198 @cond_branch
+ str r1, [sp]
+ mov r0, #0x0
+ mov r1, #0x10
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r0, ._200 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._200 + 4 @ debug_80C4348
+ str r0, [r1]
+ b ._209
+._201:
+ .align 2, 0
+._200:
+ .word gTasks
+ .word debug_80C4348+1
+._198:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._203 @cond_branch
+ ldr r1, ._205 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r1, #0x2]
+ cmp r0, #0
+ beq ._203 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1, #0x2]
+ b ._204
+._206:
+ .align 2, 0
+._205:
+ .word gUnknown_Debug_2038A0C
+._203:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._209 @cond_branch
+ ldr r5, ._210 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r5, #0x2]
+ cmp r0, #0x4
+ bhi ._209 @cond_branch
+ add r1, r0, #0
+ mov r0, #0x64
+ mul r0, r0, r1
+ ldr r1, ._210 + 4 @ gEnemyParty
+ add r0, r0, r1
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ beq ._209 @cond_branch
+ ldrb r0, [r5, #0x2]
+ add r0, r0, #0x1
+ strb r0, [r5, #0x2]
+._204:
+ ldr r1, ._210 + 8 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._210 + 12 @ debug_80C44EC
+ str r1, [r0]
+._209:
+ add sp, sp, #0x4
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._211:
+ .align 2, 0
+._210:
+ .word gUnknown_Debug_2038A0C
+ .word gEnemyParty
+ .word gTasks
+ .word debug_80C44EC+1
+
+ thumb_func_end debug_80C4550
+
+ thumb_func_start debug_80C4694
+debug_80C4694:
+ push {r4, r5, lr}
+ add sp, sp, #0xffffffe4
+ ldr r1, ._213 @ gUnknown_Debug_083F81AD
+ mov r0, sp
+ mov r2, #0xd
+ bl memcpy
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ mov r0, sp
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r4, #0x0
+ add r5, sp, #0x10
+._212:
+ mov r0, #0x64
+ mul r0, r0, r4
+ ldr r1, ._213 + 4 @ gPlayerParty
+ add r0, r0, r1
+ mov r1, #0xb
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r5, #0
+ bl debug_80C405C
+ lsl r2, r4, #0x19
+ mov r0, #0xc0
+ lsl r0, r0, #0x12
+ add r2, r2, r0
+ lsr r2, r2, #0x18
+ add r0, r5, #0
+ mov r1, #0x2
+ bl Menu_PrintText
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x5
+ bls ._212 @cond_branch
+ add sp, sp, #0x1c
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._214:
+ .align 2, 0
+._213:
+ .word gUnknown_Debug_083F81AD
+ .word gPlayerParty
+
+ thumb_func_end debug_80C4694
+
+ thumb_func_start debug_80C4704
+debug_80C4704:
+ push {r4, r5, lr}
+ add sp, sp, #0xffffffe4
+ ldr r1, ._216 @ gUnknown_Debug_083F81BA
+ mov r0, sp
+ mov r2, #0xd
+ bl memcpy
+ mov r0, #0xf
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ mov r0, sp
+ mov r1, #0x11
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r4, #0x0
+ add r5, sp, #0x10
+._215:
+ mov r0, #0x64
+ mul r0, r0, r4
+ ldr r1, ._216 + 4 @ gEnemyParty
+ add r0, r0, r1
+ mov r1, #0xb
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r5, #0
+ bl debug_80C405C
+ lsl r2, r4, #0x19
+ mov r0, #0xc0
+ lsl r0, r0, #0x12
+ add r2, r2, r0
+ lsr r2, r2, #0x18
+ add r0, r5, #0
+ mov r1, #0x11
+ bl Menu_PrintText
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x5
+ bls ._215 @cond_branch
+ add sp, sp, #0x1c
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._217:
+ .align 2, 0
+._216:
+ .word gUnknown_Debug_083F81BA
+ .word gEnemyParty
+
+ thumb_func_end debug_80C4704
+
+ thumb_func_start debug_80C4774
+debug_80C4774:
+ push {r4, lr}
+ ldr r0, ._221 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0xc]
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x64
+ add r4, r0, #0
+ mul r4, r4, r1
+ ldr r0, ._221 + 4 @ gPlayerParty
+ add r0, r4, r0
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ beq ._219 @cond_branch
+ ldr r0, ._221 + 8 @ gEnemyParty
+ add r0, r4, r0
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ beq ._219 @cond_branch
+ mov r0, #0x1
+ b ._220
+._222:
+ .align 2, 0
+._221:
+ .word gUnknown_Debug_2038A0C
+ .word gPlayerParty
+ .word gEnemyParty
+._219:
+ mov r0, #0x0
+._220:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_80C4774
+
+ thumb_func_start debug_80C47BC
+debug_80C47BC:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xffffffc0
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r1, ._224 @ gUnknown_Debug_083F81C7
+ mov r0, sp
+ mov r2, #0xf
+ bl memcpy
+ add r4, sp, #0x10
+ ldr r1, ._224 + 4 @ gUnknown_Debug_083F81A0
+ add r0, r4, #0
+ mov r2, #0xd
+ bl memcpy
+ add r6, sp, #0x20
+ ldr r1, ._224 + 8 @ gUnknown_Debug_083F81D6
+ add r0, r6, #0
+ mov r2, #0xf
+ bl memcpy
+ add r5, sp, #0x30
+ ldr r1, ._224 + 12 @ gUnknown_Debug_083F81E5
+ add r0, r5, #0
+ mov r2, #0x10
+ bl memcpy
+ mov r0, #0x0
+ mov r1, #0x10
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r0, sp
+ mov r1, #0x1
+ mov r2, #0x11
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #0x11
+ bl Menu_PrintText
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ add r0, r6, #0
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r4, #0x0
+ ldr r6, ._224 + 16 @ gUnknown_Debug_083F8068
+._223:
+ lsl r0, r4, #0x3
+ add r0, r0, r6
+ ldr r0, [r0]
+ lsl r2, r4, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r2, r2, r1
+ lsr r2, r2, #0x18
+ mov r1, #0x2
+ bl Menu_PrintText
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x4
+ bls ._223 @cond_branch
+ mov r0, #0xf
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ add r0, r5, #0
+ mov r1, #0x11
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._224 + 20 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x4]
+ bl debug_80C4C44
+ ldr r1, ._224 + 24 @ gTasks
+ lsl r0, r7, #0x2
+ add r0, r0, r7
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._224 + 28 @ debug_80C48A0
+ str r1, [r0]
+ add sp, sp, #0x40
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._225:
+ .align 2, 0
+._224:
+ .word gUnknown_Debug_083F81C7
+ .word gUnknown_Debug_083F81A0
+ .word gUnknown_Debug_083F81D6
+ .word gUnknown_Debug_083F81E5
+ .word gUnknown_Debug_083F8068
+ .word gUnknown_Debug_2038A0C
+ .word gTasks
+ .word debug_80C48A0+1
+
+ thumb_func_end debug_80C47BC
+
+ thumb_func_start debug_80C48A0
+debug_80C48A0:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r0, ._226 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x3]
+ lsl r0, r0, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ str r1, [sp]
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r1, ._226 + 4 @ 0x4000042
+ ldr r2, ._226 + 8 @ 0x177
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ add r2, r2, #0x8
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._226 + 12 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._226 + 16 @ debug_80C4900
+ str r1, [r0]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._227:
+ .align 2, 0
+._226:
+ .word gUnknown_Debug_2038A0C
+ .word 0x4000042
+ .word 0x177
+ .word gTasks
+ .word debug_80C4900+1
+
+ thumb_func_end debug_80C48A0
+
+ thumb_func_start debug_80C4900
+debug_80C4900:
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r1, ._230 @ gMain
+ ldrh r2, [r1, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r3, r1, #0
+ cmp r4, #0
+ beq ._228 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ mov r4, #0x0
+ str r4, [sp]
+ mov r1, #0x0
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r0, ._230 + 4 @ debug_80C370C
+ bl SetMainCallback2
+ bl LoadPlayerParty
+ ldr r1, ._230 + 8 @ gSaveBlock2
+ ldr r0, ._230 + 12 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0xd]
+ strb r0, [r1, #0x8]
+ ldr r0, ._230 + 16 @ gBattleTypeFlags
+ mov r1, #0x0
+ strh r4, [r0]
+ ldr r0, ._230 + 20 @ gUnknown_02023A14_50
+ strb r1, [r0]
+ ldr r1, ._230 + 24 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._230 + 28 @ debug_80C373C
+ b ._229
+._231:
+ .align 2, 0
+._230:
+ .word gMain
+ .word debug_80C370C+1
+ .word gSaveBlock2
+ .word gUnknown_Debug_2038A0C
+ .word gBattleTypeFlags
+ .word gUnknown_02023A14_50
+ .word gTasks
+ .word debug_80C373C+1
+._228:
+ mov r0, #0x8
+ and r0, r0, r2
+ cmp r0, #0
+ bne ._232 @cond_branch
+ mov r0, #0x1
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._233 @cond_branch
+._232:
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._236 @ gBattleTypeFlags
+ ldr r3, ._236 + 4 @ gUnknown_Debug_083F8068
+ ldr r2, ._236 + 8 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r2, #0x3]
+ lsl r0, r0, #0x3
+ add r0, r0, r3
+ ldrb r0, [r0, #0x4]
+ strh r0, [r1]
+ ldr r1, ._236 + 12 @ gUnknown_02023A14_50
+ mov r0, #0x8
+ strb r0, [r1]
+ ldrb r0, [r2, #0x3]
+ lsl r0, r0, #0x3
+ add r0, r0, r3
+ ldrb r0, [r0, #0x5]
+ strb r0, [r2, #0xc]
+ ldrb r0, [r2, #0x3]
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bhi ._234 @cond_branch
+ str r4, [sp]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r0, ._236 + 16 @ gTasks
+ lsl r1, r5, #0x2
+ add r1, r1, r5
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._236 + 20 @ debug_80C4A60
+ str r0, [r1]
+ b ._247
+._237:
+ .align 2, 0
+._236:
+ .word gBattleTypeFlags
+ .word gUnknown_Debug_083F8068
+ .word gUnknown_Debug_2038A0C
+ .word gUnknown_02023A14_50
+ .word gTasks
+ .word debug_80C4A60+1
+._234:
+ ldr r0, ._239 @ gTasks
+ lsl r1, r5, #0x2
+ add r1, r1, r5
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._239 + 4 @ debug_80C4F48
+ str r0, [r1]
+ b ._247
+._240:
+ .align 2, 0
+._239:
+ .word gTasks
+ .word debug_80C4F48+1
+._233:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._242 @cond_branch
+ ldr r1, ._244 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r1, #0x3]
+ cmp r0, #0
+ beq ._242 @cond_branch
+ sub r0, r0, #0x1
+ b ._243
+._245:
+ .align 2, 0
+._244:
+ .word gUnknown_Debug_2038A0C
+._242:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._247 @cond_branch
+ ldr r1, ._248 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r1, #0x3]
+ cmp r0, #0x1
+ bhi ._247 @cond_branch
+ add r0, r0, #0x1
+._243:
+ strb r0, [r1, #0x3]
+ ldr r1, ._248 + 4 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._248 + 8 @ debug_80C48A0
+._229:
+ str r1, [r0]
+._247:
+ add sp, sp, #0x4
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._249:
+ .align 2, 0
+._248:
+ .word gUnknown_Debug_2038A0C
+ .word gTasks
+ .word debug_80C48A0+1
+
+ thumb_func_end debug_80C4900
+
+ thumb_func_start debug_80C4A60
+debug_80C4A60:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r0, ._250 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x5]
+ lsl r0, r0, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ str r1, [sp]
+ mov r1, #0x10
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r1, ._250 + 4 @ 0x4000042
+ ldr r2, ._250 + 8 @ 0x79ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._250 + 12 @ 0x17f
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._250 + 16 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._250 + 20 @ debug_80C4AC4
+ str r1, [r0]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._251:
+ .align 2, 0
+._250:
+ .word gUnknown_Debug_2038A0C
+ .word 0x4000042
+ .word 0x79ef
+ .word 0x17f
+ .word gTasks
+ .word debug_80C4AC4+1
+
+ thumb_func_end debug_80C4A60
+
+ thumb_func_start debug_80C4AC4
+debug_80C4AC4:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r7, ._255 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r7, #0x4]
+ mov ip, r0
+ ldrb r5, [r7, #0x5]
+ mov r1, ip
+ add r0, r1, r5
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r2, ._255 + 4 @ gMain
+ mov r8, r2
+ ldrh r2, [r2, #0x2e]
+ mov r3, #0x1
+ and r3, r3, r2
+ add r4, r7, #0
+ cmp r3, #0
+ beq ._252 @cond_branch
+ ldr r0, ._255 + 8 @ gUnknown_Debug_083F80D8
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r1, [r1]
+ ldr r3, ._255 + 12 @ byte_3005E30
+ ldr r2, [r3]
+ add r0, r2, #0
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._253 @cond_branch
+ ldr r0, ._255 + 16 @ 0xffff
+ eor r1, r1, r0
+ and r2, r2, r1
+ b ._254
+._256:
+ .align 2, 0
+._255:
+ .word gUnknown_Debug_2038A0C
+ .word gMain
+ .word gUnknown_Debug_083F80D8
+ .word byte_3005E30
+ .word 0xffff
+._253:
+ orr r2, r2, r1
+._254:
+ str r2, [r3]
+ ldrb r0, [r4, #0x4]
+ bl debug_80C4C44
+ ldr r1, ._258 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._258 + 4 @ debug_80C4A60
+ str r1, [r0]
+ b ._274
+._259:
+ .align 2, 0
+._258:
+ .word gTasks
+ .word debug_80C4A60+1
+._252:
+ mov r0, #0x2
+ and r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0
+ beq ._260 @cond_branch
+ str r3, [sp]
+ mov r0, #0x0
+ mov r1, #0x10
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r0, ._262 @ gTasks
+ lsl r1, r6, #0x2
+ add r1, r1, r6
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._262 + 4 @ debug_80C48A0
+ b ._261
+._263:
+ .align 2, 0
+._262:
+ .word gTasks
+ .word debug_80C48A0+1
+._260:
+ mov r0, #0x8
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._264 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._266 @ gTrainerBattleOpponent
+ mov r2, #0x80
+ lsl r2, r2, #0x3
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._266 + 4 @ 0x2017000
+ ldrb r2, [r1, #0x1]
+ mov r0, #0x11
+ neg r0, r0
+ and r0, r0, r2
+ strb r0, [r1, #0x1]
+ mov r0, #0xac
+ strb r0, [r1, #0x2]
+ mov r0, #0xff
+ strb r0, [r1, #0x3]
+ strb r4, [r1, #0x9]
+ strb r4, [r1, #0xa]
+ strb r4, [r1, #0xb]
+ strb r4, [r1, #0xc]
+ ldr r1, ._266 + 8 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._266 + 12 @ debug_80C4F48
+ str r1, [r0]
+ b ._274
+._267:
+ .align 2, 0
+._266:
+ .word gTrainerBattleOpponent
+ .word 0x2017000
+ .word gTasks
+ .word debug_80C4F48+1
+._264:
+ mov r0, r8
+ ldrh r1, [r0, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._268 @cond_branch
+ lsl r0, r5, #0x18
+ cmp r0, #0
+ beq ._269 @cond_branch
+ sub r0, r5, #1
+ strb r0, [r7, #0x5]
+ b ._277
+._269:
+ mov r1, ip
+ lsl r0, r1, #0x18
+ cmp r0, #0
+ beq ._277 @cond_branch
+ mov r0, ip
+ sub r0, r0, #0x1
+ b ._272
+._268:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._274 @cond_branch
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x8
+ bhi ._274 @cond_branch
+ cmp r0, #0x4
+ bhi ._275 @cond_branch
+ add r0, r5, #1
+ strb r0, [r7, #0x5]
+ b ._277
+._275:
+ mov r2, ip
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x3
+ bhi ._277 @cond_branch
+ mov r0, ip
+ add r0, r0, #0x1
+._272:
+ strb r0, [r7, #0x4]
+ ldrb r0, [r7, #0x4]
+ bl debug_80C4C44
+._277:
+ ldr r0, ._278 @ gTasks
+ lsl r1, r6, #0x2
+ add r1, r1, r6
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._278 + 4 @ debug_80C4A60
+._261:
+ str r0, [r1]
+._274:
+ add sp, sp, #0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._279:
+ .align 2, 0
+._278:
+ .word gTasks
+ .word debug_80C4A60+1
+
+ thumb_func_end debug_80C4AC4
+
+ thumb_func_start debug_80C4C44
+debug_80C4C44:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xfffffff0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov sl, r0
+ mov r2, #0x0
+ mov r5, sp
+._290:
+ mov r0, sl
+ add r6, r2, r0
+ add r4, r6, #0
+ add r1, r2, #1
+ mov r8, r1
+ cmp r4, #0x9
+ bgt ._280 @cond_branch
+ mov r3, #0x0
+ ldr r1, ._288 @ gUnknown_Debug_083F80D8
+ lsl r0, r4, #0x3
+ add r0, r0, r1
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ ldr r7, ._288 + 4 @ byte_3005E30
+ mov r9, r7
+ lsl r2, r2, #0x1
+ mov ip, r2
+ cmp r0, #0xff
+ beq ._282 @cond_branch
+ add r7, r1, #0
+._283:
+ add r0, r3, #3
+ mov r1, sp
+ add r2, r1, r0
+ lsl r1, r6, #0x3
+ add r1, r1, r7
+ ldr r0, [r1]
+ add r0, r0, r3
+ ldrb r0, [r0]
+ strb r0, [r2]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ ldr r0, [r1]
+ add r0, r0, r3
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._282 @cond_branch
+ cmp r3, #0xb
+ bls ._283 @cond_branch
+._282:
+ cmp r3, #0xb
+ bhi ._284 @cond_branch
+ mov r1, #0x0
+._285:
+ add r0, r3, #3
+ add r0, r0, sp
+ strb r1, [r0]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ cmp r3, #0xb
+ bls ._285 @cond_branch
+._284:
+ mov r0, #0xff
+ strb r0, [r5, #0xe]
+ mov r0, #0xfc
+ strb r0, [r5]
+ mov r2, #0x1
+ strb r2, [r5, #0x1]
+ add r1, r2, #0
+ LSL r1, r4
+ mov r3, r9
+ ldr r0, [r3]
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._286 @cond_branch
+ mov r0, #0x3
+ strb r0, [r5, #0x2]
+ b ._287
+._289:
+ .align 2, 0
+._288:
+ .word gUnknown_Debug_083F80D8
+ .word byte_3005E30
+._286:
+ strb r2, [r5, #0x2]
+._287:
+ mov r2, ip
+ add r2, r2, #0x3
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r0, sp
+ mov r1, #0x11
+ bl Menu_PrintText
+._280:
+ mov r7, r8
+ lsl r0, r7, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x5
+ bls ._290 @cond_branch
+ add sp, sp, #0x10
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C4C44
+
+ thumb_func_start debug_80C4D14
+debug_80C4D14:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xffffffd0
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r1, ._291 @ gUnknown_Debug_083F81C7
+ mov r0, sp
+ mov r2, #0xf
+ bl memcpy
+ add r5, sp, #0x10
+ ldr r1, ._291 + 4 @ gUnknown_Debug_083F81F5
+ add r0, r5, #0
+ mov r2, #0xd
+ bl memcpy
+ add r6, sp, #0x20
+ ldr r1, ._291 + 8 @ gUnknown_Debug_083F8202
+ add r0, r6, #0
+ mov r2, #0xf
+ bl memcpy
+ mov r0, #0x0
+ mov r1, #0x10
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r0, sp
+ mov r1, #0x1
+ mov r2, #0x11
+ bl Menu_PrintText
+ add r0, r5, #0
+ mov r1, #0x14
+ mov r2, #0x11
+ bl Menu_PrintText
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ add r0, r6, #0
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._291 + 12 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x6]
+ bl debug_80C4F00
+ mov r0, #0xf
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r1, ._291 + 16 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._291 + 20 @ debug_80C4DB8
+ str r1, [r0]
+ add sp, sp, #0x30
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._292:
+ .align 2, 0
+._291:
+ .word gUnknown_Debug_083F81C7
+ .word gUnknown_Debug_083F81F5
+ .word gUnknown_Debug_083F8202
+ .word gUnknown_Debug_2038A0C
+ .word gTasks
+ .word debug_80C4DB8+1
+
+ thumb_func_end debug_80C4D14
+
+ thumb_func_start debug_80C4DB8
+debug_80C4DB8:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r0, ._293 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x7]
+ lsl r0, r0, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ str r1, [sp]
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r1, ._293 + 4 @ 0x4000042
+ ldr r2, ._293 + 8 @ 0x177
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ add r2, r2, #0x8
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._293 + 12 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._293 + 16 @ debug_80C4E18
+ str r1, [r0]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._294:
+ .align 2, 0
+._293:
+ .word gUnknown_Debug_2038A0C
+ .word 0x4000042
+ .word 0x177
+ .word gTasks
+ .word debug_80C4E18+1
+
+ thumb_func_end debug_80C4DB8
+
+ thumb_func_start debug_80C4E18
+debug_80C4E18:
+ push {r4, r5, r6, r7, lr}
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r5, ._297 @ gUnknown_Debug_2038A0C
+ ldrb r3, [r5, #0x6]
+ ldrb r2, [r5, #0x7]
+ add r0, r3, r2
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r7, ._297 + 4 @ gMain
+ ldrh r1, [r7, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._295 @cond_branch
+ ldr r0, ._297 + 8 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._297 + 12 @ debug_80C42B8
+ b ._296
+._298:
+ .align 2, 0
+._297:
+ .word gUnknown_Debug_2038A0C
+ .word gMain
+ .word gTasks
+ .word debug_80C42B8+1
+._295:
+ mov r0, #0x8
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._299 @cond_branch
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._300 @cond_branch
+._299:
+ mov r0, #0x5
+ bl PlaySE
+ ldr r2, ._302 @ gBattleTerrain
+ ldr r1, ._302 + 4 @ gUnknown_Debug_083F814C
+ lsl r0, r6, #0x3
+ add r0, r0, r1
+ ldrb r0, [r0, #0x4]
+ strb r0, [r2]
+ ldr r1, ._302 + 8 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._302 + 12 @ debug_80C5158
+ str r1, [r0]
+ b ._310
+._303:
+ .align 2, 0
+._302:
+ .word gBattleTerrain
+ .word gUnknown_Debug_083F814C
+ .word gTasks
+ .word debug_80C5158+1
+._300:
+ ldrh r1, [r7, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._304 @cond_branch
+ lsl r0, r2, #0x18
+ cmp r0, #0
+ beq ._305 @cond_branch
+ sub r0, r2, #1
+ strb r0, [r5, #0x7]
+ b ._313
+._305:
+ lsl r0, r3, #0x18
+ cmp r0, #0
+ beq ._313 @cond_branch
+ sub r0, r3, #1
+ b ._308
+._304:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._310 @cond_branch
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x7
+ bhi ._310 @cond_branch
+ cmp r0, #0x4
+ bhi ._311 @cond_branch
+ add r0, r2, #1
+ strb r0, [r5, #0x7]
+ b ._313
+._311:
+ lsl r0, r3, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x2
+ bhi ._313 @cond_branch
+ add r0, r3, #1
+._308:
+ strb r0, [r5, #0x6]
+ ldrb r0, [r5, #0x6]
+ bl debug_80C4F00
+._313:
+ ldr r0, ._314 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._314 + 4 @ debug_80C4DB8
+._296:
+ str r0, [r1]
+._310:
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._315:
+ .align 2, 0
+._314:
+ .word gTasks
+ .word debug_80C4DB8+1
+
+ thumb_func_end debug_80C4E18
+
+ thumb_func_start debug_80C4F00
+debug_80C4F00:
+ push {r4, r5, r6, lr}
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ mov r0, #0x1
+ mov r1, #0x3
+ mov r2, #0xd
+ mov r3, #0xe
+ bl Menu_BlankWindowRect
+ mov r4, #0x0
+ ldr r6, ._318 @ gUnknown_Debug_083F814C
+._317:
+ cmp r4, #0x8
+ bhi ._316 @cond_branch
+ add r0, r4, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r6
+ ldr r0, [r0]
+ lsl r2, r4, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r2, r2, r1
+ lsr r2, r2, #0x18
+ mov r1, #0x2
+ bl Menu_PrintText
+._316:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x5
+ bls ._317 @cond_branch
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._319:
+ .align 2, 0
+._318:
+ .word gUnknown_Debug_083F814C
+
+ thumb_func_end debug_80C4F00
+
+ thumb_func_start debug_80C4F48
+debug_80C4F48:
+ push {r4, r5, r6, lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6}
+ add sp, sp, #0xffffffc4
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r1, ._320 @ gUnknown_Debug_083F8211
+ mov r0, sp
+ mov r2, #0x11
+ bl memcpy
+ add r6, sp, #0x14
+ ldr r1, ._320 + 4 @ gUnknown_Debug_083F81A0
+ add r0, r6, #0
+ mov r2, #0xd
+ bl memcpy
+ add r5, sp, #0x24
+ ldr r1, ._320 + 8 @ gUnknown_Debug_083F8222
+ add r0, r5, #0
+ mov r2, #0xd
+ bl memcpy
+ add r0, sp, #0x34
+ mov r9, r0
+ ldr r1, ._320 + 12 @ gUnknown_Debug_083F822F
+ mov r2, #0x4
+ bl memcpy
+ add r0, sp, #0x38
+ mov r8, r0
+ ldr r1, ._320 + 16 @ gUnknown_Debug_083F8233
+ mov r2, #0x4
+ bl memcpy
+ mov r0, #0x0
+ mov r1, #0x10
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r0, sp
+ mov r1, #0x1
+ mov r2, #0x11
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x14
+ mov r2, #0x11
+ bl Menu_PrintText
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ add r0, r5, #0
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r0, #0x1
+ mov r1, #0x3
+ mov r2, #0xd
+ mov r3, #0xe
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r0, r9
+ mov r1, #0x2
+ mov r2, #0x3
+ bl Menu_PrintText
+ mov r0, r8
+ mov r1, #0x2
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0xf
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r1, ._320 + 20 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._320 + 24 @ debug_80C5038
+ str r1, [r0]
+ add sp, sp, #0x3c
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._321:
+ .align 2, 0
+._320:
+ .word gUnknown_Debug_083F8211
+ .word gUnknown_Debug_083F81A0
+ .word gUnknown_Debug_083F8222
+ .word gUnknown_Debug_083F822F
+ .word gUnknown_Debug_083F8233
+ .word gTasks
+ .word debug_80C5038+1
+
+ thumb_func_end debug_80C4F48
+
+ thumb_func_start debug_80C5038
+debug_80C5038:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r0, ._322 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x8]
+ lsl r0, r0, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ str r1, [sp]
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r1, ._322 + 4 @ 0x4000042
+ ldr r2, ._322 + 8 @ 0x177
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ add r2, r2, #0x8
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._322 + 12 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._322 + 16 @ debug_80C5098
+ str r1, [r0]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._323:
+ .align 2, 0
+._322:
+ .word gUnknown_Debug_2038A0C
+ .word 0x4000042
+ .word 0x177
+ .word gTasks
+ .word debug_80C5098+1
+
+ thumb_func_end debug_80C5038
+
+ thumb_func_start debug_80C5098
+debug_80C5098:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r1, ._326 @ gMain
+ ldrh r2, [r1, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r2
+ add r3, r1, #0
+ cmp r0, #0
+ beq ._324 @cond_branch
+ ldr r0, ._326 + 4 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._326 + 8 @ debug_80C47BC
+ str r0, [r1]
+ b ._339
+._327:
+ .align 2, 0
+._326:
+ .word gMain
+ .word gTasks
+ .word debug_80C47BC+1
+._324:
+ mov r0, #0x8
+ and r0, r0, r2
+ cmp r0, #0
+ bne ._328 @cond_branch
+ mov r0, #0x1
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._329 @cond_branch
+._328:
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._331 @ gSaveBlock2
+ ldr r0, ._331 + 4 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x8]
+ strb r0, [r1, #0x8]
+ ldr r1, ._331 + 8 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._331 + 12 @ debug_80C42B8
+ b ._330
+._332:
+ .align 2, 0
+._331:
+ .word gSaveBlock2
+ .word gUnknown_Debug_2038A0C
+ .word gTasks
+ .word debug_80C42B8+1
+._329:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._334 @cond_branch
+ ldr r1, ._336 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r1, #0x8]
+ cmp r0, #0
+ beq ._334 @cond_branch
+ sub r0, r0, #0x1
+ b ._335
+._337:
+ .align 2, 0
+._336:
+ .word gUnknown_Debug_2038A0C
+._334:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._339 @cond_branch
+ ldr r1, ._340 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r1, #0x8]
+ cmp r0, #0
+ bne ._339 @cond_branch
+ add r0, r0, #0x1
+._335:
+ strb r0, [r1, #0x8]
+ ldr r1, ._340 + 4 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._340 + 8 @ debug_80C5038
+._330:
+ str r1, [r0]
+._339:
+ pop {r4}
+ pop {r0}
+ bx r0
+._341:
+ .align 2, 0
+._340:
+ .word gUnknown_Debug_2038A0C
+ .word gTasks
+ .word debug_80C5038+1
+
+ thumb_func_end debug_80C5098
+
+ thumb_func_start debug_80C5158
+debug_80C5158:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._342 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r0, ._342 + 4 @ debug_80C5174
+ str r0, [r1]
+ bx lr
+._343:
+ .align 2, 0
+._342:
+ .word gTasks
+ .word debug_80C5174+1
+
+ thumb_func_end debug_80C5158
+
+ thumb_func_start debug_80C5174
+debug_80C5174:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._344 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r0, ._344 + 4 @ debug_80C5190
+ str r0, [r1]
+ bx lr
+._345:
+ .align 2, 0
+._344:
+ .word gTasks
+ .word debug_80C5190+1
+
+ thumb_func_end debug_80C5174
+
+ thumb_func_start debug_80C5190
+debug_80C5190:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._346 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r0, ._346 + 4 @ debug_80C51AC
+ str r0, [r1]
+ bx lr
+._347:
+ .align 2, 0
+._346:
+ .word gTasks
+ .word debug_80C51AC+1
+
+ thumb_func_end debug_80C5190
+
+ thumb_func_start debug_80C51AC
+debug_80C51AC:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._348 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r0, ._348 + 4 @ debug_80C51C8
+ str r0, [r1]
+ bx lr
+._349:
+ .align 2, 0
+._348:
+ .word gTasks
+ .word debug_80C51C8+1
+
+ thumb_func_end debug_80C51AC
+
+ thumb_func_start debug_80C51C8
+debug_80C51C8:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._350 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r0, ._350 + 4 @ debug_80C51E4
+ str r0, [r1]
+ bx lr
+._351:
+ .align 2, 0
+._350:
+ .word gTasks
+ .word debug_80C51E4+1
+
+ thumb_func_end debug_80C51C8
+
+ thumb_func_start debug_80C51E4
+debug_80C51E4:
+ push {lr}
+ bl sub_80408BC
+ ldr r0, ._352 @ gMain
+ ldr r1, ._352 + 4 @ debug_80C41A8
+ str r1, [r0, #0x8]
+ ldr r0, ._352 + 8 @ unref_sub_800D684
+ bl SetMainCallback2
+ pop {r0}
+ bx r0
+._353:
+ .align 2, 0
+._352:
+ .word gMain
+ .word debug_80C41A8+1
+ .word unref_sub_800D684+1
+
+ thumb_func_end debug_80C51E4
+
+ thumb_func_start debug_80C5208
+debug_80C5208:
+ push {r4, r5, r6, lr}
+ ldr r1, ._355 @ gUnknown_Debug_2038A1C
+ ldr r0, ._355 + 4 @ 0x2018000
+ str r0, [r1]
+ mov r3, #0x0
+ add r6, r1, #0
+ ldr r4, ._355 + 8 @ gSaveBlock2
+ add r5, r6, #0
+ mov r2, #0x0
+._354:
+ ldr r0, [r5]
+ lsl r1, r3, #0x2
+ add r0, r0, #0x64
+ add r0, r0, r1
+ str r2, [r0]
+ add r0, r3, #1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ cmp r3, #0x3f
+ bls ._354 @cond_branch
+ ldr r2, [r6]
+ mov r0, #0xfc
+ str r0, [r2, #0x64]
+ ldrb r1, [r4, #0xa]
+ ldrb r0, [r4, #0xb]
+ lsl r0, r0, #0x8
+ orr r1, r1, r0
+ ldrb r0, [r4, #0xc]
+ lsl r0, r0, #0x10
+ orr r1, r1, r0
+ ldrb r0, [r4, #0xd]
+ lsl r0, r0, #0x18
+ orr r1, r1, r0
+ str r1, [r2, #0x70]
+ bl Random
+ add r4, r0, #0
+ bl Random
+ ldr r1, [r6]
+ lsl r4, r4, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ orr r4, r4, r0
+ str r4, [r1, #0x74]
+ mov r0, #0x1
+ str r0, [r1, #0x68]
+ str r0, [r1, #0x6c]
+ bl debug_80C5C94
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._356:
+ .align 2, 0
+._355:
+ .word gUnknown_Debug_2038A1C
+ .word 0x2018000
+ .word gSaveBlock2
+
+ thumb_func_end debug_80C5208
+
+ thumb_func_start debug_80C527C
+debug_80C527C:
+ push {r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r5, #0x0
+ ldr r7, ._359 @ gPlayerPartyCount
+._361:
+ mov r0, #0x64
+ add r1, r5, #0
+ mul r1, r1, r0
+ ldr r0, ._359 + 4 @ gPlayerParty
+ add r4, r1, r0
+ add r0, r4, #0
+ mov r1, #0xb
+ mov r2, #0x0
+ bl GetMonData
+ cmp r0, #0
+ bne ._357 @cond_branch
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x64
+ bl memcpy
+ add r0, r5, #1
+ strb r0, [r7]
+ mov r0, #0x0
+ b ._358
+._360:
+ .align 2, 0
+._359:
+ .word gPlayerPartyCount
+ .word gPlayerParty
+._357:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x5
+ bls ._361 @cond_branch
+ ldr r0, ._362 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ bl SendMonToPC
+ mov r0, #0x1
+._358:
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._363:
+ .align 2, 0
+._362:
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C527C
+
+ thumb_func_start InitCreatePokemon
+InitCreatePokemon:
+ push {r4, r5, lr}
+ add sp, sp, #0xffffffd4
+ ldr r1, ._364 @ gUnknown_Debug_083F8733
+ add r0, sp, #0x4
+ mov r2, #0x25
+ bl memcpy
+ bl debug_80C35DC
+ mov r0, #0x1
+ neg r0, r0
+ mov r4, #0x0
+ str r4, [sp]
+ mov r1, #0x0
+ mov r2, #0x10
+ mov r3, #0x0
+ bl BeginNormalPaletteFade
+ ldr r0, ._364 + 4 @ 0x4000050
+ mov r5, #0x0
+ strh r4, [r0]
+ add r0, r0, #0x2
+ strh r4, [r0]
+ add r0, r0, #0x2
+ strh r4, [r0]
+ ldr r3, ._364 + 8 @ 0x4000208
+ ldrh r2, [r3]
+ strh r4, [r3]
+ ldr r4, ._364 + 12 @ 0x4000200
+ ldrh r0, [r4]
+ mov r1, #0x1
+ orr r0, r0, r1
+ strh r0, [r4]
+ strh r2, [r3]
+ ldr r2, ._364 + 16 @ 0x4000004
+ ldrh r0, [r2]
+ mov r1, #0x8
+ orr r0, r0, r1
+ strh r0, [r2]
+ ldr r0, ._364 + 20 @ debug_80C3758
+ bl SetVBlankCallback
+ ldr r0, ._364 + 24 @ debug_80C370C
+ bl SetMainCallback2
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x3
+ bl Menu_DrawStdWindowFrame
+ add r0, sp, #0x4
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r1, #0x80
+ lsl r1, r1, #0x13
+ mov r2, #0x8a
+ lsl r2, r2, #0x5
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, ._364 + 28 @ debug_80C53A4
+ mov r1, #0x0
+ bl CreateTask
+ bl debug_80C5208
+ ldr r1, ._364 + 32 @ gUnknown_Debug_2038A1C
+ ldr r0, [r1]
+ mov r2, #0xb4
+ lsl r2, r2, #0x1
+ add r0, r0, r2
+ strb r5, [r0]
+ ldr r0, [r1]
+ ldr r1, ._364 + 36 @ 0x169
+ add r0, r0, r1
+ strb r5, [r0]
+ add sp, sp, #0x2c
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._365:
+ .align 2, 0
+._364:
+ .word gUnknown_Debug_083F8733
+ .word 0x4000050
+ .word 0x4000208
+ .word 0x4000200
+ .word 0x4000004
+ .word debug_80C3758+1
+ .word debug_80C370C+1
+ .word debug_80C53A4+1
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+
+ thumb_func_end InitCreatePokemon
+
+ thumb_func_start debug_80C53A4
+debug_80C53A4:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._366 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r0, ._366 + 4 @ debug_80C53C0
+ str r0, [r1]
+ bx lr
+._367:
+ .align 2, 0
+._366:
+ .word gTasks
+ .word debug_80C53C0+1
+
+ thumb_func_end debug_80C53A4
+
+ thumb_func_start debug_80C53C0
+debug_80C53C0:
+ push {r4, lr}
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl debug_80C6384
+ mov r0, #0x0
+ bl debug_80C627C
+ ldr r1, ._368 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._368 + 4 @ debug_80C53F0
+ str r1, [r0]
+ pop {r4}
+ pop {r0}
+ bx r0
+._369:
+ .align 2, 0
+._368:
+ .word gTasks
+ .word debug_80C53F0+1
+
+ thumb_func_end debug_80C53C0
+
+ thumb_func_start debug_80C53F0
+debug_80C53F0:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r0, ._372 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r2, #0x1
+ and r2, r2, r1
+ add r4, r0, #0
+ cmp r2, #0
+ beq ._370 @cond_branch
+ ldr r0, ._372 + 4 @ gUnknown_Debug_2038A1C
+ ldr r3, [r0]
+ mov r0, #0xb2
+ lsl r0, r0, #0x1
+ add r2, r3, r0
+ ldr r1, ._372 + 8 @ gUnknown_Debug_083F8698
+ mov r4, #0xb4
+ lsl r4, r4, #0x1
+ add r0, r3, r4
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r6, ._372 + 12 @ 0x169
+ add r1, r3, r6
+ ldrb r1, [r1]
+ ldr r0, [r0]
+ add r0, r0, r1
+ ldrb r1, [r0]
+ lsl r1, r1, #0x2
+ add r0, r3, #0
+ add r0, r0, #0x64
+ add r0, r0, r1
+ ldr r0, [r0]
+ str r0, [r2]
+ mov r0, #0xb5
+ lsl r0, r0, #0x1
+ add r1, r3, r0
+ mov r0, #0x0
+ strb r0, [r1]
+ bl debug_80C643C
+ ldr r1, ._372 + 16 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._372 + 20 @ debug_80C55E4
+ b ._375
+._373:
+ .align 2, 0
+._372:
+ .word gMain
+ .word gUnknown_Debug_2038A1C
+ .word gUnknown_Debug_083F8698
+ .word 0x169
+ .word gTasks
+ .word debug_80C55E4+1
+._370:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._374 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ str r2, [sp]
+ mov r1, #0x0
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r0, ._376 @ debug_80C370C
+ bl SetMainCallback2
+ ldr r1, ._376 + 4 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._376 + 8 @ debug_80C373C
+ b ._375
+._377:
+ .align 2, 0
+._376:
+ .word debug_80C370C+1
+ .word gTasks
+ .word debug_80C373C+1
+._374:
+ mov r0, #0x8
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._378 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ bl debug_80C5FFC
+ ldr r0, ._381 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ bl debug_80C527C
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ mov r0, #0x3
+ mov r1, #0x8
+ mov r2, #0x1a
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ cmp r4, #0
+ beq ._379 @cond_branch
+ ldr r0, ._381 + 4 @ gUnknown_Debug_083F872A
+ mov r1, #0x4
+ mov r2, #0x9
+ bl Menu_PrintText
+ b ._380
+._382:
+ .align 2, 0
+._381:
+ .word gUnknown_Debug_2038A1C
+ .word gUnknown_Debug_083F872A
+._379:
+ ldr r0, ._384 @ gUnknown_Debug_083F8720
+ mov r1, #0x4
+ mov r2, #0x9
+ bl Menu_PrintText
+._380:
+ ldr r0, ._384 + 4 @ gTasks
+ lsl r1, r5, #0x2
+ add r1, r1, r5
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._384 + 8 @ debug_80C5708
+ str r0, [r1]
+ b ._400
+._385:
+ .align 2, 0
+._384:
+ .word gUnknown_Debug_083F8720
+ .word gTasks
+ .word debug_80C5708+1
+._378:
+ mov r0, #0x4
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._386 @cond_branch
+ ldr r0, ._388 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ ldr r4, [r0, #0x64]
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r4, #0
+ mov r1, #0x2
+ bl GetSetPokedexFlag
+ add r0, r4, #0
+ mov r1, #0x3
+ bl GetSetPokedexFlag
+ mov r0, #0x5
+ bl PlaySE
+ b ._400
+._389:
+ .align 2, 0
+._388:
+ .word gUnknown_Debug_2038A1C
+._386:
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._390 @cond_branch
+ mov r0, #0x2
+ bl debug_80C627C
+ b ._400
+._390:
+ mov r0, #0x80
+ and r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ cmp r3, #0
+ beq ._392 @cond_branch
+ mov r0, #0x1
+ bl debug_80C627C
+ b ._400
+._392:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._395 @cond_branch
+ ldr r2, ._397 @ gUnknown_Debug_2038A1C
+ ldr r0, [r2]
+ mov r6, #0xb4
+ lsl r6, r6, #0x1
+ add r1, r0, r6
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._395 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ ldr r0, [r2]
+ ldr r1, ._397 + 4 @ 0x169
+ add r0, r0, r1
+ strb r3, [r0]
+ b ._396
+._398:
+ .align 2, 0
+._397:
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+._395:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._400 @cond_branch
+ ldr r3, ._401 @ gUnknown_Debug_2038A1C
+ ldr r0, [r3]
+ mov r4, #0xb4
+ lsl r4, r4, #0x1
+ add r2, r0, r4
+ ldrb r0, [r2]
+ cmp r0, #0x4
+ bhi ._400 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x0
+ strb r0, [r2]
+ ldr r0, [r3]
+ ldr r6, ._401 + 4 @ 0x169
+ add r0, r0, r6
+ strb r1, [r0]
+._396:
+ ldr r1, ._401 + 8 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._401 + 12 @ debug_80C53C0
+._375:
+ str r1, [r0]
+._400:
+ add sp, sp, #0x4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._402:
+ .align 2, 0
+._401:
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+ .word gTasks
+ .word debug_80C53C0+1
+
+ thumb_func_end debug_80C53F0
+
+ thumb_func_start debug_80C55E4
+debug_80C55E4:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ add r6, r3, #0
+ ldr r1, ._405 @ gUnknown_Debug_083F8698
+ ldr r2, ._405 + 4 @ gUnknown_Debug_2038A1C
+ ldr r0, [r2]
+ mov ip, r0
+ mov r0, #0xb4
+ lsl r0, r0, #0x1
+ add r0, r0, ip
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._405 + 8 @ 0x169
+ add r1, r1, ip
+ ldrb r1, [r1]
+ ldr r0, [r0]
+ add r0, r0, r1
+ ldrb r5, [r0]
+ add r7, r5, #0
+ ldr r1, ._405 + 12 @ gMain
+ ldrh r4, [r1, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r4
+ mov r8, r2
+ add r2, r1, #0
+ cmp r0, #0
+ beq ._403 @cond_branch
+ ldr r0, ._405 + 16 @ gTasks
+ lsl r1, r3, #0x2
+ add r1, r1, r3
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._405 + 20 @ debug_80C53C0
+ str r0, [r1]
+ b ._422
+._406:
+ .align 2, 0
+._405:
+ .word gUnknown_Debug_083F8698
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+ .word gMain
+ .word gTasks
+ .word debug_80C53C0+1
+._403:
+ mov r0, #0x2
+ and r0, r0, r4
+ cmp r0, #0
+ beq ._407 @cond_branch
+ lsl r1, r5, #0x2
+ mov r0, ip
+ add r0, r0, #0x64
+ add r0, r0, r1
+ mov r1, #0xb2
+ lsl r1, r1, #0x1
+ add r1, r1, ip
+ ldr r1, [r1]
+ str r1, [r0]
+ ldr r1, ._409 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._409 + 4 @ debug_80C53C0
+ str r1, [r0]
+ b ._422
+._410:
+ .align 2, 0
+._409:
+ .word gTasks
+ .word debug_80C53C0+1
+._407:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._411 @cond_branch
+ mov r0, #0x1
+ b ._412
+._411:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._413 @cond_branch
+ mov r0, #0x2
+._412:
+ bl debug_80C6544
+ bl debug_80C643C
+ b ._422
+._413:
+ ldr r0, ._419 @ gUnknown_Debug_083F8554
+ lsl r1, r7, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r1, [r1]
+ ldrb r0, [r1, #0x9]
+ cmp r0, #0xff
+ beq ._422 @cond_branch
+ mov r0, #0x20
+ and r0, r0, r4
+ cmp r0, #0
+ beq ._417 @cond_branch
+ mov r0, #0xb5
+ lsl r0, r0, #0x1
+ add ip, ip, r0
+ mov r0, ip
+ ldrb r3, [r0]
+ ldrb r0, [r1, #0x9]
+ sub r0, r0, #0x1
+ cmp r3, r0
+ bge ._417 @cond_branch
+ add r0, r3, #1
+ mov r1, ip
+ strb r0, [r1]
+ bl debug_80C643C
+ b ._422
+._420:
+ .align 2, 0
+._419:
+ .word gUnknown_Debug_083F8554
+._417:
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._422 @cond_branch
+ mov r2, r8
+ ldr r0, [r2]
+ mov r2, #0xb5
+ lsl r2, r2, #0x1
+ add r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._422 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ bl debug_80C643C
+._422:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C55E4
+
+ thumb_func_start debug_80C5708
+debug_80C5708:
+ push {lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ ldr r0, ._424 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._423 @cond_branch
+ ldr r0, ._424 + 4 @ gTasks
+ lsl r1, r2, #0x2
+ add r1, r1, r2
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._424 + 8 @ debug_80C53C0
+ str r0, [r1]
+._423:
+ pop {r0}
+ bx r0
+._425:
+ .align 2, 0
+._424:
+ .word gMain
+ .word gTasks
+ .word debug_80C53C0+1
+
+ thumb_func_end debug_80C5708
+
+ thumb_func_start debug_80C5738
+debug_80C5738:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ add r6, r0, #0
+ lsl r1, r1, #0x18
+ lsr r4, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r8, r2
+ cmp r4, #0xfe
+ bne ._426 @cond_branch
+ ldr r1, ._428 @ gUnknown_Debug_083F850A
+ mov r2, #0x7
+ bl debug_80C689C
+ add r0, r6, #7
+ ldr r7, ._428 + 4 @ gUnknown_Debug_2038A1C
+ ldr r1, [r7]
+ add r1, r1, #0xf0
+ ldr r1, [r1]
+ mov r2, #0x3
+ mov r3, #0x1
+ bl debug_80C6678
+ mov r4, #0x0
+ strb r4, [r6, #0x13]
+ strb r4, [r6, #0x14]
+ add r0, r6, #0
+ add r0, r0, #0x15
+ ldr r1, ._428 + 8 @ gUnknown_Debug_083F8514
+ mov r2, #0x7
+ bl debug_80C689C
+ add r0, r6, #0
+ add r0, r0, #0x1c
+ ldr r1, [r7]
+ add r1, r1, #0xf4
+ ldr r1, [r1]
+ mov r2, #0x3
+ mov r3, #0x1
+ bl debug_80C6678
+ add r0, r6, #0
+ add r0, r0, #0x28
+ strb r4, [r0]
+ add r0, r0, #0x1
+ strb r4, [r0]
+ add r0, r0, #0x1
+ ldr r1, ._428 + 12 @ gUnknown_Debug_083F851C
+ mov r2, #0x9
+ bl debug_80C689C
+ add r0, r6, #0
+ add r0, r0, #0x31
+ ldr r1, [r7]
+ add r1, r1, #0xf8
+._431:
+ ldr r1, [r1]
+ mov r2, #0x3
+ mov r3, #0x1
+ bl debug_80C6678
+ b ._517
+._429:
+ .align 2, 0
+._428:
+ .word gUnknown_Debug_083F850A
+ .word gUnknown_Debug_2038A1C
+ .word gUnknown_Debug_083F8514
+ .word gUnknown_Debug_083F851C
+._426:
+ cmp r4, #0xfd
+ bne ._430 @cond_branch
+ ldr r1, ._432 @ gUnknown_Debug_083F8524
+ add r0, r6, #0
+ mov r2, #0x9
+ bl debug_80C689C
+ add r0, r6, #0
+ add r0, r0, #0x9
+ ldr r7, ._432 + 4 @ gUnknown_Debug_2038A1C
+ ldr r1, [r7]
+ add r1, r1, #0xfc
+ ldr r1, [r1]
+ mov r2, #0x3
+ mov r3, #0x1
+ bl debug_80C6678
+ mov r4, #0x0
+ strb r4, [r6, #0x15]
+ strb r4, [r6, #0x16]
+ add r0, r6, #0
+ add r0, r0, #0x17
+ ldr r1, ._432 + 8 @ gUnknown_Debug_083F852D
+ mov r2, #0x9
+ bl debug_80C689C
+ add r0, r6, #0
+ add r0, r0, #0x20
+ ldr r1, [r7]
+ mov r2, #0x80
+ lsl r2, r2, #0x1
+ add r1, r1, r2
+ ldr r1, [r1]
+ mov r2, #0x3
+ mov r3, #0x1
+ bl debug_80C6678
+ add r0, r6, #0
+ add r0, r0, #0x2c
+ strb r4, [r0]
+ add r0, r0, #0x1
+ strb r4, [r0]
+ add r0, r0, #0x1
+ ldr r1, ._432 + 12 @ gUnknown_Debug_083F8537
+ mov r2, #0x9
+ bl debug_80C689C
+ add r0, r6, #0
+ add r0, r0, #0x37
+ ldr r1, [r7]
+ mov r3, #0x82
+ lsl r3, r3, #0x1
+ add r1, r1, r3
+ b ._431
+._433:
+ .align 2, 0
+._432:
+ .word gUnknown_Debug_083F8524
+ .word gUnknown_Debug_2038A1C
+ .word gUnknown_Debug_083F852D
+ .word gUnknown_Debug_083F8537
+._430:
+ mov r1, #0x0
+ lsl r5, r4, #0x3
+ mov r2, #0x0
+._434:
+ add r0, r6, r1
+ strb r2, [r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r1, #0xb
+ bls ._434 @cond_branch
+ ldr r0, ._437 @ gUnknown_Debug_083F8554
+ add r0, r5, r0
+ ldr r1, [r0]
+ add r0, r6, #0
+ mov r2, #0xb
+ bl debug_80C689C
+ mov r1, #0xc
+ mov r2, #0xff
+._435:
+ add r0, r6, r1
+ strb r2, [r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r1, #0xff
+ bls ._435 @cond_branch
+ ldr r0, ._437 @ gUnknown_Debug_083F8554
+ add r0, r0, #0x4
+ add r0, r5, r0
+ ldr r0, [r0]
+ ldrb r2, [r0, #0x9]
+ lsl r0, r2, #0x1a
+ lsr r5, r0, #0x18
+ cmp r4, #0x22
+ bhi ._436 @cond_branch
+ lsl r0, r4, #0x2
+ ldr r1, ._437 + 4 @
+ add r1, r0, r1
+ ldr r1, [r1]
+ add r7, r0, #0
+ mov pc, r1
+._438:
+ .align 2, 0
+._437:
+ .word gUnknown_Debug_083F8554
+ .word ._439
+._439:
+ .word ._440
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._445
+ .word ._446
+ .word ._450
+ .word ._450
+ .word ._450
+ .word ._450
+ .word ._451
+ .word ._452
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._473
+ .word ._474
+._436:
+ mov r0, #0xff
+ strb r0, [r6]
+ b ._517
+._440:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r1, ._477 @ gUnknown_Debug_2038A1C
+ mov r9, r1
+ ldr r1, [r1]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r1, [r1]
+ mov r3, r8
+ bl debug_80C6678
+ add r1, r5, r6
+ mov r0, #0x0
+ strb r0, [r1, #0xa]
+ mov r0, #0xfc
+ strb r0, [r1, #0xb]
+ mov r0, #0x1
+ strb r0, [r1, #0xc]
+ mov r2, r8
+ strb r2, [r1, #0xd]
+ add r4, r5, #0
+ add r4, r4, #0xe
+ add r4, r6, r4
+ mov r3, r9
+ ldr r0, [r3]
+ add r0, r0, #0x64
+ add r0, r0, r7
+ ldrh r0, [r0]
+ bl NationalPokedexNumToSpecies
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xb
+ mul r1, r1, r0
+ ldr r0, ._477 + 4 @ gSpeciesNames
+ add r1, r1, r0
+ add r0, r4, #0
+ mov r2, #0xa
+ bl debug_80C689C
+ b ._517
+._478:
+ .align 2, 0
+._477:
+ .word gUnknown_Debug_2038A1C
+ .word gSpeciesNames
+._445:
+ ldr r0, ._483 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ add r0, r0, #0x64
+ add r0, r0, r7
+ ldr r0, [r0]
+ cmp r0, #0x1
+ beq ._479 @cond_branch
+ cmp r0, #0x1
+ bcc ._480 @cond_branch
+ cmp r0, #0x2
+ beq ._481 @cond_branch
+ b ._517
+._484:
+ .align 2, 0
+._483:
+ .word gUnknown_Debug_2038A1C
+._480:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r1, ._486 @ gUnknown_Debug_083F8546
+ b ._488
+._487:
+ .align 2, 0
+._486:
+ .word gUnknown_Debug_083F8546
+._479:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r1, ._489 @ gUnknown_Debug_083F8541
+ b ._488
+._490:
+ .align 2, 0
+._489:
+ .word gUnknown_Debug_083F8541
+._481:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r1, ._492 @ gUnknown_Debug_083F8544
+._488:
+ mov r2, #0x2
+ bl debug_80C689C
+ b ._517
+._493:
+ .align 2, 0
+._492:
+ .word gUnknown_Debug_083F8544
+._450:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r4, ._495 @ gUnknown_Debug_2038A1C
+ ldr r1, [r4]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r1, [r1]
+ mov r3, r8
+ bl debug_80C6678
+ add r1, r5, r6
+ mov r0, #0x0
+ strb r0, [r1, #0xa]
+ mov r0, #0xfc
+ strb r0, [r1, #0xb]
+ mov r0, #0x1
+ strb r0, [r1, #0xc]
+ mov r0, r8
+ strb r0, [r1, #0xd]
+ add r0, r5, #0
+ add r0, r0, #0xe
+ add r0, r6, r0
+ ldr r1, [r4]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r2, [r1]
+ mov r1, #0xd
+ mul r1, r1, r2
+ ldr r2, ._495 + 4 @ gMoveNames
+ add r1, r1, r2
+ b ._494
+._496:
+ .align 2, 0
+._495:
+ .word gUnknown_Debug_2038A1C
+ .word gMoveNames
+._451:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r4, ._499 @ gUnknown_Debug_2038A1C
+ ldr r1, [r4]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r1, [r1]
+ mov r3, r8
+ bl debug_80C6678
+ add r1, r5, r6
+ mov r0, #0x0
+ strb r0, [r1, #0xa]
+ mov r0, #0xfc
+ strb r0, [r1, #0xb]
+ mov r0, #0x1
+ strb r0, [r1, #0xc]
+ mov r2, r8
+ strb r2, [r1, #0xd]
+ ldr r0, [r4]
+ add r0, r0, #0x64
+ add r0, r0, r7
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._497 @cond_branch
+ add r4, r5, #0
+ add r4, r4, #0xe
+ add r4, r6, r4
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl ItemId_GetItem
+ add r1, r0, #0
+ add r0, r4, #0
+ b ._498
+._500:
+ .align 2, 0
+._499:
+ .word gUnknown_Debug_2038A1C
+._497:
+ add r0, r5, #0
+ add r0, r0, #0xe
+ add r0, r6, r0
+ ldr r1, ._502 @ gUnknown_Debug_083F8541
+._498:
+ mov r2, #0x9
+ bl debug_80C689C
+ b ._517
+._503:
+ .align 2, 0
+._502:
+ .word gUnknown_Debug_083F8541
+._452:
+ add r6, r6, #0xc
+ ldr r4, ._505 @ gUnknown_Debug_2038A1C
+ ldr r0, [r4]
+ ldr r0, [r0, #0x64]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl NationalPokedexNumToSpecies
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ ldr r1, [r4]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldrb r1, [r1]
+ bl GetAbilityBySpecies
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0xd
+ mul r1, r1, r0
+ ldr r0, ._505 + 4 @ gAbilityNames
+ add r1, r1, r0
+ add r0, r6, #0
+._494:
+ mov r2, #0xc
+ bl debug_80C689C
+ b ._517
+._506:
+ .align 2, 0
+._505:
+ .word gUnknown_Debug_2038A1C
+ .word gAbilityNames
+._474:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r2, ._508 @ gUnknown_Debug_083F86E8
+ ldr r1, ._508 + 4 @ gUnknown_Debug_2038A1C
+ ldr r1, [r1]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r1, [r1]
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r1, [r1]
+ b ._514
+._509:
+ .align 2, 0
+._508:
+ .word gUnknown_Debug_083F86E8
+ .word gUnknown_Debug_2038A1C
+._472:
+ add r0, r6, #0
+ add r0, r0, #0xc
+ ldr r1, ._511 @ gUnknown_Debug_2038A1C
+ ldr r1, [r1]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r1, [r1]
+ mov r3, r8
+ bl debug_80C6678
+ b ._517
+._512:
+ .align 2, 0
+._511:
+ .word gUnknown_Debug_2038A1C
+._473:
+ ldr r0, ._515 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ add r0, r0, #0x64
+ add r0, r0, r7
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._513 @cond_branch
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r1, ._515 + 4 @ gUnknown_Debug_083F854A
+ b ._514
+._516:
+ .align 2, 0
+._515:
+ .word gUnknown_Debug_2038A1C
+ .word gUnknown_Debug_083F854A
+._513:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r1, ._518 @ gUnknown_Debug_083F854D
+._514:
+ mov r2, #0x4
+ bl debug_80C689C
+ b ._517
+._519:
+ .align 2, 0
+._518:
+ .word gUnknown_Debug_083F854D
+._446:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r2, ._520 @ gNatureNames
+ ldr r1, ._520 + 4 @ gUnknown_Debug_2038A1C
+ ldr r1, [r1]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r1, [r1]
+ lsl r1, r1, #0x2
+ add r1, r1, r2
+ ldr r1, [r1]
+ mov r2, #0x5
+ bl debug_80C689C
+._517:
+ mov r0, #0x0
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._521:
+ .align 2, 0
+._520:
+ .word gNatureNames
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C5738
+
+ thumb_func_start debug_80C5B60
+debug_80C5B60:
+ lsl r0, r0, #0x18
+ ldr r1, ._522 @ gUnknown_Debug_2038A1C
+ ldr r1, [r1]
+ lsr r0, r0, #0x16
+ add r1, r1, #0x64
+ add r1, r1, r0
+ ldr r0, [r1]
+ bx lr
+._523:
+ .align 2, 0
+._522:
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C5B60
+
+ thumb_func_start debug_80C5B74
+debug_80C5B74:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ cmp r2, #0x18
+ bhi ._540 @cond_branch
+ lsl r0, r2, #0x2
+ ldr r1, ._526 @
+ add r1, r0, r1
+ ldr r1, [r1]
+ add r3, r0, #0
+ mov pc, r1
+._527:
+ .align 2, 0
+._526:
+ .word ._525
+._525:
+ .word ._532
+ .word ._529
+ .word ._530
+ .word ._532
+ .word ._532
+ .word ._540
+ .word ._540
+ .word ._540
+ .word ._540
+ .word ._540
+ .word ._540
+ .word ._540
+ .word ._540
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+._540:
+ ldr r0, ._554 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ lsl r1, r2, #0x2
+ add r0, r0, #0x64
+ add r0, r0, r1
+ str r6, [r0]
+ b ._562
+._555:
+ .align 2, 0
+._554:
+ .word gUnknown_Debug_2038A1C
+._532:
+ ldr r0, ._557 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ add r0, r0, #0x64
+ add r0, r0, r3
+ str r6, [r0]
+ bl debug_80C5C94
+ b ._562
+._558:
+ .align 2, 0
+._557:
+ .word gUnknown_Debug_2038A1C
+._529:
+ ldr r4, ._560 @ gUnknown_Debug_2038A1C
+ ldr r1, [r4]
+ add r0, r1, #0
+ add r0, r0, #0x64
+ add r0, r0, r3
+ str r6, [r0]
+ ldr r0, [r1, #0x64]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl NationalPokedexNumToSpecies
+ ldr r5, [r4]
+ ldr r4, ._560 + 4 @ gExperienceTables
+ lsl r2, r6, #0x2
+ ldr r3, ._560 + 8 @ gBaseStats
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r1, r0, #0x3
+ sub r1, r1, r0
+ lsl r1, r1, #0x2
+ add r1, r1, r3
+ ldrb r1, [r1, #0x13]
+ mov r0, #0xca
+ lsl r0, r0, #0x1
+ mul r0, r0, r1
+ add r2, r2, r0
+ add r2, r2, r4
+ ldr r0, [r2]
+ str r0, [r5, #0x6c]
+ bl debug_80C5C94
+ b ._562
+._561:
+ .align 2, 0
+._560:
+ .word gUnknown_Debug_2038A1C
+ .word gExperienceTables
+ .word gBaseStats
+._530:
+ ldr r0, ._563 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ add r0, r0, #0x64
+ add r0, r0, r3
+ str r6, [r0]
+ bl debug_80C5DEC
+ b ._562
+._564:
+ .align 2, 0
+._563:
+ .word gUnknown_Debug_2038A1C
+._552:
+ ldr r0, ._565 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ add r0, r0, #0x64
+ add r0, r0, r3
+ str r6, [r0]
+ bl debug_80C5EF4
+._562:
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._566:
+ .align 2, 0
+._565:
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C5B74
+
+ thumb_func_start debug_80C5C94
+debug_80C5C94:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffff0
+ ldr r6, ._567 @ gUnknown_Debug_2038A1C
+ ldr r2, [r6]
+ add r0, r2, #0
+ add r0, r0, #0x98
+ ldr r4, [r0]
+ mov r1, #0x1f
+ and r4, r4, r1
+ add r0, r0, #0x8
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0x5
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xa8
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0xa
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xb0
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0xf
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xb8
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0x14
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xc0
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0x19
+ orr r4, r4, r0
+ ldr r0, [r2, #0x64]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl NationalPokedexNumToSpecies
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ ldr r0, [r6]
+ ldr r2, [r0, #0x68]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ mov r5, #0x1
+ str r5, [sp]
+ ldr r3, [r0, #0x74]
+ str r3, [sp, #0x4]
+ str r5, [sp, #0x8]
+ ldr r3, [r0, #0x70]
+ str r3, [sp, #0xc]
+ add r3, r4, #0
+ bl CreateMon
+ ldr r0, [r6]
+ bl GetMonGender
+ ldr r1, [r6]
+ add r0, r0, #0x2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [r1, #0x78]
+ add r0, r1, #0
+ bl GetNature
+ ldr r1, [r6]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [r1, #0x7c]
+ add r0, r1, #0
+ mov r1, #0xd
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0x80
+ str r2, [r1]
+ mov r1, #0xe
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0x84
+ str r2, [r1]
+ mov r1, #0xf
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0x88
+ str r2, [r1]
+ mov r1, #0x10
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0x8c
+ str r2, [r1]
+ mov r1, #0x19
+ bl GetMonData
+ add r1, r0, #0
+ ldr r0, [r6]
+ str r1, [r0, #0x6c]
+ mov r1, #0x3a
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0xf0
+ str r2, [r1]
+ mov r1, #0x3b
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0xf4
+ str r2, [r1]
+ mov r1, #0x3c
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0xf8
+ str r2, [r1]
+ mov r1, #0x3d
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0xfc
+ str r2, [r1]
+ mov r1, #0x3e
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ mov r3, #0x80
+ lsl r3, r3, #0x1
+ add r1, r0, r3
+ str r2, [r1]
+ mov r1, #0x3f
+ bl GetMonData
+ ldr r1, [r6]
+ mov r2, #0x82
+ lsl r2, r2, #0x1
+ add r1, r1, r2
+ str r0, [r1]
+ add sp, sp, #0x10
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._568:
+ .align 2, 0
+._567:
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C5C94
+
+ thumb_func_start debug_80C5DEC
+debug_80C5DEC:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ mov r0, #0x0
+ str r0, [sp]
+ ldr r4, ._569 @ gUnknown_Debug_2038A1C
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0x6c
+ mov r1, #0x19
+ bl SetMonData
+ ldr r0, [r4]
+ mov r1, #0xd
+ mov r2, sp
+ bl SetMonData
+ ldr r0, [r4]
+ mov r1, #0xe
+ mov r2, sp
+ bl SetMonData
+ ldr r0, [r4]
+ mov r1, #0xf
+ mov r2, sp
+ bl SetMonData
+ ldr r0, [r4]
+ mov r1, #0x10
+ mov r2, sp
+ bl SetMonData
+ ldr r0, [r4]
+ bl CalculateMonStats
+ ldr r0, [r4]
+ bl GiveMonInitialMoveset
+ ldr r0, [r4]
+ mov r1, #0x38
+ bl GetMonData
+ add r1, r0, #0
+ ldr r0, [r4]
+ str r1, [r0, #0x68]
+ mov r1, #0xd
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0x80
+ str r2, [r1]
+ mov r1, #0xe
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0x84
+ str r2, [r1]
+ mov r1, #0xf
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0x88
+ str r2, [r1]
+ mov r1, #0x10
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0x8c
+ str r2, [r1]
+ mov r1, #0x3a
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xf0
+ str r2, [r1]
+ mov r1, #0x3b
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xf4
+ str r2, [r1]
+ mov r1, #0x3c
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xf8
+ str r2, [r1]
+ mov r1, #0x3d
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xfc
+ str r2, [r1]
+ mov r1, #0x3e
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x80
+ lsl r3, r3, #0x1
+ add r1, r0, r3
+ str r2, [r1]
+ mov r1, #0x3f
+ bl GetMonData
+ ldr r1, [r4]
+ mov r2, #0x82
+ lsl r2, r2, #0x1
+ add r1, r1, r2
+ str r0, [r1]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._570:
+ .align 2, 0
+._569:
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C5DEC
+
+ thumb_func_start debug_80C5EF4
+debug_80C5EF4:
+ push {r4, lr}
+ ldr r4, ._571 @ gUnknown_Debug_2038A1C
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0x98
+ mov r1, #0x27
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0x9c
+ mov r1, #0x1a
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xa0
+ mov r1, #0x28
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xa4
+ mov r1, #0x1b
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xa8
+ mov r1, #0x29
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xac
+ mov r1, #0x1c
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xb0
+ mov r1, #0x2a
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xb4
+ mov r1, #0x1d
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xb8
+ mov r1, #0x2b
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xbc
+ mov r1, #0x1e
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xc0
+ mov r1, #0x2c
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xc4
+ mov r1, #0x1f
+ bl SetMonData
+ ldr r0, [r4]
+ bl CalculateMonStats
+ ldr r0, [r4]
+ mov r1, #0x3a
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xf0
+ str r2, [r1]
+ mov r1, #0x3b
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xf4
+ str r2, [r1]
+ mov r1, #0x3c
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xf8
+ str r2, [r1]
+ mov r1, #0x3d
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xfc
+ str r2, [r1]
+ mov r1, #0x3e
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x80
+ lsl r3, r3, #0x1
+ add r1, r0, r3
+ str r2, [r1]
+ mov r1, #0x3f
+ bl GetMonData
+ ldr r1, [r4]
+ mov r2, #0x82
+ lsl r2, r2, #0x1
+ add r1, r1, r2
+ str r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+._572:
+ .align 2, 0
+._571:
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C5EF4
+
+ thumb_func_start debug_80C5FFC
+debug_80C5FFC:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xffffffe0
+ ldr r1, ._578 @ gUnknown_Debug_083F8758
+ add r0, sp, #0x10
+ mov r2, #0x4
+ bl memcpy
+ add r7, sp, #0x14
+ ldr r1, ._578 + 4 @ gUnknown_Debug_083F875C
+ add r0, r7, #0
+ mov r2, #0x8
+ bl memcpy
+ ldr r5, ._578 + 8 @ gUnknown_Debug_2038A1C
+ ldr r2, [r5]
+ add r0, r2, #0
+ add r0, r0, #0x98
+ ldr r4, [r0]
+ mov r1, #0x1f
+ and r4, r4, r1
+ add r0, r0, #0x8
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0x5
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xa8
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0xa
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xb0
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0xf
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xb8
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0x14
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xc0
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0x19
+ orr r4, r4, r0
+ ldr r0, [r2, #0x64]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl NationalPokedexNumToSpecies
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ ldr r0, [r5]
+ ldr r2, [r0, #0x68]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ mov r6, #0x1
+ str r6, [sp]
+ ldr r3, [r0, #0x74]
+ str r3, [sp, #0x4]
+ str r6, [sp, #0x8]
+ ldr r3, [r0, #0x70]
+ str r3, [sp, #0xc]
+ add r3, r4, #0
+ bl CreateMon
+ ldr r2, [r5]
+ add r0, r2, #0
+ add r0, r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._573 @cond_branch
+ lsl r1, r0, #0x10
+ lsr r1, r1, #0x10
+ add r0, r2, #0
+ mov r2, #0x0
+ bl SetMonMoveSlot
+._573:
+ ldr r2, [r5]
+ add r0, r2, #0
+ add r0, r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._574 @cond_branch
+ lsl r1, r0, #0x10
+ lsr r1, r1, #0x10
+ add r0, r2, #0
+ mov r2, #0x1
+ bl SetMonMoveSlot
+._574:
+ ldr r2, [r5]
+ add r0, r2, #0
+ add r0, r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._575 @cond_branch
+ lsl r1, r0, #0x10
+ lsr r1, r1, #0x10
+ add r0, r2, #0
+ mov r2, #0x2
+ bl SetMonMoveSlot
+._575:
+ ldr r2, [r5]
+ add r0, r2, #0
+ add r0, r0, #0x8c
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._576 @cond_branch
+ lsl r1, r0, #0x10
+ lsr r1, r1, #0x10
+ add r0, r2, #0
+ mov r2, #0x3
+ bl SetMonMoveSlot
+._576:
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0x6c
+ mov r1, #0x19
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0x98
+ mov r1, #0x27
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0x9c
+ mov r1, #0x1a
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xa0
+ mov r1, #0x28
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xa4
+ mov r1, #0x1b
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xa8
+ mov r1, #0x29
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xac
+ mov r1, #0x1c
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xb0
+ mov r1, #0x2a
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xb4
+ mov r1, #0x1d
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xb8
+ mov r1, #0x2b
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xbc
+ mov r1, #0x1e
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xc0
+ mov r1, #0x2c
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xc4
+ mov r1, #0x1f
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xc8
+ mov r1, #0x16
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xcc
+ mov r1, #0x17
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xd0
+ mov r1, #0x18
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xd4
+ mov r1, #0x21
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xd8
+ mov r1, #0x2f
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xdc
+ mov r1, #0x30
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xe0
+ mov r1, #0x20
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xe4
+ mov r1, #0x22
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0x90
+ mov r1, #0xc
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0x94
+ mov r1, #0x2e
+ bl SetMonData
+ ldr r0, [r5]
+ add r1, r0, #0
+ add r1, r1, #0xec
+ ldr r2, [r1]
+ lsl r2, r2, #0x3
+ ldr r1, ._578 + 12 @ gUnknown_Debug_083F86E8
+ add r2, r2, r1
+ mov r1, #0x37
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xe8
+ mov r1, #0x2d
+ bl SetMonData
+ ldr r1, [r5]
+ add r0, r1, #0
+ add r0, r0, #0xe8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._577 @cond_branch
+ add r0, r1, #0
+ mov r1, #0x2
+ add r2, sp, #0x10
+ bl SetMonData
+ add r2, sp, #0x1c
+ strb r6, [r2]
+ ldr r0, [r5]
+ mov r1, #0x3
+ bl SetMonData
+._577:
+ ldr r0, [r5]
+ mov r1, #0x7
+ add r2, r7, #0
+ bl SetMonData
+ mov r2, sp
+ add r2, r2, #0x1e
+ mov r0, #0xff
+ strh r0, [r2]
+ ldr r0, [r5]
+ mov r1, #0x23
+ bl SetMonData
+ ldr r0, [r5]
+ bl CalculateMonStats
+ add sp, sp, #0x20
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._579:
+ .align 2, 0
+._578:
+ .word gUnknown_Debug_083F8758
+ .word gUnknown_Debug_083F875C
+ .word gUnknown_Debug_2038A1C
+ .word gUnknown_Debug_083F86E8+0x4
+
+ thumb_func_end debug_80C5FFC
+
+ thumb_func_start debug_80C627C
+debug_80C627C:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffff8
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r6, r4, #0
+ ldr r1, ._584 @ gUnknown_Debug_083F7FD4
+ mov r0, sp
+ mov r2, #0x2
+ bl memcpy
+ add r5, sp, #0x4
+ ldr r1, ._584 + 4 @ gUnknown_Debug_083F8764
+ add r0, r5, #0
+ mov r2, #0x2
+ bl memcpy
+ cmp r4, #0x1
+ beq ._580 @cond_branch
+ cmp r4, #0x1
+ bgt ._581 @cond_branch
+ cmp r4, #0
+ beq ._582 @cond_branch
+ b ._595
+._585:
+ .align 2, 0
+._584:
+ .word gUnknown_Debug_083F7FD4
+ .word gUnknown_Debug_083F8764
+._581:
+ cmp r6, #0x2
+ beq ._586 @cond_branch
+ b ._595
+._582:
+ ldr r0, ._589 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ ldr r1, ._589 + 4 @ 0x169
+ add r0, r0, r1
+ b ._588
+._590:
+ .align 2, 0
+._589:
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+._580:
+ ldr r4, ._593 @ gUnknown_Debug_2038A1C
+ ldr r3, [r4]
+ ldr r1, ._593 + 4 @ 0x169
+ add r0, r3, r1
+ ldrb r2, [r0]
+ ldr r1, ._593 + 8 @ gUnknown_Debug_083F8698
+ mov r6, #0xb4
+ lsl r6, r6, #0x1
+ add r0, r3, r6
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldrb r0, [r0, #0x4]
+ sub r0, r0, #0x1
+ cmp r2, r0
+ bge ._595 @cond_branch
+ lsl r2, r2, #0x19
+ mov r0, #0xa0
+ lsl r0, r0, #0x13
+ add r2, r2, r0
+ lsr r2, r2, #0x18
+ add r0, r5, #0
+ mov r1, #0x1
+ bl Menu_PrintText
+ ldr r0, [r4]
+ ldr r2, ._593 + 4 @ 0x169
+ add r1, r0, r2
+ ldrb r0, [r1]
+ add r0, r0, #0x1
+ strb r0, [r1]
+ ldr r0, [r4]
+ add r0, r0, r2
+._588:
+ ldrb r2, [r0]
+ lsl r2, r2, #0x19
+ mov r6, #0xa0
+ lsl r6, r6, #0x13
+ add r2, r2, r6
+ lsr r2, r2, #0x18
+ mov r0, sp
+ mov r1, #0x1
+ bl Menu_PrintText
+ b ._595
+._594:
+ .align 2, 0
+._593:
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+ .word gUnknown_Debug_083F8698
+._586:
+ ldr r4, ._596 @ gUnknown_Debug_2038A1C
+ ldr r0, [r4]
+ ldr r2, ._596 + 4 @ 0x169
+ add r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._595 @cond_branch
+ add r2, r0, #0
+ lsl r2, r2, #0x19
+ mov r6, #0xa0
+ lsl r6, r6, #0x13
+ add r2, r2, r6
+ lsr r2, r2, #0x18
+ add r0, r5, #0
+ mov r1, #0x1
+ bl Menu_PrintText
+ ldr r0, [r4]
+ ldr r2, ._596 + 4 @ 0x169
+ add r1, r0, r2
+ ldrb r0, [r1]
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ ldr r0, [r4]
+ add r0, r0, r2
+ ldrb r2, [r0]
+ lsl r2, r2, #0x19
+ add r2, r2, r6
+ lsr r2, r2, #0x18
+ mov r0, sp
+ mov r1, #0x1
+ bl Menu_PrintText
+._595:
+ add sp, sp, #0x8
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._597:
+ .align 2, 0
+._596:
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+
+ thumb_func_end debug_80C627C
+
+ thumb_func_start debug_80C6384
+debug_80C6384:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ mov r0, #0x0
+ mov r1, #0x4
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r5, #0x0
+ ldr r3, ._600 @ gUnknown_Debug_083F8698
+ ldr r1, ._600 + 4 @ gUnknown_Debug_2038A1C
+ ldr r0, [r1]
+ mov r2, #0xb4
+ lsl r2, r2, #0x1
+ add r0, r0, r2
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r3
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._598 @cond_branch
+ add r4, r1, #0
+ ldr r0, ._600 + 8 @ 0x16b
+ mov r9, r0
+ mov r8, r3
+ add r7, r2, #0
+ mov r6, #0x1
+._599:
+ ldr r0, [r4]
+ add r0, r0, r9
+ mov r1, #0xfc
+ strb r1, [r0]
+ ldr r0, [r4]
+ add r1, r1, #0x70
+ add r0, r0, r1
+ strb r6, [r0]
+ ldr r0, [r4]
+ ldr r2, ._600 + 12 @ 0x16d
+ add r0, r0, r2
+ strb r6, [r0]
+ ldr r1, [r4]
+ add r2, r2, #0x1
+ add r0, r1, r2
+ add r1, r1, r7
+ ldrb r1, [r1]
+ lsl r1, r1, #0x3
+ add r1, r1, r8
+ ldr r1, [r1]
+ add r1, r1, r5
+ ldrb r1, [r1]
+ mov r2, #0x1
+ bl debug_80C5738
+ ldr r0, [r4]
+ add r0, r0, r9
+ lsl r2, r5, #0x19
+ mov r1, #0xa0
+ lsl r1, r1, #0x13
+ add r2, r2, r1
+ lsr r2, r2, #0x18
+ mov r1, #0x2
+ bl Menu_PrintText
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r0, [r4]
+ add r0, r0, r7
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r8
+ ldr r0, [r0]
+ add r0, r0, r5
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ bne ._599 @cond_branch
+._598:
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._601:
+ .align 2, 0
+._600:
+ .word gUnknown_Debug_083F8698
+ .word gUnknown_Debug_2038A1C
+ .word 0x16b
+ .word 0x16d
+
+ thumb_func_end debug_80C6384
+
+ thumb_func_start debug_80C643C
+debug_80C643C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ mov r0, #0x2
+ mov r1, #0x5
+ mov r2, #0x1c
+ mov r3, #0x12
+ bl Menu_BlankWindowRect
+ mov r5, #0x0
+ ldr r6, ._605 @ gUnknown_Debug_083F8698
+ ldr r1, ._605 + 4 @ gUnknown_Debug_2038A1C
+ ldr r0, [r1]
+ mov r3, #0xb4
+ lsl r3, r3, #0x1
+ add r0, r0, r3
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r6
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._602 @cond_branch
+ add r4, r1, #0
+ mov r0, #0x1
+ mov r8, r0
+._607:
+ ldr r0, [r4]
+ ldr r7, ._605 + 8 @ 0x16b
+ add r2, r0, r7
+ mov r0, #0xfc
+ strb r0, [r2]
+ ldr r0, [r4]
+ mov r2, #0xb6
+ lsl r2, r2, #0x1
+ add r0, r0, r2
+ mov r7, r8
+ strb r7, [r0]
+ ldr r2, [r4]
+ ldr r7, ._605 + 12 @ 0x169
+ add r0, r2, r7
+ ldrb r0, [r0]
+ cmp r5, r0
+ bne ._603 @cond_branch
+ ldr r0, ._605 + 16 @ 0x16d
+ add r2, r2, r0
+ mov r0, #0x2
+ strb r0, [r2]
+ ldr r1, [r1]
+ mov r2, #0xb7
+ lsl r2, r2, #0x1
+ add r0, r1, r2
+ add r1, r1, r3
+ ldrb r1, [r1]
+ lsl r1, r1, #0x3
+ add r1, r1, r6
+ ldr r1, [r1]
+ add r1, r1, r5
+ ldrb r1, [r1]
+ mov r2, #0x2
+ bl debug_80C5738
+ b ._604
+._606:
+ .align 2, 0
+._605:
+ .word gUnknown_Debug_083F8698
+ .word gUnknown_Debug_2038A1C
+ .word 0x16b
+ .word 0x169
+ .word 0x16d
+._603:
+ ldr r3, ._608 @ 0x16d
+ add r0, r2, r3
+ mov r7, r8
+ strb r7, [r0]
+ ldr r1, [r1]
+ mov r2, #0xb7
+ lsl r2, r2, #0x1
+ add r0, r1, r2
+ ldr r2, ._608 + 4 @ gUnknown_Debug_083F8698
+ sub r3, r3, #0x5
+ add r1, r1, r3
+ ldrb r1, [r1]
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r1, [r1]
+ add r1, r1, r5
+ ldrb r1, [r1]
+ mov r2, #0x1
+ bl debug_80C5738
+._604:
+ ldr r0, [r4]
+ ldr r7, ._608 + 8 @ 0x16b
+ add r0, r0, r7
+ lsl r2, r5, #0x19
+ mov r1, #0xa0
+ lsl r1, r1, #0x13
+ add r2, r2, r1
+ lsr r2, r2, #0x18
+ mov r1, #0x2
+ bl Menu_PrintText
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r6, ._608 + 4 @ gUnknown_Debug_083F8698
+ add r1, r4, #0
+ ldr r0, [r4]
+ mov r3, #0xb4
+ lsl r3, r3, #0x1
+ add r0, r0, r3
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r6
+ ldr r0, [r0]
+ add r0, r0, r5
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ bne ._607 @cond_branch
+._602:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._609:
+ .align 2, 0
+._608:
+ .word 0x16d
+ .word gUnknown_Debug_083F8698
+ .word 0x16b
+
+ thumb_func_end debug_80C643C
+
+ thumb_func_start debug_80C6544
+debug_80C6544:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r9, r0
+ ldr r0, ._614 @ gUnknown_Debug_083F8698
+ mov r8, r0
+ ldr r6, ._614 + 4 @ gUnknown_Debug_2038A1C
+ ldr r1, [r6]
+ mov r5, #0xb4
+ lsl r5, r5, #0x1
+ add r0, r1, r5
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r8
+ ldr r4, ._614 + 8 @ 0x169
+ add r1, r1, r4
+ ldrb r1, [r1]
+ ldr r0, [r0]
+ add r0, r0, r1
+ ldrb r0, [r0]
+ bl debug_80C5B60
+ add r7, r0, #0
+ ldr r2, ._614 + 12 @ gUnknown_Debug_083F8554
+ ldr r3, [r6]
+ add r5, r3, r5
+ ldrb r0, [r5]
+ lsl r0, r0, #0x3
+ add r0, r0, r8
+ add r4, r3, r4
+ ldrb r1, [r4]
+ ldr r0, [r0]
+ add r0, r0, r1
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r2, r2, #0x4
+ add r0, r0, r2
+ ldr r1, [r0]
+ ldr r5, [r1]
+ ldr r4, [r1, #0x4]
+ ldr r2, ._614 + 16 @ gUnknown_Debug_083F8768
+ mov r6, #0xb5
+ lsl r6, r6, #0x1
+ add r0, r3, r6
+ ldrb r0, [r0]
+ lsl r0, r0, #0x2
+ add r0, r0, r2
+ ldr r3, [r0]
+ ldrb r0, [r1, #0x8]
+ cmp r0, #0
+ bne ._623 @cond_branch
+ mov r0, r9
+ cmp r0, #0x1
+ beq ._611 @cond_branch
+ cmp r0, #0x2
+ beq ._612 @cond_branch
+ b ._623
+._615:
+ .align 2, 0
+._614:
+ .word gUnknown_Debug_083F8698
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+ .word gUnknown_Debug_083F8554
+ .word gUnknown_Debug_083F8768
+._611:
+ sub r0, r4, r3
+ cmp r7, r0
+ bcs ._616 @cond_branch
+ add r7, r7, r3
+ b ._623
+._616:
+ cmp r7, r4
+ bcc ._622 @cond_branch
+ b ._619
+._612:
+ add r0, r5, r3
+ cmp r7, r0
+ bls ._620 @cond_branch
+ sub r7, r7, r3
+ b ._623
+._620:
+ cmp r7, r5
+ bls ._622 @cond_branch
+._619:
+ add r7, r5, #0
+ b ._623
+._622:
+ add r7, r4, #0
+._623:
+ ldr r1, ._624 @ gUnknown_Debug_083F8698
+ ldr r0, ._624 + 4 @ gUnknown_Debug_2038A1C
+ ldr r2, [r0]
+ mov r3, #0xb4
+ lsl r3, r3, #0x1
+ add r0, r2, r3
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r6, ._624 + 8 @ 0x169
+ add r1, r2, r6
+ ldrb r1, [r1]
+ ldr r0, [r0]
+ add r0, r0, r1
+ ldrb r1, [r0]
+ add r0, r7, #0
+ bl debug_80C5B74
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._625:
+ .align 2, 0
+._624:
+ .word gUnknown_Debug_083F8698
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+
+ thumb_func_end debug_80C6544
+
+ thumb_func_start debug_80C6630
+debug_80C6630:
+ push {r4, r5, lr}
+ add r4, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ mov r0, #0xfc
+ strb r0, [r4]
+ add r4, r4, #0x1
+ mov r0, #0x1
+ strb r0, [r4]
+ add r4, r4, #0x1
+ cmp r2, #0x2
+ bne ._626 @cond_branch
+ ldr r0, ._629 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ mov r5, #0xb5
+ lsl r5, r5, #0x1
+ add r0, r0, r5
+ ldrb r0, [r0]
+ cmp r3, r0
+ beq ._627 @cond_branch
+ strb r2, [r4]
+ b ._628
+._630:
+ .align 2, 0
+._629:
+ .word gUnknown_Debug_2038A1C
+._627:
+ mov r0, #0x4
+._626:
+ strb r0, [r4]
+._628:
+ add r0, r1, #0
+ add r0, r0, #0xa1
+ strb r0, [r4, #0x1]
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C6630
+
+ thumb_func_start debug_80C6678
+debug_80C6678:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ mov r9, r0
+ add r6, r1, #0
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ mov r8, r3
+ mov r7, #0x0
+ sub r0, r2, #1
+ cmp r0, #0x9
+ bhi ._644 @cond_branch
+ lsl r0, r0, #0x2
+ ldr r1, ._633 @
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+._634:
+ .align 2, 0
+._633:
+ .word ._632
+._632:
+ .word ._635
+ .word ._636
+ .word ._637
+ .word ._638
+ .word ._639
+ .word ._640
+ .word ._641
+ .word ._642
+ .word ._643
+ .word ._644
+._644:
+ mov r0, r9
+ add r4, r0, r7
+ ldr r5, ._645 @ 0x3b9aca00
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x9
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._643:
+ mov r1, r9
+ add r4, r1, r7
+ ldr r5, ._645 + 4 @ 0x5f5e100
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x8
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._642:
+ mov r0, r9
+ add r4, r0, r7
+ ldr r5, ._645 + 8 @ 0x989680
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x7
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._641:
+ mov r1, r9
+ add r4, r1, r7
+ ldr r5, ._645 + 12 @ 0xf4240
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x6
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._640:
+ mov r0, r9
+ add r4, r0, r7
+ ldr r5, ._645 + 16 @ 0x186a0
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x5
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._639:
+ mov r1, r9
+ add r4, r1, r7
+ ldr r5, ._645 + 20 @ 0x2710
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x4
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._638:
+ mov r0, r9
+ add r4, r0, r7
+ mov r5, #0xfa
+ lsl r5, r5, #0x2
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x3
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._637:
+ mov r1, r9
+ add r4, r1, r7
+ add r0, r6, #0
+ mov r1, #0x64
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x2
+ bl debug_80C6630
+ add r0, r6, #0
+ mov r1, #0x64
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._636:
+ mov r0, r9
+ add r4, r0, r7
+ add r0, r6, #0
+ mov r1, #0xa
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x1
+ bl debug_80C6630
+ add r0, r6, #0
+ mov r1, #0xa
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._635:
+ mov r1, r9
+ add r0, r1, r7
+ lsl r1, r6, #0x18
+ lsr r1, r1, #0x18
+ mov r2, r8
+ mov r3, #0x0
+ bl debug_80C6630
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._646:
+ .align 2, 0
+._645:
+ .word 0x3b9aca00
+ .word 0x5f5e100
+ .word 0x989680
+ .word 0xf4240
+ .word 0x186a0
+ .word 0x2710
+
+ thumb_func_end debug_80C6678
+
+ thumb_func_start debug_80C689C
+debug_80C689C:
+ push {r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r3, #0x0
+ ldrb r0, [r4]
+ b ._647
+._649:
+ add r1, r5, r3
+ add r0, r4, r3
+ ldrb r0, [r0]
+ strb r0, [r1]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ add r0, r4, r3
+ ldrb r0, [r0]
+._647:
+ cmp r0, #0xff
+ beq ._648 @cond_branch
+ cmp r3, r2
+ bcc ._649 @cond_branch
+._648:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C689C
+
+ thumb_func_start debug_80C68CC
+debug_80C68CC:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xfffffff8
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ lsl r1, r1, #0x18
+ lsr r6, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r5, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ mov r2, #0x0
+ mov r1, #0x0
+._650:
+ mov r7, sp
+ add r0, r7, r2
+ strb r1, [r0]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x3
+ bls ._650 @cond_branch
+ mov r1, sp
+ mov r0, #0xff
+ strb r0, [r1, #0x4]
+ cmp r3, #0x2
+ beq ._651 @cond_branch
+ cmp r3, #0x2
+ bgt ._652 @cond_branch
+ cmp r3, #0x1
+ beq ._653 @cond_branch
+ b ._654
+._652:
+ cmp r3, #0x3
+ beq ._655 @cond_branch
+._654:
+ mov r1, sp
+ lsr r0, r4, #0xc
+ strb r0, [r1]
+._655:
+ mov r1, sp
+ mov r0, #0xf0
+ lsl r0, r0, #0x4
+ and r0, r0, r4
+ lsr r0, r0, #0x8
+ strb r0, [r1, #0x1]
+._651:
+ mov r1, sp
+ mov r0, #0xf0
+ and r0, r0, r4
+ lsr r0, r0, #0x4
+ strb r0, [r1, #0x2]
+._653:
+ mov r2, sp
+ mov r1, #0xf
+ add r0, r4, #0
+ and r0, r0, r1
+ strb r0, [r2, #0x3]
+ mov r2, #0x0
+._658:
+ mov r0, sp
+ add r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, #0x9
+ bhi ._656 @cond_branch
+ add r0, r0, #0xa1
+ b ._657
+._656:
+ add r0, r0, #0xb1
+._657:
+ strb r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x3
+ bls ._658 @cond_branch
+ mov r0, #0x4
+ sub r0, r0, r3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r0, r0, sp
+ add r1, r6, #0
+ add r2, r5, #0
+ bl Menu_PrintText
+ add sp, sp, #0x8
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C68CC
+
+ thumb_func_start InitSeePokemonGraphics
+InitSeePokemonGraphics:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffff8
+ bl debug_80C35DC
+ ldr r1, ._659 @ byte_83F88EC
+ ldr r2, ._659 + 4 @ 0x600e000
+ ldr r0, ._659 + 8 @ 0x40000d4
+ str r1, [r0]
+ str r2, [r0, #0x4]
+ ldr r1, ._659 + 12 @ 0x80000400
+ str r1, [r0, #0x8]
+ ldr r0, [r0, #0x8]
+ ldr r0, ._659 + 16 @ word_83F888C
+ mov r1, #0x80
+ mov r2, #0x60
+ bl LoadPalette
+ ldr r1, ._659 + 20 @ 0x7fff
+ add r0, sp, #0x4
+ strh r1, [r0]
+ mov r1, #0x0
+ mov r2, #0x2
+ bl LoadPalette
+ mov r0, #0x1
+ neg r0, r0
+ mov r5, #0x0
+ str r5, [sp]
+ mov r1, #0x0
+ mov r2, #0x10
+ mov r3, #0x0
+ bl BeginNormalPaletteFade
+ ldr r0, ._659 + 24 @ 0x4000040
+ mov r6, #0x0
+ strh r5, [r0]
+ add r0, r0, #0x4
+ strh r5, [r0]
+ sub r0, r0, #0x2
+ strh r5, [r0]
+ add r0, r0, #0x4
+ strh r5, [r0]
+ ldr r1, ._659 + 28 @ 0x4000048
+ mov r0, #0x3f
+ strh r0, [r1]
+ add r1, r1, #0x2
+ mov r0, #0x1f
+ strh r0, [r1]
+ add r1, r1, #0x6
+ mov r0, #0xf1
+ strh r0, [r1]
+ ldr r0, ._659 + 32 @ 0x4000052
+ strh r5, [r0]
+ add r1, r1, #0x4
+ mov r0, #0x7
+ strh r0, [r1]
+ ldr r3, ._659 + 36 @ 0x4000208
+ ldrh r2, [r3]
+ strh r5, [r3]
+ ldr r4, ._659 + 40 @ 0x4000200
+ ldrh r0, [r4]
+ mov r1, #0x1
+ orr r0, r0, r1
+ strh r0, [r4]
+ strh r2, [r3]
+ ldr r0, ._659 + 44 @ debug_80C3758
+ bl SetVBlankCallback
+ ldr r0, ._659 + 48 @ debug_80C370C
+ bl SetMainCallback2
+ bl sub_809D51C
+ ldr r1, ._659 + 52 @ 0x4000008
+ ldr r2, ._659 + 56 @ 0x1f0b
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x2
+ ldr r2, ._659 + 60 @ 0x1e0a
+ add r0, r2, #0
+ strh r0, [r1]
+ sub r1, r1, #0xa
+ mov r2, #0xcd
+ lsl r2, r2, #0x6
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, ._659 + 64 @ debug_80C6B00
+ mov r1, #0x0
+ bl CreateTask
+ ldr r1, ._659 + 68 @ gUnknown_Debug_2038A20
+ ldr r0, ._659 + 72 @ 0x2018000
+ str r0, [r1]
+ ldr r1, ._659 + 76 @ 0x115
+ strh r1, [r0]
+ strb r6, [r0, #0x2]
+ strb r6, [r0, #0x3]
+ strb r6, [r0, #0x5]
+ strb r6, [r0, #0x7]
+ strb r6, [r0, #0xa]
+ strb r6, [r0, #0x8]
+ ldr r4, ._659 + 80 @ gSpriteTemplate_83F8874
+ add r0, r4, #0
+ mov r1, #0x6c
+ mov r2, #0x74
+ mov r3, #0x0
+ bl CreateSprite
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ ldr r6, ._659 + 84 @ gSprites
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ strh r5, [r0, #0x2e]
+ mov r1, #0x0
+ bl StartSpriteAnim
+ add r0, r4, #0
+ mov r1, #0x6c
+ mov r2, #0x74
+ mov r3, #0x0
+ bl CreateSprite
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ mov r1, #0x1
+ strh r1, [r0, #0x2e]
+ bl StartSpriteAnim
+ add r0, r4, #0
+ mov r1, #0x6c
+ mov r2, #0x74
+ mov r3, #0x0
+ bl CreateSprite
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ mov r1, #0x2
+ strh r1, [r0, #0x2e]
+ bl StartSpriteAnim
+ add sp, sp, #0x8
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._660:
+ .align 2, 0
+._659:
+ .word byte_83F88EC
+ .word 0x600e000
+ .word 0x40000d4
+ .word 0x80000400
+ .word word_83F888C
+ .word 0x7fff
+ .word 0x4000040
+ .word 0x4000048
+ .word 0x4000052
+ .word 0x4000208
+ .word 0x4000200
+ .word debug_80C3758+1
+ .word debug_80C370C+1
+ .word 0x4000008
+ .word 0x1f0b
+ .word 0x1e0a
+ .word debug_80C6B00+1
+ .word gUnknown_Debug_2038A20
+ .word 0x2018000
+ .word 0x115
+ .word gSpriteTemplate_83F8874
+ .word gSprites
+
+ thumb_func_end InitSeePokemonGraphics
+
+ thumb_func_start debug_80C6B00
+debug_80C6B00:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xffffffec
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r1, ._666 @ gUnknown_Debug_083F8815
+ mov r0, sp
+ mov r2, #0x12
+ bl memcpy
+ mov r0, #0xa
+ mov r1, #0x0
+ mov r2, #0xf
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x9
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0xa
+ mov r2, #0x9
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x10
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._666 + 4 @ gUnknown_Debug_083F87D0
+ mov r1, #0x11
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._666 + 8 @ gUnknown_Debug_083F87D8
+ mov r1, #0x1b
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._666 + 12 @ gUnknown_Debug_083F87E0
+ mov r1, #0x11
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0xa
+ mov r1, #0x8
+ mov r2, #0x1d
+ mov r3, #0xc
+ bl Menu_DrawStdWindowFrame
+ mov r2, #0x0
+ ldr r4, ._666 + 16 @ 0x600fa56
+ ldr r0, ._666 + 20 @ 0xa311
+ add r3, r0, #0
+._661:
+ lsl r0, r2, #0x1
+ add r0, r0, r4
+ add r1, r2, r3
+ strh r1, [r0]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0xe
+ bls ._661 @cond_branch
+ mov r2, #0x0
+ ldr r5, ._666 + 24 @ gUnknown_Debug_083F87F4
+ lsl r6, r7, #0x2
+ mov r8, r6
+ ldr r4, ._666 + 28 @ 0x600f256
+ ldr r0, ._666 + 32 @ 0x8301
+ add r3, r0, #0
+._662:
+ lsl r0, r2, #0x1
+ add r0, r0, r4
+ add r1, r2, r3
+ strh r1, [r0]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0xe
+ bls ._662 @cond_branch
+ add r0, r5, #0
+ mov r1, #0x14
+ mov r2, #0xa
+ bl Menu_PrintText
+ mov r0, #0xa
+ mov r1, #0xd
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r1, sp
+ mov r0, #0x23
+ strb r0, [r1]
+ mov r2, #0x0
+ ldr r4, ._666 + 36 @ 0x600f396
+ mov r5, #0x93
+ lsl r5, r5, #0x8
+ add r3, r5, #0
+._663:
+ lsl r1, r2, #0x1
+ add r1, r1, r4
+ mov r6, sp
+ add r0, r6, r2
+ ldrb r0, [r0]
+ add r0, r0, r3
+ strh r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x11
+ bls ._663 @cond_branch
+ mov r1, sp
+ mov r0, #0x24
+ strb r0, [r1]
+ mov r2, #0x0
+ ldr r5, ._666 + 40 @ gUnknown_Debug_083F8801
+ ldr r4, ._666 + 44 @ 0x600f3d6
+ mov r0, #0x93
+ lsl r0, r0, #0x8
+ add r3, r0, #0
+._664:
+ lsl r1, r2, #0x1
+ add r1, r1, r4
+ mov r6, sp
+ add r0, r6, r2
+ ldrb r0, [r0]
+ add r0, r0, r3
+ strh r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x11
+ bls ._664 @cond_branch
+ mov r1, sp
+ mov r0, #0x25
+ strb r0, [r1]
+ mov r2, #0x0
+ ldr r4, ._666 + 48 @ 0x600f416
+ mov r0, #0x93
+ lsl r0, r0, #0x8
+ add r3, r0, #0
+._665:
+ lsl r1, r2, #0x1
+ add r1, r1, r4
+ mov r6, sp
+ add r0, r6, r2
+ ldrb r0, [r0]
+ add r0, r0, r3
+ strh r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x11
+ bls ._665 @cond_branch
+ add r0, r5, #0
+ mov r1, #0xf
+ mov r2, #0x11
+ bl Menu_PrintText
+ ldr r1, ._666 + 52 @ 0x4000040
+ ldr r2, ._666 + 56 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r5, ._666 + 60 @ 0x699f
+ add r0, r5, #0
+ strh r0, [r1]
+ ldr r1, ._666 + 64 @ gTasks
+ mov r6, r8
+ add r0, r6, r7
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._666 + 68 @ debug_80C6CB8
+ str r1, [r0]
+ add sp, sp, #0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._667:
+ .align 2, 0
+._666:
+ .word gUnknown_Debug_083F8815
+ .word gUnknown_Debug_083F87D0
+ .word gUnknown_Debug_083F87D8
+ .word gUnknown_Debug_083F87E0
+ .word 0x600fa56
+ .word 0xa311
+ .word gUnknown_Debug_083F87F4
+ .word 0x600f256
+ .word 0x8301
+ .word 0x600f396
+ .word gUnknown_Debug_083F8801
+ .word 0x600f3d6
+ .word 0x600f416
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x699f
+ .word gTasks
+ .word debug_80C6CB8+1
+
+ thumb_func_end debug_80C6B00
+
+ thumb_func_start debug_80C6CB8
+debug_80C6CB8:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xfffffff4
+ mov sl, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov sl, r0
+ ldr r5, ._668 @ gUnknown_Debug_2038A20
+ ldr r4, [r5]
+ ldrh r2, [r4]
+ lsl r0, r2, #0x3
+ ldr r1, ._668 + 4 @ gMonFrontPicTable
+ add r0, r0, r1
+ ldr r1, ._668 + 8 @ gMonFrontPicCoords
+ lsl r2, r2, #0x2
+ add r2, r2, r1
+ ldrb r1, [r2]
+ ldrb r2, [r2, #0x1]
+ ldr r3, ._668 + 12 @ gUnknown_081FAF4C
+ mov r8, r3
+ ldr r6, [r3]
+ str r6, [sp, #0x8]
+ ldr r3, [r3, #0x4]
+ str r3, [sp]
+ ldrh r3, [r4]
+ str r3, [sp, #0x4]
+ add r3, r6, #0
+ bl DecompressPicFromTable_2
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ lsl r0, r0, #0x3
+ ldr r7, ._668 + 16 @ gMonPaletteTable
+ add r0, r0, r7
+ bl LoadCompressedObjectPalette
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x1
+ bl GetMonSpriteTemplate_803C56C
+ ldr r0, ._668 + 20 @ gUnknown_02024E8C
+ mov r1, #0x28
+ mov r2, #0x28
+ mov r3, #0x0
+ bl CreateSprite
+ ldr r1, [r5]
+ strb r0, [r1, #0x2]
+ ldr r2, [r5]
+ ldrb r1, [r2, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ ldr r1, ._668 + 24 @ gSprites
+ add r0, r0, r1
+ ldr r3, ._668 + 28 @ debug_69
+ mov r9, r3
+ str r3, [r0]
+ ldrb r0, [r2, #0x2]
+ lsl r1, r0, #0x4
+ add r1, r1, r0
+ lsl r1, r1, #0x2
+ ldr r6, ._668 + 32 @ gSprites
+ add r1, r1, r6
+ ldrb r2, [r1, #0x5]
+ mov r6, #0xd
+ neg r6, r6
+ add r0, r6, #0
+ and r0, r0, r2
+ strb r0, [r1, #0x5]
+ ldr r4, [r5]
+ ldrh r2, [r4]
+ lsl r0, r2, #0x3
+ ldr r1, ._668 + 36 @ gMonBackPicTable
+ add r0, r0, r1
+ ldr r1, ._668 + 40 @ gMonBackPicCoords
+ lsl r2, r2, #0x2
+ add r2, r2, r1
+ ldrb r1, [r2]
+ ldrb r2, [r2, #0x1]
+ mov r7, r8
+ ldr r3, [r7, #0x8]
+ str r3, [sp]
+ ldrh r3, [r4]
+ str r3, [sp, #0x4]
+ ldr r3, [sp, #0x8]
+ bl DecompressPicFromTable_2
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ lsl r0, r0, #0x3
+ ldr r1, ._668 + 16 @ gMonPaletteTable
+ add r0, r0, r1
+ bl LoadCompressedObjectPalette
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x2
+ bl GetMonSpriteTemplate_803C56C
+ ldr r0, ._668 + 20 @ gUnknown_02024E8C
+ mov r1, #0x28
+ mov r2, #0x78
+ mov r3, #0x0
+ bl CreateSprite
+ ldr r1, [r5]
+ strb r0, [r1, #0x3]
+ ldr r2, [r5]
+ ldrb r1, [r2, #0x3]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ ldr r3, ._668 + 24 @ gSprites
+ add r0, r0, r3
+ mov r7, r9
+ str r7, [r0]
+ ldrb r1, [r2, #0x3]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ ldr r1, ._668 + 32 @ gSprites
+ add r0, r0, r1
+ ldrb r1, [r0, #0x5]
+ and r6, r6, r1
+ strb r6, [r0, #0x5]
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ ldr r1, ._668 + 44 @ sub_809D62C
+ mov r2, #0x0
+ str r2, [sp]
+ str r2, [sp, #0x4]
+ mov r2, #0x68
+ mov r3, #0x2c
+ bl CreateMonIcon
+ ldr r1, [r5]
+ strb r0, [r1, #0x4]
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ bl SpeciesToNationalPokedexNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r2, #0xff
+ lsl r2, r2, #0x2
+ mov r1, #0x2
+ bl sub_8091738
+ ldr r1, ._668 + 48 @ 0x600f858
+ ldr r3, ._668 + 52 @ 0xf3fc
+ add r0, r3, #0
+ strh r0, [r1]
+ add r1, r1, #0x2
+ ldr r6, ._668 + 56 @ 0xf3fd
+ add r0, r6, #0
+ strh r0, [r1]
+ add r1, r1, #0x3e
+ ldr r7, ._668 + 60 @ 0xf3fe
+ add r0, r7, #0
+ strh r0, [r1]
+ add r1, r1, #0x2
+ ldr r2, ._668 + 64 @ 0xf3ff
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x11
+ mov r2, #0x3
+ bl debug_80C3800
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x1a
+ mov r2, #0x5
+ bl debug_80C376C
+ ldr r2, [r5]
+ ldrb r1, [r2, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ ldr r3, ._668 + 32 @ gSprites
+ add r0, r0, r3
+ ldrb r0, [r0, #0x5]
+ lsr r0, r0, #0x4
+ strb r0, [r2, #0x6]
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ ldr r4, ._668 + 68 @ gPlttBufferUnfaded
+ add r0, r0, r4
+ ldr r6, ._668 + 72 @ 0xffffff00
+ add r1, r4, r6
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ add r0, r0, r4
+ ldr r1, ._668 + 76 @ gPlttBufferFaded
+ mov r2, #0x10
+ bl CpuSet
+ ldr r1, ._668 + 80 @ gTasks
+ mov r7, sl
+ lsl r0, r7, #0x2
+ add r0, r0, sl
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._668 + 84 @ debug_80C6EE8
+ str r1, [r0]
+ ldr r0, [r5]
+ mov r1, #0x0
+ strb r1, [r0, #0x9]
+ bl StopCryAndClearCrySongs
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x0
+ bl PlayCry1
+ add sp, sp, #0xc
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._669:
+ .align 2, 0
+._668:
+ .word gUnknown_Debug_2038A20
+ .word gMonFrontPicTable
+ .word gMonFrontPicCoords
+ .word gUnknown_081FAF4C
+ .word gMonPaletteTable
+ .word gUnknown_02024E8C
+ .word gSprites+0x1c
+ .word debug_69+1
+ .word gSprites
+ .word gMonBackPicTable
+ .word gMonBackPicCoords
+ .word sub_809D62C+1
+ .word 0x600f858
+ .word 0xf3fc
+ .word 0xf3fd
+ .word 0xf3fe
+ .word 0xf3ff
+ .word gPlttBufferUnfaded+0x200
+ .word 0xffffff00
+ .word gPlttBufferFaded+0x100
+ .word gTasks
+ .word debug_80C6EE8+1
+
+ thumb_func_end debug_80C6CB8
+
+ thumb_func_start debug_80C6EE8
+debug_80C6EE8:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ lsl r6, r6, #0x18
+ lsr r6, r6, #0x18
+ ldr r4, ._670 @ gPlttBufferUnfaded
+ ldr r5, ._670 + 4 @ gUnknown_Debug_2038A20
+ ldr r1, [r5]
+ add r1, r1, #0x10
+ add r0, r4, #0
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, ._670 + 8 @ 0xffffff00
+ add r4, r4, r0
+ ldr r3, [r5]
+ ldrb r0, [r3, #0x7]
+ add r0, r0, #0x81
+ lsl r0, r0, #0x1
+ add r0, r0, r4
+ ldrh r4, [r0]
+ mov r1, #0x1f
+ and r1, r1, r4
+ ldrb r2, [r3, #0xc]
+ mov r0, #0x20
+ neg r0, r0
+ and r0, r0, r2
+ orr r0, r0, r1
+ strb r0, [r3, #0xc]
+ ldr r3, [r5]
+ mov r1, #0xf8
+ lsl r1, r1, #0x2
+ and r1, r1, r4
+ ldrh r2, [r3, #0xc]
+ ldr r0, ._670 + 12 @ 0xfffffc1f
+ and r0, r0, r2
+ orr r0, r0, r1
+ strh r0, [r3, #0xc]
+ mov r1, #0xf8
+ lsl r1, r1, #0x7
+ and r1, r1, r4
+ lsr r1, r1, #0x8
+ ldrb r2, [r3, #0xd]
+ mov r0, #0x7d
+ neg r0, r0
+ and r0, r0, r2
+ orr r0, r0, r1
+ strb r0, [r3, #0xd]
+ ldr r2, [r5]
+ ldrb r1, [r2, #0xd]
+ mov r0, #0x7f
+ and r0, r0, r1
+ strb r0, [r2, #0xd]
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x7]
+ add r0, r0, #0x1
+ mov r1, #0xb
+ mov r2, #0xa
+ mov r3, #0x2
+ bl debug_80C68CC
+ ldr r0, ._670 + 16 @ gUnknown_Debug_083F8813
+ mov r1, #0xd
+ mov r2, #0xa
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #0xa
+ mov r3, #0x4
+ bl debug_80C68CC
+ ldr r1, ._670 + 20 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._670 + 24 @ debug_80C6FA8
+ str r1, [r0]
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._671:
+ .align 2, 0
+._670:
+ .word gPlttBufferUnfaded+0x100
+ .word gUnknown_Debug_2038A20
+ .word 0xffffff00
+ .word 0xfffffc1f
+ .word gUnknown_Debug_083F8813
+ .word gTasks
+ .word debug_80C6FA8+1
+
+ thumb_func_end debug_80C6EE8
+
+ thumb_func_start debug_80C6FA8
+debug_80C6FA8:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r1, ._674 @ gMain
+ ldrh r2, [r1, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r2
+ add r4, r1, #0
+ cmp r0, #0
+ beq ._672 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r0, ._674 + 4 @ debug_80C370C
+ bl SetMainCallback2
+ ldr r1, ._674 + 8 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._674 + 12 @ debug_80C373C
+ str r1, [r0]
+ b ._703
+._675:
+ .align 2, 0
+._674:
+ .word gMain
+ .word debug_80C370C+1
+ .word gTasks
+ .word debug_80C373C+1
+._672:
+ ldrh r1, [r4, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._676 @cond_branch
+ ldr r4, ._678 @ gUnknown_Debug_2038A20
+ ldr r0, [r4]
+ ldrh r1, [r0]
+ mov r0, #0x0
+ b ._677
+._679:
+ .align 2, 0
+._678:
+ .word gUnknown_Debug_2038A20
+._676:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._680 @cond_branch
+ ldr r4, ._682 @ gUnknown_Debug_2038A20
+ ldr r0, [r4]
+ ldrh r1, [r0]
+ mov r0, #0x1
+._677:
+ bl debug_80C3878
+ ldr r1, [r4]
+ strh r0, [r1]
+ ldr r1, ._682 + 4 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._682 + 8 @ debug_80C71FC
+ str r1, [r0]
+ b ._703
+._683:
+ .align 2, 0
+._682:
+ .word gUnknown_Debug_2038A20
+ .word gTasks
+ .word debug_80C71FC+1
+._680:
+ mov r3, #0x1
+ and r3, r3, r2
+ cmp r3, #0
+ beq ._684 @cond_branch
+ ldr r0, ._686 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ mov r0, #0x1
+ strb r0, [r1, #0x5]
+ ldr r1, ._686 + 4 @ 0x4000040
+ ldr r2, ._686 + 8 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._686 + 12 @ 0x4167
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._686 + 16 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._686 + 20 @ debug_80C7294
+ str r1, [r0]
+ b ._703
+._687:
+ .align 2, 0
+._686:
+ .word gUnknown_Debug_2038A20
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x4167
+ .word gTasks
+ .word debug_80C7294+1
+._684:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._689 @cond_branch
+ ldr r1, ._691 @ gUnknown_Debug_2038A20
+ ldr r2, [r1]
+ ldrb r0, [r2, #0x7]
+ cmp r0, #0xd
+ bhi ._689 @cond_branch
+ lsl r0, r0, #0x1
+ ldr r2, ._691 + 4 @ 0x5000102
+ add r0, r0, r2
+ strh r3, [r0]
+ ldr r1, [r1]
+ ldrb r0, [r1, #0x7]
+ add r0, r0, #0x1
+ strb r0, [r1, #0x7]
+ b ._695
+._692:
+ .align 2, 0
+._691:
+ .word gUnknown_Debug_2038A20
+ .word 0x5000102
+._689:
+ ldrh r1, [r4, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._694 @cond_branch
+ ldr r2, ._696 @ gUnknown_Debug_2038A20
+ ldr r1, [r2]
+ ldrb r0, [r1, #0x7]
+ cmp r0, #0
+ beq ._694 @cond_branch
+ lsl r0, r0, #0x1
+ ldr r1, ._696 + 4 @ 0x5000102
+ add r0, r0, r1
+ mov r1, #0x0
+ strh r1, [r0]
+ ldr r1, [r2]
+ ldrb r0, [r1, #0x7]
+ sub r0, r0, #0x1
+ strb r0, [r1, #0x7]
+ b ._695
+._697:
+ .align 2, 0
+._696:
+ .word gUnknown_Debug_2038A20
+ .word 0x5000102
+._694:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x8
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._698 @cond_branch
+ ldr r4, ._701 @ gUnknown_Debug_2038A20
+ ldr r2, [r4]
+ ldrb r0, [r2, #0x9]
+ mov r1, #0x1
+ eor r0, r0, r1
+ strb r0, [r2, #0x9]
+ ldr r1, [r4]
+ ldrb r0, [r1, #0x9]
+ cmp r0, #0
+ beq ._699 @cond_branch
+ ldrh r0, [r1]
+ mov r1, #0x0
+ mov r2, #0x0
+ bl GetMonSpritePalFromOtIdPersonality
+ ldr r1, [r4]
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x14
+ mov r2, #0x80
+ lsl r2, r2, #0x11
+ add r1, r1, r2
+ lsr r1, r1, #0x10
+ mov r2, #0x20
+ bl LoadCompressedPalette
+ b ._700
+._702:
+ .align 2, 0
+._701:
+ .word gUnknown_Debug_2038A20
+._699:
+ ldrh r0, [r1]
+ mov r1, #0x0
+ mov r2, #0x9
+ bl GetMonSpritePalFromOtIdPersonality
+ ldr r1, [r4]
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x14
+ mov r2, #0x80
+ lsl r2, r2, #0x11
+ add r1, r1, r2
+ lsr r1, r1, #0x10
+ mov r2, #0x20
+ bl LoadCompressedPalette
+._700:
+ ldr r5, ._704 @ gUnknown_Debug_2038A20
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ ldr r4, ._704 + 4 @ gPlttBufferUnfaded
+ add r0, r0, r4
+ ldr r2, ._704 + 8 @ 0xffffff00
+ add r1, r4, r2
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ add r0, r0, r4
+ ldr r1, ._704 + 12 @ gPlttBufferFaded
+ mov r2, #0x10
+ bl CpuSet
+._695:
+ ldr r1, ._704 + 16 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._704 + 20 @ debug_80C6EE8
+ str r1, [r0]
+ b ._703
+._705:
+ .align 2, 0
+._704:
+ .word gUnknown_Debug_2038A20
+ .word gPlttBufferUnfaded+0x200
+ .word 0xffffff00
+ .word gPlttBufferFaded+0x100
+ .word gTasks
+ .word debug_80C6EE8+1
+._698:
+ mov r0, #0x4
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._706 @cond_branch
+ bl StopCryAndClearCrySongs
+ ldr r0, ._707 @ gUnknown_Debug_2038A20
+ ldr r0, [r0]
+ ldrh r0, [r0]
+ mov r1, #0x0
+ bl PlayCry1
+._706:
+ ldr r2, ._707 @ gUnknown_Debug_2038A20
+ ldr r1, [r2]
+ ldrb r0, [r1, #0x8]
+ add r0, r0, #0x4
+ strb r0, [r1, #0x8]
+ ldr r3, [r2]
+ ldrb r1, [r3, #0x8]
+ mov r0, #0x1f
+ and r0, r0, r1
+ strb r0, [r3, #0x8]
+ ldr r0, [r2]
+ ldrb r1, [r0, #0x7]
+ lsl r1, r1, #0x1
+ ldr r2, ._707 + 4 @ 0x5000142
+ add r1, r1, r2
+ ldr r2, ._707 + 8 @ gUnknown_Debug_083F8790
+ ldrb r0, [r0, #0x8]
+ lsl r0, r0, #0x1
+ add r0, r0, r2
+ ldrh r0, [r0]
+ strh r0, [r1]
+._703:
+ add sp, sp, #0x4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._708:
+ .align 2, 0
+._707:
+ .word gUnknown_Debug_2038A20
+ .word 0x5000142
+ .word gUnknown_Debug_083F8790
+
+ thumb_func_end debug_80C6FA8
+
+ thumb_func_start debug_80C71FC
+debug_80C71FC:
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ ldr r6, ._709 @ gSprites
+ ldr r4, ._709 + 4 @ gUnknown_Debug_2038A20
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldrb r0, [r0, #0x5]
+ lsr r0, r0, #0x4
+ bl GetSpritePaletteTagByPaletteNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FreeSpritePaletteByTag
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ bl DestroySprite
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x3]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldrb r0, [r0, #0x5]
+ lsr r0, r0, #0x4
+ bl GetSpritePaletteTagByPaletteNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FreeSpritePaletteByTag
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x3]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ bl DestroySprite
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x4]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ bl sub_809D510
+ ldr r1, ._709 + 8 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._709 + 12 @ debug_80C6CB8
+ str r1, [r0]
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._710:
+ .align 2, 0
+._709:
+ .word gSprites
+ .word gUnknown_Debug_2038A20
+ .word gTasks
+ .word debug_80C6CB8+1
+
+ thumb_func_end debug_80C71FC
+
+ thumb_func_start debug_80C7294
+debug_80C7294:
+ push {r4, r5, r6, r7, lr}
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, ._713 @ gMain
+ ldrh r2, [r0, #0x2e]
+ mov r1, #0x1
+ and r1, r1, r2
+ add r3, r0, #0
+ cmp r1, #0
+ beq ._711 @cond_branch
+ ldr r0, ._713 + 4 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ mov r0, #0x0
+ strb r0, [r1, #0x5]
+ ldr r1, ._713 + 8 @ 0x4000040
+ ldr r2, ._713 + 12 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._713 + 16 @ 0x699f
+ add r0, r2, #0
+ strh r0, [r1]
+ b ._712
+._714:
+ .align 2, 0
+._713:
+ .word gMain
+ .word gUnknown_Debug_2038A20
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x699f
+._711:
+ mov r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._715 @cond_branch
+ ldr r6, ._717 @ gUnknown_Debug_2038A20
+ ldr r0, [r6]
+ strb r1, [r0, #0x5]
+ ldr r1, ._717 + 4 @ 0x4000040
+ ldr r2, ._717 + 8 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._717 + 12 @ 0x699f
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, [r6]
+ add r0, r0, #0x10
+ ldr r4, ._717 + 16 @ gPlttBufferUnfaded
+ add r1, r4, #0
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, [r6]
+ add r0, r0, #0x10
+ ldr r5, ._717 + 20 @ gPlttBufferFaded
+ add r1, r5, #0
+ mov r2, #0x10
+ bl CpuSet
+ ldr r1, [r6]
+ add r0, r1, #0
+ add r0, r0, #0x10
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x5
+ mov r2, #0x80
+ lsl r2, r2, #0x1
+ add r4, r4, r2
+ add r1, r1, r4
+ mov r2, #0x10
+ bl CpuSet
+ ldr r1, [r6]
+ add r0, r1, #0
+ add r0, r0, #0x10
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x5
+ mov r2, #0x80
+ lsl r2, r2, #0x1
+ add r5, r5, r2
+ add r1, r1, r5
+ mov r2, #0x10
+ bl CpuSet
+._712:
+ ldr r1, ._717 + 24 @ gTasks
+ lsl r0, r7, #0x2
+ add r0, r0, r7
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._717 + 28 @ debug_80C6EE8
+ str r1, [r0]
+ b ._754
+._718:
+ .align 2, 0
+._717:
+ .word gUnknown_Debug_2038A20
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x699f
+ .word gPlttBufferUnfaded+0x100
+ .word gPlttBufferFaded+0x100
+ .word gTasks
+ .word debug_80C6EE8+1
+._715:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._720 @cond_branch
+ ldr r0, ._722 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ ldrb r0, [r1, #0xa]
+ cmp r0, #0x1
+ bhi ._720 @cond_branch
+ add r0, r0, #0x1
+ strb r0, [r1, #0xa]
+ b ._754
+._723:
+ .align 2, 0
+._722:
+ .word gUnknown_Debug_2038A20
+._720:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._725 @cond_branch
+ ldr r0, ._727 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ ldrb r0, [r1, #0xa]
+ cmp r0, #0
+ beq ._725 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1, #0xa]
+ b ._754
+._728:
+ .align 2, 0
+._727:
+ .word gUnknown_Debug_2038A20
+._725:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._729 @cond_branch
+ ldr r0, ._734 @ gUnknown_Debug_2038A20
+ ldr r2, [r0]
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0x1
+ beq ._730 @cond_branch
+ cmp r0, #0x1
+ bgt ._731 @cond_branch
+ cmp r0, #0
+ beq ._732 @cond_branch
+ b ._754
+._735:
+ .align 2, 0
+._734:
+ .word gUnknown_Debug_2038A20
+._731:
+ cmp r0, #0x2
+ beq ._736 @cond_branch
+ b ._754
+._732:
+ ldrb r3, [r2, #0xc]
+ lsl r1, r3, #0x1b
+ lsr r0, r1, #0x1b
+ cmp r0, #0x1e
+ bhi ._761 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ mov r1, #0x20
+ neg r1, r1
+ and r1, r1, r3
+ orr r1, r1, r0
+ strb r1, [r2, #0xc]
+ b ._761
+._730:
+ ldrh r3, [r2, #0xc]
+ lsl r1, r3, #0x16
+ lsr r0, r1, #0x1b
+ cmp r0, #0x1e
+ bhi ._761 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x5
+ ldr r1, ._742 @ 0xfffffc1f
+ and r1, r1, r3
+ orr r1, r1, r0
+ strh r1, [r2, #0xc]
+ b ._761
+._743:
+ .align 2, 0
+._742:
+ .word 0xfffffc1f
+._736:
+ ldrb r3, [r2, #0xd]
+ lsl r1, r3, #0x19
+ lsr r0, r1, #0x1b
+ cmp r0, #0x1e
+ bhi ._761 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x2
+ mov r1, #0x7d
+ neg r1, r1
+ and r1, r1, r3
+ orr r1, r1, r0
+ strb r1, [r2, #0xd]
+ b ._761
+._729:
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._754 @cond_branch
+ ldr r0, ._751 @ gUnknown_Debug_2038A20
+ ldr r3, [r0]
+ ldrb r0, [r3, #0xa]
+ cmp r0, #0x1
+ beq ._747 @cond_branch
+ cmp r0, #0x1
+ bgt ._748 @cond_branch
+ cmp r0, #0
+ beq ._749 @cond_branch
+ b ._754
+._752:
+ .align 2, 0
+._751:
+ .word gUnknown_Debug_2038A20
+._748:
+ cmp r0, #0x2
+ beq ._753 @cond_branch
+ b ._754
+._749:
+ ldrb r2, [r3, #0xc]
+ mov r0, #0x1f
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._761 @cond_branch
+ lsl r0, r2, #0x1b
+ lsr r0, r0, #0x1b
+ sub r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ mov r1, #0x20
+ neg r1, r1
+ and r1, r1, r2
+ orr r1, r1, r0
+ strb r1, [r3, #0xc]
+ b ._761
+._747:
+ ldrh r2, [r3, #0xc]
+ mov r0, #0xf8
+ lsl r0, r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._761 @cond_branch
+ lsl r0, r2, #0x16
+ lsr r0, r0, #0x1b
+ sub r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x5
+ ldr r1, ._759 @ 0xfffffc1f
+ and r1, r1, r2
+ orr r1, r1, r0
+ strh r1, [r3, #0xc]
+ b ._761
+._760:
+ .align 2, 0
+._759:
+ .word 0xfffffc1f
+._753:
+ ldrb r2, [r3, #0xd]
+ mov r0, #0x7c
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._761 @cond_branch
+ lsl r0, r2, #0x19
+ lsr r0, r0, #0x1b
+ sub r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x2
+ mov r1, #0x7d
+ neg r1, r1
+ and r1, r1, r2
+ orr r1, r1, r0
+ strb r1, [r3, #0xd]
+._761:
+ ldr r0, ._762 @ gTasks
+ lsl r1, r7, #0x2
+ add r1, r1, r7
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._762 + 4 @ debug_80C74E4
+ str r0, [r1]
+._754:
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._763:
+ .align 2, 0
+._762:
+ .word gTasks
+ .word debug_80C74E4+1
+
+ thumb_func_end debug_80C7294
+
+ thumb_func_start debug_80C74E4
+debug_80C74E4:
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ add r5, r0, #0
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ ldr r0, ._764 @ gUnknown_Debug_2038A20
+ ldr r3, [r0]
+ ldrb r0, [r3, #0xc]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1b
+ ldrh r2, [r3, #0xc]
+ mov r1, #0xf8
+ lsl r1, r1, #0x2
+ and r1, r1, r2
+ add r0, r0, r1
+ ldrb r1, [r3, #0xd]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1b
+ lsl r1, r1, #0xa
+ add r0, r0, r1
+ ldr r6, ._764 + 4 @ gPlttBufferUnfaded
+ ldrb r1, [r3, #0x7]
+ add r1, r1, #0x81
+ lsl r1, r1, #0x1
+ add r1, r1, r6
+ strh r0, [r1]
+ ldr r1, ._764 + 8 @ gPlttBufferFaded
+ mov r8, r1
+ ldrb r1, [r3, #0x7]
+ add r1, r1, #0x81
+ lsl r1, r1, #0x1
+ add r1, r1, r8
+ strh r0, [r1]
+ ldrb r1, [r3, #0x6]
+ lsl r1, r1, #0x4
+ ldrb r2, [r3, #0x7]
+ ldr r4, ._764 + 12 @ 0x101
+ add r2, r2, r4
+ add r1, r1, r2
+ lsl r1, r1, #0x1
+ add r1, r1, r6
+ strh r0, [r1]
+ ldrb r1, [r3, #0x6]
+ lsl r1, r1, #0x4
+ ldrb r2, [r3, #0x7]
+ add r2, r2, r4
+ add r1, r1, r2
+ lsl r1, r1, #0x1
+ add r1, r1, r8
+ strh r0, [r1]
+ mov r1, #0xe
+ mov r2, #0xa
+ mov r3, #0x4
+ bl debug_80C68CC
+ ldr r1, ._764 + 16 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._764 + 20 @ debug_80C7294
+ str r1, [r0]
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._765:
+ .align 2, 0
+._764:
+ .word gUnknown_Debug_2038A20
+ .word gPlttBufferUnfaded
+ .word gPlttBufferFaded
+ .word 0x101
+ .word gTasks
+ .word debug_80C7294+1
+
+ thumb_func_end debug_80C74E4
+
+ thumb_func_start debug_80C7584
+debug_80C7584:
+ push {r4, lr}
+ add r2, r0, #0
+ ldr r0, ._771 @ gUnknown_Debug_2038A20
+ ldr r3, [r0]
+ ldrb r1, [r3, #0x5]
+ add r4, r0, #0
+ cmp r1, #0
+ beq ._766 @cond_branch
+ mov r1, #0x2e
+ ldsh r0, [r2, r1]
+ cmp r0, #0x1
+ beq ._767 @cond_branch
+ cmp r0, #0x1
+ ble ._768 @cond_branch
+ cmp r0, #0x2
+ beq ._769 @cond_branch
+._768:
+ ldrb r0, [r3, #0xc]
+ lsl r0, r0, #0x1b
+ b ._773
+._772:
+ .align 2, 0
+._771:
+ .word gUnknown_Debug_2038A20
+._767:
+ ldrh r0, [r3, #0xc]
+ lsl r0, r0, #0x16
+ b ._773
+._769:
+ ldrb r0, [r3, #0xd]
+ lsl r0, r0, #0x19
+._773:
+ lsr r0, r0, #0x1b
+ lsl r0, r0, #0x2
+ strh r0, [r2, #0x24]
+ mov r1, #0x2e
+ ldsh r0, [r2, r1]
+ lsl r0, r0, #0x3
+ strh r0, [r2, #0x26]
+ ldrh r0, [r2, #0x30]
+ add r3, r0, #1
+ strh r3, [r2, #0x30]
+ mov r0, #0x2e
+ ldsh r1, [r2, r0]
+ ldr r0, [r4]
+ ldrb r0, [r0, #0xa]
+ cmp r1, r0
+ bne ._775 @cond_branch
+ mov r0, #0x8
+ and r3, r3, r0
+ cmp r3, #0
+ bne ._775 @cond_branch
+._766:
+ add r0, r2, #0
+ add r0, r0, #0x3e
+ ldrb r1, [r0]
+ mov r2, #0x4
+ orr r1, r1, r2
+ strb r1, [r0]
+ b ._776
+._775:
+ add r2, r2, #0x3e
+ ldrb r1, [r2]
+ mov r0, #0x5
+ neg r0, r0
+ and r0, r0, r1
+ strb r0, [r2]
+._776:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C7584
+
+ thumb_func_start InitSeeTrainers
+InitSeeTrainers:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffffc
+ bl debug_80C35DC
+ ldr r1, ._777 @ byte_83F88EC
+ ldr r2, ._777 + 4 @ 0x600e000
+ ldr r0, ._777 + 8 @ 0x40000d4
+ str r1, [r0]
+ str r2, [r0, #0x4]
+ ldr r1, ._777 + 12 @ 0x80000400
+ str r1, [r0, #0x8]
+ ldr r0, [r0, #0x8]
+ ldr r0, ._777 + 16 @ word_83F888C
+ mov r1, #0x80
+ mov r2, #0x60
+ bl LoadPalette
+ mov r0, #0x1
+ neg r0, r0
+ mov r5, #0x0
+ str r5, [sp]
+ mov r1, #0x0
+ mov r2, #0x10
+ mov r3, #0x0
+ bl BeginNormalPaletteFade
+ ldr r0, ._777 + 20 @ 0x4000040
+ mov r6, #0x0
+ strh r5, [r0]
+ add r0, r0, #0x4
+ strh r5, [r0]
+ sub r0, r0, #0x2
+ strh r5, [r0]
+ add r0, r0, #0x4
+ strh r5, [r0]
+ ldr r1, ._777 + 24 @ 0x4000048
+ mov r0, #0x3f
+ strh r0, [r1]
+ add r1, r1, #0x2
+ mov r0, #0x1f
+ strh r0, [r1]
+ add r1, r1, #0x6
+ mov r0, #0xf1
+ strh r0, [r1]
+ ldr r0, ._777 + 28 @ 0x4000052
+ strh r5, [r0]
+ add r1, r1, #0x4
+ mov r0, #0x7
+ strh r0, [r1]
+ ldr r3, ._777 + 32 @ 0x4000208
+ ldrh r2, [r3]
+ strh r5, [r3]
+ ldr r4, ._777 + 36 @ 0x4000200
+ ldrh r0, [r4]
+ mov r1, #0x1
+ orr r0, r0, r1
+ strh r0, [r4]
+ strh r2, [r3]
+ ldr r0, ._777 + 40 @ debug_80C3758
+ bl SetVBlankCallback
+ ldr r0, ._777 + 44 @ debug_80C370C
+ bl SetMainCallback2
+ ldr r1, ._777 + 48 @ 0x4000008
+ ldr r2, ._777 + 52 @ 0x1f0b
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x2
+ ldr r2, ._777 + 56 @ 0x1e0a
+ add r0, r2, #0
+ strh r0, [r1]
+ sub r1, r1, #0xa
+ mov r2, #0xcd
+ lsl r2, r2, #0x6
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, ._777 + 60 @ debug_80C777C
+ mov r1, #0x0
+ bl CreateTask
+ ldr r1, ._777 + 64 @ gUnknown_Debug_2038A20
+ ldr r0, ._777 + 68 @ 0x2018000
+ str r0, [r1]
+ strh r5, [r0]
+ strb r6, [r0, #0x2]
+ strb r6, [r0, #0x3]
+ strb r6, [r0, #0x5]
+ strb r6, [r0, #0x7]
+ strb r6, [r0, #0xa]
+ strb r6, [r0, #0x8]
+ ldr r4, ._777 + 72 @ gSpriteTemplate_83F8874
+ add r0, r4, #0
+ mov r1, #0x6c
+ mov r2, #0x74
+ mov r3, #0x0
+ bl CreateSprite
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ ldr r6, ._777 + 76 @ gSprites
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ strh r5, [r0, #0x2e]
+ mov r1, #0x0
+ bl StartSpriteAnim
+ add r0, r4, #0
+ mov r1, #0x6c
+ mov r2, #0x74
+ mov r3, #0x0
+ bl CreateSprite
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ mov r1, #0x1
+ strh r1, [r0, #0x2e]
+ bl StartSpriteAnim
+ add r0, r4, #0
+ mov r1, #0x6c
+ mov r2, #0x74
+ mov r3, #0x0
+ bl CreateSprite
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ mov r1, #0x2
+ strh r1, [r0, #0x2e]
+ bl StartSpriteAnim
+ add sp, sp, #0x4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._778:
+ .align 2, 0
+._777:
+ .word byte_83F88EC
+ .word 0x600e000
+ .word 0x40000d4
+ .word 0x80000400
+ .word word_83F888C
+ .word 0x4000040
+ .word 0x4000048
+ .word 0x4000052
+ .word 0x4000208
+ .word 0x4000200
+ .word debug_80C3758+1
+ .word debug_80C370C+1
+ .word 0x4000008
+ .word 0x1f0b
+ .word 0x1e0a
+ .word debug_80C777C+1
+ .word gUnknown_Debug_2038A20
+ .word 0x2018000
+ .word gSpriteTemplate_83F8874
+ .word gSprites
+
+ thumb_func_end InitSeeTrainers
+
+ thumb_func_start debug_80C777C
+debug_80C777C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xffffffec
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r1, ._784 @ gUnknown_Debug_083F8815
+ mov r0, sp
+ mov r2, #0x12
+ bl memcpy
+ mov r0, #0x9
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x9
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0xa
+ mov r2, #0x9
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0xe
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._784 + 4 @ gUnknown_Debug_083F87D0
+ mov r1, #0xf
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._784 + 8 @ gUnknown_Debug_083F87D8
+ mov r1, #0x19
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._784 + 12 @ gUnknown_Debug_083F87E0
+ mov r1, #0xf
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0xa
+ mov r1, #0x8
+ mov r2, #0x1d
+ mov r3, #0xc
+ bl Menu_DrawStdWindowFrame
+ mov r2, #0x0
+ ldr r4, ._784 + 16 @ 0x600fa56
+ ldr r0, ._784 + 20 @ 0xa311
+ add r3, r0, #0
+._779:
+ lsl r0, r2, #0x1
+ add r0, r0, r4
+ add r1, r2, r3
+ strh r1, [r0]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0xe
+ bls ._779 @cond_branch
+ mov r2, #0x0
+ ldr r5, ._784 + 24 @ gUnknown_Debug_083F87F4
+ lsl r6, r7, #0x2
+ mov r8, r6
+ ldr r4, ._784 + 28 @ 0x600f256
+ ldr r0, ._784 + 32 @ 0x8301
+ add r3, r0, #0
+._780:
+ lsl r0, r2, #0x1
+ add r0, r0, r4
+ add r1, r2, r3
+ strh r1, [r0]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0xe
+ bls ._780 @cond_branch
+ add r0, r5, #0
+ mov r1, #0x14
+ mov r2, #0xa
+ bl Menu_PrintText
+ mov r0, #0xa
+ mov r1, #0xd
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r1, sp
+ mov r0, #0x23
+ strb r0, [r1]
+ mov r2, #0x0
+ ldr r4, ._784 + 36 @ 0x600f396
+ mov r5, #0x93
+ lsl r5, r5, #0x8
+ add r3, r5, #0
+._781:
+ lsl r1, r2, #0x1
+ add r1, r1, r4
+ mov r6, sp
+ add r0, r6, r2
+ ldrb r0, [r0]
+ add r0, r0, r3
+ strh r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x11
+ bls ._781 @cond_branch
+ mov r1, sp
+ mov r0, #0x24
+ strb r0, [r1]
+ mov r2, #0x0
+ ldr r5, ._784 + 40 @ gUnknown_Debug_083F8801
+ ldr r4, ._784 + 44 @ 0x600f3d6
+ mov r0, #0x93
+ lsl r0, r0, #0x8
+ add r3, r0, #0
+._782:
+ lsl r1, r2, #0x1
+ add r1, r1, r4
+ mov r6, sp
+ add r0, r6, r2
+ ldrb r0, [r0]
+ add r0, r0, r3
+ strh r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x11
+ bls ._782 @cond_branch
+ mov r1, sp
+ mov r0, #0x25
+ strb r0, [r1]
+ mov r2, #0x0
+ ldr r4, ._784 + 48 @ 0x600f416
+ mov r0, #0x93
+ lsl r0, r0, #0x8
+ add r3, r0, #0
+._783:
+ lsl r1, r2, #0x1
+ add r1, r1, r4
+ mov r6, sp
+ add r0, r6, r2
+ ldrb r0, [r0]
+ add r0, r0, r3
+ strh r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x11
+ bls ._783 @cond_branch
+ add r0, r5, #0
+ mov r1, #0xf
+ mov r2, #0x11
+ bl Menu_PrintText
+ ldr r1, ._784 + 52 @ 0x4000040
+ ldr r2, ._784 + 56 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r5, ._784 + 60 @ 0x699f
+ add r0, r5, #0
+ strh r0, [r1]
+ ldr r1, ._784 + 64 @ gTasks
+ mov r6, r8
+ add r0, r6, r7
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._784 + 68 @ debug_80C7934
+ str r1, [r0]
+ add sp, sp, #0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._785:
+ .align 2, 0
+._784:
+ .word gUnknown_Debug_083F8815
+ .word gUnknown_Debug_083F87D0
+ .word gUnknown_Debug_083F87D8
+ .word gUnknown_Debug_083F87E0
+ .word 0x600fa56
+ .word 0xa311
+ .word gUnknown_Debug_083F87F4
+ .word 0x600f256
+ .word 0x8301
+ .word 0x600f396
+ .word gUnknown_Debug_083F8801
+ .word 0x600f3d6
+ .word 0x600f416
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x699f
+ .word gTasks
+ .word debug_80C7934+1
+
+ thumb_func_end debug_80C777C
+
+ thumb_func_start debug_80C7934
+debug_80C7934:
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ add sp, sp, #0xfffffff8
+ mov r8, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r8, r0
+ ldr r5, ._786 @ gUnknown_Debug_2038A20
+ ldr r6, [r5]
+ ldrh r2, [r6]
+ lsl r0, r2, #0x3
+ ldr r1, ._786 + 4 @ gTrainerFrontPicTable
+ add r0, r0, r1
+ ldr r1, ._786 + 8 @ gTrainerFrontPicCoords
+ lsl r2, r2, #0x2
+ add r2, r2, r1
+ ldrb r1, [r2]
+ ldrb r2, [r2, #0x1]
+ ldr r4, ._786 + 12 @ gUnknown_081FAF4C
+ ldr r3, [r4]
+ ldr r4, [r4, #0x4]
+ str r4, [sp]
+ ldrh r4, [r6]
+ str r4, [sp, #0x4]
+ bl DecompressPicFromTable_2
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ lsl r0, r0, #0x3
+ ldr r1, ._786 + 16 @ gTrainerFrontPicPaletteTable
+ add r0, r0, r1
+ bl LoadCompressedObjectPalette
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x1
+ bl GetMonSpriteTemplate_803C5A0
+ ldr r0, ._786 + 20 @ gUnknown_02024E8C
+ mov r1, #0x28
+ mov r2, #0x28
+ mov r3, #0x0
+ bl CreateSprite
+ ldr r1, [r5]
+ mov r6, #0x0
+ strb r0, [r1, #0x2]
+ ldr r4, ._786 + 24 @ gSprites
+ ldr r2, [r5]
+ ldrb r1, [r2, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r1, r4, #0
+ add r1, r1, #0x1c
+ add r0, r0, r1
+ ldr r1, ._786 + 28 @ debug_69
+ str r1, [r0]
+ ldrb r0, [r2, #0x2]
+ lsl r1, r0, #0x4
+ add r1, r1, r0
+ lsl r1, r1, #0x2
+ add r1, r1, r4
+ ldrb r2, [r1, #0x5]
+ mov r0, #0xd
+ neg r0, r0
+ and r0, r0, r2
+ strb r0, [r1, #0x5]
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x1a
+ mov r2, #0x5
+ bl debug_80C376C
+ ldr r2, [r5]
+ ldrb r1, [r2, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r4
+ ldrb r0, [r0, #0x5]
+ lsr r0, r0, #0x4
+ strb r0, [r2, #0x6]
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ ldr r4, ._786 + 32 @ gPlttBufferUnfaded
+ add r0, r0, r4
+ ldr r2, ._786 + 36 @ 0xffffff00
+ add r1, r4, r2
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ add r0, r0, r4
+ ldr r1, ._786 + 40 @ gPlttBufferFaded
+ mov r2, #0x10
+ bl CpuSet
+ ldr r1, ._786 + 44 @ gTasks
+ mov r2, r8
+ lsl r0, r2, #0x2
+ add r0, r0, r8
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._786 + 48 @ debug_80C7A54
+ str r1, [r0]
+ ldr r0, [r5]
+ strb r6, [r0, #0x9]
+ add sp, sp, #0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._787:
+ .align 2, 0
+._786:
+ .word gUnknown_Debug_2038A20
+ .word gTrainerFrontPicTable
+ .word gTrainerFrontPicCoords
+ .word gUnknown_081FAF4C
+ .word gTrainerFrontPicPaletteTable
+ .word gUnknown_02024E8C
+ .word gSprites
+ .word debug_69+1
+ .word gPlttBufferUnfaded+0x200
+ .word 0xffffff00
+ .word gPlttBufferFaded+0x100
+ .word gTasks
+ .word debug_80C7A54+1
+
+ thumb_func_end debug_80C7934
+
+ thumb_func_start debug_80C7A54
+debug_80C7A54:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ lsl r6, r6, #0x18
+ lsr r6, r6, #0x18
+ ldr r4, ._788 @ gPlttBufferUnfaded
+ ldr r5, ._788 + 4 @ gUnknown_Debug_2038A20
+ ldr r1, [r5]
+ add r1, r1, #0x10
+ add r0, r4, #0
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, ._788 + 8 @ 0xffffff00
+ add r4, r4, r0
+ ldr r3, [r5]
+ ldrb r0, [r3, #0x7]
+ add r0, r0, #0x81
+ lsl r0, r0, #0x1
+ add r0, r0, r4
+ ldrh r4, [r0]
+ mov r1, #0x1f
+ and r1, r1, r4
+ ldrb r2, [r3, #0xc]
+ mov r0, #0x20
+ neg r0, r0
+ and r0, r0, r2
+ orr r0, r0, r1
+ strb r0, [r3, #0xc]
+ ldr r3, [r5]
+ mov r1, #0xf8
+ lsl r1, r1, #0x2
+ and r1, r1, r4
+ ldrh r2, [r3, #0xc]
+ ldr r0, ._788 + 12 @ 0xfffffc1f
+ and r0, r0, r2
+ orr r0, r0, r1
+ strh r0, [r3, #0xc]
+ mov r1, #0xf8
+ lsl r1, r1, #0x7
+ and r1, r1, r4
+ lsr r1, r1, #0x8
+ ldrb r2, [r3, #0xd]
+ mov r0, #0x7d
+ neg r0, r0
+ and r0, r0, r2
+ orr r0, r0, r1
+ strb r0, [r3, #0xd]
+ ldr r2, [r5]
+ ldrb r1, [r2, #0xd]
+ mov r0, #0x7f
+ and r0, r0, r1
+ strb r0, [r2, #0xd]
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x7]
+ add r0, r0, #0x1
+ mov r1, #0xb
+ mov r2, #0xa
+ mov r3, #0x2
+ bl debug_80C68CC
+ ldr r0, ._788 + 16 @ gUnknown_Debug_083F8813
+ mov r1, #0xd
+ mov r2, #0xa
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #0xa
+ mov r3, #0x4
+ bl debug_80C68CC
+ ldr r1, ._788 + 20 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._788 + 24 @ debug_80C7B14
+ str r1, [r0]
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._789:
+ .align 2, 0
+._788:
+ .word gPlttBufferUnfaded+0x100
+ .word gUnknown_Debug_2038A20
+ .word 0xffffff00
+ .word 0xfffffc1f
+ .word gUnknown_Debug_083F8813
+ .word gTasks
+ .word debug_80C7B14+1
+
+ thumb_func_end debug_80C7A54
+
+ thumb_func_start debug_80C7B14
+debug_80C7B14:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r1, ._792 @ gMain
+ ldrh r3, [r1, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r3
+ add r4, r1, #0
+ cmp r0, #0
+ beq ._790 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r0, ._792 + 4 @ debug_80C370C
+ bl SetMainCallback2
+ ldr r1, ._792 + 8 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._792 + 12 @ debug_80C373C
+ str r1, [r0]
+ b ._821
+._793:
+ .align 2, 0
+._792:
+ .word gMain
+ .word debug_80C370C+1
+ .word gTasks
+ .word debug_80C373C+1
+._790:
+ ldrh r1, [r4, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._794 @cond_branch
+ ldr r4, ._796 @ gUnknown_Debug_2038A20
+ ldr r0, [r4]
+ ldrh r1, [r0]
+ mov r0, #0x0
+ b ._795
+._797:
+ .align 2, 0
+._796:
+ .word gUnknown_Debug_2038A20
+._794:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._798 @cond_branch
+ ldr r4, ._800 @ gUnknown_Debug_2038A20
+ ldr r0, [r4]
+ ldrh r1, [r0]
+ mov r0, #0x1
+._795:
+ bl debug_80C38B4
+ ldr r1, [r4]
+ strh r0, [r1]
+ ldr r1, ._800 + 4 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._800 + 8 @ debug_80C7D44
+ str r1, [r0]
+ b ._821
+._801:
+ .align 2, 0
+._800:
+ .word gUnknown_Debug_2038A20
+ .word gTasks
+ .word debug_80C7D44+1
+._798:
+ mov r2, #0x1
+ and r2, r2, r3
+ cmp r2, #0
+ beq ._802 @cond_branch
+ ldr r0, ._804 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ mov r0, #0x1
+ strb r0, [r1, #0x5]
+ ldr r1, ._804 + 4 @ 0x4000040
+ ldr r2, ._804 + 8 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._804 + 12 @ 0x4167
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._804 + 16 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._804 + 20 @ debug_80C7DDC
+ str r1, [r0]
+ b ._821
+._805:
+ .align 2, 0
+._804:
+ .word gUnknown_Debug_2038A20
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x4167
+ .word gTasks
+ .word debug_80C7DDC+1
+._802:
+ mov r0, #0x10
+ and r0, r0, r1
+ ldr r3, ._809 @ gUnknown_Debug_2038A20
+ cmp r0, #0
+ beq ._807 @cond_branch
+ ldr r1, [r3]
+ ldrb r0, [r1, #0x7]
+ cmp r0, #0xd
+ bhi ._807 @cond_branch
+ lsl r0, r0, #0x1
+ ldr r1, ._809 + 4 @ 0x5000102
+ add r0, r0, r1
+ strh r2, [r0]
+ ldr r1, [r3]
+ ldrb r0, [r1, #0x7]
+ add r0, r0, #0x1
+ strb r0, [r1, #0x7]
+ b ._813
+._810:
+ .align 2, 0
+._809:
+ .word gUnknown_Debug_2038A20
+ .word 0x5000102
+._807:
+ ldrh r1, [r4, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._812 @cond_branch
+ ldr r1, [r3]
+ ldrb r0, [r1, #0x7]
+ cmp r0, #0
+ beq ._812 @cond_branch
+ lsl r0, r0, #0x1
+ ldr r2, ._814 @ 0x5000102
+ add r0, r0, r2
+ mov r1, #0x0
+ strh r1, [r0]
+ ldr r1, [r3]
+ ldrb r0, [r1, #0x7]
+ sub r0, r0, #0x1
+ strb r0, [r1, #0x7]
+ b ._813
+._815:
+ .align 2, 0
+._814:
+ .word 0x5000102
+._812:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x8
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._816 @cond_branch
+ ldr r4, ._819 @ gUnknown_Debug_2038A20
+ ldr r2, [r4]
+ ldrb r0, [r2, #0x9]
+ mov r1, #0x1
+ eor r0, r0, r1
+ strb r0, [r2, #0x9]
+ ldr r1, [r4]
+ ldrb r0, [r1, #0x9]
+ cmp r0, #0
+ beq ._817 @cond_branch
+ ldrh r0, [r1]
+ mov r1, #0x0
+ mov r2, #0x0
+ bl GetMonSpritePalFromOtIdPersonality
+ ldr r1, [r4]
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x14
+ mov r2, #0x80
+ lsl r2, r2, #0x11
+ add r1, r1, r2
+ lsr r1, r1, #0x10
+ mov r2, #0x20
+ bl LoadCompressedPalette
+ b ._818
+._820:
+ .align 2, 0
+._819:
+ .word gUnknown_Debug_2038A20
+._817:
+ ldrh r0, [r1]
+ mov r1, #0x0
+ mov r2, #0x9
+ bl GetMonSpritePalFromOtIdPersonality
+ ldr r1, [r4]
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x14
+ mov r2, #0x80
+ lsl r2, r2, #0x11
+ add r1, r1, r2
+ lsr r1, r1, #0x10
+ mov r2, #0x20
+ bl LoadCompressedPalette
+._818:
+ ldr r5, ._822 @ gUnknown_Debug_2038A20
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ ldr r4, ._822 + 4 @ gPlttBufferUnfaded
+ add r0, r0, r4
+ ldr r2, ._822 + 8 @ 0xffffff00
+ add r1, r4, r2
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ add r0, r0, r4
+ ldr r1, ._822 + 12 @ gPlttBufferFaded
+ mov r2, #0x10
+ bl CpuSet
+._813:
+ ldr r1, ._822 + 16 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._822 + 20 @ debug_80C7A54
+ str r1, [r0]
+ b ._821
+._823:
+ .align 2, 0
+._822:
+ .word gUnknown_Debug_2038A20
+ .word gPlttBufferUnfaded+0x200
+ .word 0xffffff00
+ .word gPlttBufferFaded+0x100
+ .word gTasks
+ .word debug_80C7A54+1
+._816:
+ ldr r1, [r3]
+ ldrb r0, [r1, #0x8]
+ add r0, r0, #0x4
+ strb r0, [r1, #0x8]
+ ldr r2, [r3]
+ ldrb r1, [r2, #0x8]
+ mov r0, #0x1f
+ and r0, r0, r1
+ strb r0, [r2, #0x8]
+ ldr r0, [r3]
+ ldrb r1, [r0, #0x7]
+ lsl r1, r1, #0x1
+ ldr r2, ._824 @ 0x5000142
+ add r1, r1, r2
+ ldr r2, ._824 + 4 @ gUnknown_Debug_083F8790
+ ldrb r0, [r0, #0x8]
+ lsl r0, r0, #0x1
+ add r0, r0, r2
+ ldrh r0, [r0]
+ strh r0, [r1]
+._821:
+ add sp, sp, #0x4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._825:
+ .align 2, 0
+._824:
+ .word 0x5000142
+ .word gUnknown_Debug_083F8790
+
+ thumb_func_end debug_80C7B14
+
+ thumb_func_start debug_80C7D44
+debug_80C7D44:
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ ldr r6, ._826 @ gSprites
+ ldr r4, ._826 + 4 @ gUnknown_Debug_2038A20
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldrb r0, [r0, #0x5]
+ lsr r0, r0, #0x4
+ bl GetSpritePaletteTagByPaletteNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FreeSpritePaletteByTag
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ bl DestroySprite
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x3]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldrb r0, [r0, #0x5]
+ lsr r0, r0, #0x4
+ bl GetSpritePaletteTagByPaletteNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FreeSpritePaletteByTag
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x3]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ bl DestroySprite
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x4]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ bl sub_809D510
+ ldr r1, ._826 + 8 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._826 + 12 @ debug_80C7934
+ str r1, [r0]
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._827:
+ .align 2, 0
+._826:
+ .word gSprites
+ .word gUnknown_Debug_2038A20
+ .word gTasks
+ .word debug_80C7934+1
+
+ thumb_func_end debug_80C7D44
+
+ thumb_func_start debug_80C7DDC
+debug_80C7DDC:
+ push {r4, r5, r6, r7, lr}
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, ._830 @ gMain
+ ldrh r2, [r0, #0x2e]
+ mov r1, #0x1
+ and r1, r1, r2
+ add r3, r0, #0
+ cmp r1, #0
+ beq ._828 @cond_branch
+ ldr r0, ._830 + 4 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ mov r0, #0x0
+ strb r0, [r1, #0x5]
+ ldr r1, ._830 + 8 @ 0x4000040
+ ldr r2, ._830 + 12 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._830 + 16 @ 0x699f
+ add r0, r2, #0
+ strh r0, [r1]
+ b ._829
+._831:
+ .align 2, 0
+._830:
+ .word gMain
+ .word gUnknown_Debug_2038A20
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x699f
+._828:
+ mov r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._832 @cond_branch
+ ldr r6, ._834 @ gUnknown_Debug_2038A20
+ ldr r0, [r6]
+ strb r1, [r0, #0x5]
+ ldr r1, ._834 + 4 @ 0x4000040
+ ldr r2, ._834 + 8 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._834 + 12 @ 0x699f
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, [r6]
+ add r0, r0, #0x10
+ ldr r4, ._834 + 16 @ gPlttBufferUnfaded
+ add r1, r4, #0
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, [r6]
+ add r0, r0, #0x10
+ ldr r5, ._834 + 20 @ gPlttBufferFaded
+ add r1, r5, #0
+ mov r2, #0x10
+ bl CpuSet
+ ldr r1, [r6]
+ add r0, r1, #0
+ add r0, r0, #0x10
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x5
+ mov r2, #0x80
+ lsl r2, r2, #0x1
+ add r4, r4, r2
+ add r1, r1, r4
+ mov r2, #0x10
+ bl CpuSet
+ ldr r1, [r6]
+ add r0, r1, #0
+ add r0, r0, #0x10
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x5
+ mov r2, #0x80
+ lsl r2, r2, #0x1
+ add r5, r5, r2
+ add r1, r1, r5
+ mov r2, #0x10
+ bl CpuSet
+._829:
+ ldr r1, ._834 + 24 @ gTasks
+ lsl r0, r7, #0x2
+ add r0, r0, r7
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._834 + 28 @ debug_80C7A54
+ str r1, [r0]
+ b ._871
+._835:
+ .align 2, 0
+._834:
+ .word gUnknown_Debug_2038A20
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x699f
+ .word gPlttBufferUnfaded+0x100
+ .word gPlttBufferFaded+0x100
+ .word gTasks
+ .word debug_80C7A54+1
+._832:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._837 @cond_branch
+ ldr r0, ._839 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ ldrb r0, [r1, #0xa]
+ cmp r0, #0x1
+ bhi ._837 @cond_branch
+ add r0, r0, #0x1
+ strb r0, [r1, #0xa]
+ b ._871
+._840:
+ .align 2, 0
+._839:
+ .word gUnknown_Debug_2038A20
+._837:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._842 @cond_branch
+ ldr r0, ._844 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ ldrb r0, [r1, #0xa]
+ cmp r0, #0
+ beq ._842 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1, #0xa]
+ b ._871
+._845:
+ .align 2, 0
+._844:
+ .word gUnknown_Debug_2038A20
+._842:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._846 @cond_branch
+ ldr r0, ._851 @ gUnknown_Debug_2038A20
+ ldr r2, [r0]
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0x1
+ beq ._847 @cond_branch
+ cmp r0, #0x1
+ bgt ._848 @cond_branch
+ cmp r0, #0
+ beq ._849 @cond_branch
+ b ._871
+._852:
+ .align 2, 0
+._851:
+ .word gUnknown_Debug_2038A20
+._848:
+ cmp r0, #0x2
+ beq ._853 @cond_branch
+ b ._871
+._849:
+ ldrb r3, [r2, #0xc]
+ lsl r1, r3, #0x1b
+ lsr r0, r1, #0x1b
+ cmp r0, #0x1e
+ bhi ._878 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ mov r1, #0x20
+ neg r1, r1
+ and r1, r1, r3
+ orr r1, r1, r0
+ strb r1, [r2, #0xc]
+ b ._878
+._847:
+ ldrh r3, [r2, #0xc]
+ lsl r1, r3, #0x16
+ lsr r0, r1, #0x1b
+ cmp r0, #0x1e
+ bhi ._878 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x5
+ ldr r1, ._859 @ 0xfffffc1f
+ and r1, r1, r3
+ orr r1, r1, r0
+ strh r1, [r2, #0xc]
+ b ._878
+._860:
+ .align 2, 0
+._859:
+ .word 0xfffffc1f
+._853:
+ ldrb r3, [r2, #0xd]
+ lsl r1, r3, #0x19
+ lsr r0, r1, #0x1b
+ cmp r0, #0x1e
+ bhi ._878 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x2
+ mov r1, #0x7d
+ neg r1, r1
+ and r1, r1, r3
+ orr r1, r1, r0
+ strb r1, [r2, #0xd]
+ b ._878
+._846:
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._871 @cond_branch
+ ldr r0, ._868 @ gUnknown_Debug_2038A20
+ ldr r3, [r0]
+ ldrb r0, [r3, #0xa]
+ cmp r0, #0x1
+ beq ._864 @cond_branch
+ cmp r0, #0x1
+ bgt ._865 @cond_branch
+ cmp r0, #0
+ beq ._866 @cond_branch
+ b ._871
+._869:
+ .align 2, 0
+._868:
+ .word gUnknown_Debug_2038A20
+._865:
+ cmp r0, #0x2
+ beq ._870 @cond_branch
+ b ._871
+._866:
+ ldrb r2, [r3, #0xc]
+ mov r0, #0x1f
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._878 @cond_branch
+ lsl r0, r2, #0x1b
+ lsr r0, r0, #0x1b
+ sub r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ mov r1, #0x20
+ neg r1, r1
+ and r1, r1, r2
+ orr r1, r1, r0
+ strb r1, [r3, #0xc]
+ b ._878
+._864:
+ ldrh r2, [r3, #0xc]
+ mov r0, #0xf8
+ lsl r0, r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._878 @cond_branch
+ lsl r0, r2, #0x16
+ lsr r0, r0, #0x1b
+ sub r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x5
+ ldr r1, ._876 @ 0xfffffc1f
+ and r1, r1, r2
+ orr r1, r1, r0
+ strh r1, [r3, #0xc]
+ b ._878
+._877:
+ .align 2, 0
+._876:
+ .word 0xfffffc1f
+._870:
+ ldrb r2, [r3, #0xd]
+ mov r0, #0x7c
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._878 @cond_branch
+ lsl r0, r2, #0x19
+ lsr r0, r0, #0x1b
+ sub r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x2
+ mov r1, #0x7d
+ neg r1, r1
+ and r1, r1, r2
+ orr r1, r1, r0
+ strb r1, [r3, #0xd]
+._878:
+ ldr r0, ._879 @ gTasks
+ lsl r1, r7, #0x2
+ add r1, r1, r7
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._879 + 4 @ debug_80C802C
+ str r0, [r1]
+._871:
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._880:
+ .align 2, 0
+._879:
+ .word gTasks
+ .word debug_80C802C+1
+
+ thumb_func_end debug_80C7DDC
+
+ thumb_func_start debug_80C802C
+debug_80C802C:
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ add r5, r0, #0
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ ldr r0, ._881 @ gUnknown_Debug_2038A20
+ ldr r3, [r0]
+ ldrb r0, [r3, #0xc]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1b
+ ldrh r2, [r3, #0xc]
+ mov r1, #0xf8
+ lsl r1, r1, #0x2
+ and r1, r1, r2
+ add r0, r0, r1
+ ldrb r1, [r3, #0xd]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1b
+ lsl r1, r1, #0xa
+ add r0, r0, r1
+ ldr r6, ._881 + 4 @ gPlttBufferUnfaded
+ ldrb r1, [r3, #0x7]
+ add r1, r1, #0x81
+ lsl r1, r1, #0x1
+ add r1, r1, r6
+ strh r0, [r1]
+ ldr r1, ._881 + 8 @ gPlttBufferFaded
+ mov r8, r1
+ ldrb r1, [r3, #0x7]
+ add r1, r1, #0x81
+ lsl r1, r1, #0x1
+ add r1, r1, r8
+ strh r0, [r1]
+ ldrb r1, [r3, #0x6]
+ lsl r1, r1, #0x4
+ ldrb r2, [r3, #0x7]
+ ldr r4, ._881 + 12 @ 0x101
+ add r2, r2, r4
+ add r1, r1, r2
+ lsl r1, r1, #0x1
+ add r1, r1, r6
+ strh r0, [r1]
+ ldrb r1, [r3, #0x6]
+ lsl r1, r1, #0x4
+ ldrb r2, [r3, #0x7]
+ add r2, r2, r4
+ add r1, r1, r2
+ lsl r1, r1, #0x1
+ add r1, r1, r8
+ strh r0, [r1]
+ mov r1, #0xe
+ mov r2, #0xa
+ mov r3, #0x4
+ bl debug_80C68CC
+ ldr r1, ._881 + 16 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._881 + 20 @ debug_80C7DDC
+ str r1, [r0]
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._882:
+ .align 2, 0
+._881:
+ .word gUnknown_Debug_2038A20
+ .word gPlttBufferUnfaded
+ .word gPlttBufferFaded
+ .word 0x101
+ .word gTasks
+ .word debug_80C7DDC+1
+
+ thumb_func_end debug_80C802C
+
+ .align 2, 0
+
+.endif
diff --git a/asmdiff_de_debug.sh b/asmdiff_de_debug.sh
new file mode 100755
index 000000000..837b88cd2
--- /dev/null
+++ b/asmdiff_de_debug.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb"
+OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))"
+$OBJDUMP $OPTIONS baserom_de_debug.gba > baserom_de_debug.dump
+$OBJDUMP $OPTIONS pokeruby_de_debug.gba > pokeruby_de_debug.dump
+diff baserom_de_debug.dump pokeruby_de_debug.dump
diff --git a/charmap.txt b/charmap.txt
index 1c68994df..e6ad2c05b 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -44,6 +44,7 @@ SUPER_ER = 2C
'+' = 2E
LV = 34
'=' = 35
+';' = 36
'¿' = 51
'¡' = 52
PK = 53
@@ -59,6 +60,10 @@ UP_ARROW = 79
DOWN_ARROW = 7A
LEFT_ARROW = 7B
RIGHT_ARROW = 7C
+SUPER_E = 84
+'<' = 85
+'>' = 86
+SUPER_RE = A0
'0' = A1
'1' = A2
'2' = A3
diff --git a/config.mk b/config.mk
index 9f901658e..bdcf5aa7e 100644
--- a/config.mk
+++ b/config.mk
@@ -4,6 +4,7 @@
GAME_VERSION ?= RUBY
GAME_REVISION ?= 0
GAME_LANGUAGE ?= ENGLISH
+DEBUG ?= 0
COMPARE ?= 1
# Version
@@ -42,3 +43,9 @@ else
$(error unknown language $(GAME_LANGUAGE))
endif
endif
+
+# Debug
+ifeq ($(DEBUG), 1)
+ BUILD_NAME := $(BUILD_NAME)_debug
+endif
+
diff --git a/data-de/event_scripts.s b/data-de/event_scripts.s
index 1569e87c6..7e43905bf 100644
--- a/data-de/event_scripts.s
+++ b/data-de/event_scripts.s
@@ -3279,6 +3279,7 @@ PacifidlogTown_House2_EventScript_1A14DC:: @ 81A14DC
Route101_EventScript_1A14DC:: @ 81A14DC
return
+ .include "data/scripts/debug.inc"
.include "data/scripts/berry_tree.inc"
.include "data/text/berry_tree.inc"
diff --git a/data/btl_attrs.s b/data/btl_attrs.s
index 1bd5ed6e5..5955c487d 100644
--- a/data/btl_attrs.s
+++ b/data/btl_attrs.s
@@ -203,6 +203,121 @@ gUnknown_081F96C8:: @ 81F96C8
gSpriteTemplate_81F96D0:: @ 81F96D0
spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_800F828
+.if DEBUG
+
+UnkDebug0:: @ 0x821F3B8
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+gUnknown_Debug_821F424::
+ .byte 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x9b, 0x01, 0x01, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x64, 0x00, 0x01, 0x00, 0x18, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x2e, 0x00
+ .byte 0x1a, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x30, 0x00, 0x1c, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x34, 0x00, 0x01, 0x00, 0x04, 0x00, 0x9b, 0x01, 0x00, 0x00, 0x44, 0x00, 0x0a, 0x00
+ .byte 0x04, 0x00, 0x64, 0x00, 0x01, 0x00, 0x4a, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x60, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x62, 0x00, 0x1c, 0x00, 0x04, 0x00
+ .byte 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x01, 0x00, 0x06, 0x00, 0x9b, 0x01, 0x00, 0x00, 0x76, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x64, 0x00, 0x01, 0x00, 0x7c, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x5c, 0x01
+ .byte 0x00, 0x00, 0x92, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x94, 0x00, 0x1c, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, 0x01, 0x00, 0x08, 0x00, 0x9b, 0x01, 0x00, 0x00
+ .byte 0xa8, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x64, 0x00, 0x01, 0x00, 0xae, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x5c, 0x01, 0x00, 0x00, 0xc4, 0x00, 0x1a, 0x00, 0x08, 0x00, 0x05, 0x00, 0x00, 0x00, 0xc6, 0x00
+ .byte 0x1c, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0xca, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x9b, 0x01, 0x00, 0x00, 0xda, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x64, 0x00, 0x01, 0x00, 0xe0, 0x00, 0x0e, 0x00
+ .byte 0x0a, 0x00, 0x5c, 0x01, 0x00, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x1c, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x01, 0x00, 0x0c, 0x00
+ .byte 0x9b, 0x01, 0x00, 0x00, 0x0c, 0x01, 0x0a, 0x00, 0x0c, 0x00, 0x64, 0x00, 0x01, 0x00, 0x12, 0x01, 0x0e, 0x00, 0x0c, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x28, 0x01, 0x1a, 0x00, 0x0c, 0x00, 0x05, 0x00
+ .byte 0x00, 0x00, 0x2a, 0x01, 0x1c, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x06, 0x00, 0x12, 0x00, 0x09, 0x00, 0x01, 0x00, 0x34, 0x01, 0x1a, 0x00, 0x12, 0x00, 0x09, 0x00, 0x01, 0x00
+
+gUnknown_Debug_821F564::
+ .byte 0x36, 0x01
+
+gUnknown_Debug_821F566::
+ .byte 0x01, 0x00
+
+gUnknown_Debug_821F568::
+ .byte 0x0e, 0x00, 0x62, 0x01
+
+gUnknown_Debug_821F56C::
+ .byte 0x01, 0x00, 0x4a, 0x01, 0x0c, 0x00, 0x0e, 0x00, 0x62, 0x01, 0x00, 0x00, 0x5e, 0x01, 0x01, 0x00, 0x10, 0x00, 0x62, 0x01, 0x00, 0x00, 0x72, 0x01, 0x0c, 0x00, 0x10, 0x00, 0x62, 0x01, 0x00, 0x00
+
+gUnknown_Debug_821F58C::
+ .byte 0x86, 0x01, 0x17, 0x00, 0x0e, 0x00, 0x94, 0x01, 0x17, 0x00, 0x10, 0x00
+
+gUnknown_Debug_821F598::
+ .byte 0x00, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x4b, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00
+
+gUnknown_Debug_821F5AC::
+ .byte 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x03, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00
+ .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x00, 0x06, 0x14, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x07, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x14, 0x00, 0x14, 0x14, 0x00
+ .byte 0x09, 0x14, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x00, 0x14, 0x14, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00
+ .byte 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x0e, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+Str_821F624:: @ 0x821F624
+ .string "ーーーーーーーーーーーー$"
+
+str_821F631:: @ 0x821F631
+ .string "ジュンイチ$"
+ .string "ダイゴロウ$"
+ .string "バレンシア$"
+ .string "ハルコマチ$"
+
+Str_821F649:: @ 0x821F649
+ .string "てつじ$"
+
+debug_unk_0b::
+@ 0x821F64D
+ .string "  オン$"
+
+@ 0x821F652
+ .string "オフ$"
+
+@ 0x821F655
+ .string "モノラル$"
+
+@ 0x821F65A
+ .string "ステレオ$"
+
+@ 0x821F65F
+ .string "テストです$"
+
+@ 0x821F665
+ .string "うけとったって$"
+
+@ 0x821F66D
+ .string "せつぞくエラー$"
+
+@ 0x821f675
+ .byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
+
+gUnknown_Debug_821F680::
+ .byte 0xc0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00
+ .byte 0x72, 0x01, 0x00, 0x00, 0x76, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0xf2, 0x01, 0x00, 0x00, 0xf6, 0x01, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00
+ .byte 0x52, 0x02, 0x00, 0x00, 0x5a, 0x02, 0x00, 0x00, 0x72, 0x02, 0x00, 0x00, 0x76, 0x02, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x00, 0xd2, 0x02, 0x00, 0x00, 0xda, 0x02, 0x00, 0x00, 0xf2, 0x02, 0x00, 0x00
+ .byte 0xf6, 0x02, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x5a, 0x03, 0x00, 0x00, 0x72, 0x03, 0x00, 0x00, 0x76, 0x03, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0xd4, 0x04, 0x00, 0x00
+ .byte 0xde, 0x04, 0x00, 0x00, 0xe8, 0x04, 0x00, 0x00, 0xf2, 0x04, 0x00, 0x00, 0xc0, 0x08, 0x00, 0x00, 0xd2, 0x08, 0x00, 0x00, 0xda, 0x08, 0x00, 0x00, 0xf2, 0x08, 0x00, 0x00, 0xf6, 0x08, 0x00, 0x00
+ .byte 0x40, 0x09, 0x00, 0x00, 0x52, 0x09, 0x00, 0x00, 0x5a, 0x09, 0x00, 0x00, 0x72, 0x09, 0x00, 0x00, 0x76, 0x09, 0x00, 0x00, 0xc0, 0x09, 0x00, 0x00, 0xd2, 0x09, 0x00, 0x00, 0xda, 0x09, 0x00, 0x00
+ .byte 0xf2, 0x09, 0x00, 0x00, 0xf6, 0x09, 0x00, 0x00, 0x40, 0x0a, 0x00, 0x00, 0x52, 0x0a, 0x00, 0x00, 0x5a, 0x0a, 0x00, 0x00, 0x72, 0x0a, 0x00, 0x00, 0x76, 0x0a, 0x00, 0x00, 0xc0, 0x0a, 0x00, 0x00
+ .byte 0xd2, 0x0a, 0x00, 0x00, 0xda, 0x0a, 0x00, 0x00, 0xf2, 0x0a, 0x00, 0x00, 0xf6, 0x0a, 0x00, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x52, 0x0b, 0x00, 0x00, 0x5a, 0x0b, 0x00, 0x00, 0x72, 0x0b, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0xd4, 0x0c, 0x00, 0x00, 0xde, 0x0c, 0x00, 0x00, 0xe8, 0x0c, 0x00, 0x00, 0xf2, 0x0c, 0x00, 0x00
+
+gUnknown_Debug_821F798::
+ .byte 0xc0, 0x03, 0x00, 0x00, 0xd6, 0x03, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x56, 0x04, 0x00, 0x00, 0xc0, 0x0b, 0x00, 0x00, 0xd6, 0x0b, 0x00, 0x00, 0x40, 0x0c, 0x00, 0x00, 0x56, 0x0c, 0x00, 0x00
+
+Str_821F7B8:: @ 0x821F7B8
+ .string "たかさ $"
+
+Str_821F7BD:: @ 0x821F7BD
+ .string "{PALETTE 1}{COLOR_HIGHLIGHT_SHADOW BLUE YELLOW MAGENTA}たかさ   ひこう\n"
+ .string "ポケモン  ファイル$"
+
+Str_821F7DA:: @ 0x821F7DA
+ .string "{PALETTE 1}{COLOR_HIGHLIGHT_SHADOW BLUE YELLOW MAGENTA}ロード\n"
+ .string "セーブ$"
+
+Str_821F7EA:: @ 0x821F7EA
+ .string "ロードしますか?$"
+
+@ 0x821F7F3
+gUnknown_Debug_821F7F3::
+ .string "セーブしますか?$"
+
+.endif
+
.align 2
gOamData_81F96E8:: @ 81F96E8
.2byte 0x0100
diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s
new file mode 100644
index 000000000..ed4bb599b
--- /dev/null
+++ b/data/debug_menu_3.s
@@ -0,0 +1,106 @@
+.if DEBUG
+
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+gUnknown_Debug_845DAE1::
+ .byte 0x01, 0xe1, 0xda, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0x45, 0x08, 0xb2, 0xdd, 0x45, 0x08, 0x06, 0x08
+ .byte 0x01, 0x01, 0x56, 0xdb, 0x45, 0x08, 0x0d, 0xdd, 0x45, 0x08, 0x0b, 0x01, 0x05, 0x13, 0x01, 0x05, 0x0d, 0xdd, 0x45, 0x08, 0x02, 0xc6, 0xd5, 0xe9, 0xda, 0x00, 0xe9, 0xe2, 0xd8, 0x00, 0xd6, 0xd9
+ .byte 0xe7, 0xe9, 0xd7, 0xdc, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe2, 0x00, 0xd0, 0xd5, 0xe8, 0xd9, 0xe6, 0x00, 0xdd, 0xe2, 0x00, 0xd8, 0xd9, 0xe6, 0xfe, 0xbb, 0xcc, 0xbf, 0xc8, 0xbb, 0x00
+ .byte 0xea, 0xe3, 0xe2, 0x00, 0xbc, 0xc6, 0xf3, 0xce, 0xbf, 0xc8, 0xbc, 0xcf, 0xcc, 0xc1, 0x00, 0xbd, 0xc3, 0xce, 0xd3, 0xad, 0xff, 0xb8, 0x56, 0xdb, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21
+ .byte 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xb4, 0xdb, 0x45, 0x08, 0x4a, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xb4, 0xdb, 0x45, 0x08, 0x2b, 0xce, 0x00, 0xbb, 0x01, 0xb4
+ .byte 0xdb, 0x45, 0x08, 0x6a, 0x5a, 0xbd, 0xbe, 0xdb, 0x45, 0x08, 0x66, 0x6d, 0x46, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0xb5, 0xdb, 0x45, 0x08, 0x1a, 0x00, 0x80, 0x13
+ .byte 0x01, 0x1a, 0x01, 0x80, 0x01, 0x00, 0x09, 0x00, 0x29, 0x53, 0x08, 0xbd, 0x00, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x0d, 0xbd, 0x94, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x02, 0xd0, 0xbb, 0xce
+ .byte 0xbf, 0xcc, 0xf0, 0x00, 0xfd, 0x01, 0xab, 0x00, 0xcd, 0xd7, 0xdc, 0xf5, 0xe2, 0xb8, 0x00, 0xd8, 0xdd, 0xd7, 0xdc, 0x00, 0xee, 0xe9, 0x00, 0xe7, 0xd9, 0xdc, 0xd9, 0xe2, 0xab, 0xfe, 0xc2, 0xdd
+ .byte 0xd9, 0xe6, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xd9, 0xdd, 0xe2, 0x00, 0xbc, 0xe6, 0xdd, 0xd9, 0xda, 0x00, 0xda, 0xf6, 0xe6, 0x00, 0xd8, 0xdd, 0xd7, 0xdc, 0xb8, 0x00, 0xfd, 0x01, 0xad, 0xff, 0xd0
+ .byte 0xbb, 0xce, 0xbf, 0xcc, 0xf0, 0x00, 0xc3, 0xd7, 0xdc, 0x00, 0xd6, 0xdd, 0xe2, 0x00, 0xe1, 0xdd, 0xe6, 0x00, 0xe2, 0xdd, 0xd7, 0xdc, 0xe8, 0x00, 0xe7, 0xdd, 0xd7, 0xdc, 0xd9, 0xe6, 0xb8, 0x00
+ .byte 0xd9, 0xe7, 0xfe, 0xdf, 0xf5, 0xe2, 0xe2, 0xe8, 0xd9, 0x00, 0xd9, 0xdd, 0xe2, 0x00, 0xce, 0xc3, 0xbd, 0xc5, 0xbf, 0xce, 0x00, 0xda, 0xf6, 0xe6, 0x00, 0xd9, 0xdd, 0xe2, 0xd9, 0x00, 0xc0, 0xf4
+ .byte 0xdc, 0xe6, 0xd9, 0x00, 0xe7, 0xd9, 0xdd, 0xe2, 0xad, 0xfb, 0xbe, 0xe9, 0x00, 0xe7, 0xe3, 0xe0, 0xe0, 0xe8, 0xd9, 0xe7, 0xe8, 0x00, 0xe2, 0xd5, 0xd7, 0xdc, 0x00, 0xcd, 0xbf, 0xbf, 0xc1, 0xcc
+ .byte 0xbb, 0xcd, 0xcf, 0xc6, 0xbc, 0x00, 0xbd, 0xc3, 0xce, 0xd3, 0x00, 0xdb, 0xd9, 0xdc, 0xd9, 0xe2, 0xfe, 0xe9, 0xe2, 0xd8, 0x00, 0xd8, 0xdd, 0xd7, 0xdc, 0x00, 0xd8, 0xe3, 0xe6, 0xe8, 0x00, 0xdb
+ .byte 0xd9, 0xe2, 0xd5, 0xe9, 0xd9, 0xe6, 0x00, 0xd9, 0xe6, 0xdf, 0xe9, 0xe2, 0xd8, 0xdd, 0xdb, 0xd9, 0xe2, 0xad, 0xff, 0xd0, 0xbb, 0xce, 0xbf, 0xcc, 0xf0, 0x00, 0xfd, 0x01, 0xb8, 0x00, 0xd8, 0xdd
+ .byte 0xd9, 0x00, 0xbc, 0xbb, 0xcd, 0xc3, 0xcd, 0xae, 0xce, 0xbb, 0xcd, 0xbd, 0xc2, 0xbf, 0xfe, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe7, 0x00, 0xbc, 0xbf, 0xcf, 0xce, 0xbf, 0xc6, 0xcd, 0x00, 0xdd, 0xe7
+ .byte 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xad, 0xfb, 0xc6, 0xd5, 0xdb, 0xd9, 0xe6, 0xd9, 0x00, 0xd9, 0xdd, 0xe2, 0xdd, 0xdb, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe6, 0x00, 0xbc, 0xd5, 0xe7
+ .byte 0xdd, 0xe7, 0xae, 0xc3, 0xe8, 0xd9, 0xe1, 0xe7, 0x00, 0xdd, 0xe2, 0xfe, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe1, 0x00, 0xca, 0xbd, 0x00, 0xe9, 0xe2, 0xd8, 0x00, 0xdf, 0xe3, 0xe1, 0xe1, 0x00, 0xd8
+ .byte 0xd5, 0xe2, 0xe2, 0x00, 0xeb, 0xdd, 0xd9, 0xd8, 0xd9, 0xe6, 0xad, 0xff, 0xb8, 0x0d, 0xdd, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45
+ .byte 0x08, 0x4a, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45, 0x08, 0x2b, 0xce, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45, 0x08, 0x46, 0x13, 0x01, 0x01, 0x00, 0x21
+ .byte 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0x5b, 0xdd, 0x45, 0x08, 0xbe, 0x16, 0xdb, 0x45, 0x08, 0x0e, 0x02, 0x02, 0xbe, 0x63, 0xdd, 0x45, 0x08, 0x0e, 0x03, 0x02, 0xbe, 0x95, 0xdd, 0x45, 0x08, 0x0e
+ .byte 0x03, 0x02, 0xbe, 0xdd, 0xd9, 0xe7, 0xd9, 0xe7, 0x00, 0xc1, 0xbf, 0xcd, 0xbd, 0xc2, 0xbf, 0xc2, 0xbf, 0xc8, 0x00, 0xdf, 0xd5, 0xe2, 0xe2, 0x00, 0xe2, 0xe9, 0xe6, 0x00, 0xd9, 0xdd, 0xe2, 0xe1
+ .byte 0xd5, 0xe0, 0xfe, 0xdb, 0xd9, 0xe7, 0xe4, 0xdd, 0xd9, 0xe0, 0xe8, 0x00, 0xeb, 0xd9, 0xe6, 0xd8, 0xd9, 0xe2, 0xad, 0xff, 0xbe, 0xd9, 0xdd, 0xe2, 0xd9, 0x00, 0xbc, 0xbb, 0xcd, 0xc3, 0xcd, 0xae
+ .byte 0xce, 0xbb, 0xcd, 0xbd, 0xc2, 0xbf, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xad, 0xff
+
+gUnknown_Debug_845DDB2::
+ .byte 0x01, 0xb2, 0xdd, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xdd, 0x45, 0x08, 0x06, 0xe3, 0x45, 0x08, 0x07, 0xd6
+ .byte 0xdd, 0x45, 0x08, 0x02
+
+gUnknown_Debug_845DDD6::
+ .space 0x530
+
+gUnknown_Debug_845E306::
+ .byte 0x01, 0x06, 0xe3, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x05, 0x29, 0xe3, 0x45, 0x08, 0x03, 0x02, 0x4f, 0xe3, 0x45, 0x08, 0x03, 0x03, 0x87, 0xe3
+ .byte 0x45, 0x08, 0x02, 0xb8, 0x29, 0xe3, 0x45, 0x08, 0x43, 0x21, 0x0d, 0x80, 0x06, 0x00, 0xbb, 0x01, 0x4c, 0xe3, 0x45, 0x08, 0x79, 0x45, 0x01, 0x0f, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x0e, 0x02, 0x02, 0x0e, 0x03, 0x02, 0xbf, 0xdd, 0xe2, 0x00, 0xca, 0xc9, 0xc5, 0x1b, 0xc7, 0xc9, 0xc8, 0x00, 0xeb, 0xe9, 0xe6, 0xd8, 0xd9, 0x00, 0xdd, 0xe2, 0x00, 0xd8, 0xd5
+ .byte 0xe7, 0x00, 0xce, 0xd9, 0xd5, 0xe1, 0x00, 0xd8, 0xd9, 0xe7, 0xfe, 0xcd, 0xe4, 0xdd, 0xd9, 0xe0, 0xd9, 0xe6, 0xe7, 0x00, 0xd5, 0xe9, 0xda, 0xdb, 0xd9, 0xe2, 0xe3, 0xe1, 0xe1, 0xd9, 0xe2, 0xad
+ .byte 0xff, 0xbe, 0xd5, 0xe7, 0x00, 0xce, 0xd9, 0xd5, 0xe1, 0x00, 0xd8, 0xd9, 0xe7, 0x00, 0xcd, 0xe4, 0xdd, 0xd9, 0xe0, 0xd9, 0xe6, 0xe7, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xe7
+ .byte 0xe8, 0xf4, 0xe2, 0xd8, 0xdd, 0xdb, 0xad, 0xfe, 0xbf, 0xe7, 0x00, 0xdf, 0xd5, 0xe2, 0xe2, 0x00, 0xdf, 0xd9, 0xdd, 0xe2, 0x00, 0xeb, 0xd9, 0xdd, 0xe8, 0xd9, 0xe6, 0xd9, 0xe7, 0x00, 0xca, 0xc9
+ .byte 0xc5, 0x1b, 0xc7, 0xc9, 0xc8, 0xfa, 0xd5, 0xe9, 0xda, 0xdb, 0xd9, 0xe2, 0xe3, 0xe1, 0xe1, 0xd9, 0xe2, 0x00, 0xeb, 0xd9, 0xe6, 0xd8, 0xd9, 0xe2, 0xad, 0xff
+
+gUnknown_Debug_845E3E0::
+ .byte 0x01, 0xe0, 0xe3, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xe3, 0x45, 0x08, 0x02, 0xe4, 0x45, 0x08, 0x08, 0x00
+ .byte 0x01, 0x02
+
+gUnknown_Debug_845E402::
+ .byte 0x01, 0x02, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0xe4, 0x45, 0x08, 0x22, 0xe4, 0x45, 0x08, 0x09, 0x02
+
+gUnknown_Debug_845E422::
+ .byte 0x01, 0x22, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe4, 0x45, 0x08, 0x43, 0xe4, 0x45, 0x08, 0x0a, 0x01
+ .byte 0x02
+
+gUnknown_Debug_845E443::
+ .byte 0x01, 0x43, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0xe4, 0x45, 0x08, 0xef, 0xe4, 0x45, 0x08, 0x0c, 0x67
+ .byte 0xe4, 0x45, 0x08, 0x02
+
+gUnknown_Debug_845E467::
+ .space 100
+
+gUnknown_Debug_845E4CB::
+ .space 36
+
+gUnknown_Debug_845E4EF::
+ .byte 0x01, 0xef, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0d, 0x06, 0xe5, 0x45, 0x08, 0x02
+
+gUnknown_Debug_845E506::
+ .space 256
+
+gUnknown_Debug_845E606::
+ .byte 0x01, 0x06, 0xe6, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x02
+
+gUnknown_Debug_845E619::
+ .byte 0x01, 0x19, 0xe6, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x37, 0xe6, 0x45, 0x08, 0x12, 0xe7, 0x45, 0x08, 0x06, 0x08
+ .byte 0x01, 0x01, 0x83, 0xe6, 0x45, 0x08, 0x12, 0xe7, 0x45, 0x08, 0x03, 0xff, 0x4c, 0xe6, 0x45, 0x08, 0x04, 0x02, 0x02, 0xbc, 0xd9, 0xe7, 0xe9, 0xd7, 0xdc, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9
+ .byte 0xe2, 0x00, 0xd0, 0xd5, 0xe8, 0xd9, 0xe6, 0x00, 0xdd, 0xe2, 0x00, 0xd8, 0xd9, 0xe6, 0x00, 0xbb, 0xcc, 0xbf, 0xc8, 0xbb, 0xfe, 0xea, 0xe3, 0xe2, 0x00, 0xbc, 0xc6, 0xf3, 0xce, 0xbf, 0xc8, 0xbc
+ .byte 0xcf, 0xcc, 0xc1, 0x00, 0xbd, 0xc3, 0xce, 0xd3, 0xad, 0xff, 0xb8, 0x83, 0xe6, 0x45, 0x08, 0x47, 0xa9, 0x00, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xbf, 0xe6, 0x45, 0x08, 0x4a
+ .byte 0xa9, 0x00, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xbf, 0xe6, 0x45, 0x08, 0x6a, 0x5a, 0xbd, 0xc0, 0xe6, 0x45, 0x08, 0x66, 0x6d, 0x1a, 0x00, 0x80, 0xa9, 0x00, 0x1a, 0x01, 0x80
+ .byte 0x01, 0x00, 0x09, 0x00, 0x6c, 0x0d, 0x0c, 0xd0, 0xbb, 0xce, 0xbf, 0xcc, 0xf0, 0x00, 0xc2, 0xdd, 0xb8, 0x00, 0xfd, 0x01, 0xab, 0xfb, 0xc3, 0xd7, 0xdc, 0x00, 0xdc, 0xd5, 0xd6, 0xd9, 0x00, 0xdb
+ .byte 0xd9, 0xe6, 0xd5, 0xd8, 0xd9, 0x00, 0xd8, 0xdd, 0xd9, 0xe7, 0xd9, 0x00, 0xe7, 0xd9, 0xe0, 0xe8, 0xd9, 0xe2, 0xd9, 0x00, 0xbc, 0xbf, 0xbf, 0xcc, 0xbf, 0xfe, 0xd9, 0xe6, 0xdc, 0xd5, 0xe0, 0xe8
+ .byte 0xd9, 0xe2, 0xad, 0x00, 0xc3, 0xd7, 0xdc, 0x00, 0xe7, 0xd7, 0xdc, 0xd9, 0xe2, 0xdf, 0xd9, 0x00, 0xe7, 0xdd, 0xd9, 0x00, 0xd8, 0xdd, 0xe6, 0xab, 0xff
+
+gUnknown_Debug_845E712::
+ .byte 0x01, 0x12, 0xe7, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe7, 0x45, 0x08, 0x97, 0xe7, 0x45, 0x08, 0x05, 0x36
+ .byte 0xe7, 0x45, 0x08, 0x02, 0xb8, 0x36, 0xe7, 0x45, 0x08, 0x81, 0x00, 0x78, 0x00, 0x4b, 0x78, 0x00, 0x21, 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0x55, 0xe7, 0x45, 0x08, 0xbe, 0x5d, 0xe7, 0x45, 0x08
+ .byte 0x0e, 0x02, 0x02, 0xbe, 0x71, 0xe7, 0x45, 0x08, 0x0e, 0x03, 0x02, 0xfd, 0x02, 0x00, 0xeb, 0xe9, 0xe6, 0xd8, 0xd9, 0x00, 0xf6, 0xd6, 0xd9, 0xe6, 0xdb, 0xd9, 0xd6, 0xd9, 0xe2, 0xad, 0xff, 0xbf
+ .byte 0xe7, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xdf, 0xd9, 0xdd, 0xe2, 0x00, 0xca, 0xe0, 0xd5, 0xe8, 0xee, 0x00, 0xda, 0xf6, 0xe6, 0x00, 0xfd, 0x02, 0xfe, 0xea, 0xe3, 0xe6, 0xdc, 0xd5, 0xe2, 0xd8, 0xd9
+ .byte 0xe2, 0xad, 0xad, 0xad, 0xff
+
+gUnknown_Debug_845E797::
+ .byte 0x01, 0x97, 0xe7, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xe7, 0x45, 0x08, 0xbb, 0xe7, 0x45, 0x08
+
+gUnknown_Debug_845E7B5::
+ .byte 0x0b, 0x01, 0x03, 0x0d, 0x00, 0x02
+
+gUnknown_Debug_845E7BB::
+ .byte 0x00
+
+.endif
+
diff --git a/data/debug_menu_nohara.s b/data/debug_menu_nohara.s
new file mode 100644
index 000000000..269a0d550
--- /dev/null
+++ b/data/debug_menu_nohara.s
@@ -0,0 +1,229 @@
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .if DEBUG
+
+ .align 2
+gUnknown_Debug_083C48C4:: @ 0x83C48C4
+ .string "TV$"
+
+gUnknown_Debug_083C48C7:: @ 0x83C48C7
+ .string "Fan$"
+
+gUnknown_Debug_083C48CB:: @ 0x83C48CB
+ .string "Battle (vs Dad)$"
+
+gUnknown_Debug_083C48DB:: @ 0x83C48DB
+ .string "Dad after battle$"
+
+gUnknown_Debug_083C48EC:: @ 0x83C48EC
+ .string "SOOTOPOLIS CITY$"
+
+gUnknown_Debug_083C48FC:: @ 0x83C48FC
+ .string "Embark$"
+
+gUnknown_Debug_083C4903:: @ 0x83C4903
+ .string "Yes 9999$"
+
+gUnknown_Debug_083C490C:: @ 0x83C490C
+ .string "Legends flag ON$"
+
+gUnknown_Debug_083C491C:: @ 0x83C491C
+ .string "Add num of winning streaks$"
+
+ .align 2
+gUnknown_Debug_083C4938:: @ 0x83C4938
+ .4byte gUnknown_Debug_083C48C4, NoharaDebugMenu_TV+1
+ .4byte gUnknown_Debug_083C48C7, NoharaDebugMenu_Fan+1
+ .4byte gUnknown_Debug_083C48CB, NoharaDebugMenu_BattleVSDad+1
+ .4byte gUnknown_Debug_083C48DB, NoharaDebugMenu_DadAfterBattle+1
+ .4byte gUnknown_Debug_083C48EC, NoharaDebugMenu_SootopolisCity+1
+ .4byte gUnknown_Debug_083C48FC, NoharaDebugMenu_Embark+1
+ .4byte gUnknown_Debug_083C4903, NoharaDebugMenu_Yes9999+1
+ .4byte gUnknown_Debug_083C490C, NoharaDebugMenu_LegendsFlagOn+1
+ .4byte gUnknown_Debug_083C491C, NoharaDebugMenu_AddNumWinningStreaks+1
+
+gUnknown_Debug_083C4980:: @ 0x83C4980
+ .string "Want to change data type{CLEAR_TO 143}Press Left\n"
+ .string "to see secret type now?{CLEAR_TO 143}to switch$"
+
+gUnknown_Debug_083C49CA:: @ 0x83C49CA
+ .string "Choose the TV data you wish to\n"
+ .string "create to check a transmission。$"
+
+gUnknown_Debug_083C4A09:: @ 0x83C4A09
+ .string "ほうそうの はっせいりつを セット\n"
+ .string "してください ?ぶんの1に なります$"
+
+gUnknown_Debug_083C4A2E:: @ 0x83C4A2E
+ .string "SURVEY$"
+
+gUnknown_Debug_083C4A35:: @ 0x83C4A35
+ .string "RECENT HAPPENINGS$"
+
+gUnknown_Debug_083C4A47:: @ 0x83C4A47
+ .string "POKひMON FAN CLUB$"
+
+gUnknown_Debug_083C4A58:: @ 0x83C4A58
+ .string "ジム$"
+
+gUnknown_Debug_083C4A5B:: @ 0x83C4A5B
+ .string "OUTBREAKS$"
+
+gUnknown_Debug_083C4A65:: @ 0x83C4A65
+ .string "NAME RATER$"
+
+gUnknown_Debug_083C4A70:: @ 0x83C4A70
+ .string "CONTEST$"
+
+gUnknown_Debug_083C4A78:: @ 0x83C4A78
+ .string "INTRODUCTION$"
+
+gUnknown_Debug_083C4A85:: @ 0x83C4A85
+ .string "SHOPPING$"
+
+gUnknown_Debug_083C4A8E:: @ 0x83C4A8E
+ .string "MISFORTUNE$"
+
+gUnknown_Debug_083C4A99:: @ 0x83C4A99
+ .string "FISHING$"
+
+gUnknown_Debug_083C4AA1:: @ 0x83C4AA1
+ .string "MEMORABLE DAY$"
+
+gUnknown_Debug_083C4AAF:: @ 0x83C4AAF
+ .string "BRAVO TRAINER$"
+
+gUnknown_Debug_083C4ABD:: @ 0x83C4ABD
+ .string "あいうるおかなにぬねのき   んぼざくゅぼざくびぼざくサぼざくナぼざくミぼざくリぼざくュぼざくズぼざくベぼざく0ぼざく·ぼざくBIG SALE$"
+
+gUnknown_Debug_083C4B05:: @ 0x83C4B05
+ .string "SERVICE DAY$"
+
+gUnknown_Debug_083C4B11:: @ 0x83C4B11
+ .string "CLEARーOUT SALE$"
+
+gUnknown_Debug_083C4B20:: @ 0x83C4B20
+ .string "あいう {0xFC}ぼざくおぱざくちぱざく"
+
+gUnknown_Debug_083C4B30:: @ 0x83C4B30
+ .string "Secret type$"
+
+gUnknown_Debug_083C4B3C:: @ 0x83C4B3C
+ .string "Start$"
+
+gUnknown_Debug_083C4B42:: @ 0x83C4B42
+ .string "Create TV$"
+
+gUnknown_Debug_083C4B4C:: @ 0x83C4B4C
+ .string "All clear$"
+
+gUnknown_Debug_083C4B56:: @ 0x83C4B56
+ .string "All seen$"
+
+gUnknown_Debug_083C4B5F:: @ 0x83C4B5F
+ .string "Create CM$"
+
+gUnknown_Debug_083C4B69:: @ 0x83C4B69
+ .string "Not yet seen$"
+
+gUnknown_Debug_083C4B76:: @ 0x83C4B76
+ .string "Hit Table$"
+
+gUnknown_Debug_083C4B80:: @ 0x83C4B80
+ .string "Set full$"
+
+ .align 2
+gUnknown_Debug_083C4B8C:: @ 0x83C4B8C
+ .4byte gUnknown_Debug_083C4B30, debug_sub_808F4EC+1
+ .4byte gUnknown_Debug_083C4B3C, debug_sub_808F8AC+1
+ .4byte gUnknown_Debug_083C4B42, debug_sub_808F8CC+1
+ .4byte gUnknown_Debug_083C4B4C, debug_sub_808FEBC+1
+ .4byte gUnknown_Debug_083C4B56, debug_sub_808F560+1
+ .4byte gUnknown_Debug_083C4B5F, debug_sub_808FECC+1
+ .4byte gUnknown_Debug_083C4B69, debug_sub_808F594+1
+ .4byte gUnknown_Debug_083C4B76, debug_sub_808F5D8+1
+ .4byte gUnknown_Debug_083C4B80, debug_sub_80900AC+1
+
+gUnknown_Debug_083C4BD4:: @ 0x83C4BD4
+ .string "しえ          しく          しこ          せか          せく          せこ          たえ          たか          たこ          つえ          つか          つこ          "
+
+gUnknown_Debug_083C4C64:: @ 0x83C4C64
+ .string "TERUKUN$"
+
+gUnknown_Debug_083C4C6C:: @ 0x83C4C6C
+ .string "TERUTERUDA$"
+
+gUnknown_Debug_083C4C77:: @ 0x83C4C77
+ .string "1 スクル$"
+
+gUnknown_Debug_083C4C7D:: @ 0x83C4C7D
+ .string "2 ミドル$"
+
+gUnknown_Debug_083C4C83:: @ 0x83C4C83
+ .string "3 オジヨ$"
+
+gUnknown_Debug_083C4C89:: @ 0x83C4C89
+ .string "4 ボーヤ$"
+
+gUnknown_Debug_083C4C8F:: @ 0x83C4C8F
+ .string "5 ボーイ$"
+
+gUnknown_Debug_083C4C95:: @ 0x83C4C95
+ .string "6 ヤング$"
+
+gUnknown_Debug_083C4C9B:: @ 0x83C4C9B
+ .string "7 ヲーカ$"
+
+gUnknown_Debug_083C4CA1:: @ 0x83C4CA1
+ .string "8 オルド$"
+
+ .align 2
+gUnknown_Debug_083C4CA8:: @ 0x83C4CA8
+ .4byte gUnknown_Debug_083C4C77, gUnknown_Debug_083C4C7D
+ .4byte gUnknown_Debug_083C4C83, gUnknown_Debug_083C4C89
+ .4byte gUnknown_Debug_083C4C8F, gUnknown_Debug_083C4C95
+ .4byte gUnknown_Debug_083C4C9B, gUnknown_Debug_083C4CA1
+
+gUnknown_Debug_083C4CC8:: @ 0x83C4CC8
+ .string "Start$"
+
+gUnknown_Debug_083C4CCE:: @ 0x83C4CCE
+ .string "Increase$"
+
+gUnknown_Debug_083C4CD7:: @ 0x83C4CD7
+ .string "Reduce$"
+
+gUnknown_Debug_083C4CDE:: @ 0x83C4CDE
+ .string "Points$"
+
+gUnknown_Debug_083C4CE5:: @ 0x83C4CE5
+ .string "Play time 6$"
+
+gUnknown_Debug_083C4CF1:: @ 0x83C4CF1
+ .string "P ELITE FOUR$"
+
+gUnknown_Debug_083C4CFE:: @ 0x83C4CFE
+ .string "P SECRET BASE$"
+
+gUnknown_Debug_083C4D0C:: @ 0x83C4D0C
+ .string "P CONTEST$"
+
+gUnknown_Debug_083C4D16:: @ 0x83C4D16
+ .string "P BATTLE TOWER$"
+
+ .align 2
+gUnknown_Debug_083C4D28:: @ 0x83C4D28
+ .4byte gUnknown_Debug_083C4CC8, debug_sub_80901E4+1
+ .4byte gUnknown_Debug_083C4CCE, debug_sub_80901F8+1
+ .4byte gUnknown_Debug_083C4CD7, debug_sub_8090238+1
+ .4byte gUnknown_Debug_083C4CDE, debug_sub_809029C+1
+ .4byte gUnknown_Debug_083C4CE5, debug_sub_80902E4+1
+ .4byte gUnknown_Debug_083C4CF1, debug_sub_80902FC+1
+ .4byte gUnknown_Debug_083C4CFE, debug_sub_8090310+1
+ .4byte gUnknown_Debug_083C4D0C, debug_sub_8090324+1
+ .4byte gUnknown_Debug_083C4D16, debug_sub_8090338+1
+
+ .endif
diff --git a/data/debug_menu_taya.s b/data/debug_menu_taya.s
new file mode 100644
index 000000000..4bd8239f4
--- /dev/null
+++ b/data/debug_menu_taya.s
@@ -0,0 +1,219 @@
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .if DEBUG
+
+gUnknown_Debug_083C4E54:: @ 0x83C4E54
+ .string "Profile$"
+
+gUnknown_Debug_083C4E5C:: @ 0x83C4E5C
+ .string "Battle’s start$"
+
+gUnknown_Debug_083C4E6B:: @ 0x83C4E6B
+ .string "Good saying$"
+
+gUnknown_Debug_083C4E77:: @ 0x83C4E77
+ .string "Lose a battle$"
+
+gUnknown_Debug_083C4E85:: @ 0x83C4E85
+ .string "MAIL$"
+
+gUnknown_Debug_083C4E8A:: @ 0x83C4E8A
+ .string "MAIL salutation$"
+
+gUnknown_Debug_083C4E9A:: @ 0x83C4E9A
+ .string "BARD’s song$"
+
+gUnknown_Debug_083C4EA6:: @ 0x83C4EA6
+ .string "Interview$"
+
+gUnknown_Debug_083C4EB0:: @ 0x83C4EB0
+ .string "InterviewシBTス$"
+
+ .align 2
+gUnknown_Debug_083C4EC0:: @ 0x83C4EC0
+ .4byte gUnknown_Debug_083C4E54, 0x0
+ .4byte gUnknown_Debug_083C4E5C, 0x1
+ .4byte gUnknown_Debug_083C4E6B, 0xD
+ .4byte gUnknown_Debug_083C4E77, 0x3
+ .4byte gUnknown_Debug_083C4E85, 0x4
+ .4byte gUnknown_Debug_083C4E8A, 0x5
+ .4byte gUnknown_Debug_083C4E9A, 0x6
+ .4byte gUnknown_Debug_083C4EA6, 0x7
+ .4byte gUnknown_Debug_083C4EB0, 0xC
+
+gUnknown_Debug_083C4F08:: @ 0x83C4F08
+ .string "サえぃえそい"
+
+gUnknown_Debug_083C4F0E:: @ 0x83C4F0E
+ .string "BARD$"
+
+gUnknown_Debug_083C4F13:: @ 0x83C4F13
+ .string "HIPSTER$"
+
+gUnknown_Debug_083C4F1B:: @ 0x83C4F1B
+ .string "RECYCLE$"
+
+gUnknown_Debug_083C4F23:: @ 0x83C4F23
+ .string "STORYTELLER$"
+
+gUnknown_Debug_083C4F2F:: @ 0x83C4F2F
+ .string "GIDDY GUY$"
+
+gUnknown_Debug_083C4F39:: @ 0x83C4F39
+ .string "Flag OFF$"
+
+gUnknown_Debug_083C4F42:: @ 0x83C4F42
+ .string "21 letters$"
+
+gUnknown_Debug_083C4F4D:: @ 0x83C4F4D
+ .string "ナウくなる$"
+
+ .align 2
+gUnknown_Debug_083C4F54:: @ 0x83C4F54
+ .4byte gUnknown_Debug_083C4F0E, 0x0
+ .4byte gUnknown_Debug_083C4F13, 0x0
+ .4byte gUnknown_Debug_083C4F1B, 0x0
+ .4byte gUnknown_Debug_083C4F23, 0x0
+ .4byte gUnknown_Debug_083C4F2F, 0x0
+ .4byte gUnknown_Debug_083C4F39, 0x0
+ .4byte gUnknown_Debug_083C4F42, 0x0
+ .4byte gUnknown_Debug_083C4F4D, 0x0
+
+gUnknown_Debug_083C4F94:: @ 0x83C4F94
+ .string "しょうしょうおまちください!$"
+
+gUnknown_Debug_083C4FA3:: @ 0x83C4FA3
+ .string "Weather$"
+
+gUnknown_Debug_083C4FAB:: @ 0x83C4FAB
+ .string "LANETTE’S PC$"
+
+gUnknown_Debug_083C4FB8:: @ 0x83C4FB8
+ .string "SimpleText$"
+
+gUnknown_Debug_083C4FC3:: @ 0x83C4FC3
+ .string "Old man$"
+
+gUnknown_Debug_083C4FCB:: @ 0x83C4FCB
+ .string "Trend$"
+
+gUnknown_Debug_083C4FD1:: @ 0x83C4FD1
+ .string "Trend R$"
+
+gUnknown_Debug_083C4FD9:: @ 0x83C4FD9
+ .string "Town flag$"
+
+gUnknown_Debug_083C4FE3:: @ 0x83C4FE3
+ .string "Award a ribbon$"
+
+gUnknown_Debug_083C4FF2:: @ 0x83C4FF2
+ .string "{PKMN}LOTTERY$"
+
+gUnknown_Debug_083C4FFC:: @ 0x83C4FFC
+ .string "Trainer$"
+
+gUnknown_Debug_083C5004:: @ 0x83C5004
+ .string "POKéNAV D$"
+
+ .align 2
+gUnknown_Debug_083C5010:: @ 0x83C5010
+ .4byte gUnknown_Debug_083C4FA3, debug_sub_808560C+1
+ .4byte gUnknown_Debug_083C4FAB, TayaDebugMenu_LanettesPC+1
+ .4byte gUnknown_Debug_083C4FB8, TayaDebugMenu_SimpleText+1
+ .4byte gUnknown_Debug_083C4FC3, TayaDebugMenu_OldMan+1
+ .4byte gUnknown_Debug_083C4FCB, TayaDebugMenu_Trend+1
+ .4byte gUnknown_Debug_083C4FD1, TayaDebugMenu_TrendR+1
+ .4byte gUnknown_Debug_083C4FD9, TayaDebugMenu_TownFlags+1
+ .4byte gUnknown_Debug_083C4FE3, TayaDebugMenu_AwardARibbon+1
+ .4byte gUnknown_Debug_083C4FF2, TayaDebugMenu_PKMNLottery+1
+
+gUnknown_Debug_083C5058:: @ 0x83C5058
+ .4byte gUnknown_Debug_083C4FFC, TayaDebugMenu_Trainer+1
+ .4byte gUnknown_Debug_083C5004, TayaDebugMenu_PokenavD+1
+
+gUnknown_Debug_83C5068::
+ .4byte gUnknown_Debug_083C5010, 0x9
+ .4byte gUnknown_Debug_083C5058, 0x2
+
+gUnknown_Debug_083C5078:: @ 0x83C5078
+ .string "CHANP$"
+
+gUnknown_Debug_083C507E:: @ 0x83C507E
+ .string "COOL$"
+
+gUnknown_Debug_083C5083:: @ 0x83C5083
+ .string "BEAUTY$"
+
+gUnknown_Debug_083C508A:: @ 0x83C508A
+ .string "CUTE$"
+
+gUnknown_Debug_083C508F:: @ 0x83C508F
+ .string "SMART$"
+
+gUnknown_Debug_083C5095:: @ 0x83C5095
+ .string "TOUGH$"
+
+gUnknown_Debug_083C509B:: @ 0x83C509B
+ .string "WIN$"
+
+gUnknown_Debug_083C509F:: @ 0x83C509F
+ .string "VICTORY$"
+
+gUnknown_Debug_083C50A7:: @ 0x83C50A7
+ .string "BROMIDE$"
+
+gUnknown_Debug_083C50AF:: @ 0x83C50AF
+ .string "ACCESSIT$"
+
+gUnknown_Debug_083C50B8:: @ 0x83C50B8
+ .string "MARINE$"
+
+gUnknown_Debug_083C50BF:: @ 0x83C50BF
+ .string "LAND$"
+
+gUnknown_Debug_083C50C4:: @ 0x83C50C4
+ .string "SKY$"
+
+gUnknown_Debug_083C50C8:: @ 0x83C50C8
+ .string "COUNTRY$"
+
+gUnknown_Debug_083C50D0:: @ 0x83C50D0
+ .string "NATIONAL$"
+
+gUnknown_Debug_083C50D9:: @ 0x83C50D9
+ .string "EARTH$"
+
+gUnknown_Debug_083C50DF:: @ 0x83C50DF
+ .string "WORLD$"
+
+gUnknown_Debug_083C50E5:: @ 0x83C50E5
+ .string "     $"
+
+ .align 2
+gUnknown_Debug_083C50EC:: @ 0x83C50EC
+ .4byte gUnknown_Debug_083C5078, 0x43
+ .4byte gUnknown_Debug_083C507E, 0x32
+ .4byte gUnknown_Debug_083C5083, 0x33
+ .4byte gUnknown_Debug_083C508A, 0x34
+ .4byte gUnknown_Debug_083C508F, 0x35
+ .4byte gUnknown_Debug_083C5095, 0x36
+ .4byte gUnknown_Debug_083C509B, 0x44
+ .4byte gUnknown_Debug_083C509F, 0x45
+ .4byte gUnknown_Debug_083C50A7, 0x46
+ .4byte gUnknown_Debug_083C50AF, 0x47
+ .4byte gUnknown_Debug_083C50B8, 0x48
+ .4byte gUnknown_Debug_083C50BF, 0x49
+ .4byte gUnknown_Debug_083C50C4, 0x4A
+ .4byte gUnknown_Debug_083C50C8, 0x4B
+ .4byte gUnknown_Debug_083C50D0, 0x4C
+ .4byte gUnknown_Debug_083C50D9, 0x4D
+ .4byte gUnknown_Debug_083C50DF, 0x4E
+ .4byte gUnknown_Debug_083C50E5, 0x0
+
+gUnknown_Debug_083C517C:: @ 0x83C517C
+ .string "Select Ribbon$"
+
+ .endif
diff --git a/data/debug_menu_tomomichi.s b/data/debug_menu_tomomichi.s
new file mode 100644
index 000000000..19401bb85
--- /dev/null
+++ b/data/debug_menu_tomomichi.s
@@ -0,0 +1,2711 @@
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .if DEBUG
+
+gUnknown_Debug_083C0C54:: @ 0x83C0C54
+ .string "Contest graphics$"
+
+gUnknown_Debug_083C0C65:: @ 0x83C0C65
+ .string "Art Mus. graphics$"
+
+gUnknown_Debug_083C0C77:: @ 0x83C0C77
+ .string "Preview data$"
+
+gUnknown_Debug_083C0C84:: @ 0x83C0C84
+ .string "TRICK HOUSE$"
+
+gUnknown_Debug_083C0C90:: @ 0x83C0C90
+ .string "Control events$"
+
+gUnknown_Debug_083C0C9F:: @ 0x83C0C9F
+ .string "Control flags$"
+
+gUnknown_Debug_083C0CAD:: @ 0x83C0CAD
+ .string "Control WORK$"
+
+ .align 2
+gUnknown_Debug_083C0CBA:: @ 0x83C0CBA
+ .4byte gUnknown_Debug_083C0C54, TomomichiDebugMenu_ContestGraphics+1
+ .4byte gUnknown_Debug_083C0C65, TomomichiDebugMenu_ArtMusGraphics+1
+ .4byte gUnknown_Debug_083C0C77, TomomichiDebugMenu_PreviewData+1
+ .4byte gUnknown_Debug_083C0C84, TomomichiDebugMenu_TrickHouse+1
+ .4byte gUnknown_Debug_083C0C90, TomomichiDebugMenu_ControlEvents+1
+ .4byte gUnknown_Debug_083C0C9F, TomomichiDebugMenu_ControlFlags+1
+ .4byte gUnknown_Debug_083C0CAD, TomomichiDebugMenu_ControlWorks+1
+
+gUnknown_Debug_083C0CF4:: @ 0x83C0CF4
+ .string "Contest$"
+
+gUnknown_Debug_083C0CFC:: @ 0x83C0CFC
+ .string "Pokémon No.$"
+
+gUnknown_Debug_083C0D08:: @ 0x83C0D08
+ .string "ID rnd. digit$"
+
+gUnknown_Debug_083C0D16:: @ 0x83C0D16
+ .string "Contest Type$"
+
+gUnknown_Debug_083C0D23:: @ 0x83C0D23
+ .string "Poké Art$"
+
+ .align 2
+gUnknown_Debug_083C0D2C:: @ 0x83C0D2C
+ .4byte gUnknown_Debug_083C0CFC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0D08, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0D16, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0D23, TomomichiDebugMenu_ContestGraphics_Show+1
+
+gUnknown_Debug_083C0D4C:: @ 0x83C0D4C
+ .string "Art Mus.$"
+
+gUnknown_Debug_083C0D55:: @ 0x83C0D55
+ .string "Pokémon No.$"
+
+gUnknown_Debug_083C0D61:: @ 0x83C0D61
+ .string "ID rnd. digit$"
+
+gUnknown_Debug_083C0D6F:: @ 0x83C0D6F
+ .string "Title Type$"
+
+gUnknown_Debug_083C0D7A:: @ 0x83C0D7A
+ .string "Poké Art$"
+
+ .align 2
+gUnknown_Debug_083C0D83:: @ 0x83C0D83
+ .4byte gUnknown_Debug_083C0D55, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0D61, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0D6F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0D7A, TomomichiDebugMenu_MuseumGraphics_Show+1
+
+gUnknown_Debug_083C0DA4:: @ 0x83C0DA4
+ .string "Preview$"
+
+gUnknown_Debug_083C0DAC:: @ 0x83C0DAC
+ .string "Pokémon No.$"
+
+gUnknown_Debug_083C0DB8:: @ 0x83C0DB8
+ .string "ID rnd. digit$"
+
+gUnknown_Debug_083C0DC6:: @ 0x83C0DC6
+ .string "Type$"
+
+gUnknown_Debug_083C0DCB:: @ 0x83C0DCB
+ .string "Poké Art$"
+
+ .align 2
+gUnknown_Debug_083C0DD4:: @ 0x83C0DD4
+ .4byte gUnknown_Debug_083C0DAC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0DB8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0DC6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0DCB, debug_sub_808ECA4+1
+
+gUnknown_Debug_083C0DF4:: @ 0x83C0DF4
+ .string "Trick related$"
+
+gUnknown_Debug_083C0E02:: @ 0x83C0E02
+ .string "Level$"
+
+gUnknown_Debug_083C0E08:: @ 0x83C0E08
+ .string "Trick Master$"
+
+ .align 2
+gUnknown_Debug_083C0E15:: @ 0x83C0E15
+ .4byte gUnknown_Debug_083C0E02, debug_sub_808EB58+1
+ .4byte gUnknown_Debug_083C0E08, debug_sub_808EBB4+1
+
+gUnknown_Debug_083C0E28:: @ 0x83C0E28
+ .string "パート1$"
+
+gUnknown_Debug_083C0E2D:: @ 0x83C0E2D
+ .string "パート2$"
+
+ .align 2
+gUnknown_Debug_083C0E32:: @ 0x83C0E32
+ .4byte gUnknown_Debug_083C0E28, debug_sub_808BFC4+1
+ .4byte gUnknown_Debug_083C0E2D, debug_sub_808C014+1
+
+gUnknown_Debug_083C0E44:: @ 0x83C0E44
+ .string "イベントFLAG$"
+
+gUnknown_Debug_083C0E4D:: @ 0x83C0E4D
+ .string "バニシュFLAG$"
+
+gUnknown_Debug_083C0E56:: @ 0x83C0E56
+ .string "トレーナーFLAG$"
+
+gUnknown_Debug_083C0E60:: @ 0x83C0E60
+ .string "SYSFLAG$"
+
+gUnknown_Debug_083C0E68:: @ 0x83C0E68
+ .string "BALLバニシュFLAG$"
+
+gUnknown_Debug_083C0E75:: @ 0x83C0E75
+ .string "FH$"
+
+gUnknown_Debug_083C0E78:: @ 0x83C0E78
+ .string "FH-OBJ$"
+
+ .align 2
+gUnknown_Debug_083C0E7F:: @ 0x83C0E7F
+ .4byte gUnknown_Debug_083C0E44, debug_sub_808C31C+1
+ .4byte gUnknown_Debug_083C0E4D, debug_sub_808C7C8+1
+ .4byte gUnknown_Debug_083C0E56, debug_sub_808CC74+1
+ .4byte gUnknown_Debug_083C0E60, debug_sub_808CF10+1
+ .4byte gUnknown_Debug_083C0E68, debug_sub_808D844+1
+ .4byte gUnknown_Debug_083C0E75, debug_sub_808D600+1
+ .4byte gUnknown_Debug_083C0E78, debug_sub_808D3BC+1
+
+gUnknown_Debug_083C0EB8:: @ 0x83C0EB8
+ .string "SAVEWORK$"
+
+gUnknown_Debug_083C0EC1:: @ 0x83C0EC1
+ .string "SYSWORK$"
+
+gUnknown_Debug_083C0EC9:: @ 0x83C0EC9
+ .string "LOCALWORK$"
+
+gUnknown_Debug_083C0ED3:: @ 0x83C0ED3
+ .string "OBJWORK$"
+
+gUnknown_Debug_083C0EDB:: @ 0x83C0EDB
+ .string "ANSWORK$"
+
+gUnknown_Debug_083C0EE3:: @ 0x83C0EE3
+ .string "SAVEWORK パート2$"
+
+ .align 2
+gUnknown_Debug_083C0EF1:: @ 0x83C0EF1
+ .4byte gUnknown_Debug_083C0EB8, debug_sub_808DB0C+1
+ .4byte gUnknown_Debug_083C0EC1, debug_sub_808E36C+1
+ .4byte gUnknown_Debug_083C0EC9, debug_sub_808E6C0+1
+ .4byte gUnknown_Debug_083C0ED3, debug_sub_808E90C+1
+ .4byte gUnknown_Debug_083C0EDB, debug_sub_808DA30+1
+ .4byte gUnknown_Debug_083C0EE3, debug_sub_808DFC0+1
+
+gUnknown_Debug_083C0F24:: @ 0x83C0F24
+ .string "クリアご$"
+
+gUnknown_Debug_083C0F29:: @ 0x83C0F29
+ .string "コインこうにゅうかのう$"
+
+gUnknown_Debug_083C0F35:: @ 0x83C0F35
+ .string "コトキサポーターセット$"
+
+gUnknown_Debug_083C0F41:: @ 0x83C0F41
+ .string "ニューキンセツOPEN$"
+
+gUnknown_Debug_083C0F4D:: @ 0x83C0F4D
+ .string "れんらくせんにのれる$"
+
+gUnknown_Debug_083C0F58:: @ 0x83C0F58
+ .string "タマゴついか$"
+
+gUnknown_Debug_083C0F5F:: @ 0x83C0F5F
+ .string "アイテムいっぱい$"
+
+gUnknown_Debug_083C0F68:: @ 0x83C0F68
+ .string "グッズいっぱい$"
+
+gUnknown_Debug_083C0F70:: @ 0x83C0F70
+ .string "COINいっぱい$"
+
+ .align 2
+gUnknown_Debug_083C0F79:: @ 0x83C0F79
+ .4byte gUnknown_Debug_083C0F24, debug_sub_808C0EC+1
+ .4byte gUnknown_Debug_083C0F29, debug_sub_808C104+1
+ .4byte gUnknown_Debug_083C0F35, debug_sub_808C11C+1
+ .4byte gUnknown_Debug_083C0F41, debug_sub_808C134+1
+ .4byte gUnknown_Debug_083C0F4D, debug_sub_808C14C+1
+ .4byte gUnknown_Debug_083C0F58, debug_sub_808C164+1
+ .4byte gUnknown_Debug_083C0F5F, debug_sub_808C17C+1
+ .4byte gUnknown_Debug_083C0F68, debug_sub_808C194+1
+ .4byte gUnknown_Debug_083C0F70, debug_sub_808C1AC+1
+
+gUnknown_Debug_083C0FC4:: @ 0x83C0FC4
+ .string "ムロジムOPEN$"
+
+gUnknown_Debug_083C0FCD:: @ 0x83C0FCD
+ .string "おかねを0へ$"
+
+gUnknown_Debug_083C0FD4:: @ 0x83C0FD4
+ .string "ドジョッチ FULL$"
+
+gUnknown_Debug_083C0FDF:: @ 0x83C0FDF
+ .string "キノココ FULL$"
+
+gUnknown_Debug_083C0FE9:: @ 0x83C0FE9
+ .string "ドジョッチ タマゴ$"
+
+gUnknown_Debug_083C0FF3:: @ 0x83C0FF3
+ .string "キノココ タマゴ$"
+
+ .align 2
+gUnknown_Debug_083C0FFC:: @ 0x83C0FFC
+ .4byte gUnknown_Debug_083C0FC4, debug_sub_808C1C4+1
+ .4byte gUnknown_Debug_083C0FCD, debug_sub_808C1DC+1
+ .4byte gUnknown_Debug_083C0FD4, debug_sub_808C1F4+1
+ .4byte gUnknown_Debug_083C0FDF, debug_sub_808C20C+1
+ .4byte gUnknown_Debug_083C0FE9, debug_sub_808C224+1
+ .4byte gUnknown_Debug_083C0FF3, debug_sub_808C23C+1
+
+gUnknown_Debug_083C102C:: @ 0x83C102C
+ .string "ANSWORK みかんせい$"
+
+ .align 2
+gUnknown_Debug_083C103A:: @ 0x83C103A
+ .4byte gUnknown_Debug_083C102C, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1044:: @ 0x83C1044
+ .string "FHーOBJ00ー08$"
+
+gUnknown_Debug_083C1050:: @ 0x83C1050
+ .string "FHーOBJ09ー15$"
+
+ .align 2
+gUnknown_Debug_083C105C:: @ 0x83C105C
+ .4byte gUnknown_Debug_083C1044, debug_sub_808D450+1
+ .4byte gUnknown_Debug_083C1050, debug_sub_808D4A8+1
+
+gUnknown_Debug_083C106C:: @ 0x83C106C
+ .string "FHーOBJ00$"
+
+gUnknown_Debug_083C1075:: @ 0x83C1075
+ .string "FHーOBJ01$"
+
+gUnknown_Debug_083C107E:: @ 0x83C107E
+ .string "FHーOBJ02$"
+
+gUnknown_Debug_083C1087:: @ 0x83C1087
+ .string "FHーOBJ03$"
+
+gUnknown_Debug_083C1090:: @ 0x83C1090
+ .string "FHーOBJ04$"
+
+gUnknown_Debug_083C1099:: @ 0x83C1099
+ .string "FHーOBJ05$"
+
+gUnknown_Debug_083C10A2:: @ 0x83C10A2
+ .string "FHーOBJ06$"
+
+gUnknown_Debug_083C10AB:: @ 0x83C10AB
+ .string "FHーOBJ07$"
+
+gUnknown_Debug_083C10B4:: @ 0x83C10B4
+ .string "FHーOBJ08$"
+
+ .align 2
+gUnknown_Debug_083C10BD:: @ 0x83C10BD
+ .4byte gUnknown_Debug_083C106C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1075, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C107E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1087, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1090, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1099, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C10A2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C10AB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C10B4, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1108:: @ 0x83C1108
+ .string "FH-OBJ09$"
+
+gUnknown_Debug_083C1111:: @ 0x83C1111
+ .string "FH-OBJ10$"
+
+gUnknown_Debug_083C111A:: @ 0x83C111A
+ .string "FH-OBJ11$"
+
+gUnknown_Debug_083C1123:: @ 0x83C1123
+ .string "FH-OBJ12$"
+
+gUnknown_Debug_083C112C:: @ 0x83C112C
+ .string "FH-OBJ13$"
+
+gUnknown_Debug_083C1135:: @ 0x83C1135
+ .string "FH-OBJ14$"
+
+gUnknown_Debug_083C113E:: @ 0x83C113E
+ .string "FH-OBJ15$"
+
+gUnknown_Debug_083C1147:: @ 0x83C1147
+ .string "$"
+
+gUnknown_Debug_083C1148:: @ 0x83C1148
+ .string "$"
+
+ .align 2
+gUnknown_Debug_083C1149:: @ 0x83C1149
+ .4byte gUnknown_Debug_083C1108, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1111, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C111A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1123, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C112C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1135, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C113E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1147, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1148, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1194:: @ 0x83C1194
+ .byte 9, 7
+
+gUnknown_Debug_083C1196:: @ 0x83C1196
+ .2byte 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019
+ .2byte 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0000, 0x0000
+
+gUnknown_Debug_083C11BA:: @ 0x83C11BA
+ .string "FH-00-08$"
+
+gUnknown_Debug_083C11C3:: @ 0x83C11C3
+ .string "FH-09-15$"
+
+ .align 2
+gUnknown_Debug_083C11CC:: @ 0x83C11CC
+ .4byte gUnknown_Debug_083C11BA, debug_sub_808D694+1
+ .4byte gUnknown_Debug_083C11C3, debug_sub_808D6EC+1
+
+gUnknown_Debug_083C11DC:: @ 0x83C11DC
+ .string "FH-00$"
+
+gUnknown_Debug_083C11E2:: @ 0x83C11E2
+ .string "FH-01$"
+
+gUnknown_Debug_083C11E8:: @ 0x83C11E8
+ .string "FH-02$"
+
+gUnknown_Debug_083C11EE:: @ 0x83C11EE
+ .string "FH-03$"
+
+gUnknown_Debug_083C11F4:: @ 0x83C11F4
+ .string "FH-04$"
+
+gUnknown_Debug_083C11FA:: @ 0x83C11FA
+ .string "FH-05$"
+
+gUnknown_Debug_083C1200:: @ 0x83C1200
+ .string "FH-06$"
+
+gUnknown_Debug_083C1206:: @ 0x83C1206
+ .string "FH-07$"
+
+gUnknown_Debug_083C120C:: @ 0x83C120C
+ .string "FH-08$"
+
+ .align 2
+gUnknown_Debug_083C1212:: @ 0x83C1212
+ .4byte gUnknown_Debug_083C11DC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C11E2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C11E8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C11EE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C11F4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C11FA, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1200, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1206, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C120C, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C125C:: @ 0x83C125C
+ .string "FHー09$"
+
+gUnknown_Debug_083C1262:: @ 0x83C1262
+ .string "FHー10$"
+
+gUnknown_Debug_083C1268:: @ 0x83C1268
+ .string "FHー11$"
+
+gUnknown_Debug_083C126E:: @ 0x83C126E
+ .string "FHー12$"
+
+gUnknown_Debug_083C1274:: @ 0x83C1274
+ .string "FHー13$"
+
+gUnknown_Debug_083C127A:: @ 0x83C127A
+ .string "FHー14$"
+
+gUnknown_Debug_083C1280:: @ 0x83C1280
+ .string "FHー15$"
+
+gUnknown_Debug_083C1286:: @ 0x83C1286
+ .string "$"
+
+gUnknown_Debug_083C1287:: @ 0x83C1287
+ .string "$"
+
+ .align 2
+gUnknown_Debug_083C1288:: @ 0x83C1288
+ .4byte gUnknown_Debug_083C125C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1262, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1268, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C126E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1274, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C127A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1280, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1286, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1287, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C12D0:: @ 0x83C12D0
+ .byte 9, 7
+
+gUnknown_Debug_083C12D2:: @ 0x83C12D2
+ .2byte 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009
+ .2byte 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0000, 0x0000
+
+gUnknown_Debug_083C12F6:: @ 0x83C12F6
+ .string "BATCH$"
+
+gUnknown_Debug_083C12FC:: @ 0x83C12FC
+ .string "タウンとうちゃく$"
+
+gUnknown_Debug_083C1305:: @ 0x83C1305
+ .string "シティとうちゃく$"
+
+gUnknown_Debug_083C130E:: @ 0x83C130E
+ .string "GET$"
+
+gUnknown_Debug_083C1312:: @ 0x83C1312
+ .string "そのた1$"
+
+gUnknown_Debug_083C1317:: @ 0x83C1317
+ .string "そのた2$"
+
+gUnknown_Debug_083C131C:: @ 0x83C131C
+ .string "そのた3$"
+
+gUnknown_Debug_083C1321:: @ 0x83C1321
+ .string "そのた4$"
+
+gUnknown_Debug_083C1326:: @ 0x83C1326
+ .string "そのた とうちゃく$"
+
+gUnknown_Debug_083C1330:: @ 0x83C1330
+ .4byte gUnknown_Debug_083C12F6, debug_sub_808CFA4+1
+ .4byte gUnknown_Debug_083C12FC, debug_sub_808CFFC+1
+ .4byte gUnknown_Debug_083C1305, debug_sub_808D054+1
+ .4byte gUnknown_Debug_083C130E, debug_sub_808D0AC+1
+ .4byte gUnknown_Debug_083C1312, debug_sub_808D104+1
+ .4byte gUnknown_Debug_083C1317, debug_sub_808D15C+1
+ .4byte gUnknown_Debug_083C131C, debug_sub_808D1B4+1
+ .4byte gUnknown_Debug_083C1321, debug_sub_808D20C+1
+ .4byte gUnknown_Debug_083C1326, debug_sub_808D264+1
+
+gUnknown_Debug_083C1378:: @ 0x83C1378
+ .string "BATCH01ーGET$"
+
+gUnknown_Debug_083C1384:: @ 0x83C1384
+ .string "BATCH02ーGET$"
+
+gUnknown_Debug_083C1390:: @ 0x83C1390
+ .string "BATCH03ーGET$"
+
+gUnknown_Debug_083C139C:: @ 0x83C139C
+ .string "BATCH04ーGET$"
+
+gUnknown_Debug_083C13A8:: @ 0x83C13A8
+ .string "BATCH05ーGET$"
+
+gUnknown_Debug_083C13B4:: @ 0x83C13B4
+ .string "BATCH06ーGET$"
+
+gUnknown_Debug_083C13C0:: @ 0x83C13C0
+ .string "BATCH07ーGET$"
+
+gUnknown_Debug_083C13CC:: @ 0x83C13CC
+ .string "BATCH08ーGET$"
+
+gUnknown_Debug_083C13D8:: @ 0x83C13D8
+ .4byte gUnknown_Debug_083C1378, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1384, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1390, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C139C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C13A8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C13B4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C13C0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C13CC, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1418:: @ 0x83C1418
+ .string "T101ARRIVE$"
+
+gUnknown_Debug_083C1423:: @ 0x83C1423
+ .string "T102ARRIVE$"
+
+gUnknown_Debug_083C142E:: @ 0x83C142E
+ .string "T103ARRIVE$"
+
+gUnknown_Debug_083C1439:: @ 0x83C1439
+ .string "T104ARRIVE$"
+
+gUnknown_Debug_083C1444:: @ 0x83C1444
+ .string "T105ARRIVE$"
+
+gUnknown_Debug_083C144F:: @ 0x83C144F
+ .string "T106ARRIVE$"
+
+gUnknown_Debug_083C145A:: @ 0x83C145A
+ .string "T107ARRIVE$"
+
+ .align 2
+gUnknown_Debug_083C1465:: @ 0x83C1465
+ .4byte gUnknown_Debug_083C1418, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1423, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C142E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1439, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1444, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C144F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C145A, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C14A0:: @ 0x83C14A0
+ .string "C101ARRIVE$"
+
+gUnknown_Debug_083C14AB:: @ 0x83C14AB
+ .string "C102ARRIVE$"
+
+gUnknown_Debug_083C14B6:: @ 0x83C14B6
+ .string "C103ARRIVE$"
+
+gUnknown_Debug_083C14C1:: @ 0x83C14C1
+ .string "C104ARRIVE$"
+
+gUnknown_Debug_083C14CC:: @ 0x83C14CC
+ .string "C105ARRIVE$"
+
+gUnknown_Debug_083C14D7:: @ 0x83C14D7
+ .string "C106ARRIVE$"
+
+gUnknown_Debug_083C14E2:: @ 0x83C14E2
+ .string "C107ARRIVE$"
+
+gUnknown_Debug_083C14ED:: @ 0x83C14ED
+ .string "C108ARRIVE$"
+
+gUnknown_Debug_083C14F8:: @ 0x83C14F8
+ .string "C109ARRIVE$"
+
+ .align 2
+gUnknown_Debug_083C1503:: @ 0x83C1503
+ .4byte gUnknown_Debug_083C14A0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14AB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14B6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14C1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14CC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14D7, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14E2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14ED, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14F8, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C154C:: @ 0x83C154C
+ .string "SYSーPOKEMONーGET$"
+
+gUnknown_Debug_083C155C:: @ 0x83C155C
+ .string "SYSーZUKANーGET$"
+
+gUnknown_Debug_083C156A:: @ 0x83C156A
+ .string "SYSーPOKEGEARーGET$"
+
+gUnknown_Debug_083C157B:: @ 0x83C157B
+ .string "SYSーRIBBONーGET$"
+
+ .align 2
+gUnknown_Debug_083C158A:: @ 0x83C158A
+ .4byte gUnknown_Debug_083C154C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C155C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C156A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C157B, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C15AC:: @ 0x83C15AC
+ .string "SYSーGAMEーCLEAR$"
+
+gUnknown_Debug_083C15BB:: @ 0x83C15BB
+ .string "SYSーKAIWAーUSED$"
+
+gUnknown_Debug_083C15CA:: @ 0x83C15CA
+ .string "SYSーNOWーOYAJIーMEET$"
+
+gUnknown_Debug_083C15DD:: @ 0x83C15DD
+ .string "SYSーUSEーWAZAーFLASH$"
+
+gUnknown_Debug_083C15F0:: @ 0x83C15F0
+ .string "SYSーUSEーWAZAーKAIRIKI$"
+
+gUnknown_Debug_083C1605:: @ 0x83C1605
+ .string "SYSーWEATHERーCTRL$"
+
+gUnknown_Debug_083C1616:: @ 0x83C1616
+ .string "SYSーCYCLINGーROAD$"
+
+gUnknown_Debug_083C1627:: @ 0x83C1627
+ .string "SYSーSAFARIーMODE$"
+
+gUnknown_Debug_083C1637:: @ 0x83C1637
+ .string "SYSーCRUISEーMODE$"
+
+ .align 2
+gUnknown_Debug_083C1647:: @ 0x83C1647
+ .4byte gUnknown_Debug_083C15AC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C15BB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C15CA, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C15DD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C15F0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1605, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1616, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1627, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1637, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1690:: @ 0x83C1690
+ .string "SYSーTVーHOME$"
+
+gUnknown_Debug_083C169C:: @ 0x83C169C
+ .string "SYSーTVーWATCH$"
+
+gUnknown_Debug_083C16A9:: @ 0x83C16A9
+ .string "SYSーTVSTART$"
+
+gUnknown_Debug_083C16B5:: @ 0x83C16B5
+ .string "SYSーPOPWORDーINPUT$"
+
+gUnknown_Debug_083C16C7:: @ 0x83C16C7
+ .string "SYSーMIXーRECORD$"
+
+gUnknown_Debug_083C16D6:: @ 0x83C16D6
+ .string "SYSーCLOCKーSET$"
+
+gUnknown_Debug_083C16E4:: @ 0x83C16E4
+ .string "SYSーCAVEーSHIP$"
+
+gUnknown_Debug_083C16F2:: @ 0x83C16F2
+ .string "SYSーCAVEーWONDER$"
+
+gUnknown_Debug_083C1702:: @ 0x83C1702
+ .string "SYSーCAVEーBATTLE$"
+
+ .align 2
+gUnknown_Debug_083C1712:: @ 0x83C1712
+ .4byte gUnknown_Debug_083C1690, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C169C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C16A9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C16B5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C16C7, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C16D6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C16E4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C16F2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1702, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C175C:: @ 0x83C175C
+ .string "SYSーSPECIALーZUKAN$"
+
+gUnknown_Debug_083C176E:: @ 0x83C176E
+ .string "SYSーASASEーTIDE$"
+
+gUnknown_Debug_083C177D:: @ 0x83C177D
+ .string "SYSーRIBBONーGET$"
+
+gUnknown_Debug_083C178C:: @ 0x83C178C
+ .string "SYSーPASOーMAYUMI$"
+
+gUnknown_Debug_083C179C:: @ 0x83C179C
+ .string "SYSーEXDATAーENABLE$"
+
+gUnknown_Debug_083C17AE:: @ 0x83C17AE
+ .string "SYSーTENJIーANAWOHORU$"
+
+gUnknown_Debug_083C17C2:: @ 0x83C17C2
+ .string "SYSーTENJIーKAIRIKI$"
+
+gUnknown_Debug_083C17D4:: @ 0x83C17D4
+ .string "SYSーTENJIーWAIT$"
+
+gUnknown_Debug_083C17E3:: @ 0x83C17E3
+ .string "SYSーTENJIーSORAWOTOBU$"
+
+gUnknown_Debug_083C17F8:: @ 0x83C17F8
+ .4byte gUnknown_Debug_083C175C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C176E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C177D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C178C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C179C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C17AE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C17C2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C17D4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C17E3, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1840:: @ 0x83C1840
+ .string "SYSーENCーUPーITEM$"
+
+gUnknown_Debug_083C1850:: @ 0x83C1850
+ .string "SYSーENEーDOWNーITEM$"
+
+gUnknown_Debug_083C1862:: @ 0x83C1862
+ .string "SYSーKOKOROーEVENT$"
+
+gUnknown_Debug_083C1873:: @ 0x83C1873
+ .string "SYSーMOVEーPOKEーNEWS$"
+
+gUnknown_Debug_083C1886:: @ 0x83C1886
+ .string "SYSーASASEーITEM$"
+
+gUnknown_Debug_083C1895:: @ 0x83C1895
+ .string "SYSーBーDASH$"
+
+gUnknown_Debug_083C18A0:: @ 0x83C18A0
+ .string "SYSーCTRLーOBJーDELETE$"
+
+gUnknown_Debug_083C18B4:: @ 0x83C18B4
+ .string "$"
+
+gUnknown_Debug_083C18B5:: @ 0x83C18B5
+ .string "$"
+
+ .align 2
+gUnknown_Debug_083C18B8:: @ 0x83C18B8
+ .4byte gUnknown_Debug_083C1840, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1850, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1862, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1873, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1886, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1895, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C18A0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C18B4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C18B5, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1900:: @ 0x83C1900
+ .string "SYSーARRIVEーSUBMARINECAVE$"
+
+gUnknown_Debug_083C1919:: @ 0x83C1919
+ .string "SYSーARRIVEーBATTLETOWER$"
+
+gUnknown_Debug_083C1930:: @ 0x83C1930
+ .string "SYSーARRIVEーISLAND$"
+
+gUnknown_Debug_083C1942:: @ 0x83C1942
+ .string "SYSーARRIVEーLEAGUE$"
+
+gUnknown_Debug_083C1954:: @ 0x83C1954
+ .string "SYSーARRIVEーSORANOHASHIRA$"
+
+gUnknown_Debug_083C196D:: @ 0x83C196D
+ .string "$"
+
+gUnknown_Debug_083C196E:: @ 0x83C196E
+ .string "$"
+
+gUnknown_Debug_083C196F:: @ 0x83C196F
+ .string "$"
+
+gUnknown_Debug_083C1970:: @ 0x83C1970
+ .string "$"
+
+ .align 2
+gDebug_0x83C1974:: @ 0x83C1974
+ .4byte gUnknown_Debug_083C1900, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1919, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1930, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1942, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1954, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C196D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C196E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C196F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1970, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C19BC:: @ 0x83C19BC
+ .byte 0x08, 0x07, 0x09, 0x04, 0x09, 0x09, 0x09, 0x07, 0x05, 0x00
+
+gUnknown_Debug_083C19C6:: @ 0x83C19C6
+ .2byte 0x0807, 0x0808, 0x0809, 0x080a, 0x080b, 0x080c, 0x080d, 0x080e, 0x0000
+ .2byte 0x080f, 0x0810, 0x0811, 0x0812, 0x0813, 0x0814, 0x0815, 0x0000, 0x0000
+ .2byte 0x0816, 0x0817, 0x0818, 0x0819, 0x081a, 0x081b, 0x081c, 0x081d, 0x081e
+ .2byte 0x0800, 0x0801, 0x0802, 0x083b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+ .2byte 0x0804, 0x0805, 0x0806, 0x0828, 0x0829, 0x082a, 0x082b, 0x082c, 0x082d
+ .2byte 0x0830, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0837, 0x0838, 0x0839
+ .2byte 0x0836, 0x083a, 0x083b, 0x084b, 0x084c, 0x084f, 0x0850, 0x0851, 0x0852
+ .2byte 0x084d, 0x084e, 0x0853, 0x085d, 0x085f, 0x0860, 0x0861, 0x0000, 0x0000
+ .2byte 0x0847, 0x0848, 0x0849, 0x0854, 0x085e, 0x0000, 0x0000, 0x0000, 0x0000
+
+gDebug_0x83C1A68:: @ 0x83C1A68
+ .string "FVーBALL パート1$"
+
+ .align 2
+gUnknown_Debug_083C1A78:: @ 0x83C1A78
+ .4byte gDebug_0x83C1A68, debug_sub_808D8D8+1
+
+gUnknown_Debug_083C1A80:: @ 0x83C1A80
+ .string "FVーBALL1ー78$"
+
+gUnknown_Debug_083C1A8C:: @ 0x83C1A8C
+ .string "FVーBALL1ー133$"
+
+ .align 2
+gUnknown_Debug_083C1A9C:: @ 0x83C1A9C
+ .4byte gUnknown_Debug_083C1A80, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1A8C, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C1AAC:: @ 0x83C1AAC
+ .string "い "
+gUnknown_Debug_083C1AAE:: @ 0x83C1AAE
+ .string "ょえヘえ              "
+
+gUnknown_Debug_083C1AC0:: @ 0x83C1AC0
+ .string "ジムリーダー$"
+
+gUnknown_Debug_083C1AC7:: @ 0x83C1AC7
+ .string "してんのう$"
+
+gUnknown_Debug_083C1ACD:: @ 0x83C1ACD
+ .string "みつる/Champロード$"
+
+ .align 2
+gUnknown_Debug_083C1ADC:: @ 0x83C1ADC
+ .4byte gUnknown_Debug_083C1AC0, debug_sub_808CD08+1
+ .4byte gUnknown_Debug_083C1AC7, debug_sub_808CD60+1
+ .4byte gUnknown_Debug_083C1ACD, debug_sub_808CDB8+1
+
+gUnknown_Debug_083C1AF4:: @ 0x83C1AF4
+ .string "FTーGYMー01ーLEADER$"
+
+gUnknown_Debug_083C1B05:: @ 0x83C1B05
+ .string "FTーGYMー02ーLEADER$"
+
+gUnknown_Debug_083C1B16:: @ 0x83C1B16
+ .string "FTーGYMー03ーLEADER$"
+
+gUnknown_Debug_083C1B27:: @ 0x83C1B27
+ .string "FTーGYMー04ーLEADER$"
+
+gUnknown_Debug_083C1B38:: @ 0x83C1B38
+ .string "FTーGYMー05ーLEADER$"
+
+gUnknown_Debug_083C1B49:: @ 0x83C1B49
+ .string "FTーGYMー06ーLEADER$"
+
+gUnknown_Debug_083C1B5A:: @ 0x83C1B5A
+ .string "FTーGYMー07ーLEADER$"
+
+gUnknown_Debug_083C1B6B:: @ 0x83C1B6B
+ .string "FTーGYMー08ーLEADER$"
+
+gUnknown_Debug_083C1B7C:: @ 0x83C1B7C
+ .4byte gUnknown_Debug_083C1AF4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B05, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B16, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B27, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B38, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B49, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B5A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B6B, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1BBC:: @ 0x83C1BBC
+ .string "FTーSHITENー01$"
+
+gUnknown_Debug_083C1BC9:: @ 0x83C1BC9
+ .string "FTーSHITENー02$"
+
+gUnknown_Debug_083C1BD6:: @ 0x83C1BD6
+ .string "FTーSHITENー03$"
+
+gUnknown_Debug_083C1BE3:: @ 0x83C1BE3
+ .string "FTーSHITENー04$"
+
+gUnknown_Debug_083C1BF0:: @ 0x83C1BF0
+ .4byte gUnknown_Debug_083C1BBC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1BC9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1BD6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1BE3, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1C10:: @ 0x83C1C10
+ .string "FTーMITSURUー01ーCAVEーD1301$"
+
+ .align 2
+gUnknown_Debug_083C1C2C:: @ 0x83C1C2C
+ .4byte gUnknown_Debug_083C1C10, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C1C34:: @ 0x83C1C34
+ .string "くえあ "
+gUnknown_Debug_083C1C38:: @ 0x83C1C38
+ .string "“え’え,えCえGえOえSえZえ  iえjえkえlえ          mえ                "
+
+gUnknown_Debug_083C1C6E:: @ 0x83C1C6E
+ .string "120/119ばんどうろカクレオン$"
+
+gUnknown_Debug_083C1C80:: @ 0x83C1C80
+ .string "そのた1 / SUPPORTM/W$"
+
+gUnknown_Debug_083C1C92:: @ 0x83C1C92
+ .string "ODAMAKI/FIGHTER1$"
+
+gUnknown_Debug_083C1CA3:: @ 0x83C1CA3
+ .string "MITSURU/TENKI$"
+
+gUnknown_Debug_083C1CB1:: @ 0x83C1CB1
+ .string "そのた2 /DAIGO$"
+
+gUnknown_Debug_083C1CBD:: @ 0x83C1CBD
+ .string "POKE/POKEMON$"
+
+gUnknown_Debug_083C1CCA:: @ 0x83C1CCA
+ .string "MAMA/SUPPORT02$"
+
+gUnknown_Debug_083C1CD9:: @ 0x83C1CD9
+ .string "HAGI$"
+
+gUnknown_Debug_083C1CDE:: @ 0x83C1CDE
+ .string "SUPPORT01$"
+
+gUnknown_Debug_083C1CE8:: @ 0x83C1CE8
+ .4byte gUnknown_Debug_083C1C6E, debug_sub_808C85C+1
+ .4byte gUnknown_Debug_083C1C80, debug_sub_808C8B4+1
+ .4byte gUnknown_Debug_083C1C92, debug_sub_808C90C+1
+ .4byte gUnknown_Debug_083C1CA3, debug_sub_808C964+1
+ .4byte gUnknown_Debug_083C1CB1, debug_sub_808C9BC+1
+ .4byte gUnknown_Debug_083C1CBD, debug_sub_808CA14+1
+ .4byte gUnknown_Debug_083C1CCA, debug_sub_808CA6C+1
+ .4byte gUnknown_Debug_083C1CD9, debug_sub_808CAC4+1
+ .4byte gUnknown_Debug_083C1CDE, debug_sub_808CB1C+1
+
+gUnknown_Debug_083C1D30:: @ 0x83C1D30
+ .string "FVーKAKUREONBー01ーFIELDーR120$"
+
+gUnknown_Debug_083C1D4B:: @ 0x83C1D4B
+ .string "FVーKAKUREー01ーFIELDーR120$"
+
+gUnknown_Debug_083C1D63:: @ 0x83C1D63
+ .string "FVーKAKUREー02ーFIELDーR120$"
+
+gUnknown_Debug_083C1D7B:: @ 0x83C1D7B
+ .string "FVーKAKUREー03ーFIELDーR120$"
+
+gUnknown_Debug_083C1D93:: @ 0x83C1D93
+ .string "FVーKAKUREー04ーFIELDーR120$"
+
+gUnknown_Debug_083C1DAB:: @ 0x83C1DAB
+ .string "FVーKAKUREー05ーFIELDーR120$"
+
+gUnknown_Debug_083C1DC3:: @ 0x83C1DC3
+ .string "FVーKAKUREー06ーFIELDーR120$"
+
+gUnknown_Debug_083C1DDB:: @ 0x83C1DDB
+ .string "FVーKAKUREー01ーFIELDーR119$"
+
+gUnknown_Debug_083C1DF3:: @ 0x83C1DF3
+ .string "FVーKAKUREー02ーFIELDーR119$"
+
+ .align 2
+gUnknown_Debug_083C1E0C:: @ 0x83C1E0C
+ .4byte gUnknown_Debug_083C1D30, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1D4B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1D63, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1D7B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1D93, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1DAB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1DC3, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1DDB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1DF3, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1E54:: @ 0x83C1E54
+ .string "FVーBALLー01ーC107ーR0501$"
+
+gUnknown_Debug_083C1E6A:: @ 0x83C1E6A
+ .string "FVーWORKERM1ー04ーFIELDーC104$"
+
+gUnknown_Debug_083C1E84:: @ 0x83C1E84
+ .string "FVーSUBMARINEー06ーCAVEーD1101$"
+
+gUnknown_Debug_083C1E9F:: @ 0x83C1E9F
+ .string "FVーGUESTーALLーC106ーR0102$"
+
+gUnknown_Debug_083C1EB7:: @ 0x83C1EB7
+ .string "FVーHORIDASIー01ーC106ーR1106$"
+
+gUnknown_Debug_083C1ED1:: @ 0x83C1ED1
+ .string "FVーMIDDLEM1ー01ーR110ーR0101$"
+
+gUnknown_Debug_083C1EEB:: @ 0x83C1EEB
+ .string "FVーFUNEー01ーC102ーR0601$"
+
+gUnknown_Debug_083C1F01:: @ 0x83C1F01
+ .string "FVーSUPPORTWー01ーT101ーR0202$"
+
+gUnknown_Debug_083C1F1B:: @ 0x83C1F1B
+ .string "FVーSUPPORTMー01ーT101ーR0102$"
+
+ .align 2
+gUnknown_Debug_083C1F38:: @ 0x83C1F38
+ .4byte gUnknown_Debug_083C1E54, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1E6A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1E84, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1E9F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1EB7, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1ED1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1EEB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1F01, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1F1B, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1F80:: @ 0x83C1F80
+ .string "FVーODAMAKIー01ーFIELDーR101$"
+
+gUnknown_Debug_083C1F99:: @ 0x83C1F99
+ .string "FVーODAMAKIー01ーT101ーR0301$"
+
+gUnknown_Debug_083C1FB2:: @ 0x83C1FB2
+ .string "FVーODAMAKIーHYOKAーT101ーR0301$"
+
+gUnknown_Debug_083C1FCE:: @ 0x83C1FCE
+ .string "FVーODAMAKIーHYOKAーFIELDーR101$"
+
+gUnknown_Debug_083C1FEA:: @ 0x83C1FEA
+ .string "FVーODAMAKIーHYOKAーFIELDーR103$"
+
+gUnknown_Debug_083C2006:: @ 0x83C2006
+ .string "FVーODAMAKIー01ーC109ーR0105$"
+
+gUnknown_Debug_083C201F:: @ 0x83C201F
+ .string "FVーFIGHTERー01ーCAVEーD0201$"
+
+gUnknown_Debug_083C2038:: @ 0x83C2038
+ .string "FVーFIGHTERー01ーT106ーR0201$"
+
+gUnknown_Debug_083C2051:: @ 0x83C2051
+ .string "FVーFIGHTERー01ーFIELDーR116$"
+
+ .align 2
+gUnknown_Debug_083C206C:: @ 0x83C206C
+ .4byte gUnknown_Debug_083C1F80, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1F99, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1FB2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1FCE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1FEA, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2006, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C201F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2038, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2051, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C20B4:: @ 0x83C20B4
+ .string "FVーMITSURUー01ーFIELDーC101$"
+
+gUnknown_Debug_083C20CD:: @ 0x83C20CD
+ .string "FVーMITSURUー02ーCAVEーD1301$"
+
+gUnknown_Debug_083C20E6:: @ 0x83C20E6
+ .string "FVーMITSURUー01ーFIELDーC103$"
+
+gUnknown_Debug_083C20FF:: @ 0x83C20FF
+ .string "FVーMITSURUー01ーT106ーR0201$"
+
+gUnknown_Debug_083C2118:: @ 0x83C2118
+ .string "FVーMITSURUー01ーCAVEーD1301$"
+
+gUnknown_Debug_083C2131:: @ 0x83C2131
+ .string "FVーMITSURUー01ーC101ーR0201$"
+
+gUnknown_Debug_083C214A:: @ 0x83C214A
+ .string "FVーMITSURUー01ーFIELDーR102$"
+
+gUnknown_Debug_083C2163:: @ 0x83C2163
+ .string "FVーTENKIー01ーR119ーR101$"
+
+gUnknown_Debug_083C2179:: @ 0x83C2179
+ .string "FVーTENKIー01ーR119ーR102$"
+
+ .align 2
+gUnknown_Debug_083C2190:: @ 0x83C2190
+ .4byte gUnknown_Debug_083C20B4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C20CD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C20E6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C20FF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2118, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2131, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C214A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2163, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2179, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C21D8:: @ 0x83C21D8
+ .string "FVーDAIGOー01ーCAVEーD0504$"
+
+gUnknown_Debug_083C21EF:: @ 0x83C21EF
+ .string "FVーDAIGOー01ーFIELDーR128$"
+
+gUnknown_Debug_083C2206:: @ 0x83C2206
+ .string "FVーDAIGOー01ーFIELDーR118$"
+
+gUnknown_Debug_083C221D:: @ 0x83C221D
+ .string "FVーDAIGOー01ーC107ーR0501$"
+
+gUnknown_Debug_083C2234:: @ 0x83C2234
+ .string "FVーDAIGOー01ーFIELDーR120$"
+
+gUnknown_Debug_083C224B:: @ 0x83C224B
+ .string "FVーDAIGOー01ーFIELDーR108$"
+
+ .align 2
+gUnknown_Debug_083C2264:: @ 0x83C2264
+ .4byte gUnknown_Debug_083C21D8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C21EF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2206, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C221D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2234, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C224B, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2294:: @ 0x83C2294
+ .string "FVーPOKE1ー02ーCAVEーD1111$"
+
+gUnknown_Debug_083C22AB:: @ 0x83C22AB
+ .string "FVーPOKE1ー01ーCAVEーD0601$"
+
+gUnknown_Debug_083C22C2:: @ 0x83C22C2
+ .string "FVーPOKE1ー02ーCAVEーD0601$"
+
+gUnknown_Debug_083C22D9:: @ 0x83C22D9
+ .string "FVーPOKE1ー01ーFIELDーR101$"
+
+gUnknown_Debug_083C22F0:: @ 0x83C22F0
+ .string "FVーPOKE1ー01ーOPENINGーROOM01$"
+
+gUnknown_Debug_083C230B:: @ 0x83C230B
+ .string "FVーPOKE1ー02ーOPENINGーROOM01$"
+
+gUnknown_Debug_083C2326:: @ 0x83C2326
+ .string "FVーPOKE1ー01ーCAVEーD2308$"
+
+gUnknown_Debug_083C233D:: @ 0x83C233D
+ .string "FVーPOKEMONー01ーCAVEーD0201$"
+
+gUnknown_Debug_083C2356:: @ 0x83C2356
+ .string "FVーPOKEMONー01ーR104ーR0101$"
+
+ .align 2
+gUnknown_Debug_083C2370:: @ 0x83C2370
+ .4byte gUnknown_Debug_083C2294, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C22AB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C22C2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C22D9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C22F0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C230B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2326, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C233D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2356, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C23B8:: @ 0x83C23B8
+ .string "FVーMAMAー01ーFIELDーT101$"
+
+gUnknown_Debug_083C23CE:: @ 0x83C23CE
+ .string "FVーMAMAー01ーOPENINGーROOM02$"
+
+gUnknown_Debug_083C23E8:: @ 0x83C23E8
+ .string "FVーMAMAー01ーT101ーR0101$"
+
+gUnknown_Debug_083C23FE:: @ 0x83C23FE
+ .string "FVーMAMAー01ーT101ーR0201$"
+
+gUnknown_Debug_083C2414:: @ 0x83C2414
+ .string "FVーMAMAー02ーT101ーR0101$"
+
+gUnknown_Debug_083C242A:: @ 0x83C242A
+ .string "FVーMAMAー02ーT101ーR0201$"
+
+gUnknown_Debug_083C2440:: @ 0x83C2440
+ .string "FVーSUPPORTー02ーFIELDーR110$"
+
+gUnknown_Debug_083C2459:: @ 0x83C2459
+ .string "FVーSUPPORTー02ーFIELDーR119$"
+
+gUnknown_Debug_083C2472:: @ 0x83C2472
+ .string "FVーSUPPORTー02ーFIELDーT104$"
+
+ .align 2
+gUnknown_Debug_083C248C:: @ 0x83C248C
+ .4byte gUnknown_Debug_083C23B8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C23CE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C23E8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C23FE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2414, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C242A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2440, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2459, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2472, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C24D4:: @ 0x83C24D4
+ .string "FVーHAGIー01ーFIELDーR104$"
+
+gUnknown_Debug_083C24EA:: @ 0x83C24EA
+ .string "FVーHAGIー01ーR104ーR0101$"
+
+gUnknown_Debug_083C2500:: @ 0x83C2500
+ .string "FVーHAGIー01ーFIELDーT103$"
+
+gUnknown_Debug_083C2516:: @ 0x83C2516
+ .string "FVーHAGIー01ーFIELDーR109$"
+
+gUnknown_Debug_083C252C:: @ 0x83C252C
+ .string "FVーHAGIー01ーC102ーR0601$"
+
+gUnknown_Debug_083C2542:: @ 0x83C2542
+ .string "FVーHAGIー01ーC102ーR0101$"
+
+gUnknown_Debug_083C2558:: @ 0x83C2558
+ .string "FVーHAGIー01ーCAVEーD0201$"
+
+gUnknown_Debug_083C256E:: @ 0x83C256E
+ .string "FVーHAGIー01ーFIELDーR116$"
+
+gUnknown_Debug_083C2584:: @ 0x83C2584
+ .string "FVーHAGIー01ーSPーSHIP01$"
+
+ .align 2
+gUnknown_Debug_083C259C:: @ 0x83C259C
+ .4byte gUnknown_Debug_083C24D4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C24EA, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2500, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2516, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C252C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2542, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2558, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C256E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2584, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C25E4:: @ 0x83C25E4
+ .string "FVーSUPPORTー01ーT101ーR0301$"
+
+gUnknown_Debug_083C25FD:: @ 0x83C25FD
+ .string "FVーSUPPORTー01ーC109ーR0105$"
+
+gUnknown_Debug_083C2616:: @ 0x83C2616
+ .string "FVーSUPPORTー01ーFIELDーC104$"
+
+gUnknown_Debug_083C262F:: @ 0x83C262F
+ .string "FVーSUPPORTー01ーFIELDーC106$"
+
+gUnknown_Debug_083C2648:: @ 0x83C2648
+ .string "FVーSUPPORTー01ーFIELDーR103$"
+
+gUnknown_Debug_083C2661:: @ 0x83C2661
+ .string "FVーSUPPORTー01ーFIELDーR110$"
+
+gUnknown_Debug_083C267A:: @ 0x83C267A
+ .string "FVーSUPPORTー01ーFIELDーR119$"
+
+gUnknown_Debug_083C2693:: @ 0x83C2693
+ .string "FVーSUPPORTー01ーFIELDーT104$"
+
+gUnknown_Debug_083C26AC:: @ 0x83C26AC
+ .string "FVーSUPPORTー01ーFIELDーT102$"
+
+ .align 2
+gUnknown_Debug_083C26C8:: @ 0x83C26C8
+ .4byte gUnknown_Debug_083C25E4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C25FD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2616, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C262F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2648, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2661, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C267A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2693, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C26AC, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C2710:: @ 0x83C2710
+ .string "けけけけかけけけけ "
+gUnknown_Debug_083C271A:: @ 0x83C271A
+ .string "aうPうbうeうfうgうhうiうjうNうhいZうプうHうネうイうXい{0xF8}いVいWいィうゥうェうベうらうりうンうbい▶いやうようコうツうテうワうヲうだうぢうLうMうRうSう      iいmいxいzいÖいÜいおうミうムう:いöいüい{0xF7}いせうそうボうパう1うnいoいpいqいぽうナうマうロう♀うルうブうんうQうYいビうウう0うYう"
+
+gUnknown_Debug_083C27BC:: @ 0x83C27BC
+ .string "FEひでんわざ/デボンかんれん$"
+
+gUnknown_Debug_083C27CC:: @ 0x83C27CC
+ .string "FEだいじなアイテムPART1$"
+
+gUnknown_Debug_083C27DC:: @ 0x83C27DC
+ .string "そのた1$"
+
+gUnknown_Debug_083C27E1:: @ 0x83C27E1
+ .string "MITSURU/DOOR$"
+
+gUnknown_Debug_083C27EE:: @ 0x83C27EE
+ .string "カラクリやしき10のやじるし/GYM07$"
+
+gUnknown_Debug_083C2803:: @ 0x83C2803
+ .string "SUPPORT/そのた4$"
+
+gUnknown_Debug_083C2810:: @ 0x83C2810
+ .string "DAISUKI/そのた5$"
+
+gUnknown_Debug_083C281D:: @ 0x83C281D
+ .string "そのた2$"
+
+gUnknown_Debug_083C2822:: @ 0x83C2822
+ .string "そのた6$"
+
+ .align 2
+gUnknown_Debug_083C2828:: @ 0x83C2828
+ .4byte gUnknown_Debug_083C27BC, debug_sub_808C3B0+1
+ .4byte gUnknown_Debug_083C27CC, debug_sub_808C408+1
+ .4byte gUnknown_Debug_083C27DC, debug_sub_808C460+1
+ .4byte gUnknown_Debug_083C27E1, debug_sub_808C4B8+1
+ .4byte gUnknown_Debug_083C27EE, debug_sub_808C510+1
+ .4byte gUnknown_Debug_083C2803, debug_sub_808C568+1
+ .4byte gUnknown_Debug_083C2810, debug_sub_808C5C0+1
+ .4byte gUnknown_Debug_083C281D, debug_sub_808C618+1
+ .4byte gUnknown_Debug_083C2822, debug_sub_808C670+1
+
+gUnknown_Debug_083C2870:: @ 0x83C2870
+ .string "FEーHWAZA01ーGET$"
+
+gUnknown_Debug_083C287F:: @ 0x83C287F
+ .string "FEーHWAZA02ー01ーFIELDR119$"
+
+gUnknown_Debug_083C2897:: @ 0x83C2897
+ .string "FEーHWAZA03ーGET$"
+
+gUnknown_Debug_083C28A6:: @ 0x83C28A6
+ .string "FEーHWAZA04ー01ーT106ーR0201$"
+
+gUnknown_Debug_083C28BF:: @ 0x83C28BF
+ .string "FEーHWAZA05ー01ーCAVEーD0502$"
+
+gUnknown_Debug_083C28D8:: @ 0x83C28D8
+ .string "FEーHWAZA04ー01ーC103ーR0301$"
+
+gUnknown_Debug_083C28F1:: @ 0x83C28F1
+ .string "FEーDEBONーNIMOTSUーRETURN$"
+
+gUnknown_Debug_083C2909:: @ 0x83C2909
+ .string "FEーDEBONー01ーFIELDーC104$"
+
+gUnknown_Debug_083C2920:: @ 0x83C2920
+ .string "FEーDEBONー02ーFIELDーC104$"
+
+ .align 2
+gUnknown_Debug_083C2938:: @ 0x83C2938
+ .4byte gUnknown_Debug_083C2870, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C287F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2897, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C28A6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C28BF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C28D8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C28F1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2909, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2920, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2980:: @ 0x83C2980
+ .string "FEーCYCLEー01ーP01ーP01ーC103ーR0201$"
+
+gUnknown_Debug_083C299F:: @ 0x83C299F
+ .string "FEーSCOOPー01ーP01ーFIELDーR115$"
+
+gUnknown_Debug_083C29BA:: @ 0x83C29BA
+ .string "FEーROPEー01ーP01ーFIELDーR114$"
+
+gUnknown_Debug_083C29D4:: @ 0x83C29D4
+ .string "FEーKAMAー01ーP01ーFIELDーR119$"
+
+gUnknown_Debug_083C29EE:: @ 0x83C29EE
+ .string "FEーZYOUROーGET$"
+
+gUnknown_Debug_083C29FC:: @ 0x83C29FC
+ .string "FEーCUBECASEーGET$"
+
+gUnknown_Debug_083C2A0C:: @ 0x83C2A0C
+ .string "FEーBORONOTURIZAOーGET$"
+
+gUnknown_Debug_083C2A21:: @ 0x83C2A21
+ .string "FEーIITURIZAOーGET$"
+
+gUnknown_Debug_083C2A32:: @ 0x83C2A32
+ .string "FEーSUGOITURIZAOーGET$"
+
+ .align 2
+gUnknown_Debug_083C2A48:: @ 0x83C2A48
+ .4byte gUnknown_Debug_083C2980, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C299F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C29BA, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C29D4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C29EE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C29FC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2A0C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2A21, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2A32, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2A90:: @ 0x83C2A90
+ .string "FEーBOSSー01ーCAVEーD0701$"
+
+gUnknown_Debug_083C2AA6:: @ 0x83C2AA6
+ .string "FEーTANTIKIーRETURN$"
+
+gUnknown_Debug_083C2AB8:: @ 0x83C2AB8
+ .string "FEーPOKE1ー01ーCAVEーD1111$"
+
+gUnknown_Debug_083C2ACF:: @ 0x83C2ACF
+ .string "FEーPOKE1ー01ーCAVEーD1206$"
+
+gUnknown_Debug_083C2AE6:: @ 0x83C2AE6
+ .string "FEーSHOPー01ーC104ーFS01$"
+
+gUnknown_Debug_083C2AFB:: @ 0x83C2AFB
+ .string "FEーHUNENOTIKETTーGET$"
+
+gUnknown_Debug_083C2B0F:: @ 0x83C2B0F
+ .string "FEーKAKUREー01ーFIELDーC105$"
+
+gUnknown_Debug_083C2B27:: @ 0x83C2B27
+ .string "FEーKASEKIーRETURN$"
+
+gUnknown_Debug_083C2B38:: @ 0x83C2B38
+ .string "FEーWINー01ーSPーSHIP01$"
+
+gUnknown_Debug_083C2B4C:: @ 0x83C2B4C
+ .4byte gUnknown_Debug_083C2A90, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2AA6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2AB8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2ACF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2AE6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2AFB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2B0F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2B27, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2B38, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2B94:: @ 0x83C2B94
+ .string "FEーMITSURUー01ーT106ーR0201$"
+
+gUnknown_Debug_083C2BAD:: @ 0x83C2BAD
+ .string "FEーMITSURUー01ーCAVEーD1301$"
+
+gUnknown_Debug_083C2BC6:: @ 0x83C2BC6
+ .string "FEーMITSURUー02ーFIELDーC103$"
+
+gUnknown_Debug_083C2BDF:: @ 0x83C2BDF
+ .string "FEーMITSURUー02ーT106ーR0201$"
+
+gUnknown_Debug_083C2BF8:: @ 0x83C2BF8
+ .string "FEーMITSURUー01ーFIELDーC103$"
+
+gUnknown_Debug_083C2C11:: @ 0x83C2C11
+ .string "FEーDOORーOPENー01ーCAVEーD1712$"
+
+gUnknown_Debug_083C2C2C:: @ 0x83C2C2C
+ .string "FEーDOORーOPENー02ーCAVEーD1712$"
+
+gUnknown_Debug_083C2C47:: @ 0x83C2C47
+ .string "FEーDOORーOPENー04ーCAVEーD1712$"
+
+gUnknown_Debug_083C2C62:: @ 0x83C2C62
+ .string "FEーDOORーOPENー06ーCAVEーD1712$"
+
+ .align 2
+gUnknown_Debug_083C2C80:: @ 0x83C2C80
+ .4byte gUnknown_Debug_083C2B94, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2BAD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2BC6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2BDF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2BF8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2C11, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2C2C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2C47, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2C62, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2CC8:: @ 0x83C2CC8
+ .string "FEーKARAKURI10ーSWITCHー01$"
+
+gUnknown_Debug_083C2CE0:: @ 0x83C2CE0
+ .string "FEーKARAKURI10ーSWITCHー02$"
+
+gUnknown_Debug_083C2CF8:: @ 0x83C2CF8
+ .string "FEーKARAKURI10ーSWITCHー03$"
+
+gUnknown_Debug_083C2D10:: @ 0x83C2D10
+ .string "FEーKARAKURI10ーSWITCHー04$"
+
+gUnknown_Debug_083C2D28:: @ 0x83C2D28
+ .string "FEーKARAKURI10ーSWITCHー05$"
+
+gUnknown_Debug_083C2D40:: @ 0x83C2D40
+ .string "FEーGYM07ーSWITCHー01$"
+
+gUnknown_Debug_083C2D53:: @ 0x83C2D53
+ .string "FEーGYM07ーSWITCHー02$"
+
+gUnknown_Debug_083C2D66:: @ 0x83C2D66
+ .string "FEーGYM07ーSWITCHー03$"
+
+gUnknown_Debug_083C2D79:: @ 0x83C2D79
+ .string "FEーGYM07ーSWITCHー04$"
+
+gUnknown_Debug_083C2D8C:: @ 0x83C2D8C
+ .4byte gUnknown_Debug_083C2CC8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2CE0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2CF8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2D10, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2D28, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2D40, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2D53, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2D66, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2D79, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2DD4:: @ 0x83C2DD4
+ .string "FEーSUPPORTー01ーFIELDーR103$"
+
+gUnknown_Debug_083C2DED:: @ 0x83C2DED
+ .string "FEーSUPPORTー01ーFIELDーC106$"
+
+gUnknown_Debug_083C2E06:: @ 0x83C2E06
+ .string "FEーSUPPORTー01ーFIELDーR104$"
+
+gUnknown_Debug_083C2E1F:: @ 0x83C2E1F
+ .string "FEーSUPPORTー02ーFIELDーC106$"
+
+gUnknown_Debug_083C2E38:: @ 0x83C2E38
+ .string "FEーSUPPORTー01ーT101ーR0202$"
+
+gUnknown_Debug_083C2E51:: @ 0x83C2E51
+ .string "FEーMAMAー01ーP01ーT101ーR0101$"
+
+gUnknown_Debug_083C2E6B:: @ 0x83C2E6B
+ .string "FEーCLOCKーSET$"
+
+gUnknown_Debug_083C2E78:: @ 0x83C2E78
+ .string "FEーODAMAKIー01ーP01ーT101ーR03$"
+
+gUnknown_Debug_083C2E93:: @ 0x83C2E93
+ .string "FEーPAPAー01ーP01ーC101ーR0201$"
+
+ .align 2
+gUnknown_Debug_083C2EB0:: @ 0x83C2EB0
+ .4byte gUnknown_Debug_083C2DD4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2DED, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E06, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E1F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E38, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E51, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E6B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E78, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E93, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2EF8:: @ 0x83C2EF8
+ .string "FEーDAISUKIーGOODSーFLAG01$"
+
+gUnknown_Debug_083C2F10:: @ 0x83C2F10
+ .string "FEーDAISUKIーGOODSーFLAG02$"
+
+gUnknown_Debug_083C2F28:: @ 0x83C2F28
+ .string "FEーDAISUKIーGOODSーFLAG03$"
+
+gUnknown_Debug_083C2F40:: @ 0x83C2F40
+ .string "FEーDAISUKIーGOODSーFLAG04$"
+
+gUnknown_Debug_083C2F58:: @ 0x83C2F58
+ .string "FEーDAISUKIーGOODSーFLAG05$"
+
+gUnknown_Debug_083C2F70:: @ 0x83C2F70
+ .string "FEーBASHAー01ーP01ーFIELDーC101ー$"
+
+gUnknown_Debug_083C2F8C:: @ 0x83C2F8C
+ .string "FEーBASHAー01ーP02ーFIELDーC101ー$"
+
+gUnknown_Debug_083C2FA8:: @ 0x83C2FA8
+ .string "FEーBALLー01ーP01ーSPーCONTEST$"
+
+gUnknown_Debug_083C2FC2:: @ 0x83C2FC2
+ .string "FEーWOMAN2ー01ーP01ーT101ーR0201$"
+
+ .align 2
+gUnknown_Debug_083C2FE0:: @ 0x83C2FE0
+ .4byte gUnknown_Debug_083C2EF8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2F10, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2F28, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2F40, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2F58, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2F70, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2F8C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2FA8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2FC2, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C3028:: @ 0x83C3028
+ .string "FEーSOUKOーOPENーCAVEーD1704$"
+
+gUnknown_Debug_083C3041:: @ 0x83C3041
+ .string "FEーSORAISIー01ーCAVEーD0101$"
+
+gUnknown_Debug_083C305A:: @ 0x83C305A
+ .string "FEーMAYUMIー01ーーR114ーR0201$"
+
+gUnknown_Debug_083C3073:: @ 0x83C3073
+ .string "FEーKUSUNOKIー01ーC102ーR0601$"
+
+gUnknown_Debug_083C308D:: @ 0x83C308D
+ .string "FEーOLDWOMAN1ー01ーCAVEーD0808$"
+
+gUnknown_Debug_083C30A8:: @ 0x83C30A8
+ .string "FEーTRAINERM1ー01ーC109ーR0206$"
+
+gUnknown_Debug_083C30C3:: @ 0x83C30C3
+ .string "FEーSOONANOーTAMAGOーGET$"
+
+gUnknown_Debug_083C30D9:: @ 0x83C30D9
+ .string "FEーDASHーSHOESーGET$"
+
+gUnknown_Debug_083C30EB:: @ 0x83C30EB
+ .string "FEーDEBONSUKOOPUーGET$"
+
+ .align 2
+gUnknown_Debug_083C3100:: @ 0x83C3100
+ .4byte gUnknown_Debug_083C3028, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3041, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C305A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3073, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C308D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C30A8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C30C3, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C30D9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C30EB, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C3148:: @ 0x83C3148
+ .string "FEーSTUDYM1ー01ーP01ーT101R0301$"
+
+gUnknown_Debug_083C3164:: @ 0x83C3164
+ .string "FEーWORKERM1ー01ーC103ーR0201$"
+
+gUnknown_Debug_083C317E:: @ 0x83C317E
+ .string "FEーHIMITSUーGET$"
+
+gUnknown_Debug_083C318D:: @ 0x83C318D
+ .string "$"
+
+gUnknown_Debug_083C318E:: @ 0x83C318E
+ .string "$"
+
+gUnknown_Debug_083C318F:: @ 0x83C318F
+ .string "$"
+
+gUnknown_Debug_083C3190:: @ 0x83C3190
+ .string "$"
+
+gUnknown_Debug_083C3191:: @ 0x83C3191
+ .string "$"
+
+gUnknown_Debug_083C3192:: @ 0x83C3192
+ .string "$"
+
+ .align 2
+gUnknown_Debug_083C3194:: @ 0x83C3194
+ .4byte gUnknown_Debug_083C3148, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3164, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C317E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C318D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C318E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C318F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3190, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3191, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3192, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C31DC:: @ 0x83C31DC
+ .byte 9, 9, 9, 9, 9, 9, 9, 9, 3, 0
+
+ @ This is not a string. I don't feel like converting it right now.
+gUnknown_Debug_83C31E6:: @ 0x83C31E6
+ .string "グ ホ レ ハ ヘ ヒ ゾ ズ ゼ コ サ シ ス セ ソ ああo ブ ゴ よあゥ ム  あもあらあさあ{0xF7} フ ン D G ふあ: Ä Ö Ü H I J K L ト ナ ニ ヌ ェ ほあみあやあゆあっ ア イ オ N O P Q R ウ エ カ キ ▶ ä ォ そあうあきあこあつあへあク ケ タ             "
+
+gUnknown_Debug_083C3288:: @ 0x83C3288
+ .string "CYCLEかんれん$"
+
+gUnknown_Debug_083C3292:: @ 0x83C3292
+ .string "おおきさくらべ$"
+
+gUnknown_Debug_083C329A:: @ 0x83C329A
+ .string "カウンタ$"
+
+gUnknown_Debug_083C329F:: @ 0x83C329F
+ .string "そのた1$"
+
+gUnknown_Debug_083C32A4:: @ 0x83C32A4
+ .string "そのた2$"
+
+ .align 2
+gUnknown_Debug_083C32AC:: @ 0x83C32AC
+ .4byte gUnknown_Debug_083C3288, debug_sub_808E400+1
+ .4byte gUnknown_Debug_083C3292, debug_sub_808E458+1
+ .4byte gUnknown_Debug_083C329A, debug_sub_808E4B0+1
+ .4byte gUnknown_Debug_083C329F, debug_sub_808E508+1
+ .4byte gUnknown_Debug_083C32A4, debug_sub_808E560+1
+
+gUnknown_Debug_083C32D4:: @ 0x83C32D4
+ .string "WKーCYCLEーROADーHIT$"
+
+gUnknown_Debug_083C32E6:: @ 0x83C32E6
+ .string "WKーCYCLEーROADーTIMエ1$"
+
+gUnknown_Debug_083C32FA:: @ 0x83C32FA
+ .string "WKーCYCLEーROADーTIMエ2$"
+
+gUnknown_Debug_083C330E:: @ 0x83C330E
+ .string "WKーSIZEーKINOKOKOーOYAJI$"
+
+gUnknown_Debug_083C3325:: @ 0x83C3325
+ .string "WKーSIZEーNAMAZOーOYAJI$"
+
+gUnknown_Debug_083C333A:: @ 0x83C333A
+ .string "WKーSPRAYーCOUNT$"
+
+gUnknown_Debug_083C3349:: @ 0x83C3349
+ .string "WKーICEーCOUNT$"
+
+gUnknown_Debug_083C3356:: @ 0x83C3356
+ .string "WKーASHーGATHERーCOUNT$"
+
+gUnknown_Debug_083C336A:: @ 0x83C336A
+ .string "WKーCRUISEーCOUNT$"
+
+gUnknown_Debug_083C337A:: @ 0x83C337A
+ .string "WKーFRIENDLYーSTEPーCOUNT$"
+
+gUnknown_Debug_083C3391:: @ 0x83C3391
+ .string "WKーPOISONーSTEPーCOUNT$"
+
+gUnknown_Debug_083C33A6:: @ 0x83C33A6
+ .string "WKRECYCLEーGOODS$"
+
+gUnknown_Debug_083C33B6:: @ 0x83C33B6
+ .string "WKーFIRSTーPOKE$"
+
+gUnknown_Debug_083C33C4:: @ 0x83C33C4
+ .string "WKーMABOROSIRNDーH$"
+
+gUnknown_Debug_083C33D5:: @ 0x83C33D5
+ .string "WKーMABOROSIRNDーL$"
+
+gUnknown_Debug_083C33E6:: @ 0x83C33E6
+ .string "EVーONEーDAYーWORK$"
+
+gUnknown_Debug_083C33F6:: @ 0x83C33F6
+ .string "EVーFANWORK$"
+
+gUnknown_Debug_083C3401:: @ 0x83C3401
+ .string "EVーFANTIME$"
+
+gUnknown_Debug_083C340C:: @ 0x83C340C
+ .string "WKーKARAKURIーLEVEL$"
+
+gUnknown_Debug_083C341E:: @ 0x83C341E
+ .string "WKーPOKELOTーPRIZE$"
+
+gUnknown_Debug_083C342F:: @ 0x83C342F
+ .string "WKーSPECIALーZUKN$"
+
+gUnknown_Debug_083C343F:: @ 0x83C343F
+ .string "WKーHYOUKAーDAYS$"
+
+gUnknown_Debug_083C344E:: @ 0x83C344E
+ .string "WKーPOKELOTーRND1$"
+
+gUnknown_Debug_083C345E:: @ 0x83C345E
+ .string "WKーPOKELOTーRND2$"
+
+gUnknown_Debug_083C346E:: @ 0x83C346E
+ .string "WKーBASEーMAPNO$"
+
+ .align 2
+gUnknown_Debug_083C347C:: @ 0x83C347C
+ .4byte gUnknown_Debug_083C32D4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C32E6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C32FA, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C3494::
+ .4byte gUnknown_Debug_083C330E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3325, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C34A4::
+ .4byte gUnknown_Debug_083C333A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3349, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3356, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C336A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C337A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3391, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C34D4::
+ .4byte gUnknown_Debug_083C33A6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C33B6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C33C4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C33D5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C33E6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C33F6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3401, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C340C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C341E, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C351C::
+ .4byte gUnknown_Debug_083C342F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C343F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C344E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C345E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C346E, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C3544:: @ 0x83C3544
+ .string "ういかけお "
+gUnknown_Debug_083C354A::
+ .string "らぞりぞるぞ            びぞぽぞ              むぞめぞぶぞぼぞれぞろぞ      みぞもぞやぞゆぞぞぞだぞぢぞでぞどぞばぞべぞぱぞぴぞよぞ        "
+
+gUnknown_Debug_083C35A4:: @ 0x83C35A4
+ .string "OBJCHRWORK0ー8$"
+
+gUnknown_Debug_083C35B2:: @ 0x83C35B2
+ .string "OBJCHRWORK9ー15$"
+
+ .align 2
+gUnknown_Debug_083C35C4:: @ 0x83C35C4
+ .4byte gUnknown_Debug_083C35A4, debug_sub_808E9A0+1
+ .4byte gUnknown_Debug_083C35B2, debug_sub_808E9F8+1
+
+gUnknown_Debug_083C35D4:: @ 0x83C35D4
+ .string "OBJCHRWORK1$"
+
+gUnknown_Debug_083C35E0:: @ 0x83C35E0
+ .string "OBJCHRWORK2$"
+
+gUnknown_Debug_083C35EC:: @ 0x83C35EC
+ .string "OBJCHRWORK3$"
+
+gUnknown_Debug_083C35F8:: @ 0x83C35F8
+ .string "OBJCHRWORK4$"
+
+gUnknown_Debug_083C3604:: @ 0x83C3604
+ .string "OBJCHRWORK5$"
+
+gUnknown_Debug_083C3610:: @ 0x83C3610
+ .string "OBJCHRWORK6$"
+
+gUnknown_Debug_083C361C:: @ 0x83C361C
+ .string "OBJCHRWORK7$"
+
+gUnknown_Debug_083C3628:: @ 0x83C3628
+ .string "OBJCHRWORK8$"
+
+gUnknown_Debug_083C3634:: @ 0x83C3634
+ .string "OBJCHRWORK9$"
+
+gUnknown_Debug_083C3640:: @ 0x83C3640
+ .string "OBJCHRWORK10$"
+
+gUnknown_Debug_083C364D:: @ 0x83C364D
+ .string "OBJCHRWORK11$"
+
+gUnknown_Debug_083C365A:: @ 0x83C365A
+ .string "OBJCHRWORK12$"
+
+gUnknown_Debug_083C3667:: @ 0x83C3667
+ .string "OBJCHRWORK13$"
+
+gUnknown_Debug_083C3674:: @ 0x83C3674
+ .string "OBJCHRWORK14$"
+
+gUnknown_Debug_083C3681:: @ 0x83C3681
+ .string "OBJCHRWORK15$"
+
+gUnknown_Debug_083C368E:: @ 0x83C368E
+ .string "OBJCHRWORK16$"
+
+ .align 2
+gUnknown_Debug_083C369C:: @ 0x83C369C
+ .4byte gUnknown_Debug_083C35D4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C35E0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C35EC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C35F8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3604, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3610, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C361C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3628, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3634, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C36E4::
+ .4byte gUnknown_Debug_083C3640, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C364D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C365A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3667, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3674, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3681, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C368E, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C371C:: @ 0x83C371C
+ .string "けき"
+gUnknown_Debug_083C371E:: @ 0x83C371E
+ .string "たぞちぞつぞてぞとぞなぞにぞぬぞねぞのぞはぞひぞふぞへぞほぞまぞ    "
+
+gUnknown_Debug_083C3742:: @ 0x83C3742
+ .string "SP$"
+
+gUnknown_Debug_083C3745:: @ 0x83C3745
+ .string "ルーム R110 PART1/カラクリ$"
+
+gUnknown_Debug_083C3759:: @ 0x83C3759
+ .string "ルーム R110 PART2$"
+
+gUnknown_Debug_083C3768:: @ 0x83C3768
+ .string "ルーム ロード$"
+
+gUnknown_Debug_083C3770:: @ 0x83C3770
+ .string "ソノタ1$"
+
+gUnknown_Debug_083C3775:: @ 0x83C3775
+ .string "ソノタ2$"
+
+ .align 2
+gUnknown_Debug_083C377C:: @ 0x83C377C
+ .4byte gUnknown_Debug_083C3742, debug_sub_808E054+1
+ .4byte gUnknown_Debug_083C3745, debug_sub_808E0AC+1
+ .4byte gUnknown_Debug_083C3759, debug_sub_808E104+1
+ .4byte gUnknown_Debug_083C3768, debug_sub_808E15C+1
+ .4byte gUnknown_Debug_083C3770, debug_sub_808E1B4+1
+ .4byte gUnknown_Debug_083C3775, debug_sub_808E20C+1
+
+gUnknown_Debug_083C37AC:: @ 0x83C37AC
+ .string "WKーSCENEーSPーCONTEST$"
+
+gUnknown_Debug_083C37C0:: @ 0x83C37C0
+ .string "WKーSCENEーSPーPC$"
+
+gUnknown_Debug_083C37CF:: @ 0x83C37CF
+ .string "WKーSCENEーSPーCONTEST03$"
+
+gUnknown_Debug_083C37E5:: @ 0x83C37E5
+ .string "WKーSCENEーSPーCONTESTITEM$"
+
+gUnknown_Debug_083C37FD:: @ 0x83C37FD
+ .string "WKーSCENEーSPーOPENING$"
+
+gUnknown_Debug_083C3811:: @ 0x83C3811
+ .string "WKーSCENEーSPーSHIP01$"
+
+gUnknown_Debug_083C3824:: @ 0x83C3824
+ .string "$"
+
+gUnknown_Debug_083C3825:: @ 0x83C3825
+ .string "$"
+
+gUnknown_Debug_083C3826:: @ 0x83C3826
+ .string "$"
+
+gUnknown_Debug_083C3827:: @ 0x83C3827
+ .string "WKーSCENEーR110ーR0101$"
+
+gUnknown_Debug_083C383B:: @ 0x83C383B
+ .string "WKーSCENEーR110ーR0102$"
+
+gUnknown_Debug_083C384F:: @ 0x83C384F
+ .string "WKーSCENEーR110ーR0103$"
+
+gUnknown_Debug_083C3863:: @ 0x83C3863
+ .string "WKーKARAKURIーDAIOU$"
+
+gUnknown_Debug_083C3875:: @ 0x83C3875
+ .string "WKーSCENEーSHISEN$"
+
+gUnknown_Debug_083C3885:: @ 0x83C3885
+ .string "$"
+
+gUnknown_Debug_083C3886:: @ 0x83C3886
+ .string "$"
+
+gUnknown_Debug_083C3887:: @ 0x83C3887
+ .string "$"
+
+gUnknown_Debug_083C3888:: @ 0x83C3888
+ .string "$"
+
+gUnknown_Debug_083C3889:: @ 0x83C3889
+ .string "WKーSCENEーR110ーR0104$"
+
+gUnknown_Debug_083C389D:: @ 0x83C389D
+ .string "WKーSCENEーR110ーR0105$"
+
+gUnknown_Debug_083C38B1:: @ 0x83C38B1
+ .string "WKーSCENEーR110ーR0106$"
+
+gUnknown_Debug_083C38C5:: @ 0x83C38C5
+ .string "WKーSCENEーR110ーR0107$"
+
+gUnknown_Debug_083C38D9:: @ 0x83C38D9
+ .string "WKーSCENEーR110ーR0108$"
+
+gUnknown_Debug_083C38ED:: @ 0x83C38ED
+ .string "WKーSCENEーR110ーR0109$"
+
+gUnknown_Debug_083C3901:: @ 0x83C3901
+ .string "WKーSCENEーR110ーR0110$"
+
+gUnknown_Debug_083C3915:: @ 0x83C3915
+ .string "WKーSCENEーR110ーR0111$"
+
+gUnknown_Debug_083C3929:: @ 0x83C3929
+ .string "WKーSCENEー02ーR110ーR0110$"
+
+gUnknown_Debug_083C3940:: @ 0x83C3940
+ .string "WKーSCENEーR104ーR0101$"
+
+gUnknown_Debug_083C3954:: @ 0x83C3954
+ .string "WKーSCENEーR113ーR0101$"
+
+gUnknown_Debug_083C3968:: @ 0x83C3968
+ .string "$"
+
+gUnknown_Debug_083C3969:: @ 0x83C3969
+ .string "$"
+
+gUnknown_Debug_083C396A:: @ 0x83C396A
+ .string "$"
+
+gUnknown_Debug_083C396B:: @ 0x83C396B
+ .string "$"
+
+gUnknown_Debug_083C396C:: @ 0x83C396C
+ .string "$"
+
+gUnknown_Debug_083C396D:: @ 0x83C396D
+ .string "$"
+
+gUnknown_Debug_083C396E:: @ 0x83C396E
+ .string "$"
+
+gUnknown_Debug_083C396F:: @ 0x83C396F
+ .string "WKーSCENEーBASEーGDOODS$"
+
+gUnknown_Debug_083C3984:: @ 0x83C3984
+ .string "WKーSCENEーHAGIーFUNE$"
+
+gUnknown_Debug_083C3997:: @ 0x83C3997
+ .string "WKーSCENEーFUNEーPOS$"
+
+gUnknown_Debug_083C39A9:: @ 0x83C39A9
+ .string "WKーSCENEーBASEーMAKE$"
+
+gUnknown_Debug_083C39BC:: @ 0x83C39BC
+ .string "WKーSCENEーARTISTーC106ーR$"
+
+gUnknown_Debug_083C39D3:: @ 0x83C39D3
+ .string "WKーSCENEーPOKEーLEAGUE$"
+
+gUnknown_Debug_083C39E8:: @ 0x83C39E8
+ .string "WKーSCENEーROPEWAY$"
+
+gUnknown_Debug_083C39F9:: @ 0x83C39F9
+ .string "WKーSCENEーSAFARIーZONE$"
+
+gUnknown_Debug_083C3A0E:: @ 0x83C3A0E
+ .string "WKーSCENEーCYCLEーROAD$"
+
+gUnknown_Debug_083C3A22:: @ 0x83C3A22
+ .string "WKーSCENEーR119ーTENKI$"
+
+gUnknown_Debug_083C3A36:: @ 0x83C3A36
+ .string "WKーSCENEー01ーC102ーR0401$"
+
+gUnknown_Debug_083C3A4D:: @ 0x83C3A4D
+ .string "WKーFUTAGOー01ーFIELDーR104$"
+
+gUnknown_Debug_083C3A65:: @ 0x83C3A65
+ .string "WKーSCENEーBATTLEーTOWER$"
+
+gUnknown_Debug_083C3A7B:: @ 0x83C3A7B
+ .string "WKーSCENEーTRーHOUSE$"
+
+gUnknown_Debug_083C3A8D:: @ 0x83C3A8D
+ .string "WKーKASEKIーTYPE$"
+
+gUnknown_Debug_083C3A9C:: @ 0x83C3A9C
+ .string "$"
+
+gUnknown_Debug_083C3A9D:: @ 0x83C3A9D
+ .string "$"
+
+gUnknown_Debug_083C3A9E:: @ 0x83C3A9E
+ .string "$"
+
+ .align 2
+gUnknown_Debug_083C3AA0:: @ 0x83C3AA0
+ .4byte gUnknown_Debug_083C37AC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C37C0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C37CF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C37E5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C37FD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3811, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3824, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3825, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C3AE0:: @ 0x83C3AE0
+ .4byte gUnknown_Debug_083C3827, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C383B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C384F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3863, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3875, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3885, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3886, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3887, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3888, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C3B28:: @ 0x83C3B28
+ .4byte gUnknown_Debug_083C3889, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C389D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C38B1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C38C5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C38D9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C38ED, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3901, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3915, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3929, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C3B70:: @ 0x83C3B70
+ .4byte gUnknown_Debug_083C3940, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3954, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3968, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3969, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C396A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C396B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C396C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C396D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C396E, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C3BB8::
+ .4byte gUnknown_Debug_083C396F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3984, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3997, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C39A9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C39BC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C39D3, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C39E8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C39F9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A0E, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C3C00::
+ .4byte gUnknown_Debug_083C3A22, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A36, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A4D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A65, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A7B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A8D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A9C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A9D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A9E, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C3C48:: @ 0x83C3C48
+ .string "かおけいけか"
+
+gUnknown_Debug_83C3C4E:: @ 0x83C3C4E
+ .string "ョぞガぞギぞゲぞヂぞ’ぞ      5ぞGぞ♂ぞ6ぞ4ぞ        !ぞ?ぞ。ぞーぞ·ぞ‥ぞ“ぞ”ぞ♀ぞゾぞDぞ              グぞズぞバぞビぞベぞピぞ2ぞ3ぞ8ぞ‘ぞ¥ぞAぞBぞFぞKぞ      "
+
+ @ But these are strings
+gUnknown_Debug_083C3CBA:: @ 0x83C3CBA
+ .string "タウン$"
+
+gUnknown_Debug_083C3CBE:: @ 0x83C3CBE
+ .string "シティ$"
+
+gUnknown_Debug_083C3CC2:: @ 0x83C3CC2
+ .string "ロード101ー109$"
+
+gUnknown_Debug_083C3CCD:: @ 0x83C3CCD
+ .string "ロード110ー118$"
+
+gUnknown_Debug_083C3CD8:: @ 0x83C3CD8
+ .string "ロード119ー127$"
+
+gUnknown_Debug_083C3CE3:: @ 0x83C3CE3
+ .string "ロード128ー134$"
+
+gUnknown_Debug_083C3CEE:: @ 0x83C3CEE
+ .string "ルーム タウン$"
+
+gUnknown_Debug_083C3CF6:: @ 0x83C3CF6
+ .string "ルーム シティ$"
+
+gUnknown_Debug_083C3CFE:: @ 0x83C3CFE
+ .string "ダンジョンない$"
+
+ .align 2
+gUnknown_Debug_083C3D08:: @ 0x83C3D08
+ .4byte gUnknown_Debug_083C3CBA, debug_sub_808DBA0+1
+ .4byte gUnknown_Debug_083C3CBE, debug_sub_808DBF8+1
+ .4byte gUnknown_Debug_083C3CC2, debug_sub_808DC50+1
+ .4byte gUnknown_Debug_083C3CCD, debug_sub_808DCA8+1
+ .4byte gUnknown_Debug_083C3CD8, debug_sub_808DD00+1
+ .4byte gUnknown_Debug_083C3CE3, debug_sub_808DD58+1
+ .4byte gUnknown_Debug_083C3CEE, debug_sub_808DDB0+1
+ .4byte gUnknown_Debug_083C3CF6, debug_sub_808DE08+1
+ .4byte gUnknown_Debug_083C3CFE, debug_sub_808DE60+1
+
+gUnknown_Debug_083C3D50:: @ 0x83C3D50
+ .string "WKーSCENEーFIELDーT101$"
+
+gUnknown_Debug_083C3D64:: @ 0x83C3D64
+ .string "WKーSCENEーFIELDーT102$"
+
+gUnknown_Debug_083C3D78:: @ 0x83C3D78
+ .string "WKーSCENEーFIELDーT103$"
+
+gUnknown_Debug_083C3D8C:: @ 0x83C3D8C
+ .string "WKーSCENEーFIELDーT104$"
+
+gUnknown_Debug_083C3DA0:: @ 0x83C3DA0
+ .string "WKーBASEーPOSNO$"
+
+gUnknown_Debug_083C3DAE:: @ 0x83C3DAE
+ .string "WKーSCENEーFIELDーT106$"
+
+gUnknown_Debug_083C3DC2:: @ 0x83C3DC2
+ .string "WKーSCENEーFIELDーT107$"
+
+gUnknown_Debug_083C3DD6:: @ 0x83C3DD6
+ .string "WKーSCENEー02ーFIELDーT102$"
+
+gUnknown_Debug_083C3DED:: @ 0x83C3DED
+ .string "WKーSCENEーFIELDーC101$"
+
+gUnknown_Debug_083C3E01:: @ 0x83C3E01
+ .string "WKーSCENEーFIELDーC102$"
+
+gUnknown_Debug_083C3E15:: @ 0x83C3E15
+ .string "WKーSCENEーFIELDーC103$"
+
+gUnknown_Debug_083C3E29:: @ 0x83C3E29
+ .string "WKーSCENEーFIELDーC104$"
+
+gUnknown_Debug_083C3E3D:: @ 0x83C3E3D
+ .string "WKーSCENEーFIELDーC105$"
+
+gUnknown_Debug_083C3E51:: @ 0x83C3E51
+ .string "WKーSCENEーFIELDーC106$"
+
+gUnknown_Debug_083C3E65:: @ 0x83C3E65
+ .string "WKーSCENEーFIELDーC107$"
+
+gUnknown_Debug_083C3E79:: @ 0x83C3E79
+ .string "WKーSCENEーFIELDーC108$"
+
+gUnknown_Debug_083C3E8D:: @ 0x83C3E8D
+ .string "WKーSCENEーFIELDーC109$"
+
+gUnknown_Debug_083C3EA1:: @ 0x83C3EA1
+ .string "WKーSCENEーFIELDーR101$"
+
+gUnknown_Debug_083C3EB5:: @ 0x83C3EB5
+ .string "WKーSCENEーFIELDーR102$"
+
+gUnknown_Debug_083C3EC9:: @ 0x83C3EC9
+ .string "WKーSCENEーFIELDーR103$"
+
+gUnknown_Debug_083C3EDD:: @ 0x83C3EDD
+ .string "WKーSCENEーFIELDーR104$"
+
+gUnknown_Debug_083C3EF1:: @ 0x83C3EF1
+ .string "WKーSCENEーFIELDーR105$"
+
+gUnknown_Debug_083C3F05:: @ 0x83C3F05
+ .string "WKーSCENEーFIELDーR106$"
+
+gUnknown_Debug_083C3F19:: @ 0x83C3F19
+ .string "WKーSCENEーFIELDーR107$"
+
+gUnknown_Debug_083C3F2D:: @ 0x83C3F2D
+ .string "WKーSCENEーFIELDーR108$"
+
+gUnknown_Debug_083C3F41:: @ 0x83C3F41
+ .string "WKーSCENEーFIELDーR109$"
+
+gUnknown_Debug_083C3F55:: @ 0x83C3F55
+ .string "WKーSCENEーFIELDーR110$"
+
+gUnknown_Debug_083C3F69:: @ 0x83C3F69
+ .string "WKーSCENEーFIELDーR111$"
+
+gUnknown_Debug_083C3F7D:: @ 0x83C3F7D
+ .string "WKーSCENEーFIELDーR112$"
+
+gUnknown_Debug_083C3F91:: @ 0x83C3F91
+ .string "WKーSCENEーFIELDーR113$"
+
+gUnknown_Debug_083C3FA5:: @ 0x83C3FA5
+ .string "WKーSCENEーFIELDーR114$"
+
+gUnknown_Debug_083C3FB9:: @ 0x83C3FB9
+ .string "WKーSCENEーFIELDーR115$"
+
+gUnknown_Debug_083C3FCD:: @ 0x83C3FCD
+ .string "WKーSCENEーFIELDーR116$"
+
+gUnknown_Debug_083C3FE1:: @ 0x83C3FE1
+ .string "WKーSCENEーFIELDーR117$"
+
+gUnknown_Debug_083C3FF5:: @ 0x83C3FF5
+ .string "WKーSCENEーFIELDーR118$"
+
+gUnknown_Debug_083C4009:: @ 0x83C4009
+ .string "WKーSCENEーFIELDーR119$"
+
+gUnknown_Debug_083C401D:: @ 0x83C401D
+ .string "WKーSCENEーFIELDーR120$"
+
+gUnknown_Debug_083C4031:: @ 0x83C4031
+ .string "WKーSCENEーFIELDーR121$"
+
+gUnknown_Debug_083C4045:: @ 0x83C4045
+ .string "WKーSCENEーFIELDーR122$"
+
+gUnknown_Debug_083C4059:: @ 0x83C4059
+ .string "WKーSCENEーFIELDーR123$"
+
+gUnknown_Debug_083C406D:: @ 0x83C406D
+ .string "WKーSCENEーFIELDーR124$"
+
+gUnknown_Debug_083C4081:: @ 0x83C4081
+ .string "WKーSCENEーFIELDーR125$"
+
+gUnknown_Debug_083C4095:: @ 0x83C4095
+ .string "WKーSCENEーFIELDーR126$"
+
+gUnknown_Debug_083C40A9:: @ 0x83C40A9
+ .string "WKーSCENEーFIELDーR127$"
+
+gUnknown_Debug_083C40BD:: @ 0x83C40BD
+ .string "WKーSCENEーFIELDーR128$"
+
+gUnknown_Debug_083C40D1:: @ 0x83C40D1
+ .string "WKーSCENEーFIELDーR129$"
+
+gUnknown_Debug_083C40E5:: @ 0x83C40E5
+ .string "WKーSCENEーFIELDーR130$"
+
+gUnknown_Debug_083C40F9:: @ 0x83C40F9
+ .string "WKーSCENEーFIELDーR131$"
+
+gUnknown_Debug_083C410D:: @ 0x83C410D
+ .string "WKーSCENEーFIELDーR132$"
+
+gUnknown_Debug_083C4121:: @ 0x83C4121
+ .string "WKーSCENEーFIELDーR133$"
+
+gUnknown_Debug_083C4135:: @ 0x83C4135
+ .string "WKーSCENEーFIELDーR134$"
+
+gUnknown_Debug_083C4149:: @ 0x83C4149
+ .string "WKーSCENEーT101ーR0101$"
+
+gUnknown_Debug_083C415D:: @ 0x83C415D
+ .string "WKーSCENEーT101ーR0102$"
+
+gUnknown_Debug_083C4171:: @ 0x83C4171
+ .string "WKーSCENEーT101ーR0301$"
+
+gUnknown_Debug_083C4185:: @ 0x83C4185
+ .string "WKーSCENEーT101ーR0201$"
+
+gUnknown_Debug_083C4199:: @ 0x83C4199
+ .string "WKーSCENEーT101ーR0202$"
+
+gUnknown_Debug_083C41AD:: @ 0x83C41AD
+ .string "WKーSCENEーT107ーR0201$"
+
+gUnknown_Debug_083C41C1:: @ 0x83C41C1
+ .string "WKーSCENEーC101ーR0201$"
+
+gUnknown_Debug_083C41D5:: @ 0x83C41D5
+ .string "WKーSCENEーC104ーR0103$"
+
+gUnknown_Debug_083C41E9:: @ 0x83C41E9
+ .string "WKーSCENEーC103ーR0101$"
+
+gUnknown_Debug_083C41FD:: @ 0x83C41FD
+ .string "WKーSCENEーC106ーR0202$"
+
+gUnknown_Debug_083C4211:: @ 0x83C4211
+ .string "WKーSCENEーC106ーR0401$"
+
+gUnknown_Debug_083C4225:: @ 0x83C4225
+ .string "WKーSCENEーC102ーR0601$"
+
+gUnknown_Debug_083C4239:: @ 0x83C4239
+ .string "WKーSCENEーC102ーR0501$"
+
+gUnknown_Debug_083C424D:: @ 0x83C424D
+ .string "WKーSCENEーC104ーR0102$"
+
+gUnknown_Debug_083C4261:: @ 0x83C4261
+ .string "WKーSCENEーC107ーR0501$"
+
+gUnknown_Debug_083C4275:: @ 0x83C4275
+ .string "WKーSCENEーCAVEーD0601$"
+
+gUnknown_Debug_083C4289:: @ 0x83C4289
+ .string "WKーSCENEーCAVEーD0201$"
+
+gUnknown_Debug_083C429D:: @ 0x83C429D
+ .string "WKーSCENEーCAVEーD1206$"
+
+gUnknown_Debug_083C42B1:: @ 0x83C42B1
+ .string "WKーSCENEーCAVEーD1111$"
+
+gUnknown_Debug_083C42C5:: @ 0x83C42C5
+ .string "WKーSCENEーCAVEーD0701$"
+
+gUnknown_Debug_083C42D9:: @ 0x83C42D9
+ .string "WKーSCENEーCAVEーD0808$"
+
+gUnknown_Debug_083C42ED:: @ 0x83C42ED
+ .string "WKーSCENEーCAVEーD1602$"
+
+gUnknown_Debug_083C4301:: @ 0x83C4301
+ .string "WKーSCENEーCAVEーD0101$"
+
+gUnknown_Debug_083C4315:: @ 0x83C4315
+ .string "WKーSCENEーCAVEーD1301$"
+
+ .align 2
+gUnknown_Debug_083C432C:: @ 0x83C432C
+ .4byte gUnknown_Debug_083C3D50, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3D64, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3D78, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3D8C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3DA0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3DAE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3DC2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3DD6, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C436C::
+ .4byte gUnknown_Debug_083C3DED, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E01, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E15, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E29, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E3D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E51, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E65, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E79, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E8D, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C43B4::
+ .4byte gUnknown_Debug_083C3EA1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3EB5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3EC9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3EDD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3EF1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F05, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F19, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F2D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F41, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C43FC::
+ .4byte gUnknown_Debug_083C3F55, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F69, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F7D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F91, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3FA5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3FB9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3FCD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3FE1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3FF5, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C4444::
+ .4byte gUnknown_Debug_083C4009, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C401D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4031, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4045, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4059, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C406D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4081, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4095, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C40A9, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C448C::
+ .4byte gUnknown_Debug_083C40BD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C40D1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C40E5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C40F9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C410D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4121, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4135, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C44C4::
+ .4byte gUnknown_Debug_083C4149, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C415D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4171, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4185, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4199, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C44EC::
+ .4byte gUnknown_Debug_083C41C1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C41D5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C41E9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C41FD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4211, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4225, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4239, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C424D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4261, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C4534::
+ .4byte gUnknown_Debug_083C4275, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4289, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C429D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C42B1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C42C5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C42D9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C42ED, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4301, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4315, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C457C:: @ 0x83C457C
+ .string "くけけけけきかけけ "
+gUnknown_Debug_083C4586:: @ 0x83C4586
+ .string "っぞアぞイぞウぞエぞオぞカぞMぞ  キぞクぞケぞコぞサぞシぞスぞセぞソぞタぞチぞツぞテぞトぞナぞニぞヌぞネぞノぞハぞヒぞフぞヘぞホぞマぞミぞムぞメぞモぞヤぞユぞヨぞラぞリぞルぞレぞロぞワぞヲぞンぞァぞィぞゥぞ    ェぞォぞャぞザぞジぞHぞ      ュぞゼぞヅぞデぞドぞッぞ9ぞJぞLぞブぞボぞパぞ1ぞ7ぞ×ぞ/ぞEぞIぞ"
+
+gUnknown_Debug_083C4628:: @ 0x83C4628
+ .string "LOCALWORK0ー8$"
+
+gUnknown_Debug_083C4635:: @ 0x83C4635
+ .string "LOCALWORK9ー15$"
+
+ .align 2
+gUnknown_Debug_083C4644:: @ 0x83C4644
+ .4byte gUnknown_Debug_083C4628, debug_sub_808E754+1
+ .4byte gUnknown_Debug_083C4635, debug_sub_808E7AC+1
+
+gUnknown_Debug_083C4654:: @ 0x83C4654
+ .string "LOCALWORK0$"
+
+gUnknown_Debug_083C465F:: @ 0x83C465F
+ .string "LOCALWORK1$"
+
+gUnknown_Debug_083C466A:: @ 0x83C466A
+ .string "LOCALWORK2$"
+
+gUnknown_Debug_083C4675:: @ 0x83C4675
+ .string "LOCALWORK3$"
+
+gUnknown_Debug_083C4680:: @ 0x83C4680
+ .string "LOCALWORK4$"
+
+gUnknown_Debug_083C468B:: @ 0x83C468B
+ .string "LOCALWORK5$"
+
+gUnknown_Debug_083C4696:: @ 0x83C4696
+ .string "LOCALWORK6$"
+
+gUnknown_Debug_083C46A1:: @ 0x83C46A1
+ .string "LOCALWORK7$"
+
+gUnknown_Debug_083C46AC:: @ 0x83C46AC
+ .string "LOCALWORK8$"
+
+gUnknown_Debug_083C46B7:: @ 0x83C46B7
+ .string "LOCALWORK9$"
+
+gUnknown_Debug_083C46C2:: @ 0x83C46C2
+ .string "LOCALWORK10$"
+
+gUnknown_Debug_083C46CE:: @ 0x83C46CE
+ .string "LOCALWORK11$"
+
+gUnknown_Debug_083C46DA:: @ 0x83C46DA
+ .string "LOCALWORK12$"
+
+gUnknown_Debug_083C46E6:: @ 0x83C46E6
+ .string "LOCALWORK13$"
+
+gUnknown_Debug_083C46F2:: @ 0x83C46F2
+ .string "LOCALWORK14$"
+
+gUnknown_Debug_083C46FE:: @ 0x83C46FE
+ .string "LOCALWORK15$"
+
+ .align 2
+gUnknown_Debug_083C470C:: @ 0x83C470C
+ .4byte gUnknown_Debug_083C4654, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C465F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C466A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4675, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4680, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C468B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4696, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46A1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46AC, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C4754C::
+ .4byte gUnknown_Debug_083C46B7, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46C2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46CE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46DA, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46E6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46F2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46FE, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C478C:: @ 0x83C478C
+ .string "けき"
+gUnknown_Debug_083C478E:: @ 0x83C478E
+ .string " ぞあぞいぞうぞえぞおぞかぞきぞくぞけぞこぞさぞしぞすぞせぞそぞ    "
+
+gUnknown_Debug_083C47B2::
+ .string "Level$"
+
+gUnknown_Debug_083C47B8:: @ 0x83C47B8
+ .string "Scene1$"
+
+gUnknown_Debug_083C47BF:: @ 0x83C47BF
+ .string "Scene2$"
+
+gUnknown_Debug_083C47C6:: @ 0x83C47C6
+ .string "Scene3$"
+
+gUnknown_Debug_083C47CD:: @ 0x83C47CD
+ .string "Scene4$"
+
+gUnknown_Debug_083C47D4:: @ 0x83C47D4
+ .string "Scene5$"
+
+gUnknown_Debug_083C47DB:: @ 0x83C47DB
+ .string "Scene6$"
+
+gUnknown_Debug_083C47E2:: @ 0x83C47E2
+ .string "Scene7$"
+
+gUnknown_Debug_083C47E9:: @ 0x83C47E9
+ .string "Scene8$"
+
+ .align 2
+gUnknown_Debug_083C47F0:: @ 0x83C47F0
+ .4byte gUnknown_Debug_083C47B8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47BF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47C6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47CD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47D4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47DB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47E2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47E9, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C4830:: @ 0x83C4830
+ .string "Trick Master$"
+
+gUnknown_Debug_083C483D:: @ 0x83C483D
+ .string "Hidden MASTER$"
+
+gUnknown_Debug_083C484B:: @ 0x83C484B
+ .string "Inside the HOUSE$"
+
+gUnknown_Debug_083C485C:: @ 0x83C485C
+ .string "Pass a reward$"
+
+gUnknown_Debug_083C486A:: @ 0x83C486A
+ .string "Rig a trick$"
+
+gUnknown_Debug_083C4876:: @ 0x83C4876
+ .string "MASTER is gone$"
+
+ .align 2
+gUnknown_Debug_083C4888:: @ 0x83C4888
+ .4byte gUnknown_Debug_083C483D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C484B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C485C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C486A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4876, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C48B0:: @ 0x83C48B0
+ .string "PMNICKNAME$"
+
+gUnknown_Debug_083C48BB:: @ 0x83C48BB
+ .string "BREEDER$"
+ .endif
diff --git a/data/debug_menu_watanabe.s b/data/debug_menu_watanabe.s
new file mode 100644
index 000000000..58f9b21fd
--- /dev/null
+++ b/data/debug_menu_watanabe.s
@@ -0,0 +1,744 @@
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .if DEBUG
+
+gUnknown_Debug_083F7FD4:: @ 0x83F7FD4
+ .string "▶$"
+
+gUnknown_Debug_083F7FD6:: @ 0x83F7FD6
+ .string "ゆみあくひりつ$"
+
+gUnknown_Debug_083F7FDE:: @ 0x83F7FDE
+ .string "たかさ$"
+
+gUnknown_Debug_083F7FE2:: @ 0x83F7FE2
+ .string "Lキー▶しゅくしょう$"
+
+gUnknown_Debug_083F7FED:: @ 0x83F7FED
+ .string "Rキー▶かくだい$"
+
+gUnknown_Debug_083F7FF6:: @ 0x83F7FF6
+ .string "Uキー▶うえ いどう$"
+
+gUnknown_Debug_083F8001:: @ 0x83F8001
+ .string "Dキー▶した いどう$"
+
+gUnknown_Debug_083F800C:: @ 0x83F800C
+ .string "Aボタン▶そうさきりかえ$"
+
+gUnknown_Debug_083F8019:: @ 0x83F8019
+ .string "Bボタン▶やめる$"
+
+gUnknown_Debug_083F8022:: @ 0x83F8022
+ .string "スタート:$"
+
+gUnknown_Debug_083F8028:: @ 0x83F8028
+ .string ":セレクト$"
+
+gUnknown_Debug_083F802E:: @ 0x83F802E
+ .string "やせいたいせん$"
+
+gUnknown_Debug_083F8036:: @ 0x83F8036
+ .string "1VS1たいせん$"
+
+gUnknown_Debug_083F803F:: @ 0x83F803F
+ .string "2VS2たいせん$"
+
+gUnknown_Debug_083F8048:: @ 0x83F8048
+ .string "{COLOR BLUE}1VS1つうしんたいせん$"
+
+gUnknown_Debug_083F8058:: @ 0x83F8058
+ .string "{COLOR BLUE}2VS2つうしんたいせん$"
+
+gUnknown_Debug_083F8068:: @ 0x83F8068
+ .4byte gUnknown_Debug_083F802E, 0x100
+ .4byte gUnknown_Debug_083F8036, 0x108
+ .4byte gUnknown_Debug_083F803F, 0x209
+ .4byte gUnknown_Debug_083F8048, 0x10A
+ .4byte gUnknown_Debug_083F8058, 0x20B
+
+gUnknown_Debug_083F8090:: @ 0x83F8090
+ .string "きほんタイプ$"
+
+gUnknown_Debug_083F8097:: @ 0x83F8097
+ .string "AIタイプ2$"
+
+gUnknown_Debug_083F809E:: @ 0x83F809E
+ .string "AIタイプ3$"
+
+gUnknown_Debug_083F80A5:: @ 0x83F80A5
+ .string "AIタイプ4$"
+
+gUnknown_Debug_083F80AC:: @ 0x83F80AC
+ .string "AIタイプ5$"
+
+gUnknown_Debug_083F80B3:: @ 0x83F80B3
+ .string "AIタイプ6$"
+
+gUnknown_Debug_083F80BA:: @ 0x83F80BA
+ .string "AIタイプ7$"
+
+gUnknown_Debug_083F80C1:: @ 0x83F80C1
+ .string "AIタイプ8$"
+
+gUnknown_Debug_083F80C8:: @ 0x83F80C8
+ .string "AIタイプ9$"
+
+gUnknown_Debug_083F80CF:: @ 0x83F80CF
+ .string "AIタイプ10$"
+
+ .align 2
+gUnknown_Debug_083F80D8:: @ 0x83F80D8
+ .4byte gUnknown_Debug_083F8090, 0x1
+ .4byte gUnknown_Debug_083F8097, 0x2
+ .4byte gUnknown_Debug_083F809E, 0x4
+ .4byte gUnknown_Debug_083F80A5, 0x8
+ .4byte gUnknown_Debug_083F80AC, 0x10
+ .4byte gUnknown_Debug_083F80B3, 0x20
+ .4byte gUnknown_Debug_083F80BA, 0x40
+ .4byte gUnknown_Debug_083F80C1, 0x80
+ .4byte gUnknown_Debug_083F80C8, 0x100
+ .4byte gUnknown_Debug_083F80CF, 0x200
+
+gUnknown_Debug_083F8128:: @ 0x83F8128
+ .string "くさ$"
+
+gUnknown_Debug_083F812B:: @ 0x83F812B
+ .string "ながい くさ$"
+
+gUnknown_Debug_083F8132:: @ 0x83F8132
+ .string "すな$"
+
+gUnknown_Debug_083F8135:: @ 0x83F8135
+ .string "みず$"
+
+gUnknown_Debug_083F8138:: @ 0x83F8138
+ .string "うみ$"
+
+gUnknown_Debug_083F813B:: @ 0x83F813B
+ .string "いけ$"
+
+gUnknown_Debug_083F813E:: @ 0x83F813E
+ .string "いわ$"
+
+gUnknown_Debug_083F8141:: @ 0x83F8141
+ .string "どうくつ$"
+
+gUnknown_Debug_083F8146:: @ 0x83F8146
+ .string "そのた$"
+
+ .align 2
+gUnknown_Debug_083F814C:: @ 0x83F814C
+ .4byte gUnknown_Debug_083F8128, 0x0
+ .4byte gUnknown_Debug_083F812B, 0x1
+ .4byte gUnknown_Debug_083F8132, 0x2
+ .4byte gUnknown_Debug_083F8135, 0x3
+ .4byte gUnknown_Debug_083F8138, 0x4
+ .4byte gUnknown_Debug_083F813B, 0x5
+ .4byte gUnknown_Debug_083F813E, 0x6
+ .4byte gUnknown_Debug_083F8141, 0x7
+ .4byte gUnknown_Debug_083F8146, 0x8
+
+gUnknown_Debug_083F8194:: @ 0x83F8194
+ .string "ポケモンを えらんでね$"
+
+gUnknown_Debug_083F81A0:: @ 0x83F81A0
+ .string "{COLOR RED}START:つぎへ$"
+
+gUnknown_Debug_083F81AD:: @ 0x83F81AD
+ .string "{COLOR RED}じぶんの ポケモン$"
+
+gUnknown_Debug_083F81BA:: @ 0x83F81BA
+ .string "{COLOR RED}あいての ポケモン$"
+
+gUnknown_Debug_083F81C7:: @ 0x83F81C7
+ .string "たいせんモードを えらんでね$"
+
+gUnknown_Debug_083F81D6:: @ 0x83F81D6
+ .string "{COLOR RED}バトルモード せんたく$"
+
+gUnknown_Debug_083F81E5:: @ 0x83F81E5
+ .string "{COLOR RED}トレーナーAI せんたく$"
+
+gUnknown_Debug_083F81F5:: @ 0x83F81F5
+ .string "{COLOR RED}START:かいし$"
+
+gUnknown_Debug_083F8202:: @ 0x83F8202
+ .string "{COLOR RED}バトルちけい せんたく$"
+
+gUnknown_Debug_083F8211:: @ 0x83F8211
+ .string "じぶんの せいべつを えらんでね$"
+
+gUnknown_Debug_083F8222:: @ 0x83F8222
+ .string "{COLOR RED}せいべつ せんたく$"
+
+gUnknown_Debug_083F822F:: @ 0x83F822F
+ .string "おとこ$"
+
+gUnknown_Debug_083F8233:: @ 0x83F8233
+ .string "おんな$"
+Str_83F8237:
+ .string "Kind$"
+
+ .align 2
+_83F823C:
+ .4byte 1
+ .byte 0x82, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8248:
+ .string "Level$"
+
+ .align 2
+_83F8250:
+ .4byte 1
+ .byte 0x64, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F825C:
+ .string "EXP Points$"
+
+ .align 2
+_83F8268:
+ .4byte 1
+ .byte 0x80, 0x84, 0x1E, 0x00, 0x00, 0x07, 0x00, 0x00
+
+Str_83F8274:
+ .string "ID$"
+
+ .align 2
+_83F8278:
+ .4byte 0
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0A, 0x00, 0x00
+
+Str_83F8284:
+ .string "Rnd Numbers$"
+
+ .align 2
+_83F8290:
+ .4byte 0
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0A, 0x00, 0x00
+
+Str_83F829C:
+ .string "Sex$"
+
+ .align 2
+_83F82A0:
+ .4byte 0
+ .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00
+
+Str_83F82AC:
+ .string "Character$"
+
+ .align 2
+_83F82B8:
+ .4byte 0
+ .byte 0x18, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00
+
+Str_83F82C4:
+ .string "Move1$"
+
+ .align 2
+_83F82CC:
+ .4byte 0
+ .byte 0x62, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F82D8:
+ .string "Move2$"
+
+ .align 2
+_83F82E0:
+ .4byte 0
+ .byte 0x62, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F82EC:
+ .string "Move3$"
+
+ .align 2
+_83F82F4:
+ .4byte 0
+ .byte 0x62, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8300:
+ .string "Move4$"
+
+ .align 2
+_83F8308:
+ .4byte 0
+ .byte 0x62, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8314:
+ .string "Hold$"
+
+ .align 2
+_83F831C:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8328:
+ .string "SP. Ability$"
+
+ .align 2
+_83F8334:
+ .4byte 0
+ .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00
+
+Str_83F8340:
+ .string "HPrnd$"
+
+ .align 2
+_83F8348:
+ .4byte 0
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+
+Str_83F8354:
+ .string "HPexp$"
+
+ .align 2
+_83F835C:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8368:
+ .string "ATKrnd$"
+
+ .align 2
+_83F8370:
+ .4byte 0
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+
+Str_83F837C:
+ .string "ATKexp$"
+
+ .align 2
+_83F8384:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8390:
+ .string "DEFrnd$"
+
+ .align 2
+_83F8398:
+ .4byte 0
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+
+Str_83F83A4:
+ .string "DEFexp$"
+
+ .align 2
+_83F83AC:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F83B8:
+ .string "SPDrnd$"
+
+ .align 2
+_83F83C0:
+ .4byte 0
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+
+Str_83F83CC:
+ .string "SPDexp$"
+
+ .align 2
+_83F83D4:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F83E0:
+ .string "SP. ATK$"
+ .string "rnd$"
+
+ .align 2
+_83F83EC:
+ .4byte 0
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+
+Str_83F83F8:
+ .string "SP. ATK$"
+ .string "exp$"
+
+ .align 2
+_83F8404:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8410:
+ .string "SP. DEF$"
+ .string "rnd$"
+
+ .align 2
+_83F841C:
+ .4byte 0
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+
+Str_83F8428:
+ .string "SP. DEF$"
+ .string "exp$"
+
+ .align 2
+_83F8434:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8440:
+ .string "Cool$"
+
+ .align 2
+_83F8448:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8454:
+ .string "Beauty$"
+
+ .align 2
+_83F845C:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8468:
+ .string "Cute$"
+
+ .align 2
+_83F8470:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F847C:
+ .string "Smart$"
+
+ .align 2
+_83F8484:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8490:
+ .string "Tough$"
+
+ .align 2
+_83F8498:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F84A4:
+ .string "Sheen$"
+
+ .align 2
+_83F84AC:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F84B8:
+ .string "Tameness$"
+
+ .align 2
+_83F84C4:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F84D0:
+ .string "{PK}RUS$"
+
+ .align 2
+_83F84D8:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F84E4:
+ .string "EGG$"
+ .string "$"
+
+ .align 2
+_83F84EC:
+ .4byte 0
+ .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00
+
+Str_83F84F8:
+ .string "Status$"
+
+ .align 2
+_83F8500:
+ .4byte 0
+ .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00
+
+
+gUnknown_Debug_083F850A:: @ 0x83F850A
+ .string "{COLOR RED}HP  $"
+
+gUnknown_Debug_083F8514:: @ 0x83F8514
+ .string "{COLOR RED}ATK $"
+
+gUnknown_Debug_083F851C:: @ 0x83F851C
+ .string "{COLOR RED}DEF $"
+
+gUnknown_Debug_083F8524:: @ 0x83F8524
+ .string "{COLOR RED}SPEED$"
+
+gUnknown_Debug_083F852D:: @ 0x83F852D
+ .string "{COLOR RED}SP。ATK$"
+
+gUnknown_Debug_083F8537:: @ 0x83F8537
+ .string "{COLOR RED}SP。DEF$"
+
+gUnknown_Debug_083F8541:: @ 0x83F8541
+ .string "なし$"
+
+gUnknown_Debug_083F8544:: @ 0x83F8544
+ .string "♂$"
+
+gUnknown_Debug_083F8546:: @ 0x83F8546
+ .string "♀$"
+
+gUnknown_Debug_083F8548:: @ 0x83F8548
+ .string "ー$"
+
+gUnknown_Debug_083F854A:: @ 0x83F854A
+ .string "ON$"
+
+gUnknown_Debug_083F854D:: @ 0x83F854D
+ .string "OFF$"
+
+ .align 2
+gUnknown_Debug_083F8554:: @ 0x83F8554
+ .4byte Str_83F8237, _83F823C
+ .4byte Str_83F8248, _83F8250
+ .4byte Str_83F825C, _83F8268
+ .4byte Str_83F8274, _83F8278
+ .4byte Str_83F8284, _83F8290
+ .4byte Str_83F829C, _83F82A0
+ .4byte Str_83F82AC, _83F82B8
+ .4byte Str_83F82C4, _83F82CC
+ .4byte Str_83F82D8, _83F82E0
+ .4byte Str_83F82EC, _83F82F4
+ .4byte Str_83F8300, _83F8308
+ .4byte Str_83F8314, _83F831C
+ .4byte Str_83F8328, _83F8334
+ .4byte Str_83F8340, _83F8348
+ .4byte Str_83F8354, _83F835C
+ .4byte Str_83F8368, _83F8370
+ .4byte Str_83F837C, _83F8384
+ .4byte Str_83F8390, _83F8398
+ .4byte Str_83F83A4, _83F83AC
+ .4byte Str_83F83B8, _83F83C0
+ .4byte Str_83F83CC, _83F83D4
+ .4byte Str_83F83E0, _83F83EC
+ .4byte Str_83F83F8, _83F8404
+ .4byte Str_83F8410, _83F841C
+ .4byte Str_83F8428, _83F8434
+ .4byte Str_83F8440, _83F8448
+ .4byte Str_83F8454, _83F845C
+ .4byte Str_83F8468, _83F8470
+ .4byte Str_83F847C, _83F8484
+ .4byte Str_83F8490, _83F8498
+ .4byte Str_83F84A4, _83F84AC
+ .4byte Str_83F84B8, _83F84C4
+ .4byte Str_83F84D0, _83F84D8
+ .4byte Str_83F84E4, _83F84EC
+ .4byte Str_83F84F8, _83F8500
+
+gUnknown_Debug_083F866C:: @ 0x83F866C
+ .string " あいうえおか$"
+
+gUnknown_Debug_083F8674:: @ 0x83F8674
+ .string "めまみ$"
+
+gUnknown_Debug_083F8678:: @ 0x83F8678
+ .string "きくけこさし$"
+
+gUnknown_Debug_083F867F:: @ 0x83F867F
+ .string "すせそたちつ\n"
+ .string "$"
+
+gUnknown_Debug_083F8687:: @ 0x83F8687
+ .string "てとなにぬね{STRING 255}のはひふへほ$"
+
+ .align 2
+gUnknown_Debug_083F8698:: @ 0x83F8698
+ .4byte gUnknown_Debug_083F866C, 0x5
+ .4byte gUnknown_Debug_083F8674, 0x3
+ .4byte gUnknown_Debug_083F8678, 0x6
+ .4byte gUnknown_Debug_083F867F, 0x6
+ .4byte gUnknown_Debug_083F8687, 0x6
+ .4byte 0x83F868F, 0x6
+
+gUnknown_Debug_083F86C8:: @ 0x83F86C8
+ .string "ーーー$"
+
+gUnknown_Debug_083F86CC:: @ 0x83F86CC
+ .string "SLP$"
+
+gUnknown_Debug_083F86D0:: @ 0x83F86D0
+ .string "PSN$"
+
+gUnknown_Debug_083F86D4:: @ 0x83F86D4
+ .string "BRN$"
+
+gUnknown_Debug_083F86D8:: @ 0x83F86D8
+ .string "FRZ$"
+
+gUnknown_Debug_083F86DC:: @ 0x83F86DC
+ .string "PAR$"
+
+gUnknown_Debug_083F86E0:: @ 0x83F86E0
+ .string "PSN2$"
+
+ .align 2
+gUnknown_Debug_083F86E8:: @ 0x83F86E8
+ .4byte gUnknown_Debug_083F86C8, 0x0
+ .4byte gUnknown_Debug_083F86CC, 0x1
+ .4byte gUnknown_Debug_083F86D0, 0x8
+ .4byte gUnknown_Debug_083F86D4, 0x10
+ .4byte gUnknown_Debug_083F86D8, 0x20
+ .4byte gUnknown_Debug_083F86DC, 0x40
+ .4byte gUnknown_Debug_083F86E0, 0x80
+
+gUnknown_Debug_083F8720:: @ 0x83F8720
+ .string "PKMNワLIST$"
+
+gUnknown_Debug_083F872A:: @ 0x83F872A
+ .string "PKMNワBOX$"
+
+gUnknown_Debug_083F8733:: @ 0x83F8733
+ .string "Create POKひMON   LR:Shift  START:Add$"
+
+gUnknown_Debug_083F8758:: @ 0x83F8758
+ .string "たまご$"
+
+gUnknown_Debug_083F875C:: @ 0x83F875C
+ .string "DebugーG$"
+
+gUnknown_Debug_083F8764::
+ .string " $"
+ .byte 0, 0
+
+gUnknown_Debug_083F8768::
+ .4byte 0x00000001
+ .4byte 0x0000000a
+ .4byte 0x00000064
+ .4byte 0x000003e8
+ .4byte 0x00002710
+ .4byte 0x000186a0
+ .4byte 0x000f4240
+ .4byte 0x00989680
+ .4byte 0x05f5e100
+ .4byte 0x3b9aca00
+
+gUnknown_Debug_083F8790::
+ .2byte 0x0000
+ .2byte 0x0002
+ .2byte 0x0004
+ .2byte 0x0006
+ .2byte 0x0008
+ .2byte 0x000a
+ .2byte 0x000c
+ .2byte 0x000e
+ .2byte 0x0010
+ .2byte 0x0012
+ .2byte 0x0014
+ .2byte 0x0016
+ .2byte 0x0018
+ .2byte 0x001a
+ .2byte 0x001c
+ .2byte 0x001e
+ .2byte 0x001f
+ .2byte 0x001e
+ .2byte 0x001c
+ .2byte 0x001a
+ .2byte 0x0018
+ .2byte 0x0016
+ .2byte 0x0014
+ .2byte 0x0012
+ .2byte 0x0010
+ .2byte 0x000e
+ .2byte 0x000c
+ .2byte 0x000a
+ .2byte 0x0008
+ .2byte 0x0006
+ .2byte 0x0004
+ .2byte 0x0002
+
+gUnknown_Debug_083F87D0:: @ 0x83F87D0
+ .string "{COLOR RED}L{ESCAPE}ロ$"
+
+gUnknown_Debug_083F87D8:: @ 0x83F87D8
+ .string "{COLOR RED}{ESCAPE}ワR$"
+
+gUnknown_Debug_083F87E0:: @ 0x83F87E0
+ .string "かいはつナンバー$"
+
+gUnknown_Debug_083F87E9:: @ 0x83F87E9
+ .string "グラフィックナンバー$"
+
+gUnknown_Debug_083F87F4:: @ 0x83F87F4
+ .string "{COLOR RED}A:カラーせってい$"
+
+gUnknown_Debug_083F8801:: @ 0x83F8801
+ .string "{COLOR RED}A:けってい B:キャンセル$"
+
+gUnknown_Debug_083F8813:: @ 0x83F8813
+ .string ":$"
+
+gUnknown_Debug_083F8815::
+ .byte 0x00
+ .byte 0x10
+ .byte 0x20
+ .byte 0x20
+ .byte 0x20
+ .byte 0x21
+ .byte 0x20
+ .byte 0x20
+ .byte 0x20
+ .byte 0x21
+ .byte 0x20
+ .byte 0x20
+ .byte 0x20
+ .byte 0x21
+ .byte 0x20
+ .byte 0x20
+ .byte 0x20
+ .byte 0x21
+
+ .align 2
+stru_83F8828::
+ obj_tiles byte_83F88EC, 0x800, 0x1000
+ null_obj_tiles
+
+stru_83F8838::
+ obj_pal word_83F888C, 0x1000
+ null_obj_pal
+
+gOamData_83F8848:
+ .2byte 0x00a0
+ .2byte 0x0000
+ .2byte 0x0000
+
+ .align 2
+gSpriteAnim_83F8850:
+ obj_image_anim_frame 38, 30
+ obj_image_anim_end
+
+gSpriteAnim_83F8858:
+ obj_image_anim_frame 39, 30
+ obj_image_anim_end
+
+gSpriteAnim_83F8860:
+ obj_image_anim_frame 40, 30
+ obj_image_anim_end
+
+gSpriteAnimTable_83F8868::
+ .4byte gSpriteAnim_83F8850, gSpriteAnim_83F8858, gSpriteAnim_83F8860
+
+gSpriteTemplate_83F8874::
+ spr_template 0x1000, 0x1000, gOamData_83F8848, gSpriteAnimTable_83F8868, 0, gDummySpriteAffineAnimTable, debug_80C7584
+
+word_83F888C::
+ .incbin "graphics/debug/sprite_browser.gbapal"
+
+byte_83F88EC::
+ .incbin "graphics/debug/sprite_browser.4bpp"
+
+ .endif
diff --git a/data/debug_mystery_event_menu.s b/data/debug_mystery_event_menu.s
new file mode 100644
index 000000000..06bf18377
--- /dev/null
+++ b/data/debug_mystery_event_menu.s
@@ -0,0 +1,20 @@
+.if DEBUG
+
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+Str_843DA70::
+ .string "CARDーE emulation。。。$"
+
+Str_843DA84::
+ .string "LR: select A: send。$"
+
+Str_843DA98::
+ .string "sending。。。$"
+
+Str_843DAA3::
+ .string "completed。$"
+
+.endif
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 3b25ceab4..1839c3547 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -3269,6 +3269,7 @@ PacifidlogTown_House2_EventScript_1A14DC:: @ 81A14DC
Route101_EventScript_1A14DC:: @ 81A14DC
return
+ .include "data/scripts/debug.inc"
.include "data/scripts/berry_tree.inc"
.include "data/text/berry_tree.inc"
diff --git a/data/graphics.s b/data/graphics.s
index 6cc1c2db7..6d678ede9 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -18,8 +18,11 @@ gUnknown_08D00524:: @ 8D00524
.include "data/graphics/pokemon/circled_question_mark_graphics.inc"
@ 8D019E4
+gUnusedOldCharmap_Gfx_lz::
.incbin "graphics/unused/old_charmap.4bpp.lz" @ japanese table and bunch of stuff
+gUnusedOldCharmap_Tilemap_lz::
.incbin "graphics/unused/old_charmap.bin.lz"
+gUnusedOldCharmap_Pal_lz::
.incbin "graphics/unused/old_charmap.gbapal.lz"
.align 2
diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s
index 4c988286d..ddb672e8e 100644
--- a/data/pokemon_storage_system.s
+++ b/data/pokemon_storage_system.s
@@ -4,6 +4,7 @@
.section .rodata
.align 2
+
gUnknown_083BBBD4:: @ 83BBBD4
.4byte sub_809C464, 0
.4byte sub_809C664, 1
@@ -71,6 +72,11 @@ gSpriteTemplate_83BBC70:: @ 83BBC70
gSpriteTemplate_83BBC88:: @ 83BBC88
spr_template 1, 56006, gOamData_83BBC34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_809CB74
+.if DEBUG
+gUnknown_Debug_0x83E6268:: @ 0x83E6268
+ .string "セットする$"
+.endif
+
.align 2
gUnknown_083BBCA0:: @ 83BBCA0
.4byte PCText_Cancel2
@@ -105,3 +111,6 @@ gUnknown_083BBCA0:: @ 83BBCA0
.4byte PCText_PokeCenter
.4byte PCText_Machine
.4byte PCText_Plain
+.if DEBUG
+ .4byte gUnknown_Debug_0x83E6268
+.endif
diff --git a/data/roulette.s b/data/roulette.s
index d19508fc3..b9d096ac4 100644
--- a/data/roulette.s
+++ b/data/roulette.s
@@ -133,6 +133,13 @@ gUnknown_083F8EE8:: @ 83F8EE8
gUnknown_083F8EF4:: @ 83F8EF4
.byte 0, 3, 4, 6, 12
+.if DEBUG
+@ Could also be after English-only graphics
+gUnknown_Debug_0842510D:: @ 0x842510D
+ .string "Set COIN and Press START\n"
+ .string "Aーp1 Bーm1 R:Lー×10$"
+.endif
+
.ifdef ENGLISH
.align 2
RouletteSpritePalette_01:
diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc
new file mode 100644
index 000000000..bc7805f72
--- /dev/null
+++ b/data/scripts/debug.inc
@@ -0,0 +1,536 @@
+.if DEBUG
+
+DebugScript_081C1CFE:: @ 81C1CFE
+ setflag 0x804
+ call EverGrandeCity_HallOfFame_EventScript_19FC13
+ end
+
+DebugScript_081C1D07:: @ 81C1D07
+ checkitem ITEM_COIN_CASE, 1
+ compare 0x800d, 1
+ goto_if_eq DebugScript_081C1D1D
+ giveitem ITEM_COIN_CASE, 1
+ end
+
+DebugScript_081C1D1D:: @ 81C1D1D
+ end
+
+DebugScript_081C1D1E:: @ 81C1D1E
+ goto Route103_EventScript_14ED46
+
+DebugScript_081C1D23:: @ 81C1D23
+ end
+
+DebugScript_081C1D24:: @ 81C1D24
+ setvar 0x40ba, 1
+ end
+
+DebugScript_081C1D2A:: @ 81C1D2A
+ giveitem ITEM_SS_TICKET, 1
+ goto DebugScript_081C1CFE
+
+DebugScript_081C1D34:: @ 81C1D34
+ end
+
+DebugScript_081C1D35:: @ 81C1D35
+ getpartysize
+ compare 0x800d, 6
+ goto_if_eq DebugScript_081C1D45
+ giveegg SPECIES_KYOGRE
+ end
+
+DebugScript_081C1D45:: @ 81C1D45
+ end
+
+DebugScript_081C1D46:: @ 81C1D46
+ giveitem ITEM_POTION, 99
+ giveitem ITEM_ANTIDOTE, 99
+ giveitem ITEM_BURN_HEAL, 99
+ giveitem ITEM_ICE_HEAL, 99
+ giveitem ITEM_AWAKENING, 99
+ giveitem ITEM_PARALYZE_HEAL, 99
+ giveitem ITEM_FULL_RESTORE, 99
+ giveitem ITEM_MAX_POTION, 99
+ giveitem ITEM_HYPER_POTION, 99
+ giveitem ITEM_SUPER_POTION, 99
+ giveitem ITEM_FULL_HEAL, 99
+ giveitem ITEM_REVIVE, 99
+ giveitem ITEM_MAX_REVIVE, 99
+ giveitem ITEM_FRESH_WATER, 99
+ giveitem ITEM_SODA_POP, 99
+ giveitem ITEM_LEMONADE, 99
+ giveitem ITEM_MOOMOO_MILK, 99
+ giveitem ITEM_ENERGY_POWDER, 99
+ giveitem ITEM_ENERGY_ROOT, 99
+ giveitem ITEM_HEAL_POWDER, 99
+ giveitem ITEM_ORANGE_MAIL, 92
+ giveitem ITEM_RETRO_MAIL, 94
+ giveitem ITEM_POTION, 89
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_ULTRA_BALL, 99
+ giveitem ITEM_GREAT_BALL, 99
+ giveitem ITEM_POKE_BALL, 99
+ giveitem ITEM_NET_BALL, 99
+ giveitem ITEM_DIVE_BALL, 99
+ giveitem ITEM_NEST_BALL, 99
+ giveitem ITEM_REPEAT_BALL, 99
+ giveitem ITEM_TIMER_BALL, 99
+ giveitem ITEM_LUXURY_BALL, 99
+ giveitem ITEM_PREMIER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_GREAT_BALL, 79
+ giveitem ITEM_ULTRA_BALL, 84
+ giveitem ITEM_POKE_BALL, 89
+ giveitem ITEM_MASTER_BALL, 74
+ giveitem ITEM_TM01_FOCUS_PUNCH, 99
+ giveitem ITEM_TM02_DRAGON_CLAW, 99
+ giveitem ITEM_TM03_WATER_PULSE, 99
+ giveitem ITEM_TM04_CALM_MIND, 99
+ giveitem ITEM_TM05_ROAR, 99
+ giveitem ITEM_TM06_TOXIC, 99
+ giveitem ITEM_TM07_HAIL, 99
+ giveitem ITEM_TM08_BULK_UP, 99
+ giveitem ITEM_TM09_BULLET_SEED, 99
+ giveitem ITEM_TM10_HIDDEN_POWER, 99
+ giveitem ITEM_TM11_SUNNY_DAY, 99
+ giveitem ITEM_TM12_TAUNT, 99
+ giveitem ITEM_TM13_ICE_BEAM, 99
+ giveitem ITEM_TM14_BLIZZARD, 99
+ giveitem ITEM_TM15_HYPER_BEAM, 99
+ giveitem ITEM_TM16_LIGHT_SCREEN, 99
+ giveitem ITEM_TM17_PROTECT, 99
+ giveitem ITEM_TM18_RAIN_DANCE, 99
+ giveitem ITEM_TM19_GIGA_DRAIN, 99
+ giveitem ITEM_TM20_SAFEGUARD, 99
+ giveitem ITEM_TM21_FRUSTRATION, 99
+ giveitem ITEM_TM22_SOLARBEAM, 99
+ giveitem ITEM_TM23_IRON_TAIL, 99
+ giveitem ITEM_TM24_THUNDERBOLT, 99
+ giveitem ITEM_TM25_THUNDER, 99
+ giveitem ITEM_TM26_EARTHQUAKE, 99
+ giveitem ITEM_TM27_RETURN, 99
+ giveitem ITEM_TM28_DIG, 99
+ giveitem ITEM_TM29_PSYCHIC, 99
+ giveitem ITEM_TM30_SHADOW_BALL, 99
+ giveitem ITEM_TM31_BRICK_BREAK, 99
+ giveitem ITEM_TM32_DOUBLE_TEAM, 99
+ giveitem ITEM_TM33_REFLECT, 99
+ giveitem ITEM_TM34_SHOCK_WAVE, 99
+ giveitem ITEM_TM35_FLAMETHROWER, 99
+ giveitem ITEM_TM36_SLUDGE_BOMB, 99
+ giveitem ITEM_TM37_SANDSTORM, 99
+ giveitem ITEM_TM38_FIRE_BLAST, 99
+ giveitem ITEM_TM39_ROCK_TOMB, 99
+ giveitem ITEM_TM40_AERIAL_ACE, 99
+ giveitem ITEM_TM41_TORMENT, 99
+ giveitem ITEM_TM42_FACADE, 99
+ giveitem ITEM_TM43_SECRET_POWER, 99
+ giveitem ITEM_TM44_REST, 99
+ giveitem ITEM_TM45_ATTRACT, 99
+ giveitem ITEM_TM46_THIEF, 99
+ giveitem ITEM_TM47_STEEL_WING, 99
+ giveitem ITEM_TM48_SKILL_SWAP, 99
+ giveitem ITEM_TM49_SNATCH, 99
+ giveitem ITEM_TM50_OVERHEAT, 99
+ giveitem ITEM_CHERI_BERRY, 200
+ giveitem ITEM_CHERI_BERRY, 200
+ giveitem ITEM_CHERI_BERRY, 200
+ giveitem ITEM_CHERI_BERRY, 200
+ giveitem ITEM_CHERI_BERRY, 199
+ giveitem ITEM_CHESTO_BERRY, 200
+ giveitem ITEM_CHESTO_BERRY, 200
+ giveitem ITEM_CHESTO_BERRY, 200
+ giveitem ITEM_CHESTO_BERRY, 200
+ giveitem ITEM_CHESTO_BERRY, 199
+ giveitem ITEM_PECHA_BERRY, 200
+ giveitem ITEM_PECHA_BERRY, 200
+ giveitem ITEM_PECHA_BERRY, 200
+ giveitem ITEM_PECHA_BERRY, 200
+ giveitem ITEM_PECHA_BERRY, 199
+ giveitem ITEM_RAWST_BERRY, 200
+ giveitem ITEM_RAWST_BERRY, 200
+ giveitem ITEM_RAWST_BERRY, 200
+ giveitem ITEM_RAWST_BERRY, 200
+ giveitem ITEM_RAWST_BERRY, 199
+ giveitem ITEM_ASPEAR_BERRY, 200
+ giveitem ITEM_ASPEAR_BERRY, 200
+ giveitem ITEM_ASPEAR_BERRY, 200
+ giveitem ITEM_ASPEAR_BERRY, 200
+ giveitem ITEM_ASPEAR_BERRY, 199
+ giveitem ITEM_LEPPA_BERRY, 200
+ giveitem ITEM_LEPPA_BERRY, 200
+ giveitem ITEM_LEPPA_BERRY, 200
+ giveitem ITEM_LEPPA_BERRY, 200
+ giveitem ITEM_LEPPA_BERRY, 199
+ giveitem ITEM_ORAN_BERRY, 200
+ giveitem ITEM_ORAN_BERRY, 200
+ giveitem ITEM_ORAN_BERRY, 200
+ giveitem ITEM_ORAN_BERRY, 200
+ giveitem ITEM_ORAN_BERRY, 199
+ giveitem ITEM_PERSIM_BERRY, 200
+ giveitem ITEM_PERSIM_BERRY, 200
+ giveitem ITEM_PERSIM_BERRY, 200
+ giveitem ITEM_PERSIM_BERRY, 200
+ giveitem ITEM_PERSIM_BERRY, 199
+ giveitem ITEM_LUM_BERRY, 200
+ giveitem ITEM_LUM_BERRY, 200
+ giveitem ITEM_LUM_BERRY, 200
+ giveitem ITEM_LUM_BERRY, 200
+ giveitem ITEM_LUM_BERRY, 199
+ giveitem ITEM_SITRUS_BERRY, 200
+ giveitem ITEM_SITRUS_BERRY, 200
+ giveitem ITEM_SITRUS_BERRY, 200
+ giveitem ITEM_SITRUS_BERRY, 200
+ giveitem ITEM_SITRUS_BERRY, 199
+ giveitem ITEM_FIGY_BERRY, 200
+ giveitem ITEM_FIGY_BERRY, 200
+ giveitem ITEM_FIGY_BERRY, 200
+ giveitem ITEM_FIGY_BERRY, 200
+ giveitem ITEM_FIGY_BERRY, 199
+ giveitem ITEM_WIKI_BERRY, 200
+ giveitem ITEM_WIKI_BERRY, 200
+ giveitem ITEM_WIKI_BERRY, 200
+ giveitem ITEM_WIKI_BERRY, 200
+ giveitem ITEM_WIKI_BERRY, 199
+ giveitem ITEM_MAGO_BERRY, 200
+ giveitem ITEM_MAGO_BERRY, 200
+ giveitem ITEM_MAGO_BERRY, 200
+ giveitem ITEM_MAGO_BERRY, 200
+ giveitem ITEM_MAGO_BERRY, 199
+ giveitem ITEM_AGUAV_BERRY, 200
+ giveitem ITEM_AGUAV_BERRY, 200
+ giveitem ITEM_AGUAV_BERRY, 200
+ giveitem ITEM_AGUAV_BERRY, 200
+ giveitem ITEM_AGUAV_BERRY, 199
+ giveitem ITEM_IAPAPA_BERRY, 200
+ giveitem ITEM_IAPAPA_BERRY, 200
+ giveitem ITEM_IAPAPA_BERRY, 200
+ giveitem ITEM_IAPAPA_BERRY, 200
+ giveitem ITEM_IAPAPA_BERRY, 199
+ giveitem ITEM_RAZZ_BERRY, 200
+ giveitem ITEM_RAZZ_BERRY, 200
+ giveitem ITEM_RAZZ_BERRY, 200
+ giveitem ITEM_RAZZ_BERRY, 200
+ giveitem ITEM_RAZZ_BERRY, 199
+ giveitem ITEM_BLUK_BERRY, 200
+ giveitem ITEM_BLUK_BERRY, 200
+ giveitem ITEM_BLUK_BERRY, 200
+ giveitem ITEM_BLUK_BERRY, 200
+ giveitem ITEM_BLUK_BERRY, 199
+ giveitem ITEM_NANAB_BERRY, 200
+ giveitem ITEM_NANAB_BERRY, 200
+ giveitem ITEM_NANAB_BERRY, 200
+ giveitem ITEM_NANAB_BERRY, 200
+ giveitem ITEM_NANAB_BERRY, 199
+ giveitem ITEM_WEPEAR_BERRY, 200
+ giveitem ITEM_WEPEAR_BERRY, 200
+ giveitem ITEM_WEPEAR_BERRY, 200
+ giveitem ITEM_WEPEAR_BERRY, 200
+ giveitem ITEM_WEPEAR_BERRY, 199
+ giveitem ITEM_PINAP_BERRY, 200
+ giveitem ITEM_PINAP_BERRY, 200
+ giveitem ITEM_PINAP_BERRY, 200
+ giveitem ITEM_PINAP_BERRY, 200
+ giveitem ITEM_PINAP_BERRY, 199
+ giveitem ITEM_POMEG_BERRY, 200
+ giveitem ITEM_POMEG_BERRY, 200
+ giveitem ITEM_POMEG_BERRY, 200
+ giveitem ITEM_POMEG_BERRY, 200
+ giveitem ITEM_POMEG_BERRY, 199
+ giveitem ITEM_KELPSY_BERRY, 200
+ giveitem ITEM_KELPSY_BERRY, 200
+ giveitem ITEM_KELPSY_BERRY, 200
+ giveitem ITEM_KELPSY_BERRY, 200
+ giveitem ITEM_KELPSY_BERRY, 199
+ giveitem ITEM_QUALOT_BERRY, 200
+ giveitem ITEM_QUALOT_BERRY, 200
+ giveitem ITEM_QUALOT_BERRY, 200
+ giveitem ITEM_QUALOT_BERRY, 200
+ giveitem ITEM_QUALOT_BERRY, 199
+ giveitem ITEM_HONDEW_BERRY, 200
+ giveitem ITEM_HONDEW_BERRY, 200
+ giveitem ITEM_HONDEW_BERRY, 200
+ giveitem ITEM_HONDEW_BERRY, 200
+ giveitem ITEM_HONDEW_BERRY, 199
+ giveitem ITEM_GREPA_BERRY, 200
+ giveitem ITEM_GREPA_BERRY, 200
+ giveitem ITEM_GREPA_BERRY, 200
+ giveitem ITEM_GREPA_BERRY, 200
+ giveitem ITEM_GREPA_BERRY, 199
+ giveitem ITEM_TAMATO_BERRY, 200
+ giveitem ITEM_TAMATO_BERRY, 200
+ giveitem ITEM_TAMATO_BERRY, 200
+ giveitem ITEM_TAMATO_BERRY, 200
+ giveitem ITEM_TAMATO_BERRY, 199
+ giveitem ITEM_CORNN_BERRY, 200
+ giveitem ITEM_CORNN_BERRY, 200
+ giveitem ITEM_CORNN_BERRY, 200
+ giveitem ITEM_CORNN_BERRY, 200
+ giveitem ITEM_CORNN_BERRY, 199
+ giveitem ITEM_MAGOST_BERRY, 999
+ giveitem ITEM_RABUTA_BERRY, 999
+ giveitem ITEM_NOMEL_BERRY, 999
+ giveitem ITEM_SPELON_BERRY, 999
+ giveitem ITEM_PAMTRE_BERRY, 999
+ giveitem ITEM_WATMEL_BERRY, 999
+ giveitem ITEM_DURIN_BERRY, 999
+ giveitem ITEM_BELUE_BERRY, 999
+ giveitem ITEM_LIECHI_BERRY, 999
+ giveitem ITEM_GANLON_BERRY, 999
+ giveitem ITEM_SALAC_BERRY, 999
+ giveitem ITEM_PETAYA_BERRY, 999
+ giveitem ITEM_APICOT_BERRY, 999
+ giveitem ITEM_LANSAT_BERRY, 999
+ giveitem ITEM_STARF_BERRY, 999
+ giveitem ITEM_ENIGMA_BERRY, 999
+ end
+
+DebugScript_081C221F:: @ 81C221F
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ end
+
+DebugScript_081C23E2:: @ 81C23E2
+ givecoins 9999
+ end
+
+DebugScript_081C23E6:: @ 81C23E6
+ setflag 0x081
+ setflag 0x071
+ warp MAP_SOOTOPOLIS_CITY, 0xFF, 31, 33
+ waitstate
+ end
+
+DebugScript_081C23F6:: @ 81C23F6
+ takemoney 999999, 0x00
+ end
+
+DebugScript_081C23FD:: @ 81C23FD
+ getpartysize
+ compare 0x800d, 1
+ goto_if_eq DebugScript_081C2436
+ compare 0x800d, 2
+ goto_if_eq DebugScript_081C2445
+ compare 0x800d, 3
+ goto_if_eq DebugScript_081C2454
+ compare 0x800d, 4
+ goto_if_eq DebugScript_081C2463
+ compare 0x800d, 5
+ goto_if_eq DebugScript_081C2472
+ end
+
+DebugScript_081C2436:: @ 81C2436
+ givemon SPECIES_BARBOACH, 99, 0, 0, 0, 0
+DebugScript_081C2445:
+ givemon SPECIES_BARBOACH, 99, 0, 0, 0, 0
+DebugScript_081C2454:
+ givemon SPECIES_BARBOACH, 99, 0, 0, 0, 0
+DebugScript_081C2463:
+ givemon SPECIES_BARBOACH, 99, 0, 0, 0, 0
+DebugScript_081C2472:
+ givemon SPECIES_BARBOACH, 99, 0, 0, 0, 0
+ end
+
+DebugScript_081C2482:: @ 81C2482
+ getpartysize
+ compare 0x800d, 1
+ goto_if_eq DebugScript_081C24BB
+ compare 0x800d, 2
+ goto_if_eq DebugScript_081C24CA
+ compare 0x800d, 3
+ goto_if_eq DebugScript_081C24D9
+ compare 0x800d, 4
+ goto_if_eq DebugScript_081C24E8
+ compare 0x800d, 5
+ goto_if_eq DebugScript_081C24F7
+ end
+
+DebugScript_081C24BB:: @ 81C24BB
+ givemon SPECIES_SHROOMISH, 99, 0, 0, 0, 0
+DebugScript_081C24CA:
+ givemon SPECIES_SHROOMISH, 99, 0, 0, 0, 0
+DebugScript_081C24D9:
+ givemon SPECIES_SHROOMISH, 99, 0, 0, 0, 0
+DebugScript_081C24E8:
+ givemon SPECIES_SHROOMISH, 99, 0, 0, 0, 0
+DebugScript_081C24F7:
+ givemon SPECIES_SHROOMISH, 99, 0, 0, 0, 0
+ end
+
+DebugScript_081C2507:: @ 81C2507
+ getpartysize
+ compare 0x800d, 6
+ goto_if_eq DebugScript_081C2517
+ giveegg SPECIES_BARBOACH
+ end
+
+DebugScript_081C2517:: @ 81C2517
+ end
+
+DebugScript_081C2518:: @ 81C2518
+ getpartysize
+ compare 0x800d, 6
+ goto_if_eq DebugScript_081C2528
+ giveegg SPECIES_SHROOMISH
+ end
+
+DebugScript_081C2528:: @ 81C2528
+ end
+
+.endif
diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s
new file mode 100644
index 000000000..dc722bf33
--- /dev/null
+++ b/data/start_menu_debug.s
@@ -0,0 +1,495 @@
+ .if DEBUG
+
+#include "constants/moves.h"
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+Str_839BD90:: @ 0x839BD90
+ .string "ジュンイチ$"
+
+Str_839BD96:: @ 0x839BD96
+ .string "ダイゴロウ$"
+
+Str_839BD9C:: @ 0x839BD9C
+ .string "テツジ$"
+
+Str_839BDA0:: @ 0x839BDA0
+ .string "バレンシア$"
+
+Str_839BDA6:: @ 0x839BDA6
+ .string "ハルコマチ$"
+
+Str_839BDAC:: @ 0x839BDAC
+ .string "RAYMOND$"
+
+Str_839BDB4:: @ 0x839BDB4
+ .string "TIFFANY$"
+
+Str_839BDBC:: @ 0x839BDBC
+ .string "くまxちえ$"
+
+ .align 2
+gUnknown_Debug_839BDC4:: @ 0x839BDC4
+ .4byte Str_839BD90, 0x0
+ .4byte Str_839BD96, 0x0
+ .4byte Str_839BDA0, 0x1
+ .4byte Str_839BDA6, 0x1
+ .4byte Str_839BDAC, 0x80
+ .4byte Str_839BDB4, 0x81
+ .4byte Str_839BD9C, 0x0
+ .4byte Str_839BDBC, 0x1
+
+Str_839BE04:: @ 0x839BE04
+ .string "ID$"
+
+Str_839BE07:: @ 0x839BE07
+ .string "X$"
+
+Str_839BE09:: @ 0x839BE09
+ .string " Y$"
+
+Str_839BE0C:: @ 0x839BE0C
+ .string " H$"
+
+Str_839BE0F:: @ 0x839BE0F
+ .string "HP$"
+
+Str_839BE12:: @ 0x839BE12
+ .string "PAR$"
+
+Str_839BE16:: @ 0x839BE16
+ .string "SLP$"
+
+Str_839BE1A:: @ 0x839BE1A
+ .string "PSN$"
+
+Str_839BE1E:: @ 0x839BE1E
+ .string "ウマイ$"
+
+ .align 2
+gUnknown_Debug_839BE24:: @ 0x839BE24
+ .4byte Str_839BE0F, DebugMenu_8077434+1
+ .4byte Str_839BE12, DebugMenu_8077434+1
+ .4byte Str_839BE16, DebugMenu_8077434+1
+ .4byte Str_839BE1A, DebugMenu_8077434+1
+ .4byte Str_839BE1E, DebugMenu_8077434+1
+
+Str_839BE4C:: @ 0x839BE4C
+ .string "OFF$"
+
+Str_839BE50:: @ 0x839BE50
+ .string "ON$"
+
+Str_839BE53:: @ 0x839BE53
+ .string "BG0\n"
+ .string "BG1\n"
+ .string "BG2\n"
+ .string "BG3\n"
+ .string "$"
+
+Str_839BE64:: @ 0x839BE64
+ .string "ON$"
+
+Str_839BE67:: @ 0x839BE67
+ .string "OFF$"
+
+Str_839BE6B:: @ 0x839BE6B
+ .string "さいせんかのうトレーナー:{STR_VAR_1}\n"
+ .string "さいせんじょうたいトレーナー:{STR_VAR_2}$"
+
+Str_839BE8D:: @ 0x839BE8D
+ .string "いる$"
+
+Str_839BE90:: @ 0x839BE90
+ .string "いない$"
+
+Str_839BE94:: @ 0x839BE94
+ .string "Max num of steps$"
+
+Str_839BEA5:: @ 0x839BEA5
+ .string "Clear num of steps$"
+
+Str_839BEB8:: @ 0x839BEB8
+ .string "See trainers$"
+
+Str_839BEC5:: @ 0x839BEC5
+ .string "Flag all clear$"
+
+Str_839BED4:: @ 0x839BED4
+ .string "Flag all set$"
+
+ .align 2
+gUnknown_Debug_839BEE4:: @ 0x839BEE4
+ .4byte Str_839BEB8, DebugMenu_8077974+1
+ .4byte Str_839BE94, DebugMenu_8077A20+1
+ .4byte Str_839BEA5, DebugMenu_8077A40+1
+ .4byte Str_839BED4, DebugMenu_8077934+1
+ .4byte Str_839BEC5, DebugMenu_8077954+1
+
+Str_839BF0C:: @ 0x839BF0C
+ .string "のこり {STR_VAR_1}ほ$"
+
+Str_839BF14:: @ 0x839BF14
+ .string "{STR_VAR_1}\n"
+ .string "のこり {STR_VAR_2}ほ$"
+
+Str_839BF1F:: @ 0x839BF1F
+ .string "めのまえには\n"
+ .string "キューブが ありません!$"
+
+Str_839BF33:: @ 0x839BF33
+ .string "ほすうをのこり1にする$"
+
+Str_839BF3F:: @ 0x839BF3F
+ .string "ボールをのこり1にする$"
+
+Str_839BF4B:: @ 0x839BF4B
+ .string "キューブおきば$"
+
+Str_839BF53:: @ 0x839BF53
+ .string "ボールをのこり30に$"
+
+Str_839BF5E:: @ 0x839BF5E
+ .string "ほすうをのこり500に$"
+
+ .align 2
+gUnknown_Debug_839BF6C:: @ 0x839BF6C
+ .4byte Str_839BF4B, DebugMenu_8077B00+1
+ .4byte Str_839BF5E, DebugMenu_8077ACC+1
+ .4byte Str_839BF33, DebugMenu_8077AE8+1
+ .4byte Str_839BF53, DebugMenu_8077A9C+1
+ .4byte Str_839BF3F, DebugMenu_8077AB4+1
+
+gUnknown_Debug_839BF94:: @ 0x839BF94
+ .4byte gMoveNames + 13 * MOVE_CUT, DebugMenu_8077BB4+1
+ .4byte gMoveNames + 13 * MOVE_FLASH, DebugMenu_8077BC0+1
+ .4byte gMoveNames + 13 * MOVE_ROCK_SMASH, DebugMenu_8077BCC+1
+ .4byte gMoveNames + 13 * MOVE_STRENGTH, DebugMenu_8077BD8+1
+ .4byte gMoveNames + 13 * MOVE_SURF, debug_sub_80B0770+1
+ .4byte gMoveNames + 13 * MOVE_FLY, debug_sub_80B07B0+1
+ .4byte gMoveNames + 13 * MOVE_WATERFALL, DebugMenu_8077BE4+1
+ .4byte gMoveNames + 13 * MOVE_DIVE, debug_sub_80B0800+1
+ .4byte gMoveNames + 13 * MOVE_SECRET_POWER, DebugMenu_8077BF4+1
+
+Str_839BFDC:: @ 0x839BFDC
+ .string " じかん ふん びょう$"
+
+gUnknown_Debug_839BFE8::
+ .byte 0x63, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00
+
+Str_839C008: @ 0x839C008
+gDebug0x839C008::
+ .string "Which item?$"
+
+Str_839C014:: @ 0x839C014
+ .string "How many?$"
+
+Str_839C01E:: @ 0x839C01E
+ .string "にがおえ ばんごう\n"
+ .string "ポケモンナンバー\n"
+ .string "ポケモンめい\n"
+ .string "ブリーダーめい\n"
+ .string "しゅるい\n"
+ .string "こせいらんすう$"
+
+Str_839C04D:: @ 0x839C04D
+ .string "データなし$"
+
+Str_839C053:: @ 0x839C053
+ .string "Miracle Island emerged\n"
+ .string "Random numbers:{STR_VAR_1}$"
+
+Str_839C07C:: @ 0x839C07C
+ .string "{STR_VAR_1}:{STR_VAR_2}\n"
+ .string "{STR_VAR_3}$"
+
+Str_839C085:: @ 0x839C085
+ .string "みしよう データ$"
+
+Str_839C08E:: @ 0x839C08E
+ .string "Confirmation$"
+
+Str_839C09B:: @ 0x839C09B
+ .string "Max-1 set$"
+
+Str_839C0A5:: @ 0x839C0A5
+ .string "Zero clear$"
+
+Str_839C0B0:: @ 0x839C0B0
+ .string "レポート$"
+
+Str_839C0B5:: @ 0x839C0B5
+ .string "クリア じかん$"
+
+Str_839C0BD:: @ 0x839C0BD
+ .string "りゅうこう さくせい$"
+
+Str_839C0C8:: @ 0x839C0C8
+ .string "きのみを うえたかいすう$"
+
+Str_839C0D5:: @ 0x839C0D5
+ .string "じてんしゃこうかん$"
+
+Str_839C0DF:: @ 0x839C0DF
+ .string "ほすう$"
+
+Str_839C0E3:: @ 0x839C0E3
+ .string "インタビュー$"
+
+Str_839C0EA:: @ 0x839C0EA
+ .string "バトル$"
+
+Str_839C0EE:: @ 0x839C0EE
+ .string "やせいバトル$"
+
+Str_839C0F5:: @ 0x839C0F5
+ .string "トレーナーバトル$"
+
+Str_839C0FE:: @ 0x839C0FE
+ .string "でんどういり$"
+
+Str_839C105:: @ 0x839C105
+ .string "ポケモンほかく$"
+
+Str_839C10D:: @ 0x839C10D
+ .string "つった かいすう$"
+
+Str_839C116:: @ 0x839C116
+ .string "タマゴかえった$"
+
+Str_839C11E:: @ 0x839C11E
+ .string "しんかした$"
+
+Str_839C124:: @ 0x839C124
+ .string "ポケセン かいふく$"
+
+Str_839C12E:: @ 0x839C12E
+ .string "じたく かいふく$"
+
+Str_839C137:: @ 0x839C137
+ .string "サファリ りよう$"
+
+Str_839C140:: @ 0x839C140
+ .string "ひでん:いあいぎり$"
+
+Str_839C14A:: @ 0x839C14A
+ .string "ひでん:いわくだき$"
+
+Str_839C154:: @ 0x839C154
+ .string "きち ひっこし$"
+
+Str_839C15C:: @ 0x839C15C
+ .string "つうしんこうかん$"
+
+Str_839C165:: @ 0x839C165
+ .string "つうしんたいせん$"
+
+Str_839C16E:: @ 0x839C16E
+ .string "つうしん かち$"
+
+Str_839C176:: @ 0x839C176
+ .string "つうしん まけ$"
+
+Str_839C17E:: @ 0x839C17E
+ .string "つうしん ひきわけ$"
+
+Str_839C188:: @ 0x839C188
+ .string "わざ:はねる$"
+
+Str_839C18F:: @ 0x839C18F
+ .string "わざ:わるあがき$"
+
+Str_839C198:: @ 0x839C198
+ .string "スロットおおあたりかいすう$"
+
+Str_839C1A6:: @ 0x839C1A6
+ .string "ルーレット れんしょう$"
+
+Str_839C1B2:: @ 0x839C1B2
+ .string "バトルタワー$"
+
+Str_839C1B9:: @ 0x839C1B9
+ .string "バトルタワーかち$"
+
+Str_839C1C2:: @ 0x839C1C2
+ .string "バトルタワーれんしょう$"
+
+Str_839C1CE:: @ 0x839C1CE
+ .string "ポロックさくせい$"
+
+Str_839C1D7:: @ 0x839C1D7
+ .string "つうしんでポロックつくった$"
+
+Str_839C1E5:: @ 0x839C1E5
+ .string "つうしんコンテストかち$"
+
+Str_839C1F1:: @ 0x839C1F1
+ .string "CPUコンテストさんか$"
+
+Str_839C1FD:: @ 0x839C1FD
+ .string "CPUコンテストかち$"
+
+Str_839C208:: @ 0x839C208
+ .string "かいもの$"
+
+Str_839C20D:: @ 0x839C20D
+ .string "ダウジングマシン$"
+
+Str_839C216:: @ 0x839C216
+ .string "あめふり$"
+
+Str_839C21B:: @ 0x839C21B
+ .string "ずかんをみた$"
+
+Str_839C222:: @ 0x839C222
+ .string "リボン もらった$"
+
+Str_839C22B:: @ 0x839C22B
+ .string "だんさ とびおり$"
+
+Str_839C234:: @ 0x839C234
+ .string "TVを みた$"
+
+Str_839C23B:: @ 0x839C23B
+ .string "とけいを みた$"
+
+Str_839C243:: @ 0x839C243
+ .string "くじが あたった$"
+
+Str_839C24C:: @ 0x839C24C
+ .string "ポケモンあずけた$"
+
+Str_839C255:: @ 0x839C255
+ .string "ロープウェイりよう$"
+
+Str_839C25F:: @ 0x839C25F
+ .string "おんせん はいった$"
+
+ .align 2
+gUnknown_Debug_839C26C:: @ 0x839C26C
+ .4byte 0xFFFFFF, Str_839C0B0
+ .4byte 0x3E73B3B, Str_839C0B5
+ .4byte 0xFFFFFF, Str_839C0BD
+ .4byte 0xFFFFFF, Str_839C0C8
+ .4byte 0xFFFFFF, Str_839C0D5
+ .4byte 0xFFFFFF, Str_839C0DF
+ .4byte 0xFFFFFF, Str_839C0E3
+ .4byte 0xFFFFFF, Str_839C0EA
+ .4byte 0xFFFFFF, Str_839C0EE
+ .4byte 0xFFFFFF, Str_839C0F5
+ .4byte 0x3E7, Str_839C0FE
+ .4byte 0xFFFFFF, Str_839C105
+ .4byte 0xFFFFFF, Str_839C10D
+ .4byte 0xFFFFFF, Str_839C116
+ .4byte 0xFFFFFF, Str_839C11E
+ .4byte 0xFFFFFF, Str_839C124
+ .4byte 0xFFFFFF, Str_839C12E
+ .4byte 0xFFFFFF, Str_839C137
+ .4byte 0xFFFFFF, Str_839C140
+ .4byte 0xFFFFFF, Str_839C14A
+ .4byte 0xFFFFFF, Str_839C154
+ .4byte 0xFFFFFF, Str_839C15C
+ .4byte 0xFFFFFF, Str_839C165
+ .4byte 0x270F, Str_839C16E
+ .4byte 0x270F, Str_839C176
+ .4byte 0x270F, Str_839C17E
+ .4byte 0xFFFFFF, Str_839C188
+ .4byte 0xFFFFFF, Str_839C18F
+ .4byte 0xFFFFFF, Str_839C198
+ .4byte 0xFFFFFF, Str_839C1A6
+ .4byte 0xFFFFFF, Str_839C1B2
+ .4byte 0x0, Str_839C1B9
+ .4byte 0x0, Str_839C1C2
+ .4byte 0xFFFFFF, Str_839C1CE
+ .4byte 0xFFFFFF, Str_839C1D7
+ .4byte 0xFFFFFF, Str_839C1E5
+ .4byte 0xFFFFFF, Str_839C1F1
+ .4byte 0xFFFFFF, Str_839C1FD
+ .4byte 0xFFFFFF, Str_839C208
+ .4byte 0xFFFFFF, Str_839C20D
+ .4byte 0xFFFFFF, Str_839C216
+ .4byte 0xFFFFFF, Str_839C21B
+ .4byte 0xFFFFFF, Str_839C222
+ .4byte 0xFFFFFF, Str_839C22B
+ .4byte 0xFFFFFF, Str_839C234
+ .4byte 0xFFFFFF, Str_839C23B
+ .4byte 0xFFFFFF, Str_839C243
+ .4byte 0xFFFFFF, Str_839C24C
+ .4byte 0xFFFFFF, Str_839C255
+ .4byte 0xFFFFFF, Str_839C25F
+
+gUnknown_Debug_839C3FC:: @ 0x839C3FC
+ .4byte Str_839C08E, DebugMenu_8078774+1
+ .4byte Str_839C09B, DebugMenu_8078788+1
+ .4byte Str_839C0A5, DebugMenu_807879C+1
+
+Str_839C414:: @ 0x839C414
+ .string "ATTR:{STR_VAR_1} HEIGHT:{STR_VAR_3}\n"
+ .string "CODE:{STR_VAR_2}$"
+
+Str_839C42E:: @ 0x839C42E
+ .string "レベル  ステージ$"
+
+Str_839C438:: @ 0x839C438
+ .string "ポロック グループ{STR_VAR_1}$"
+
+gUnknown_Debug_839C444::
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+Str_839C574:: @ 0x839C574
+gDebug0x839C574::
+ .string "write to flash$"
+
+Str_839C583:: @ 0x839C583
+ .string "read from flash$"
+
+ .align 2
+gUnknown_Debug_839C594:: @ 0x839C594
+ .4byte gDebug0x839C574, DebugMenu_8078C80+1
+ .4byte Str_839C583, DebugMenu_8078D30+1
+
+Str_839C5A4:: @ 0x839C5A4
+ .string "Press A, begin to write\n"
+ .string "Press B, cancel$"
+
+Str_839C5CC:: @ 0x839C5CC
+ .string "かきこみ せいこう$"
+
+Str_839C5D6:: @ 0x839C5D6
+ .string "よみこみせいこう$"
+
+Str_839C5DF:: @ 0x839C5DF
+ .string "かきこみ しっぱい$"
+
+Str_839C5E9:: @ 0x839C5E9
+ .string "よみこみ しっぱい$"
+
+ .align 1
+gUnknown_Debug_839C5F4::
+ .byte 0x00, 0x00, 0xe7, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x09, 0x03, 0x00, 0x00
+
+Str_839C60C:: @ 0x839C60C
+gDebug0x839C60C::
+ .string "Set FLASH ERR$"
+
+Str_839C61A:: @ 0x839C61A
+ .string "abcde; abcde: ABCDE; ABCDE:\p"
+ .string "Tableaux des verbes du 2{SUPER_E} groupe.\p"
+ .string "La1{SUPER_RE} chose à apprendre c’est de lire.\p"
+ .string "Tableaux des verbes du 1{SUPER_ER} groupe.\p"
+ .string "“あいうえおかきくけコさしすせそたちつてとな”\n"
+ .string "<にぬネのはひふへほマみむめもやゆよらりるれろわャッ>\p"
+ .string "をんゃゅょアイウエオカキクケサシスルレロワ,$"
+
+ .endif
diff --git a/data/unk_debug_menu_3.s b/data/unk_debug_menu_3.s
new file mode 100644
index 000000000..100821c9b
--- /dev/null
+++ b/data/unk_debug_menu_3.s
@@ -0,0 +1,105 @@
+ .section .rodata
+
+ .align 2
+
+Str_842E238:: @ 0x842E238
+ .string "タマゴ$"
+
+.if DEBUG
+
+Str_842E23C:: @ 0x842E23C
+ .string "ガイブ$"
+
+Str_842E240:: @ 0x842E240
+ .string "ENGLISH$"
+
+Str_842E248:: @ 0x842E248
+ .string "TOURNAMENT$"
+
+Str_842E253:: @ 0x842E253
+ .string " そら  カードイー$"
+
+Str_842E25E:: @ 0x842E25E
+ .string "ポケコッコ$"
+
+Str_842E264:: @ 0x842E264
+ .string "ticket$"
+
+Str_842E26B:: @ 0x842E26B
+ .string "{PKMN}$"
+
+Str_842E26E:: @ 0x842E26E
+ .string "wrong {PKMN}$"
+
+Str_842E277:: @ 0x842E277
+ .string "ribbon$"
+
+Str_842E27E:: @ 0x842E27E
+ .string "DEX$"
+
+Str_842E282:: @ 0x842E282
+ .string "message$"
+
+Str_842E28A:: @ 0x842E28A
+ .string "egg$"
+
+Str_842E28E:: @ 0x842E28E
+ .string "RAM seed$"
+
+Str_842E297:: @ 0x842E297
+ .string "trainer$"
+
+Str_842E29F:: @ 0x842E29F
+ .string "clock$"
+
+Str_842E2A5:: @ 0x842E2A5
+ .string "item$"
+
+Str_842E2AA:: @ 0x842E2AA
+ .string "goods$"
+
+Str_842E2B0:: @ 0x842E2B0
+ .string "potion$"
+
+Str_842E2B7:: @ 0x842E2B7
+ .string "ball$"
+
+Str_842E2BC:: @ 0x842E2BC
+ .string "cheri berry$"
+
+Str_842E2C8:: @ 0x842E2C8
+ .string "TM01$"
+
+ .align 2
+gUnknown_Debug_842E2D0::
+ .4byte Str_842E264, debug_sub_813C404+1
+ .4byte Str_842E26B, debug_sub_813C810+1
+ .4byte Str_842E26E, debug_sub_813C888+1
+ .4byte Str_842E277, debug_sub_813C430+1
+ .4byte Str_842E27E, debug_sub_813C488+1
+ .4byte Str_842E282, debug_sub_813C45C+1
+ .4byte Str_842E28A, debug_sub_813C740+1
+ .4byte Str_842E28E, debug_sub_813C5B4+1
+ .4byte Str_842E297, debug_sub_813C93C+1
+ .4byte Str_842E29F, debug_sub_813C4B4+1
+ .4byte Str_842E2A5, debug_sub_813C4D4+1
+ .4byte Str_842E2AA, debug_sub_813C500+1
+ .4byte Str_842E2B0, debug_sub_813C580+1
+ .4byte Str_842E2B7, debug_sub_813C58C+1
+ .4byte Str_842E2BC, debug_sub_813C598+1
+ .4byte Str_842E2C8, debug_sub_813C5A4+1
+
+gUnknown_Debug_842E350::
+ .4byte 0x10
+ .4byte gUnknown_Debug_845DAE1
+ .4byte gUnknown_Debug_845DDB2
+ .4byte gUnknown_Debug_845E306
+ .4byte gUnknown_Debug_845E3E0
+ .4byte gUnknown_Debug_845E3E0
+ .4byte gUnknown_Debug_845E402
+ .4byte gUnknown_Debug_845E402
+ .4byte gUnknown_Debug_845E422
+ .4byte gUnknown_Debug_845E422
+ .4byte gUnknown_Debug_845E443
+
+.endif
diff --git a/de_after.sh b/de_after.sh
index 8c39f765a..92f940d8d 100755
--- a/de_after.sh
+++ b/de_after.sh
@@ -1 +1,2 @@
-git checkout override.mk asm/ data/ graphics
+git checkout override.mk data/ graphics
+rm data/ingame_trades.inc
diff --git a/graphics/debug/sprite_browser.pal b/graphics/debug/sprite_browser.pal
new file mode 100644
index 000000000..ba4a6027c
--- /dev/null
+++ b/graphics/debug/sprite_browser.pal
@@ -0,0 +1,51 @@
+JASC-PAL
+0100
+48
+115 139 65
+255 0 0
+255 123 0
+255 255 0
+123 255 0
+0 255 0
+0 255 131
+0 255 255
+0 123 255
+0 0 255
+123 0 255
+255 0 255
+255 0 123
+0 0 0
+123 123 123
+255 255 255
+115 139 65
+255 0 0
+255 123 0
+255 255 0
+123 255 0
+0 255 0
+0 255 131
+0 255 255
+0 123 255
+0 0 255
+123 0 255
+255 0 255
+255 0 123
+0 0 0
+123 123 123
+255 255 255
+115 139 65
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
diff --git a/graphics/debug/sprite_browser.png b/graphics/debug/sprite_browser.png
new file mode 100644
index 000000000..b93ace2cd
--- /dev/null
+++ b/graphics/debug/sprite_browser.png
Binary files differ
diff --git a/include/battle.h b/include/battle.h
index d3cbd24f5..544e65b80 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -763,6 +763,8 @@ void sub_8012324(void);
void SwapTurnOrder(u8, u8);
u8 GetWhoStrikesFirst(u8, u8, u8);
+void debug_sub_8010800(void);
+
// asm/battle_3.o
u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check);
u8 UpdateTurnCounters(void);
diff --git a/include/cable_club.h b/include/cable_club.h
index a2fe46b30..2f509c9fc 100644
--- a/include/cable_club.h
+++ b/include/cable_club.h
@@ -20,5 +20,8 @@ void sub_8083B90(void);
void sub_8083BDC(void);
bool32 sub_8083BF4(u8 linkPlayerIndex);
void sub_8083C50(u8 taskId);
+#if DEBUG
+void debug_sub_808B838(u8);
+#endif
#endif // GUARD_CABLE_CLUB_H
diff --git a/include/clock.h b/include/clock.h
index 4e6560c91..5772145d3 100644
--- a/include/clock.h
+++ b/include/clock.h
@@ -3,6 +3,7 @@
// TODO: time of day and seconds in a day defines
+void InitTimeBasedEvents(void);
void DoTimeBasedEvents(void);
#endif
diff --git a/include/constants/decorations.h b/include/constants/decorations.h
index 2e3558721..c361ccdf1 100644
--- a/include/constants/decorations.h
+++ b/include/constants/decorations.h
@@ -123,4 +123,6 @@
#define DECOR_REGICE_DOLL 119
#define DECOR_REGISTEEL_DOLL 120
+#define DECOR_COUNT 121
+
#endif // GUARD_CONSTANTS_DECORATIONS_H
diff --git a/include/constants/items.h b/include/constants/items.h
index 9b88db1da..6f54e6ee4 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -401,4 +401,6 @@
// Check if the item is one that can be used on a Pokemon.
#define IS_POKEMON_ITEM(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
+#define IS_ITEM_MAIL(item) ((item) >= ITEM_ORANGE_MAIL && (item) <= ITEM_RETRO_MAIL)
+
#endif // GUARD_CONSTANTS_ITEMS_H
diff --git a/include/debug.h b/include/debug.h
index f3ad8c401..2136dbfb8 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -1,7 +1,17 @@
#ifndef GUARD_DEBUG_H
#define GUARD_DEBUG_H
+// start_menu_debug
+void DebugMenu_8077048(void);
+
// matsuda_debug_menu
void sub_80AAF30(void);
+void Crash(const u8 *text);
+
+// tomomichi_debug_menu
+void debug_nullsub_66(void);
+
+// sound_check_menu
+void CB2_StartSoundCheckMenu(void);
#endif // GUARD_DEBUG_H
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 58750fa92..b86b166aa 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -117,6 +117,7 @@ struct Shared1000
// const pointer to shared1000. easy_chat might be two separate files.
extern struct Shared1000 *const gEasyChatStruct;
+void sub_80E60D8(void);
void sub_80E62A0(u8 arg0, u16 *arg1, void (*arg2)(void), u8 arg3);
u16 sub_80EB72C(u16 group);
void sub_80EB6FC(u16 *, u16);
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
index 2d5693e40..49e9f23e3 100644
--- a/include/field_control_avatar.h
+++ b/include/field_control_avatar.h
@@ -36,5 +36,6 @@ bool8 sub_8068870(u16 a);
bool8 sub_8068894(void);
bool8 sub_8068A64(struct MapPosition *, u16);
u8 sub_8068F18(void);
+bool8 dive_warp(struct MapPosition *position, u16 b);
#endif
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
index 4377367f7..cd0cb6eab 100644
--- a/include/field_fadetransition.h
+++ b/include/field_fadetransition.h
@@ -27,5 +27,6 @@ void sub_8080F48(void);
void sub_8080F58(void);
void sub_8080F68(void);
void sub_8080F9C(void);
+void debug_sub_80888D8(void);
#endif // GUARD_FIELD_FADETRANSITION_H
diff --git a/include/link.h b/include/link.h
index 6581fdbba..6a7212645 100644
--- a/include/link.h
+++ b/include/link.h
@@ -194,5 +194,9 @@ u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]);
void LinkVSync(void);
void Timer3Intr(void);
void SerialCB(void);
+void LinkTestScreen(void);
+void debug_sub_8008218(u16 *buffer, void *arg1, u16 (*arg2)[], u32 arg3);
+void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0);
+u32 sub_8007E40(void);
#endif // GUARD_LINK_H
diff --git a/include/mystery_event_menu.h b/include/mystery_event_menu.h
index 8801789d9..c1f5fbb8f 100644
--- a/include/mystery_event_menu.h
+++ b/include/mystery_event_menu.h
@@ -2,5 +2,6 @@
#define GUARD_MYSTERY_EVENT_MENU_H
void CB2_InitMysteryEventMenu(void);
+void debug_sub_815D15C(void);
#endif // GUARD_MYSTERY_EVENT_MENU_H
diff --git a/include/overworld.h b/include/overworld.h
index 0954f1b63..50089593f 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -235,4 +235,6 @@ void CreateLinkPlayerSprite(u8);
void SpriteCB_LinkPlayer(struct Sprite *);
void sub_805465C(void);
+void CB2_InitTestMenu(void);
+
#endif // GUARD_ROM4_H
diff --git a/include/pokeblock.h b/include/pokeblock.h
index 6720653a0..cda598f6c 100644
--- a/include/pokeblock.h
+++ b/include/pokeblock.h
@@ -3,12 +3,20 @@
enum
{
- PBLOCK_CLR_BLACK,
- PBLOCK_CLR_RED,
+ PBLOCK_CLR_RED = 1,
PBLOCK_CLR_BLUE,
PBLOCK_CLR_PINK,
PBLOCK_CLR_GREEN,
- PBLOCK_CLR_YELLOW
+ PBLOCK_CLR_YELLOW,
+ PBLOCK_CLR_PURPLE,
+ PBLOCK_CLR_INDIGO,
+ PBLOCK_CLR_BROWN,
+ PBLOCK_CLR_LITEBLUE,
+ PBLOCK_CLR_OLIVE,
+ PBLOCK_CLR_GRAY,
+ PBLOCK_CLR_BLACK,
+ PBLOCK_CLR_WHITE,
+ PBLOCK_CLR_GOLD,
};
enum
diff --git a/include/region_map.h b/include/region_map.h
index 254307052..e7a357fe2 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -68,5 +68,6 @@ void CreateRegionMapPlayerIcon(u16, u16);
const u8 *GetMapSectionName(u8 *dest, u16 mapSectionId, u16 length);
const u8 *CopyMapName(u8 *dest, u16 b);
const u8 *CopyLocationName(u8 *dest, u16 b);
+void CB2_InitFlyRegionMap(void);
#endif // GUARD_REGION_MAP_H
diff --git a/include/reset_rtc_screen.h b/include/reset_rtc_screen.h
index 5807dec99..2de95534a 100644
--- a/include/reset_rtc_screen.h
+++ b/include/reset_rtc_screen.h
@@ -2,5 +2,6 @@
#define GUARD_RESET_RTC_SCREEN_H
void CB2_InitResetRtcScreen(void);
+void debug_sub_806F8F8(void);
#endif // GUARD_RESET_RTC_SCREEN_H
diff --git a/include/slot_machine.h b/include/slot_machine.h
index f886d9239..7759ca1b2 100644
--- a/include/slot_machine.h
+++ b/include/slot_machine.h
@@ -75,5 +75,6 @@ struct SlotMachineEwramStruct {
void PlaySlotMachine(u8 arg0, MainCallback cb);
void sub_8104DA4(void);
u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2);
+void debug_sub_811609C(u8, void (*)(void));
#endif // GUARD_SLOT_MACHINE_H
diff --git a/include/strings.h b/include/strings.h
index fe9cfc6ba..91c5c5344 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -164,7 +164,7 @@ extern const u8 gOtherText_None[];
extern const u8 gOtherText_ThreeQuestions2[];
-extern const u8 gOtherText_FiveQuestionsAndSlash[];
+extern const u8 gOtherText_FiveQuestions[];
extern const u8 gOtherText_OneDash[];
extern const u8 gOtherText_TwoDashes[];
diff --git a/include/trade.h b/include/trade.h
index 46f58a802..d6dee0bd9 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -51,6 +51,7 @@ extern const u32 gUnknown_0820CA98[];
extern const u16 gUnknown_0820F798[];
void sub_8047CD8(void);
+void sub_804B790(void);
void sub_804E174(void);
extern const u8 gOtherText_MaleSymbol3[2];
extern const u8 gOtherText_FemaleSymbol3[2];
diff --git a/include/trainer_card.h b/include/trainer_card.h
index 7ea1d9fc0..28cabbd09 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -32,6 +32,8 @@ void TrainerCard_ShowPlayerCard(void (*)(void));
void TrainerCard_ShowLinkCard(u8, void (*)(void));
void TrainerCard_GenerateCardForPlayer(struct TrainerCard *);
u8 sub_80934C4(u8 id);
+void debug_sub_80A0710(void (*)(void));
+void debug_sub_80A073C(void (*)(void));
extern struct TrainerCard gTrainerCards[4];
diff --git a/ld_script.txt b/ld_script.txt
index 435a8d8f6..359a18521 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -100,6 +100,7 @@ SECTIONS {
src/engine/reset_rtc_screen.o(.text);
src/field/party_menu.o(.text);
src/field/start_menu.o(.text);
+ src/debug/start_menu_debug.o(.text);
src/engine/menu.o(.text);
src/engine/tileset_anim.o(.text);
src/engine/palette.o(.text);
@@ -116,7 +117,13 @@ SECTIONS {
src/field/field_screen_effect.o(.text);
src/battle/battle_setup.o(.text);
src/engine/cable_club.o(.text);
+ src/debug/tomomichi_debug_menu.o(.text);
+ asm/tomomichi_debug_menu.o(.text);
+ src/debug/nohara_debug_menu.o(.text);
+ asm/nohara_debug_menu.o(.text);
src/debug/mori_debug_menu.o(.text);
+ asm/taya_debug_window.o(.text);
+ src/debug/taya_debug_window.o(.text);
src/field/trainer_see.o(.text);
src/field/wild_encounter.o(.text);
src/field/field_effect.o(.text);
@@ -138,6 +145,7 @@ SECTIONS {
src/pokemon/pokemon_summary_screen.o(.text);
src/field/script_movement.o(.text);
src/field/fldeff_cut.o(.text);
+ src/debug/kagaya_debug_menu.o(.text);
src/pokemon/mail_data.o(.text);
src/field/map_name_popup.o(.text);
src/field/item_menu.o(.text);
@@ -149,6 +157,8 @@ SECTIONS {
src/field/shop.o(.text);
src/field/fldeff_escalator.o(.text);
src/field/berry.o(.text);
+ src/debug/watanabe_debug_menu.o(.text);
+ asm/watanabe_debug_menu.o(.text);
src/field/script_menu.o(.text);
src/engine/naming_screen.o(.text);
src/field/money.o(.text);
@@ -357,6 +367,7 @@ SECTIONS {
src/unused_8124F94.o(.text);
src/engine/save.o(.text);
src/engine/mystery_event_script.o(.text);
+ asm/unk_debug_menu_3.o(.text);
src/field/field_effect_helpers.o(.text);
src/contest_ai.o(.text);
src/unused_81258BC.o(.text);
@@ -385,6 +396,8 @@ SECTIONS {
src/field/braille_puzzles.o(.text);
src/pokemon/pokeblock_feed.o(.text);
src/engine/clear_save_data_menu.o(.text);
+ src/debug/nakamura_debug_menu.o(.text);
+ asm/nakamura_debug_menu.o(.text);
src/scene/intro_credits_graphics.o(.text);
src/scene/evolution_graphics.o(.text);
src/field/bard_music.o(.text);
@@ -527,6 +540,9 @@ SECTIONS {
src/engine/reset_rtc_screen.o(.rodata);
src/field/party_menu.o(.rodata);
src/field/start_menu.o(.rodata);
+ src/debug/start_menu_debug.o(.data);
+ src/debug/start_menu_debug.o(.rodata);
+ data/start_menu_debug.o(.rodata);
src/engine/menu.o(.rodata);
src/engine/tileset_anim.o(.rodata);
src/engine/palette.o(.rodata);
@@ -548,7 +564,10 @@ SECTIONS {
src/field/field_screen_effect.o(.rodata);
src/battle/battle_setup.o(.rodata);
src/engine/cable_club.o(.rodata);
+ data/debug_menu_tomomichi.o(.rodata);
+ data/debug_menu_nohara.o(.rodata);
src/debug/mori_debug_menu.o(.rodata);
+ data/debug_menu_taya.o(.rodata);
src/field/trainer_see.o(.rodata);
src/field/wild_encounter.o(.rodata);
src/field/field_effect.o(.rodata);
@@ -566,6 +585,7 @@ SECTIONS {
src/pokemon/pokemon_icon.o(.rodata);
src/pokemon/pokemon_summary_screen.o(.rodata);
src/field/fldeff_cut.o(.rodata);
+ src/debug/kagaya_debug_menu.o(.rodata);
src/field/item_menu.o(.rodata);
src/battle/battle_anim_80A7E7C.o(.rodata);
src/field/item.o(.rodata);
@@ -574,6 +594,7 @@ SECTIONS {
src/field/shop.o(.rodata);
src/field/fldeff_escalator.o(.rodata);
src/field/berry.o(.rodata);
+ data/debug_menu_watanabe.o(.rodata);
src/field/script_menu.o(.rodata);
src/engine/naming_screen.o(.rodata);
src/field/money.o(.rodata);
@@ -618,6 +639,7 @@ SECTIONS {
src/field/fldeff_flash.o(.rodata);
src/engine/time_events.o(.rodata);
src/field/field_specials.o(.rodata);
+ src/battle/battle_records.o(.rodata);
data/pokedex_area_screen.o(.rodata);
src/scene/evolution_scene.o(.rodata);
data/roulette.o(.rodata);
@@ -629,6 +651,7 @@ SECTIONS {
src/field/choose_party.o(.rodata);
src/scene/cable_car.o(.rodata);
src/engine/save.o(.rodata);
+ data/unk_debug_menu_3.o(.rodata);
src/field/field_effect_helpers.o(.rodata);
src/contest_ai.o(.rodata);
src/battle/battle_controller_safari.o(.rodata);
@@ -648,8 +671,10 @@ SECTIONS {
src/field/diploma.o(.rodata);
src/strings.o(.rodata);
src/field/berry_tag_screen.o(.rodata);
+ data/debug_mystery_event_menu.o(.rodata);
src/engine/save_failed_screen.o(.rodata);
src/pokemon/pokeblock_feed.o(.rodata);
+ src/debug/nakamura_debug_menu.o(.rodata);
src/scene/intro_credits_graphics.o(.rodata);
src/scene/evolution_graphics.o(.rodata);
src/field/bard_music.o(.rodata);
@@ -657,6 +682,7 @@ SECTIONS {
data/strings2.o(.rodata);
src/engine/menu_cursor.o(.rodata);
src/engine/mystery_event_msg.o(.rodata);
+ data/debug_menu_3.o(.rodata);
src/libs/m4a_tables.o(.rodata);
data/sound_data.o(.rodata);
} =0
diff --git a/ruby_de_debug.sha1 b/ruby_de_debug.sha1
new file mode 100644
index 000000000..4ecbf29a7
--- /dev/null
+++ b/ruby_de_debug.sha1
@@ -0,0 +1 @@
+ca5e3d415c4b47353a73a616878ba833f3648b7a pokeruby_de_debug.gba
diff --git a/sound/music_player_table.inc b/sound/music_player_table.inc
index 35d37fca9..452ee78f5 100644
--- a/sound/music_player_table.inc
+++ b/sound/music_player_table.inc
@@ -1,4 +1,3 @@
-
.align 2
gMPlayTable:: @ 845545C
music_player gMPlay_BGM, gUnknown_030007B8 + 0x40, 10, 0
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index 2ad2adb04..b09d9ad8d 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -1,5 +1,12 @@
#include "global.h"
#include "constants/abilities.h"
+#include "constants/battle_move_effects.h"
+#include "constants/hold_effects.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "gba/flash_internal.h"
#include "battle.h"
#include "battle_ai.h"
#include "battle_interface.h"
@@ -7,6 +14,7 @@
#include "battle_setup.h"
#include "battle_util.h"
#include "data2.h"
+#include "decompress.h"
#include "event_data.h"
#include "evolution_scene.h"
#include "item.h"
@@ -14,6 +22,7 @@
#include "main.h"
#include "m4a.h"
#include "name_string_util.h"
+#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
#include "pokeball.h"
@@ -24,9 +33,7 @@
#include "rom3.h"
#include "rom_8077ABC.h"
#include "rom_8094928.h"
-#include "constants/songs.h"
#include "sound.h"
-#include "constants/species.h"
#include "sprite.h"
#include "string_util.h"
#include "task.h"
@@ -36,10 +43,6 @@
#include "tv.h"
#include "scanline_effect.h"
#include "util.h"
-#include "constants/battle_move_effects.h"
-#include "constants/items.h"
-#include "constants/hold_effects.h"
-#include "constants/moves.h"
#include "ewram.h"
struct UnknownStruct7
@@ -64,9 +67,16 @@ struct UnknownStruct12
u8 filler4[0x54];
};
+extern void sub_802BBD4();
+
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern const u8 Str_821F7B8[];
+extern u8 gUnknown_02023A14_50;
extern const u16 gUnknown_08D004E0[];
extern const struct MonCoords gCastformFrontSpriteCoords[];
-
+extern const u8 Str_821F7EA[];
+extern const u8 gUnknown_Debug_821F7F3[];
+extern const u8 BattleText_YesNo[];
extern u8 gStatStageRatios[][2];
extern u8 gActionsByTurnOrder[4];
extern struct UnknownPokemonStruct2 gUnknown_02023A00[];
@@ -79,7 +89,7 @@ extern u8 gCurrentActionFuncId;
extern u8 gBanksByTurnOrder[];
extern struct UnknownStruct12 gUnknown_02024AD0[];
extern u8 gObjectBankIDs[];
-extern u16 gCurrentMove;
+extern u16 gCurrentMove; // This is mis-named. It is a species, not a move ID.
extern u8 gLastUsedAbility;
extern u8 gStringBank;
extern u8 gAbsentBankFlags;
@@ -176,7 +186,7 @@ extern u8 gUnknown_081FA70C[][3];
extern u8 gUnknown_081FA71B[];
extern u8 gUnknown_081FA71F[];
-
+void sub_8010824(void);
static void BattlePrepIntroSlide(void);
void CheckFocusPunch_ClearVarsBeforeTurnStarts(void);
void SetActionsAndBanksTurnOrder(void);
@@ -244,7 +254,14 @@ void InitBattle(void)
gBattle_BG2_Y = 0;
gBattle_BG3_X = 0;
gBattle_BG3_Y = 0;
+
+#if DEBUG
+ if (!(gUnknown_02023A14_50 & 8))
+ gBattleTerrain = BattleSetup_GetTerrain();
+#else
gBattleTerrain = BattleSetup_GetTerrain();
+#endif
+
Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0);
Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC);
@@ -261,7 +278,11 @@ void InitBattle(void)
SetMainCallback2(sub_800F298);
else
SetMainCallback2(sub_800EC9C);
- if (!(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)
+#if DEBUG
+ && !(gUnknown_02023A14_50 & 8)
+#endif
+ )
{
CreateNPCTrainerParty(gEnemyParty, gTrainerBattleOpponent);
SetWildMonHeldItem();
@@ -383,6 +404,7 @@ void sub_800EC9C(void)
{
u8 playerId;
u8 enemyId;
+ s32 id;
RunTasks();
AnimateSprites();
@@ -402,6 +424,16 @@ void sub_800EC9C(void)
gBattleStruct->unk1 = 1;
sub_800E9EC();
sub_800EAAC();
+#if DEBUG
+ if (gUnknown_02023A14_50 & 8)
+ {
+ for (id = 0; id < 2; id++) // Why < 2 here?
+ {
+ gLinkPlayers[id].lp_field_18 = id;
+ gLinkPlayers[id].linkType = 0x2211;
+ }
+ }
+#endif
SendBlock(bitmask_all_link_players_but_self(), gBattleStruct, 32);
gBattleCommunication[0] = 1;
}
@@ -416,7 +448,6 @@ void sub_800EC9C(void)
case 1:
if ((GetBlockReceivedStatus() & 3) == 3)
{
- s32 id;
u8 taskId;
ResetBlockReceivedFlags();
@@ -566,6 +597,7 @@ void sub_800F104(void)
u8 playerId;
MainCallback *pSavedCallback;
u16 *pSavedBattleTypeFlags;
+ s32 i;
playerId = GetMultiplayerId();
ewram160CB = playerId;
@@ -579,17 +611,30 @@ void sub_800F104(void)
switch (gBattleCommunication[0])
{
case 0:
- if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
+ if (gReceivedRemoteLinkPlayers != 0)
{
- sub_800F02C();
- SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x60);
- gBattleCommunication[0]++;
+#if DEBUG
+ if (gUnknown_02023A14_50 & 8)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ gLinkPlayers[i].lp_field_18 = i;
+ gLinkPlayers[i].linkType = 0x2211;
+ }
+ }
+#endif
+ if (IsLinkTaskFinished())
+ {
+ sub_800F02C();
+ SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x60);
+ gBattleCommunication[0]++;
+ }
}
break;
case 1:
if ((GetBlockReceivedStatus() & 0xF) == 0xF)
{
- s32 i;
+ //s32 i;
ResetBlockReceivedFlags();
for (i = 0; i < 4; i++)
@@ -639,14 +684,27 @@ void sub_800F298(void)
switch (gBattleCommunication[0])
{
case 0:
- if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
+ if (gReceivedRemoteLinkPlayers != 0)
{
- gBattleStruct->unk0 = 1;
- gBattleStruct->unk1 = 1;
- sub_800E9EC();
- sub_800EAAC();
- SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x20);
- gBattleCommunication[0]++;
+#if DEBUG
+ if (gUnknown_02023A14_50 & 8)
+ {
+ for (id = 0; id < 4; id++)
+ {
+ gLinkPlayers[id].lp_field_18 = id;
+ gLinkPlayers[id].linkType = 0x2211;
+ }
+ }
+#endif
+ if (IsLinkTaskFinished())
+ {
+ gBattleStruct->unk0 = 1;
+ gBattleStruct->unk1 = 1;
+ sub_800E9EC();
+ sub_800EAAC();
+ SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x20);
+ gBattleCommunication[0]++;
+ }
}
break;
case 1:
@@ -898,6 +956,29 @@ void BattleMainCB2(void)
{
AnimateSprites();
BuildOamBuffer();
+
+#if DEBUG
+ if ((gMain.heldKeys & (R_BUTTON | SELECT_BUTTON)) == ((R_BUTTON | SELECT_BUTTON)))
+ {
+ gSpecialVar_Result = gBattleOutcome = 1;
+ gMain.inBattle = FALSE;
+ gScanlineEffect.state = 3;
+ gMain.callback1 = gPreBattleCallback1;
+ ZeroEnemyPartyMons();
+ m4aSongNumStop(0x5A);
+ if (gBattleTypeFlags & 2)
+ SetMainCallback2(sub_805465C);
+ else
+ SetMainCallback2(gMain.savedCallback);
+ }
+ if (gBattleTypeFlags & 2)
+ {
+ debug_sub_8008264((gBattleTypeFlags >> 2) % 2, 1, 1, 1, 1);
+ debug_sub_8008264((gBattleTypeFlags >> 2) % 2, 1, 21, 1, 1);
+ debug_sub_8008264((gBattleTypeFlags >> 2) % 2, 1, 41, 1, 1);
+ }
+#endif
+
Text_UpdateWindowInBattle(&gUnknown_03004210);
UpdatePaletteFade();
RunTasks();
@@ -1275,6 +1356,3104 @@ void c2_081284E0(void)
}
}
+// A LOT of debug code!
+#if DEBUG
+
+extern u8 gUnknown_Debug_2023B62[];
+extern const u8 Str_821F7BD[];
+extern const u8 Str_821F7DA[];
+
+void debug_sub_8010818(void);
+void debug_sub_80108B8(void);
+void debug_sub_8010CAC(void);
+void debug_sub_8011498(void);
+void debug_sub_801174C(void);
+void debug_sub_8011D40(void);
+void debug_sub_8011E5C(void);
+void debug_sub_8011E74(void);
+void debug_sub_8011EA0(u8);
+void debug_sub_8012294(void);
+void debug_sub_80123D8(u8);
+void debug_sub_8012540(void);
+void debug_nullsub_3(void);
+void debug_sub_80125A0(void);
+void debug_sub_80125E4(void);
+void debug_sub_8012628(void);
+void debug_sub_8012688(void);
+void debug_sub_8012878(void);
+void debug_sub_8012D10(u8);
+u32 debug_sub_8013294(u8, void *, u32);
+void debug_sub_80132C8(u8, void *, u32);
+
+extern s16 gUnknown_Debug_2023A76[][0x23];
+extern s16 gUnknown_Debug_2023A76_[][7][5];
+extern s16 gUnknown_Debug_2023B02[][6][4];
+extern u8 gUnknown_Debug_03004360;
+extern struct Window gUnknown_Debug_03004370;
+extern u8 gUnknown_Debug_030043A0;
+extern u8 gUnknown_Debug_030043A4;
+extern u8 gUnknown_Debug_030043A8;
+extern u8 gBattleBuffersTransferData[];
+
+extern const u16 gUnknown_Debug_821F424[][5];
+extern const u16 gUnknown_Debug_821F56C[][5];
+extern const u32 gUnknown_Debug_821F798[][4];
+
+extern const u8 gUnusedOldCharmap_Gfx_lz[];
+extern const u8 gUnusedOldCharmap_Tilemap_lz[];
+extern const u8 gUnusedOldCharmap_Pal_lz[];
+
+void debug_sub_8010800(void)
+{
+ debug_sub_8010818();
+ debug_sub_80108B8();
+ *(u32 *)(gBattleBuffersTransferData + 0x100) = 0;
+}
+
+void debug_sub_8010818(void)
+{
+ s32 i;
+
+ gUnknown_Debug_2023A76[0][0] = 0x115;
+ gUnknown_Debug_2023A76[1][0] = 0x115;
+ for (i = 1; i < 31; i++)
+ {
+ gUnknown_Debug_2023A76[0][i] = gUnknown_Debug_821F424[i][4];
+ gUnknown_Debug_2023A76[1][i] = gUnknown_Debug_821F424[i][4];
+ }
+
+ for (i = 0; i < 6; i++)
+ {
+ for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++)
+ {
+ gUnknown_Debug_2023B02[0][i][gUnknown_Debug_030043A8] = gUnknown_Debug_821F56C[gUnknown_Debug_030043A8][0];
+ gUnknown_Debug_2023B02[1][i][gUnknown_Debug_030043A8] = gUnknown_Debug_821F56C[gUnknown_Debug_030043A8][0];
+ }
+ }
+}
+
+void debug_sub_80108B8(void)
+{
+ s32 i;
+
+ m4aSoundVSyncOff();
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ DmaFill32(3, 0, (void *)VRAM, VRAM_SIZE);
+ REG_IE = 1;
+ REG_DISPCNT = 0x1340;
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ REG_BG0CNT = 0x1F09;
+ REG_BG1CNT = 0x4801;
+ REG_BLDCNT = 0;
+ REG_BLDY = 0;
+ LZDecompressVram(gUnusedOldCharmap_Gfx_lz, (void *)VRAM);
+ LZDecompressWram(gUnusedOldCharmap_Tilemap_lz, gSharedMem);
+ LZDecompressVram(gUnusedOldCharmap_Pal_lz, (void *)PLTT);
+ LZDecompressVram(gUnusedOldCharmap_Pal_lz, (void *)(PLTT + 0x1E0));
+ m4aSoundVSyncOn();
+ SetVBlankCallback(debug_sub_8011D40);
+ SetMainCallback2(debug_sub_8010CAC);
+ ResetTasks();
+ ResetSpriteData();
+ ScanlineEffect_Stop();
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
+ Text_InitWindowWithTemplate(&gUnknown_Debug_03004370, &gWindowTemplate_81E6C3C);
+ gUnknown_Debug_03004360 = 0;
+ gUnknown_Debug_030043A0 = 0;
+ gUnknown_Debug_030043A4 = 0;
+ for (i = 0; i < 31; i++)
+ debug_sub_8011EA0(i);
+ for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++)
+ debug_sub_8012294();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ debug_sub_8012540();
+ debug_nullsub_3();
+ gUnknown_Debug_030043A8 = 0;
+ debug_sub_80125A0();
+ if (gUnknown_Debug_2023A76[0][0x22] == 8)
+ {
+ debug_sub_801174C();
+ }
+ else
+ {
+ for (i = 0; i < 8; i++)
+ gSharedMem[0x160B4 + i] = 0;
+ }
+}
+
+void debug_sub_8010A7C(u8 a, u8 b)
+{
+ s32 i;
+
+ for (i = 0; i < b; i++)
+ gBattleTextBuff1[i] = a;
+ gBattleTextBuff1[i] = EOS;
+}
+
+// gUnknown_Debug_2023A76_ seems like a 3D array, but this function refuses to match when I do that.
+#ifdef NONMATCHING
+void debug_sub_8010AAC(u8 a)
+{
+ switch (gBaseStats[gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][0]].genderRatio)
+ {
+ case 0:
+ gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] = 2;
+ break;
+ case 0xFE:
+ gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] = 3;
+ break;
+ case 0xFF:
+ gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] = 4;
+ break;
+ default:
+ gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] &= 1;
+ if (a != 0)
+ gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] ^= 1;
+ else
+ gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] = 0;
+ break;
+ }
+}
+#else
+void debug_sub_8010AAC(u8 a)
+{
+ switch (gBaseStats[gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5]].genderRatio)
+ {
+ case 0:
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] = 2;
+ break;
+ case 0xFE:
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] = 3;
+ break;
+ case 0xFF:
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] = 4;
+ break;
+ default:
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] &= 1;
+ if (a != 0)
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] ^= 1;
+ else
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] = 0;
+ break;
+ }
+}
+#endif
+
+void debug_sub_8010B80(u8 a)
+{
+ s8 r12 = 0;
+ s8 r7 = gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][gUnknown_Debug_030043A0];
+
+ while (r7 >= 10)
+ {
+ r7 -= 10;
+ r12++;
+ }
+
+ if (a & 2)
+ {
+ if (a & 1)
+ r12++;
+ else
+ r12--;
+ if (r12 < 0)
+ r12 = 9;
+ if (r12 > 9)
+ r12 = 0;
+ }
+ else
+ {
+ if (a & 1)
+ r7++;
+ else
+ r7--;
+ if (r7 < 1)
+ r7 = 9;
+ if (r7 > 9)
+ r7 = 1;
+ }
+ gUnknown_Debug_2023A76_[gUnknown_Debug_03004360 ^ 1][gUnknown_Debug_030043A4][gUnknown_Debug_030043A0]
+ = gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][gUnknown_Debug_030043A0]
+ = r12 * 10 + r7;
+}
+
+void debug_sub_8010CAC(void)
+{
+ s32 r5;
+
+ if (gMain.heldKeysRaw == 0x204)
+ DoSoftReset();
+ if (gMain.newKeysRaw == 4)
+ {
+ if (gUnknown_Debug_030043A4 < 6)
+ {
+ gUnknown_Debug_030043A8 = 0;
+ debug_sub_8012628();
+ SetMainCallback2(debug_sub_8011498);
+ }
+ //_546
+ if (gUnknown_Debug_030043A0 == 0 && gUnknown_Debug_030043A4 == 6)
+ {
+ gMain.savedCallback = debug_sub_80108B8;
+ CreateMon(
+ &gPlayerParty[0],
+ gUnknown_Debug_2023A76_[0][0][0],
+ gUnknown_Debug_2023A76_[0][0][1],
+ 32,
+ 0, 0, 0, 0);
+ for (r5 = 0; r5 < 4; r5++)
+ {
+ SetMonData(&gPlayerParty[0], MON_DATA_MOVE1 + r5, &gUnknown_Debug_2023B02[0][0][r5]);
+ SetMonData(&gPlayerParty[0], MON_DATA_PP1 + r5, &gBattleMoves[gUnknown_Debug_2023B02[0][0][r5]].pp);
+ }
+ switch (gUnknown_Debug_2023A76_[0][6][0])
+ {
+ case 1: //_550
+ gCB2_AfterEvolution = debug_sub_80108B8;
+ EvolutionScene(&gPlayerParty[0], gUnknown_Debug_2023A76_[0][1][0], 1, 0);
+ break;
+ case 2: //_551
+ debug_sub_8012688();
+ break;
+ }
+ }
+ //_555
+ if (gUnknown_Debug_030043A0 == 1 && gUnknown_Debug_030043A4 == 6)
+ {
+ // This is really weird
+ r5 = (gSaveBlock2.optionsBattleSceneOff | (gSaveBlock2.optionsSound << 1));
+ r5++;
+ if (r5 == 4)
+ r5 = 0;
+ gSaveBlock2.optionsBattleSceneOff = (r5 & 1);
+ gSaveBlock2.optionsSound = (r5 & 2) >> 1;
+ SetPokemonCryStereo(gSaveBlock2.optionsSound);
+ debug_nullsub_3();
+ }
+ }
+ //_559
+ if (gMain.newKeysRaw == 8)
+ debug_sub_801174C();
+ if (gMain.newKeysRaw == 0x40)
+ {
+ debug_sub_80125E4();
+ if (gUnknown_Debug_030043A4 != 0)
+ gUnknown_Debug_030043A4--;
+ else
+ gUnknown_Debug_030043A4 = 6;
+ debug_sub_8011E74();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ debug_sub_80125A0();
+ }
+ //_562
+ if (gMain.newKeysRaw == 0x80)
+ {
+ debug_sub_80125E4();
+ if (gUnknown_Debug_030043A4 == 6)
+ gUnknown_Debug_030043A4 = 0;
+ else
+ gUnknown_Debug_030043A4++;
+ debug_sub_8011E74();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ debug_sub_80125A0();
+ }
+ //_567
+ if (gMain.newKeysRaw == 0x20)
+ {
+ debug_sub_80125E4();
+ if (gUnknown_Debug_030043A0 != 0)
+ {
+ gUnknown_Debug_030043A0--;
+ }
+ else
+ {
+ if (gUnknown_Debug_03004360 != 0)
+ {
+ gUnknown_Debug_03004360 = 0;
+ gUnknown_Debug_030043A0 = 4;
+ gBattle_BG1_X = 0;
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ }
+ }
+ //_577
+ debug_sub_80125A0();
+ }
+ //_572
+ if (gMain.newKeysRaw == 0x10)
+ {
+ debug_sub_80125E4();
+ if (gUnknown_Debug_030043A0 != 4)
+ {
+ gUnknown_Debug_030043A0++;
+ }
+ else
+ {
+ if (gUnknown_Debug_03004360 == 0)
+ {
+ gUnknown_Debug_03004360 = 1;
+ gUnknown_Debug_030043A0 = 0;
+ gBattle_BG1_X = 0x100;
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ }
+ }
+ debug_sub_80125A0();
+ }
+ //_578
+ if (gMain.newAndRepeatedKeys & B_BUTTON)
+ {
+ switch (gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5)
+ {
+ case 31:
+ debug_sub_8010818();
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_8012540();
+ debug_nullsub_3();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ case 32:
+ debug_sub_80132C8(31, gUnknown_Debug_2023A76, 0xEC);
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_8012540();
+ debug_nullsub_3();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ case 33:
+ debug_sub_8013294(31, gUnknown_Debug_2023A76, 0xEC);
+ break;
+ case 34:
+ if (gUnknown_Debug_2023A76_[0][6][4] != 0)
+ {
+ gUnknown_Debug_2023A76_[0][6][4]--;
+ gUnknown_Debug_2023A76_[1][6][4]--;
+ }
+ else
+ {
+ gUnknown_Debug_2023A76_[0][6][4] = 8;
+ gUnknown_Debug_2023A76_[1][6][4] = 8;
+ }
+ debug_sub_8012540();
+ break;
+ case 30:
+ debug_sub_8010B80(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5);
+ break;
+ default:
+ if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6)
+ {
+ debug_sub_8010AAC(1);
+ }
+ else
+ {
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]--;
+ if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] < gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4])
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] = gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3];
+ }
+ //_613
+ if (gUnknown_Debug_030043A0 == 0)
+ {
+ debug_sub_8010AAC(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4);
+ }
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0);
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ }
+ }
+ //_607
+ if (gMain.newAndRepeatedKeys & A_BUTTON)
+ {
+ switch (gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5)
+ {
+ case 31:
+ debug_sub_8010818();
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_8012540();
+ debug_nullsub_3();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ case 32:
+ debug_sub_80132C8(31, gUnknown_Debug_2023A76, 0xEC);
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_8012540();
+ debug_nullsub_3();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ case 33:
+ debug_sub_8013294(31, gUnknown_Debug_2023A76, 0xEC);
+ break;
+ case 34:
+ if (gUnknown_Debug_2023A76_[0][6][4] < 8)
+ {
+ gUnknown_Debug_2023A76_[0][6][4]++;
+ gUnknown_Debug_2023A76_[1][6][4]++;
+ }
+ else
+ {
+ gUnknown_Debug_2023A76_[0][6][4] = 0;
+ gUnknown_Debug_2023A76_[1][6][4] = 0;
+ }
+ debug_sub_8012540();
+ break;
+ case 30:
+ debug_sub_8010B80(1);
+ debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5);
+ break;
+ default:
+ if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6)
+ {
+ debug_sub_8010AAC(1);
+ }
+ else
+ {
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]++;
+ if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] > gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3])
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] = gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4];
+ }
+ //_644
+ if (gUnknown_Debug_030043A0 == 0)
+ {
+ debug_sub_8010AAC(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4);
+ }
+ //_645
+ debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5);
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ }
+ }
+ //_638
+ if (gMain.newAndRepeatedKeys & 0x200)
+ {
+ if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6)
+ {
+ debug_sub_8010AAC(1);
+ }
+ //_648
+ else
+ {
+ if (gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0 == 30)
+ {
+ debug_sub_8010B80(2);
+ }
+ //_652
+ else
+ {
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] -= 10;
+ while (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] < gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4])
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] += gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3];
+ }
+ }
+ //_653
+ if (gUnknown_Debug_030043A0 == 0)
+ {
+ debug_sub_8010AAC(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4);
+ }
+ //_658
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0);
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ }
+ //_646
+ if (gMain.newAndRepeatedKeys & 0x100)
+ {
+ if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6)
+ {
+ debug_sub_8010AAC(1);
+ }
+ //_661
+ else
+ {
+ if (gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0 == 30)
+ {
+ debug_sub_8010B80(3);
+ }
+ //_665
+ else
+ {
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] += 10;
+ while (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] > gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3])
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] -= gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3];
+ }
+ }
+ //_666
+ if (gUnknown_Debug_030043A0 == 0)
+ {
+ debug_sub_8010AAC(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4);
+ }
+ //_671
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0);
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ }
+ //_659
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+__attribute__((naked))
+void debug_sub_8011498()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " ldr r2, ._687 @ gUnknown_Debug_030043A0\n"
+ " ldr r0, ._687 + 4 @ gUnknown_Debug_030043A4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r9, r0\n"
+ " ldr r4, ._687 + 8 @ gMain\n"
+ " ldrh r1, [r4, #0x28]\n"
+ " mov r0, #0x81\n"
+ " lsl r0, r0, #0x2\n"
+ " cmp r1, r0\n"
+ " bne ._674 @cond_branch\n"
+ " bl DoSoftReset\n"
+ "._674:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x4\n"
+ " bne ._675 @cond_branch\n"
+ " bl debug_sub_8012658\n"
+ " ldr r0, ._687 + 12 @ debug_sub_8010CAC\n"
+ " bl SetMainCallback2\n"
+ "._675:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x8\n"
+ " bne ._676 @cond_branch\n"
+ " bl debug_sub_801174C\n"
+ "._676:\n"
+ " ldrh r0, [r4, #0x2a]\n"
+ " cmp r0, #0x40\n"
+ " beq ._677 @cond_branch\n"
+ " cmp r0, #0x80\n"
+ " bne ._678 @cond_branch\n"
+ "._677:\n"
+ " bl debug_sub_8012658\n"
+ " ldr r0, ._687 + 16 @ gUnknown_Debug_030043A8\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x2\n"
+ " eor r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " bl debug_sub_8012628\n"
+ "._678:\n"
+ " ldr r0, ._687 + 8 @ gMain\n"
+ " ldrh r0, [r0, #0x2a]\n"
+ " cmp r0, #0x20\n"
+ " beq ._679 @cond_branch\n"
+ " cmp r0, #0x10\n"
+ " bne ._680 @cond_branch\n"
+ "._679:\n"
+ " bl debug_sub_8012658\n"
+ " ldr r0, ._687 + 16 @ gUnknown_Debug_030043A8\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x1\n"
+ " eor r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " bl debug_sub_8012628\n"
+ "._680:\n"
+ " ldr r0, ._687 + 8 @ gMain\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._681 @cond_branch\n"
+ " ldr r0, ._687 + 20 @ gUnknown_Debug_2023B02\n"
+ " mov r8, r0\n"
+ " ldr r6, ._687 + 16 @ gUnknown_Debug_030043A8\n"
+ " ldrb r4, [r6]\n"
+ " lsl r4, r4, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldr r5, ._687 + 24 @ gUnknown_Debug_03004360\n"
+ " ldrb r2, [r5]\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x4\n"
+ " add r4, r4, r1\n"
+ " add r4, r4, r8\n"
+ " ldrh r1, [r4]\n"
+ " sub r1, r1, #0x1\n"
+ " strh r1, [r4]\n"
+ " ldrb r3, [r6]\n"
+ " lsl r1, r3, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrb r2, [r5]\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " mov r0, r8\n"
+ " add r4, r1, r0\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " ldr r5, ._687 + 28 @ gUnknown_Debug_821F564\n"
+ " lsl r0, r3, #0x2\n"
+ " add r0, r0, r3\n"
+ " lsl r2, r0, #0x1\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r1, r0\n"
+ " bge ._682 @cond_branch\n"
+ " add r0, r5, #6\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r4]\n"
+ "._682:\n"
+ " bl debug_sub_8012294\n"
+ "._681:\n"
+ " ldr r0, ._687 + 8 @ gMain\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._683 @cond_branch\n"
+ " ldr r1, ._687 + 20 @ gUnknown_Debug_2023B02\n"
+ " mov r8, r1\n"
+ " ldr r6, ._687 + 16 @ gUnknown_Debug_030043A8\n"
+ " ldrb r4, [r6]\n"
+ " lsl r4, r4, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldr r5, ._687 + 24 @ gUnknown_Debug_03004360\n"
+ " ldrb r2, [r5]\n"
+ " lsl r1, r2, #0x1\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x4\n"
+ " add r4, r4, r1\n"
+ " add r4, r4, r8\n"
+ " ldrh r1, [r4]\n"
+ " add r1, r1, #0x1\n"
+ " strh r1, [r4]\n"
+ " ldrb r3, [r6]\n"
+ " lsl r1, r3, #0x1\n"
+ " add r1, r1, r0\n"
+ " ldrb r2, [r5]\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " mov r0, r8\n"
+ " add r4, r1, r0\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " ldr r5, ._687 + 28 @ gUnknown_Debug_821F564\n"
+ " lsl r0, r3, #0x2\n"
+ " add r0, r0, r3\n"
+ " lsl r2, r0, #0x1\n"
+ " add r0, r5, #6\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r1, r0\n"
+ " ble ._684 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r4]\n"
+ "._684:\n"
+ " bl debug_sub_8012294\n"
+ "._683:\n"
+ " ldr r0, ._687 + 8 @ gMain\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._685 @cond_branch\n"
+ " ldr r6, ._687 + 20 @ gUnknown_Debug_2023B02\n"
+ " ldr r5, ._687 + 16 @ gUnknown_Debug_030043A8\n"
+ " ldrb r4, [r5]\n"
+ " lsl r4, r4, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldr r2, ._687 + 24 @ gUnknown_Debug_03004360\n"
+ " ldrb r1, [r2]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r6\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0xa\n"
+ " strh r0, [r4]\n"
+ " mov sl, r5\n"
+ " mov r8, r6\n"
+ " add r7, r2, #0\n"
+ " ldr r6, ._687 + 28 @ gUnknown_Debug_821F564\n"
+ " b ._686\n"
+ "._688:\n"
+ " .align 2, 0\n"
+ "._687:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gMain\n"
+ " .word debug_sub_8010CAC+1\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_Debug_2023B02\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_821F564\n"
+ "._689:\n"
+ " add r0, r6, #6\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " ldrh r1, [r4]\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r4]\n"
+ "._686:\n"
+ " mov r0, sl\n"
+ " ldrb r5, [r0]\n"
+ " lsl r4, r5, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r8\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r2, r0, #0x1\n"
+ " add r0, r6, #0\n"
+ " add r0, r0, #0x8\n"
+ " add r0, r2, r0\n"
+ " ldrh r0, [r0]\n"
+ " cmp r1, r0\n"
+ " blt ._689 @cond_branch\n"
+ " bl debug_sub_8012294\n"
+ "._685:\n"
+ " ldr r0, ._692 @ gMain\n"
+ " ldrh r1, [r0, #0x30]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._690 @cond_branch\n"
+ " ldr r6, ._692 + 4 @ gUnknown_Debug_2023B02\n"
+ " ldr r5, ._692 + 8 @ gUnknown_Debug_030043A8\n"
+ " ldrb r4, [r5]\n"
+ " lsl r4, r4, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldr r2, ._692 + 12 @ gUnknown_Debug_03004360\n"
+ " ldrb r1, [r2]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r6\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0xa\n"
+ " strh r0, [r4]\n"
+ " mov sl, r5\n"
+ " mov r8, r6\n"
+ " add r7, r2, #0\n"
+ " ldr r6, ._692 + 16 @ gUnknown_Debug_821F564\n"
+ " b ._691\n"
+ "._693:\n"
+ " .align 2, 0\n"
+ "._692:\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_2023B02\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_821F564\n"
+ "._694:\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, r1\n"
+ " strh r0, [r4]\n"
+ "._691:\n"
+ " mov r1, sl\n"
+ " ldrb r5, [r1]\n"
+ " lsl r4, r5, #0x1\n"
+ " mov r0, r9\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x15\n"
+ " add r4, r4, r0\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, r8\n"
+ " mov r0, #0x0\n"
+ " ldsh r2, [r4, r0]\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r6, #6\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r0]\n"
+ " cmp r2, r1\n"
+ " bgt ._694 @cond_branch\n"
+ " bl debug_sub_8012294\n"
+ "._690:\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_801174C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xffffffe8\n"
+ " mov r0, #0x0\n"
+ " mov r9, r0\n"
+ " ldr r1, ._704 @ gUnknown_020297ED\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl Random\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " mov r0, #0x3\n"
+ " and r4, r4, r0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r6, r4, #0x18\n"
+ " ldr r5, ._704 + 4 @ gSaveBlock2\n"
+ " lsl r1, r6, #0x1\n"
+ " add r1, r1, r6\n"
+ " lsl r1, r1, #0x1\n"
+ " ldr r0, ._704 + 8 @ str_821F631\n"
+ " add r1, r1, r0\n"
+ " add r0, r5, #0\n"
+ " bl StringCopy\n"
+ " lsr r4, r4, #0x19\n"
+ " strb r4, [r5, #0x8]\n"
+ " bl ZeroPlayerPartyMons\n"
+ " bl ZeroEnemyPartyMons\n"
+ " ldr r0, ._704 + 12 @ gUnknown_Debug_2023A76\n"
+ " mov r1, #0x3c\n"
+ " ldsh r7, [r0, r1]\n"
+ " mov r2, r9\n"
+ " str r2, [sp, #0xc]\n"
+ " cmp r7, #0x9\n"
+ " ble ._695 @cond_branch\n"
+ " mov r0, #0x0\n"
+ "._696:\n"
+ " sub r7, r7, #0xa\n"
+ " add r0, r0, #0x1\n"
+ " cmp r7, #0x9\n"
+ " bgt ._696 @cond_branch\n"
+ " str r0, [sp, #0xc]\n"
+ "._695:\n"
+ " ldr r2, ._704 + 16 @ gBattleTypeFlags\n"
+ " ldr r1, ._704 + 20 @ gUnknown_Debug_821F598\n"
+ " sub r0, r7, #1\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrh r3, [r0]\n"
+ " strh r3, [r2]\n"
+ " ldr r1, ._704 + 24 @ gUnknown_02023A14_50\n"
+ " mov r0, #0x8\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._704 + 28 @ gBattleTerrain\n"
+ " add r0, sp, #0xc\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._697 @cond_branch\n"
+ " bl EnterSafariMode\n"
+ "._697:\n"
+ " ldr r5, ._704 + 12 @ gUnknown_Debug_2023A76\n"
+ " ldrh r0, [r5, #0x3c]\n"
+ " sub r0, r0, #0x2\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0x2\n"
+ " bhi ._698 @cond_branch\n"
+ " ldr r4, ._704 + 32 @ gTrainerBattleOpponent\n"
+ " bl Random\n"
+ " mov r1, #0x7\n"
+ " and r1, r1, r0\n"
+ " add r1, r1, #0x1\n"
+ " strh r1, [r4]\n"
+ "._698:\n"
+ " ldr r1, ._704 + 36 @ gPlayerPartyCount\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " mov r7, #0x0\n"
+ "._745:\n"
+ " lsl r0, r7, #0x1\n"
+ " ldr r3, ._704 + 12 @ gUnknown_Debug_2023A76\n"
+ " add r1, r0, r3\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r1, r2]\n"
+ " add r2, r3, #0\n"
+ " mov r8, r0\n"
+ " add r3, r7, #5\n"
+ " mov sl, r3\n"
+ " cmp r1, #0\n"
+ " beq ._699 @cond_branch\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r2, #0\n"
+ " add r0, r0, r1\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r0, r3]\n"
+ " cmp r0, #0x1\n"
+ " beq ._707 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._701 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._706 @cond_branch\n"
+ " b ._708\n"
+ "._705:\n"
+ " .align 2, 0\n"
+ "._704:\n"
+ " .word gUnknown_020297ED\n"
+ " .word gSaveBlock2\n"
+ " .word str_821F631\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gBattleTypeFlags\n"
+ " .word gUnknown_Debug_821F598\n"
+ " .word gUnknown_02023A14_50\n"
+ " .word gBattleTerrain\n"
+ " .word gTrainerBattleOpponent\n"
+ " .word gPlayerPartyCount\n"
+ "._701:\n"
+ " cmp r0, #0x2\n"
+ " beq ._706 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._707 @cond_branch\n"
+ " b ._708\n"
+ "._706:\n"
+ " mov r6, #0x0\n"
+ " b ._710\n"
+ "._707:\n"
+ " mov r6, #0xfe\n"
+ " b ._710\n"
+ "._708:\n"
+ " mov r6, #0xff\n"
+ "._710:\n"
+ " mov r1, r8\n"
+ " add r0, r1, r2\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r0, r3]\n"
+ " add r1, r7, #5\n"
+ " mov sl, r1\n"
+ " cmp r0, #0xc9\n"
+ " bne ._712 @cond_branch\n"
+ " cmp r1, #0x1d\n"
+ " bgt ._712 @cond_branch\n"
+ " add r0, r7, #7\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r2\n"
+ " ldrb r0, [r0]\n"
+ " mov r9, r0\n"
+ " b ._713\n"
+ "._712:\n"
+ " mov r2, #0x0\n"
+ " mov r9, r2\n"
+ "._713:\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r3, #0x64\n"
+ " mul r0, r0, r3\n"
+ " ldr r1, ._719 @ gEnemyParty\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._719 + 4 @ gUnknown_Debug_2023A76\n"
+ " add r1, r1, r8\n"
+ " ldrh r1, [r1]\n"
+ " add r2, r7, #1\n"
+ " lsl r2, r2, #0x1\n"
+ " ldr r3, ._719 + 4 @ gUnknown_Debug_2023A76\n"
+ " add r2, r2, r3\n"
+ " ldrb r2, [r2]\n"
+ " str r6, [sp]\n"
+ " mov r3, #0x0\n"
+ " str r3, [sp, #0x4]\n"
+ " mov r3, r9\n"
+ " str r3, [sp, #0x8]\n"
+ " mov r3, #0x0\n"
+ " bl CreateMonWithGenderNatureLetter\n"
+ "._699:\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r2, #0x64\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r2\n"
+ " ldr r0, ._719 @ gEnemyParty\n"
+ " add r5, r1, r0\n"
+ " ldr r4, ._719 + 8 @ gUnknown_Debug_2023A7A\n"
+ " mov r3, r8\n"
+ " add r6, r3, r4\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xc\n"
+ " add r2, r6, #0\n"
+ " bl SetMonData\n"
+ " sub r4, r4, #0x4\n"
+ " add r1, r7, #2\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r4\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " str r1, [sp, #0x10]\n"
+ " cmp r0, #0xb\n"
+ " bhi ._714 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x26\n"
+ " add r2, r6, #0\n"
+ " bl SetMonData\n"
+ "._714:\n"
+ " add r1, r7, #3\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r4\n"
+ " mov r3, #0x0\n"
+ " ldsh r2, [r0, r3]\n"
+ " str r1, [sp, #0x14]\n"
+ " cmp r2, #0\n"
+ " beq ._716 @cond_branch\n"
+ " cmp r2, #0x3\n"
+ " beq ._716 @cond_branch\n"
+ " cmp r2, #0x2\n"
+ " bgt ._717 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " sub r0, r0, #0x1\n"
+ " b ._718\n"
+ "._720:\n"
+ " .align 2, 0\n"
+ "._719:\n"
+ " .word gEnemyParty\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_2023A7A\n"
+ "._717:\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r0, r2]\n"
+ " sub r0, r0, #0x4\n"
+ "._718:\n"
+ " str r0, [sp, #0xc]\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r3, #0x64\n"
+ " mul r0, r0, r3\n"
+ " ldr r1, ._726 @ gEnemyParty\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x2e\n"
+ " add r2, sp, #0xc\n"
+ " bl SetMonData\n"
+ "._716:\n"
+ " ldr r1, ._726 + 4 @ gUnknown_Debug_2023A76\n"
+ " add r1, r1, #0x46\n"
+ " mov r2, r8\n"
+ " add r0, r2, r1\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r0, r3]\n"
+ " ldr r2, ._726 + 4 @ gUnknown_Debug_2023A76\n"
+ " cmp r0, #0\n"
+ " beq ._721 @cond_branch\n"
+ " add r0, r7, #4\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._729 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._723 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._728 @cond_branch\n"
+ " b ._730\n"
+ "._727:\n"
+ " .align 2, 0\n"
+ "._726:\n"
+ " .word gEnemyParty\n"
+ " .word gUnknown_Debug_2023A76\n"
+ "._723:\n"
+ " cmp r0, #0x2\n"
+ " beq ._728 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._729 @cond_branch\n"
+ " b ._730\n"
+ "._728:\n"
+ " mov r6, #0x0\n"
+ " b ._732\n"
+ "._729:\n"
+ " mov r6, #0xfe\n"
+ " b ._732\n"
+ "._730:\n"
+ " mov r6, #0xff\n"
+ "._732:\n"
+ " add r1, r2, #0\n"
+ " add r1, r1, #0x46\n"
+ " mov r2, r8\n"
+ " add r0, r2, r1\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r0, r3]\n"
+ " cmp r0, #0xc9\n"
+ " bne ._734 @cond_branch\n"
+ " mov r0, sl\n"
+ " cmp r0, #0x1d\n"
+ " bgt ._734 @cond_branch\n"
+ " add r0, r7, #7\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " mov r9, r0\n"
+ " b ._735\n"
+ "._734:\n"
+ " mov r1, #0x0\n"
+ " mov r9, r1\n"
+ "._735:\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r2, #0x64\n"
+ " mul r0, r0, r2\n"
+ " ldr r1, ._741 @ gPlayerParty\n"
+ " add r0, r0, r1\n"
+ " ldr r1, ._741 + 4 @ gUnknown_Debug_2023ABC\n"
+ " add r1, r1, r8\n"
+ " ldrh r1, [r1]\n"
+ " add r2, r7, #1\n"
+ " lsl r2, r2, #0x1\n"
+ " ldr r3, ._741 + 4 @ gUnknown_Debug_2023ABC\n"
+ " add r2, r2, r3\n"
+ " ldrb r2, [r2]\n"
+ " str r6, [sp]\n"
+ " mov r3, #0x0\n"
+ " str r3, [sp, #0x4]\n"
+ " mov r3, r9\n"
+ " str r3, [sp, #0x8]\n"
+ " mov r3, #0x0\n"
+ " bl CreateMonWithGenderNatureLetter\n"
+ " ldr r1, ._741 + 8 @ gPlayerPartyCount\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._721:\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r2, #0x64\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r2\n"
+ " ldr r0, ._741 @ gPlayerParty\n"
+ " add r4, r1, r0\n"
+ " ldr r0, ._741 + 12 @ gUnknown_Debug_2023AC0\n"
+ " mov r3, r8\n"
+ " add r5, r3, r0\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xc\n"
+ " add r2, r5, #0\n"
+ " bl SetMonData\n"
+ " ldr r1, [sp, #0x10]\n"
+ " lsl r0, r1, #0x1\n"
+ " ldr r2, ._741 + 16 @ gUnknown_Debug_2023A76\n"
+ " add r0, r0, r2\n"
+ " ldrh r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bhi ._736 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x26\n"
+ " add r2, r5, #0\n"
+ " bl SetMonData\n"
+ "._736:\n"
+ " ldr r3, [sp, #0x14]\n"
+ " lsl r0, r3, #0x1\n"
+ " ldr r1, ._741 + 4 @ gUnknown_Debug_2023ABC\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " cmp r1, #0\n"
+ " beq ._738 @cond_branch\n"
+ " cmp r1, #0x3\n"
+ " beq ._738 @cond_branch\n"
+ " cmp r1, #0x2\n"
+ " bgt ._739 @cond_branch\n"
+ " add r0, r1, #0\n"
+ " sub r0, r0, #0x1\n"
+ " b ._740\n"
+ "._742:\n"
+ " .align 2, 0\n"
+ "._741:\n"
+ " .word gPlayerParty\n"
+ " .word gUnknown_Debug_2023ABC\n"
+ " .word gPlayerPartyCount\n"
+ " .word gUnknown_Debug_2023AC0\n"
+ " .word gUnknown_Debug_2023A76\n"
+ "._739:\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " sub r0, r0, #0x4\n"
+ "._740:\n"
+ " str r0, [sp, #0xc]\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r2, #0x64\n"
+ " mul r0, r0, r2\n"
+ " ldr r1, ._750 @ gPlayerParty\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x2e\n"
+ " add r2, sp, #0xc\n"
+ " bl SetMonData\n"
+ "._738:\n"
+ " ldr r3, [sp, #0x14]\n"
+ " lsl r0, r3, #0x1\n"
+ " ldr r1, ._750 + 4 @ gUnknown_Debug_2023ABC\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r0, r2]\n"
+ " cmp r0, #0x2\n"
+ " ble ._743 @cond_branch\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x5\n"
+ " bl __divsi3\n"
+ " mov r3, #0x64\n"
+ " mul r0, r0, r3\n"
+ " ldr r1, ._750 @ gPlayerParty\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x7\n"
+ " ldr r2, ._750 + 8 @ Str_821F649\n"
+ " bl SetMonData\n"
+ " ldr r2, ._750 + 12 @ gUnknown_02023A14_50\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x40\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ "._743:\n"
+ " mov r7, sl\n"
+ " cmp r7, #0x1d\n"
+ " bgt ._744 @cond_branch\n"
+ " b ._745\n"
+ "._744:\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp, #0xc]\n"
+ " mov r0, #0x64\n"
+ " mov r8, r0\n"
+ " ldr r1, ._750 + 16 @ gUnknown_Debug_2023B02\n"
+ " mov r9, r1\n"
+ " ldr r2, ._750 @ gPlayerParty\n"
+ " mov sl, r2\n"
+ "._747:\n"
+ " mov r7, #0x0\n"
+ "._746:\n"
+ " ldr r2, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " mul r0, r0, r2\n"
+ " ldr r3, ._750 + 20 @ gEnemyParty\n"
+ " add r0, r0, r3\n"
+ " add r5, r7, #0\n"
+ " add r5, r5, #0xd\n"
+ " lsl r2, r2, #0x3\n"
+ " lsl r4, r7, #0x1\n"
+ " mov r3, r9\n"
+ " add r1, r4, r3\n"
+ " add r2, r2, r1\n"
+ " add r1, r5, #0\n"
+ " bl SetMonData\n"
+ " ldr r1, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " mul r0, r0, r1\n"
+ " ldr r2, ._750 + 20 @ gEnemyParty\n"
+ " add r0, r0, r2\n"
+ " add r6, r7, #0\n"
+ " add r6, r6, #0x11\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r4, r1\n"
+ " add r1, r1, r9\n"
+ " mov r3, #0x0\n"
+ " ldsh r1, [r1, r3]\n"
+ " lsl r2, r1, #0x1\n"
+ " add r2, r2, r1\n"
+ " lsl r2, r2, #0x2\n"
+ " ldr r1, ._750 + 24 @ gBattleMoves\n"
+ " add r2, r2, r1\n"
+ " add r1, r6, #0\n"
+ " bl SetMonData\n"
+ " ldr r2, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " mul r0, r0, r2\n"
+ " add r0, r0, sl\n"
+ " lsl r2, r2, #0x3\n"
+ " ldr r3, ._750 + 28 @ gUnknown_Debug_2023B32\n"
+ " add r1, r4, r3\n"
+ " add r2, r2, r1\n"
+ " add r1, r5, #0\n"
+ " bl SetMonData\n"
+ " ldr r1, [sp, #0xc]\n"
+ " mov r0, r8\n"
+ " mul r0, r0, r1\n"
+ " add r0, r0, sl\n"
+ " lsl r1, r1, #0x3\n"
+ " add r4, r4, r1\n"
+ " ldr r1, ._750 + 28 @ gUnknown_Debug_2023B32\n"
+ " add r4, r4, r1\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r4, r2]\n"
+ " lsl r2, r1, #0x1\n"
+ " add r2, r2, r1\n"
+ " lsl r2, r2, #0x2\n"
+ " ldr r3, ._750 + 24 @ gBattleMoves\n"
+ " add r2, r2, r3\n"
+ " add r1, r6, #0\n"
+ " bl SetMonData\n"
+ " add r7, r7, #0x1\n"
+ " cmp r7, #0x3\n"
+ " ble ._746 @cond_branch\n"
+ " ldr r0, [sp, #0xc]\n"
+ " add r0, r0, #0x1\n"
+ " str r0, [sp, #0xc]\n"
+ " cmp r0, #0x5\n"
+ " ble ._747 @cond_branch\n"
+ " ldr r3, ._750 + 32 @ gUnknown_Debug_2023A76\n"
+ " add r4, r3, #0\n"
+ " add r4, r4, #0x44\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " cmp r0, #0x8\n"
+ " bne ._748 @cond_branch\n"
+ " ldr r0, ._750 + 12 @ gUnknown_02023A14_50\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x80\n"
+ " b ._753\n"
+ "._751:\n"
+ " .align 2, 0\n"
+ "._750:\n"
+ " .word gPlayerParty\n"
+ " .word gUnknown_Debug_2023ABC\n"
+ " .word Str_821F649\n"
+ " .word gUnknown_02023A14_50\n"
+ " .word gUnknown_Debug_2023B02\n"
+ " .word gEnemyParty\n"
+ " .word gBattleMoves+0x4\n"
+ " .word gUnknown_Debug_2023B32\n"
+ " .word gUnknown_Debug_2023A76\n"
+ "._748:\n"
+ " cmp r0, #0x7\n"
+ " bne ._752 @cond_branch\n"
+ " ldr r0, ._754 @ gUnknown_02023A14_50\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x20\n"
+ " b ._753\n"
+ "._755:\n"
+ " .align 2, 0\n"
+ "._754:\n"
+ " .word gUnknown_02023A14_50\n"
+ "._752:\n"
+ " cmp r0, #0x6\n"
+ " bne ._756 @cond_branch\n"
+ " ldr r2, ._759 @ gUnknown_02023A14_50\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x10\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " ldrh r1, [r3, #0x4]\n"
+ " mov r2, #0x4\n"
+ " ldsh r0, [r3, r2]\n"
+ " cmp r0, #0x5\n"
+ " ble ._757 @cond_branch\n"
+ " ldr r0, ._759 + 4 @ gSharedMem\n"
+ " sub r1, r1, #0x2\n"
+ " ldr r3, ._759 + 8 @ 0x160a3\n"
+ " add r0, r0, r3\n"
+ " b ._761\n"
+ "._760:\n"
+ " .align 2, 0\n"
+ "._759:\n"
+ " .word gUnknown_02023A14_50\n"
+ " .word gSharedMem\n"
+ " .word 0x160a3\n"
+ "._757:\n"
+ " ldr r0, ._762 @ gSharedMem\n"
+ " ldr r2, ._762 + 4 @ 0x160a3\n"
+ " add r0, r0, r2\n"
+ " b ._761\n"
+ "._763:\n"
+ " .align 2, 0\n"
+ "._762:\n"
+ " .word gSharedMem\n"
+ " .word 0x160a3\n"
+ "._756:\n"
+ " cmp r0, #0x5\n"
+ " bne ._764 @cond_branch\n"
+ " ldr r0, ._766 @ gUnknown_02023A14_50\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x21\n"
+ "._753:\n"
+ " orr r1, r1, r2\n"
+ "._761:\n"
+ " strb r1, [r0]\n"
+ " bl sub_80408BC\n"
+ " b ._770\n"
+ "._767:\n"
+ " .align 2, 0\n"
+ "._766:\n"
+ " .word gUnknown_02023A14_50\n"
+ "._764:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._768 @cond_branch\n"
+ " bl sub_80408BC\n"
+ "._768:\n"
+ " ldrh r3, [r4]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._769 @cond_branch\n"
+ " ldr r0, ._772 @ gUnknown_02023A14_50\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x4\n"
+ " orr r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ "._769:\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._770 @cond_branch\n"
+ " ldr r0, ._772 @ gUnknown_02023A14_50\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x6\n"
+ " orr r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ "._770:\n"
+ " ldr r0, ._772 + 4 @ gMain\n"
+ " ldr r1, ._772 + 8 @ debug_sub_80108B8\n"
+ " str r1, [r0, #0x8]\n"
+ " ldr r0, ._772 + 12 @ unref_sub_800D684\n"
+ " bl SetMainCallback2\n"
+ " bl ClearBag\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x3\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x5\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x6\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x7\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x8\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x9\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0xa\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0xb\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0xc\n"
+ " mov r1, #0xa\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x13\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x14\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x19\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x22\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x23\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x25\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x49\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4a\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4b\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4c\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4d\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x4e\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " mov r0, #0x50\n"
+ " mov r1, #0x63\n"
+ " bl AddBagItem\n"
+ " ldr r4, ._772 + 16 @ gUnknown_Debug_821F5AC\n"
+ " mov r7, #0xe\n"
+ "._771:\n"
+ " add r0, r4, #0\n"
+ " bl sub_810CA34\n"
+ " add r4, r4, #0x8\n"
+ " sub r7, r7, #0x1\n"
+ " cmp r7, #0\n"
+ " bge ._771 @cond_branch\n"
+ " add sp, sp, #0x18\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._773:\n"
+ " .align 2, 0\n"
+ "._772:\n"
+ " .word gUnknown_02023A14_50\n"
+ " .word gMain\n"
+ " .word debug_sub_80108B8+1\n"
+ " .word unref_sub_800D684+1\n"
+ " .word gUnknown_Debug_821F5AC\n"
+ "\n"
+ );
+}
+
+void debug_sub_8011D40(void)
+{
+ DmaCopy16(3, gSharedMem, (void *)(VRAM + 0x4000), 0x1000);
+ REG_BG0HOFS = gBattle_BG0_X;
+ REG_BG0VOFS = gBattle_BG0_Y;
+ REG_BG1HOFS = gBattle_BG1_X;
+ REG_BG1VOFS = gBattle_BG1_Y;
+ REG_BG2HOFS = gBattle_BG2_X;
+ REG_BG2VOFS = gBattle_BG2_Y;
+ REG_BG3HOFS = gBattle_BG3_X;
+ REG_BG3VOFS = gBattle_BG3_Y;
+ LoadOam();
+ ProcessSpriteCopyRequests();
+}
+
+void debug_nullsub_45()
+{
+}
+
+void debug_sub_8011DD4(void)
+{
+ REG_BG0CNT = 0x9803;
+
+ REG_BG0HOFS = gBattle_BG0_X;
+ REG_BG0VOFS = gBattle_BG0_Y;
+
+ REG_BG1HOFS = gBattle_BG1_X;
+ REG_BG1VOFS = gBattle_BG1_Y;
+
+ REG_BG2HOFS = gBattle_BG2_X;
+ REG_BG2VOFS = gBattle_BG2_Y;
+
+ REG_BG3HOFS = gBattle_BG3_X;
+ REG_BG3VOFS = gBattle_BG3_Y;
+
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ ScanlineEffect_InitHBlankDmaTransfer();
+}
+
+void debug_sub_8011E5C(void)
+{
+ s32 i;
+
+ for (i = 0; i < 31; i++)
+ debug_sub_8011EA0(i);
+}
+
+extern u8 gUnknown_Debug_030043A8;
+
+void debug_sub_8011E74(void)
+{
+ u8 r5 = gUnknown_Debug_030043A8;
+
+ for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++)
+ debug_sub_8012294();
+
+ gUnknown_Debug_030043A8 = r5;
+}
+
+__attribute__((naked))
+void debug_sub_8011EA0(u8 a)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffff4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r7, #0x22\n"
+ " bls ._782 @cond_branch\n"
+ " b ._815\n"
+ "._782:\n"
+ " lsl r0, r7, #0x2\n"
+ " ldr r1, ._785 @ \n"
+ " add r1, r0, r1\n"
+ " ldr r1, [r1]\n"
+ " str r0, [sp, #0x8]\n"
+ " mov pc, r1\n"
+ "._786:\n"
+ " .align 2, 0\n"
+ "._785:\n"
+ " .word ._784\n"
+ "._784:\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._812\n"
+ " .word ._817\n"
+ " .word ._814\n"
+ " .word ._815\n"
+ " .word ._816\n"
+ " .word ._817\n"
+ " .word ._848\n"
+ " .word ._848\n"
+ " .word ._848\n"
+ " .word ._848\n"
+ "._812:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x14\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r6, ._823 @ gBattleTextBuff1\n"
+ " ldr r2, ._823 + 4 @ gUnknown_Debug_821F424\n"
+ " ldr r0, [sp, #0x8]\n"
+ " add r1, r0, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r2\n"
+ " ldrh r0, [r0]\n"
+ " str r0, [sp, #0x4]\n"
+ " add r0, r2, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r0, [r0]\n"
+ " mov r8, r0\n"
+ " add r2, r2, #0x4\n"
+ " add r1, r1, r2\n"
+ " ldrb r1, [r1]\n"
+ " mov r9, r1\n"
+ " str r1, [sp]\n"
+ " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n"
+ " add r1, r6, #0\n"
+ " ldr r2, [sp, #0x4]\n"
+ " mov r3, r8\n"
+ " bl Text_InitWindow\n"
+ " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldr r1, ._823 + 12 @ gUnknown_Debug_2023A76\n"
+ " mov sl, r1\n"
+ " lsl r4, r7, #0x1\n"
+ " ldr r5, ._823 + 16 @ gUnknown_Debug_03004360\n"
+ " ldrb r0, [r5]\n"
+ " mov r7, #0x46\n"
+ " mul r0, r0, r7\n"
+ " add r0, r4, r0\n"
+ " add r0, r0, sl\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r2, #0xd3\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrb r3, [r5]\n"
+ " lsl r3, r3, #0x5\n"
+ " add r3, r3, #0x19\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n"
+ " add r1, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n"
+ " bl Text_PrintWindow8002F44\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r6]\n"
+ " ldrb r0, [r5]\n"
+ " mul r0, r0, r7\n"
+ " add r4, r4, r0\n"
+ " add r4, r4, sl\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " mov r0, #0xb\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._823 + 20 @ gSpeciesNames\n"
+ " add r1, r1, r0\n"
+ " add r0, r6, #0\n"
+ " bl StringAppend\n"
+ " mov r1, r9\n"
+ " str r1, [sp]\n"
+ " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n"
+ " add r1, r6, #0\n"
+ " ldr r2, [sp, #0x4]\n"
+ " mov r3, r8\n"
+ " bl Text_InitWindow\n"
+ " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n"
+ " bl Text_PrintWindow8002F44\n"
+ " b ._848\n"
+ "._824:\n"
+ " .align 2, 0\n"
+ "._823:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_821F424\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gSpeciesNames\n"
+ "._817:\n"
+ " ldr r6, ._826 @ gBattleTextBuff1\n"
+ " ldr r3, ._826 + 4 @ gUnknown_Debug_2023A76\n"
+ " lsl r1, r7, #0x1\n"
+ " ldr r0, ._826 + 8 @ gUnknown_Debug_03004360\n"
+ " ldrb r2, [r0]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r3\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r1, r2]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " b ._825\n"
+ "._827:\n"
+ " .align 2, 0\n"
+ "._826:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_03004360\n"
+ "._814:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x18\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r6, ._830 @ gUnknown_Debug_03004370\n"
+ " ldr r1, ._830 + 4 @ gBattleTextBuff1\n"
+ " mov sl, r1\n"
+ " ldr r4, ._830 + 8 @ gUnknown_Debug_821F424\n"
+ " ldr r2, [sp, #0x8]\n"
+ " add r1, r2, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r4, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r4, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1]\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " mov r1, sl\n"
+ " bl Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " lsl r4, r7, #0x1\n"
+ " ldr r5, ._830 + 12 @ gUnknown_Debug_03004360\n"
+ " ldrb r0, [r5]\n"
+ " mov r1, #0x46\n"
+ " mul r0, r0, r1\n"
+ " add r0, r4, r0\n"
+ " ldr r2, ._830 + 16 @ gUnknown_Debug_2023A76\n"
+ " add r0, r0, r2\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " mov r0, sl\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r2, #0xd3\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrb r3, [r5]\n"
+ " lsl r3, r3, #0x5\n"
+ " add r3, r3, #0x19\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " mov r1, sl\n"
+ " bl Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " mov r0, #0xff\n"
+ " mov r1, sl\n"
+ " strb r0, [r1]\n"
+ " ldrb r0, [r5]\n"
+ " mov r2, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r4, r4, r0\n"
+ " ldr r0, ._830 + 16 @ gUnknown_Debug_2023A76\n"
+ " add r4, r4, r0\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._828 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " bl ItemId_GetItem\n"
+ " add r1, r0, #0\n"
+ " mov r0, sl\n"
+ " bl StringAppend\n"
+ " b ._829\n"
+ "._831:\n"
+ " .align 2, 0\n"
+ "._830:\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_821F424\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_2023A76\n"
+ "._828:\n"
+ " ldr r1, ._833 @ Str_821F624\n"
+ " mov r0, sl\n"
+ " bl StringAppend\n"
+ "._829:\n"
+ " ldr r6, ._833 + 4 @ gUnknown_Debug_03004370\n"
+ " ldr r1, ._833 + 8 @ gBattleTextBuff1\n"
+ " ldr r5, ._833 + 12 @ gUnknown_Debug_821F424\n"
+ " ldr r2, [sp, #0x8]\n"
+ " add r4, r2, r7\n"
+ " lsl r4, r4, #0x1\n"
+ " add r0, r4, r5\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r5, #2\n"
+ " add r0, r4, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r5, r5, #0x4\n"
+ " add r4, r4, r5\n"
+ " ldrb r0, [r4]\n"
+ " str r0, [sp]\n"
+ " add r0, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r6, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " b ._848\n"
+ "._834:\n"
+ " .align 2, 0\n"
+ "._833:\n"
+ " .word Str_821F624\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_821F424\n"
+ "._816:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x4\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r5, ._839 @ gUnknown_Debug_03004370\n"
+ " ldr r6, ._839 + 4 @ gBattleTextBuff1\n"
+ " ldr r4, ._839 + 8 @ gUnknown_Debug_821F424\n"
+ " ldr r0, [sp, #0x8]\n"
+ " add r1, r0, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r4, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r4, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " mov r4, #0x0\n"
+ " ldr r3, ._839 + 12 @ gUnknown_Debug_2023A76\n"
+ " lsl r1, r7, #0x1\n"
+ " ldr r0, ._839 + 16 @ gUnknown_Debug_03004360\n"
+ " ldrb r2, [r0]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r3\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r1, r2]\n"
+ " cmp r0, #0x1\n"
+ " beq ._835 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._836 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._837 @cond_branch\n"
+ " b ._843\n"
+ "._840:\n"
+ " .align 2, 0\n"
+ "._839:\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_821F424\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_03004360\n"
+ "._836:\n"
+ " cmp r0, #0x2\n"
+ " beq ._841 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._842 @cond_branch\n"
+ " b ._843\n"
+ "._837:\n"
+ " mov r0, #0xb5\n"
+ " b ._844\n"
+ "._835:\n"
+ " mov r0, #0xb6\n"
+ "._844:\n"
+ " strb r0, [r6]\n"
+ " mov r4, #0x1\n"
+ " b ._847\n"
+ "._841:\n"
+ " mov r0, #0xb5\n"
+ " b ._846\n"
+ "._842:\n"
+ " mov r0, #0xb6\n"
+ "._846:\n"
+ " strb r0, [r6]\n"
+ " strb r0, [r6, #0x1]\n"
+ " mov r4, #0x2\n"
+ " b ._847\n"
+ "._843:\n"
+ " ldr r2, ._849 @ gBattleTextBuff1\n"
+ " add r1, r4, r2\n"
+ " mov r0, #0xac\n"
+ " strb r0, [r1]\n"
+ " add r4, r4, #0x1\n"
+ " add r6, r2, #0\n"
+ "._847:\n"
+ " add r1, r4, r6\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r1]\n"
+ "._825:\n"
+ " ldr r5, ._849 + 4 @ gUnknown_Debug_03004370\n"
+ " ldr r4, ._849 + 8 @ gUnknown_Debug_821F424\n"
+ " ldr r0, [sp, #0x8]\n"
+ " add r1, r0, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r4, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r4, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " b ._848\n"
+ "._850:\n"
+ " .align 2, 0\n"
+ "._849:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gUnknown_Debug_821F424\n"
+ "._815:\n"
+ " ldr r6, ._851 @ gBattleTextBuff1\n"
+ " ldr r3, ._851 + 4 @ gUnknown_Debug_2023A76\n"
+ " lsl r1, r7, #0x1\n"
+ " ldr r0, ._851 + 8 @ gUnknown_Debug_03004360\n"
+ " ldrb r2, [r0]\n"
+ " mov r0, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r1, r1, r0\n"
+ " add r1, r1, r3\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r1, r2]\n"
+ " add r0, r6, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r5, ._851 + 12 @ gUnknown_Debug_03004370\n"
+ " ldr r4, ._851 + 16 @ gUnknown_Debug_821F424\n"
+ " lsl r1, r7, #0x2\n"
+ " add r1, r1, r7\n"
+ " lsl r1, r1, #0x1\n"
+ " add r0, r1, r4\n"
+ " ldrh r2, [r0]\n"
+ " add r0, r4, #2\n"
+ " add r0, r1, r0\n"
+ " ldrb r3, [r0]\n"
+ " add r4, r4, #0x4\n"
+ " add r1, r1, r4\n"
+ " ldrb r0, [r1]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ "._848:\n"
+ " add sp, sp, #0xc\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._852:\n"
+ " .align 2, 0\n"
+ "._851:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gUnknown_Debug_821F424\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012294()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " ldr r2, ._854 @ gUnknown_Debug_030043A0\n"
+ " ldr r0, ._854 + 4 @ gUnknown_Debug_030043A4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x1d\n"
+ " bhi ._853 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x18\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r0, ._854 + 8 @ gUnknown_Debug_03004370\n"
+ " mov sl, r0\n"
+ " ldr r1, ._854 + 12 @ gBattleTextBuff1\n"
+ " mov r9, r1\n"
+ " ldr r2, ._854 + 16 @ gUnknown_Debug_821F564\n"
+ " mov r8, r2\n"
+ " ldr r7, ._854 + 20 @ gUnknown_Debug_030043A8\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x1\n"
+ " add r1, r0, r2\n"
+ " ldrh r2, [r1]\n"
+ " ldr r3, ._854 + 24 @ gUnknown_Debug_821F566\n"
+ " add r1, r0, r3\n"
+ " ldrb r3, [r1]\n"
+ " ldr r1, ._854 + 28 @ gUnknown_Debug_821F568\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, sl\n"
+ " mov r1, r9\n"
+ " bl Text_InitWindow\n"
+ " mov r0, sl\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldrb r4, [r7]\n"
+ " lsl r4, r4, #0x1\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x5\n"
+ " bl __udivsi3\n"
+ " add r5, r0, #0\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x15\n"
+ " add r4, r4, r5\n"
+ " ldr r6, ._854 + 32 @ gUnknown_Debug_03004360\n"
+ " ldrb r1, [r6]\n"
+ " lsl r0, r1, #0x1\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x4\n"
+ " add r4, r4, r0\n"
+ " ldr r2, ._854 + 36 @ gUnknown_Debug_2023B02\n"
+ " add r4, r4, r2\n"
+ " mov r3, #0x0\n"
+ " ldsh r1, [r4, r3]\n"
+ " mov r0, r9\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r2, #0xd3\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrb r3, [r6]\n"
+ " lsl r3, r3, #0x5\n"
+ " add r3, r3, #0x19\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, sl\n"
+ " mov r1, r9\n"
+ " bl Text_InitWindow\n"
+ " mov r0, sl\n"
+ " bl Text_PrintWindow8002F44\n"
+ " mov r0, #0xff\n"
+ " mov r1, r9\n"
+ " strb r0, [r1]\n"
+ " ldrb r1, [r7]\n"
+ " lsl r1, r1, #0x1\n"
+ " add r1, r1, r5\n"
+ " ldrb r2, [r6]\n"
+ " lsl r0, r2, #0x1\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r2, ._854 + 36 @ gUnknown_Debug_2023B02\n"
+ " add r1, r1, r2\n"
+ " mov r3, #0x0\n"
+ " ldsh r1, [r1, r3]\n"
+ " mov r0, #0xd\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._854 + 40 @ gMoveNames\n"
+ " add r1, r1, r0\n"
+ " mov r0, r9\n"
+ " bl StringAppend\n"
+ " ldrb r1, [r7]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x1\n"
+ " add r8, r8, r0\n"
+ " mov r1, r8\n"
+ " ldrh r2, [r1]\n"
+ " ldr r3, ._854 + 24 @ gUnknown_Debug_821F566\n"
+ " add r1, r0, r3\n"
+ " ldrb r3, [r1]\n"
+ " ldr r1, ._854 + 28 @ gUnknown_Debug_821F568\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, sl\n"
+ " mov r1, r9\n"
+ " bl Text_InitWindow\n"
+ " mov r0, sl\n"
+ " bl Text_PrintWindow8002F44\n"
+ "._853:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._855:\n"
+ " .align 2, 0\n"
+ "._854:\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_821F564\n"
+ " .word gUnknown_Debug_030043A8\n"
+ " .word gUnknown_Debug_821F566\n"
+ " .word gUnknown_Debug_821F568\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_2023B02\n"
+ " .word gMoveNames\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80123D8(u8 a)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x1d\n"
+ " bhi ._856 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x12\n"
+ " bl debug_sub_8010A7C\n"
+ " ldr r4, ._858 @ gUnknown_Debug_03004370\n"
+ " ldr r0, ._858 + 4 @ gBattleTextBuff1\n"
+ " mov r8, r0\n"
+ " ldr r6, ._858 + 8 @ gUnknown_Debug_821F58C\n"
+ " ldrh r1, [r6]\n"
+ " mov sl, r1\n"
+ " ldrb r7, [r6, #0x2]\n"
+ " ldrb r2, [r6, #0x4]\n"
+ " mov r9, r2\n"
+ " str r2, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " mov r2, sl\n"
+ " add r3, r7, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " lsl r5, r5, #0x1\n"
+ " ldr r1, ._858 + 12 @ gUnknown_Debug_03004360\n"
+ " ldrb r0, [r1]\n"
+ " mov r2, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r0, r5, r0\n"
+ " ldr r1, ._858 + 16 @ gUnknown_Debug_2023A76\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " lsl r0, r1, #0x3\n"
+ " sub r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._858 + 20 @ gBaseStats\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0, #0x16]\n"
+ " mov r2, #0xd\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r2\n"
+ " ldr r0, ._858 + 24 @ gAbilityNames\n"
+ " add r1, r1, r0\n"
+ " mov r0, r8\n"
+ " bl StringCopy\n"
+ " mov r1, r9\n"
+ " str r1, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " mov r2, sl\n"
+ " add r3, r7, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x12\n"
+ " bl debug_sub_8010A7C\n"
+ " ldrh r2, [r6, #0x6]\n"
+ " mov r9, r2\n"
+ " ldrb r0, [r6, #0x8]\n"
+ " mov sl, r0\n"
+ " ldrb r6, [r6, #0xa]\n"
+ " str r6, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " mov r3, sl\n"
+ " bl Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldr r1, ._858 + 12 @ gUnknown_Debug_03004360\n"
+ " ldrb r0, [r1]\n"
+ " mov r2, #0x46\n"
+ " mul r0, r0, r2\n"
+ " add r5, r5, r0\n"
+ " ldr r0, ._858 + 16 @ gUnknown_Debug_2023A76\n"
+ " add r5, r5, r0\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r5, r2]\n"
+ " lsl r0, r1, #0x3\n"
+ " sub r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._858 + 20 @ gBaseStats\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0, #0x17]\n"
+ " mov r2, #0xd\n"
+ " add r1, r0, #0\n"
+ " mul r1, r1, r2\n"
+ " ldr r0, ._858 + 24 @ gAbilityNames\n"
+ " add r1, r1, r0\n"
+ " mov r0, r8\n"
+ " bl StringCopy\n"
+ " str r6, [sp]\n"
+ " add r0, r4, #0\n"
+ " mov r1, r8\n"
+ " mov r2, r9\n"
+ " mov r3, sl\n"
+ " bl Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " b ._857\n"
+ "._859:\n"
+ " .align 2, 0\n"
+ "._858:\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_821F58C\n"
+ " .word gUnknown_Debug_03004360\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gBaseStats\n"
+ " .word gAbilityNames\n"
+ "._856:\n"
+ " ldr r6, ._860 @ gBattleTextBuff1\n"
+ " ldr r1, ._860 + 4 @ gAbilityNames\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " ldr r5, ._860 + 8 @ gUnknown_Debug_03004370\n"
+ " ldr r4, ._860 + 12 @ gUnknown_Debug_821F58C\n"
+ " ldrh r2, [r4]\n"
+ " ldrb r3, [r4, #0x2]\n"
+ " ldrb r0, [r4, #0x4]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " ldrh r2, [r4, #0x6]\n"
+ " ldrb r3, [r4, #0x8]\n"
+ " ldrb r0, [r4, #0xa]\n"
+ " str r0, [sp]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r5, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ "._857:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._861:\n"
+ " .align 2, 0\n"
+ "._860:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gAbilityNames\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gUnknown_Debug_821F58C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8012540()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " ldr r5, ._862 @ gBattleTextBuff1\n"
+ " ldr r0, ._862 + 4 @ gUnknown_Debug_2023A76\n"
+ " add r0, r0, #0x44\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r0, r2]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r4, ._862 + 8 @ gUnknown_Debug_03004370\n"
+ " ldr r1, ._862 + 12 @ gUnknown_Debug_821F424\n"
+ " mov r3, #0x9b\n"
+ " lsl r3, r3, #0x1\n"
+ " add r0, r1, r3\n"
+ " ldrh r2, [r0]\n"
+ " mov r6, #0x9c\n"
+ " lsl r6, r6, #0x1\n"
+ " add r0, r1, r6\n"
+ " ldrb r3, [r0]\n"
+ " add r6, r6, #0x2\n"
+ " add r0, r1, r6\n"
+ " ldrb r0, [r0]\n"
+ " str r0, [sp]\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " bl Text_InitWindow\n"
+ " add r0, r4, #0\n"
+ " bl Text_PrintWindow8002F44\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._863:\n"
+ " .align 2, 0\n"
+ "._862:\n"
+ " .word gBattleTextBuff1\n"
+ " .word gUnknown_Debug_2023A76\n"
+ " .word gUnknown_Debug_03004370\n"
+ " .word gUnknown_Debug_821F424\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_nullsub_3()
+{
+ asm(
+ " bx lr\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80125A0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._864 @ gSharedMem\n"
+ " ldr r3, ._864 + 4 @ gUnknown_Debug_821F680\n"
+ " ldr r2, ._864 + 8 @ gUnknown_Debug_030043A0\n"
+ " ldr r0, ._864 + 12 @ gUnknown_Debug_030043A4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._864 + 16 @ gUnknown_Debug_03004360\n"
+ " ldrb r2, [r1]\n"
+ " mov r1, #0x8c\n"
+ " mul r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, r3\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x6d\n"
+ " strb r1, [r0]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._865:\n"
+ " .align 2, 0\n"
+ "._864:\n"
+ " .word gSharedMem\n"
+ " .word gUnknown_Debug_821F680\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80125E4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._866 @ gSharedMem\n"
+ " ldr r3, ._866 + 4 @ gUnknown_Debug_821F680\n"
+ " ldr r2, ._866 + 8 @ gUnknown_Debug_030043A0\n"
+ " ldr r0, ._866 + 12 @ gUnknown_Debug_030043A4\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x2\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._866 + 16 @ gUnknown_Debug_03004360\n"
+ " ldrb r2, [r1]\n"
+ " mov r1, #0x8c\n"
+ " mul r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, r3\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r4\n"
+ " mov r1, #0x81\n"
+ " strb r1, [r0]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._867:\n"
+ " .align 2, 0\n"
+ "._866:\n"
+ " .word gSharedMem\n"
+ " .word gUnknown_Debug_821F680\n"
+ " .word gUnknown_Debug_030043A0\n"
+ " .word gUnknown_Debug_030043A4\n"
+ " .word gUnknown_Debug_03004360\n"
+ "\n"
+ );
+}
+
+void debug_sub_8012628(void)
+{
+ gSharedMem[gUnknown_Debug_821F798[gUnknown_Debug_03004360][gUnknown_Debug_030043A8]] = 0x6D;
+}
+
+void debug_sub_8012658(void)
+{
+ gSharedMem[gUnknown_Debug_821F798[gUnknown_Debug_03004360][gUnknown_Debug_030043A8]] = 0x81;
+}
+
+void debug_sub_8012688(void)
+{
+ s32 i;
+ u8 spriteId;
+ u8 taskId;
+
+ for (i = 0; i < 411; i++)
+ gUnknown_Debug_2023B62[i] = 0;
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ DmaFill32(3, 0, (void *)VRAM, VRAM_SIZE);
+ REG_MOSAIC = 0;
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_WININ = 0;
+ REG_WINOUT = 0;
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6C58);
+ ResetPaletteFade();
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = DISPLAY_HEIGHT;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ gBattleTerrain = 9;
+ sub_800D6D4();
+ sub_800DAB8();
+ ResetSpriteData();
+ ResetTasks();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ gCurrentMove = 1;
+ Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
+ DecompressPicFromTable_2(
+ &gMonFrontPicTable[gCurrentMove],
+ gMonFrontPicCoords[gCurrentMove].coords,
+ gMonFrontPicCoords[gCurrentMove].y_offset,
+ (void *)0x02000000,
+ gUnknown_081FAF4C[1],
+ gCurrentMove);
+ LoadCompressedPalette(gMonPaletteTable[gCurrentMove].data, 272, 32);
+ GetMonSpriteTemplate_803C56C(gCurrentMove, 1);
+ spriteId = CreateSprite(&gUnknown_02024E8C, 176, 40 + gMonFrontPicCoords[gCurrentMove].y_offset, 40);
+ gSprites[spriteId].callback = nullsub_37;
+ gSprites[spriteId].oam.paletteNum = 1;
+ REG_DISPCNT = 0x1F40;
+ SetHBlankCallback(debug_nullsub_45);
+ SetVBlankCallback(debug_sub_8011DD4);
+ m4aMPlayAllStop();
+ taskId = CreateTask(debug_sub_8012D10, 0);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = spriteId;
+ SetMainCallback2(debug_sub_8012878);
+}
+
+void debug_sub_8012878(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ Text_UpdateWindowInBattle(&gUnknown_03004210);
+ UpdatePaletteFade();
+ RunTasks();
+ if (gMain.heldKeys == (SELECT_BUTTON | R_BUTTON))
+ SetMainCallback2(debug_sub_80108B8);
+}
+
+void debug_sub_80128B4(void)
+{
+ debug_sub_8010A7C(0, 9);
+ Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ ConvertIntToDecimalStringN(gBattleTextBuff1, gCurrentMove, 2, 3);
+ gBattleTextBuff1[3] = CHAR_SPACE;
+ gBattleTextBuff1[4] = EOS;
+ StringAppend(gBattleTextBuff1, gSpeciesNames[gCurrentMove]);
+ Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+}
+
+void debug_sub_8012938(u8 taskId)
+{
+ debug_sub_8010A7C(0, 7);
+ Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 162, 2, 37);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ StringCopy(gBattleTextBuff1, Str_821F7B8);
+ ConvertIntToDecimalStringN(gBattleTextBuff1 + 4, gUnknown_Debug_2023B62[gCurrentMove - 1], 2, 3);
+ Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 162, 2, 37);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ gSprites[gTasks[taskId].data[1]].pos2.y = -gUnknown_Debug_2023B62[gCurrentMove - 1];
+}
+
+void debug_sub_80129F8(u8 taskId)
+{
+ DecompressPicFromTable_2(
+ &gMonFrontPicTable[gCurrentMove],
+ gMonFrontPicCoords[gCurrentMove].coords,
+ gMonFrontPicCoords[gCurrentMove].y_offset,
+ (void *)0x02000000,
+ gUnknown_081FAF4C[1],
+ gCurrentMove);
+ LoadCompressedPalette(gMonPaletteTable[gCurrentMove].data, 272, 32);
+ gSprites[gTasks[taskId].data[1]].pos1.y = gMonFrontPicCoords[gCurrentMove].y_offset + 40;
+ gSprites[gTasks[taskId].data[1]].pos2.y = -gUnknown_Debug_2023B62[gCurrentMove - 1];
+ StartSpriteAnim(&gSprites[gTasks[taskId].data[1]], 0);
+}
+
+void debug_sub_8012AC0(s8 a, u8 taskId)
+{
+ do
+ {
+ gCurrentMove += a;
+ if (gCurrentMove == 0)
+ gCurrentMove = 411;
+ if (gCurrentMove == 411)
+ gCurrentMove = 1;
+ } while (gBaseStats[gCurrentMove].type1 != 2 && gBaseStats[gCurrentMove].type2 != 2);
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ debug_sub_80129F8(taskId);
+}
+
+void debug_sub_8012B2C(u8 a)
+{
+ *(u16 *)(VRAM + 0xC000 + 0x772 + (a * 4 + 0) * 0x20) = 1;
+ *(u16 *)(VRAM + 0xC000 + 0x772 + (a * 4 + 2) * 0x20) = 2;
+}
+
+void debug_sub_8012B4C(u8 a)
+{
+ *(u16 *)(VRAM + 0xC000 + 0x772 + (a * 4 + 0) * 0x20) = 0x1016;
+ *(u16 *)(VRAM + 0xC000 + 0x772 + (a * 4 + 2) * 0x20) = 0x1016;
+}
+
+void debug_sub_8012B70(u8 taskId, u8 b)
+{
+ if (b != 0)
+ {
+ sub_802BBD4(24, 28, 29, 33, 1);
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ debug_sub_80129F8(taskId);
+ gTasks[taskId].data[0] = 1;
+ }
+ else
+ {
+ sub_802BBD4(24, 28, 29, 33, 0);
+ gTasks[taskId].data[0] = 2;
+ Text_InitWindow(&gUnknown_03004210, Str_821F7DA, 656, 26, 29);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ gTasks[taskId].data[3] = 0;
+ debug_sub_8012B2C(0);
+ }
+}
+
+void debug_sub_8012C08(u8 taskId, u8 b)
+{
+ debug_sub_8010A7C(0, 9);
+ Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ debug_sub_8010A7C(0, 7);
+ Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 162, 2, 37);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ sub_802BBD4(24, 28, 29, 33, 0);
+ if (b != 0)
+ {
+ gTasks[taskId].data[0] = 4;
+ Text_InitWindow(&gUnknown_03004210, gUnknown_Debug_821F7F3, 144, 2, 35);
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 3;
+ Text_InitWindow(&gUnknown_03004210, Str_821F7EA, 144, 2, 35);
+ }
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gUnknown_03004210, BattleText_YesNo, 656, 26, 29);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ gTasks[taskId].data[3] = 1;
+ debug_sub_8012B2C(1);
+}
+
+void debug_sub_8012D10(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ Text_InitWindow(&gUnknown_03004210, Str_821F7BD, 400, 19, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ gTasks[taskId].data[0]++;
+ sub_802E3E4(gTasks[taskId].data[2], 0);
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gTasks[taskId].data[2]);
+ gTasks[taskId].data[2] &= ~2;
+ sub_802E3E4(gTasks[taskId].data[2], 0);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gTasks[taskId].data[2]);
+ gTasks[taskId].data[2] |= 2;
+ sub_802E3E4(gTasks[taskId].data[2], 0);
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gTasks[taskId].data[2]);
+ gTasks[taskId].data[2] &= ~1;
+ sub_802E3E4(gTasks[taskId].data[2], 0);
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gTasks[taskId].data[2]);
+ gTasks[taskId].data[2] |= 1;
+ sub_802E3E4(gTasks[taskId].data[2], 0);
+ }
+ else if (gMain.newAndRepeatedKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ switch (gTasks[taskId].data[2])
+ {
+ case 0:
+ if (gUnknown_Debug_2023B62[gCurrentMove - 1] < 64)
+ {
+ gUnknown_Debug_2023B62[gCurrentMove - 1] += 1;
+ debug_sub_8012938(taskId);
+ }
+ break;
+ case 1:
+ debug_sub_8012AC0(1, taskId);
+ break;
+ case 2:
+ if (gCurrentMove < 411)
+ gCurrentMove++;
+ else
+ gCurrentMove = 1;
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ debug_sub_80129F8(taskId);
+ break;
+ case 3:
+ debug_sub_8012B70(taskId, 0);
+ break;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ switch (gTasks[taskId].data[2])
+ {
+ case 0:
+ if (gUnknown_Debug_2023B62[gCurrentMove - 1] > 0)
+ {
+ gUnknown_Debug_2023B62[gCurrentMove - 1] -= 1;
+ debug_sub_8012938(taskId);
+ }
+ break;
+ case 1:
+ debug_sub_8012AC0(-1, taskId);
+ break;
+ case 2:
+ if (gCurrentMove > 1)
+ gCurrentMove--;
+ else
+ gCurrentMove = 411;
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ debug_sub_80129F8(taskId);
+ break;
+ case 3:
+ debug_sub_8012B70(taskId, 0);
+ break;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ switch (gTasks[taskId].data[2])
+ {
+ case 0:
+ if (gUnknown_Debug_2023B62[gCurrentMove - 1] < 64)
+ {
+ gUnknown_Debug_2023B62[gCurrentMove - 1] += 8;
+ if (gUnknown_Debug_2023B62[gCurrentMove - 1] > 64)
+ gUnknown_Debug_2023B62[gCurrentMove - 1] = 64;
+ debug_sub_8012938(taskId);
+ }
+ break;
+ case 1:
+ debug_sub_8012AC0(1, taskId);
+ break;
+ case 2:
+ if (gCurrentMove + 10 < 412)
+ gCurrentMove += 10;
+ else
+ gCurrentMove -= 400;
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ debug_sub_80129F8(taskId);
+ break;
+ case 3:
+ debug_sub_8012B70(taskId, 0);
+ break;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ switch (gTasks[taskId].data[2])
+ {
+ case 0:
+ if (gUnknown_Debug_2023B62[gCurrentMove - 1] > 0)
+ {
+ if (gUnknown_Debug_2023B62[gCurrentMove - 1] > 8)
+ gUnknown_Debug_2023B62[gCurrentMove - 1] -= 8;
+ else
+ gUnknown_Debug_2023B62[gCurrentMove - 1] = 0;
+ debug_sub_8012938(taskId);
+ }
+ break;
+ case 1:
+ debug_sub_8012AC0(-1, taskId);
+ break;
+ case 2:
+ if (gCurrentMove - 10 > 1)
+ gCurrentMove -= 10;
+ else
+ gCurrentMove += 400;
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ debug_sub_80129F8(taskId);
+ break;
+ case 3:
+ debug_sub_8012B70(taskId, 0);
+ break;
+ }
+ }
+ break;
+ case 2:
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B4C(gTasks[taskId].data[3]);
+ gTasks[taskId].data[3] = 0;
+ debug_sub_8012B2C(0);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B4C(gTasks[taskId].data[3]);
+ gTasks[taskId].data[3] = 1;
+ debug_sub_8012B2C(1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012C08(taskId, gTasks[taskId].data[3]);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ asm("");
+ debug_sub_8012B70(taskId, 1);
+ }
+ return;
+ case 3:
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B4C(gTasks[taskId].data[3]);
+ gTasks[taskId].data[3] = 0;
+ debug_sub_8012B2C(0);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B4C(gTasks[taskId].data[3]);
+ gTasks[taskId].data[3] = 1;
+ debug_sub_8012B2C(1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gTasks[taskId].data[3] == 0)
+ debug_sub_80132C8(31, gUnknown_Debug_2023B62, 411);
+ debug_sub_8012B70(taskId, 1);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B70(taskId, 1);
+ }
+ break;
+ case 4:
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B4C(gTasks[taskId].data[3]);
+ gTasks[taskId].data[3] = 0;
+ debug_sub_8012B2C(0);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B4C(gTasks[taskId].data[3]);
+ gTasks[taskId].data[3] = 1;
+ debug_sub_8012B2C(1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gTasks[taskId].data[3] == 0)
+ debug_sub_8013294(31, gUnknown_Debug_2023B62, 411);
+ debug_sub_8012B70(taskId, 1);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B70(taskId, 1);
+ }
+ break;
+ }
+}
+
+u8 debug_sub_8013240(void)
+{
+ if (IdentifyFlash() == 0)
+ return 0;
+ else
+ return 1;
+}
+
+u32 debug_sub_8013258(u16 sectorNum, u8 *data, u32 size)
+{
+ while (1)
+ {
+ if (ProgramFlashSectorAndVerify(sectorNum, data) != 0)
+ return 0;
+ if (size <= 0x1000)
+ break;
+ size -= 0x1000;
+ data += 0x1000;
+ sectorNum++;
+ }
+ return 1;
+}
+
+u32 debug_sub_8013294(u8 sectorNum, void *data, u32 size)
+{
+ u32 result;
+
+ if (debug_sub_8013240() != 0)
+ return 0;
+ m4aSoundVSyncOff();
+ result = debug_sub_8013258(sectorNum, data, size);
+ m4aSoundVSyncOn();
+ return result;
+}
+
+void debug_sub_80132C8(u8 a, void *b, u32 c)
+{
+ if (debug_sub_8013240() == 0)
+ ReadFlash(a, 0, b, c);
+}
+#endif
+
void oac_poke_opponent(struct Sprite *sprite)
{
sprite->callback = sub_8010278;
@@ -1554,12 +4733,68 @@ void sub_8010800(void)
gBattleMainFunc = bc_8012FAC;
}
-void sub_8010824(void)
+#if DEBUG
+void debug_sub_80138CC(void)
{
- gBattleMainFunc();
+ if (GetBankSide(gActiveBank) == 0)
+ {
+ switch (gSharedMem[0x160FD])
+ {
+ case 0:
+ if (gBattleBankFunc[gActiveBank] == sub_802C098)
+ gSharedMem[0x160FD]++;
+ break;
+ case 1:
+ gMain.heldKeys = A_BUTTON;
+ gMain.newKeys = A_BUTTON;
+ gSharedMem[0x160FD]++;
+ gSharedMem[0x160FE] = 0x80;
+ break;
+ case 2:
+ gSharedMem[0x160FE]--;
+ if (gSharedMem[0x160FE] == 0)
+ {
+ gMain.heldKeys = A_BUTTON;
+ gMain.newKeys = A_BUTTON;
+ gSharedMem[0x160FD]++;
+ gSharedMem[0x160FE] = 0x80;
+ }
+ break;
+ case 3:
+ gSharedMem[0x160FE]--;
+ if (gSharedMem[0x160FE] == 0)
+ {
+ gMain.heldKeys = A_BUTTON;
+ gMain.newKeys = A_BUTTON;
+ gSharedMem[0x160FD]++;
+ }
+ break;
+ case 4:
+ gSharedMem[0x160FD] = 0;
+ break;
+ }
+ }
+}
+#endif
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
- gBattleBankFunc[gActiveBank]();
+void sub_8010824(void)
+{
+#if DEBUG
+ if (gUnknown_02023A14_50 & 0x80)
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ debug_sub_80138CC();
+ gBattleMainFunc();
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ gBattleBankFunc[gActiveBank]();
+ }
+ else
+#endif
+ {
+ gBattleMainFunc();
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ gBattleBankFunc[gActiveBank]();
+ }
}
void sub_8010874(void)
@@ -1662,6 +4897,10 @@ void sub_8010874(void)
gBattleResults.pokeString2[i] = 0;
gBattleResults.caughtNick[i] = 0;
}
+#if DEBUG
+ gSharedMem[0x1609E] = 0;
+ gSharedMem[0x1609F] = 0;
+#endif
}
void SwitchInClearSetData(void)
@@ -4049,6 +7288,351 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities)
return strikesFirst;
}
+// The debug version should be identical, but has a strange register swap, and
+// seems to be affected by other functions, which is bizarre.
+#if DEBUG
+__attribute__((naked))
+void SetActionsAndBanksTurnOrder(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, sl\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5, r6, r7}\n\
+ mov r3, #0x0\n\
+ ldr r0, ._L1550\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._L1499 @cond_branch\n\
+ ldr r0, ._L1550+0x4\n\
+ strb r3, [r0]\n\
+ ldr r4, ._L1550+0x8\n\
+ mov r8, r0\n\
+ ldrb r0, [r4]\n\
+ cmp r3, r0\n\
+ bcc ._LCB12758\n\
+ b ._L1505 @long jump\n\
+._LCB12758:\n\
+ ldr r7, ._L1550+0xc\n\
+ ldr r6, ._L1550+0x10\n\
+ mov r2, r8\n\
+ ldr r5, ._L1550+0x14\n\
+._L1503:\n\
+ add r1, r3, r7\n\
+ ldrb r0, [r2]\n\
+ add r0, r0, r6\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ add r1, r3, r5\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r1]\n\
+ add r3, r3, #0x1\n\
+ ldrb r0, [r2]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r2]\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldrb r1, [r4]\n\
+ cmp r0, r1\n\
+ bcc ._L1503 @cond_branch\n\
+ b ._L1505\n\
+._L1551:\n\
+ .align 2, 0\n\
+._L1550:\n\
+ .word gBattleTypeFlags\n\
+ .word gActiveBank\n\
+ .word gNoOfAllBanks\n\
+ .word gActionsByTurnOrder\n\
+ .word gActionForBanks\n\
+ .word gBanksByTurnOrder\n\
+._L1499:\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._L1506 @cond_branch\n\
+ ldr r0, ._L1552\n\
+ strb r3, [r0]\n\
+ ldr r1, ._L1552+0x4\n\
+ mov r8, r0\n\
+ add r2, r1, #0\n\
+ ldrb r2, [r2]\n\
+ cmp r3, r2\n\
+ bcs ._L1513 @cond_branch\n\
+ ldr r0, ._L1552+0x8\n\
+ ldrb r1, [r0]\n\
+ add r4, r0, #0\n\
+ cmp r1, #0x3\n\
+ beq ._L1548 @cond_branch\n\
+._L1509:\n\
+ mov r7, r8\n\
+ ldrb r0, [r7]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r7]\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r1, ._L1552+0x4\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcs ._L1513 @cond_branch\n\
+ ldrb r0, [r7]\n\
+ add r0, r0, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x3\n\
+ bne ._L1509 @cond_branch\n\
+ b ._L1548\n\
+._L1553:\n\
+ .align 2, 0\n\
+._L1552:\n\
+ .word gActiveBank\n\
+ .word gNoOfAllBanks\n\
+ .word gActionForBanks\n\
+._L1506:\n\
+ ldr r0, ._L1554\n\
+ ldrb r0, [r0]\n\
+ ldr r2, ._L1554+0x4\n\
+ mov r8, r2\n\
+ cmp r0, #0x3\n\
+ bne ._L1513 @cond_branch\n\
+ strb r3, [r2]\n\
+._L1548:\n\
+ mov r3, #0x5\n\
+._L1513:\n\
+ cmp r3, #0x5\n\
+ bne ._L1515 @cond_branch\n\
+ ldr r6, ._L1554+0x8\n\
+ ldr r1, ._L1554\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r6]\n\
+ ldr r2, ._L1554+0xc\n\
+ ldrb r0, [r3]\n\
+ strb r0, [r2]\n\
+ mov r3, #0x1\n\
+ mov r5, #0x0\n\
+ add r4, r1, #0\n\
+ ldr r7, ._L1554+0x10\n\
+ mov r9, r7\n\
+ ldr r0, ._L1554+0x14\n\
+ mov ip, r0\n\
+ ldr r1, ._L1554+0x18\n\
+ mov sl, r1\n\
+ ldr r7, ._L1554+0x1c\n\
+ ldrb r7, [r7]\n\
+ cmp r5, r7\n\
+ bge ._L1517 @cond_branch\n\
+ add r7, r6, #0\n\
+ add r6, r4, #0\n\
+ add r4, r2, #0\n\
+ ldr r2, ._L1554+0x1c\n\
+._L1519:\n\
+ mov r0, r8\n\
+ ldrb r0, [r0]\n\
+ cmp r5, r0\n\
+ beq ._L1518 @cond_branch\n\
+ add r1, r3, r7\n\
+ add r0, r5, r6\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ add r0, r3, r4\n\
+ strb r5, [r0]\n\
+ add r3, r3, #0x1\n\
+._L1518:\n\
+ add r5, r5, #0x1\n\
+ ldrb r1, [r2]\n\
+ cmp r5, r1\n\
+ blt ._L1519 @cond_branch\n\
+._L1517:\n\
+ mov r2, ip\n\
+ mov r3, r9\n\
+ str r2, [r3]\n\
+ ldr r1, ._L1554+0x20\n\
+ add r1, r1, sl\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ b ._L1498\n\
+._L1555:\n\
+ .align 2, 0\n\
+._L1554:\n\
+ .word gActionForBanks\n\
+ .word gActiveBank\n\
+ .word gActionsByTurnOrder\n\
+ .word gBanksByTurnOrder\n\
+ .word gBattleMainFunc\n\
+ .word CheckFocusPunch_ClearVarsBeforeTurnStarts\n\
+ .word gSharedMem\n\
+ .word gNoOfAllBanks\n\
+ .word 0x1601d\n\
+._L1515:\n\
+ mov r0, #0x0\n\
+ mov r7, r8\n\
+ strb r0, [r7]\n\
+ ldr r1, ._L1556\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0\n\
+ beq ._L1524 @cond_branch\n\
+ ldr r6, ._L1556+0x4\n\
+ mov r2, r8\n\
+ ldr r5, ._L1556+0x8\n\
+ ldr r4, ._L1556+0xc\n\
+._L1526:\n\
+ ldrb r0, [r2]\n\
+ add r0, r0, r6\n\
+ ldrb r1, [r0]\n\
+ sub r0, r1, #0x1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bhi ._L1525 @cond_branch\n\
+ add r0, r3, r5\n\
+ strb r1, [r0]\n\
+ add r1, r3, r4\n\
+ mov r7, r8\n\
+ ldrb r0, [r7]\n\
+ strb r0, [r1]\n\
+ add r3, r3, #0x1\n\
+._L1525:\n\
+ ldrb r0, [r2]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r2]\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r1, ._L1556\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc ._L1526 @cond_branch\n\
+._L1524:\n\
+ mov r0, #0x0\n\
+ mov r2, r8\n\
+ strb r0, [r2]\n\
+ ldr r7, ._L1556\n\
+ ldrb r0, [r7]\n\
+ cmp r0, #0\n\
+ beq ._L1530 @cond_branch\n\
+ ldr r6, ._L1556+0x4\n\
+ ldr r5, ._L1556+0x8\n\
+ ldr r4, ._L1556+0xc\n\
+._L1532:\n\
+ ldrb r0, [r2]\n\
+ add r0, r0, r6\n\
+ ldrb r1, [r0]\n\
+ sub r0, r1, #0x1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bls ._L1531 @cond_branch\n\
+ add r0, r3, r5\n\
+ strb r1, [r0]\n\
+ add r1, r3, r4\n\
+ mov r7, r8\n\
+ ldrb r0, [r7]\n\
+ strb r0, [r1]\n\
+ add r3, r3, #0x1\n\
+._L1531:\n\
+ ldrb r0, [r2]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r2]\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r1, ._L1556\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc ._L1532 @cond_branch\n\
+._L1530:\n\
+ mov r5, #0x0\n\
+ b ._L1549\n\
+._L1557:\n\
+ .align 2, 0\n\
+._L1556:\n\
+ .word gNoOfAllBanks\n\
+ .word gActionForBanks\n\
+ .word gActionsByTurnOrder\n\
+ .word gBanksByTurnOrder\n\
+._L1538:\n\
+ add r4, r5, #0x1\n\
+ add r7, r4, #0\n\
+ ldrb r1, [r1]\n\
+ cmp r7, r1\n\
+ bge ._L1537 @cond_branch\n\
+ ldr r6, ._L1558\n\
+ lsl r2, r5, #0x18\n\
+ mov r8, r2\n\
+._L1542:\n\
+ ldr r0, ._L1558+0x4\n\
+ add r1, r5, r0\n\
+ ldrb r3, [r1]\n\
+ add r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ add r0, r5, r6\n\
+ ldrb r2, [r0]\n\
+ cmp r2, #0x1\n\
+ beq ._L1541 @cond_branch\n\
+ add r0, r4, r6\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ beq ._L1541 @cond_branch\n\
+ cmp r2, #0x2\n\
+ beq ._L1541 @cond_branch\n\
+ cmp r0, #0x2\n\
+ beq ._L1541 @cond_branch\n\
+ add r0, r3, #0\n\
+ mov r2, #0x0\n\
+ bl GetWhoStrikesFirst\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._L1541 @cond_branch\n\
+ lsl r1, r4, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ mov r3, r8\n\
+ lsr r0, r3, #0x18\n\
+ bl SwapTurnOrder\n\
+._L1541:\n\
+ add r4, r4, #0x1\n\
+ ldr r0, ._L1558+0x8\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt ._L1542 @cond_branch\n\
+._L1537:\n\
+ add r5, r7, #0\n\
+._L1549:\n\
+ ldr r1, ._L1558+0x8\n\
+ ldrb r0, [r1]\n\
+ sub r0, r0, #0x1\n\
+ cmp r5, r0\n\
+ blt ._L1538 @cond_branch\n\
+._L1505:\n\
+ ldr r1, ._L1558+0xc\n\
+ ldr r0, ._L1558+0x10\n\
+ str r0, [r1]\n\
+ ldr r0, ._L1558+0x14\n\
+ ldr r7, ._L1558+0x18\n\
+ add r0, r0, r7\n\
+ mov r1, #0x0\n\
+ strb r1, [r0]\n\
+._L1498:\n\
+ pop {r3, r4, r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov sl, r5\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._L1559:\n\
+ .align 2, 0\n\
+._L1558:\n\
+ .word gActionsByTurnOrder\n\
+ .word gBanksByTurnOrder\n\
+ .word gNoOfAllBanks\n\
+ .word gBattleMainFunc\n\
+ .word CheckFocusPunch_ClearVarsBeforeTurnStarts\n\
+ .word gSharedMem\n\
+ .word 0x1601d");
+}
+#else
void SetActionsAndBanksTurnOrder(void)
{
s32 var = 0;
@@ -4141,9 +7725,11 @@ void SetActionsAndBanksTurnOrder(void)
}
}
}
+
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
eFocusPunchBank = 0;
}
+#endif
static void TurnValuesCleanUp(bool8 var0)
{
diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c
index 3763fc309..8b81139fb 100644
--- a/src/battle/battle_4.c
+++ b/src/battle/battle_4.c
@@ -5018,7 +5018,156 @@ _0801F610: .4byte BattleScript_SAtkDown2\n\
}
#endif // NONMATCHING
-
+#if DEBUG
+__attribute__((naked))
+static void atk15_seteffectwithchance(void)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r2, ._1037 @ gBattleMons\n\
+ ldr r0, ._1037 + 4 @ gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r1\n\
+ add r0, r0, r2\n\
+ add r0, r0, #0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x20\n\
+ bne ._1035 @cond_branch\n\
+ ldr r2, ._1037 + 8 @ gBattleMoves\n\
+ ldr r0, ._1037 + 12 @ gCurrentMove\n\
+ ldrh r1, [r0]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldrb r0, [r0, #0x5]\n\
+ lsl r4, r0, #0x1\n\
+ b ._1036\n\
+._1038:\n\
+ .align 2, 0\n\
+._1037:\n\
+ .word gBattleMons\n\
+ .word gBankAttacker\n\
+ .word gBattleMoves\n\
+ .word gCurrentMove\n\
+._1035:\n\
+ ldr r2, ._1045 @ gBattleMoves\n\
+ ldr r0, ._1045 + 4 @ gCurrentMove\n\
+ ldrh r1, [r0]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldrb r4, [r0, #0x5]\n\
+._1036:\n\
+ ldr r0, ._1045 + 8 @ gUnknown_02023A14_50\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ ldr r2, ._1045 + 12 @ gBattleCommunication\n\
+ cmp r0, #0\n\
+ beq ._1039 @cond_branch\n\
+ ldrb r1, [r2, #0x3]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1040 @cond_branch\n\
+ ldr r0, ._1045 + 16 @ gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1050 @cond_branch\n\
+._1039:\n\
+ ldrb r1, [r2, #0x3]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._1043 @cond_branch\n\
+._1040:\n\
+ ldr r0, ._1045 + 16 @ gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1043 @cond_branch\n\
+ ldr r2, ._1045 + 12 @ gBattleCommunication\n\
+ ldrb r1, [r2, #0x3]\n\
+ mov r0, #0x7f\n\
+ and r0, r0, r1\n\
+ strb r0, [r2, #0x3]\n\
+ b ._1044\n\
+._1046:\n\
+ .align 2, 0\n\
+._1045:\n\
+ .word gBattleMoves\n\
+ .word gCurrentMove\n\
+ .word gUnknown_02023A14_50\n\
+ .word gBattleCommunication\n\
+ .word gBattleMoveFlags\n\
+._1043:\n\
+ bl Random\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ mov r1, #0x64\n\
+ bl __umodsi3\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ cmp r0, r4\n\
+ bhi ._1049 @cond_branch\n\
+ ldr r0, ._1052 @ gBattleCommunication\n\
+ ldrb r0, [r0, #0x3]\n\
+ cmp r0, #0\n\
+ beq ._1049 @cond_branch\n\
+ ldr r0, ._1052 + 4 @ gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x29\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._1049 @cond_branch\n\
+ cmp r4, #0x63\n\
+ bls ._1050 @cond_branch\n\
+._1044:\n\
+ mov r0, #0x0\n\
+ mov r1, #0x80\n\
+ bl SetMoveEffect\n\
+ b ._1054\n\
+._1053:\n\
+ .align 2, 0\n\
+._1052:\n\
+ .word gBattleCommunication\n\
+ .word gBattleMoveFlags\n\
+._1050:\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ bl SetMoveEffect\n\
+ b ._1054\n\
+._1049:\n\
+ ldr r1, ._1055 @ gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ str r0, [r1]\n\
+._1054:\n\
+ ldr r0, ._1055 + 4 @ gBattleCommunication\n\
+ mov r1, #0x0\n\
+ strb r1, [r0, #0x3]\n\
+ ldr r0, ._1055 + 8 @ \n\
+ ldr r2, ._1055 + 12 @ \n\
+ add r0, r0, r2\n\
+ strb r1, [r0]\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1056:\n\
+ .align 2, 0\n\
+._1055:\n\
+ .word gBattlescriptCurrInstr\n\
+ .word gBattleCommunication\n\
+ .word +0x2000000\n\
+ .word 0x16112");
+}
+#else
static void atk15_seteffectwithchance(void)
{
u32 PercentChance;
@@ -5043,6 +5192,7 @@ static void atk15_seteffectwithchance(void)
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
gBattleStruct->unk16112 = 0;
}
+#endif
static void atk16_seteffectprimary(void)
{
@@ -12620,6 +12770,193 @@ static void atk9D_mimicattackcopy(void)
}
}
+#if DEBUG
+__attribute__((naked))
+static void atk9E_metronome(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ ldr r6, ._3076 @ gBankAttacker\n\
+ ldrb r2, [r6]\n\
+ lsl r1, r2, #0x1\n\
+ ldr r0, ._3076 + 4 @ \n\
+ add r3, r1, r0\n\
+ ldr r5, ._3076 + 8 @ \n\
+ mov r4, #0x58\n\
+ add r0, r2, #0\n\
+ mul r0, r0, r4\n\
+ add r1, r0, r5\n\
+ ldrh r0, [r1, #0xe]\n\
+ cmp r0, #0\n\
+ bne ._3071 @cond_branch\n\
+ ldrh r2, [r1, #0x10]\n\
+ cmp r2, #0\n\
+ beq ._3071 @cond_branch\n\
+ ldrh r0, [r1, #0x12]\n\
+ cmp r0, #0\n\
+ beq ._3071 @cond_branch\n\
+ ldrh r0, [r3]\n\
+ cmp r0, #0\n\
+ bne ._3072 @cond_branch\n\
+ strh r2, [r3]\n\
+._3072:\n\
+ ldr r1, ._3076 + 12 @ \n\
+ ldrh r0, [r3]\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r6]\n\
+ mul r0, r0, r4\n\
+ add r0, r0, r5\n\
+ ldrh r5, [r0, #0x10]\n\
+ ldrh r2, [r0, #0x12]\n\
+ add r7, r1, #0\n\
+ cmp r5, r2\n\
+ bcs ._3073 @cond_branch\n\
+ ldrh r0, [r3]\n\
+ cmp r0, r2\n\
+ beq ._3074 @cond_branch\n\
+ add r0, r0, #0x1\n\
+ b ._3079\n\
+._3077:\n\
+ .align 2, 0\n\
+._3076:\n\
+ .word gBankAttacker\n\
+ .word +0x20160b4\n\
+ .word gBattleMons\n\
+ .word gCurrentMove\n\
+._3073:\n\
+ ldrh r4, [r3]\n\
+ add r1, r4, #0\n\
+ mov r0, #0xb1\n\
+ lsl r0, r0, #0x1\n\
+ cmp r1, r0\n\
+ bne ._3078 @cond_branch\n\
+ mov r0, #0x1\n\
+ b ._3079\n\
+._3078:\n\
+ cmp r1, r2\n\
+ bne ._3080 @cond_branch\n\
+._3074:\n\
+ strh r5, [r3]\n\
+ b ._3081\n\
+._3080:\n\
+ add r0, r4, #1\n\
+._3079:\n\
+ strh r0, [r3]\n\
+._3081:\n\
+ ldr r4, ._3083 @ gHitMarker\n\
+ ldr r2, [r4]\n\
+ ldr r0, ._3083 + 4 @ 0xfffffbff\n\
+ and r2, r2, r0\n\
+ str r2, [r4]\n\
+ ldr r6, ._3083 + 8 @ gBattlescriptCurrInstr\n\
+ ldr r5, ._3083 + 12 @ gBattleScriptsForMoveEffects\n\
+ ldr r3, ._3083 + 16 @ gBattleMoves\n\
+ ldrh r1, [r7]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r5\n\
+ ldr r0, [r0]\n\
+ str r0, [r6]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x4\n\
+ orr r2, r2, r0\n\
+ str r2, [r4]\n\
+ ldrh r0, [r7]\n\
+ b ._3082\n\
+._3084:\n\
+ .align 2, 0\n\
+._3083:\n\
+ .word gHitMarker\n\
+ .word 0xfffffbff\n\
+ .word gBattlescriptCurrInstr\n\
+ .word gBattleScriptsForMoveEffects\n\
+ .word gBattleMoves\n\
+._3071:\n\
+ ldr r7, ._3090 @ gCurrentMove\n\
+ mov r6, #0xb1\n\
+ lsl r6, r6, #0x1\n\
+ ldr r5, ._3090 + 4 @ sMovesForbiddenToCopy\n\
+ ldr r0, ._3090 + 8 @ gBattlescriptCurrInstr\n\
+ mov r8, r0\n\
+._3089:\n\
+ bl Random\n\
+ ldr r2, ._3090 + 12 @ 0x1ff\n\
+ add r1, r2, #0\n\
+ and r0, r0, r1\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r7]\n\
+ cmp r0, r6\n\
+ bhi ._3089 @cond_branch\n\
+ mov r0, #0x3\n\
+._3086:\n\
+ sub r0, r0, #0x1\n\
+ cmp r0, #0\n\
+ bge ._3086 @cond_branch\n\
+ ldr r4, ._3090 @ gCurrentMove\n\
+ ldrh r2, [r4]\n\
+ ldr r3, ._3090 + 16 @ 0xffff\n\
+ sub r0, r5, #2\n\
+._3088:\n\
+ add r0, r0, #0x2\n\
+ ldrh r1, [r0]\n\
+ cmp r1, r2\n\
+ beq ._3087 @cond_branch\n\
+ cmp r1, r3\n\
+ bne ._3088 @cond_branch\n\
+._3087:\n\
+ ldr r0, ._3090 + 16 @ 0xffff\n\
+ cmp r1, r0\n\
+ bne ._3089 @cond_branch\n\
+ ldr r2, ._3090 + 20 @ gHitMarker\n\
+ ldr r0, [r2]\n\
+ ldr r1, ._3090 + 24 @ 0xfffffbff\n\
+ and r0, r0, r1\n\
+ str r0, [r2]\n\
+ ldr r3, ._3090 + 28 @ gBattleScriptsForMoveEffects\n\
+ ldr r2, ._3090 + 32 @ gBattleMoves\n\
+ ldrh r1, [r4]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldr r0, [r0]\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ ldrh r0, [r4]\n\
+._3082:\n\
+ mov r1, #0x0\n\
+ bl GetMoveTarget\n\
+ ldr r1, ._3090 + 36 @ gBankTarget\n\
+ strb r0, [r1]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._3091:\n\
+ .align 2, 0\n\
+._3090:\n\
+ .word gCurrentMove\n\
+ .word sMovesForbiddenToCopy\n\
+ .word gBattlescriptCurrInstr\n\
+ .word 0x1ff\n\
+ .word 0xffff\n\
+ .word gHitMarker\n\
+ .word 0xfffffbff\n\
+ .word gBattleScriptsForMoveEffects\n\
+ .word gBattleMoves\n\
+ .word gBankTarget");
+}
+#else
#ifdef NONMATCHING
static void atk9E_metronome(void)
{
@@ -12721,6 +13058,7 @@ _0802795C: .4byte gBankTarget\n\
.syntax divided");
}
#endif // NONMATCHING
+#endif
static void atk9F_dmgtolevel(void)
{
diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c
index 2ac9df2b9..629a57d25 100644
--- a/src/battle/battle_ai.c
+++ b/src/battle/battle_ai.c
@@ -13,6 +13,8 @@
#include "util.h"
#include "ewram.h"
+extern u8 gUnknown_02023A14_50;
+extern u32 gUnknown_02023A14_4C;
extern u16 gBattleTypeFlags;
extern u16 gBattleWeather;
extern u8 gActiveBank;
@@ -336,11 +338,15 @@ void BattleAI_SetupAIData(void)
else if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
AI_THINKING_STRUCT->aiFlags = 0x80000000;
#ifdef GERMAN
- else if (gBattleTypeFlags & 0x900 || gTrainerBattleOpponent == 0x400)
+ else if (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER) || gTrainerBattleOpponent == 0x400)
AI_THINKING_STRUCT->aiFlags = 7;
#endif
else // otherwise, just set aiFlags to whatever flags the trainer has set in their data.
AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent].aiFlags;
+#if DEBUG
+ if (gUnknown_02023A14_50 & 1)
+ AI_THINKING_STRUCT->aiFlags = gUnknown_02023A14_4C;
+#endif
}
u8 BattleAI_GetAIActionToUse(void)
diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c
index 5947053b6..338f8d418 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -30,6 +30,7 @@ struct MovePpInfo
u8 ppBonuses;
};
+extern u8 gUnknown_02023A14_50;
extern u8 gActiveBank;
extern u8 gBattleBufferA[][0x200];
extern u16 gBattlePartyID[];
@@ -1213,14 +1214,23 @@ void OpponentHandleTrainerThrow(void)
{
u32 trainerPicIndex;
- if (gTrainerBattleOpponent == 0x400)
- trainerPicIndex = GetSecretBaseTrainerPicIndex();
- else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
- trainerPicIndex = get_trainer_class_pic_index();
- else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
- trainerPicIndex = GetEReaderTrainerPicIndex();
+#if DEBUG
+ if (gUnknown_02023A14_50 & 0x10)
+ {
+ trainerPicIndex = gSharedMem[0x160A3];
+ }
else
- trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic;
+#endif
+ {
+ if (gTrainerBattleOpponent == 0x400)
+ trainerPicIndex = GetSecretBaseTrainerPicIndex();
+ else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ trainerPicIndex = get_trainer_class_pic_index();
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ trainerPicIndex = GetEReaderTrainerPicIndex();
+ else
+ trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic;
+ }
sub_8031A6C(trainerPicIndex, gActiveBank);
GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank));
@@ -1427,6 +1437,315 @@ void OpponentHandlecmd19(void)
OpponentBufferExecCompleted();
}
+#if DEBUG
+__attribute__((naked))
+void OpponentHandlecmd20(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, sl\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5, r6, r7}\n\
+ ldr r6, ._549 @ gActiveBank\n\
+ ldrb r0, [r6]\n\
+ lsl r0, r0, #0x9\n\
+ ldr r1, ._549 + 4 @ gBattleBufferA\n\
+ add r5, r0, r1\n\
+ ldr r2, ._549 + 8 @ gUnknown_02023A14_50\n\
+ ldrb r1, [r2]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ mov sl, r6\n\
+ cmp r0, #0\n\
+ beq ._546 @cond_branch\n\
+ ldr r0, ._549 + 12 @ gBattleMoves\n\
+ mov r9, r0\n\
+ ldr r1, ._549 + 16 @ \n\
+ mov ip, r1\n\
+ add r7, r6, #0\n\
+ mov r0, #0x2\n\
+ mov r8, r0\n\
+ ldr r6, ._549 + 20 @ \n\
+._552:\n\
+ ldrb r1, [r7]\n\
+ mov r0, r8\n\
+ and r0, r0, r1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x19\n\
+ add r0, r0, r6\n\
+ mov r1, ip\n\
+ add r3, r0, r1\n\
+ ldrb r1, [r3]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r5, r0\n\
+ ldrh r2, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r2, #0\n\
+ beq ._547 @cond_branch\n\
+ add r0, r4, #1\n\
+ strb r0, [r3]\n\
+ b ._548\n\
+._550:\n\
+ .align 2, 0\n\
+._549:\n\
+ .word gActiveBank\n\
+ .word gBattleBufferA+4\n\
+ .word gUnknown_02023A14_50\n\
+ .word gBattleMoves\n\
+ .word +0x2000000\n\
+ .word 0x1609e\n\
+._547:\n\
+ strb r2, [r3]\n\
+._548:\n\
+ ldrb r0, [r7]\n\
+ mov r1, r8\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x19\n\
+ add r1, r1, r6\n\
+ add r1, r1, ip\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0x3\n\
+ bls ._551 @cond_branch\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+._551:\n\
+ cmp r2, #0\n\
+ beq ._552 @cond_branch\n\
+ lsl r0, r2, #0x1\n\
+ add r0, r0, r2\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r9\n\
+ ldrb r3, [r0, #0x6]\n\
+ mov r0, #0x12\n\
+ and r0, r0, r3\n\
+ cmp r0, #0\n\
+ beq ._553 @cond_branch\n\
+ mov r1, sl\n\
+ ldrb r0, [r1]\n\
+ b ._561\n\
+._553:\n\
+ ldr r0, ._559 @ gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._557 @cond_branch\n\
+ ldr r0, ._559 + 4 @ gUnknown_02023A14_50\n\
+ ldrb r1, [r0]\n\
+ mov r5, #0x2\n\
+ add r0, r5, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._556 @cond_branch\n\
+ cmp r3, #0\n\
+ bne ._557 @cond_branch\n\
+ mov r1, sl\n\
+ ldrb r0, [r1]\n\
+ bl GetBankIdentity\n\
+ mov r1, #0x2\n\
+ eor r0, r0, r1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ b ._558\n\
+._560:\n\
+ .align 2, 0\n\
+._559:\n\
+ .word gBattleTypeFlags\n\
+ .word gUnknown_02023A14_50\n\
+._556:\n\
+ bl Random\n\
+ add r1, r5, #0\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x10\n\
+ lsr r0, r1, #0x10\n\
+ b ._561\n\
+._557:\n\
+ mov r0, #0x0\n\
+._558:\n\
+ bl GetBankByIdentity\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+._561:\n\
+ lsl r2, r0, #0x8\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+._569:\n\
+ bl Emitcmd33\n\
+._573:\n\
+ bl OpponentBufferExecCompleted\n\
+ b ._562\n\
+._546:\n\
+ ldr r0, ._567 @ gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x93\n\
+ lsl r0, r0, #0x3\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._563 @cond_branch\n\
+ bl BattleAI_SetupAIData\n\
+ bl BattleAI_GetAIActionToUse\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0x4\n\
+ beq ._564 @cond_branch\n\
+ cmp r4, #0x5\n\
+ bne ._565 @cond_branch\n\
+ mov r0, #0x1\n\
+ mov r1, #0x4\n\
+ b ._566\n\
+._568:\n\
+ .align 2, 0\n\
+._567:\n\
+ .word gBattleTypeFlags\n\
+._564:\n\
+ mov r0, #0x1\n\
+ mov r1, #0x3\n\
+._566:\n\
+ mov r2, #0x0\n\
+ b ._569\n\
+._565:\n\
+ ldr r3, ._574 @ gBattleMoves\n\
+ lsl r0, r4, #0x1\n\
+ add r2, r5, r0\n\
+ ldrh r1, [r2]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldrb r1, [r0, #0x6]\n\
+ mov r0, #0x12\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._570 @cond_branch\n\
+ ldr r1, ._574 + 4 @ gBankTarget\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r1]\n\
+._570:\n\
+ ldrh r1, [r2]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldrb r1, [r0, #0x6]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._572 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl GetBankByIdentity\n\
+ ldr r5, ._574 + 4 @ gBankTarget\n\
+ strb r0, [r5]\n\
+ ldr r0, ._574 + 8 @ gAbsentBankFlags\n\
+ ldrb r1, [r0]\n\
+ ldr r2, ._574 + 12 @ gBitTable\n\
+ ldrb r0, [r5]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldr r0, [r0]\n\
+ and r1, r1, r0\n\
+ cmp r1, #0\n\
+ beq ._572 @cond_branch\n\
+ mov r0, #0x2\n\
+ bl GetBankByIdentity\n\
+ strb r0, [r5]\n\
+._572:\n\
+ ldr r0, ._574 + 4 @ gBankTarget\n\
+ ldrb r2, [r0]\n\
+ lsl r2, r2, #0x8\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+ b ._573\n\
+._575:\n\
+ .align 2, 0\n\
+._574:\n\
+ .word gBattleMoves\n\
+ .word gBankTarget\n\
+ .word gAbsentBankFlags\n\
+ .word gBitTable\n\
+._563:\n\
+ mov r6, #0x3\n\
+._576:\n\
+ bl Random\n\
+ add r4, r0, #0\n\
+ and r4, r4, r6\n\
+ lsl r0, r4, #0x1\n\
+ add r0, r5, r0\n\
+ ldrh r2, [r0]\n\
+ cmp r2, #0\n\
+ beq ._576 @cond_branch\n\
+ ldr r1, ._579 @ gBattleMoves\n\
+ lsl r0, r2, #0x1\n\
+ add r0, r0, r2\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x6]\n\
+ mov r0, #0x12\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._577 @cond_branch\n\
+ ldr r0, ._579 + 4 @ gActiveBank\n\
+ ldrb r2, [r0]\n\
+ lsl r2, r2, #0x8\n\
+ b ._578\n\
+._580:\n\
+ .align 2, 0\n\
+._579:\n\
+ .word gBattleMoves\n\
+ .word gActiveBank\n\
+._577:\n\
+ ldr r0, ._583 @ gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._581 @cond_branch\n\
+ bl Random\n\
+ mov r1, #0x2\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ add r0, r1, #0\n\
+ bl GetBankByIdentity\n\
+ add r2, r0, #0\n\
+ lsl r2, r2, #0x18\n\
+ lsr r2, r2, #0x10\n\
+._578:\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+ b ._582\n\
+._584:\n\
+ .align 2, 0\n\
+._583:\n\
+ .word gBattleTypeFlags\n\
+._581:\n\
+ mov r0, #0x0\n\
+ bl GetBankByIdentity\n\
+ add r2, r0, #0\n\
+ lsl r2, r2, #0x18\n\
+ lsr r2, r2, #0x10\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+._582:\n\
+ bl OpponentBufferExecCompleted\n\
+._562:\n\
+ pop {r3, r4, r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov sl, r5\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0");
+}
+#else
#ifdef NONMATCHING
void OpponentHandlecmd20(void)
{
@@ -1501,7 +1820,7 @@ void OpponentHandlecmd20(void)
ldr r6, _0803545C @ =gActiveBank\n\
ldrb r0, [r6]\n\
lsls r0, 9\n\
- ldr r1, _08035460 @ =gUnknown_02023A64\n\
+ ldr r1, _08035460 @ =gBattleBufferA+4\n\
adds r5, r0, r1\n\
ldr r0, _08035464 @ =gBattleTypeFlags\n\
ldrh r1, [r0]\n\
@@ -1523,7 +1842,7 @@ void OpponentHandlecmd20(void)
b _0803546C\n\
.align 2, 0\n\
_0803545C: .4byte gActiveBank\n\
-_08035460: .4byte gUnknown_02023A64\n\
+_08035460: .4byte gBattleBufferA+4\n\
_08035464: .4byte gBattleTypeFlags\n\
_08035468:\n\
movs r0, 0x1\n\
@@ -1670,6 +1989,7 @@ _0803558A:\n\
.syntax divided\n");
}
#endif
+#endif
void OpponentHandleOpenBag(void)
{
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index f036e841f..e03e21849 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -42,6 +42,8 @@ extern struct Window gUnknown_03004210;
extern void (*gBattleBankFunc[])(void);
+extern u32 gOamMatrixAllocBitmap;
+extern u8 gUnknown_020297ED;
extern u8 gActiveBank;
extern u8 gActionSelectionCursor[];
extern u8 gDisplayedStringBattle[];
@@ -617,9 +619,14 @@ struct ChooseMoveStruct
const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}");
+void debug_sub_8030C24(void);
+
void sub_802C68C(void)
{
u32 r8 = 0;
+#if DEBUG
+ u8 count = 0;
+#endif
struct ChooseMoveStruct *r6 = (struct ChooseMoveStruct *)(gBattleBufferA[gActiveBank] + 4);
if (gMain.newKeys & A_BUTTON)
@@ -750,6 +757,43 @@ void sub_802C68C(void)
gBattleBankFunc[gActiveBank] = sub_802CA60;
}
}
+#if DEBUG
+ else if (gUnknown_020297ED == 1 && (gMain.newKeys & START_BUTTON))
+ {
+ const u8 *moveName;
+ s32 i;
+
+ Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x3A);
+ moveName = gMoveNames[GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1)];
+ Text_InitWindowAndPrintText(&gUnknown_03004210, moveName, 0x100, 2, 0x37);
+ ConvertIntToDecimalStringN(
+ gDisplayedStringBattle,
+ GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1),
+ 2, 3);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x110, 10, 0x37);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gString_TurnJP, 0x116, 1, 0x39);
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, gAnimMoveTurn, 2, 3);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x11C, 4, 0x39);
+ for (i = 0; i < 64; i++)
+ {
+ if (gSprites[i].inUse)
+ count++;
+ }
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x122, 8, 0x39);
+ count = GetTaskCount();
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x126, 11, 0x39);
+ for (i = 0, count = 0; i < 32; i++)
+ {
+ if (gOamMatrixAllocBitmap & (1 << i))
+ count++;
+ }
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x12A, 14, 0x39);
+ gBattleBankFunc[gActiveBank] = debug_sub_8030C24;
+ }
+#endif
}
extern const u8 BattleText_Format[];
@@ -956,6 +1000,688 @@ void sub_802D18C(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_8030C24(void)
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ add sp, sp, #0xfffffff4\n\
+ ldr r1, ._293 @ gBattlePartyID\n\
+ ldr r4, ._293 + 4 @ gActiveBank\n\
+ ldrb r0, [r4]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r0, r0, r1\n\
+ ldr r1, ._293 + 8 @ gPlayerParty\n\
+ add r0, r0, r1\n\
+ mov r1, #0xd\n\
+ bl GetMonData\n\
+ add r1, sp, #0x8\n\
+ strh r0, [r1]\n\
+ ldr r5, ._293 + 12 @ gMain\n\
+ ldrh r1, [r5, #0x30]\n\
+ cmp r1, #0x20\n\
+ bne ._286 @cond_branch\n\
+ b ._287\n\
+._286:\n\
+ cmp r1, #0x20\n\
+ bgt ._288 @cond_branch\n\
+ cmp r1, #0x8\n\
+ beq ._289 @cond_branch\n\
+ cmp r1, #0x8\n\
+ bgt ._290 @cond_branch\n\
+ cmp r1, #0x4\n\
+ beq ._291 @cond_branch\n\
+ b ._348\n\
+._294:\n\
+ .align 2, 0\n\
+._293:\n\
+ .word gBattlePartyID\n\
+ .word gActiveBank\n\
+ .word gPlayerParty\n\
+ .word gMain\n\
+._290:\n\
+ cmp r1, #0x10\n\
+ bne ._295 @cond_branch\n\
+ b ._296\n\
+._295:\n\
+ b ._348\n\
+._288:\n\
+ cmp r1, #0x80\n\
+ bne ._298 @cond_branch\n\
+ b ._302\n\
+._298:\n\
+ cmp r1, #0x80\n\
+ bgt ._300 @cond_branch\n\
+ cmp r1, #0x40\n\
+ bne ._301 @cond_branch\n\
+ b ._302\n\
+._301:\n\
+ b ._348\n\
+._300:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ cmp r1, r0\n\
+ bne ._304 @cond_branch\n\
+ b ._305\n\
+._304:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x2\n\
+ cmp r1, r0\n\
+ bne ._306 @cond_branch\n\
+ b ._307\n\
+._306:\n\
+ b ._348\n\
+._289:\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ bl dp11b_obj_free\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl dp11b_obj_free\n\
+ ldr r0, ._312 @ gBankAttacker\n\
+ ldrb r2, [r4]\n\
+ strb r2, [r0]\n\
+ ldrh r1, [r5, #0x28]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._310 @cond_branch\n\
+ ldr r0, ._312 + 4 @ gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._310 @cond_branch\n\
+ ldr r0, ._312 + 8 @ gBankTarget\n\
+ mov r1, #0x2\n\
+ eor r1, r1, r2\n\
+ strb r1, [r0]\n\
+ b ._311\n\
+._313:\n\
+ .align 2, 0\n\
+._312:\n\
+ .word gBankAttacker\n\
+ .word gBattleTypeFlags\n\
+ .word gBankTarget\n\
+._310:\n\
+ ldr r0, ._317 @ gMain\n\
+ ldrh r1, [r0, #0x28]\n\
+ mov r2, #0x1\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._315 @cond_branch\n\
+ ldr r0, ._317 + 4 @ gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._315 @cond_branch\n\
+ mov r0, #0x3\n\
+ b ._316\n\
+._318:\n\
+ .align 2, 0\n\
+._317:\n\
+ .word gMain\n\
+ .word gBattleTypeFlags\n\
+._315:\n\
+ mov r0, #0x1\n\
+._316:\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._320 @ gBankTarget\n\
+ strb r0, [r1]\n\
+._311:\n\
+ mov r0, #0x0\n\
+ bl sub_80326EC\n\
+ add r0, sp, #0x8\n\
+ ldrh r0, [r0]\n\
+ bl DoMoveAnim\n\
+ ldr r1, ._320 + 4 @ gBattleBankFunc\n\
+ ldr r0, ._320 + 8 @ gActiveBank\n\
+ ldrb r0, [r0]\n\
+ b ._332\n\
+._321:\n\
+ .align 2, 0\n\
+._320:\n\
+ .word gBankTarget\n\
+ .word gBattleBankFunc\n\
+ .word gActiveBank\n\
+._291:\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ bl dp11b_obj_free\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl dp11b_obj_free\n\
+ ldr r0, ._325 @ gBankTarget\n\
+ ldrb r2, [r4]\n\
+ strb r2, [r0]\n\
+ ldrh r1, [r5, #0x28]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._323 @cond_branch\n\
+ ldr r0, ._325 + 4 @ gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._323 @cond_branch\n\
+ ldr r0, ._325 + 8 @ gBankAttacker\n\
+ mov r1, #0x2\n\
+ eor r1, r1, r2\n\
+ strb r1, [r0]\n\
+ b ._324\n\
+._326:\n\
+ .align 2, 0\n\
+._325:\n\
+ .word gBankTarget\n\
+ .word gBattleTypeFlags\n\
+ .word gBankAttacker\n\
+._323:\n\
+ ldr r0, ._330 @ gMain\n\
+ ldrh r1, [r0, #0x28]\n\
+ mov r2, #0x1\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._328 @cond_branch\n\
+ ldr r0, ._330 + 4 @ gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._328 @cond_branch\n\
+ mov r0, #0x3\n\
+ b ._329\n\
+._331:\n\
+ .align 2, 0\n\
+._330:\n\
+ .word gMain\n\
+ .word gBattleTypeFlags\n\
+._328:\n\
+ mov r0, #0x1\n\
+._329:\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._333 @ gBankAttacker\n\
+ strb r0, [r1]\n\
+._324:\n\
+ mov r0, #0x0\n\
+ bl sub_80326EC\n\
+ add r0, sp, #0x8\n\
+ ldrh r0, [r0]\n\
+ bl DoMoveAnim\n\
+ ldr r1, ._333 + 4 @ gBattleBankFunc\n\
+ ldr r0, ._333 + 8 @ gActiveBank\n\
+ ldrb r0, [r0]\n\
+ b ._332\n\
+._334:\n\
+ .align 2, 0\n\
+._333:\n\
+ .word gBankAttacker\n\
+ .word gBattleBankFunc\n\
+ .word gActiveBank\n\
+._305:\n\
+ ldrh r1, [r5, #0x28]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._336 @cond_branch\n\
+ ldr r0, ._338 @ gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._336 @cond_branch\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ bl dp11b_obj_free\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl dp11b_obj_free\n\
+ mov r0, #0x3\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._338 + 4 @ gBankAttacker\n\
+ strb r0, [r1]\n\
+ mov r0, #0x1\n\
+ b ._337\n\
+._339:\n\
+ .align 2, 0\n\
+._338:\n\
+ .word gBattleTypeFlags\n\
+ .word gBankAttacker\n\
+._336:\n\
+ add r0, sp, #0x8\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r0, r1]\n\
+ add r0, r0, #0x9\n\
+ add r1, sp, #0x8\n\
+ strh r0, [r1]\n\
+._296:\n\
+ add r0, sp, #0x8\n\
+ mov r2, #0x0\n\
+ ldsh r0, [r0, r2]\n\
+ add r0, r0, #0x1\n\
+ lsl r2, r0, #0x10\n\
+ add r1, sp, #0x8\n\
+ strh r0, [r1]\n\
+ mov r0, #0xb1\n\
+ lsl r0, r0, #0x11\n\
+ cmp r2, r0\n\
+ ble ._347 @cond_branch\n\
+ mov r1, #0x1\n\
+ add r0, sp, #0x8\n\
+ strh r1, [r0]\n\
+ b ._347\n\
+._307:\n\
+ ldrh r1, [r5, #0x28]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._343 @cond_branch\n\
+ ldr r0, ._345 @ gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._343 @cond_branch\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ bl dp11b_obj_free\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ bl dp11b_obj_free\n\
+ mov r0, #0x1\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._345 + 4 @ gBankAttacker\n\
+ strb r0, [r1]\n\
+ mov r0, #0x3\n\
+._337:\n\
+ bl GetBankByIdentity\n\
+ ldr r1, ._345 + 8 @ gBankTarget\n\
+ strb r0, [r1]\n\
+ mov r0, #0x0\n\
+ bl sub_80326EC\n\
+ add r0, sp, #0x8\n\
+ ldrh r0, [r0]\n\
+ bl DoMoveAnim\n\
+ ldr r1, ._345 + 12 @ gBattleBankFunc\n\
+ ldrb r0, [r4]\n\
+._332:\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._345 + 16 @ debug_sub_803107C\n\
+ str r1, [r0]\n\
+ b ._348\n\
+._346:\n\
+ .align 2, 0\n\
+._345:\n\
+ .word gBattleTypeFlags\n\
+ .word gBankAttacker\n\
+ .word gBankTarget\n\
+ .word gBattleBankFunc\n\
+ .word debug_sub_803107C+1\n\
+._343:\n\
+ add r1, sp, #0x8\n\
+ add r0, r1, #0\n\
+ ldrh r0, [r0]\n\
+ sub r0, r0, #0x9\n\
+ strh r0, [r1]\n\
+._287:\n\
+ add r1, sp, #0x8\n\
+ add r0, r1, #0\n\
+ ldrh r0, [r0]\n\
+ sub r0, r0, #0x1\n\
+ strh r0, [r1]\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bgt ._347 @cond_branch\n\
+ mov r2, #0xb1\n\
+ lsl r2, r2, #0x1\n\
+ add r0, r2, #0\n\
+ strh r0, [r1]\n\
+._347:\n\
+ ldr r1, ._349 @ gBattlePartyID\n\
+ ldr r4, ._349 + 4 @ gActiveBank\n\
+ ldrb r0, [r4]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r0, r0, r1\n\
+ ldr r1, ._349 + 8 @ gPlayerParty\n\
+ add r0, r0, r1\n\
+ mov r1, #0xd\n\
+ add r2, sp, #0x8\n\
+ bl SetMonData\n\
+ ldr r2, ._349 + 12 @ gBattleMons\n\
+ ldrb r1, [r4]\n\
+ mov r0, #0x58\n\
+ mul r0, r0, r1\n\
+ add r0, r0, r2\n\
+ add r1, sp, #0x8\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0, #0xc]\n\
+ ldr r5, ._349 + 16 @ gUnknown_03004210\n\
+ ldr r1, ._349 + 20 @ 0x1016\n\
+ mov r0, #0x10\n\
+ str r0, [sp]\n\
+ mov r0, #0x38\n\
+ str r0, [sp, #0x4]\n\
+ add r0, r5, #0\n\
+ mov r2, #0x1\n\
+ mov r3, #0x37\n\
+ bl Text_FillWindowRect\n\
+ add r0, sp, #0x8\n\
+ mov r2, #0x0\n\
+ ldsh r1, [r0, r2]\n\
+ mov r0, #0xd\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._349 + 24 @ gMoveNames\n\
+ add r1, r1, r0\n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0x1\n\
+ mov r6, #0x37\n\
+ str r6, [sp]\n\
+ add r0, r5, #0\n\
+ mov r3, #0x2\n\
+ bl Text_InitWindowAndPrintText\n\
+ ldr r4, ._349 + 28 @ gDisplayedStringBattle\n\
+ add r0, sp, #0x8\n\
+ mov r2, #0x0\n\
+ ldsh r1, [r0, r2]\n\
+ add r0, r4, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ mov r2, #0x88\n\
+ lsl r2, r2, #0x1\n\
+ str r6, [sp]\n\
+ add r0, r5, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0xa\n\
+ bl Text_InitWindowAndPrintText\n\
+ b ._348\n\
+._350:\n\
+ .align 2, 0\n\
+._349:\n\
+ .word gBattlePartyID\n\
+ .word gActiveBank\n\
+ .word gPlayerParty\n\
+ .word gBattleMons\n\
+ .word gUnknown_03004210\n\
+ .word 0x1016\n\
+ .word gMoveNames\n\
+ .word gDisplayedStringBattle\n\
+._302:\n\
+ ldr r0, ._353 @ gMain\n\
+ ldrh r0, [r0, #0x30]\n\
+ cmp r0, #0x40\n\
+ bne ._351 @cond_branch\n\
+ ldr r1, ._353 + 4 @ gAnimMoveTurn\n\
+ ldrb r0, [r1]\n\
+ sub r0, r0, #0x1\n\
+ b ._352\n\
+._354:\n\
+ .align 2, 0\n\
+._353:\n\
+ .word gMain\n\
+ .word gAnimMoveTurn\n\
+._351:\n\
+ ldr r1, ._359 @ gAnimMoveTurn\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+._352:\n\
+ strb r0, [r1]\n\
+ ldr r4, ._359 + 4 @ gDisplayedStringBattle\n\
+ ldrb r1, [r1]\n\
+ add r0, r4, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r0, ._359 + 8 @ gUnknown_03004210\n\
+ mov r2, #0x8e\n\
+ lsl r2, r2, #0x1\n\
+ mov r1, #0x39\n\
+ str r1, [sp]\n\
+ add r1, r4, #0\n\
+ mov r3, #0x4\n\
+ bl Text_InitWindowAndPrintText\n\
+._348:\n\
+ ldr r0, ._359 + 12 @ gMain\n\
+ ldrh r2, [r0, #0x28]\n\
+ mov r1, #0xc0\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r1, #0\n\
+ and r0, r0, r2\n\
+ cmp r0, r1\n\
+ bne ._355 @cond_branch\n\
+ mov r4, #0x0\n\
+ ldr r5, ._359 + 4 @ gDisplayedStringBattle\n\
+ ldr r6, ._359 + 8 @ gUnknown_03004210\n\
+._361:\n\
+ add r0, r5, #0\n\
+ ldr r1, ._359 + 16 @ BattleText_Format\n\
+ bl StringCopy\n\
+ ldr r1, ._359 + 20 @ gBattlePartyID\n\
+ ldr r0, ._359 + 24 @ gActiveBank\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x1\n\
+ add r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x64\n\
+ mul r0, r0, r1\n\
+ ldr r1, ._359 + 28 @ gPlayerParty\n\
+ add r0, r0, r1\n\
+ add r1, r4, #0\n\
+ add r1, r1, #0xd\n\
+ bl GetMonData\n\
+ mov r1, #0xd\n\
+ mul r1, r1, r0\n\
+ ldr r0, ._359 + 32 @ gMoveNames\n\
+ add r1, r1, r0\n\
+ add r0, r5, #0\n\
+ bl StringAppend\n\
+ lsl r0, r4, #0x14\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x11\n\
+ add r0, r0, r1\n\
+ lsr r2, r0, #0x10\n\
+ mov r0, #0x1\n\
+ and r0, r0, r4\n\
+ mov r3, #0x2\n\
+ cmp r0, #0\n\
+ beq ._356 @cond_branch\n\
+ mov r3, #0xa\n\
+._356:\n\
+ cmp r4, #0x1\n\
+ bhi ._357 @cond_branch\n\
+ mov r0, #0x37\n\
+ b ._358\n\
+._360:\n\
+ .align 2, 0\n\
+._359:\n\
+ .word gAnimMoveTurn\n\
+ .word gDisplayedStringBattle\n\
+ .word gUnknown_03004210\n\
+ .word gMain\n\
+ .word BattleText_Format\n\
+ .word gBattlePartyID\n\
+ .word gActiveBank\n\
+ .word gPlayerParty\n\
+ .word gMoveNames\n\
+._357:\n\
+ mov r0, #0x39\n\
+._358:\n\
+ str r0, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r5, #0\n\
+ bl Text_InitWindow\n\
+ ldr r0, ._362 @ gUnknown_03004210\n\
+ bl Text_PrintWindow8002F44\n\
+ add r0, r4, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0x3\n\
+ bls ._361 @cond_branch\n\
+ ldr r1, ._362 + 4 @ gBattleBankFunc\n\
+ ldr r0, ._362 + 8 @ gActiveBank\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._362 + 12 @ sub_802C68C\n\
+ str r1, [r0]\n\
+._355:\n\
+ add sp, sp, #0xc\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._363:\n\
+ .align 2, 0\n\
+._362:\n\
+ .word gUnknown_03004210\n\
+ .word gBattleBankFunc\n\
+ .word gActiveBank\n\
+ .word sub_802C68C+1");
+}
+
+__attribute__((naked))
+void debug_sub_803107C(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ mov r7, #0x0\n\
+ ldr r0, ._369 @ gAnimScriptCallback\n\
+ ldr r0, [r0]\n\
+ bl _call_via_r0\n\
+ ldr r0, ._369 + 4 @ gAnimScriptActive\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._364 @cond_branch\n\
+ mov r0, #0x1\n\
+ bl sub_80326EC\n\
+ ldr r4, ._369 + 8 @ gActiveBank\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x7\n\
+ mov r3, #0x1\n\
+ bl dp11b_obj_instanciate\n\
+ ldrb r0, [r4]\n\
+ mov r1, #0x0\n\
+ mov r2, #0x7\n\
+ mov r3, #0x1\n\
+ bl dp11b_obj_instanciate\n\
+ ldr r0, ._369 + 12 @ gSprites\n\
+ add r2, r0, #0\n\
+ add r2, r2, #0x3e\n\
+ mov r1, #0x3f\n\
+._366:\n\
+ ldrb r0, [r2]\n\
+ lsl r0, r0, #0x1f\n\
+ cmp r0, #0\n\
+ beq ._365 @cond_branch\n\
+ add r0, r7, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+._365:\n\
+ add r2, r2, #0x44\n\
+ sub r1, r1, #0x1\n\
+ cmp r1, #0\n\
+ bge ._366 @cond_branch\n\
+ ldr r4, ._369 + 16 @ gDisplayedStringBattle\n\
+ add r0, r4, #0\n\
+ add r1, r7, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r6, ._369 + 20 @ gUnknown_03004210\n\
+ mov r2, #0x91\n\
+ lsl r2, r2, #0x1\n\
+ mov r5, #0x39\n\
+ str r5, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0x8\n\
+ bl Text_InitWindowAndPrintText\n\
+ bl GetTaskCount\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ add r0, r4, #0\n\
+ add r1, r7, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ mov r2, #0x93\n\
+ lsl r2, r2, #0x1\n\
+ str r5, [sp]\n\
+ add r0, r6, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0xb\n\
+ bl Text_InitWindowAndPrintText\n\
+ mov r1, #0x0\n\
+ mov r7, #0x0\n\
+ ldr r0, ._369 + 24 @ gOamMatrixAllocBitmap\n\
+ mov r3, #0x1\n\
+ ldr r2, [r0]\n\
+._368:\n\
+ add r0, r3, #0\n\
+ LSL r0, r1\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ beq ._367 @cond_branch\n\
+ add r0, r7, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+._367:\n\
+ add r1, r1, #0x1\n\
+ cmp r1, #0x1f\n\
+ ble ._368 @cond_branch\n\
+ ldr r4, ._369 + 16 @ gDisplayedStringBattle\n\
+ add r0, r4, #0\n\
+ add r1, r7, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r0, ._369 + 20 @ gUnknown_03004210\n\
+ mov r2, #0x95\n\
+ lsl r2, r2, #0x1\n\
+ mov r1, #0x39\n\
+ str r1, [sp]\n\
+ add r1, r4, #0\n\
+ mov r3, #0xe\n\
+ bl Text_InitWindowAndPrintText\n\
+ ldr r1, ._369 + 28 @ gBattleBankFunc\n\
+ ldr r0, ._369 + 8 @ gActiveBank\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r1, ._369 + 32 @ debug_sub_8030C24\n\
+ str r1, [r0]\n\
+._364:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._370:\n\
+ .align 2, 0\n\
+._369:\n\
+ .word gAnimScriptCallback\n\
+ .word gAnimScriptActive\n\
+ .word gActiveBank\n\
+ .word gSprites\n\
+ .word gDisplayedStringBattle\n\
+ .word gUnknown_03004210\n\
+ .word gOamMatrixAllocBitmap\n\
+ .word gBattleBankFunc\n\
+ .word debug_sub_8030C24+1");
+}
+#endif
+
void sub_802D204(void)
{
if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c
index 0d193d68f..5896e5e18 100644
--- a/src/battle/battle_controller_safari.c
+++ b/src/battle/battle_controller_safari.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle_anim_81258BC.h"
#include "battle.h"
+#include "battle_interface.h"
#include "battle_message.h"
#include "data2.h"
#include "link.h"
@@ -272,6 +273,17 @@ void bx_battle_menu_t6_2(void)
sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
}
}
+#if DEBUG
+ else if (gMain.newKeys & R_BUTTON)
+ {
+ if (!ewram17810[gActiveBank].unk0_5)
+ move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, 4, 0);
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ sub_804454C();
+ }
+#endif
}
void sub_812B65C(void)
diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c
index 97568d254..9be026d53 100644
--- a/src/battle/battle_interface.c
+++ b/src/battle/battle_interface.c
@@ -79,8 +79,8 @@ extern const u16 gBattleInterfaceStatusIcons_DynPal[];
static void sub_8043D5C(struct Sprite *);
static const void *sub_8043CDC(u8);
-static void sub_8044210(u8, s16, u8);
-static void draw_status_ailment_maybe(u8);
+/*static*/ void sub_8044210(u8, s16, u8);
+/*static*/ void draw_status_ailment_maybe(u8);
extern void sub_8045180(struct Sprite *);
static void sub_8045110(struct Sprite *);
static void sub_8045048(struct Sprite *);
@@ -651,7 +651,7 @@ void sub_8043F44(u8 a)
#define CHAR_LV_SEPARATOR CHAR_PERIOD
#endif
-static void sub_8043FC0(u8 a, u8 b)
+/*static*/ void sub_8043FC0(u8 a, u8 b)
{
u8 str[30];
void *const *r7;
@@ -905,7 +905,7 @@ _0804420C: .4byte 0x04000008\n\
}
#endif
-static void sub_8044210(u8 a, s16 b, u8 c)
+/*static*/ void sub_8044210(u8 a, s16 b, u8 c)
{
u8 str[0x14];
u8 *ptr;
@@ -1277,6 +1277,8 @@ _08044548: .4byte 0x04000008\n\
}
#endif
+extern u8 gUnknown_020297ED;
+
void sub_804454C(void)
{
s32 i;
@@ -1285,7 +1287,11 @@ void sub_804454C(void)
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gSprites[gHealthboxIDs[i]].callback == SpriteCallbackDummy
+#if DEBUG
+ && (gUnknown_020297ED != 0 || GetBankSide(i) != 1)
+#else
&& GetBankSide(i) != 1
+#endif
&& (IsDoubleBattle() || GetBankSide(i) != 0))
{
u8 r6;
@@ -2359,7 +2365,7 @@ void sub_8045180(struct Sprite *sprite)
sprite->pos2.y = gSprites[spriteId].pos2.y;
}
-static void sub_80451A0(u8 a, struct Pokemon *pkmn)
+/*static*/ void sub_80451A0(u8 a, struct Pokemon *pkmn)
{
u8 nickname[POKEMON_NAME_LENGTH];
u8 gender;
@@ -2507,7 +2513,7 @@ static void sub_8045458(u8 a, u8 b)
}
}
-static void draw_status_ailment_maybe(u8 a)
+/*static*/ void draw_status_ailment_maybe(u8 a)
{
s32 r4;
s32 r4_2;
@@ -2649,7 +2655,7 @@ static u8 sub_80457E8(u8 a, u8 b)
return ret;
}
-static void sub_80458B0(u8 a)
+/*static*/ void sub_80458B0(u8 a)
{
u8 *r6;
u8 r8;
@@ -2675,7 +2681,7 @@ static void sub_80458B0(u8 a)
}
-static void sub_8045998(u8 a)
+/*static*/ void sub_8045998(u8 a)
{
u8 *r7;
u8 status;
@@ -2752,6 +2758,15 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c)
{
if (c == 3 || c == 0)
sub_8043FC0(a, GetMonData(pkmn, MON_DATA_LEVEL));
+#if DEBUG
+ if (gUnknown_020297ED == 1)
+ {
+ if (c == 1 || c == 0)
+ sub_80440EC(a, GetMonData(pkmn, MON_DATA_HP), 0);
+ if (c == 2 || c == 0)
+ sub_80440EC(a, GetMonData(pkmn, MON_DATA_MAX_HP), 1);
+ }
+#endif
if (c == 5 || c == 0)
{
load_gfxc_health_bar(0);
diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c
index 4979760d7..1532a0b2f 100644
--- a/src/battle/battle_records.c
+++ b/src/battle/battle_records.c
@@ -8,9 +8,35 @@
#include "strings2.h"
#include "trainer_card.h"
+struct DebugStruct1
+{
+ u16 var0;
+ u8 var1[10];
+};
+
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
extern u8 gBattleOutcome;
+#if DEBUG
+const struct DebugStruct1 gUnknown_Debug_4245CC[] =
+{
+ { 1, _("NUMBER1") },
+ { 2, _("ナンバー2") },
+ { 3, _("ナンバー3") },
+ { 4, _("ナンバー4") },
+ { 5, _("ナンバー5") },
+ { 6, _("ナンバー6") },
+ { 7, _("ナンバー7") },
+};
+
+const u8 gUnknown_Debug_8424620[][4] =
+{
+ { 1, 1, 0, 0 },
+ { 2, 1, 0, 0 },
+ { 3, 1, 0, 0 },
+};
+#endif
+
static void InitLinkBattleRecord(struct LinkBattleRecord *record)
{
CpuFill16(0, record, sizeof(struct LinkBattleRecord));
@@ -197,6 +223,66 @@ void UpdateLinkBattleRecords(int id)
gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language);
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_81257E0(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ add sp, sp, #0xfffffffc\n\
+ bl InitLinkBattleRecords\n\
+ mov r5, #0x0\n\
+ ldr r6, ._62 @ gUnknown_Debug_4245CC\n\
+ sub r0, r6, #2\n\
+ mov r8, r0\n\
+ ldr r7, ._62 + 4 @ gLinkPlayers\n\
+._61:\n\
+ ldr r0, ._62 + 8 @ gUnknown_Debug_8424620\n\
+ lsl r3, r5, #0x2\n\
+ add r3, r3, r0\n\
+ ldrb r4, [r3]\n\
+ sub r4, r4, #0x1\n\
+ lsl r0, r4, #0x1\n\
+ add r0, r0, r4\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r0, r6\n\
+ add r0, r0, r8\n\
+ ldrh r2, [r0]\n\
+ ldrb r3, [r3, #0x1]\n\
+ ldr r0, ._62 + 12 @ gLinkPlayerMapObjects\n\
+ lsl r4, r4, #0x2\n\
+ add r4, r4, r0\n\
+ ldrb r4, [r4, #0x1]\n\
+ lsl r0, r4, #0x3\n\
+ sub r0, r0, r4\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r7\n\
+ ldrb r0, [r0, #0x1a]\n\
+ str r0, [sp]\n\
+ ldr r0, ._62 + 16 @ gSaveBlock1\n\
+ bl UpdateLinkBattleRecords_\n\
+ add r5, r5, #0x1\n\
+ cmp r5, #0x2\n\
+ bls ._61 @cond_branch\n\
+ add sp, sp, #0x4\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._63:\n\
+ .align 2, 0\n\
+._62:\n\
+ .word gUnknown_Debug_4245CC+2\n\
+ .word gLinkPlayers\n\
+ .word gUnknown_Debug_8424620\n\
+ .word gLinkPlayerMapObjects\n\
+ .word gSaveBlock1+0x30b8");
+}
+#endif
+
static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records)
{
ConvertIntToDecimalStringN_DigitWidth6(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_RIGHT_ALIGN, 4);
@@ -240,7 +326,8 @@ static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y)
}
}
-void ShowLinkBattleRecords(void) {
+void ShowLinkBattleRecords(void)
+{
s32 i;
Menu_DrawStdWindowFrame(1, 0, 28, 18);
sub_8072BD8(gOtherText_BattleResults, 0, 1, 240);
diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c
index 87b6952ff..194a002d3 100644
--- a/src/battle/battle_util.c
+++ b/src/battle/battle_util.c
@@ -22,6 +22,8 @@
#include "constants/species.h"
#include "constants/weather.h"
+extern u8 gUnknown_02023A14_50;
+
extern const u8* gBattlescriptCurrInstr;
extern u8 gActiveBank;
extern u8 gBattleBufferB[4][0x200];
@@ -1736,17 +1738,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
else
moveType = gBattleMoves[move].type;
- //_080184AC
switch (caseID)
{
case ABILITYEFFECT_ON_SWITCHIN: // 0
- //_08018518
if (gBankAttacker >= gNoOfAllBanks)
gBankAttacker = bank;
switch (gLastUsedAbility)
{
case 0xFF: //weather from overworld
- //_08018586
switch (GetCurrentWeather())
{
case WEATHER_RAIN_LIGHT:
@@ -1786,7 +1785,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_DRIZZLE:
- //_08018680
if (!(gBattleWeather & WEATHER_RAIN_PERMANENT))
{
gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY);
@@ -1796,7 +1794,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_SAND_STREAM:
- //_080186B8
if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT))
{
gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
@@ -1806,7 +1803,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_DROUGHT:
- //_080186F0
if (!(gBattleWeather & WEATHER_SUN_PERMANENT))
{
gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
@@ -1816,7 +1812,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_INTIMIDATE:
- //_08018728
if (!(gSpecialStatuses[bank].intimidatedPoke))
{
gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES;
@@ -1824,7 +1819,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_FORECAST:
- //_0801875C
effect = CastformDataTypeChange(bank);
if (effect != 0)
{
@@ -1834,7 +1828,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_TRACE:
- //_080187A0
if (!(gSpecialStatuses[bank].traced))
{
gStatuses3[bank] |= STATUS3_TRACE;
@@ -1843,7 +1836,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
break;
case ABILITY_CLOUD_NINE:
case ABILITY_AIR_LOCK:
- //_080187DC
{
// that's a weird choice for a variable, why not use i or bank?
for (target1 = 0; target1 < gNoOfAllBanks; target1++)
@@ -1862,7 +1854,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_ENDTURN: // 1
- //_08018814
if (gBattleMons[bank].hp != 0)
{
gBankAttacker = bank;
@@ -1922,7 +1913,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_MOVES_BLOCK: // 2
- //_08018A40
if (gLastUsedAbility == ABILITY_SOUNDPROOF)
{
for (i = 0; gSoundMovesTable[i] != 0xFFFF; i++)
@@ -1940,7 +1930,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_ABSORBING: // 3
- //_08018AD8
if (move)
{
switch (gLastUsedAbility)
@@ -2010,11 +1999,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CONTACT: // 4
- //_08018CF0
switch (gLastUsedAbility)
{
case ABILITY_COLOR_CHANGE:
- //_08018DCC
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& move != MOVE_STRUGGLE
&& gBattleMoves[move].power != 0
@@ -2035,7 +2022,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_ROUGH_SKIN:
- //_08018E94
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
@@ -2051,100 +2037,195 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_EFFECT_SPORE:
- //_08018F54
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (Random() % 10) == 0)
- {
- do
- {
- gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
- } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
- if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
- gBattleCommunication[MOVE_EFFECT_BYTE] += 2;
- gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40;
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
- gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ {
+ do
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
+ } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 2;
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (Random() % 10) == 0)
+ {
+ do
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
+ } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 2;
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
break;
case ABILITY_POISON_POINT:
- //_0801904C
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (Random() % 3) == 0)
- {
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
- gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (Random() % 3) == 0)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
break;
case ABILITY_STATIC:
- //_08019128
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (Random() % 3) == 0)
- {
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
- gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (Random() % 3) == 0)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
break;
case ABILITY_FLAME_BODY:
- //_08019204
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (Random() % 3) == 0)
- {
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
- gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (Random() % 3) == 0)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
break;
case ABILITY_CUTE_CHARM:
- //_080192E0
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && gBattleMons[gBankTarget].hp != 0
- && (Random() % 3) == 0
- && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
- && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
- && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
- && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF
- && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF)
- {
- gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10);
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && gBattleMons[gBankTarget].hp != 0
+ && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
+ && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF
+ && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF)
+ {
+ gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10);
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && gBattleMons[gBankTarget].hp != 0
+ && (Random() % 3) == 0
+ && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
+ && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF
+ && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF)
+ {
+ gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10);
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
+ effect++;
+ }
+ }
break;
}
break;
case ABILITYEFFECT_IMMUNITY: // 5
- //_08019448
{
for (bank = 0; bank < gNoOfAllBanks; bank++)
{
@@ -2228,7 +2309,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_FORECAST: // 6
- //_080197B4
{
for (bank = 0; bank < gNoOfAllBanks; bank++)
{
@@ -2247,7 +2327,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_SYNCHRONIZE: // 7
- //_08019804
if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
{
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
@@ -2263,7 +2342,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8
- //_08019880
if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
{
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
@@ -2279,7 +2357,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_INTIMIDATE1: // 9
- //_080198FC
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES)
@@ -2294,7 +2371,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_TRACE: // 11
- //_08019940
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE))
@@ -2308,7 +2384,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0
&& gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
{
- //_080199AE
gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | side);
gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
gLastUsedAbility = gBattleMons[gActiveBank].ability;
@@ -2316,7 +2391,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0)
{
- //_08019A34
gActiveBank = target1;
gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
gLastUsedAbility = gBattleMons[gActiveBank].ability;
@@ -2324,7 +2398,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
{
- //_08019A78
gActiveBank = target2;
gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
gLastUsedAbility = gBattleMons[gActiveBank].ability;
@@ -2332,7 +2405,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
}
else
- //_08019ABC
{
gActiveBank = target1;
if (gBattleMons[target1].ability && gBattleMons[target1].hp)
@@ -2364,7 +2436,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_INTIMIDATE2: // 10
- //_08019B1C
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES))
@@ -2380,7 +2451,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12
- //_08019B60
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2392,7 +2462,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_BANK_SIDE: // 13
- //_08019BBC
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2404,7 +2473,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_FIELD_SPORT: // 14
- //_08019C18
switch (gLastUsedAbility)
{
case 0xFD:
@@ -2434,7 +2502,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_ON_FIELD: // 19
- //_08019CD4
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0)
@@ -2445,7 +2512,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK: // 15
- //_08019D18
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ability && i != bank)
@@ -2456,7 +2522,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_OTHER_SIZE: // 16
- //_08019D5C
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2468,7 +2533,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_BANK_SIDE: // 17
- //_08019DB8
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2480,7 +2544,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_ON_FIELD: // 18
- //_08019F44
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ability && i != bank)
@@ -2491,7 +2554,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
}
- //_08019F76
if (effect && caseID < 0xC && gLastUsedAbility != 0xFF)
RecordAbilityBattle(bank, gLastUsedAbility);
}
@@ -3385,17 +3447,25 @@ u8 IsMonDisobedient(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK
|| GetBankSide(gBankAttacker) == 1
- || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName)
- || FlagGet(FLAG_BADGE08_GET))
- return 0;
+ || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName))
+ return 0;
- obedienceLevel = 10;
- if (FlagGet(FLAG_BADGE02_GET))
- obedienceLevel = 30;
- if (FlagGet(FLAG_BADGE04_GET))
- obedienceLevel = 50;
- if (FlagGet(FLAG_BADGE06_GET))
- obedienceLevel = 70;
+ if (DEBUG && (gUnknown_02023A14_50 & 0x40))
+ {
+ obedienceLevel = 10;
+ }
+ else
+ {
+ if (FlagGet(FLAG_BADGE08_GET))
+ return 0;
+ obedienceLevel = 10;
+ if (FlagGet(FLAG_BADGE02_GET))
+ obedienceLevel = 30;
+ if (FlagGet(FLAG_BADGE04_GET))
+ obedienceLevel = 50;
+ if (FlagGet(FLAG_BADGE06_GET))
+ obedienceLevel = 70;
+ }
if (gBattleMons[gBankAttacker].level <= obedienceLevel)
return 0;
diff --git a/src/contest.c b/src/contest.c
index ce29d80b0..e2695627e 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -33,6 +33,8 @@
#include "util.h"
#include "contest_ai.h"
+extern u8 gUnknown_020297ED;
+
extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool
extern void sub_80C8A38(u8);
extern void sub_80C8AD0(u8);
@@ -238,6 +240,7 @@ void sub_80B0BC4(u8, bool8);
void sub_80B0C5C(struct Sprite *);
void sub_80B0CB0(struct Sprite *);
void sub_80B0CDC(u8, int);
+void unref_sub_80B0CF4(void);
void sub_80B0D7C(void);
void sub_80B1118(void);
void sub_80B114C(u8);
@@ -613,6 +616,10 @@ void sub_80AB9A0(u8 taskId)
void ContestMainCallback2(void)
{
+#if DEBUG
+ if (gUnknown_020297ED == 1 && gMain.newKeys == 4)
+ unref_sub_80B0CF4();
+#endif
AnimateSprites();
RunTasks();
BuildOamBuffer();
@@ -732,6 +739,8 @@ void sub_80ABCDC(u8 taskId)
gTasks[taskId].func = sub_80ABEA0;
}
+void debug_sub_80B9EBC(u8);
+
// Handle move selection input
void sub_80ABEA0(u8 taskId)
{
@@ -804,10 +813,193 @@ void sub_80ABEA0(u8 taskId)
if (numMoves > 1)
PlaySE(SE_SELECT);
break;
+#if DEBUG
+ case START_BUTTON:
+ if (gUnknown_020297ED == 1 && !(gIsLinkContest & 1))
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = gContestMons[gContestPlayerMonIndex].moves[0];
+ gTasks[taskId].func = debug_sub_80B9EBC;
+ }
+ break;
+#endif
}
}
}
+#if DEBUG
+
+void debug_sub_80BA054(u8);
+
+void debug_sub_80B9EBC(u8 taskId)
+{
+ u8 text[100];
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ Text_FillWindowRectDefPalette(
+ &gUnknown_03004210,
+ 0,
+ gUnknown_083CA340[0][0],
+ gUnknown_083CA340[0][1],
+ gUnknown_083CA340[0][2],
+ gUnknown_083CA340[0][3]);
+ Text_InitWindowAndPrintText(
+ &gUnknown_03004210,
+ gMoveNames[gTasks[taskId].data[1]],
+ 776,
+ gUnknown_083CA340[0][0],
+ gUnknown_083CA340[0][1]);
+ ConvertIntToDecimalStringN(text, gTasks[taskId].data[1], 2, 3);
+ Text_InitWindowAndPrintText(
+ &gUnknown_03004210,
+ text,
+ 796,
+ gUnknown_083CA340[1][0],
+ gUnknown_083CA340[1][1]);
+ sub_80AED58();
+ sub_80AEBEC(gTasks[taskId].data[1]);
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ switch (gMain.newAndRepeatedKeys)
+ {
+ case 0x20:
+ gTasks[taskId].data[1] -= 1;
+ if (gTasks[taskId].data[1] < 1)
+ gTasks[taskId].data[1] = 354;
+ gTasks[taskId].data[0]--;
+ break;
+ case 0x200:
+ gTasks[taskId].data[1] -= 10;
+ if (gTasks[taskId].data[1] < 1)
+ gTasks[taskId].data[1] = 354;
+ gTasks[taskId].data[0]--;
+ break;
+ case 0x10:
+ gTasks[taskId].data[1] += 1;
+ if (gTasks[taskId].data[1] > 354)
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId].data[0]--;
+ break;
+ case 0x100:
+ gTasks[taskId].data[1] += 10;
+ if (gTasks[taskId].data[1] > 354)
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId].data[0]--;
+ break;
+ case 4:
+ case 8:
+ gBattle_BG0_Y = 0;
+ gBattle_BG2_Y = 0;
+ sub_80B1BDC();
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = debug_sub_80BA054;
+ break;
+ case 2:
+ gBattle_BG0_Y = DISPLAY_HEIGHT;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
+ gContestMons[gContestPlayerMonIndex].moves[0] = gTasks[taskId].data[1];
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].func = sub_80ABCDC;
+ break;
+ }
+ break;
+ }
+}
+
+void debug_sub_80BA054(u8 taskId)
+{
+ s32 i;
+ u8 r6;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ for (i = 0; i < 4; i++)
+ gBattleMonForms[i] = 0;
+ memset(&shared19348, 0, sizeof(shared19348));
+ sub_80B28F0(gContestPlayerMonIndex);
+ r6 = sub_80AE9FC(
+ gContestMons[gContestPlayerMonIndex].species,
+ gContestMons[gContestPlayerMonIndex].otId,
+ gContestMons[gContestPlayerMonIndex].personality);
+ gSprites[r6].pos2.x = 120;
+ gSprites[r6].callback = sub_80AD8FC;
+ gTasks[taskId].data[2] = r6;
+ gObjectBankIDs[gBankAttacker] = r6;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[0]++;
+ sContest.unk1925E = 0;
+ break;
+ case 1:
+ r6 = gTasks[taskId].data[2];
+ if (gSprites[r6].callback == SpriteCallbackDummy)
+ {
+ sContestantStatus[gContestPlayerMonIndex].currMove = gTasks[taskId].data[1];
+ sub_80B2790(gContestPlayerMonIndex);
+ sub_80B28F0(gContestPlayerMonIndex);
+ SelectContestMoveBankTarget(gTasks[taskId].data[1]);
+ DoMoveAnim(gTasks[taskId].data[1]);
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ gAnimScriptCallback();
+ if (!gAnimScriptActive)
+ {
+ sub_80B28CC(gContestPlayerMonIndex);
+ if (sContest.unk1925E != 0)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 20;
+ }
+ else
+ {
+ gTasks[taskId].data[0]++;
+ }
+ }
+ break;
+ case 3:
+ gTasks[taskId].data[3]++;
+ if (gTasks[taskId].data[3] == 21)
+ {
+ r6 = gTasks[taskId].data[2];
+ gSprites[r6].callback = sub_80AD92C;
+ sub_80B1B14();
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 4:
+ r6 = gTasks[taskId].data[2];
+ if (gSprites[r6].invisible)
+ {
+ FreeSpriteOamMatrix(&gSprites[r6]);
+ DestroySprite(&gSprites[r6]);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = debug_sub_80B9EBC;
+ gBattle_BG0_Y = DISPLAY_HEIGHT;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
+ }
+ break;
+ case 20:
+ if (gTasks[taskId].data[10]++ > 30)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 1;
+ }
+ break;
+ }
+}
+
+#endif
+
void sub_80AC0AC(s8 a)
{
MenuCursor_SetPos814A880(4, 88 + a * 16);
diff --git a/src/data/pokedex_entries_de.h b/src/data/pokedex_entries_de.h
index 0f64cba66..413b73d90 100644
--- a/src/data/pokedex_entries_de.h
+++ b/src/data/pokedex_entries_de.h
@@ -6337,7 +6337,8 @@ static const u8 DexDescription_Deoxys_2[] = _(
"dieses POKéMON ist sein Gehirn.");
#endif
-static const struct PokedexEntry gPokedexEntries[] = {
+const struct PokedexEntry gPokedexEntries[] =
+{
{
// Dummy
.categoryName = _("UNBEKANNT"),
diff --git a/src/data/pokedex_entries_en.h b/src/data/pokedex_entries_en.h
index 86da3d67b..933b1fc7d 100644
--- a/src/data/pokedex_entries_en.h
+++ b/src/data/pokedex_entries_en.h
@@ -5389,7 +5389,7 @@ static const u8 DexDescription_Deoxys_2[] = _(
"chest appears to be its brain.");
#endif
-static const struct PokedexEntry gPokedexEntries[] =
+const struct PokedexEntry gPokedexEntries[] =
{
{ //Dummy
.categoryName = _("UNKNOWN"),
diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c
new file mode 100644
index 000000000..3cb36ce0c
--- /dev/null
+++ b/src/debug/kagaya_debug_menu.c
@@ -0,0 +1,183 @@
+#if DEBUG
+
+#include "global.h"
+#include "field_effect.h"
+#include "field_control_avatar.h"
+#include "field_player_avatar.h"
+#include "main.h"
+#include "menu.h"
+#include "overworld.h"
+#include "palette.h"
+#include "random.h"
+#include "region_map.h"
+#include "script.h"
+#include "slot_machine.h"
+#include "trainer_card.h"
+
+extern u8 (*gMenuCallback)(void);
+
+void InitKagayaDebugMenu_B(void);
+u8 debug_sub_80B061C(void);
+u8 KagayaDebugMenu_TrainerCard(void);
+u8 debug_sub_80B068C(void);
+u8 KagayaDebugMenu_CardToExchange(void);
+u8 debug_sub_80B06E0(void);
+u8 KagayaDebugMenu_SlotMachine(void);
+u8 Kagaya_80B0734(void);
+u8 debug_sub_80B07DC(void);
+
+const u8 Str_83EBB34[] = _("Trainer’s card");
+const u8 Str_83EBB43[] = _("Card to exchange");
+const u8 Str_83EBB54[] = _("Slot machine");
+
+const struct MenuAction _83EBB64[] =
+{
+ { Str_83EBB34, KagayaDebugMenu_TrainerCard },
+ { Str_83EBB43, KagayaDebugMenu_CardToExchange },
+ { Str_83EBB54, KagayaDebugMenu_SlotMachine },
+};
+
+u8 InitKagayaDebugMenu_A(void)
+{
+ InitKagayaDebugMenu_B();
+ return 0;
+}
+
+void InitKagayaDebugMenu_B(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 14, 7);
+ Menu_PrintItems(2, 1, 3, _83EBB64);
+ InitMenu(0, 1, 1, 3, 0, 13);
+ gMenuCallback = debug_sub_80B061C;
+}
+
+u8 debug_sub_80B061C(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ {
+ return 0;
+ }
+ else if (input == -1)
+ {
+ CloseMenu();
+ return 1;
+ }
+ else
+ {
+ gMenuCallback = _83EBB64[input].func;
+ return 0;
+ }
+}
+
+u8 KagayaDebugMenu_TrainerCard(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gMenuCallback = debug_sub_80B068C;
+ return 0;
+}
+
+u8 debug_sub_80B068C(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ debug_sub_80A0710(sub_805469C);
+ CloseMenu();
+ ScriptContext2_Enable();
+ return 1;
+ }
+ return 0;
+}
+
+u8 KagayaDebugMenu_CardToExchange(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gMenuCallback = debug_sub_80B06E0;
+ return 0;
+}
+
+u8 debug_sub_80B06E0(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ debug_sub_80A073C(sub_805469C);
+ CloseMenu();
+ ScriptContext2_Enable();
+ return 1;
+ }
+ return 0;
+}
+
+u8 KagayaDebugMenu_SlotMachine(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gMenuCallback = Kagaya_80B0734;
+ return 0;
+}
+
+u8 Kagaya_80B0734(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ debug_sub_811609C(Random() % 6, sub_805469C);
+ CloseMenu();
+ ScriptContext2_Enable();
+ return 1;
+ }
+ return 0;
+}
+
+u8 debug_sub_80B0770(void)
+{
+ if (!(gPlayerAvatar.flags & 8))
+ {
+ CloseMenu();
+ if (IsPlayerFacingSurfableFishableWater())
+ {
+ gFieldEffectArguments[0] = 0;
+ FieldEffectStart(9);
+ }
+ }
+ else
+ {
+ CloseMenu();
+ }
+ return 1;
+}
+
+u8 debug_sub_80B07B0(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gMenuCallback = debug_sub_80B07DC;
+ return 0;
+}
+
+u8 debug_sub_80B07DC(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ CloseMenu();
+ SetMainCallback2(CB2_InitFlyRegionMap);
+ return 1;
+ }
+ return 0;
+}
+
+u8 debug_sub_80B0800(void)
+{
+ u8 r2;
+
+ CloseMenu();
+ r2 = sub_8068F18();
+ if (r2 != 0)
+ {
+ gFieldEffectArguments[0] = 0;
+ gFieldEffectArguments[1] = r2 - 1;
+ FieldEffectStart(0x2C);
+ }
+ return 1;
+}
+
+#endif // DEBUG
diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c
new file mode 100644
index 000000000..550ac7bbd
--- /dev/null
+++ b/src/debug/nakamura_debug_menu.c
@@ -0,0 +1,189 @@
+#if DEBUG
+#include "global.h"
+#include "menu.h"
+
+EWRAM_DATA u8 _nakamuraData0 = 0;
+EWRAM_DATA u8 _nakamuraData1 = 0;
+EWRAM_DATA u8 _nakamuraData2 = 0;
+EWRAM_DATA u8 _nakamuraData3 = 0;
+EWRAM_DATA u8 _nakamuraData4 = 0;
+EWRAM_DATA u8 _nakamuraData5 = 0;
+EWRAM_DATA u16 _nakamuraData6 = 0;
+EWRAM_DATA u16 _nakamuraData8 = 0;
+EWRAM_DATA u16 _nakamuraDataA = 0;
+EWRAM_DATA u16 _nakamuraDataC = 0;
+
+__attribute__((unused)) static u8 _nakamuraStatic0[0x18];
+__attribute__((unused)) static u8 _nakamuraStatic18;
+__attribute__((unused)) static u8 gDebugFiller3000814[4];
+
+asm(".global _nakamuraStatic0");
+asm(".global _nakamuraStatic18");
+
+u8 debug_sub_815FC54();
+u8 debug_sub_815F2B4();
+u8 debug_sub_815FC94();
+u8 debug_sub_815FB1C();
+u8 debug_sub_815F2F4();
+u8 debug_sub_815F62C();
+u8 debug_sub_815FBE8();
+u8 debug_sub_815FE1C();
+u8 debug_sub_8160D98();
+
+const u8 Str_843E36C[] = _("Berries");
+const u8 Str_843E374[] = _("Goods");
+const u8 Str_843E37A[] = _("{PKMN} list");
+const u8 Str_843E382[] = _("トラップ");
+const u8 Str_843E387[] = _("Move your base");
+const u8 Str_843E396[] = _("Moving {PKMN}");
+const u8 Str_843E3A0[] = _("Fishing points");
+const u8 Str_843E3AF[] = _("Set {POKEBLOCK}");
+const u8 Str_843E3B9[] = _("Make bases(to max)");
+const u8 Str_843E3CC[] = _("Base location");
+
+const struct MenuAction _843E3DC[] = {
+ { Str_843E36C, debug_sub_815FC54 },
+ { Str_843E37A, debug_sub_815F2B4 },
+ { Str_843E374, debug_sub_815FC94 },
+ { Str_843E387, debug_sub_815FB1C },
+ { Str_843E3B9, debug_sub_815F2F4 },
+ { Str_843E3CC, debug_sub_815F62C },
+ { Str_843E396, debug_sub_815FBE8 },
+ { Str_843E3A0, debug_sub_815FE1C },
+ { Str_843E3AF, debug_sub_8160D98 },
+};
+
+const u8 _843E424[][4] = {
+ { 1, 118, 47, 14 },
+ { 2, 125, 53, 10 },
+ { 3, 113, 49, 8 },
+ { 0xB, 118, 67, 6 },
+ { 0xC, 121, 40, 11 },
+ { 0xD, 111, 35, 1 },
+ { 0x15, 115, 20, 53 },
+ { 0x16, 121, 18, 13 },
+ { 0x17, 119, 26, 81 },
+ { 0x1F, 127, 59, 67 },
+ { 0x20, 125, 55, 11 },
+ { 0x21, 111, 27, 27 },
+ { 0x29, 114, 9, 47 },
+ { 0x2A, 115, 32, 39 },
+ { 0x2B, 115, 23, 8 },
+ { 0x33, 114, 30, 51 },
+ { 0x34, 115, 26, 15 },
+ { 0x35, 115, 32, 46 },
+ { 0x3D, 114, 11, 62 },
+ { 0x3E, 115, 21, 18 },
+ { 0x3F, 115, 25, 24 },
+ { 0x47, 114, 19, 70 },
+ { 0x48, 115, 32, 6 },
+ { 0x49, 114, 32, 57 },
+ { 0x51, 116, 71, 4 },
+ { 0x52, 123, 47, 3 },
+ { 0x53, 123, 57, 5 },
+ { 0x5B, 116, 79, 11 },
+ { 0x5C, 123, 49, 3 },
+ { 0x5D, 120, 18, 12 },
+ { 0x65, 120, 28, 62 },
+ { 0x66, 116, 56, 6 },
+ { 0x67, 119, 16, 81 },
+ { 0x6F, 120, 30, 62 },
+ { 0x70, 116, 55, 15 },
+ { 0x71, 119, 16, 28 },
+ { 0x79, 111, 33, 34 },
+ { 0x7A, 118, 29, 5 },
+ { 0x7B, 127, 45, 24 },
+ { 0x83, 111, 24, 36 },
+ { 0x84, 125, 7, 25 },
+ { 0x85, 115, 8, 30 },
+ { 0x8D, 111, 34, 50 },
+ { 0x8E, 127, 59, 72 },
+ { 0x8F, 127, 61, 21 },
+ { 0x97, 127, 67, 63 },
+ { 0x98, 125, 24, 32 },
+ { 0x99, 111, 35, 31 },
+ { 0xA1, 111, 13, 19 },
+ { 0xA2, 121, 43, 7 },
+ { 0xA3, 118, 47, 5 },
+ { 0xA4, 111, 14, 19 },
+ { 0xAB, 118, 46, 5 },
+ { 0xAC, 121, 42, 7 },
+ { 0xAD, 119, 19, 76 },
+ { 0xAE, 115, 7, 20 },
+ { 0xB5, 110, 16, 25 },
+ { 0xB6, 114, 11, 27 },
+ { 0xB7, 115, 8, 20 },
+ { 0xBF, 110, 17, 25 },
+ { 0xC0, 114, 12, 27 },
+ { 0xC1, 119, 18, 76 },
+ { 0xC9, 119, 5, 2 },
+ { 0xCA, 119, 4, 89 },
+ { 0xCB, 120, 38, 54 },
+ { 0xCC, 120, 5, 76 },
+ { 0xD3, 119, 5, 15 },
+ { 0xD4, 119, 7, 101 },
+ { 0xD5, 120, 31, 23 },
+ { 0xDD, 119, 34, 24 },
+ { 0xDE, 120, 26, 10 },
+ { 0xDF, 119, 4, 15 },
+ { 0xE7, 119, 31, 73 },
+ { 0xE8, 120, 29, 85 },
+ { 0xE9, 119, 6, 2 },
+};
+
+const u8 Str_843E550[] = _("R");
+const u8 Str_843E552[] = _("X");
+const u8 Str_843E554[] = _("Y");
+const u8 Str_843E556[] = _(
+ "♂1\n"
+ "♂2\n"
+ "♂3\n"
+ "♂4\n"
+ "♂5\n"
+ "♀1\n"
+ "♀2\n"
+ "♀3\n"
+ "♀4\n"
+ "♀5");
+const u8 Str_843E574[] = _("ー");
+const u8 Str_843E576[] = _("あ");
+const u8 Str_843E578[] = _("ア");
+const u8 Str_843E57A[] = _("A");
+const u8 Str_843E57C[] = _("a");
+const u8 Str_843E57E[] = _("0");
+const u8 Str_843E580[] = _(
+ "ADD\n"
+ "DEL\n"
+ "EXIT");
+const u8 Str_843E58D[] = _(
+ "Fishing location R119\n"
+ " Y1\n"
+ " Y2\n"
+ " Y3\n"
+ "Encounter location\n"
+ "\n"
+ "\n"
+ "front of you");
+const u8 _843E5D1[] = {0x0F, 0x16, 0x19};
+const u8 Str_843E5D4[] = _(
+ "Aボタン {ESCAPE}\p"
+ "  Bボタン ー\n"
+ "START けってい");
+const u8 Str_843E5F0[] = _("?");
+const u8 Str_843E5F2[] = _("HP どりょくち");
+const u8 Str_843E5FB[] = _("こうげき どりょくち");
+const u8 Str_843E606[] = _("ぼうぎょ どりょくち");
+const u8 Str_843E611[] = _("すばやさ どりょくち");
+const u8 Str_843E61C[] = _("とくこう どりょくち");
+const u8 Str_843E627[] = _("とくぼう どりょくち");
+const u8 Str_843E632[] = _("なつきど");
+const u8 Str_843E637[] = _("どりょくち ごうけい");
+const u8 Str_843E642[] = _("ここから");
+const u8 Str_843E647[] = _("ここまで");
+const u8 Str_843E64C[] = _("かいすう");
+const u8 Str_843E651[] = _("けっか");
+const u8 Str_843E655[] = _("かい");
+const u8 Str_843E658[] = _("0");
+const u8 Str_843E65A[] = _("はんい");
+
+#endif // DEBUG
diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c
new file mode 100644
index 000000000..b3885ff76
--- /dev/null
+++ b/src/debug/nohara_debug_menu.c
@@ -0,0 +1,12 @@
+#if DEBUG
+#include "global.h"
+
+__attribute__((unused)) static u8 gDebug_03000724;
+__attribute__((unused)) static u8 gDebug_03000725;
+__attribute__((unused)) static u8 gDebug_03000726;
+
+asm(".global gDebug_03000724");
+asm(".global gDebug_03000725");
+asm(".global gDebug_03000726");
+
+#endif
diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c
new file mode 100644
index 000000000..4690368d8
--- /dev/null
+++ b/src/debug/start_menu_debug.c
@@ -0,0 +1,6051 @@
+#if DEBUG
+
+#include "global.h"
+#include "constants/songs.h"
+#include "battle.h"
+#include "debug.h"
+#include "link.h"
+#include "main.h"
+#include "menu.h"
+#include "mystery_event_menu.h"
+#include "overworld.h"
+#include "reset_rtc_screen.h"
+#include "rtc.h"
+#include "save.h"
+#include "sound.h"
+#include "task.h"
+#include "text.h"
+#include "trade.h"
+
+// berry_blender.c
+extern void unref_sub_80524BC(void);
+
+void debug_sub_8076BB4(u8);
+void debug_sub_8077CF4();
+
+u8 DebugMenu_Exit(void);
+u8 DebugMenu_OpenWatanabe(void);
+u8 DebugMenu_OpenSogabe(void);
+u8 DebugMenu_OpenTamada(void);
+u8 DebugMenu_OpenKagaya(void);
+u8 DebugMenu_OpenMatsuda(void);
+u8 DebugMenu_OpenNohara(void);
+u8 DebugMenu_OpenNakamura(void);
+u8 DebugMenu_Teleport(void);
+u8 DebugMenu_EditPKMN(void);
+u8 DebugMenu_SwitchBG(void);
+u8 DebugMenu_OpenMori(void);
+u8 DebugMenu_OpenTomomichi(void);
+u8 DebugMenu_OpenAoki(void);
+u8 DebugMenu_OpenTaya(void);
+u8 DebugMenu_ToggleClearFlag(void);
+u8 DebugMenu_ControlEncounter(void);
+u8 DebugMenu_PTime(void);
+u8 DebugMenu_MakeItems(void);
+u8 debug_sub_8091300(void);
+u8 DebugMenu_ViewPortraits(void);
+u8 DebugMenu_TimeRecords(void);
+u8 DebugMenu_SetTime(void);
+u8 DebugMenu_NationalDex(void);
+u8 DebugMenu_CreatePKMN(void);
+u8 DebugMenu_ViewPokemonGraphics(void);
+u8 DebugMenu_BattleForDebug(void);
+u8 DebugMenu_AllBadges(void);
+u8 DebugMenu_HoennNationalDex(void);
+u8 DebugMenu_SetRamBerry(void);
+u8 DebugMenu_UseHM(void);
+u8 DebugMenu_OpenIwasawa(void);
+u8 DebugMenu_ToggleBGM(void);
+u8 DebugMenu_OpenSizeComparison(void);
+u8 DebugMenu_Safari(void);
+u8 DebugMenu_RematchTrainers(void);
+u8 DebugMenu_MiragaIslandRND(void);
+u8 DebugMenu_HallOfFame(void);
+u8 DebugMenu_OpenMysteryEvent(void);
+u8 DebugMenu_OpenLegendsRecord(void);
+u8 DebugMenu_OpenWeatherEvents(void);
+u8 DebugMenu_CellInfo(void);
+u8 DebugMenu_CheckPKBLCK(void);
+u8 DebugMenu_EffortValues(void);
+u8 DebugMenu_HoennDex(void);
+u8 DebugMenu_OpenSeeTrainers(void);
+u8 DebugMenu_OpenBerryInfo(void);
+u8 DebugMenu_BattleTowerStages(void);
+u8 DebugMenu_EndSequenceDemo(void);
+u8 DebugMenu_RandomNumberTest(void);
+u8 DebugMenu_MeTooBackupMan(void);
+u8 DebugMenu_OpenMurakawa(void);
+u8 DebugMenu_OpenKiwa(void);
+u8 DebugMenu_8076CBC(void);
+u8 DebugMenu_8076CC0(void);
+u8 DebugMenu_8076CD4(void);
+u8 DebugMenu_8076C6C(void);
+u8 DebugMenu_8076CD8(void);
+u8 DebugMenu_8076D28(void);
+u8 DebugMenu_8076D3C(void);
+u8 DebugMenu_8076C80(void);
+u8 DebugMenu_8076C90(void);
+u8 DebugMenu_8076D50(void);
+u8 DebugMenu_8076CEC(void);
+u8 DebugMenu_8076D14(void);
+u8 DebugMenu_8076D00(void);
+u8 DebugMenu_8076D5C(void);
+u8 DebugMenu_8076E18(void);
+u8 DebugMenu_8076EDC(void);
+void DebugMenu_8076FEC(void);
+
+const u8 Str_839B740[] = _("·WATANABE");
+const u8 Str_839B74A[] = _("SOGABE");
+const u8 Str_839B751[] = _("·TAMADA");
+const u8 Str_839B759[] = _("KAGAYA");
+const u8 Str_839B760[] = _("MATUDA");
+const u8 Str_839B767[] = _("NOHARA");
+const u8 Str_839B76E[] = _("NAKAMURA");
+const u8 Str_839B777[] = _("EXIT");
+const u8 Str_839B77C[] = _("Teleport");
+const u8 Str_839B785[] = _("Switch BG");
+const u8 Str_839B78F[] = _("Edit your {PKMN}");
+const u8 Str_839B79C[] = _("MORI");
+const u8 Str_839B7A1[] = _("TOMOMITI");
+const u8 Str_839B7AA[] = _("·AOKI");
+const u8 Str_839B7B0[] = _("TAYA");
+const u8 Str_839B7B5[] = _("Control Encounter");
+const u8 Str_839B7C7[] = _("PTIME");
+const u8 Str_839B7CD[] = _("Make items");
+const u8 Str_839B7D8[] = _("Transport");
+const u8 Str_839B7E2[] = _("See portraits");
+const u8 Str_839B7F0[] = _("Time records");
+const u8 Str_839B7FD[] = _("Set time");
+const u8 Str_839B806[] = _("National オカDex");
+const u8 Str_839B815[] = _("Hoenn オカDex");
+const u8 Str_839B821[] = _("Create {PKMN}");
+const u8 Str_839B82B[] = _("See {PKMN} graphics");
+const u8 Str_839B83B[] = _("See trainers");
+const u8 Str_839B848[] = _("Battle for debug");
+const u8 Str_839B859[] = _("Full set of badges");
+const u8 Str_839B86C[] = _("Hoenn National Dex");
+const u8 Str_839B87F[] = _("Set Ram berry");
+const u8 Str_839B88D[] = _("Use HM");
+const u8 Str_839B894[] = _("IWASAWA");
+const u8 Str_839B89C[] = _("BGM ON/OFF");
+const u8 Str_839B8A7[] = _("Size comparison");
+const u8 Str_839B8B7[] = _("Clear flag ON/OFF");
+const u8 Str_839B8C9[] = _("Safari");
+const u8 Str_839B8D0[] = _("Rematch trainers");
+const u8 Str_839B8E1[] = _("Mirage island RND");
+const u8 Str_839B8F3[] = _("Hall of fame");
+const u8 Str_839B900[] = _("Mystery event");
+const u8 Str_839B90E[] = _("Legends records");
+const u8 Str_839B91E[] = _("Weather events");
+const u8 Str_839B92D[] = _("Cell info.");
+const u8 Str_839B938[] = _("Check {POKEBLOCK}");
+const u8 Str_839B944[] = _("Effort values");
+const u8 Str_839B952[] = _("Berrie Info");
+const u8 Str_839B95E[] = _("Battle Tower stages");
+const u8 Str_839B972[] = _("End sequence demo");
+const u8 Str_839B984[] = _("Random number test");
+const u8 Str_839B997[] = _("Me-too BackupMan");
+const u8 Str_839B9A8[] = _("MURAKAWA");
+const u8 Str_839B9B1[] = _("KINA(FONT)");
+
+const struct MenuAction gDebug0x839B9BC[] =
+{
+ { Str_839B777, DebugMenu_Exit },
+ { Str_839B740, DebugMenu_OpenWatanabe },
+ { Str_839B74A, DebugMenu_OpenSogabe },
+ { Str_839B751, DebugMenu_OpenTamada },
+ { Str_839B759, DebugMenu_OpenKagaya },
+ { Str_839B760, DebugMenu_OpenMatsuda },
+ { Str_839B767, DebugMenu_OpenNohara },
+ { Str_839B76E, DebugMenu_OpenNakamura },
+ { Str_839B77C, DebugMenu_Teleport },
+ { Str_839B78F, DebugMenu_EditPKMN },
+ { Str_839B785, DebugMenu_SwitchBG },
+ { Str_839B79C, DebugMenu_OpenMori },
+ { Str_839B7A1, DebugMenu_OpenTomomichi },
+ { Str_839B7AA, DebugMenu_OpenAoki },
+ { Str_839B7B0, DebugMenu_OpenTaya },
+ { Str_839B8B7, DebugMenu_ToggleClearFlag },
+ { Str_839B7B5, DebugMenu_ControlEncounter },
+ { Str_839B7C7, DebugMenu_PTime },
+ { Str_839B7CD, DebugMenu_MakeItems },
+ { Str_839B7D8, debug_sub_8091300 },
+ { Str_839B7E2, DebugMenu_ViewPortraits },
+ { Str_839B7F0, DebugMenu_TimeRecords },
+ { Str_839B7FD, DebugMenu_SetTime },
+ { Str_839B806, DebugMenu_NationalDex },
+ { Str_839B821, DebugMenu_CreatePKMN },
+ { Str_839B82B, DebugMenu_ViewPokemonGraphics },
+ { Str_839B848, DebugMenu_BattleForDebug },
+ { Str_839B859, DebugMenu_AllBadges },
+ { Str_839B86C, DebugMenu_HoennNationalDex },
+ { Str_839B87F, DebugMenu_SetRamBerry },
+ { Str_839B88D, DebugMenu_UseHM },
+ { Str_839B894, DebugMenu_OpenIwasawa },
+ { Str_839B89C, DebugMenu_ToggleBGM },
+ { Str_839B8A7, DebugMenu_OpenSizeComparison },
+ { Str_839B8C9, DebugMenu_Safari },
+ { Str_839B8D0, DebugMenu_RematchTrainers },
+ { Str_839B8E1, DebugMenu_MiragaIslandRND },
+ { Str_839B8F3, DebugMenu_HallOfFame },
+ { Str_839B900, DebugMenu_OpenMysteryEvent },
+ { Str_839B90E, DebugMenu_OpenLegendsRecord },
+ { Str_839B91E, DebugMenu_OpenWeatherEvents },
+ { Str_839B92D, DebugMenu_CellInfo },
+ { Str_839B938, DebugMenu_CheckPKBLCK },
+ { Str_839B944, DebugMenu_EffortValues },
+ { Str_839B815, DebugMenu_HoennDex },
+ { Str_839B83B, DebugMenu_OpenSeeTrainers },
+ { Str_839B952, DebugMenu_OpenBerryInfo },
+ { Str_839B95E, DebugMenu_BattleTowerStages },
+ { Str_839B972, DebugMenu_EndSequenceDemo },
+ { Str_839B984, DebugMenu_RandomNumberTest },
+ { Str_839B997, DebugMenu_MeTooBackupMan },
+ { Str_839B9A8, DebugMenu_OpenMurakawa },
+ { Str_839B9B1, DebugMenu_OpenKiwa },
+};
+
+const u8 gUnknown_Debug_839BB64[] =
+{
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x00, 0x0b, 0x0c, 0x0d, 0x0e, 0x1f, 0x12, 0x13, 0x00, 0x08, 0x09, 0x0a, 0x1e, 0x10, 0x24, 0x0f, 0x00, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x00,
+ 0x1c, 0x1d, 0x14, 0x20, 0x21, 0x22, 0x23, 0x00, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x00, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x00, 0x11, 0x33, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+const u8 gUnknown_Debug_0839BBA4[] = _("Debugging Version");
+const u8 gUnknown_Debug_0839BBB6[] = _("{VERSION} Version");
+const u8 gUnknown_Debug_0839BBC1[] = _("Normal RTC compatible");
+const u8 Str_839BBD7[] = _("か の じっけん");
+const u8 Str_839BBE0[] = _("じっけん2");
+const u8 Str_839BBE6[] = _("BGじっけん");
+const u8 Str_839BBED[] = _("Battle");
+const u8 Str_839BBF4[] = _("つうしん じっけん");
+const u8 Str_839BBFE[] = _("LINK Test2");
+const u8 Str_839BC09[] = _("フィールド はじめる");
+const u8 Str_839BC14[] = _("フィールド つづき");
+const u8 Str_839BC1E[] = _("Sound test");
+const u8 Str_839BC29[] = _("{POKEBLOCK} test");
+const u8 Str_839BC34[] = _("Crash backup data");
+const u8 Str_839BC46[] = _("e-Card test");
+const u8 Str_839BC52[] = _("こうかんデモ   ");
+const u8 Str_839BC5C[] = _("Time in game");
+const u8 Str_839BC69[] = _("フェスタ モード");
+const u8 Str_839BC72[] = _("Mimic e-Card");
+const u8 Str_839BC7F[] = _("RTC reset");
+const u8 Str_839BC89[] = _("Converter");
+
+const struct MenuAction gUnknown_Debug_839BC94[] =
+{
+ { Str_839BBD7, DebugMenu_8076CBC },
+ { Str_839BBE0, DebugMenu_8076CC0 },
+ { Str_839BBE6, DebugMenu_8076CD4 },
+ { Str_839BBED, DebugMenu_8076C6C },
+ { Str_839BC29, DebugMenu_8076CD8 },
+ { Str_839BBFE, DebugMenu_8076D28 },
+ { Str_839BC1E, DebugMenu_8076D3C },
+ { Str_839BC09, DebugMenu_8076C80 },
+ { Str_839BC14, DebugMenu_8076C90 },
+ { Str_839BC34, DebugMenu_8076D50 },
+ { Str_839BC46, DebugMenu_8076CEC },
+ { Str_839BC52, DebugMenu_8076D14 },
+ { Str_839BC72, DebugMenu_8076D00 },
+ { Str_839BC5C, DebugMenu_8076D5C },
+ { Str_839BC7F, DebugMenu_8076E18 },
+ { Str_839BC89, DebugMenu_8076EDC },
+};
+
+// NOTE: When decompiling this file, I found out that having an extraneous extern
+// in a C file can affect the generated asm. If this extern is commented out,
+// debug_sub_8076BB4 will access the array differently and no longer match.
+//extern const struct MenuAction gUnknown_Debug_839BC94[];
+
+const u8 gMenuOrders_839BD14[][10] =
+{
+ { 3, 6, 4, 0xFF },
+ { 5, 9, 10, 12, 13, 14, 15, 0xFF },
+};
+
+const u8 Str_839BD26[] = {2, 0, 0, 0}; // doesn't appear to be referenced
+
+const u8 Str_839BD2C[] = _("RTCを リセット します\n" // Reset RTC
+ "Aで じっこう   Bでキャンセル");
+
+const u8 Str_839BD4C[] = _("RTCを リセット した!");
+
+const u8 Str_839BD5A[] = _("セーブデータを コンバートします\n"
+ "Aで けってい  Bで キャンセル");
+
+const u8 Str_839BD7D[] = _("へんかんが しゅうりょう しました!");
+
+
+extern const u8 Str_839BD2C[];
+extern const u8 Str_839BD4C[];
+
+__attribute__((unused)) static u8 gUnknown_030006B8[4];
+__attribute__((unused)) static u8 gUnknown_030006BC[4];
+__attribute__((unused)) static u8 gUnknown_030006C0;
+__attribute__((unused)) static u8 gUnknown_030006C1;
+static const u8 *gUnknown_030006C4;
+__attribute__((unused)) static u8 gUnknown_030006C8;
+
+void debug_sub_8076AC8(u8 a)
+{
+ s32 r4;
+
+ gUnknown_030006C4 = gMenuOrders_839BD14[a];
+ for (r4 = 0; gUnknown_030006C4[r4] != 0xFF; r4++)
+ ;
+ Menu_EraseWindowRect(16, 0, 29, 19);
+ Menu_DrawStdWindowFrame(16, 0, 29, r4 * 2 + 1);
+ Menu_PrintItemsReordered(17, 1, r4, (struct MenuAction2 *)gUnknown_Debug_839BC94, gUnknown_030006C4);
+ InitMenu(0, 17, 1, r4, 0, 12);
+}
+
+void debug_sub_8076B4C(void)
+{
+ u8 taskId = FindTaskIdByFunc(debug_sub_8076BB4);
+
+ if (taskId != 0xFF)
+ DestroyTask(taskId);
+}
+
+// Initializes test menu
+void debug_sub_8076B68(void)
+{
+ Menu_PrintText(gUnknown_Debug_0839BBB6, 1, 1);
+ Menu_PrintText(gUnknown_Debug_0839BBC1, 1, 3);
+ Menu_PrintText(gUnknown_Debug_0839BBA4, 1, 9);
+ debug_sub_8077CF4(4, 11);
+ debug_sub_8076AC8(0);
+ CreateTask(debug_sub_8076BB4, 1);
+}
+
+// Handles input for the test menu
+void debug_sub_8076BB4(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ switch (input)
+ {
+ default:
+ gUnknown_Debug_839BC94[gUnknown_030006C4[cursorPos]].func();
+ break;
+ case -2:
+ if (gMain.newKeys & 0x20)
+ {
+ if (data[0] == 0)
+ data[0] = 1;
+ else
+ data[0]--;
+ debug_sub_8076AC8(data[0]);
+ PlaySE(SE_SELECT);
+ }
+ else if (gMain.newKeys & 0x10)
+ {
+ if (data[0] == 1)
+ data[0] = 0;
+ else
+ data[0]++;
+ debug_sub_8076AC8(data[0]);
+ PlaySE(SE_SELECT);
+ }
+ break;
+ case -1:
+ DoSoftReset();
+ break;
+ }
+}
+
+u8 DebugMenu_8076C6C(void)
+{
+ SetMainCallback2(debug_sub_8010800);
+ return 0;
+}
+
+u8 DebugMenu_8076C80(void)
+{
+ debug_sub_8076B4C();
+ DebugMenu_8076FEC();
+ return 0;
+}
+
+u8 DebugMenu_8076C90(void)
+{
+ if (gSaveFileStatus == SAVE_STATUS_ERROR)
+ {
+ PlaySE(0x16);
+ }
+ else
+ {
+ debug_sub_8076B4C();
+ SetMainCallback2(CB2_ContinueSavedGame);
+ }
+ return 0;
+}
+
+u8 DebugMenu_8076CBC(void)
+{
+ return 0;
+}
+
+u8 DebugMenu_8076CC0(void)
+{
+ SetMainCallback2(debug_nullsub_66);
+ return 0;
+}
+
+u8 DebugMenu_8076CD4(void)
+{
+ return 0;
+}
+
+u8 DebugMenu_8076CD8(void)
+{
+ SetMainCallback2(unref_sub_80524BC);
+ return 0;
+}
+
+u8 DebugMenu_8076CEC(void)
+{
+ SetMainCallback2(CB2_InitMysteryEventMenu);
+ return 0;
+}
+
+u8 DebugMenu_8076D00(void)
+{
+ SetMainCallback2(debug_sub_815D15C);
+ return 0;
+}
+
+u8 DebugMenu_8076D14(void)
+{
+ SetMainCallback2(sub_804B790);
+ return 0;
+}
+
+u8 DebugMenu_8076D28(void)
+{
+ SetMainCallback2(LinkTestScreen);
+ return 0;
+}
+
+u8 DebugMenu_8076D3C(void)
+{
+ SetMainCallback2(CB2_StartSoundCheckMenu);
+ return 0;
+}
+
+u8 DebugMenu_8076D50(void)
+{
+ Save_EraseAllData();
+ return 0;
+}
+
+u8 DebugMenu_8076D5C(void)
+{
+ debug_sub_8076B4C();
+ debug_sub_806F8F8();
+ return 0;
+}
+
+void DebugMenu_8076D6C(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_839BD2C, 2, 15);
+ data[0]++;
+ break;
+ case 1:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_839BD4C, 2, 15);
+ PlaySE(0x49);
+ RtcReset();
+ data[0]++;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ DestroyTask(taskId);
+ DoSoftReset();
+ }
+ break;
+ case 2:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ DestroyTask(taskId);
+ DoSoftReset();
+ }
+ break;
+ }
+}
+
+__attribute__((naked))
+u8 DebugMenu_8076E18()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8076B4C\n"
+ " ldr r0, ._67 @ DebugMenu_8076D6C\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._68:\n"
+ " .align 2, 0\n"
+ "._67:\n"
+ " .word DebugMenu_8076D6C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076E30()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " lsl r0, r3, #0x2\n"
+ " add r0, r0, r3\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._73 @ gTasks\n"
+ " add r4, r0, r1\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " cmp r1, #0x1\n"
+ " beq ._69 @cond_branch\n"
+ " cmp r1, #0x1\n"
+ " bgt ._70 @cond_branch\n"
+ " cmp r1, #0\n"
+ " beq ._71 @cond_branch\n"
+ " b ._86\n"
+ "._74:\n"
+ " .align 2, 0\n"
+ "._73:\n"
+ " .word gTasks+0x8\n"
+ "._70:\n"
+ " cmp r1, #0x2\n"
+ " beq ._75 @cond_branch\n"
+ " b ._86\n"
+ "._71:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._78 @ Str_839BD5A\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " b ._77\n"
+ "._79:\n"
+ " .align 2, 0\n"
+ "._78:\n"
+ " .word Str_839BD5A\n"
+ "._69:\n"
+ " ldr r0, ._82 @ gMain\n"
+ " ldrh r2, [r0, #0x2e]\n"
+ " and r1, r1, r2\n"
+ " cmp r1, #0\n"
+ " beq ._80 @cond_branch\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " bl sub_813B79C\n"
+ " ldr r0, ._82 + 4 @ Str_839BD7D\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ "._77:\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._86\n"
+ "._83:\n"
+ " .align 2, 0\n"
+ "._82:\n"
+ " .word gMain\n"
+ " .word Str_839BD7D\n"
+ "._80:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._86 @cond_branch\n"
+ " add r0, r3, #0\n"
+ " bl DestroyTask\n"
+ " bl DoSoftReset\n"
+ " b ._86\n"
+ "._75:\n"
+ " ldr r0, ._87 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._86 @cond_branch\n"
+ " add r0, r3, #0\n"
+ " bl DestroyTask\n"
+ " bl DoSoftReset\n"
+ "._86:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._88:\n"
+ " .align 2, 0\n"
+ "._87:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_8076EDC()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8076B4C\n"
+ " ldr r0, ._89 @ DebugMenu_8076E30\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._90:\n"
+ " .align 2, 0\n"
+ "._89:\n"
+ " .word DebugMenu_8076E30+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076EF4()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r4, ._93 @ gUnknown_Debug_839BDC4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " add r3, r4, #0\n"
+ " bl Menu_PrintItems\n"
+ " mov r5, #0x0\n"
+ " add r4, r4, #0x4\n"
+ "._92:\n"
+ " lsl r0, r5, #0x3\n"
+ " add r0, r0, r4\n"
+ " ldr r1, [r0]\n"
+ " mov r0, #0x1\n"
+ " and r1, r1, r0\n"
+ " mov r0, #0xb6\n"
+ " cmp r1, #0\n"
+ " bne ._91 @cond_branch\n"
+ " mov r0, #0xb5\n"
+ "._91:\n"
+ " lsl r2, r5, #0x1\n"
+ " add r2, r2, #0x1\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r1, #0xa\n"
+ " bl sub_8071F60\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x7\n"
+ " bls ._92 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x9\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl InitMenu\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._94:\n"
+ " .align 2, 0\n"
+ "._93:\n"
+ " .word gUnknown_Debug_839BDC4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076F60()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._97 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r4, r0\n"
+ " bne ._96 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " bl debug_sub_8076B68\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " b ._97\n"
+ "._96:\n"
+ " ldr r3, ._100 @ gUnknown_Debug_839BDC4\n"
+ " lsl r2, r2, #0x18\n"
+ " asr r2, r2, #0x15\n"
+ " add r0, r3, #4\n"
+ " add r0, r2, r0\n"
+ " ldrb r4, [r0]\n"
+ " ldr r0, ._100 + 4 @ gSaveBlock2\n"
+ " mov r1, #0x1\n"
+ " and r1, r1, r4\n"
+ " strb r1, [r0, #0x8]\n"
+ " add r2, r2, r3\n"
+ " ldr r1, [r2]\n"
+ " bl StringCopy\n"
+ " mov r0, #0x80\n"
+ " and r4, r4, r0\n"
+ " cmp r4, #0\n"
+ " bne ._98 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8057508\n"
+ " b ._99\n"
+ "._101:\n"
+ " .align 2, 0\n"
+ "._100:\n"
+ " .word gUnknown_Debug_839BDC4\n"
+ " .word gSaveBlock2\n"
+ "._98:\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8057508\n"
+ "._99:\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " ldr r0, ._102 @ debug_sub_8058C00\n"
+ " bl SetMainCallback2\n"
+ "._97:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._103:\n"
+ " .align 2, 0\n"
+ "._102:\n"
+ " .word debug_sub_8058C00+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076FEC()
+{
+ asm(
+ " push {lr}\n"
+ " bl DebugMenu_8076EF4\n"
+ " ldr r0, ._104 @ DebugMenu_8076F60\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._105:\n"
+ " .align 2, 0\n"
+ "._104:\n"
+ " .word DebugMenu_8076F60+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077004()
+{
+ asm(
+ " ldr r2, ._106 @ gUnknown_030006C4\n"
+ " ldr r0, ._106 + 4 @ gUnknown_030006C1\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._106 + 8 @ gUnknown_Debug_839BB64\n"
+ " add r0, r0, r1\n"
+ " str r0, [r2]\n"
+ " bx lr\n"
+ "._107:\n"
+ " .align 2, 0\n"
+ "._106:\n"
+ " .word gUnknown_030006C4 \n"
+ " .word gUnknown_030006C1 \n"
+ " .word gUnknown_Debug_839BB64\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077020()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, ._109 @ gMenuCallback\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._108 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ "._108:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._110:\n"
+ " .align 2, 0\n"
+ "._109:\n"
+ " .word gMenuCallback\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077048()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._111 @ gMenuCallback\n"
+ " ldr r1, ._111 + 4 @ DebugMenu_807706C\n"
+ " str r1, [r0]\n"
+ " bl ScriptContext2_Enable\n"
+ " ldr r0, ._111 + 8 @ DebugMenu_8077020\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._112:\n"
+ " .align 2, 0\n"
+ "._111:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_807706C+1\n"
+ " .word DebugMenu_8077020+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807706C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._113 @ gWindowTemplate_81E6CE4\n"
+ " bl InitMenuWindow\n"
+ " bl DebugMenu_8077004\n"
+ " bl DebugMenu_807719C\n"
+ " bl DebugMenu_80771EC\n"
+ " bl DebugMenu_8077238\n"
+ " ldr r1, ._113 + 4 @ gMenuCallback\n"
+ " ldr r0, ._113 + 8 @ DebugMenu_807709C\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._114:\n"
+ " .align 2, 0\n"
+ "._113:\n"
+ " .word gWindowTemplate_81E6CE4\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_807709C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807709C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._120 @ gMain\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._115 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl Menu_MoveCursor\n"
+ " ldr r1, ._120 + 4 @ gUnknown_030006C0\n"
+ " strb r0, [r1]\n"
+ "._115:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._116 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " bl Menu_MoveCursor\n"
+ " ldr r1, ._120 + 4 @ gUnknown_030006C0\n"
+ " strb r0, [r1]\n"
+ "._116:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._117 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._120 + 8 @ gUnknown_030006C1\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._118 @cond_branch\n"
+ " mov r0, #0x7\n"
+ " b ._119\n"
+ "._121:\n"
+ " .align 2, 0\n"
+ "._120:\n"
+ " .word gMain\n"
+ " .word gUnknown_030006C0 \n"
+ " .word gUnknown_030006C1 \n"
+ "._118:\n"
+ " sub r0, r0, #0x1\n"
+ "._119:\n"
+ " strb r0, [r1]\n"
+ " bl DebugMenu_8077004\n"
+ " bl DebugMenu_807719C\n"
+ "._117:\n"
+ " ldr r0, ._125 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._122 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._125 + 4 @ gUnknown_030006C1\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x7\n"
+ " bne ._123 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._124\n"
+ "._126:\n"
+ " .align 2, 0\n"
+ "._125:\n"
+ " .word gMain\n"
+ " .word gUnknown_030006C1 \n"
+ "._123:\n"
+ " add r0, r0, #0x1\n"
+ "._124:\n"
+ " strb r0, [r1]\n"
+ " bl DebugMenu_8077004\n"
+ " bl DebugMenu_807719C\n"
+ "._122:\n"
+ " ldr r0, ._129 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._127 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._129 + 4 @ gDebug0x839B9BC\n"
+ " ldr r0, ._129 + 8 @ gUnknown_030006C0\n"
+ " ldrb r2, [r0]\n"
+ " ldr r0, ._129 + 12 @ gUnknown_030006C4\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r2\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r1, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " b ._132\n"
+ "._130:\n"
+ " .align 2, 0\n"
+ "._129:\n"
+ " .word gMain\n"
+ " .word gDebug0x839B9BC\n"
+ " .word gUnknown_030006C0 \n"
+ " .word gUnknown_030006C4 \n"
+ "._127:\n"
+ " mov r0, #0xa\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._131 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._132\n"
+ "._131:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._132:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807719C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._133 @ gDebug0x839B9BC\n"
+ " ldr r0, ._133 + 4 @ gUnknown_030006C4\n"
+ " ldr r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintItemsReordered\n"
+ " ldr r4, ._133 + 8 @ gUnknown_030006C0\n"
+ " ldrb r0, [r4]\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xd\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl InitMenu\n"
+ " strb r0, [r4]\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._134:\n"
+ " .align 2, 0\n"
+ "._133:\n"
+ " .word gDebug0x839B9BC\n"
+ " .word gUnknown_030006C4 \n"
+ " .word gUnknown_030006C0 \n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80771EC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._135 @ gStringVar4\n"
+ " ldr r1, ._135 + 4 @ Str_839BE04\n"
+ " bl StringCopy\n"
+ " ldr r4, ._135 + 8 @ gSaveBlock1\n"
+ " mov r1, #0x4\n"
+ " ldsb r1, [r4, r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r1, #0x5\n"
+ " ldsb r1, [r4, r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0x13\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._135 @ gStringVar4\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._136:\n"
+ " .align 2, 0\n"
+ "._135:\n"
+ " .word gStringVar4\n"
+ " .word Str_839BE04\n"
+ " .word gSaveBlock1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077238()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xffffffe8\n"
+ " ldr r1, ._139 @ Str_839BE07\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " bl memcpy\n"
+ " add r0, sp, #0x4\n"
+ " mov r9, r0\n"
+ " ldr r1, ._139 + 4 @ Str_839BE09\n"
+ " mov r2, #0x3\n"
+ " bl memcpy\n"
+ " add r1, sp, #0x8\n"
+ " mov sl, r1\n"
+ " ldr r1, ._139 + 8 @ Str_839BE0C\n"
+ " mov r0, sl\n"
+ " mov r2, #0x3\n"
+ " bl memcpy\n"
+ " mov r2, #0x0\n"
+ " str r2, [sp, #0x14]\n"
+ " add r4, sp, #0x10\n"
+ " mov r6, sp\n"
+ " add r6, r6, #0x12\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl PlayerGetDestCoords\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r6, r2]\n"
+ " bl MapGridGetZCoordAt\n"
+ " mov r8, r0\n"
+ " mov r0, r8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0x7\n"
+ " strh r0, [r4]\n"
+ " ldrh r0, [r6]\n"
+ " sub r0, r0, #0x7\n"
+ " strh r0, [r6]\n"
+ " ldr r7, ._139 + 12 @ gStringVar4\n"
+ " add r0, r7, #0\n"
+ " mov r1, sp\n"
+ " bl StringCopy\n"
+ " add r5, sp, #0xc\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r4, r2]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " bl StringAppend\n"
+ " add r0, r7, #0\n"
+ " mov r1, r9\n"
+ " bl StringAppend\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r6, r0]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " bl StringAppend\n"
+ " add r0, r7, #0\n"
+ " mov r1, sl\n"
+ " bl StringAppend\n"
+ " add r0, r5, #0\n"
+ " mov r1, r8\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " bl StringAppend\n"
+ " ldrb r0, [r7]\n"
+ " cmp r0, #0xff\n"
+ " beq ._137 @cond_branch\n"
+ " add r1, r7, #0\n"
+ "._138:\n"
+ " ldr r0, [sp, #0x14]\n"
+ " add r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " str r0, [sp, #0x14]\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " bne ._138 @cond_branch\n"
+ "._137:\n"
+ " mov r0, #0x1c\n"
+ " ldr r1, [sp, #0x14]\n"
+ " sub r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._139 + 12 @ gStringVar4\n"
+ " mov r1, #0x1d\n"
+ " ldr r2, [sp, #0x14]\n"
+ " sub r1, r1, r2\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " add sp, sp, #0x18\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._140:\n"
+ " .align 2, 0\n"
+ "._139:\n"
+ " .word Str_839BE07\n"
+ " .word Str_839BE09\n"
+ " .word Str_839BE0C\n"
+ " .word gStringVar4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_Exit()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenSogabe()
+{
+ asm(
+ " push {lr}\n"
+ " bl unref_sub_814A414\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenTamada()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8075C30\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenKagaya()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitKagayaDebugMenu_A\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenMatsuda()
+{
+ asm(
+ " push {lr}\n"
+ " bl unref_sub_80A9B28\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenNohara()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitNoharaDebugMenu\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenWatanabe()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._141 @ InitWatanabeDebugMenu\n"
+ " bl SetMainCallback2\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._142:\n"
+ " .align 2, 0\n"
+ "._141:\n"
+ " .word InitWatanabeDebugMenu+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_EndSequenceDemo()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._143 @ sub_81439D0\n"
+ " bl SetMainCallback2\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._144:\n"
+ " .align 2, 0\n"
+ "._143:\n"
+ " .word sub_81439D0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_HallOfFame()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl GameClear\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenSizeComparison()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitSizeComparison\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_HoennNationalDex()
+{
+ asm(
+ " push {lr}\n"
+ " bl IsNationalPokedexEnabled\n"
+ " cmp r0, #0\n"
+ " beq ._145 @cond_branch\n"
+ " bl DisableNationalPokedex\n"
+ " b ._146\n"
+ "._145:\n"
+ " bl EnableNationalPokedex\n"
+ "._146:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_8077434()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_GetCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x4\n"
+ " bhi ._165 @cond_branch\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._149 @ \n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._150:\n"
+ " .align 2, 0\n"
+ "._149:\n"
+ " .word ._148\n"
+ "._148:\n"
+ " .word ._151\n"
+ " .word ._152\n"
+ " .word ._153\n"
+ " .word ._154\n"
+ " .word ._155\n"
+ "._151:\n"
+ " ldr r0, ._157 @ Str_839BE0F\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x4\n"
+ " bl GetEnigmaBerryChecksum\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r1, #0xff\n"
+ " mov r2, #0xff\n"
+ " mov r3, #0x0\n"
+ " bl debug_sub_80C2D24\n"
+ " b ._165\n"
+ "._158:\n"
+ " .align 2, 0\n"
+ "._157:\n"
+ " .word Str_839BE0F\n"
+ "._152:\n"
+ " ldr r0, ._160 @ Str_839BE12\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x0\n"
+ " bl GetEnigmaBerryChecksum\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r1, #0xff\n"
+ " mov r2, #0x0\n"
+ " b ._159\n"
+ "._161:\n"
+ " .align 2, 0\n"
+ "._160:\n"
+ " .word Str_839BE12\n"
+ "._153:\n"
+ " ldr r0, ._163 @ Str_839BE16\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x0\n"
+ " bl GetEnigmaBerryChecksum\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r1, #0x0\n"
+ " b ._162\n"
+ "._164:\n"
+ " .align 2, 0\n"
+ "._163:\n"
+ " .word Str_839BE16\n"
+ "._154:\n"
+ " ldr r0, ._166 @ Str_839BE1A\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x0\n"
+ " bl GetEnigmaBerryChecksum\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0xff\n"
+ "._162:\n"
+ " mov r2, #0xff\n"
+ "._159:\n"
+ " mov r3, #0xff\n"
+ " bl debug_sub_80C2D24\n"
+ " b ._165\n"
+ "._167:\n"
+ " .align 2, 0\n"
+ "._166:\n"
+ " .word Str_839BE1A\n"
+ "._155:\n"
+ " ldr r0, ._168 @ Str_839BE1E\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x0\n"
+ " bl GetEnigmaBerryChecksum\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r1, #0xff\n"
+ " mov r2, #0xff\n"
+ " mov r3, #0xff\n"
+ " bl debug_sub_80C2D24\n"
+ "._165:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._169:\n"
+ " .align 2, 0\n"
+ "._168:\n"
+ " .word Str_839BE1E\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_807750C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._170 @ gUnknown_Debug_839BE24\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._171:\n"
+ " .align 2, 0\n"
+ "._170:\n"
+ " .word gUnknown_Debug_839BE24\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_SetRamBerry()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._172 @ gUnknown_Debug_839BE24\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x5\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._172 + 4 @ gMenuCallback\n"
+ " ldr r0, ._172 + 8 @ DebugMenu_807750C\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._173:\n"
+ " .align 2, 0\n"
+ "._172:\n"
+ " .word gUnknown_Debug_839BE24\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_807750C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_ToggleBGM()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r2, ._175 @ gDisableMusic\n"
+ " mov r1, #0x0\n"
+ " ldrb r0, [r2]\n"
+ " cmp r0, #0\n"
+ " bne ._174 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._174:\n"
+ " strb r1, [r2]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._176:\n"
+ " .align 2, 0\n"
+ "._175:\n"
+ " .word gDisableMusic\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_BattleForDebug()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitBattleForDebug\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_NationalDex()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r4, #0x0\n"
+ " ldr r5, ._178 @ 0x181\n"
+ "._177:\n"
+ " add r4, r4, #0x1\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " bl GetSetPokedexFlag\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x3\n"
+ " bl GetSetPokedexFlag\n"
+ " cmp r4, r5\n"
+ " bls ._177 @cond_branch\n"
+ " ldr r1, ._178 + 4 @ gUnknown_03005CE8\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._179:\n"
+ " .align 2, 0\n"
+ "._178:\n"
+ " .word 0x181\n"
+ " .word gUnknown_03005CE8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_HoennDex()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r5, #0x0\n"
+ "._180:\n"
+ " add r5, r5, #0x1\n"
+ " lsl r5, r5, #0x10\n"
+ " lsr r5, r5, #0x10\n"
+ " add r0, r5, #0\n"
+ " bl HoennToNationalOrder\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " bl GetSetPokedexFlag\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x3\n"
+ " bl GetSetPokedexFlag\n"
+ " cmp r5, #0xc9\n"
+ " bls ._180 @cond_branch\n"
+ " ldr r1, ._181 @ gUnknown_03005CE8\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._182:\n"
+ " .align 2, 0\n"
+ "._181:\n"
+ " .word gUnknown_03005CE8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_CreatePKMN()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitCreatePokemon\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_ViewPokemonGraphics()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitSeePokemonGraphics\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenSeeTrainers()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitSeeTrainers\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenMori()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitMoriDebugMenu\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenTomomichi()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitTomomichiDebugWindow\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenAoki()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenTaya()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitTayaDebugWindow\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenNakamura()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitNakamuraDebugMenu\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenIwasawa()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8138CC4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_Teleport()
+{
+ asm(
+ " push {lr}\n"
+ " bl Overworld_SetWarpDestToLastHealLoc\n"
+ " bl sub_8080E88\n"
+ " bl ScriptContext2_Enable\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_EditPKMN()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " bl debug_sub_815FFDC\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80776B4()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r1, ._183 @ Str_839BE4C\n"
+ " mov r0, sp\n"
+ " mov r2, #0x7\n"
+ " bl memcpy\n"
+ " lsl r3, r4, #0x1\n"
+ " lsl r5, r4, #0x19\n"
+ " lsr r5, r5, #0x18\n"
+ " add r3, r3, #0x1\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x19\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x1d\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r0, ._183 + 4 @ gUnknown_030006C8\n"
+ " ldrb r0, [r0]\n"
+ " ASR r0, r4\n"
+ " mov r1, #0x1\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, sp\n"
+ " mov r1, #0x19\n"
+ " add r2, r5, #0\n"
+ " bl Menu_PrintText\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._184:\n"
+ " .align 2, 0\n"
+ "._183:\n"
+ " .word Str_839BE4C\n"
+ " .word gUnknown_030006C8 \n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077704()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xffffffec\n"
+ " ldr r1, ._185 @ Str_839BE53\n"
+ " mov r0, sp\n"
+ " mov r2, #0x11\n"
+ " bl memcpy\n"
+ " mov r0, #0x13\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x8\n"
+ " bl Menu_BlankWindowRect\n"
+ " mov r0, sp\n"
+ " mov r1, #0x15\n"
+ " mov r2, #0x0\n"
+ " bl Menu_PrintText\n"
+ " ldr r2, ._185 + 4 @ gUnknown_030006C8\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x13\n"
+ " ldrh r0, [r0]\n"
+ " lsr r0, r0, #0x8\n"
+ " mov r1, #0xf\n"
+ " and r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " bl DebugMenu_80776B4\n"
+ " mov r0, #0x1\n"
+ " bl DebugMenu_80776B4\n"
+ " mov r0, #0x2\n"
+ " bl DebugMenu_80776B4\n"
+ " mov r0, #0x3\n"
+ " bl DebugMenu_80776B4\n"
+ " add sp, sp, #0x14\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._186:\n"
+ " .align 2, 0\n"
+ "._185:\n"
+ " .word Str_839BE53\n"
+ " .word gUnknown_030006C8 \n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_8077760()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " ldr r2, ._190 @ gMain\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " add r5, r2, #0\n"
+ " cmp r0, #0\n"
+ " beq ._187 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl Menu_MoveCursor\n"
+ " ldr r1, ._190 + 4 @ gUnknown_030006B8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._188 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " b ._189\n"
+ "._191:\n"
+ " .align 2, 0\n"
+ "._190:\n"
+ " .word gMain\n"
+ " .word gUnknown_030006B8 \n"
+ "._188:\n"
+ " mov r0, #0x3\n"
+ "._189:\n"
+ " strb r0, [r1]\n"
+ "._187:\n"
+ " ldrh r1, [r5, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._192 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " bl Menu_MoveCursor\n"
+ " ldr r1, ._195 @ gUnknown_030006B8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x3\n"
+ " beq ._193 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " b ._194\n"
+ "._196:\n"
+ " .align 2, 0\n"
+ "._195:\n"
+ " .word gUnknown_030006B8 \n"
+ "._193:\n"
+ " mov r0, #0x0\n"
+ "._194:\n"
+ " strb r0, [r1]\n"
+ "._192:\n"
+ " ldrh r1, [r5, #0x2e]\n"
+ " mov r0, #0x30\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._197 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r4, ._201 @ gUnknown_030006C8\n"
+ " bl Menu_GetCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " LSL r1, r0\n"
+ " ldrb r0, [r4]\n"
+ " eor r1, r1, r0\n"
+ " strb r1, [r4]\n"
+ " bl Menu_GetCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DebugMenu_80776B4\n"
+ "._197:\n"
+ " ldrh r2, [r5, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._198 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._199 @cond_branch\n"
+ "._198:\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x13\n"
+ " ldrh r0, [r2]\n"
+ " ldr r1, ._201 + 4 @ 0xf0ff\n"
+ " and r1, r1, r0\n"
+ " ldr r0, ._201 @ gUnknown_030006C8\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x8\n"
+ " add r1, r1, r0\n"
+ " strh r1, [r2]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._200\n"
+ "._202:\n"
+ " .align 2, 0\n"
+ "._201:\n"
+ " .word gUnknown_030006C8 \n"
+ " .word 0xf0ff\n"
+ "._199:\n"
+ " mov r0, #0x0\n"
+ "._200:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_SwitchBG()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " bl DebugMenu_8077704\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x6\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x4\n"
+ " bl InitMenu\n"
+ " ldr r1, ._203 @ gMenuCallback\n"
+ " ldr r0, ._203 + 4 @ DebugMenu_8077760\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._204:\n"
+ " .align 2, 0\n"
+ "._203:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077760+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807786C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r1, ._205 @ Str_839BE64\n"
+ " mov r0, sp\n"
+ " mov r2, #0x7\n"
+ " bl memcpy\n"
+ " mov r0, #0x19\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x3\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " lsl r0, r4, #0x1\n"
+ " add r0, r0, r4\n"
+ " add r0, r0, sp\n"
+ " mov r1, #0x1a\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._206:\n"
+ " .align 2, 0\n"
+ "._205:\n"
+ " .word Str_839BE64\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80778A8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._211 @ gMain\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x30\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._207 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r2, ._211 + 4 @ sWildEncountersDisabled\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x1\n"
+ " eor r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " ldrb r0, [r2]\n"
+ " bl DebugMenu_807786C\n"
+ "._207:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._208 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._209 @cond_branch\n"
+ "._208:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._210\n"
+ "._212:\n"
+ " .align 2, 0\n"
+ "._211:\n"
+ " .word gMain\n"
+ " .word sWildEncountersDisabled\n"
+ "._209:\n"
+ " mov r0, #0x0\n"
+ "._210:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_ControlEncounter()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._213 @ sWildEncountersDisabled\n"
+ " ldrb r0, [r0]\n"
+ " bl DebugMenu_807786C\n"
+ " ldr r1, ._213 + 4 @ gMenuCallback\n"
+ " ldr r0, ._213 + 8 @ DebugMenu_80778A8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._214:\n"
+ " .align 2, 0\n"
+ "._213:\n"
+ " .word sWildEncountersDisabled\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_80778A8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_UseHM()
+{
+ asm(
+ " ldr r1, ._215 @ gMenuCallback\n"
+ " ldr r0, ._215 + 4 @ DebugMenu_8077C14\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " bx lr\n"
+ "._216:\n"
+ " .align 2, 0\n"
+ "._215:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077C14+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077934()
+{
+ asm(
+ " push {lr}\n"
+ " mov r1, #0x0\n"
+ " ldr r3, ._218 @ gSaveBlock1\n"
+ " mov r2, #0x1\n"
+ "._217:\n"
+ " add r0, r1, r3\n"
+ " strb r2, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, #0x63\n"
+ " bls ._217 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._219:\n"
+ " .align 2, 0\n"
+ "._218:\n"
+ " .word gSaveBlock1+0x97a\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077954()
+{
+ asm(
+ " push {lr}\n"
+ " mov r1, #0x0\n"
+ " ldr r3, ._222 @ gSaveBlock1\n"
+ " mov r2, #0x0\n"
+ "._221:\n"
+ " add r0, r1, r3\n"
+ " strb r2, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, #0x63\n"
+ " bls ._221 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._223:\n"
+ " .align 2, 0\n"
+ "._222:\n"
+ " .word gSaveBlock1+0x97a\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077974()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r1, ._226 @ gSaveBlock1\n"
+ " mov r0, #0x4\n"
+ " ldsb r0, [r1, r0]\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " ldrb r1, [r1, #0x5]\n"
+ " lsl r1, r1, #0x18\n"
+ " asr r1, r1, #0x18\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " bl IsRematchTrainerIn\n"
+ " cmp r0, #0\n"
+ " beq ._224 @cond_branch\n"
+ " ldr r0, ._226 + 4 @ gStringVar1\n"
+ " ldr r1, ._226 + 8 @ Str_839BE8D\n"
+ " bl StringCopy\n"
+ " b ._225\n"
+ "._227:\n"
+ " .align 2, 0\n"
+ "._226:\n"
+ " .word gSaveBlock1\n"
+ " .word gStringVar1\n"
+ " .word Str_839BE8D\n"
+ "._224:\n"
+ " ldr r0, ._230 @ gStringVar1\n"
+ " ldr r1, ._230 + 4 @ Str_839BE90\n"
+ " bl StringCopy\n"
+ "._225:\n"
+ " ldr r1, ._230 + 8 @ gSaveBlock1\n"
+ " mov r0, #0x4\n"
+ " ldsb r0, [r1, r0]\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " ldrb r1, [r1, #0x5]\n"
+ " lsl r1, r1, #0x18\n"
+ " asr r1, r1, #0x18\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " bl DoesSomeoneWantRematchIn\n"
+ " cmp r0, #0\n"
+ " beq ._228 @cond_branch\n"
+ " ldr r0, ._230 + 12 @ gStringVar2\n"
+ " ldr r1, ._230 + 16 @ Str_839BE8D\n"
+ " bl StringCopy\n"
+ " b ._229\n"
+ "._231:\n"
+ " .align 2, 0\n"
+ "._230:\n"
+ " .word gStringVar1\n"
+ " .word Str_839BE90\n"
+ " .word gSaveBlock1\n"
+ " .word gStringVar2\n"
+ " .word Str_839BE8D\n"
+ "._228:\n"
+ " ldr r0, ._232 @ gStringVar2\n"
+ " ldr r1, ._232 + 4 @ Str_839BE90\n"
+ " bl StringCopy\n"
+ "._229:\n"
+ " ldr r0, ._232 + 8 @ Str_839BE6B\n"
+ " bl sub_8071F40\n"
+ " ldr r1, ._232 + 12 @ gMenuCallback\n"
+ " ldr r0, ._232 + 16 @ DebugMenu_8077DB4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._233:\n"
+ " .align 2, 0\n"
+ "._232:\n"
+ " .word gStringVar2\n"
+ " .word Str_839BE90\n"
+ " .word Str_839BE6B\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077DB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077A20()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._234 @ gSaveBlock1\n"
+ " ldr r1, ._234 + 4 @ 0x978\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xff\n"
+ " strh r1, [r0]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._235:\n"
+ " .align 2, 0\n"
+ "._234:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x978\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077A40()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._236 @ gSaveBlock1\n"
+ " ldr r1, ._236 + 4 @ 0x978\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._237:\n"
+ " .align 2, 0\n"
+ "._236:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x978\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077A60()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._238 @ gUnknown_Debug_839BEE4\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._239:\n"
+ " .align 2, 0\n"
+ "._238:\n"
+ " .word gUnknown_Debug_839BEE4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_RematchTrainers()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._240 @ gUnknown_Debug_839BEE4\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x5\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._240 + 4 @ gMenuCallback\n"
+ " ldr r0, ._240 + 8 @ DebugMenu_8077A60\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._241:\n"
+ " .align 2, 0\n"
+ "._240:\n"
+ " .word gUnknown_Debug_839BEE4\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077A60+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077A9C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._242 @ gNumSafariBalls\n"
+ " mov r0, #0x1e\n"
+ " strb r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._243:\n"
+ " .align 2, 0\n"
+ "._242:\n"
+ " .word gNumSafariBalls\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077AB4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._244 @ gNumSafariBalls\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._245:\n"
+ " .align 2, 0\n"
+ "._244:\n"
+ " .word gNumSafariBalls\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077ACC()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._246 @ gSafariZoneStepCounter\n"
+ " mov r2, #0xfa\n"
+ " lsl r2, r2, #0x1\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._247:\n"
+ " .align 2, 0\n"
+ "._246:\n"
+ " .word gSafariZoneStepCounter\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077AE8()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._248 @ gSafariZoneStepCounter\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._249:\n"
+ " .align 2, 0\n"
+ "._248:\n"
+ " .word gSafariZoneStepCounter\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077B00()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " bl unref_sub_80C853C\n"
+ " cmp r0, #0\n"
+ " beq ._250 @cond_branch\n"
+ " ldr r0, ._252 @ Str_839BF14\n"
+ " bl sub_8071F40\n"
+ " b ._251\n"
+ "._253:\n"
+ " .align 2, 0\n"
+ "._252:\n"
+ " .word Str_839BF14\n"
+ "._250:\n"
+ " ldr r0, ._254 @ Str_839BF1F\n"
+ " bl sub_8071F40\n"
+ "._251:\n"
+ " ldr r1, ._254 + 4 @ gMenuCallback\n"
+ " ldr r0, ._254 + 8 @ DebugMenu_8077DB4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._255:\n"
+ " .align 2, 0\n"
+ "._254:\n"
+ " .word Str_839BF1F\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077DB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077B3C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._256 @ gUnknown_Debug_839BF6C\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._257:\n"
+ " .align 2, 0\n"
+ "._256:\n"
+ " .word gUnknown_Debug_839BF6C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_Safari()
+{
+ asm(
+ " push {lr}\n"
+ " bl GetSafariZoneFlag\n"
+ " cmp r0, #0\n"
+ " beq ._258 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._260 @ gUnknown_Debug_839BF6C\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x5\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r0, ._260 + 4 @ gStringVar1\n"
+ " ldr r1, ._260 + 8 @ gSafariZoneStepCounter\n"
+ " ldrh r1, [r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r0, ._260 + 12 @ Str_839BF0C\n"
+ " bl sub_8071F40\n"
+ " ldr r1, ._260 + 16 @ gMenuCallback\n"
+ " ldr r0, ._260 + 20 @ DebugMenu_8077B3C\n"
+ " str r0, [r1]\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x0\n"
+ " b ._259\n"
+ "._261:\n"
+ " .align 2, 0\n"
+ "._260:\n"
+ " .word gUnknown_Debug_839BF6C\n"
+ " .word gStringVar1\n"
+ " .word gSafariZoneStepCounter\n"
+ " .word Str_839BF0C\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077B3C+1\n"
+ "._258:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x16\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ "._259:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BB4()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_80AFEE4\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BC0()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8122080\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BCC()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8120968\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BD8()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8130318\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BE4()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_80986AC\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BF4()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_80D93F4\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077C00()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._262 @ gUnknown_Debug_839BF94\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._263:\n"
+ " .align 2, 0\n"
+ "._262:\n"
+ " .word gUnknown_Debug_839BF94\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077C14()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._264 @ gUnknown_Debug_839BF94\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x9\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._264 + 4 @ gMenuCallback\n"
+ " ldr r0, ._264 + 8 @ DebugMenu_8077C00\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._265:\n"
+ " .align 2, 0\n"
+ "._264:\n"
+ " .word gUnknown_Debug_839BF94\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077C00+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077C3C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov sl, r0\n"
+ " add r7, r1, #0\n"
+ " ldr r0, ._271 @ gUnknown_030006BC\n"
+ " ldr r1, ._271 + 4 @ gUnknown_Debug_839BFE8\n"
+ " str r1, [r0]\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r7]\n"
+ " add r7, r7, #0x1\n"
+ " strb r1, [r7]\n"
+ " add r7, r7, #0x1\n"
+ " mov r3, #0x0\n"
+ " mov r8, r0\n"
+ "._269:\n"
+ " mov r5, #0x0\n"
+ " ldr r1, ._271 @ gUnknown_030006BC\n"
+ " ldr r0, [r1]\n"
+ " ldr r2, [r0, #0x4]\n"
+ " mov r4, #0x0\n"
+ " ldr r1, [r0, #0x8]\n"
+ " add r3, r3, #0x1\n"
+ " mov r9, r3\n"
+ " cmp r5, r1\n"
+ " bge ._266 @cond_branch\n"
+ " add r3, r0, #0\n"
+ " add r6, r1, #0\n"
+ "._267:\n"
+ " ldr r0, [r3, #0xc]\n"
+ " add r0, r0, r4\n"
+ " add r0, r0, sl\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x30\n"
+ " mul r0, r0, r2\n"
+ " add r5, r5, r0\n"
+ " add r4, r4, #0x1\n"
+ " add r0, r2, #0\n"
+ " mov r1, #0xa\n"
+ " str r3, [sp]\n"
+ " bl __divsi3\n"
+ " add r2, r0, #0\n"
+ " ldr r3, [sp]\n"
+ " cmp r4, r6\n"
+ " blt ._267 @cond_branch\n"
+ "._266:\n"
+ " mov r0, r8\n"
+ " ldr r1, [r0]\n"
+ " ldr r0, [r1]\n"
+ " cmp r0, r5\n"
+ " bcs ._268 @cond_branch\n"
+ " add r5, r0, #0\n"
+ "._268:\n"
+ " ldrb r3, [r1, #0x8]\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r7, r0, #0\n"
+ " mov r3, r9\n"
+ " mov r1, r8\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, #0x10\n"
+ " str r0, [r1]\n"
+ " cmp r3, #0x1\n"
+ " ble ._269 @cond_branch\n"
+ " mov r1, sl\n"
+ " ldrb r0, [r1, #0x1d]\n"
+ " add r0, r0, #0x7a\n"
+ " strb r0, [r7]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0xf6\n"
+ " bls ._270 @cond_branch\n"
+ " mov r0, #0xf6\n"
+ " strb r0, [r7]\n"
+ "._270:\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r7, #0x1]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._272:\n"
+ " .align 2, 0\n"
+ "._271:\n"
+ " .word gUnknown_030006BC \n"
+ " .word gUnknown_Debug_839BFE8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8077CF4()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r4, r0, #0\n"
+ " add r5, r1, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " ldr r0, ._273 @ BuildDateTime\n"
+ " ldr r6, ._273 + 4 @ gStringVar4\n"
+ " add r1, r6, #0\n"
+ " bl DebugMenu_8077C3C\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " add r2, r5, #0\n"
+ " bl Menu_PrintText\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._274:\n"
+ " .align 2, 0\n"
+ "._273:\n"
+ " .word BuildDateTime\n"
+ " .word gStringVar4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077D24()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r6, r0, #0\n"
+ " add r4, r1, #0\n"
+ " add r5, r2, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " lsl r3, r5, #0x1\n"
+ " add r3, r3, #0x1\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " add r2, r4, #0\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " add r2, r5, #0\n"
+ " add r3, r6, #0\n"
+ " bl Menu_PrintItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " sub r4, r4, #0x1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " str r4, [sp, #0x4]\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " add r3, r5, #0\n"
+ " bl InitMenu\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077D78()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r5, r0, #0\n"
+ " bl Menu_ProcessInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r4, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._275 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r4, r0\n"
+ " beq ._276 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._278 @ gMenuCallback\n"
+ " lsl r1, r4, #0x3\n"
+ " add r1, r1, r5\n"
+ " ldr r1, [r1, #0x4]\n"
+ " str r1, [r0]\n"
+ "._275:\n"
+ " mov r0, #0x0\n"
+ " b ._277\n"
+ "._279:\n"
+ " .align 2, 0\n"
+ "._278:\n"
+ " .word gMenuCallback\n"
+ "._276:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._277:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077DB4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._282 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._280 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._281\n"
+ "._283:\n"
+ " .align 2, 0\n"
+ "._282:\n"
+ " .word gMain\n"
+ "._280:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._281:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077DD8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r4, r0, #0\n"
+ " add r5, r1, #0\n"
+ " lsl r3, r3, #0x10\n"
+ " lsr r3, r3, #0x10\n"
+ " add r1, r3, #0\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._284 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0x1\n"
+ " b ._285\n"
+ "._284:\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._286 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " b ._287\n"
+ "._286:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._288 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0xa\n"
+ "._285:\n"
+ " strh r0, [r4]\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, r5\n"
+ " bge ._293 @cond_branch\n"
+ " strh r2, [r4]\n"
+ " b ._293\n"
+ "._288:\n"
+ " mov r0, #0x10\n"
+ " and r1, r1, r0\n"
+ " cmp r1, #0\n"
+ " bne ._291 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._292\n"
+ "._291:\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0xa\n"
+ "._287:\n"
+ " strh r0, [r4]\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, r2\n"
+ " ble ._293 @cond_branch\n"
+ " strh r5, [r4]\n"
+ "._293:\n"
+ " mov r0, #0x1\n"
+ "._292:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077E40()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " ldr r0, ._297 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._294 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._295 @cond_branch\n"
+ "._294:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " b ._302\n"
+ "._298:\n"
+ " .align 2, 0\n"
+ "._297:\n"
+ " .word gMain\n"
+ "._295:\n"
+ " mov r0, #0x30\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._299 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " cmp r4, #0\n"
+ " beq ._300 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl DebugMenu_807786C\n"
+ " mov r0, #0x0\n"
+ " b ._302\n"
+ "._300:\n"
+ " mov r0, #0x0\n"
+ " bl DebugMenu_807786C\n"
+ " mov r0, #0x1\n"
+ " b ._302\n"
+ "._299:\n"
+ " add r0, r4, #0\n"
+ "._302:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_MakeItems()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl DebugMenu_8077EAC\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077EAC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._303 @ DebugMenu_8077F40\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r1, ._303 + 4 @ gTasks\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x1\n"
+ " strh r1, [r0, #0xa]\n"
+ " strh r1, [r0, #0xc]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._304:\n"
+ " .align 2, 0\n"
+ "._303:\n"
+ " .word DebugMenu_8077F40+1\n"
+ " .word gTasks\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077EE0()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r4, r0, #0\n"
+ " add r6, r1, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " lsl r6, r6, #0x10\n"
+ " lsr r6, r6, #0x10\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x16\n"
+ " mov r3, #0x12\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r5, ._305 @ gStringVar1\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " bl ItemId_GetItem\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x12\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._306:\n"
+ " .align 2, 0\n"
+ "._305:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077F40()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r4, r0, #0x2\n"
+ " add r4, r4, r0\n"
+ " lsl r4, r4, #0x3\n"
+ " ldr r0, ._307 @ gTasks\n"
+ " add r4, r4, r0\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._307 + 4 @ gDebug0x839C008\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl DebugMenu_8077EE0\n"
+ " ldr r0, ._307 + 8 @ DebugMenu_8077F7C\n"
+ " str r0, [r4]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._308:\n"
+ " .align 2, 0\n"
+ "._307:\n"
+ " .word gTasks\n"
+ " .word gDebug0x839C008\n"
+ " .word DebugMenu_8077F7C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077F7C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " ldr r0, ._311 @ gTasks\n"
+ " add r4, r1, r0\n"
+ " ldr r3, ._311 + 4 @ gMain\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._309 @cond_branch\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._311 + 8 @ Str_839C014\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl DebugMenu_8077EE0\n"
+ " ldr r0, ._311 + 12 @ DebugMenu_8077FFC\n"
+ " str r0, [r4]\n"
+ " b ._317\n"
+ "._312:\n"
+ " .align 2, 0\n"
+ "._311:\n"
+ " .word gTasks\n"
+ " .word gMain\n"
+ " .word Str_839C014\n"
+ " .word DebugMenu_8077FFC+1\n"
+ "._309:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._313 @cond_branch\n"
+ " ldr r0, ._315 @ DebugMenu_807806C\n"
+ " str r0, [r4]\n"
+ " b ._317\n"
+ "._316:\n"
+ " .align 2, 0\n"
+ "._315:\n"
+ " .word DebugMenu_807806C+1\n"
+ "._313:\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xa\n"
+ " mov r2, #0xae\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrh r3, [r3, #0x30]\n"
+ " mov r1, #0x1\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._317 @cond_branch\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl DebugMenu_8077EE0\n"
+ "._317:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077FFC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " ldr r0, ._321 @ gTasks\n"
+ " add r4, r1, r0\n"
+ " ldr r2, ._321 + 4 @ gMain\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._318 @cond_branch\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl AddBagItem\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._320 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " b ._320\n"
+ "._322:\n"
+ " .align 2, 0\n"
+ "._321:\n"
+ " .word gTasks\n"
+ " .word gMain\n"
+ "._318:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._323 @cond_branch\n"
+ "._320:\n"
+ " ldr r0, ._325 @ DebugMenu_8077F40\n"
+ " str r0, [r4]\n"
+ " b ._327\n"
+ "._326:\n"
+ " .align 2, 0\n"
+ "._325:\n"
+ " .word DebugMenu_8077F40+1\n"
+ "._323:\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xc\n"
+ " ldrh r3, [r2, #0x30]\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x63\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._327 @cond_branch\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl DebugMenu_8077EE0\n"
+ "._327:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807806C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " bl DebugMenu_8077048\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807808C()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffff4\n"
+ " add r4, r0, #0\n"
+ " sub r0, r4, #1\n"
+ " cmp r0, #0xc\n"
+ " bls ._328 @cond_branch\n"
+ " mov r4, #0x1\n"
+ "._328:\n"
+ " lsl r1, r4, #0x5\n"
+ " ldr r0, ._331 @ gSaveBlock1\n"
+ " add r5, r1, r0\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x13\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._331 + 4 @ Str_839C01E\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintText\n"
+ " mov r0, sp\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintText\n"
+ " ldrh r1, [r5, #0x8]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x4\n"
+ " bl Menu_PrintText\n"
+ " add r4, r5, #0\n"
+ " add r4, r4, #0xb\n"
+ " add r0, r4, #0\n"
+ " bl StringLength\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bhi ._329 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintText\n"
+ " b ._330\n"
+ "._332:\n"
+ " .align 2, 0\n"
+ "._331:\n"
+ " .word gSaveBlock1+0x2ddc\n"
+ " .word Str_839C01E\n"
+ "._329:\n"
+ " ldr r0, ._335 @ Str_839C04D\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintText\n"
+ "._330:\n"
+ " add r4, r5, #0\n"
+ " add r4, r4, #0x16\n"
+ " add r0, r4, #0\n"
+ " bl StringLength\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bhi ._333 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintText\n"
+ " b ._334\n"
+ "._336:\n"
+ " .align 2, 0\n"
+ "._335:\n"
+ " .word Str_839C04D\n"
+ "._333:\n"
+ " ldr r0, ._337 @ Str_839C04D\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintText\n"
+ "._334:\n"
+ " ldrb r1, [r5, #0xa]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0xa\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, [r5]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x8\n"
+ " bl ConvertIntToHexStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0xc\n"
+ " bl Menu_PrintText\n"
+ " add sp, sp, #0xc\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._338:\n"
+ " .align 2, 0\n"
+ "._337:\n"
+ " .word Str_839C04D\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807817C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, ._340 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._339 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ "._339:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._341:\n"
+ " .align 2, 0\n"
+ "._340:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80781A8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " ldr r0, ._344 @ gTasks\n"
+ " add r5, r1, r0\n"
+ " ldrh r1, [r5, #0x8]\n"
+ " mov r2, #0x8\n"
+ " ldsh r0, [r5, r2]\n"
+ " cmp r0, #0\n"
+ " bne ._342 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " strh r0, [r5, #0x8]\n"
+ " b ._343\n"
+ "._345:\n"
+ " .align 2, 0\n"
+ "._344:\n"
+ " .word gTasks\n"
+ "._342:\n"
+ " ldr r2, ._348 @ gMain\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._346 @cond_branch\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r5, r1]\n"
+ " bl DebugMenu_807808C\n"
+ " ldr r0, ._348 + 4 @ DebugMenu_807817C\n"
+ " str r0, [r5]\n"
+ " b ._350\n"
+ "._349:\n"
+ " .align 2, 0\n"
+ "._348:\n"
+ " .word gMain\n"
+ " .word DebugMenu_807817C+1\n"
+ "._346:\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x8\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r3, #0xc0\n"
+ " and r3, r3, r1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xd\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0\n"
+ " beq ._350 @cond_branch\n"
+ "._343:\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x16\n"
+ " mov r3, #0x12\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r4, ._351 @ gStringVar1\n"
+ " mov r2, #0x8\n"
+ " ldsh r1, [r5, r2]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ "._350:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._352:\n"
+ " .align 2, 0\n"
+ "._351:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_ViewPortraits()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._353 @ DebugMenu_80781A8\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._354:\n"
+ " .align 2, 0\n"
+ "._353:\n"
+ " .word DebugMenu_80781A8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078254()
+{
+ asm(
+ " push {lr}\n"
+ " bl DebugMenu_807808C\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_AllBadges()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._355 @ 0x807\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 4 @ 0x808\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 8 @ 0x809\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 12 @ 0x80a\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 16 @ 0x80b\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 20 @ 0x80c\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 24 @ 0x80d\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 28 @ 0x80e\n"
+ " bl FlagSet\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._356:\n"
+ " .align 2, 0\n"
+ "._355:\n"
+ " .word 0x807\n"
+ " .word 0x808\n"
+ " .word 0x809\n"
+ " .word 0x80a\n"
+ " .word 0x80b\n"
+ " .word 0x80c\n"
+ " .word 0x80d\n"
+ " .word 0x80e\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_TimeRecords()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._357 @ debug_sub_806F9E4\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._358:\n"
+ " .align 2, 0\n"
+ "._357:\n"
+ " .word debug_sub_806F9E4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_SetTime()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl debug_sub_806F99C\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80782EC()
+{
+ asm(
+ " push {lr}\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " ldr r0, ._359 @ gStringVar1\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToHexStringN\n"
+ " ldr r0, ._359 + 4 @ Str_839C053\n"
+ " bl sub_8071F40\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._360:\n"
+ " .align 2, 0\n"
+ "._359:\n"
+ " .word gStringVar1\n"
+ " .word Str_839C053\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078310()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._364 @ gTasks\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._361 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq ._362 @cond_branch\n"
+ " b ._375\n"
+ "._365:\n"
+ " .align 2, 0\n"
+ "._364:\n"
+ " .word gTasks+0x8\n"
+ "._361:\n"
+ " ldr r0, ._367 @ 0x4024\n"
+ " bl VarGet\n"
+ " strh r0, [r4, #0x2]\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_80782EC\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._375\n"
+ "._368:\n"
+ " .align 2, 0\n"
+ "._367:\n"
+ " .word 0x4024\n"
+ "._362:\n"
+ " ldr r3, ._371 @ gMain\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._369 @cond_branch\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " ldr r0, ._371 + 4 @ 0x4024\n"
+ " bl GetVarPointer\n"
+ " ldrh r1, [r4, #0x2]\n"
+ " strh r1, [r0]\n"
+ " b ._370\n"
+ "._372:\n"
+ " .align 2, 0\n"
+ "._371:\n"
+ " .word gMain\n"
+ " .word 0x4024\n"
+ "._369:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._373 @cond_branch\n"
+ "._370:\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ " b ._375\n"
+ "._373:\n"
+ " add r0, r4, #2\n"
+ " ldr r2, ._376 @ 0xffff\n"
+ " ldrh r3, [r3, #0x30]\n"
+ " mov r1, #0x0\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._375 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_80782EC\n"
+ "._375:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._377:\n"
+ " .align 2, 0\n"
+ "._376:\n"
+ " .word 0xffff\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_MiragaIslandRND()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._378 @ DebugMenu_8078310\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._379:\n"
+ " .align 2, 0\n"
+ "._378:\n"
+ " .word DebugMenu_8078310+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80783C8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._383 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x30\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._382 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r4, ._383 + 4 @ 0x804\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._381 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " mov r0, #0x0\n"
+ " bl DebugMenu_807786C\n"
+ " b ._382\n"
+ "._384:\n"
+ " .align 2, 0\n"
+ "._383:\n"
+ " .word gMain\n"
+ " .word 0x804\n"
+ "._381:\n"
+ " add r0, r4, #0\n"
+ " bl FlagClear\n"
+ " mov r0, #0x1\n"
+ " bl DebugMenu_807786C\n"
+ "._382:\n"
+ " ldr r0, ._388 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._385 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._386 @cond_branch\n"
+ "._385:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._387\n"
+ "._389:\n"
+ " .align 2, 0\n"
+ "._388:\n"
+ " .word gMain\n"
+ "._386:\n"
+ " mov r0, #0x0\n"
+ "._387:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_ToggleClearFlag()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._390 @ 0x804\n"
+ " bl FlagGet\n"
+ " mov r1, #0x1\n"
+ " eor r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DebugMenu_807786C\n"
+ " ldr r1, ._390 + 4 @ gMenuCallback\n"
+ " ldr r0, ._390 + 8 @ DebugMenu_80783C8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._391:\n"
+ " .align 2, 0\n"
+ "._390:\n"
+ " .word 0x804\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_80783C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078464()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._396 @ 0x82a\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DebugMenu_8077E40\n"
+ " add r1, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq ._392 @cond_branch\n"
+ " cmp r1, #0\n"
+ " bgt ._393 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._394 @cond_branch\n"
+ " b ._401\n"
+ "._397:\n"
+ " .align 2, 0\n"
+ "._396:\n"
+ " .word 0x82a\n"
+ "._393:\n"
+ " cmp r1, #0x1\n"
+ " beq ._398 @cond_branch\n"
+ " b ._401\n"
+ "._392:\n"
+ " add r0, r4, #0\n"
+ " bl FlagClear\n"
+ " b ._401\n"
+ "._398:\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " b ._401\n"
+ "._394:\n"
+ " mov r0, #0x1\n"
+ " b ._402\n"
+ "._401:\n"
+ " mov r0, #0x0\n"
+ "._402:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenWeatherEvents()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._404 @ 0x82a\n"
+ " bl FlagGet\n"
+ " mov r1, #0x0\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._403 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._403:\n"
+ " add r0, r1, #0\n"
+ " bl DebugMenu_807786C\n"
+ " ldr r1, ._404 + 4 @ gMenuCallback\n"
+ " ldr r0, ._404 + 8 @ DebugMenu_8078464\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._405:\n"
+ " .align 2, 0\n"
+ "._404:\n"
+ " .word 0x82a\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078464+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80784E8()
+{
+ asm(
+ " push {lr}\n"
+ " bl IsMysteryGiftEnabled\n"
+ " bl DebugMenu_8077E40\n"
+ " add r1, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq ._406 @cond_branch\n"
+ " cmp r1, #0\n"
+ " bgt ._407 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._408 @cond_branch\n"
+ " b ._413\n"
+ "._407:\n"
+ " cmp r1, #0x1\n"
+ " beq ._410 @cond_branch\n"
+ " b ._413\n"
+ "._406:\n"
+ " bl DisableMysteryGift\n"
+ " b ._413\n"
+ "._410:\n"
+ " bl EnableMysteryGift\n"
+ " b ._413\n"
+ "._408:\n"
+ " mov r0, #0x1\n"
+ " b ._414\n"
+ "._413:\n"
+ " mov r0, #0x0\n"
+ "._414:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenMysteryEvent()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " bl IsMysteryGiftEnabled\n"
+ " mov r1, #0x0\n"
+ " cmp r0, #0\n"
+ " bne ._415 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._415:\n"
+ " add r0, r1, #0\n"
+ " bl DebugMenu_807786C\n"
+ " ldr r1, ._416 @ gMenuCallback\n"
+ " ldr r0, ._416 + 4 @ DebugMenu_80784E8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._417:\n"
+ " .align 2, 0\n"
+ "._416:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_80784E8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078550()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r6, r0, #0x10\n"
+ " lsl r0, r6, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl GetGameStat\n"
+ " add r7, r0, #0\n"
+ " ldr r0, ._420 @ gStringVar1\n"
+ " add r1, r6, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r0, ._420 + 4 @ gStringVar2\n"
+ " ldr r5, ._420 + 8 @ gUnknown_Debug_839C26C\n"
+ " lsl r4, r6, #0x3\n"
+ " add r1, r5, #4\n"
+ " add r1, r4, r1\n"
+ " ldr r1, [r1]\n"
+ " bl StringCopy\n"
+ " add r4, r4, r5\n"
+ " ldr r0, [r4]\n"
+ " cmp r0, #0\n"
+ " bne ._418 @cond_branch\n"
+ " ldr r0, ._420 + 12 @ gStringVar3\n"
+ " ldr r1, ._420 + 16 @ Str_839C085\n"
+ " bl StringCopy\n"
+ " b ._423\n"
+ "._421:\n"
+ " .align 2, 0\n"
+ "._420:\n"
+ " .word gStringVar1\n"
+ " .word gStringVar2\n"
+ " .word gUnknown_Debug_839C26C\n"
+ " .word gStringVar3\n"
+ " .word Str_839C085\n"
+ "._418:\n"
+ " cmp r6, #0x1\n"
+ " beq ._422 @cond_branch\n"
+ " ldr r0, ._424 @ gStringVar3\n"
+ " add r1, r7, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xa\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " b ._423\n"
+ "._425:\n"
+ " .align 2, 0\n"
+ "._424:\n"
+ " .word gStringVar3\n"
+ "._422:\n"
+ " ldr r4, ._426 @ gStringVar3\n"
+ " lsr r1, r7, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r6, #0xf0\n"
+ " strb r6, [r4, #0x3]\n"
+ " add r0, r4, #4\n"
+ " lsr r1, r7, #0x8\n"
+ " mov r5, #0xff\n"
+ " and r1, r1, r5\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " strb r6, [r4, #0x6]\n"
+ " add r4, r4, #0x7\n"
+ " and r7, r7, r5\n"
+ " add r0, r4, #0\n"
+ " add r1, r7, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ "._423:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._426 + 4 @ Str_839C07C\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._427:\n"
+ " .align 2, 0\n"
+ "._426:\n"
+ " .word gStringVar3\n"
+ " .word Str_839C07C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807860C()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._432 @ gTasks\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._428 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._429 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._430 @cond_branch\n"
+ " b ._447\n"
+ "._433:\n"
+ " .align 2, 0\n"
+ "._432:\n"
+ " .word gTasks+0x8\n"
+ "._429:\n"
+ " cmp r0, #0x2\n"
+ " beq ._434 @cond_branch\n"
+ " b ._447\n"
+ "._430:\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_8078550\n"
+ "._441:\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._447\n"
+ "._428:\n"
+ " ldr r3, ._439 @ gMain\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._437 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " mov r0, #0x1\n"
+ " b ._438\n"
+ "._440:\n"
+ " .align 2, 0\n"
+ "._439:\n"
+ " .word gMain\n"
+ "._437:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r2, r0, #0x10\n"
+ " cmp r2, #0\n"
+ " bne ._441 @cond_branch\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._442 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x2]\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x10\n"
+ " cmp r0, #0x32\n"
+ " bne ._446 @cond_branch\n"
+ " strh r2, [r4, #0x2]\n"
+ " b ._446\n"
+ "._442:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._447 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r4, #0x2]\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " bge ._446 @cond_branch\n"
+ " mov r0, #0x31\n"
+ " strh r0, [r4, #0x2]\n"
+ "._446:\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_8078550\n"
+ " b ._447\n"
+ "._434:\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._447:\n"
+ " mov r0, #0x0\n"
+ "._438:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80786C0()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DebugMenu_807860C\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80786D0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " add r0, r4, #0\n"
+ " bl DebugMenu_807860C\n"
+ " cmp r0, #0\n"
+ " beq ._449 @cond_branch\n"
+ " ldr r1, ._450 @ gTasks\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r0, #0xa]\n"
+ " ldr r1, ._450 + 4 @ gUnknown_Debug_839C26C\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._449 @cond_branch\n"
+ " sub r1, r0, #1\n"
+ " add r0, r2, #0\n"
+ " bl SetGameStat\n"
+ " mov r0, #0x15\n"
+ " bl PlaySE\n"
+ "._449:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._451:\n"
+ " .align 2, 0\n"
+ "._450:\n"
+ " .word gTasks\n"
+ " .word gUnknown_Debug_839C26C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078714()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " add r0, r4, #0\n"
+ " bl DebugMenu_807860C\n"
+ " cmp r0, #0\n"
+ " beq ._453 @cond_branch\n"
+ " ldr r1, ._454 @ gTasks\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r0, #0xa]\n"
+ " ldr r1, ._454 + 4 @ gUnknown_Debug_839C26C\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._453 @cond_branch\n"
+ " add r0, r2, #0\n"
+ " mov r1, #0x0\n"
+ " bl SetGameStat\n"
+ " mov r0, #0x15\n"
+ " bl PlaySE\n"
+ "._453:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._455:\n"
+ " .align 2, 0\n"
+ "._454:\n"
+ " .word gTasks\n"
+ " .word gUnknown_Debug_839C26C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078758()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " bl CloseMenu\n"
+ " bl ScriptContext2_Enable\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " mov r0, #0x1\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078774()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._456 @ DebugMenu_80786C0\n"
+ " bl DebugMenu_8078758\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._457:\n"
+ " .align 2, 0\n"
+ "._456:\n"
+ " .word DebugMenu_80786C0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078788()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._458 @ DebugMenu_80786D0\n"
+ " bl DebugMenu_8078758\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._459:\n"
+ " .align 2, 0\n"
+ "._458:\n"
+ " .word DebugMenu_80786D0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807879C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._460 @ DebugMenu_8078714\n"
+ " bl DebugMenu_8078758\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._461:\n"
+ " .align 2, 0\n"
+ "._460:\n"
+ " .word DebugMenu_8078714+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80787B0()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._462 @ gUnknown_Debug_839C3FC\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._463:\n"
+ " .align 2, 0\n"
+ "._462:\n"
+ " .word gUnknown_Debug_839C3FC\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenLegendsRecord()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._464 @ gUnknown_Debug_839C3FC\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x3\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._464 + 4 @ gMenuCallback\n"
+ " ldr r0, ._464 + 8 @ DebugMenu_80787B0\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._465:\n"
+ " .align 2, 0\n"
+ "._464:\n"
+ " .word gUnknown_Debug_839C3FC\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_80787B0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80787EC()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r5, sp\n"
+ " add r5, r5, #0x2\n"
+ " mov r0, sp\n"
+ " add r1, r5, #0\n"
+ " bl GetXYCoordsOneStepInFrontOfPlayer\n"
+ " ldr r4, ._466 @ gSpecialVar_Result\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r5, r2]\n"
+ " bl MapGridGetMetatileBehaviorAt\n"
+ " strh r0, [r4]\n"
+ " ldr r0, ._466 + 4 @ gStringVar1\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToHexStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r5, r2]\n"
+ " bl MapGridGetMetatileIdAt\n"
+ " strh r0, [r4]\n"
+ " ldr r0, ._466 + 8 @ gStringVar2\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToHexStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r5, r2]\n"
+ " bl MapGridGetZCoordAt\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " strh r0, [r4]\n"
+ " ldr r0, ._466 + 12 @ gStringVar3\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToHexStringN\n"
+ " ldr r0, ._466 + 16 @ gStringVar4\n"
+ " ldr r1, ._466 + 20 @ Str_839C414\n"
+ " bl StringExpandPlaceholders\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._467:\n"
+ " .align 2, 0\n"
+ "._466:\n"
+ " .word gSpecialVar_Result\n"
+ " .word gStringVar1\n"
+ " .word gStringVar2\n"
+ " .word gStringVar3\n"
+ " .word gStringVar4\n"
+ " .word Str_839C414\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078880()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._472 @ gTasks\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._468 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._469 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._470 @cond_branch\n"
+ " b ._480\n"
+ "._473:\n"
+ " .align 2, 0\n"
+ "._472:\n"
+ " .word gTasks\n"
+ "._469:\n"
+ " cmp r0, #0x2\n"
+ " beq ._474 @cond_branch\n"
+ " b ._480\n"
+ "._470:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " b ._476\n"
+ "._468:\n"
+ " ldr r0, ._478 @ gStringVar4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ "._476:\n"
+ " ldrh r0, [r4, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x8]\n"
+ " b ._480\n"
+ "._479:\n"
+ " .align 2, 0\n"
+ "._478:\n"
+ " .word gStringVar4\n"
+ "._474:\n"
+ " ldr r0, ._481 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._480 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._480:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._482:\n"
+ " .align 2, 0\n"
+ "._481:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_CellInfo()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._483 @ DebugMenu_8078880\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl DebugMenu_80787EC\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._484:\n"
+ " .align 2, 0\n"
+ "._483:\n"
+ " .word DebugMenu_8078880+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenBerryInfo()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl DebugOpenBerryInfo\n"
+ " add r4, r0, #0\n"
+ " cmp r4, #0\n"
+ " bne ._485 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._486\n"
+ "._485:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x13\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._487 @ gMenuCallback\n"
+ " ldr r0, ._487 + 4 @ DebugMenu_8077DB4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ "._486:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._488:\n"
+ " .align 2, 0\n"
+ "._487:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077DB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078950()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._489 @ Str_839C42E\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._490:\n"
+ " .align 2, 0\n"
+ "._489:\n"
+ " .word Str_839C42E\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078968()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " bne ._491 @cond_branch\n"
+ " ldr r0, ._493 @ gStringVar1\n"
+ " mov r1, #0x32\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " b ._492\n"
+ "._494:\n"
+ " .align 2, 0\n"
+ "._493:\n"
+ " .word gStringVar1\n"
+ "._491:\n"
+ " ldr r0, ._495 @ gStringVar1\n"
+ " mov r1, #0x64\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ "._492:\n"
+ " ldr r0, ._495 @ gStringVar1\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._496:\n"
+ " .align 2, 0\n"
+ "._495:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80789A4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " ldr r4, ._497 @ gStringVar1\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x9\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._498:\n"
+ " .align 2, 0\n"
+ "._497:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80789CC()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r4, r0, #0x2\n"
+ " add r4, r4, r0\n"
+ " lsl r4, r4, #0x3\n"
+ " ldr r6, ._499 @ gTasks\n"
+ " add r5, r4, r6\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r5]\n"
+ " ldr r0, ._499 + 4 @ gSaveBlock2\n"
+ " ldr r1, ._499 + 8 @ 0x55c\n"
+ " add r0, r0, r1\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r5, #0x2]\n"
+ " bl DebugMenu_8078950\n"
+ " ldrh r0, [r5]\n"
+ " bl DebugMenu_8078968\n"
+ " sub r6, r6, #0x8\n"
+ " add r4, r4, r6\n"
+ " ldr r0, ._499 + 12 @ DebugMenu_8078A14\n"
+ " str r0, [r4]\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._500:\n"
+ " .align 2, 0\n"
+ "._499:\n"
+ " .word gTasks+0x8\n"
+ " .word gSaveBlock2\n"
+ " .word 0x55c\n"
+ " .word DebugMenu_8078A14+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078A14()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r4, r1, #0x3\n"
+ " ldr r5, ._504 @ gTasks\n"
+ " add r2, r4, r5\n"
+ " ldr r0, ._504 + 4 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0xc0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._501 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r2, r3]\n"
+ " cmp r0, #0\n"
+ " bne ._502 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._502:\n"
+ " strh r1, [r2]\n"
+ " ldrh r0, [r2]\n"
+ " bl DebugMenu_8078968\n"
+ " b ._510\n"
+ "._505:\n"
+ " .align 2, 0\n"
+ "._504:\n"
+ " .word gTasks+0x8\n"
+ " .word gMain\n"
+ "._501:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._506 @cond_branch\n"
+ " ldr r1, ._508 @ gSaveBlock2\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r2, r3]\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r3, ._508 + 4 @ 0x55c\n"
+ " add r1, r1, r3\n"
+ " add r0, r0, r1\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r2, #0x2]\n"
+ " ldrh r0, [r2, #0x2]\n"
+ " bl DebugMenu_80789A4\n"
+ " add r0, r5, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r4, r0\n"
+ " ldr r1, ._508 + 8 @ DebugMenu_8078AA4\n"
+ " b ._507\n"
+ "._509:\n"
+ " .align 2, 0\n"
+ "._508:\n"
+ " .word gSaveBlock2\n"
+ " .word 0x55c\n"
+ " .word DebugMenu_8078AA4+1\n"
+ "._506:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._510 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r4, r0\n"
+ " ldr r1, ._511 @ DebugMenu_8078B38\n"
+ "._507:\n"
+ " str r1, [r0]\n"
+ "._510:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._512:\n"
+ " .align 2, 0\n"
+ "._511:\n"
+ " .word DebugMenu_8078B38+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078AA4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r5, r1, #0x3\n"
+ " ldr r7, ._515 @ gTasks\n"
+ " add r4, r5, r7\n"
+ " add r0, r4, #2\n"
+ " mov r2, #0xfa\n"
+ " lsl r2, r2, #0x3\n"
+ " ldr r6, ._515 + 4 @ gMain\n"
+ " ldrh r3, [r6, #0x30]\n"
+ " mov r1, #0x0\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._513 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_80789A4\n"
+ " b ._521\n"
+ "._516:\n"
+ " .align 2, 0\n"
+ "._515:\n"
+ " .word gTasks+0x8\n"
+ " .word gMain\n"
+ "._513:\n"
+ " ldrh r1, [r6, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._517 @cond_branch\n"
+ " ldr r1, ._519 @ gSaveBlock2\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r2, ._519 + 4 @ 0x55c\n"
+ " add r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r4, #0x2]\n"
+ " strh r1, [r0]\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " add r0, r7, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r5, r0\n"
+ " ldr r1, ._519 + 8 @ DebugMenu_8078B38\n"
+ " b ._518\n"
+ "._520:\n"
+ " .align 2, 0\n"
+ "._519:\n"
+ " .word gSaveBlock2\n"
+ " .word 0x55c\n"
+ " .word DebugMenu_8078B38+1\n"
+ "._517:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._521 @cond_branch\n"
+ " bl DebugMenu_8078950\n"
+ " ldrh r0, [r4]\n"
+ " bl DebugMenu_8078968\n"
+ " add r0, r7, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r5, r0\n"
+ " ldr r1, ._522 @ DebugMenu_8078A14\n"
+ "._518:\n"
+ " str r1, [r0]\n"
+ "._521:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._523:\n"
+ " .align 2, 0\n"
+ "._522:\n"
+ " .word DebugMenu_8078A14+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078B38()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_BattleTowerStages()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl ScriptContext2_Enable\n"
+ " ldr r0, ._524 @ DebugMenu_80789CC\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._525:\n"
+ " .align 2, 0\n"
+ "._524:\n"
+ " .word DebugMenu_80789CC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078B70()
+{
+ asm(
+ " push {lr}\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " ldr r0, ._526 @ gStringVar1\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToHexStringN\n"
+ " ldr r0, ._526 + 4 @ Str_839C438\n"
+ " bl sub_8071F40\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._527:\n"
+ " .align 2, 0\n"
+ "._526:\n"
+ " .word gStringVar1\n"
+ " .word Str_839C438\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078B94()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r3, #0x0\n"
+ " ldr r1, ._531 @ gUnknown_Debug_839C444\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._529 @cond_branch\n"
+ " ldr r5, ._531 + 4 @ gSaveBlock1\n"
+ " add r4, r1, #0\n"
+ "._530:\n"
+ " lsl r0, r3, #0x3\n"
+ " add r2, r0, r5\n"
+ " add r0, r0, r4\n"
+ " ldr r1, [r0, #0x4]\n"
+ " ldr r0, [r0]\n"
+ " str r0, [r2]\n"
+ " str r1, [r2, #0x4]\n"
+ " add r0, r3, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " cmp r3, #0x27\n"
+ " bhi ._529 @cond_branch\n"
+ " lsl r0, r3, #0x3\n"
+ " add r0, r0, r4\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._530 @cond_branch\n"
+ "._529:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._532:\n"
+ " .align 2, 0\n"
+ "._531:\n"
+ " .word gUnknown_Debug_839C444\n"
+ " .word gSaveBlock1+0x7f8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078BD4()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._536 @ gTasks\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._533 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq ._534 @cond_branch\n"
+ " b ._545\n"
+ "._537:\n"
+ " .align 2, 0\n"
+ "._536:\n"
+ " .word gTasks+0x8\n"
+ "._533:\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_8078B70\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._545\n"
+ "._534:\n"
+ " ldr r2, ._541 @ gMain\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._539 @cond_branch\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ " bl DebugMenu_8078B94\n"
+ " b ._545\n"
+ "._542:\n"
+ " .align 2, 0\n"
+ "._541:\n"
+ " .word gMain\n"
+ "._539:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._543 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ " b ._545\n"
+ "._543:\n"
+ " add r0, r4, #2\n"
+ " ldrh r3, [r2, #0x30]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x4\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._545 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_8078B70\n"
+ "._545:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_CheckPKBLCK()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._546 @ DebugMenu_8078BD4\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._547:\n"
+ " .align 2, 0\n"
+ "._546:\n"
+ " .word DebugMenu_8078BD4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078C80()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._548 @ Str_839C5A4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._548 + 4 @ gMenuCallback\n"
+ " ldr r0, ._548 + 8 @ DebugMenu_8078CA8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._549:\n"
+ " .align 2, 0\n"
+ "._548:\n"
+ " .word Str_839C5A4\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078CA8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078CA8()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._552 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._550 @cond_branch\n"
+ " ldr r1, ._552 + 4 @ gMenuCallback\n"
+ " ldr r0, ._552 + 8 @ DebugMenu_8078CE4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " b ._555\n"
+ "._553:\n"
+ " .align 2, 0\n"
+ "._552:\n"
+ " .word gMain\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078CE4+1\n"
+ "._550:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._554 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._555\n"
+ "._554:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._555:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078CE4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._558 @ \n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0xa\n"
+ " mov r0, #0x0\n"
+ " bl DebugMenu_8078E40\n"
+ " cmp r0, #0x1\n"
+ " bne ._556 @cond_branch\n"
+ " ldr r0, ._558 + 4 @ \n"
+ " ldr r1, ._558 + 8 @ \n"
+ " bl StringCopy\n"
+ " b ._557\n"
+ "._559:\n"
+ " .align 2, 0\n"
+ "._558:\n"
+ " .word +0x2000000\n"
+ " .word gStringVar4\n"
+ " .word Str_839C5CC\n"
+ "._556:\n"
+ " ldr r0, ._560 @ gStringVar4\n"
+ " ldr r1, ._560 + 4 @ Str_839C5DF\n"
+ " bl StringCopy\n"
+ "._557:\n"
+ " ldr r1, ._560 + 8 @ gMenuCallback\n"
+ " ldr r0, ._560 + 12 @ DebugMenu_8078D7C\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._561:\n"
+ " .align 2, 0\n"
+ "._560:\n"
+ " .word gStringVar4\n"
+ " .word Str_839C5DF\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078D7C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078D30()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " ldr r5, ._563 @ \n"
+ " mov r4, #0x0\n"
+ " mov r6, #0x80\n"
+ " lsl r6, r6, #0x5\n"
+ "._562:\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " add r2, r6, #0\n"
+ " bl DebugMenu_8078E68\n"
+ " add r5, r5, r6\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x1f\n"
+ " bls ._562 @cond_branch\n"
+ " ldr r0, ._563 + 4 @ \n"
+ " ldr r1, ._563 + 8 @ \n"
+ " bl StringCopy\n"
+ " ldr r1, ._563 + 12 @ \n"
+ " ldr r0, ._563 + 16 @ \n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._564:\n"
+ " .align 2, 0\n"
+ "._563:\n"
+ " .word +0x2000000\n"
+ " .word gStringVar4\n"
+ " .word Str_839C5D6\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078D7C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078D7C()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._565 @ gStringVar4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._565 + 4 @ gMenuCallback\n"
+ " ldr r0, ._565 + 8 @ DebugMenu_8078DA4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._566:\n"
+ " .align 2, 0\n"
+ "._565:\n"
+ " .word gStringVar4\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078DA4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078DA4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._569 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._567 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._568\n"
+ "._570:\n"
+ " .align 2, 0\n"
+ "._569:\n"
+ " .word gMain\n"
+ "._567:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._568:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_MeTooBackupMan()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._571 @ gUnknown_Debug_839C594\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x2\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._571 + 4 @ gMenuCallback\n"
+ " ldr r0, ._571 + 8 @ DebugMenu_8078DF0\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._572:\n"
+ " .align 2, 0\n"
+ "._571:\n"
+ " .word gUnknown_Debug_839C594\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078DF0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078DF0()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._573 @ gUnknown_Debug_839C594\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._574:\n"
+ " .align 2, 0\n"
+ "._573:\n"
+ " .word gUnknown_Debug_839C594\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078E04()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r1, #0\n"
+ " add r5, r2, #0\n"
+ " b ._575\n"
+ "._577:\n"
+ " ldr r0, ._579 @ 0xfffff000\n"
+ " add r5, r5, r0\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x5\n"
+ " add r6, r6, r0\n"
+ " add r0, r4, #1\n"
+ "._575:\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl ProgramFlashSectorAndVerify\n"
+ " cmp r0, #0\n"
+ " bne ._576 @cond_branch\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x5\n"
+ " cmp r5, r0\n"
+ " bhi ._577 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " b ._578\n"
+ "._580:\n"
+ " .align 2, 0\n"
+ "._579:\n"
+ " .word 0xfffff000\n"
+ "._576:\n"
+ " mov r0, #0x0\n"
+ "._578:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078E40()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r4, r0, #0\n"
+ " add r5, r1, #0\n"
+ " add r6, r2, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl m4aSoundVSyncOff\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " add r2, r6, #0\n"
+ " bl DebugMenu_8078E04\n"
+ " add r4, r0, #0\n"
+ " bl m4aSoundVSyncOn\n"
+ " add r0, r4, #0\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078E68()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r1, #0\n"
+ " add r3, r2, #0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x0\n"
+ " add r2, r4, #0\n"
+ " bl ReadFlash\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078E80()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x16\n"
+ " mov r3, #0x10\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r1, ._581 @ gUnknown_Debug_839C5F4\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0, #0x4]\n"
+ " mov r0, #0xd0\n"
+ " mov r2, #0xf\n"
+ " bl sub_8071F60\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._582:\n"
+ " .align 2, 0\n"
+ "._581:\n"
+ " .word gUnknown_Debug_839C5F4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078EB0()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r5, r0, #0\n"
+ " ldr r4, ._583 @ gStringVar1\n"
+ " mov r0, #0x2\n"
+ " ldsh r1, [r5, r0]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0xf0\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0x11\n"
+ " bl sub_8071F60\n"
+ " mov r0, #0x4\n"
+ " ldsh r1, [r5, r0]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0xf0\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x11\n"
+ " bl sub_8071F60\n"
+ " mov r0, #0x6\n"
+ " ldsh r1, [r5, r0]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x9\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._584:\n"
+ " .align 2, 0\n"
+ "._583:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078F1C()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r4, r0, #0x2\n"
+ " add r4, r4, r0\n"
+ " lsl r4, r4, #0x3\n"
+ " ldr r6, ._585 @ gTasks\n"
+ " add r5, r4, r6\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r5]\n"
+ " ldr r1, ._585 + 4 @ gSaveBlock2\n"
+ " ldrh r0, [r1, #0xe]\n"
+ " strh r0, [r5, #0x2]\n"
+ " ldrb r0, [r1, #0x10]\n"
+ " strh r0, [r5, #0x4]\n"
+ " ldrb r0, [r1, #0x11]\n"
+ " strh r0, [r5, #0x6]\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " add r0, r5, #0\n"
+ " bl DebugMenu_8078EB0\n"
+ " add r0, r5, #0\n"
+ " bl DebugMenu_8078E80\n"
+ " sub r6, r6, #0x8\n"
+ " add r4, r4, r6\n"
+ " ldr r0, ._585 + 8 @ DebugMenu_8078F68\n"
+ " str r0, [r4]\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._586:\n"
+ " .align 2, 0\n"
+ "._585:\n"
+ " .word gTasks+0x8\n"
+ " .word gSaveBlock2\n"
+ " .word DebugMenu_8078F68+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078F68()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r5, r1, #0x3\n"
+ " ldr r6, ._589 @ gTasks\n"
+ " add r4, r5, r6\n"
+ " ldr r3, ._589 + 4 @ gMain\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._587 @cond_branch\n"
+ " ldr r1, ._589 + 8 @ gSaveBlock2\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " strh r0, [r1, #0xe]\n"
+ " ldrh r0, [r4, #0x4]\n"
+ " strb r0, [r1, #0x10]\n"
+ " ldrh r0, [r4, #0x6]\n"
+ " strb r0, [r1, #0x11]\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " b ._588\n"
+ "._590:\n"
+ " .align 2, 0\n"
+ "._589:\n"
+ " .word gTasks+0x8\n"
+ " .word gMain\n"
+ " .word gSaveBlock2\n"
+ "._587:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._591 @cond_branch\n"
+ "._588:\n"
+ " add r0, r6, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r5, r0\n"
+ " ldr r1, ._593 @ DebugMenu_8079020\n"
+ " str r1, [r0]\n"
+ " b ._601\n"
+ "._594:\n"
+ " .align 2, 0\n"
+ "._593:\n"
+ " .word DebugMenu_8079020+1\n"
+ "._591:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._595 @cond_branch\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " cmp r0, #0\n"
+ " beq ._601 @cond_branch\n"
+ " sub r0, r1, #1\n"
+ " b ._597\n"
+ "._595:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._598 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " cmp r0, #0x1\n"
+ " bhi ._601 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ "._597:\n"
+ " strh r0, [r4]\n"
+ " add r0, r4, #0\n"
+ " bl DebugMenu_8078E80\n"
+ " b ._601\n"
+ "._598:\n"
+ " mov r0, #0x0\n"
+ " ldsh r2, [r4, r0]\n"
+ " lsl r2, r2, #0x3\n"
+ " ldr r0, ._602 @ gUnknown_Debug_839C5F4\n"
+ " add r2, r2, r0\n"
+ " ldrb r0, [r2, #0x5]\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r4, r0\n"
+ " ldrh r1, [r2]\n"
+ " ldrh r2, [r2, #0x2]\n"
+ " ldrh r3, [r3, #0x30]\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._601 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl DebugMenu_8078EB0\n"
+ "._601:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._603:\n"
+ " .align 2, 0\n"
+ "._602:\n"
+ " .word gUnknown_Debug_839C5F4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8079020()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_PTime()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._604 @ DebugMenu_8078F1C\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._605:\n"
+ " .align 2, 0\n"
+ "._604:\n"
+ " .word DebugMenu_8078F1C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8079058()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._610 @ gTasks\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r0, #0x8\n"
+ " ldsh r1, [r4, r0]\n"
+ " cmp r1, #0x1\n"
+ " beq ._606 @cond_branch\n"
+ " cmp r1, #0x1\n"
+ " bgt ._607 @cond_branch\n"
+ " cmp r1, #0\n"
+ " beq ._608 @cond_branch\n"
+ " b ._620\n"
+ "._611:\n"
+ " .align 2, 0\n"
+ "._610:\n"
+ " .word gTasks\n"
+ "._607:\n"
+ " cmp r1, #0x2\n"
+ " beq ._612 @cond_branch\n"
+ " b ._620\n"
+ "._608:\n"
+ " ldr r0, ._615 @ gUnknown_Debug_03004BD0\n"
+ " str r1, [r0]\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " b ._614\n"
+ "._616:\n"
+ " .align 2, 0\n"
+ "._615:\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ "._606:\n"
+ " ldr r0, ._618 @ gDebug0x839C60C\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x14\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x1\n"
+ " bl DisplayYesNoMenu\n"
+ "._614:\n"
+ " ldrh r0, [r4, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x8]\n"
+ " b ._620\n"
+ "._619:\n"
+ " .align 2, 0\n"
+ "._618:\n"
+ " .word gDebug0x839C60C\n"
+ "._612:\n"
+ " bl Menu_ProcessInputNoWrap_\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._620 @cond_branch\n"
+ " cmp r1, #0\n"
+ " bne ._621 @cond_branch\n"
+ " ldr r1, ._623 @ gUnknown_Debug_03004BD0\n"
+ " mov r0, #0x1\n"
+ " b ._622\n"
+ "._624:\n"
+ " .align 2, 0\n"
+ "._623:\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ "._621:\n"
+ " ldr r1, ._625 @ gUnknown_Debug_03004BD0\n"
+ " mov r0, #0x0\n"
+ "._622:\n"
+ " str r0, [r1]\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._620:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._626:\n"
+ " .align 2, 0\n"
+ "._625:\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenMurakawa()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._627 @ DebugMenu_8079058\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._628:\n"
+ " .align 2, 0\n"
+ "._627:\n"
+ " .word DebugMenu_8079058+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8079110()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._633 @ gTasks\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._629 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._630 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._631 @cond_branch\n"
+ " b ._642\n"
+ "._634:\n"
+ " .align 2, 0\n"
+ "._633:\n"
+ " .word gTasks\n"
+ "._630:\n"
+ " cmp r0, #0x2\n"
+ " beq ._635 @cond_branch\n"
+ " b ._642\n"
+ "._631:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " b ._637\n"
+ "._629:\n"
+ " ldr r0, ._639 @ Str_839C61A\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrintMessage\n"
+ "._637:\n"
+ " ldrh r0, [r4, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x8]\n"
+ " b ._642\n"
+ "._640:\n"
+ " .align 2, 0\n"
+ "._639:\n"
+ " .word Str_839C61A\n"
+ "._635:\n"
+ " bl Menu_UpdateWindowText\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._642 @cond_branch\n"
+ " ldr r0, ._643 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._642 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._642:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._644:\n"
+ " .align 2, 0\n"
+ "._643:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenKiwa()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._645 @ DebugMenu_8079110\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._646:\n"
+ " .align 2, 0\n"
+ "._645:\n"
+ " .word DebugMenu_8079110+1\n"
+ "\n"
+ );
+}
+
+#endif
diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c
new file mode 100644
index 000000000..f7e0e3770
--- /dev/null
+++ b/src/debug/taya_debug_window.c
@@ -0,0 +1,6 @@
+#if DEBUG
+#include "global.h"
+
+EWRAM_DATA u8 unk_2030224[4] = { 0 };
+
+#endif
diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c
new file mode 100644
index 000000000..c3616797e
--- /dev/null
+++ b/src/debug/tomomichi_debug_menu.c
@@ -0,0 +1,20 @@
+#if DEBUG
+#include "global.h"
+
+// These should be static, uninitialized once it gets decompiled.
+#define BSS_DATA __attribute__((section(".bss")))
+BSS_DATA u8 gDebug_03000700[4] = {0};
+BSS_DATA u8 gDebug_03000704[4] = {0};
+BSS_DATA u8 gDebug_03000708[4] = {0};
+BSS_DATA u8 gDebug_0300070C = 0;
+BSS_DATA u8 gDebug_0300070D = 0;
+BSS_DATA u8 gDebug_0300070E = 0;
+BSS_DATA u8 gDebug_0300070F = 0;
+BSS_DATA u8 gDebug_03000710[13] = {0};
+BSS_DATA u8 gDebug_0300071D = 0;
+BSS_DATA u8 gDebug_0300071E = 0;
+BSS_DATA u8 gDebug_0300071F = 0;
+BSS_DATA u8 gDebug_03000720 = 0;
+BSS_DATA u8 gDebug_03000721 = 0;
+
+#endif
diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c
new file mode 100644
index 000000000..6c94b0466
--- /dev/null
+++ b/src/debug/watanabe_debug_menu.c
@@ -0,0 +1,11 @@
+#if DEBUG
+#include "global.h"
+
+EWRAM_DATA u8 gUnknown_Debug_20389EC[0x20] = { 0 };
+EWRAM_DATA u8 gUnknown_Debug_2038A0C[0x10] = { 0 };
+EWRAM_DATA u8 gUnknown_Debug_2038A1C[4] = { 0 };
+EWRAM_DATA u8 gUnknown_Debug_2038A20[4] = { 0 };
+
+u8 byte_3005E30[0x20];
+
+#endif
diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c
index e7c504c7b..ff73e638e 100644
--- a/src/engine/cable_club.c
+++ b/src/engine/cable_club.c
@@ -23,6 +23,7 @@
#include "text.h"
#include "trainer_card.h"
+extern u8 unk_2030220;
extern u16 gSpecialVar_Result;
extern struct TrainerCard gTrainerCards[4];
extern u8 gUnknown_03004860;
@@ -41,7 +42,7 @@ extern struct
u8 field1;
} gUnknown_020297D8;
-static void sub_8082F20(u8 taskId);
+/*static*/ void sub_8082F20(u8 taskId);
static void sub_8082F68(u8 taskId);
static void sub_8082FEC(u8 taskId);
static void sub_808303C(u8 taskId);
@@ -95,6 +96,382 @@ const u8 *const gTrainerCardColorNames[] =
TrainerCardColorName_Gold,
};
+#if DEBUG
+
+__attribute__((naked))
+int debug_sub_808A4D0()
+{
+ asm("\
+ push {lr}\n\
+ add r1, r0, #0\n\
+ ldr r0, ._3 @ sub_8082F68\n\
+ cmp r1, r0\n\
+ bne ._1 @cond_branch\n\
+ mov r0, #0x1\n\
+ b ._30\n\
+._4:\n\
+ .align 2, 0\n\
+._3:\n\
+ .word sub_8082F68+1\n\
+._1:\n\
+ ldr r0, ._7 @ sub_8082FEC\n\
+ cmp r1, r0\n\
+ bne ._5 @cond_branch\n\
+ mov r0, #0x11\n\
+ b ._30\n\
+._8:\n\
+ .align 2, 0\n\
+._7:\n\
+ .word sub_8082FEC+1\n\
+._5:\n\
+ ldr r0, ._11 @ sub_808303C\n\
+ cmp r1, r0\n\
+ bne ._9 @cond_branch\n\
+ mov r0, #0x12\n\
+ b ._30\n\
+._12:\n\
+ .align 2, 0\n\
+._11:\n\
+ .word sub_808303C+1\n\
+._9:\n\
+ ldr r0, ._15 @ sub_8083188\n\
+ cmp r1, r0\n\
+ bne ._13 @cond_branch\n\
+ mov r0, #0x13\n\
+ b ._30\n\
+._16:\n\
+ .align 2, 0\n\
+._15:\n\
+ .word sub_8083188+1\n\
+._13:\n\
+ ldr r0, ._19 @ sub_80830E4\n\
+ cmp r1, r0\n\
+ bne ._17 @cond_branch\n\
+ mov r0, #0x14\n\
+ b ._30\n\
+._20:\n\
+ .align 2, 0\n\
+._19:\n\
+ .word sub_80830E4+1\n\
+._17:\n\
+ ldr r0, ._23 @ sub_80831F8\n\
+ cmp r1, r0\n\
+ bne ._21 @cond_branch\n\
+ mov r0, #0x21\n\
+ b ._30\n\
+._24:\n\
+ .align 2, 0\n\
+._23:\n\
+ .word sub_80831F8+1\n\
+._21:\n\
+ ldr r0, ._27 @ sub_8083314\n\
+ cmp r1, r0\n\
+ bne ._25 @cond_branch\n\
+ mov r0, #0x2\n\
+ b ._30\n\
+._28:\n\
+ .align 2, 0\n\
+._27:\n\
+ .word sub_8083314+1\n\
+._25:\n\
+ ldr r0, ._31 @ sub_80833C4\n\
+ cmp r1, r0\n\
+ beq ._29 @cond_branch\n\
+ mov r0, #0x0\n\
+ b ._30\n\
+._32:\n\
+ .align 2, 0\n\
+._31:\n\
+ .word sub_80833C4+1\n\
+._29:\n\
+ mov r0, #0x3\n\
+._30:\n\
+ pop {r1}\n\
+ bx r1");
+}
+
+__attribute__((naked))
+void debug_sub_808A55C()
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ ldr r2, ._37 @ gTasks\n\
+ lsl r0, r7, #0x2\n\
+ add r0, r0, r7\n\
+ lsl r0, r0, #0x3\n\
+ add r4, r0, r2\n\
+ mov r0, #0x8\n\
+ ldsh r1, [r4, r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r2\n\
+ ldrb r0, [r0, #0x4]\n\
+ cmp r0, #0\n\
+ bne ._33 @cond_branch\n\
+ mov r1, #0xa\n\
+ ldsh r0, [r4, r1]\n\
+ cmp r0, #0x5\n\
+ bne ._34 @cond_branch\n\
+ add r0, r7, #0\n\
+ bl DestroyTask\n\
+._34:\n\
+ ldrh r0, [r4, #0xa]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4, #0xa]\n\
+._33:\n\
+ ldr r0, ._37 + 4 @ gShouldAdvanceLinkState\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x2\n\
+ mov r2, #0x0\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ ldr r0, ._37 + 8 @ gBlockSendBuffer\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x16\n\
+ mov r2, #0x5\n\
+ mov r3, #0x4\n\
+ bl PrintHex\n\
+ mov r4, #0x0\n\
+ lsl r3, r7, #0x2\n\
+ mov r8, r3\n\
+ mov r6, #0xc0\n\
+ lsl r6, r6, #0x13\n\
+ mov r5, #0xa0\n\
+ lsl r5, r5, #0x13\n\
+._35:\n\
+ ldr r0, ._37 + 12 @ gLinkPlayerPending\n\
+ add r0, r4, r0\n\
+ ldrb r0, [r0]\n\
+ lsr r1, r5, #0x18\n\
+ mov r2, #0x0\n\
+ mov r3, #0x1\n\
+ bl PrintHex\n\
+ ldr r1, ._37 + 16 @ gBlockRecvBuffer\n\
+ lsl r0, r4, #0x8\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0]\n\
+ lsr r2, r6, #0x18\n\
+ mov r1, #0x16\n\
+ mov r3, #0x4\n\
+ bl PrintHex\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x11\n\
+ add r6, r6, r0\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x12\n\
+ add r5, r5, r1\n\
+ add r4, r4, #0x1\n\
+ cmp r4, #0x3\n\
+ ble ._35 @cond_branch\n\
+ ldr r4, ._37 + 20 @ gLinkStatus\n\
+ ldr r0, [r4]\n\
+ mov r1, #0xf\n\
+ mov r2, #0x0\n\
+ mov r3, #0x8\n\
+ bl PrintHex\n\
+ ldr r0, ._37 + 24 @ gLink\n\
+ ldrb r0, [r0, #0x1]\n\
+ mov r1, #0x2\n\
+ mov r2, #0xa\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ bl GetMultiplayerId\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0x7\n\
+ mov r2, #0xc\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ bl GetBlockReceivedStatus\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0x7\n\
+ mov r2, #0xa\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ ldr r0, ._37 + 28 @ gReceivedRemoteLinkPlayers\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x2\n\
+ mov r2, #0xc\n\
+ mov r3, #0x1\n\
+ bl PrintHex\n\
+ ldr r0, ._37 + 32 @ gSpecialVar_Result\n\
+ ldrh r0, [r0]\n\
+ mov r1, #0xb\n\
+ mov r2, #0x8\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ ldr r0, [r4]\n\
+ mov r1, #0x1c\n\
+ and r0, r0, r1\n\
+ lsr r0, r0, #0x2\n\
+ mov r1, #0xb\n\
+ mov r2, #0xa\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ bl IsLinkConnectionEstablished\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0xb\n\
+ mov r2, #0xc\n\
+ mov r3, #0x1\n\
+ bl PrintHex\n\
+ bl IsLinkTaskFinished\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0xf\n\
+ mov r2, #0xa\n\
+ mov r3, #0x1\n\
+ bl PrintHex\n\
+ ldr r2, ._37 @ gTasks\n\
+ mov r3, r8\n\
+ add r0, r3, r7\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r2\n\
+ mov r3, #0x8\n\
+ ldsh r1, [r0, r3]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r2\n\
+ ldr r0, [r0]\n\
+ bl debug_sub_808A4D0\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0xf\n\
+ mov r2, #0xc\n\
+ mov r3, #0x2\n\
+ bl PrintHex\n\
+ ldr r0, ._37 + 36 @ gLinkCallback\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x2\n\
+ mov r2, #0xd\n\
+ mov r3, #0x8\n\
+ bl PrintHex\n\
+ bl HasLinkErrorOccurred\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0x2\n\
+ mov r2, #0x2\n\
+ mov r3, #0x1\n\
+ bl PrintHex\n\
+ ldr r0, ._37 + 40 @ gLinkPlayers\n\
+ mov r6, #0x80\n\
+ lsl r6, r6, #0x12\n\
+ add r5, r0, #0\n\
+ add r5, r5, #0x14\n\
+ mov r4, #0x3\n\
+._36:\n\
+ ldr r0, [r5]\n\
+ lsr r1, r6, #0x18\n\
+ mov r2, #0x3\n\
+ mov r3, #0x4\n\
+ bl PrintHex\n\
+ mov r0, #0xc0\n\
+ lsl r0, r0, #0x13\n\
+ add r6, r6, r0\n\
+ add r5, r5, #0x1c\n\
+ sub r4, r4, #0x1\n\
+ cmp r4, #0\n\
+ bge ._36 @cond_branch\n\
+ ldr r0, ._37 + 44 @ 0x4000128\n\
+ ldrh r0, [r0]\n\
+ mov r1, #0x2\n\
+ mov r2, #0x6\n\
+ mov r3, #0x4\n\
+ bl PrintHex\n\
+ bl debug_sub_808B850\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ mov r1, #0x19\n\
+ mov r2, #0x3\n\
+ mov r3, #0x1\n\
+ bl PrintHex\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._38:\n\
+ .align 2, 0\n\
+._37:\n\
+ .word gTasks\n\
+ .word gShouldAdvanceLinkState\n\
+ .word gBlockSendBuffer\n\
+ .word gLinkPlayerPending\n\
+ .word gBlockRecvBuffer\n\
+ .word gLinkStatus\n\
+ .word gLink\n\
+ .word gReceivedRemoteLinkPlayers\n\
+ .word gSpecialVar_Result\n\
+ .word gLinkCallback\n\
+ .word gLinkPlayers\n\
+ .word 0x4000128");
+}
+#endif
+
+#if DEBUG
+__attribute__((naked))
+static void sub_8082CD4(u8 arg0, u8 arg1)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ lsl r1, r1, #0x18\n\
+ lsr r6, r1, #0x18\n\
+ mov r0, #0xc\n\
+ mov r1, #0x0\n\
+ mov r2, #0x1f\n\
+ mov r3, #0x2\n\
+ bl InitLinkTestBG_Unused\n\
+ ldr r4, ._40 @ sub_8082F20\n\
+ add r0, r4, #0\n\
+ bl FindTaskIdByFunc\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0xff\n\
+ bne ._39 @cond_branch\n\
+ add r0, r4, #0\n\
+ mov r1, #0x50\n\
+ bl CreateTask\n\
+ add r4, r0, #0\n\
+ lsl r4, r4, #0x18\n\
+ lsr r4, r4, #0x18\n\
+ ldr r5, ._40 + 4 @ gTasks\n\
+ lsl r0, r4, #0x2\n\
+ add r0, r0, r4\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r5\n\
+ strh r7, [r0, #0xa]\n\
+ strh r6, [r0, #0xc]\n\
+ ldr r0, ._40 + 8 @ debug_sub_808A55C\n\
+ mov r1, #0x50\n\
+ bl CreateTask\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ lsl r1, r0, #0x2\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r5\n\
+ strh r4, [r1, #0x8]\n\
+._39:\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._41:\n\
+ .align 2, 0\n\
+._40:\n\
+ .word sub_8082F20+1\n\
+ .word gTasks\n\
+ .word debug_sub_808A55C+1");
+}
+#else
static void sub_8082CD4(u8 arg0, u8 arg1)
{
if (FindTaskIdByFunc(sub_8082F20) == 0xFF)
@@ -105,6 +482,7 @@ static void sub_8082CD4(u8 arg0, u8 arg1)
gTasks[taskId].data[2] = arg1;
}
}
+#endif
static void sub_8082D18(u32 value)
{
@@ -207,7 +585,7 @@ void unref_sub_8082EEC(u8 taskId)
}
}
-static void sub_8082F20(u8 taskId)
+/*static*/ void sub_8082F20(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -360,6 +738,10 @@ void sub_80831F8(u8 taskId)
|| sub_8082DF4(taskId) == TRUE)
return;
+#if DEBUG
+ sub_8082D60(taskId, GetLinkPlayerCount_2());
+#endif
+
gSpecialVar_Result = sub_8082D9C(local1, local2);
if (gSpecialVar_Result == 0)
return;
@@ -908,6 +1290,74 @@ void sub_8083C50(u8 taskId)
DestroyTask(taskId);
}
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_808B778()
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r4, ._390 @ debug_sub_808B7A8\n\
+ add r0, r4, #0\n\
+ bl FuncIsActiveTask\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._389 @cond_branch\n\
+ add r0, r4, #0\n\
+ mov r1, #0x50\n\
+ bl CreateTask\n\
+._389:\n\
+ ldr r1, ._390 + 4 @ unk_3004E98\n\
+ ldr r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ str r0, [r1]\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._391:\n\
+ .align 2, 0\n\
+._390:\n\
+ .word debug_sub_808B7A8+1\n\
+ .word unk_3004E98");
+}
+
+__attribute__((naked))
+void debug_sub_808B7A8()
+{
+ asm("\
+ push {lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r2, ._393 @ gTasks\n\
+ lsl r1, r0, #0x2\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r2\n\
+ ldrh r0, [r1, #0x8]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r1, #0x8]\n\
+ lsl r0, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0x1e\n\
+ bne ._392 @cond_branch\n\
+ mov r0, #0x0\n\
+ strh r0, [r1, #0x8]\n\
+ ldr r2, ._393 + 4 @ unk_3004E94\n\
+ ldrh r0, [r2]\n\
+ mov r1, #0x1\n\
+ orr r0, r0, r1\n\
+ strh r0, [r2]\n\
+._392:\n\
+ pop {r0}\n\
+ bx r0\n\
+._394:\n\
+ .align 2, 0\n\
+._393:\n\
+ .word gTasks\n\
+ .word unk_3004E94");
+}
+#endif
+
static void sub_8083CA4(u8 taskId)
{
if (!gReceivedRemoteLinkPlayers)
@@ -921,4 +1371,23 @@ void unref_sub_8083CC8(u8 taskId)
{
sub_800832C();
gTasks[taskId].func = sub_8083CA4;
-} \ No newline at end of file
+}
+
+#if DEBUG
+
+void debug_sub_808B82C(void)
+{
+ unk_2030220 = 0;
+}
+
+void debug_sub_808B838(u8 a)
+{
+ unk_2030220 |= 1 << a;
+}
+
+int debug_sub_808B850(void)
+{
+ return unk_2030220;
+}
+
+#endif \ No newline at end of file
diff --git a/src/engine/clock.c b/src/engine/clock.c
index 416aaa6bb..fceccdfcb 100644
--- a/src/engine/clock.c
+++ b/src/engine/clock.c
@@ -13,12 +13,11 @@
#include "tv.h"
#include "wallclock.h"
-static void InitTimeBasedEvents(void);
static void UpdatePerDay(struct Time *time);
static void UpdatePerMinute(struct Time *time);
static void ReturnFromStartWallClock(void);
-static void InitTimeBasedEvents(void)
+void InitTimeBasedEvents(void)
{
FlagSet(FLAG_SYS_CLOCK_SET);
RtcCalcLocalTime();
diff --git a/src/engine/link.c b/src/engine/link.c
index 33037b817..00c084069 100644
--- a/src/engine/link.c
+++ b/src/engine/link.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "cable_club.h"
#include "link.h"
#include "battle.h"
#include "berry.h"
@@ -12,6 +13,7 @@
#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
+#include "string_util.h"
#include "strings2.h"
#include "task.h"
#include "text.h"
@@ -66,7 +68,7 @@ u32 sub_8007E40(void);
static void SetBlockReceivedFlag(u8);
static u16 LinkTestCalcBlockChecksum(void *, u16);
static void PrintHexDigit(u8, u8, u8);
-static void PrintHex(u32, u8, u8, u8);
+void PrintHex(u32, u8, u8, u8);
static void LinkCB_RequestPlayerDataExchange(void);
static void Task_PrintTestData(u8);
bool8 sub_8008224(void);
@@ -79,7 +81,7 @@ static void sub_80084C8(void);
static void sub_80084F4(void);
static void CheckErrorStatus(void);
-static void CB2_PrintErrorMessage(void);
+void CB2_PrintErrorMessage(void);
static u8 IsSioMultiMaster(void);
static void DisableSerial(void);
static void EnableSerial(void);
@@ -145,6 +147,9 @@ void (*gLinkCallback)(void);
struct LinkPlayer gSavedLinkPlayers[MAX_LINK_PLAYERS];
u8 gShouldAdvanceLinkState;
u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS];
+#if DEBUG
+u8 gUnknown_Debug_30030E0;
+#endif
u8 gBlockRequestType;
u8 gLastSendQueueCount;
struct Link gLink;
@@ -156,11 +161,11 @@ u8 deUnkValue1;
u8 deUnkValue2;
#endif
-EWRAM_DATA bool8 gLinkTestDebugValuesEnabled = {0};
-EWRAM_DATA bool8 gLinkTestDummyBool = {0};
-EWRAM_DATA u32 gFiller_20238B8 = {0};
-EWRAM_DATA u32 dword_20238BC = {0};
-EWRAM_DATA bool8 gLinkOpen = {0};
+EWRAM_DATA bool8 gLinkTestDebugValuesEnabled = 0;
+EWRAM_DATA bool8 gLinkTestDummyBool = 0;
+EWRAM_DATA u32 gFiller_20238B8 = 0;
+EWRAM_DATA u32 dword_20238BC = 0;
+EWRAM_DATA bool8 gLinkOpen = 0;
static const u16 sLinkTestDigitPalette[] = INCBIN_U16("graphics/interface/link_test_digits.gbapal");
static const u32 sLinkTestDigitTiles[] = INCBIN_U32("graphics/interface/link_test_digits.4bpp");
@@ -189,9 +194,19 @@ const struct BlockRequest sBlockRequestLookupTable[5] =
static const u8 sTestString[] = _("テストな");
-ALIGNED(4) static const u8 sMagic[] = "GameFreak inc.";
+// TODO: fix the alignment here
+
+ALIGNED(4) const u8 sMagic[] = "GameFreak inc.";
-ALIGNED(4) static const u8 sEmptyString[] = _("");
+#if DEBUG
+const u8 sEmptyString[] = _(" ");
+#else
+ALIGNED(4) const u8 sEmptyString[] = _("");
+#endif
+
+#if DEBUG
+const u8 linkDebugFillerPleaseRemove[2] = {0};
+#endif
void Task_DestroySelf(u8 taskId)
{
@@ -543,6 +558,9 @@ static void ProcessRecvCmds(u8 unusedParam)
else
{
SetBlockReceivedFlag(i);
+#if DEBUG
+ debug_sub_808B838(i);
+#endif
}
}
break;
@@ -952,7 +970,7 @@ static void PrintHexDigit(u8 tileNum, u8 x, u8 y)
tilemap[(32 * y) + x] = (gLinkTestBGInfo.paletteNum << 12) | (tileNum + 1);
}
-static void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits)
+void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits)
{
u8 buffer[16];
s32 i;
@@ -970,6 +988,143 @@ static void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits)
}
}
+#if DEBUG
+
+EWRAM_DATA u16 *debugCharacterBase = NULL;
+EWRAM_DATA void *unk_20238C8 = NULL;
+EWRAM_DATA u16 (*debugTileMap)[] = NULL;
+EWRAM_DATA u32 unk_20238D0 = 0;
+
+void debug_sub_8008218(u16 *buffer, void *arg1, u16 (*arg2)[], u32 arg3)
+{
+ CpuSet(sLinkTestDigitTiles, buffer, 272);
+ debugCharacterBase = buffer;
+ unk_20238C8 = arg1;
+ debugTileMap = arg2;
+ unk_20238D0 = arg3;
+}
+
+#ifdef NONMATCHING
+void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0)
+{
+ u32 buffer[8];
+ u32 *ptr;
+
+ u16 *dest;
+
+ int i;
+
+ if (unk_20238D0 != sp0)
+ return;
+
+ r3 = max(r3, 8);
+
+ ptr = &buffer[0];
+ dest = &(*debugTileMap)[left + top * 32];
+
+ for (i = r3; i != 0; i--)
+ {
+ *(ptr++) = value & 0xF;
+ value = value >> 4;
+ }
+
+ ptr = &buffer[8 - r3];
+ for (i = r3; i != 0; i--)
+ {
+ int charOffset = (((uintptr_t) debugCharacterBase) - ((uintptr_t) unk_20238C8)) / 32;
+ *dest = *ptr + charOffset + 1;
+ ptr--;
+ dest++;
+ }
+}
+#else
+__attribute__((naked))
+void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add sp, sp, #0xffffffe0\n"
+ " add r5, r0, #0\n"
+ " add r6, r1, #0\n"
+ " add r4, r3, #0\n"
+ " ldr r0, [sp, #0x38]\n"
+ " ldr r1, ._347 @ unk_20238D0\n"
+ " ldr r1, [r1]\n"
+ " cmp r1, r0\n"
+ " bne ._345 @cond_branch\n"
+ " cmp r4, #0x8\n"
+ " ble ._342 @cond_branch\n"
+ " mov r4, #0x8\n"
+ "._342:\n"
+ " mov r3, sp\n"
+ " ldr r0, ._347 + 4 @ debugTileMap\n"
+ " mov r8, r0\n"
+ " lsl r2, r2, #0x6\n"
+ " mov ip, r2\n"
+ " lsl r6, r6, #0x1\n"
+ " lsl r7, r4, #0x2\n"
+ " cmp r4, #0\n"
+ " ble ._343 @cond_branch\n"
+ " mov r1, #0xf\n"
+ " add r2, r4, #0\n"
+ "._344:\n"
+ " add r0, r5, #0\n"
+ " and r0, r0, r1\n"
+ " stmia r3!, {r0}\n"
+ " lsr r5, r5, #0x4\n"
+ " sub r2, r2, #0x1\n"
+ " cmp r2, #0\n"
+ " bne ._344 @cond_branch\n"
+ "._343:\n"
+ " mov r1, r8\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, ip\n"
+ " add r5, r0, r6\n"
+ " mov r1, sp\n"
+ " add r0, r1, r7\n"
+ " sub r3, r0, #4\n"
+ " cmp r4, #0\n"
+ " ble ._345 @cond_branch\n"
+ " ldr r7, ._347 + 8 @ debugCharacterBase\n"
+ " ldr r6, ._347 + 12 @ unk_20238C8\n"
+ " add r2, r4, #0\n"
+ "._346:\n"
+ " ldr r1, [r7]\n"
+ " ldr r0, [r6]\n"
+ " sub r1, r1, r0\n"
+ " lsr r1, r1, #0x5\n"
+ " ldr r0, [r3]\n"
+ " add r0, r0, r1\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r5]\n"
+ " sub r3, r3, #0x4\n"
+ " add r5, r5, #0x2\n"
+ " sub r2, r2, #0x1\n"
+ " cmp r2, #0\n"
+ " bne ._346 @cond_branch\n"
+ "._345:\n"
+ " add sp, sp, #0x20\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._348:\n"
+ " .align 2, 0\n"
+ "._347:\n"
+ " .word unk_20238D0\n"
+ " .word debugTileMap\n"
+ " .word debugCharacterBase\n"
+ " .word unk_20238C8\n"
+ "\n"
+ );
+}
+#endif
+
+#endif
+
static void LinkCB_RequestPlayerDataExchange(void)
{
// Only one request needs to be sent, so only the master sends it.
@@ -1248,14 +1403,33 @@ void CB2_LinkError(void)
SetMainCallback2(CB2_PrintErrorMessage);
}
-static void CB2_PrintErrorMessage(void)
+void CB2_PrintErrorMessage(void)
{
- u8 array[64] __attribute__((unused)); // unused
+ u8 array[32] __attribute__((unused)); // unused
+ u8 array2[32] __attribute__((unused)); // unused
switch (gMain.state)
{
case 0:
Menu_PrintTextPixelCoords(gMultiText_LinkError, 20, 56, 1);
+#if DEBUG
+ StringCopy(array, sColorCodes);
+
+ ConvertIntToHexStringN(array2, sErrorLinkStatus, STR_CONV_MODE_LEADING_ZEROS, 8);
+ StringAppend(array, array2);
+
+ StringAppend(array, sEmptyString);
+
+ ConvertIntToHexStringN(array2, sErrorLastSendQueueCount, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(array, array2);
+
+ StringAppend(array, sEmptyString);
+
+ ConvertIntToHexStringN(array2, sErrorLastRecvQueueCount, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(array, array2);
+
+ Menu_PrintText(array, 2, 15);
+#endif
break;
case 30:
case 60:
diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c
index 8fad563e6..bc14c760d 100644
--- a/src/engine/mystery_event_menu.c
+++ b/src/engine/mystery_event_menu.c
@@ -338,3 +338,463 @@ static void CB2_MysteryEventMenu(void)
BuildOamBuffer();
UpdatePaletteFade();
}
+
+#if DEBUG
+
+void debug_sub_815D1D8();
+
+__attribute__((naked))
+void debug_sub_815D04C()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._125 @ gTasks\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0\n"
+ " bne ._121 @cond_branch\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xd\n"
+ " mov r3, #0x7\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r1, ._125 + 4 @ gUnknown_Debug_842E2D0\n"
+ " mov r2, #0xa\n"
+ " ldsh r0, [r4, r2]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " ldrh r0, [r4, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x8]\n"
+ "._121:\n"
+ " ldr r2, ._125 + 8 @ gMain\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " add r6, r2, #0\n"
+ " cmp r0, #0\n"
+ " beq ._122 @cond_branch\n"
+ " ldrh r1, [r4, #0xa]\n"
+ " mov r2, #0xa\n"
+ " ldsh r0, [r4, r2]\n"
+ " cmp r0, #0\n"
+ " bne ._123 @cond_branch\n"
+ " ldr r0, ._125 + 12 @ gUnknown_Debug_842E350\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " b ._124\n"
+ "._126:\n"
+ " .align 2, 0\n"
+ "._125:\n"
+ " .word gTasks\n"
+ " .word gUnknown_Debug_842E2D0\n"
+ " .word gMain\n"
+ " .word gUnknown_Debug_842E350\n"
+ "._123:\n"
+ " sub r0, r1, #1\n"
+ "._124:\n"
+ " strh r0, [r4, #0xa]\n"
+ " ldr r0, ._130 @ gTasks\n"
+ " lsl r1, r5, #0x2\n"
+ " add r1, r1, r5\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r0\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r1, #0x8]\n"
+ "._122:\n"
+ " ldrh r1, [r6, #0x2e]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._127 @cond_branch\n"
+ " ldr r1, ._130 @ gTasks\n"
+ " lsl r2, r5, #0x2\n"
+ " add r0, r2, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r0, #0xa\n"
+ " ldsh r3, [r4, r0]\n"
+ " ldr r0, ._130 + 4 @ gUnknown_Debug_842E350\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x1\n"
+ " cmp r3, r0\n"
+ " bne ._128 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._129\n"
+ "._131:\n"
+ " .align 2, 0\n"
+ "._130:\n"
+ " .word gTasks\n"
+ " .word gUnknown_Debug_842E350\n"
+ "._128:\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " add r0, r0, #0x1\n"
+ "._129:\n"
+ " strh r0, [r4, #0xa]\n"
+ " add r0, r2, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0, #0x8]\n"
+ "._127:\n"
+ " ldrh r1, [r6, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._132 @cond_branch\n"
+ " ldr r1, ._133 @ gTasks\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r2, #0xa\n"
+ " ldsh r1, [r0, r2]\n"
+ " lsl r1, r1, #0x3\n"
+ " ldr r0, ._133 + 4 @ gUnknown_Debug_842E2D0\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, ._133 + 8 @ \n"
+ " ldr r1, [r1]\n"
+ " bl _call_via_r1\n"
+ " ldr r0, ._133 + 12 @ \n"
+ " add r1, r6, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._132:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._134:\n"
+ " .align 2, 0\n"
+ "._133:\n"
+ " .word gTasks\n"
+ " .word gUnknown_Debug_842E2D0\n"
+ " .word +0x2004000\n"
+ " .word 0x43c\n"
+ "\n"
+ );
+}
+
+void debug_sub_815D15C(void)
+{
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ SetVBlankCallback(VBlankCB);
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Menu_EraseScreen();
+ REG_DISPCNT = DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0;
+ REG_BLDCNT = 0;
+
+ CreateTask(Task_DestroySelf, 0);
+ StopMapMusic();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ FillPalette(0, 0, 2);
+ SetMainCallback2(debug_sub_815D1D8);
+}
+
+__attribute__((naked))
+void debug_sub_815D1D8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " ldr r1, ._139 @ gMain\n"
+ " ldr r2, ._139 + 4 @ 0x43c\n"
+ " add r0, r1, r2\n"
+ " ldrb r0, [r0]\n"
+ " add r4, r1, #0\n"
+ " cmp r0, #0xb\n"
+ " bls ._137 @cond_branch\n"
+ " b ._196\n"
+ "._137:\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._139 + 8 @ \n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._140:\n"
+ " .align 2, 0\n"
+ "._139:\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ " .word ._141\n"
+ "._141:\n"
+ " .word ._142\n"
+ " .word ._143\n"
+ " .word ._144\n"
+ " .word ._145\n"
+ " .word ._146\n"
+ " .word ._196\n"
+ " .word ._148\n"
+ " .word ._149\n"
+ " .word ._150\n"
+ " .word ._151\n"
+ " .word ._152\n"
+ " .word ._153\n"
+ "._142:\n"
+ " mov r0, #0x3\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x1b\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x10\n"
+ " mov r3, #0x0\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r1, ._155 @ gMain\n"
+ " ldr r0, ._155 + 4 @ 0x43c\n"
+ " add r1, r1, r0\n"
+ " b ._189\n"
+ "._156:\n"
+ " .align 2, 0\n"
+ "._155:\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._143:\n"
+ " ldr r0, ._161 @ gPaletteFade\n"
+ " ldrb r1, [r0, #0x7]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._157 @cond_branch\n"
+ " b ._196\n"
+ "._157:\n"
+ " ldrh r1, [r4, #0x2c]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._159 @cond_branch\n"
+ " ldr r1, ._161 + 4 @ gUnknown_Debug_30030E0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ "._159:\n"
+ " ldr r0, ._161 + 8 @ Str_843DA70\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrintMessage\n"
+ " ldr r2, ._161 + 12 @ 0x43c\n"
+ " add r1, r4, r2\n"
+ " b ._189\n"
+ "._162:\n"
+ " .align 2, 0\n"
+ "._161:\n"
+ " .word gPaletteFade\n"
+ " .word gUnknown_Debug_30030E0\n"
+ " .word Str_843DA70\n"
+ " .word 0x43c\n"
+ "._144:\n"
+ " bl Menu_UpdateWindowText\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._163 @cond_branch\n"
+ " b ._196\n"
+ "._163:\n"
+ " ldr r1, ._166 @ gMain\n"
+ " ldr r0, ._166 + 4 @ 0x43c\n"
+ " add r1, r1, r0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r1, ._166 + 8 @ gLinkType\n"
+ " ldr r2, ._166 + 12 @ 0x5501\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " bl OpenLink\n"
+ " b ._196\n"
+ "._167:\n"
+ " .align 2, 0\n"
+ "._166:\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ " .word gLinkType\n"
+ " .word 0x5501\n"
+ "._145:\n"
+ " ldr r0, ._171 @ gReceivedRemoteLinkPlayers\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._168 @cond_branch\n"
+ " b ._196\n"
+ "._168:\n"
+ " ldr r1, ._171 + 4 @ 0x43c\n"
+ " add r0, r4, r1\n"
+ " ldrb r1, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " strb r1, [r0]\n"
+ " ldr r0, ._171 + 8 @ Str_843DA84\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrintMessage\n"
+ " b ._196\n"
+ "._172:\n"
+ " .align 2, 0\n"
+ "._171:\n"
+ " .word gReceivedRemoteLinkPlayers\n"
+ " .word 0x43c\n"
+ " .word Str_843DA84\n"
+ "._146:\n"
+ " bl Menu_UpdateWindowText\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._173 @cond_branch\n"
+ " b ._196\n"
+ "._173:\n"
+ " ldr r0, ._176 @ debug_sub_815D04C\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " ldr r1, ._176 + 4 @ gMain\n"
+ " ldr r2, ._176 + 8 @ 0x43c\n"
+ " add r1, r1, r2\n"
+ " b ._189\n"
+ "._177:\n"
+ " .align 2, 0\n"
+ "._176:\n"
+ " .word debug_sub_815D04C+1\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._148:\n"
+ " ldr r0, ._179 @ Str_843DA98\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrintMessage\n"
+ " ldr r1, ._179 + 4 @ 0x2004000\n"
+ " ldr r2, ._179 + 8 @ 0x2004\n"
+ " mov r0, #0x0\n"
+ " bl SendBlock\n"
+ " ldr r1, ._179 + 12 @ gMain\n"
+ " ldr r0, ._179 + 16 @ 0x43c\n"
+ " add r1, r1, r0\n"
+ " b ._189\n"
+ "._180:\n"
+ " .align 2, 0\n"
+ "._179:\n"
+ " .word Str_843DA98\n"
+ " .word 0x2004000\n"
+ " .word 0x2004\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._149:\n"
+ " bl Menu_UpdateWindowText\n"
+ " bl IsLinkTaskFinished\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._196 @cond_branch\n"
+ " ldr r1, ._183 @ gMain\n"
+ " ldr r2, ._183 + 4 @ 0x43c\n"
+ " add r1, r1, r2\n"
+ " b ._189\n"
+ "._184:\n"
+ " .align 2, 0\n"
+ "._183:\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._150:\n"
+ " bl sub_800832C\n"
+ " ldr r1, ._186 @ gMain\n"
+ " ldr r0, ._186 + 4 @ 0x43c\n"
+ " add r1, r1, r0\n"
+ " b ._189\n"
+ "._187:\n"
+ " .align 2, 0\n"
+ "._186:\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._151:\n"
+ " ldr r0, ._190 @ gReceivedRemoteLinkPlayers\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._196 @cond_branch\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x1a\n"
+ " mov r3, #0x12\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r0, ._190 + 4 @ Str_843DAA3\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._190 + 8 @ gMain\n"
+ " ldr r2, ._190 + 12 @ 0x43c\n"
+ " add r1, r1, r2\n"
+ " b ._189\n"
+ "._191:\n"
+ " .align 2, 0\n"
+ "._190:\n"
+ " .word gReceivedRemoteLinkPlayers\n"
+ " .word Str_843DAA3\n"
+ " .word gMain\n"
+ " .word 0x43c\n"
+ "._152:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._196 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " mov r1, #0x0\n"
+ " str r1, [sp]\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x10\n"
+ " bl BeginNormalPaletteFade\n"
+ " ldr r0, ._194 @ 0x43c\n"
+ " add r1, r4, r0\n"
+ "._189:\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b ._196\n"
+ "._195:\n"
+ " .align 2, 0\n"
+ "._194:\n"
+ " .word 0x43c\n"
+ "._153:\n"
+ " ldr r0, ._197 @ gPaletteFade\n"
+ " ldrb r1, [r0, #0x7]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._196 @cond_branch\n"
+ " ldr r0, ._197 + 4 @ CB2_InitTitleScreen\n"
+ " bl SetMainCallback2\n"
+ "._196:\n"
+ " bl RunTasks\n"
+ " bl AnimateSprites\n"
+ " bl BuildOamBuffer\n"
+ " bl UpdatePaletteFade\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._198:\n"
+ " .align 2, 0\n"
+ "._197:\n"
+ " .word gPaletteFade\n"
+ " .word CB2_InitTitleScreen+1\n"
+ "\n"
+ );
+}
+
+#endif
diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c
index ce4afe922..8b67f39a5 100644
--- a/src/engine/reset_rtc_screen.c
+++ b/src/engine/reset_rtc_screen.c
@@ -147,6 +147,13 @@ const struct SpriteTemplate gSpriteTemplate_83764E8 =
const u8 gUnknown_08376500[] = _(" : ");
+#if DEBUG
+const u8 gUnknown_Debug_0839AE94[] = _("にっすう");
+const u8 gUnknown_Debug_0839AE99[] = _("じかん");
+const u8 gUnknown_Debug_0839AE9D[] = _("ゲームない じかん");
+const u8 gUnknown_Debug_0839AEA7[] = _("RTC じかん");
+#endif
+
void SpriteCB_ResetRtcCusor0(struct Sprite *sprite)
{
int state = gTasks[sprite->data[0]].data[2];
@@ -587,3 +594,319 @@ void Task_ResetRtcScreen(u8 taskId)
}
}
}
+
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_806F8F8(void)
+{
+ asm("\
+ push {lr}\n\
+ ldr r0, ._131 @ CB2_InitResetRtcScreen\n\
+ bl SetMainCallback2\n\
+ pop {r0}\n\
+ bx r0\n\
+._132:\n\
+ .align 2, 0\n\
+._131:\n\
+ .word CB2_InitResetRtcScreen+1");
+}
+
+__attribute__((naked))
+void debug_sub_806F908(u8 a)
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r5, r0, #0x18\n\
+ lsl r0, r5, #0x2\n\
+ add r0, r0, r5\n\
+ lsl r0, r0, #0x3\n\
+ ldr r2, ._136 @ gTasks\n\
+ add r4, r0, r2\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r4, r1]\n\
+ cmp r0, #0\n\
+ beq ._133 @cond_branch\n\
+ cmp r0, #0x1\n\
+ beq ._134 @cond_branch\n\
+ b ._141\n\
+._137:\n\
+ .align 2, 0\n\
+._136:\n\
+ .word gTasks+0x8\n\
+._133:\n\
+ ldr r0, ._139 @ Task_ResetRtc_0\n\
+ mov r1, #0x50\n\
+ bl CreateTask\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ strh r0, [r4, #0x2]\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4]\n\
+ b ._141\n\
+._140:\n\
+ .align 2, 0\n\
+._139:\n\
+ .word Task_ResetRtc_0+1\n\
+._134:\n\
+ sub r2, r2, #0x8\n\
+ mov r0, #0x2\n\
+ ldsh r1, [r4, r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x3\n\
+ add r2, r0, r2\n\
+ mov r1, #0x8\n\
+ ldsh r0, [r2, r1]\n\
+ cmp r0, #0\n\
+ beq ._141 @cond_branch\n\
+ mov r1, #0xa\n\
+ ldsh r0, [r2, r1]\n\
+ cmp r0, #0x1\n\
+ bne ._142 @cond_branch\n\
+ ldr r3, ._143 @ gLocalTime\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r3, r1]\n\
+ mov r1, #0x2\n\
+ ldsb r1, [r3, r1]\n\
+ mov r2, #0x3\n\
+ ldsb r2, [r3, r2]\n\
+ ldrb r3, [r3, #0x4]\n\
+ lsl r3, r3, #0x18\n\
+ asr r3, r3, #0x18\n\
+ bl RtcCalcLocalTimeOffset\n\
+._142:\n\
+ ldrb r0, [r4, #0x2]\n\
+ bl DestroyTask\n\
+ bl Menu_EraseScreen\n\
+ bl ScriptContext2_Disable\n\
+ add r0, r5, #0\n\
+ bl DestroyTask\n\
+._141:\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._144:\n\
+ .align 2, 0\n\
+._143:\n\
+ .word gLocalTime");
+}
+
+__attribute__((naked))
+void debug_sub_806F99C()
+{
+ asm("\
+ push {lr}\n\
+ bl RtcCalcLocalTime\n\
+ ldr r0, ._145 @ debug_sub_806F908\n\
+ mov r1, #0x50\n\
+ bl CreateTask\n\
+ bl ScriptContext2_Enable\n\
+ pop {r0}\n\
+ bx r0\n\
+._146:\n\
+ .align 2, 0\n\
+._145:\n\
+ .word debug_sub_806F908+1");
+}
+
+__attribute__((naked))
+void debug_sub_806F9B8()
+{
+ asm("\
+ push {lr}\n\
+ ldr r2, ._147 @ gLocalTime\n\
+ ldr r0, ._147 + 4 @ gSaveBlock2\n\
+ add r0, r0, #0xa0\n\
+ ldr r1, [r0, #0x4]\n\
+ ldr r0, [r0]\n\
+ str r0, [r2]\n\
+ str r1, [r2, #0x4]\n\
+ ldr r0, ._147 + 8 @ debug_sub_806F908\n\
+ mov r1, #0x50\n\
+ bl CreateTask\n\
+ bl ScriptContext2_Enable\n\
+ pop {r0}\n\
+ bx r0\n\
+._148:\n\
+ .align 2, 0\n\
+._147:\n\
+ .word gLocalTime\n\
+ .word gSaveBlock2\n\
+ .word debug_sub_806F908+1");
+}
+
+__attribute__((naked))
+void debug_sub_806F9E4()
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, sl\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5, r6, r7}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ lsl r0, r7, #0x2\n\
+ add r0, r0, r7\n\
+ lsl r0, r0, #0x3\n\
+ ldr r1, ._153 @ gTasks\n\
+ add r5, r0, r1\n\
+ ldr r6, ._153 + 4 @ gStringVar4\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r5, r1]\n\
+ cmp r0, #0x1\n\
+ beq ._149 @cond_branch\n\
+ cmp r0, #0x1\n\
+ bgt ._150 @cond_branch\n\
+ cmp r0, #0\n\
+ beq ._151 @cond_branch\n\
+ b ._165\n\
+._154:\n\
+ .align 2, 0\n\
+._153:\n\
+ .word gTasks+0x8\n\
+ .word gStringVar4\n\
+._150:\n\
+ cmp r0, #0x2\n\
+ beq ._155 @cond_branch\n\
+ b ._165\n\
+._149:\n\
+ mov r0, #0x0\n\
+ mov r1, #0x9\n\
+ mov r2, #0x1d\n\
+ mov r3, #0x13\n\
+ bl Menu_DrawStdWindowFrame\n\
+ add r4, r6, #0\n\
+ add r4, r4, #0x50\n\
+ bl RtcGetErrorStatus\n\
+ add r1, r0, #0\n\
+ lsl r1, r1, #0x10\n\
+ lsr r1, r1, #0x10\n\
+ add r0, r4, #0\n\
+ mov r2, #0x2\n\
+ mov r3, #0x4\n\
+ bl ConvertIntToHexStringN\n\
+ add r0, r4, #0\n\
+ mov r1, #0x2\n\
+ mov r2, #0xa\n\
+ bl Menu_PrintText\n\
+ ldr r0, ._158 @ gUnknown_Debug_0839AE94\n\
+ mov r1, #0xc\n\
+ mov r2, #0xc\n\
+ bl Menu_PrintText\n\
+ ldr r0, ._158 + 4 @ gUnknown_Debug_0839AE99\n\
+ mov r1, #0x14\n\
+ mov r2, #0xc\n\
+ bl Menu_PrintText\n\
+ ldr r0, ._158 + 8 @ gUnknown_Debug_0839AEA7\n\
+ mov r1, #0x1\n\
+ mov r2, #0xe\n\
+ bl Menu_PrintText\n\
+ ldr r0, ._158 + 12 @ gUnknown_Debug_0839AE9D\n\
+ mov r1, #0x1\n\
+ mov r2, #0x10\n\
+ bl Menu_PrintText\n\
+._151:\n\
+ ldrh r0, [r5]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r5]\n\
+ b ._165\n\
+._159:\n\
+ .align 2, 0\n\
+._158:\n\
+ .word gUnknown_Debug_0839AE94\n\
+ .word gUnknown_Debug_0839AE99\n\
+ .word gUnknown_Debug_0839AEA7\n\
+ .word gUnknown_Debug_0839AE9D\n\
+._155:\n\
+ bl RtcCalcLocalTime\n\
+ add r0, r6, #0\n\
+ bl FormatHexRtcTime\n\
+ mov r2, #0x14\n\
+ add r2, r2, r6\n\
+ mov r9, r2\n\
+ mov r0, r9\n\
+ bl debug_sub_8009894\n\
+ mov r0, #0x28\n\
+ add r0, r0, r6\n\
+ mov sl, r0\n\
+ ldr r4, ._163 @ gLocalTime\n\
+ mov r1, #0x2\n\
+ ldsb r1, [r4, r1]\n\
+ mov r2, #0x3\n\
+ ldsb r2, [r4, r2]\n\
+ mov r3, #0x4\n\
+ ldsb r3, [r4, r3]\n\
+ bl FormatDecimalTime\n\
+ mov r1, #0x3c\n\
+ add r1, r1, r6\n\
+ mov r8, r1\n\
+ mov r2, #0x0\n\
+ ldsh r1, [r4, r2]\n\
+ mov r0, r8\n\
+ mov r2, #0x1\n\
+ mov r3, #0x4\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r0, ._163 + 4 @ gSaveBlock2\n\
+ ldrb r0, [r0, #0x12]\n\
+ cmp r0, #0\n\
+ bne ._160 @cond_branch\n\
+ add r0, r6, #0\n\
+ mov r1, #0x14\n\
+ mov r2, #0xe\n\
+ bl Menu_PrintText\n\
+ mov r0, r9\n\
+ mov r1, #0xc\n\
+ mov r2, #0xe\n\
+ bl Menu_PrintText\n\
+ mov r0, sl\n\
+ mov r1, #0x14\n\
+ mov r2, #0x10\n\
+ bl Menu_PrintText\n\
+ mov r0, r8\n\
+ mov r1, #0xc\n\
+ mov r2, #0x10\n\
+ bl Menu_PrintText\n\
+._160:\n\
+ ldrh r1, [r5, #0x2]\n\
+ mov r2, #0x2\n\
+ ldsh r0, [r5, r2]\n\
+ cmp r0, #0x13\n\
+ ble ._161 @cond_branch\n\
+ add r0, r1, #1\n\
+ strh r0, [r5, #0x2]\n\
+ b ._165\n\
+._164:\n\
+ .align 2, 0\n\
+._163:\n\
+ .word gLocalTime\n\
+ .word gSaveBlock2\n\
+._161:\n\
+ ldr r0, ._166 @ gMain\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._165 @cond_branch\n\
+ bl Menu_EraseScreen\n\
+ add r0, r7, #0\n\
+ bl DestroyTask\n\
+ bl ScriptContext2_Disable\n\
+._165:\n\
+ pop {r3, r4, r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov sl, r5\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._167:\n\
+ .align 2, 0\n\
+._166:\n\
+ .word gMain");
+}
+
+#endif \ No newline at end of file
diff --git a/src/engine/rtc.c b/src/engine/rtc.c
index d73f943d2..5462298ed 100644
--- a/src/engine/rtc.c
+++ b/src/engine/rtc.c
@@ -268,6 +268,28 @@ void FormatHexDate(u8 *dest, s32 year, s32 month, s32 day)
*dest = EOS;
}
+#if DEBUG
+
+void debug_sub_800987C(u8 *dest)
+{
+ FormatHexDate(dest, sRtc.year, sRtc.month, sRtc.day);
+}
+
+void debug_sub_8009894(u8 *dest)
+{
+ u16 dayCount;
+
+ dayCount = RtcGetDayCount(&sRtc);
+ ConvertIntToDecimalStringN(dest, dayCount, STR_CONV_MODE_RIGHT_ALIGN, 4);
+}
+
+void debug_sub_80098B8(u8 *dest)
+{
+ ConvertIntToHexStringN(dest, sRtc.status, STR_CONV_MODE_LEADING_ZEROS, 2);
+}
+
+#endif
+
void RtcCalcTimeDifference(struct SiiRtcInfo *rtc, struct Time *result, struct Time *t)
{
u16 days = RtcGetDayCount(rtc);
@@ -347,3 +369,10 @@ u32 RtcGetMinuteCount()
RtcGetInfo(&sRtc);
return (24 * 60) * RtcGetDayCount(&sRtc) + 60 * sRtc.hour + sRtc.minute;
}
+
+#if DEBUG
+void debug_sub_8009A60()
+{
+ RtcGetRawInfo(&sRtc);
+}
+#endif
diff --git a/src/engine/save.c b/src/engine/save.c
index 250b29a87..0b7a3dd79 100644
--- a/src/engine/save.c
+++ b/src/engine/save.c
@@ -663,6 +663,35 @@ static u16 CalculateChecksum(void *data, u16 size)
return ((checksum >> 16) + checksum);
}
+#if DEBUG
+void sub_813B79C(void)
+{
+ struct SaveSector *sbSector;
+ struct SaveSector *hofSector;
+ const struct SaveBlockChunk *sbChunks;
+ const struct SaveBlockChunk *hofChunks;
+ u16 i;
+
+ sbSector = eSaveSection;
+ sbChunks = sSaveBlockChunks;
+ for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT * 2; i++)
+ {
+ DoReadFlashWholeSection(i, sbSector);
+ sbSector->checksum = CalculateChecksum(sbSector, sbChunks[sbSector->id].size);
+ ProgramFlashSectorAndVerify(i, sbSector->data);
+ }
+
+ hofSector = eSaveSection;
+ hofChunks = sHallOfFameChunks;
+ for (i = 0; i < NUM_HALL_OF_FAME_SECTORS; i++)
+ {
+ DoReadFlashWholeSection(HALL_OF_FAME_SECTOR + i, hofSector);
+ hofSector->id = CalculateChecksum(hofSector, hofChunks[i].size); // why id?
+ ProgramFlashSectorAndVerify(HALL_OF_FAME_SECTOR + i, hofSector->data);
+ }
+}
+#endif
+
u8 Save_WriteDataInternal(u8 saveType)
{
u8 i;
@@ -706,13 +735,21 @@ u8 Save_WriteDataInternal(u8 saveType)
return 0;
}
+#if DEBUG
+extern u32 gUnknown_Debug_03004BD0;
+#endif
+
u8 Save_WriteData(u8 saveType) // TrySave
{
if (gFlashMemoryPresent != TRUE)
return SAVE_STATUS_ERROR;
Save_WriteDataInternal(saveType);
- if (!gDamagedSaveSectors)
+ if (!gDamagedSaveSectors
+#if DEBUG
+ && gUnknown_Debug_03004BD0 == 0
+#endif
+ )
return SAVE_STATUS_OK;
DoSaveFailedScreen(saveType);
@@ -815,7 +852,7 @@ u8 Save_LoadGameData(u8 saveType)
return result;
}
-static const u8 sUnusedFlashSectors[] = { 30, 31 };
+const u8 sUnusedFlashSectors[] = { 30, 31 };
bool8 unref_sub_8125F4C(struct UnkSaveSection *a1)
{
diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c
index 74a1e9612..49cf166d4 100644
--- a/src/engine/save_failed_screen.c
+++ b/src/engine/save_failed_screen.c
@@ -61,16 +61,18 @@ static const u8 sClockFrames[8][3] =
static const u8 gSaveFailedClockPal[] = INCBIN_U8("graphics/misc/clock_small.gbapal");
static const u8 gSaveFailedClockGfx[] = INCBIN_U8("graphics/misc/clock_small.4bpp.lz");
+#define static
+
static void VBlankCB(void);
static void CB2_SaveFailedScreen(void);
static void CB2_WipeSave(void);
-static void CB2_GameplayCannotBeContinued(void);
+/*static*/ void CB2_GameplayCannotBeContinued(void);
static void CB2_FadeAndReturnToTitleScreen(void);
static void CB2_ReturnToTitleScreen(void);
static void VBlankCB_UpdateClockGraphics(void);
static bool8 VerifySectorWipe(u16 sector);
static bool8 WipeSector(u16 sector);
-static bool8 WipeSectors(u32 sectorBits);
+/*static*/ bool8 WipeSectors(u32 sectorBits);
void DoSaveFailedScreen(u8 saveType)
{
@@ -148,6 +150,151 @@ static void CB2_SaveFailedScreen(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void CB2_WipeSave()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r4, #0x0\n"
+ " ldr r0, ._20 @ gSaveFailedClockInfo\n"
+ " mov r2, #0x1\n"
+ " strh r2, [r0]\n"
+ " ldr r0, ._20 + 4 @ gUnknown_Debug_03004BD0\n"
+ " ldr r0, [r0]\n"
+ " ldr r1, ._20 + 8 @ gDamagedSaveSectors\n"
+ " cmp r0, #0\n"
+ " beq ._12 @cond_branch\n"
+ " str r2, [r1]\n"
+ "._12:\n"
+ " ldr r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._16 @cond_branch\n"
+ " add r5, r1, #0\n"
+ "._17:\n"
+ " ldr r0, [r5]\n"
+ " bl WipeSectors\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._14 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._20 + 12 @ gSystemText_CheckCompleteSaveAttempt\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._20 + 16 @ gSaveFailedType\n"
+ " ldrb r0, [r0]\n"
+ " bl Save_WriteDataInternal\n"
+ " ldr r0, [r5]\n"
+ " cmp r0, #0\n"
+ " beq ._15 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._20 + 20 @ gSystemText_SaveFailedBackupCheck\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ "._15:\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, [r5]\n"
+ " cmp r0, #0\n"
+ " beq ._16 @cond_branch\n"
+ " cmp r4, #0x2\n"
+ " bls ._17 @cond_branch\n"
+ "._16:\n"
+ " cmp r4, #0x3\n"
+ " bne ._18 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._20 + 24 @ gSystemText_BackupDamagedGameContinue\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._20 + 28 @ CB2_FadeAndReturnToTitleScreen\n"
+ " bl SetMainCallback2\n"
+ " b ._23\n"
+ "._21:\n"
+ " .align 2, 0\n"
+ "._20:\n"
+ " .word gSaveFailedClockInfo\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ " .word gDamagedSaveSectors\n"
+ " .word gSystemText_CheckCompleteSaveAttempt\n"
+ " .word gSaveFailedType\n"
+ " .word gSystemText_SaveFailedBackupCheck\n"
+ " .word gSystemText_BackupDamagedGameContinue\n"
+ " .word CB2_FadeAndReturnToTitleScreen+1\n"
+ "._18:\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._24 @ gGameContinueCallback\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._22 @cond_branch\n"
+ " ldr r0, ._24 + 4 @ gSystemText_SaveCompletedGameEnd\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " b ._23\n"
+ "._25:\n"
+ " .align 2, 0\n"
+ "._24:\n"
+ " .word gGameContinueCallback\n"
+ " .word gSystemText_SaveCompletedGameEnd\n"
+ "._14:\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._27 @ gSystemText_BackupDamagedGameContinue\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._27 + 4 @ CB2_GameplayCannotBeContinued\n"
+ " bl SetMainCallback2\n"
+ " b ._26\n"
+ "._28:\n"
+ " .align 2, 0\n"
+ "._27:\n"
+ " .word gSystemText_BackupDamagedGameContinue\n"
+ " .word CB2_GameplayCannotBeContinued+1\n"
+ "._22:\n"
+ " ldr r0, ._29 @ gSystemText_SaveCompletedPressA\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ "._23:\n"
+ " ldr r0, ._29 + 4 @ CB2_FadeAndReturnToTitleScreen\n"
+ " bl SetMainCallback2\n"
+ "._26:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._30:\n"
+ " .align 2, 0\n"
+ "._29:\n"
+ " .word gSystemText_SaveCompletedPressA\n"
+ " .word CB2_FadeAndReturnToTitleScreen+1\n"
+ "\n"
+ );
+}
+#else
static void CB2_WipeSave(void)
{
u8 wipeTries = 0;
@@ -198,8 +345,9 @@ static void CB2_WipeSave(void)
SetMainCallback2(CB2_FadeAndReturnToTitleScreen);
}
+#endif
-static void CB2_GameplayCannotBeContinued(void)
+/*static*/ void CB2_GameplayCannotBeContinued(void)
{
gSaveFailedClockInfo[0] = FALSE;
@@ -264,6 +412,41 @@ static void VBlankCB_UpdateClockGraphics(void)
gSaveFailedClockInfo[1]--;
}
+#if DEBUG
+__attribute__((naked))
+bool8 VerifySectorWipe(u16 sector)
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " ldr r2, ._50 @ \n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x5\n"
+ " mov r1, #0x0\n"
+ " bl ReadFlash\n"
+ " mov r0, #0x0\n"
+ " ldr r1, ._50 + 4 @ \n"
+ "._49:\n"
+ " add r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, r1\n"
+ " bls ._49 @cond_branch\n"
+ " ldr r0, ._50 + 8 @ \n"
+ " ldrb r0, [r0]\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._51:\n"
+ " .align 2, 0\n"
+ "._50:\n"
+ " .word +0x2000000\n"
+ " .word 0x3ff\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ "\n"
+ );
+}
+#else
static bool8 VerifySectorWipe(u16 sector)
{
u32 *ptr = (u32 *)&gSharedMem;
@@ -277,6 +460,7 @@ static bool8 VerifySectorWipe(u16 sector)
return FALSE;
}
+#endif
static bool8 WipeSector(u16 sector)
{
@@ -294,7 +478,7 @@ static bool8 WipeSector(u16 sector)
return failed;
}
-static bool8 WipeSectors(u32 sectorBits)
+/*static*/ bool8 WipeSectors(u32 sectorBits)
{
u16 i;
diff --git a/src/engine/sprite.c b/src/engine/sprite.c
index cf35e12a3..a9d84e01a 100644
--- a/src/engine/sprite.c
+++ b/src/engine/sprite.c
@@ -1,8 +1,10 @@
#include "global.h"
+#include "debug.h"
#include "sprite.h"
#include "main.h"
#include "menu_cursor.h"
#include "palette.h"
+#include "sprite.h"
#define MAX_SPRITE_COPY_REQUESTS 64
@@ -822,6 +824,12 @@ static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct Spr
gSpriteCopyRequests[gSpriteCopyRequestCount].size = images[index].size;
gSpriteCopyRequestCount++;
}
+#if DEBUG
+ else
+ {
+ Crash(sDmaOverErrorMsg);
+ }
+#endif
}
void RequestSpriteCopy(const void *src, u8 *dest, u16 size)
@@ -833,6 +841,12 @@ void RequestSpriteCopy(const void *src, u8 *dest, u16 size)
gSpriteCopyRequests[gSpriteCopyRequestCount].size = size;
gSpriteCopyRequestCount++;
}
+#if DEBUG
+ else
+ {
+ Crash(sDmaOverErrorMsg);
+ }
+#endif
}
// these two functions are unused.
diff --git a/src/engine/task.c b/src/engine/task.c
index 7bd2b5937..3e8a5588c 100644
--- a/src/engine/task.c
+++ b/src/engine/task.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "debug.h"
#include "task.h"
#define ACTIVE_SENTINEL 0x10
@@ -11,8 +12,9 @@ struct Task gTasks[ACTIVE_SENTINEL];
static void InsertTask(u8 newTaskId);
static u8 FindFirstActiveTask();
-// Unused string
-const u8 sTaskOverString[] = _("TASK OVER\nタスクがオーバーしました");
+const u8 gError_NoTasksLeft[] = _(
+ "TASK OVER\n"
+ "タスクがオーバーしました");
void ResetTasks()
{
@@ -49,6 +51,10 @@ u8 CreateTask(TaskFunc func, u8 priority)
}
}
+#if DEBUG
+ Crash(gError_NoTasksLeft);
+#endif
+
return 0;
}
diff --git a/src/engine/trade.c b/src/engine/trade.c
index 4bd39c4ef..36e6fc757 100644
--- a/src/engine/trade.c
+++ b/src/engine/trade.c
@@ -4495,8 +4495,8 @@ static __attribute__((naked)) void sub_804B41C(void)
}
#endif
-static void sub_804B790(void)
// In-game trade init
+void sub_804B790(void)
{
u8 otName[11];
switch (gMain.state)
diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c
index b49628bfa..998c4697e 100644
--- a/src/engine/trainer_card.c
+++ b/src/engine/trainer_card.c
@@ -5,6 +5,7 @@
#include "field_effect.h"
#include "graphics.h"
#include "link.h"
+#include "m4a.h"
#include "main.h"
#include "menu.h"
#include "money.h"
@@ -52,7 +53,6 @@ extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0};
-extern const u8 gBadgesTiles[];
extern const u16 gUnknown_083B5F0C[];
extern const u16 gBadgesPalette[];
extern const u16 gUnknown_083B5F4C[];
@@ -63,6 +63,34 @@ const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp");
// XXX: what is this?
u8 *const ewram_ = gSharedMem;
+#if DEBUG
+const struct TrainerCard gUnknown_Debug_083E0448 =
+{
+ .gender = FEMALE,
+ .stars = 4,
+ .hasPokedex = TRUE,
+ .var_3 = TRUE,
+ .var_4 = TRUE,
+ .firstHallOfFameA = 999,
+ .firstHallOfFameB = 99,
+ .firstHallOfFameC = 99,
+ .pokedexSeen = 411,
+ .trainerId = 12345,
+ .playTimeHours = 99,
+ .playTimeMinutes = 99,
+ .linkBattleWins = 9999,
+ .linkBattleLosses = 9999,
+ .battleTowerWins = 9999,
+ .battleTowerLosses = 9999,
+ .contestsWithFriends = 999,
+ .pokeblocksWithFriends = 0xFFFF,
+ .pokemonTrades = 0xFFFF,
+ .money = 99999,
+ .var_28 = {1, 2, 3, 4},
+ .playerName = _("てすと"),
+};
+#endif
+
bool8 TrainerCard_Init(struct Task *);
bool8 TrainerCard_WaitForFadeInToFinish(struct Task *);
bool8 TrainerCard_WaitForKeys(struct Task *);
@@ -176,8 +204,15 @@ static void TrainerCard_Back_PrintPokemonTrades_Label(void);
static void TrainerCard_Back_PrintPokemonTrades(void);
void unref_sub_8094588(u16 left, u16 top);
+#if DEBUG
+static u8 gDebug_03000748;
+#endif
+
void TrainerCard_ShowPlayerCard(Callback arg1)
{
+#if DEBUG
+ gDebug_03000748 = 0;
+#endif
TrainerCard_InitScreenForPlayer(arg1);
SetMainCallback2(sub_8093174);
ewram0_2.language = GAME_LANGUAGE;
@@ -185,11 +220,41 @@ void TrainerCard_ShowPlayerCard(Callback arg1)
void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2)
{
+#if DEBUG
+ gDebug_03000748 = 0;
+#endif
TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2);
SetMainCallback2(sub_8093174);
ewram0_2.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language;
}
+#if DEBUG
+void debug_sub_80A0710(Callback callback)
+{
+ gDebug_03000748 = TRUE;
+ TrainerCard_InitScreenForPlayer(callback);
+ SetMainCallback2(sub_8093174);
+ ewram0_2.language = GAME_LANGUAGE;
+}
+
+void debug_sub_80A073C(Callback callback)
+{
+ memcpy(&gTrainerCards[0], &gUnknown_Debug_083E0448, sizeof(struct TrainerCard));
+ gDebug_03000748=TRUE;
+ TrainerCard_InitScreenForLinkPlayer(0, callback);
+ SetMainCallback2(sub_8093174);
+ ewram0_2.language = GAME_LANGUAGE;
+}
+
+void debug_sub_80A0780()
+{
+ int i;
+
+ for (i = 0; i < 4; i++)
+ memcpy(&gTrainerCards[i], &gUnknown_Debug_083E0448, sizeof(struct TrainerCard));
+}
+#endif
+
static void sub_8093174(void)
{
switch (gMain.state)
@@ -538,6 +603,19 @@ static void TrainerCard_FillFlags(void)
}
}
}
+
+#if DEBUG
+ if (gDebug_03000748 != 0)
+ {
+ ewram0_2.showHallOfFame = TRUE;
+ ewram0_2.showLinkBattleStatus = TRUE;
+ ewram0_2.showBattleTowerStatus = TRUE;
+ ewram0_2.showContestRecord = TRUE;
+ ewram0_2.showMixingRecord = TRUE;
+ ewram0_2.showTradingRecord = TRUE;
+ memset(ewram0_2.ownedBadges, TRUE, sizeof(ewram0_2.ownedBadges));
+ }
+#endif
}
void sub_80937A4()
@@ -630,6 +708,17 @@ bool8 TrainerCard_WaitForKeys(struct Task *task)
}
return TRUE;
}
+#if DEBUG
+ else if (gDebug_03000748 && gMain.newKeys & R_BUTTON)
+ {
+ ewram0_2.starCount++;
+ ewram0_2.starCount %= 5;
+ TrainerCard_LoadPalettes();
+ if (ewram0_2.backSideShown == 0)
+ TrainerCard_DrawStars();
+ }
+#endif
+
return FALSE;
}
@@ -1334,7 +1423,11 @@ static void TrainerCard_Front_PrintPokedexCount(void)
{
u8 buffer[16];
- if (!ewram0_2.showPokedexCount)
+ if (
+#if DEBUG
+ gDebug_03000748 == 0 &&
+#endif
+ !ewram0_2.showPokedexCount)
{
TrainerCard_ClearPokedexLabel();
}
diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c
index ab2a818a7..41d5ae9d1 100644
--- a/src/field/battle_tower.c
+++ b/src/field/battle_tower.c
@@ -259,7 +259,7 @@ static void SaveCurrentWinStreak(void);
static void sub_8135CFC(void);
static void CheckMonBattleTowerBanlist(u16, u16, u16, u8, u8, u16 *, u16 *, u8 *);
static void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *);
-static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer);
+void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer);
static void SetBattleTowerRecordChecksum(struct BattleTowerRecord *);
static void ClearBattleTowerRecord(struct BattleTowerRecord *);
diff --git a/src/field/berry.c b/src/field/berry.c
index 088267ad0..588807755 100644
--- a/src/field/berry.c
+++ b/src/field/berry.c
@@ -999,6 +999,66 @@ extern u16 gSpecialVar_0x8006;
static u8 CalcBerryYield(struct BerryTree *tree);
static u16 GetStageDurationByBerryType(u8 berry);
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80C2B04()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x0\n"
+ " bl sub_80B47D8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._1 @ gTasks\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " ldrh r0, [r1, #0x10]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r1, #0x10]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._2:\n"
+ " .align 2, 0\n"
+ "._1:\n"
+ " .word gTasks\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_80C2B30()
+{
+ asm(
+ " push {lr}\n"
+ " mov r0, #0x1\n"
+ " bl sub_80B47D8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " ldr r2, ._3 @ gTasks\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " add r1, r1, r2\n"
+ " ldrh r0, [r1, #0x10]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r1, #0x10]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._4:\n"
+ " .align 2, 0\n"
+ "._3:\n"
+ " .word gTasks\n"
+ "\n"
+ );
+}
+#endif
+
// unused
// this could be static, but making it so causes a compile-time warning.
void ClearEnigmaBerries(void)
@@ -1022,6 +1082,180 @@ void SetEnigmaBerry(u8 *src)
gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2;
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80C2BD0()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " ldr r3, ._11 @ gSaveBlock1\n"
+ " ldr r1, ._11 + 4 @ 0x316c\n"
+ " add r4, r3, r1\n"
+ " ldr r6, [r4]\n"
+ " add r1, r1, #0x4\n"
+ " add r2, r3, r1\n"
+ " ldr r7, [r2]\n"
+ " mov r1, #0x0\n"
+ " str r1, [r4]\n"
+ " str r1, [r2]\n"
+ " add r4, r0, #0\n"
+ " mov r2, #0x0\n"
+ " ldr r5, ._11 + 8 @ 0x52b\n"
+ "._10:\n"
+ " add r0, r4, r1\n"
+ " ldrb r0, [r0]\n"
+ " add r2, r2, r0\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, r5\n"
+ " bls ._10 @cond_branch\n"
+ " ldr r1, ._11 + 4 @ 0x316c\n"
+ " add r0, r3, r1\n"
+ " str r6, [r0]\n"
+ " add r1, r1, #0x4\n"
+ " add r0, r3, r1\n"
+ " str r7, [r0]\n"
+ " add r0, r2, #0\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._12:\n"
+ " .align 2, 0\n"
+ "._11:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x316c\n"
+ " .word 0x52b\n"
+ "\n"
+ );
+}
+#endif
+
+#if DEBUG
+__attribute__((naked))
+u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " add r3, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " mov r9, r1\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r8, r2\n"
+ " ldr r4, ._16 @ gSaveBlock1\n"
+ " ldr r1, ._16 + 4 @ 0x3160\n"
+ " add r0, r4, r1\n"
+ " add r2, r0, #0\n"
+ " ldr r1, ._16 + 8 @ gBerries\n"
+ " ldmia r1!, {r5, r6, r7}\n"
+ " stmia r2!, {r5, r6, r7}\n"
+ " ldmia r1!, {r5, r6, r7}\n"
+ " stmia r2!, {r5, r6, r7}\n"
+ " ldr r1, [r1]\n"
+ " str r1, [r2]\n"
+ " add r1, r3, #0\n"
+ " bl StringCopy\n"
+ " ldr r0, ._16 + 12 @ 0x361c\n"
+ " add r6, r4, r0\n"
+ " ldr r1, ._16 + 16 @ gUnknown_Debug_083F7F84\n"
+ " add r0, r6, #0\n"
+ " bl StringCopy\n"
+ " ldr r1, ._16 + 20 @ 0x3649\n"
+ " add r5, r4, r1\n"
+ " ldr r1, ._16 + 24 @ gUnknown_Debug_083F7F90\n"
+ " add r0, r5, #0\n"
+ " bl StringCopy\n"
+ " ldr r2, ._16 + 28 @ 0x316c\n"
+ " add r0, r4, r2\n"
+ " str r6, [r0]\n"
+ " ldr r6, ._16 + 32 @ 0x3170\n"
+ " add r0, r4, r6\n"
+ " str r5, [r0]\n"
+ " mov r2, #0x0\n"
+ " ldr r6, ._16 + 36 @ 0x47f\n"
+ " ldr r7, ._16 + 40 @ 0x317c\n"
+ " add r5, r4, r7\n"
+ " ldr r3, ._16 + 44 @ gSpriteImage_UnusedCherry\n"
+ "._13:\n"
+ " add r0, r2, r5\n"
+ " add r1, r2, r3\n"
+ " ldrb r1, [r1]\n"
+ " strb r1, [r0]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, r6\n"
+ " ble ._13 @cond_branch\n"
+ " ldr r0, ._16 @ gSaveBlock1\n"
+ " ldr r3, ._16 + 48 @ gSpritePalette_UnusedCherry\n"
+ " ldr r2, ._16 + 52 @ 0x35fc\n"
+ " add r1, r0, r2\n"
+ " mov r2, #0xf\n"
+ "._14:\n"
+ " ldrh r0, [r3]\n"
+ " strh r0, [r1]\n"
+ " add r3, r3, #0x2\n"
+ " add r1, r1, #0x2\n"
+ " sub r2, r2, #0x1\n"
+ " cmp r2, #0\n"
+ " bge ._14 @cond_branch\n"
+ " mov r2, #0x0\n"
+ " ldr r5, ._16 + 56 @ gSaveBlock1\n"
+ " ldr r3, ._16 + 60 @ gUnknown_Debug_839B6CE\n"
+ "._15:\n"
+ " add r0, r2, r5\n"
+ " add r1, r2, r3\n"
+ " ldrb r1, [r1]\n"
+ " strb r1, [r0]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, #0x11\n"
+ " ble ._15 @cond_branch\n"
+ " ldr r5, ._16 + 64 @ 0x3688\n"
+ " add r0, r4, r5\n"
+ " mov r6, r9\n"
+ " strb r6, [r0]\n"
+ " ldr r7, ._16 + 68 @ 0x3689\n"
+ " add r0, r4, r7\n"
+ " mov r1, r8\n"
+ " strb r1, [r0]\n"
+ " ldr r2, ._16 + 4 @ 0x3160\n"
+ " add r0, r4, r2\n"
+ " bl debug_sub_80C2BD0\n"
+ " add r5, r5, #0x4\n"
+ " add r1, r4, r5\n"
+ " str r0, [r1]\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._17:\n"
+ " .align 2, 0\n"
+ "._16:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x3160\n"
+ " .word gBerries\n"
+ " .word 0x361c\n"
+ " .word gUnknown_Debug_083F7F84\n"
+ " .word 0x3649\n"
+ " .word gUnknown_Debug_083F7F90\n"
+ " .word 0x316c\n"
+ " .word 0x3170\n"
+ " .word 0x47f\n"
+ " .word 0x317c\n"
+ " .word gSpriteImage_UnusedCherry\n"
+ " .word gSpritePalette_UnusedCherry\n"
+ " .word 0x35fc\n"
+ " .word gSaveBlock1+0x3676\n"
+ " .word gUnknown_Debug_839B6CE\n"
+ " .word 0x3688\n"
+ " .word 0x3689\n"
+ "\n"
+ );
+}
+#else
static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
{
const u8 *description1;
@@ -1051,9 +1285,110 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
return checksum;
}
+#endif
+
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80C2D24()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " ldr r6, [sp, #0x18]\n"
+ " ldr r4, [sp, #0x1c]\n"
+ " mov r8, r4\n"
+ " ldr r5, ._18 @ gSaveBlock1\n"
+ " ldr r7, ._18 + 4 @ 0x3175\n"
+ " add r4, r5, r7\n"
+ " strb r0, [r4]\n"
+ " ldr r4, ._18 + 8 @ 0x3176\n"
+ " add r0, r5, r4\n"
+ " strb r1, [r0]\n"
+ " add r7, r7, #0x2\n"
+ " add r0, r5, r7\n"
+ " strb r2, [r0]\n"
+ " ldr r1, ._18 + 12 @ 0x3178\n"
+ " add r0, r5, r1\n"
+ " strb r3, [r0]\n"
+ " add r4, r4, #0x3\n"
+ " add r0, r5, r4\n"
+ " strb r6, [r0]\n"
+ " add r7, r7, #0x3\n"
+ " add r0, r5, r7\n"
+ " mov r1, r8\n"
+ " strb r1, [r0]\n"
+ " sub r4, r4, #0x19\n"
+ " add r0, r5, r4\n"
+ " bl debug_sub_80C2BD0\n"
+ " ldr r7, ._18 + 16 @ 0x368c\n"
+ " add r5, r5, r7\n"
+ " str r0, [r5]\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._19:\n"
+ " .align 2, 0\n"
+ "._18:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x3175\n"
+ " .word 0x3176\n"
+ " .word 0x3178\n"
+ " .word 0x368c\n"
+ "\n"
+ );
+}
+#endif
// due to e-reader scans being particularly volatile to failure, it is a requirement to check for
// their integrity here due to scans possibly failing to produce the correct result.
+#if DEBUG
+__attribute__((naked))
+bool32 IsEnigmaBerryValid()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._24 @ gSaveBlock1\n"
+ " ldr r1, ._24 + 4 @ 0x3174\n"
+ " add r0, r4, r1\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._22 @cond_branch\n"
+ " ldr r2, ._24 + 8 @ 0x316a\n"
+ " add r0, r4, r2\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._22 @cond_branch\n"
+ " ldr r1, ._24 + 12 @ 0x3160\n"
+ " add r0, r4, r1\n"
+ " bl debug_sub_80C2BD0\n"
+ " ldr r2, ._24 + 16 @ 0x368c\n"
+ " add r1, r4, r2\n"
+ " ldr r1, [r1]\n"
+ " cmp r0, r1\n"
+ " bne ._22 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " b ._23\n"
+ "._25:\n"
+ " .align 2, 0\n"
+ "._24:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x3174\n"
+ " .word 0x316a\n"
+ " .word 0x3160\n"
+ " .word 0x368c\n"
+ "._22:\n"
+ " mov r0, #0x0\n"
+ "._23:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+#else
bool32 IsEnigmaBerryValid(void)
{
if (gSaveBlock1.enigmaBerry.berry.stageDuration == 0)
@@ -1064,6 +1399,7 @@ bool32 IsEnigmaBerryValid(void)
return FALSE;
return TRUE;
}
+#endif
const struct Berry *GetBerryInfo(u8 berry)
{
@@ -1417,6 +1753,177 @@ bool8 PlayerHasBerries(void)
return IsBagPocketNonEmpty(BAG_BERRIES);
}
+#if DEBUG
+void debug_sub_80C33FC(u8 *buffer, s32 value, u8 n)
+{
+ StringAppend(gStringVar4, buffer);
+ ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, n);
+ StringAppend(gStringVar4, gStringVar1);
+}
+
+extern const u8 gUnknown_Debug_083F7F9D[];
+extern const u8 gUnknown_Debug_083F7FA2[];
+extern const u8 gUnknown_Debug_083F7FA9[];
+extern const u8 gUnknown_Debug_083F7FB0[];
+extern const u8 gUnknown_Debug_083F7FB7[];
+extern const u8 gUnknown_Debug_083F7FBE[];
+extern const u8 gUnknown_Debug_083F7FC5[];
+extern const u8 gUnknown_Debug_083F7FCC[];
+extern const u8 gUnknown_Debug_083F7FD3[];
+extern const u8 gUnknown_Debug_083F7FD3[];
+extern const u8 gUnknown_Debug_083F7FD3[];
+
+#ifdef NONMATCHING
+u8* DebugOpenBerryInfo(void)
+{
+ s32 i;
+ u8 berryTreeId;
+ struct BerryTree *berryTree;
+
+ if (GetFieldObjectScriptPointerPlayerFacing() != &S_BerryTree)
+ return NULL;
+
+ berryTreeId = FieldObjectGetBerryTreeId(gSelectedMapObject);
+ berryTree = GetBerryTreeInfo(berryTreeId);
+
+ for (i = 0; i < 500; i++)
+ gStringVar4[i] |= 0xFF;
+
+ debug_sub_80C33FC(gUnknown_Debug_083F7F9D, berryTreeId, 3);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FA2, berryTree->berry, 2);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FA9, berryTree->stage, 2);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FB0, berryTree->secondsUntilNextStage, 5);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FB7, berryTree->berryYield, 2);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FBE, berryTree->regrowthCount, 3);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FC5, berryTree->growthSparkle, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FCC, berryTree->watered1, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered2, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered3, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered4, 1);
+
+ return gStringVar4;
+}
+#else
+__attribute__((naked))
+void DebugOpenBerryInfo()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " bl GetFieldObjectScriptPointerPlayerFacing\n"
+ " ldr r1, ._138 @ S_BerryTree\n"
+ " cmp r0, r1\n"
+ " beq ._136 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._137\n"
+ "._139:\n"
+ " .align 2, 0\n"
+ "._138:\n"
+ " .word S_BerryTree\n"
+ "._136:\n"
+ " ldr r0, ._141 @ gSelectedMapObject\n"
+ " ldrb r0, [r0]\n"
+ " bl FieldObjectGetBerryTreeId\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " add r0, r6, #0\n"
+ " bl GetBerryTreeInfo\n"
+ " add r5, r0, #0\n"
+ " mov r2, #0x0\n"
+ " ldr r7, ._141 + 4 @ 0x1f3\n"
+ " ldr r4, ._141 + 8 @ gStringVar4\n"
+ " mov r3, #0xff\n"
+ "._140:\n"
+ " add r1, r2, r4\n"
+ " ldrb r0, [r1]\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " add r2, r2, #0x1\n"
+ " cmp r2, r7\n"
+ " ble ._140 @cond_branch\n"
+ " ldr r0, ._141 + 12 @ gUnknown_Debug_083F7F9D\n"
+ " add r1, r6, #0\n"
+ " mov r2, #0x3\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 16 @ gUnknown_Debug_083F7FA2\n"
+ " ldrb r1, [r5]\n"
+ " mov r2, #0x2\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 20 @ gUnknown_Debug_083F7FA9\n"
+ " ldrb r1, [r5, #0x1]\n"
+ " lsl r1, r1, #0x19\n"
+ " lsr r1, r1, #0x19\n"
+ " mov r2, #0x2\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 24 @ gUnknown_Debug_083F7FB0\n"
+ " ldrh r1, [r5, #0x2]\n"
+ " mov r2, #0x5\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 28 @ gUnknown_Debug_083F7FB7\n"
+ " ldrb r1, [r5, #0x4]\n"
+ " mov r2, #0x2\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 32 @ gUnknown_Debug_083F7FBE\n"
+ " ldrb r1, [r5, #0x5]\n"
+ " lsl r1, r1, #0x1c\n"
+ " lsr r1, r1, #0x1c\n"
+ " mov r2, #0x3\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 36 @ gUnknown_Debug_083F7FC5\n"
+ " ldrb r1, [r5, #0x1]\n"
+ " lsr r1, r1, #0x7\n"
+ " mov r2, #0x1\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 40 @ gUnknown_Debug_083F7FCC\n"
+ " ldrb r1, [r5, #0x5]\n"
+ " lsl r1, r1, #0x1b\n"
+ " lsr r1, r1, #0x1f\n"
+ " mov r2, #0x1\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r4, ._141 + 44 @ gUnknown_Debug_083F7FD3\n"
+ " ldrb r1, [r5, #0x5]\n"
+ " lsl r1, r1, #0x1a\n"
+ " lsr r1, r1, #0x1f\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " bl debug_sub_80C33FC\n"
+ " ldrb r1, [r5, #0x5]\n"
+ " lsl r1, r1, #0x19\n"
+ " lsr r1, r1, #0x1f\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " bl debug_sub_80C33FC\n"
+ " ldrb r1, [r5, #0x5]\n"
+ " lsr r1, r1, #0x7\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " bl debug_sub_80C33FC\n"
+ " ldr r0, ._141 + 8 @ gStringVar4\n"
+ "._137:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._142:\n"
+ " .align 2, 0\n"
+ "._141:\n"
+ " .word gSelectedMapObject\n"
+ " .word 0x1f3\n"
+ " .word gStringVar4\n"
+ " .word gUnknown_Debug_083F7F9D\n"
+ " .word gUnknown_Debug_083F7FA2\n"
+ " .word gUnknown_Debug_083F7FA9\n"
+ " .word gUnknown_Debug_083F7FB0\n"
+ " .word gUnknown_Debug_083F7FB7\n"
+ " .word gUnknown_Debug_083F7FBE\n"
+ " .word gUnknown_Debug_083F7FC5\n"
+ " .word gUnknown_Debug_083F7FCC\n"
+ " .word gUnknown_Debug_083F7FD3\n"
+ "\n"
+ );
+}
+#endif
+
+#endif
+
// whenever the player is not within view of the berry tree during its sparkle state, the
// sparkle state will be reset.
void ResetBerryTreeSparkleFlags(void)
@@ -1445,3 +1952,17 @@ void ResetBerryTreeSparkleFlags(void)
}
}
}
+
+#if DEBUG
+static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ");
+static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう");
+static const u8 gUnknown_Debug_083F7F9D[] = _("POS:");
+static const u8 gUnknown_Debug_083F7FA2[] = _("\nTYPE:");
+static const u8 gUnknown_Debug_083F7FA9[] = _("\nGROW:");
+static const u8 gUnknown_Debug_083F7FB0[] = _("\nTIME:");
+static const u8 gUnknown_Debug_083F7FB7[] = _("\nFCNT:");
+static const u8 gUnknown_Debug_083F7FBE[] = _("\nSCNT:");
+static const u8 gUnknown_Debug_083F7FC5[] = _("\nHOOK:");
+static const u8 gUnknown_Debug_083F7FCC[] = _("\nWBIT:");
+static const u8 gUnknown_Debug_083F7FD3[] = _("");
+#endif
diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c
index bb937ea43..ed0ab86ae 100644
--- a/src/field/berry_tag_screen.c
+++ b/src/field/berry_tag_screen.c
@@ -42,7 +42,7 @@ extern u8 gBerryCheck_Pal[];
extern u8 gUnknown_08E788E4[];
extern u8 gUnknown_08E78A84[];
-static const u8 *const gUnknown_0841192C[] =
+const u8 *const gUnknown_0841192C[] =
{
ContestStatsText_VerySoft,
ContestStatsText_Soft,
diff --git a/src/field/bike.c b/src/field/bike.c
index 8db01b4b4..98966ebd4 100644
--- a/src/field/bike.c
+++ b/src/field/bike.c
@@ -14,6 +14,11 @@ extern bool8 gBikeCyclingChallenge;
extern u8 gBikeCollisions;
extern u8 gUnusedBikeCameraAheadPanback;
+#if DEBUG
+extern u8 gUnknown_020297ED;
+u8 debug_sub_805F2B0(u8);
+#endif
+
static void MovePlayerOnMachBike(u8, u16, u16);
static u8 GetMachBikeTransition(u8 *);
static void MachBikeTransition_FaceDirection(u8);
@@ -134,6 +139,13 @@ void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys)
static void MovePlayerOnMachBike(u8 direction, u16 newKeys, u16 heldKeys)
{
+#if DEBUG
+ if (gUnknown_020297ED && debug_sub_805F2B0(direction))
+ {
+ Bike_SetBikeStill();
+ return;
+ }
+#endif
sMachBikeTransitions[GetMachBikeTransition(&direction)](direction);
}
@@ -271,6 +283,14 @@ static void MachBikeTransition_TrySlowDown(u8 var)
// the acro bike requires the input handler to be executed before the transition can.
static void MovePlayerOnAcroBike(u8 newDirection, u16 newKeys, u16 heldKeys)
{
+#if DEBUG
+ if (gUnknown_020297ED && debug_sub_805F2B0(newDirection))
+ {
+ Bike_SetBikeStill();
+ return;
+ }
+#endif
+
sAcroBikeTransitions[CheckMovementInputAcroBike(&newDirection, newKeys, heldKeys)](newDirection);
}
diff --git a/src/field/choose_party.c b/src/field/choose_party.c
index 73470d3d2..7529c4271 100644
--- a/src/field/choose_party.c
+++ b/src/field/choose_party.c
@@ -528,6 +528,107 @@ static void BattleTowerEntryMenuCallback_Exit(u8 taskId)
sub_81227FC(taskId);
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_81381B4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " ldr r4, ._189 @ gUnknown_02023A00\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x60\n"
+ " bl memset\n"
+ " mov r7, #0x0\n"
+ " mov r8, r4\n"
+ " mov r0, #0x4\n"
+ " add r0, r0, r8\n"
+ " mov r9, r0\n"
+ "._188:\n"
+ " mov r0, #0x64\n"
+ " add r1, r7, #0\n"
+ " mul r1, r1, r0\n"
+ " ldr r0, ._189 + 4 @ gPlayerParty\n"
+ " add r5, r1, r0\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x41\n"
+ " bl GetMonData\n"
+ " lsl r4, r7, #0x5\n"
+ " mov r1, r8\n"
+ " add r6, r4, r1\n"
+ " strh r0, [r6]\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " beq ._187 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x38\n"
+ " bl GetMonData\n"
+ " strb r0, [r6, #0xf]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x39\n"
+ " bl GetMonData\n"
+ " strh r0, [r6, #0x10]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3a\n"
+ " bl GetMonData\n"
+ " strh r0, [r6, #0x12]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x37\n"
+ " bl GetMonData\n"
+ " mov r1, r8\n"
+ " add r1, r1, #0x14\n"
+ " add r1, r4, r1\n"
+ " str r0, [r1]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0xc\n"
+ " bl GetMonData\n"
+ " strh r0, [r6, #0x2]\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x0\n"
+ " bl GetMonData\n"
+ " mov r1, r8\n"
+ " add r1, r1, #0x18\n"
+ " add r1, r4, r1\n"
+ " str r0, [r1]\n"
+ " add r0, r5, #0\n"
+ " bl GetMonGender\n"
+ " strb r0, [r6, #0x1c]\n"
+ " add r4, r4, r9\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x2\n"
+ " add r2, r4, #0\n"
+ " bl GetMonData\n"
+ " add r0, r4, #0\n"
+ " bl Text_StripExtCtrlCodes\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x3\n"
+ " bl GetMonData\n"
+ " strb r0, [r6, #0x1d]\n"
+ "._187:\n"
+ " add r0, r7, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r7, #0x2\n"
+ " bls ._188 @cond_branch\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._190:\n"
+ " .align 2, 0\n"
+ "._189:\n"
+ " .word gUnknown_02023A00\n"
+ " .word gPlayerParty+0x12c\n"
+ "\n"
+ );
+}
+#endif
+
bool8 SetupLinkMultiBattlePartyMenu(void)
{
switch (ewram1B000_alt.setupState)
diff --git a/src/field/decoration_inventory.c b/src/field/decoration_inventory.c
index dd0e972aa..8f7f5eb92 100644
--- a/src/field/decoration_inventory.c
+++ b/src/field/decoration_inventory.c
@@ -164,3 +164,14 @@ u8 sub_81341D4(void)
}
return count;
}
+
+
+#if DEBUG
+void debug_sub_814A3A8(void)
+{
+ u8 decor;
+
+ for (decor = 0; decor < DECOR_COUNT; decor++)
+ IsThereStorageSpaceForDecoration(decor);
+}
+#endif
diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c
index 83924b384..3ae422512 100644
--- a/src/field/field_control_avatar.c
+++ b/src/field/field_control_avatar.c
@@ -4,6 +4,7 @@
#include "bike.h"
#include "coord_event_weather.h"
#include "daycare.h"
+#include "debug.h"
#include "event_data.h"
#include "field_fadetransition.h"
#include "field_player_avatar.h"
@@ -35,6 +36,7 @@ extern u16 gSpecialVar_Facing;
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
+extern u8 gUnknown_020297ED;
static EWRAM_DATA u8 gUnknown_0202E8C0 = 0;
static EWRAM_DATA u16 gUnknown_0202E8C2 = 0;
@@ -103,7 +105,7 @@ static void sub_8068C30(struct MapHeader *, s8, struct MapPosition *);
static bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8);
static s8 map_warp_check(struct MapHeader *, u16, u16, u8);
static u8 *mapheader_trigger_activate_at(struct MapHeader *, u16, u16, u8);
-static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *, u16, u16, u8);
+static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *, u16, u16, u8);;
void FieldClearPlayerInput(struct FieldInput *input)
{
@@ -162,6 +164,31 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
input->dpadDirection = DIR_WEST;
else if (heldKeys & DPAD_RIGHT)
input->dpadDirection = DIR_EAST;
+#if DEBUG
+ if ((heldKeys & R_BUTTON) && input->pressedStartButton)
+ {
+ input->input_field_1_2 = TRUE;
+ input->pressedStartButton = FALSE;
+ }
+ if (gUnknown_020297ED)
+ {
+ if (heldKeys & R_BUTTON)
+ {
+ input->input_field_1_1 = TRUE;
+ input->input_field_0_6 = FALSE;
+ input->input_field_0_1 = FALSE;
+ input->input_field_0_4 = FALSE;
+ input->input_field_0_5 = FALSE;
+ if (newKeys & SELECT_BUTTON)
+ {
+ input->input_field_1_0 = TRUE;
+ input->pressedSelectButton = FALSE;
+ }
+ }
+ if (heldKeys & L_BUTTON)
+ input->input_field_1_3 = TRUE;
+ }
+#endif
}
int sub_8068024(struct FieldInput *input)
@@ -173,10 +200,25 @@ int sub_8068024(struct FieldInput *input)
r6 = player_get_direction_lower_nybble();
player_get_pos_to_and_height(&position);
r4 = MapGridGetMetatileBehaviorAt(position.x, position.y);
- if (CheckTrainers() == TRUE)
+#if DEBUG
+ if (input->input_field_1_3 && dive_warp(&position, r4) == TRUE)
+ return TRUE;
+#endif
+
+ if (
+#if DEBUG
+ !input->input_field_1_1 &&
+#endif
+ CheckTrainers() == TRUE)
return TRUE;
- if (mapheader_run_first_tag2_script_list_match() == 1)
+
+ if (
+#if DEBUG
+ !input->input_field_1_1 &&
+#endif
+ mapheader_run_first_tag2_script_list_match() == 1)
return TRUE;
+
if (input->pressedBButton && sub_80687A4() == 1)
return TRUE;
if (input->input_field_0_6)
@@ -211,6 +253,21 @@ int sub_8068024(struct FieldInput *input)
}
if (input->pressedSelectButton && sub_80A6D1C() == TRUE)
return TRUE;
+
+#if DEBUG
+ if (input->input_field_1_0)
+ {
+ debug_sub_80888D8();
+ return TRUE;
+ }
+ if (input->input_field_1_2)
+ {
+ PlaySE(SE_WIN_OPEN);
+ DebugMenu_8077048();
+ return TRUE;
+ }
+#endif
+
return FALSE;
}
@@ -810,7 +867,7 @@ static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *mapHea
return NULL;
}
-int dive_warp(struct MapPosition *position, u16 b)
+bool8 dive_warp(struct MapPosition *position, u16 b)
{
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(b) == 0)
{
diff --git a/src/field/field_effect_helpers.c b/src/field/field_effect_helpers.c
index 93fc62bd5..c9d337de1 100644
--- a/src/field/field_effect_helpers.c
+++ b/src/field/field_effect_helpers.c
@@ -29,8 +29,6 @@ static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *);
static void sub_8128174(struct Sprite *);
static u32 ShowDisguiseFieldEffect(u8, u8, u8);
-const u8 UnusedEggString_8401E28[] = _("タマゴ");
-
void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag)
{
struct Sprite *newSprite;
diff --git a/src/field/field_fadetransition.c b/src/field/field_fadetransition.c
index d68be3b36..21235500a 100644
--- a/src/field/field_fadetransition.c
+++ b/src/field/field_fadetransition.c
@@ -511,6 +511,22 @@ void sub_80810DC(void)
CreateTask(sub_8081050, 10);
}
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_80888D8()
+{
+ asm("\
+ PUSH {LR}\n\
+ BL debug_sub_8052E04\n\
+ BL sub_8080E88\n\
+ BL ScriptContext2_Enable\n\
+ POP {R0}\n\
+ BX R0");
+}
+
+#endif
+
void task0A_fade_n_map_maybe(u8 taskId)
{
struct Task *task = &gTasks[taskId];
diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c
index 77b4c8b5c..13d8ebb5b 100644
--- a/src/field/field_map_obj.c
+++ b/src/field/field_map_obj.c
@@ -1907,6 +1907,9 @@ static u8 gUnknown_030005A4;
static u16 gUnknown_030005A6;
struct MapObject gMapObjects[16];
+#if DEBUG
+u8 gUnknown_Debug_03004BC0[4]; // unknown type
+#endif
void npc_clear_ids_and_state(struct MapObject *mapObj)
{
@@ -1917,6 +1920,40 @@ void npc_clear_ids_and_state(struct MapObject *mapObj)
mapObj->mapobj_unk_1C = 0xFF;
}
+#if DEBUG
+__attribute__((naked))
+void npcs_clear_ids_and_state()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r4, #0x0\n"
+ " ldr r5, ._2 @ gMapObjects\n"
+ "._1:\n"
+ " lsl r0, r4, #0x3\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r5\n"
+ " bl npc_clear_ids_and_state\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0xf\n"
+ " bls ._1 @cond_branch\n"
+ " ldr r1, ._2 + 4 @ gUnknown_Debug_03004BC0\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._3:\n"
+ " .align 2, 0\n"
+ "._2:\n"
+ " .word gMapObjects\n"
+ " .word gUnknown_Debug_03004BC0\n"
+ "\n"
+ );
+}
+#else
void npcs_clear_ids_and_state(void)
{
u8 i;
@@ -1924,6 +1961,7 @@ void npcs_clear_ids_and_state(void)
for (i = 0; i < 16; i++)
npc_clear_ids_and_state(&gMapObjects[i]);
}
+#endif
void sub_805AA98(void)
{
@@ -2017,6 +2055,176 @@ u8 GetFieldObjectIdByLocalId(u8 localId)
return 16;
}
+#if DEBUG
+__attribute__((naked))
+u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r9\n"
+ " mov r6, r8\n"
+ " push {r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " add r5, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r6, r1, #0x18\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r7, r2, #0x18\n"
+ " ldrb r0, [r5]\n"
+ " add r1, r6, #0\n"
+ " add r2, r7, #0\n"
+ " mov r3, sp\n"
+ " bl GetAvailableFieldObjectSlot\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._35 @cond_branch\n"
+ " mov r0, #0x10\n"
+ " b ._36\n"
+ "._35:\n"
+ " mov r0, sp\n"
+ " ldrb r1, [r0]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._40 @ gMapObjects\n"
+ " add r4, r0, r1\n"
+ " add r0, r4, #0\n"
+ " bl npc_clear_ids_and_state\n"
+ " ldrh r3, [r5, #0x4]\n"
+ " add r3, r3, #0x7\n"
+ " lsl r3, r3, #0x10\n"
+ " lsr r3, r3, #0x10\n"
+ " ldrh r2, [r5, #0x6]\n"
+ " add r2, r2, #0x7\n"
+ " lsl r2, r2, #0x10\n"
+ " lsr r2, r2, #0x10\n"
+ " ldrb r0, [r4]\n"
+ " mov r1, #0x1\n"
+ " orr r0, r0, r1\n"
+ " mov r1, #0x4\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4]\n"
+ " ldrb r0, [r5, #0x1]\n"
+ " strb r0, [r4, #0x5]\n"
+ " ldrb r0, [r5, #0x9]\n"
+ " strb r0, [r4, #0x6]\n"
+ " ldrb r0, [r5]\n"
+ " strb r0, [r4, #0x8]\n"
+ " strb r6, [r4, #0x9]\n"
+ " strb r7, [r4, #0xa]\n"
+ " strh r3, [r4, #0xc]\n"
+ " strh r2, [r4, #0xe]\n"
+ " strh r3, [r4, #0x10]\n"
+ " strh r2, [r4, #0x12]\n"
+ " strh r3, [r4, #0x14]\n"
+ " strh r2, [r4, #0x16]\n"
+ " ldrb r0, [r5, #0x8]\n"
+ " mov r7, #0xf\n"
+ " add r1, r7, #0\n"
+ " and r1, r1, r0\n"
+ " ldrb r2, [r4, #0xb]\n"
+ " mov r0, #0x10\n"
+ " neg r0, r0\n"
+ " mov r8, r0\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0xb]\n"
+ " ldrb r1, [r5, #0x8]\n"
+ " lsl r1, r1, #0x4\n"
+ " and r0, r0, r7\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0xb]\n"
+ " ldrb r1, [r5, #0xa]\n"
+ " lsl r1, r1, #0x1c\n"
+ " mov r0, #0xf\n"
+ " mov r9, r0\n"
+ " lsr r1, r1, #0x1c\n"
+ " ldrb r2, [r4, #0x19]\n"
+ " mov r0, r8\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0x19]\n"
+ " ldrb r1, [r5, #0xa]\n"
+ " lsr r1, r1, #0x4\n"
+ " lsl r1, r1, #0x4\n"
+ " and r0, r0, r7\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0x19]\n"
+ " ldrh r0, [r5, #0xc]\n"
+ " strb r0, [r4, #0x7]\n"
+ " ldrh r0, [r5, #0xe]\n"
+ " strb r0, [r4, #0x1d]\n"
+ " ldr r1, ._40 + 4 @ gUnknown_0836DC09\n"
+ " ldrb r0, [r5, #0x9]\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x20\n"
+ " strb r1, [r0]\n"
+ " ldrb r1, [r0]\n"
+ " add r0, r4, #0\n"
+ " bl FieldObjectSetDirection\n"
+ " add r0, r4, #0\n"
+ " bl FieldObjectHandleDynamicGraphicsId\n"
+ " ldr r1, ._40 + 8 @ gUnknown_0836DBBC\n"
+ " ldrb r0, [r4, #0x6]\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._39 @cond_branch\n"
+ " ldrb r2, [r4, #0x19]\n"
+ " add r0, r7, #0\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._38 @cond_branch\n"
+ " lsl r0, r2, #0x1c\n"
+ " lsr r0, r0, #0x1c\n"
+ " add r0, r0, #0x1\n"
+ " mov r1, r9\n"
+ " and r0, r0, r1\n"
+ " mov r1, r8\n"
+ " and r1, r1, r2\n"
+ " orr r1, r1, r0\n"
+ " strb r1, [r4, #0x19]\n"
+ "._38:\n"
+ " ldrb r2, [r4, #0x19]\n"
+ " mov r0, #0xf0\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._39 @cond_branch\n"
+ " lsr r1, r2, #0x4\n"
+ " add r1, r1, #0x1\n"
+ " lsl r1, r1, #0x4\n"
+ " add r0, r7, #0\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0x19]\n"
+ "._39:\n"
+ " ldr r1, ._40 + 12 @ gUnknown_Debug_03004BC0\n"
+ " ldrb r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " mov r0, sp\n"
+ " ldrb r0, [r0]\n"
+ "._36:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._41:\n"
+ " .align 2, 0\n"
+ "._40:\n"
+ " .word gMapObjects\n"
+ " .word gUnknown_0836DC09\n"
+ " .word gUnknown_0836DBBC\n"
+ " .word gUnknown_Debug_03004BC0\n"
+ "\n"
+ );
+}
+#else
#ifdef NONMATCHING
u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
{
@@ -2227,6 +2435,7 @@ _0805ADD8: .4byte gUnknown_0836DBBC\n\
.syntax divided\n");
}
#endif
+#endif
u8 sub_805ADDC(u8 localId)
{
@@ -2266,11 +2475,38 @@ u8 GetAvailableFieldObjectSlot(u16 a, u8 b, u8 c, u8 *d)
return 0;
}
+#if DEBUG
+__attribute__((naked))
+void RemoveFieldObject(struct MapObject *mapObject)
+{
+ asm(
+ " push {lr}\n"
+ " ldrb r2, [r0]\n"
+ " mov r1, #0x2\n"
+ " neg r1, r1\n"
+ " and r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " bl RemoveFieldObjectInternal\n"
+ " ldr r1, ._72 @ gUnknown_Debug_03004BC0\n"
+ " ldrb r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._73:\n"
+ " .align 2, 0\n"
+ "._72:\n"
+ " .word gUnknown_Debug_03004BC0\n"
+ "\n"
+ );
+}
+#else
void RemoveFieldObject(struct MapObject *mapObject)
{
mapObject->active = FALSE;
RemoveFieldObjectInternal(mapObject);
}
+#endif
void RemoveFieldObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
{
@@ -2303,6 +2539,226 @@ void npc_hide_all_but_player(void)
}
}
+#if DEBUG
+__attribute__((naked))
+u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add r7, r1, #0\n"
+ " add r1, r2, #0\n"
+ " add r2, r3, #0\n"
+ " ldr r3, [sp, #0x20]\n"
+ " ldr r4, [sp, #0x24]\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " lsl r3, r3, #0x10\n"
+ " lsr r3, r3, #0x10\n"
+ " mov r9, r3\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " mov sl, r4\n"
+ " bl InitFieldObjectStateFromTemplate\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " cmp r0, #0x10\n"
+ " bne ._83 @cond_branch\n"
+ " mov r0, #0x10\n"
+ " b ._92\n"
+ "._83:\n"
+ " mov r0, r8\n"
+ " lsl r4, r0, #0x3\n"
+ " add r0, r4, r0\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._87 @ gMapObjects\n"
+ " add r5, r0, r1\n"
+ " ldrb r0, [r5, #0x5]\n"
+ " bl GetFieldObjectGraphicsInfo\n"
+ " add r6, r0, #0\n"
+ " ldrb r1, [r6, #0xc]\n"
+ " mov r0, #0xf\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._85 @cond_branch\n"
+ " ldrh r0, [r6, #0x2]\n"
+ " lsl r1, r1, #0x1c\n"
+ " lsr r1, r1, #0x1c\n"
+ " bl npc_load_two_palettes__no_record\n"
+ " b ._89\n"
+ "._88:\n"
+ " .align 2, 0\n"
+ "._87:\n"
+ " .word gMapObjects\n"
+ "._85:\n"
+ " cmp r0, #0xa\n"
+ " bne ._89 @cond_branch\n"
+ " ldrh r0, [r6, #0x2]\n"
+ " lsl r1, r1, #0x1c\n"
+ " lsr r1, r1, #0x1c\n"
+ " bl npc_load_two_palettes__and_record\n"
+ "._89:\n"
+ " ldrb r0, [r5, #0x6]\n"
+ " cmp r0, #0x4c\n"
+ " bne ._90 @cond_branch\n"
+ " ldrb r0, [r5, #0x1]\n"
+ " mov r1, #0x20\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r5, #0x1]\n"
+ "._90:\n"
+ " ldr r1, ._93 @ 0xffff\n"
+ " add r0, r1, #0\n"
+ " strh r0, [r7, #0x2]\n"
+ " add r0, r7, #0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x0\n"
+ " bl CreateSprite\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r7, #0x40\n"
+ " bne ._91 @cond_branch\n"
+ " ldr r1, ._93 + 4 @ gUnknown_Debug_03004BC0\n"
+ " ldrb r0, [r1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r0, ._93 + 8 @ gMapObjects\n"
+ " mov r2, r8\n"
+ " add r1, r4, r2\n"
+ " lsl r1, r1, #0x2\n"
+ " add r1, r1, r0\n"
+ " ldrb r2, [r1]\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " strb r0, [r1]\n"
+ " mov r0, #0x10\n"
+ " b ._92\n"
+ "._94:\n"
+ " .align 2, 0\n"
+ "._93:\n"
+ " .word 0xffff\n"
+ " .word gUnknown_Debug_03004BC0\n"
+ " .word gMapObjects\n"
+ "._91:\n"
+ " lsl r0, r7, #0x4\n"
+ " add r0, r0, r7\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._96 @ gSprites\n"
+ " add r4, r0, r1\n"
+ " mov r1, r9\n"
+ " lsl r0, r1, #0x10\n"
+ " asr r0, r0, #0x10\n"
+ " ldrh r2, [r5, #0x10]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x10\n"
+ " mov r2, sl\n"
+ " lsl r1, r2, #0x10\n"
+ " asr r1, r1, #0x10\n"
+ " ldrh r2, [r5, #0x12]\n"
+ " add r1, r1, r2\n"
+ " lsl r1, r1, #0x10\n"
+ " asr r1, r1, #0x10\n"
+ " add r2, r4, #0\n"
+ " add r2, r2, #0x20\n"
+ " add r3, r4, #0\n"
+ " add r3, r3, #0x22\n"
+ " bl sub_8060388\n"
+ " ldrh r0, [r6, #0x8]\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x11\n"
+ " neg r0, r0\n"
+ " add r1, r4, #0\n"
+ " add r1, r1, #0x28\n"
+ " strb r0, [r1]\n"
+ " ldrh r0, [r6, #0xa]\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x11\n"
+ " neg r0, r0\n"
+ " add r2, r4, #0\n"
+ " add r2, r2, #0x29\n"
+ " strb r0, [r2]\n"
+ " ldrh r0, [r4, #0x20]\n"
+ " add r0, r0, #0x8\n"
+ " strh r0, [r4, #0x20]\n"
+ " ldrh r1, [r4, #0x22]\n"
+ " add r1, r1, #0x10\n"
+ " mov r0, #0x0\n"
+ " ldsb r0, [r2, r0]\n"
+ " add r0, r0, r1\n"
+ " strh r0, [r4, #0x22]\n"
+ " ldrb r1, [r6, #0xc]\n"
+ " lsl r1, r1, #0x1c\n"
+ " lsr r1, r1, #0x18\n"
+ " ldrb r2, [r4, #0x5]\n"
+ " mov r0, #0xf\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r4, #0x5]\n"
+ " add r2, r4, #0\n"
+ " add r2, r2, #0x3e\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " mov r0, r8\n"
+ " strh r0, [r4, #0x2e]\n"
+ " strb r7, [r5, #0x4]\n"
+ " ldrb r1, [r6, #0xc]\n"
+ " lsl r1, r1, #0x19\n"
+ " lsr r1, r1, #0x1f\n"
+ " lsl r1, r1, #0x4\n"
+ " ldrb r2, [r5, #0x1]\n"
+ " mov r0, #0x11\n"
+ " neg r0, r0\n"
+ " and r0, r0, r2\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r5, #0x1]\n"
+ " lsl r0, r0, #0x1b\n"
+ " cmp r0, #0\n"
+ " blt ._95 @cond_branch\n"
+ " ldrb r0, [r5, #0x18]\n"
+ " lsl r0, r0, #0x1c\n"
+ " lsr r0, r0, #0x1c\n"
+ " bl FieldObjectDirectionToImageAnimId\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " add r0, r4, #0\n"
+ " bl StartSpriteAnim\n"
+ "._95:\n"
+ " ldrb r0, [r5, #0xb]\n"
+ " lsr r0, r0, #0x4\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x1\n"
+ " bl SetObjectSubpriorityByZCoord\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " bl sub_80634D0\n"
+ " mov r0, r8\n"
+ "._92:\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._97:\n"
+ " .align 2, 0\n"
+ "._96:\n"
+ " .word gSprites\n"
+ "\n"
+ );
+}
+#else
u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f)
{
u8 mapObjectId;
@@ -2352,6 +2808,7 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *
sub_80634D0(mapObject, sprite);
return mapObjectId;
}
+#endif
u8 SpawnFieldObject(struct MapObjectTemplate *mapObjTemplate, u8 b, u8 c, s16 d, s16 e)
{
@@ -2574,6 +3031,66 @@ void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject)
void sub_805B75C(u8, s16, s16);
+#if DEBUG
+__attribute__((naked))
+void sub_805B710(u16 u161, u16 u162)
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " add r4, r0, #0\n"
+ " add r5, r1, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " lsl r5, r5, #0x10\n"
+ " lsr r5, r5, #0x10\n"
+ " ldr r6, ._153 @ gUnknown_Debug_03004BC0\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r6]\n"
+ " bl ClearPlayerAvatarInfo\n"
+ " mov r7, #0x0\n"
+ " ldr r0, ._153 + 4 @ gMapObjects\n"
+ " mov r8, r0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsl r5, r5, #0x10\n"
+ "._152:\n"
+ " lsl r0, r7, #0x3\n"
+ " add r0, r0, r7\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r8\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x1f\n"
+ " cmp r0, #0\n"
+ " beq ._151 @cond_branch\n"
+ " add r0, r7, #0\n"
+ " asr r1, r4, #0x10\n"
+ " asr r2, r5, #0x10\n"
+ " bl sub_805B75C\n"
+ " ldrb r0, [r6]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r6]\n"
+ "._151:\n"
+ " add r0, r7, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r7, #0xf\n"
+ " bls ._152 @cond_branch\n"
+ " bl sub_805AAB0\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._154:\n"
+ " .align 2, 0\n"
+ "._153:\n"
+ " .word gUnknown_Debug_03004BC0\n"
+ " .word gMapObjects\n"
+ "\n"
+ );
+}
+#else
void sub_805B710(u16 a, u16 b)
{
u8 i;
@@ -2586,6 +3103,7 @@ void sub_805B710(u16 a, u16 b)
}
sub_805AAB0();
}
+#endif
extern void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8);
extern void sub_805B914(struct MapObject *);
diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c
index ba45e506d..a7594372d 100644
--- a/src/field/field_player_avatar.c
+++ b/src/field/field_player_avatar.c
@@ -32,9 +32,9 @@ static void npc_clear_strange_bits(struct MapObject *a);
static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c);
static void PlayerAllowForcedMovementIfMovingSameDirection(void);
static bool8 TryDoMetatileBehaviorForcedMovement(void);
-static u8 GetForcedMovementByMetatileBehavior(void);
+/*static*/ u8 GetForcedMovementByMetatileBehavior(void);
static void MovePlayerNotOnBike(u8 a, u16 b);
-static u8 CheckMovementInputNotOnBike(u8 a);
+/*static*/ u8 CheckMovementInputNotOnBike(u8 a);
static u8 CheckForPlayerAvatarCollision(u8 a);
static u8 sub_8058EF0(s16 a, s16 b, u8 c);
static bool8 ShouldJumpLedge(s16 a, s16 b, u8 c);
@@ -260,12 +260,59 @@ static void PlayerAllowForcedMovementIfMovingSameDirection(void)
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5;
}
+#if DEBUG
+__attribute__((naked))
+u8 TryDoMetatileBehaviorForcedMovement()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._27 @ gUnknown_020297ED\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._25 @cond_branch\n"
+ " ldr r0, ._27 + 4 @ gMain\n"
+ " ldrh r1, [r0, #0x2c]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._25 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._26\n"
+ "._28:\n"
+ " .align 2, 0\n"
+ "._27:\n"
+ " .word gUnknown_020297ED\n"
+ " .word gMain\n"
+ "._25:\n"
+ " ldr r4, ._29 @ gUnknown_0830FBA0\n"
+ " bl GetForcedMovementByMetatileBehavior\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x16\n"
+ " add r0, r0, r4\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ "._26:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._30:\n"
+ " .align 2, 0\n"
+ "._29:\n"
+ " .word gUnknown_0830FBA0\n"
+ "\n"
+ );
+}
+#else
static bool8 TryDoMetatileBehaviorForcedMovement(void)
{
return gUnknown_0830FBA0[GetForcedMovementByMetatileBehavior()]();
}
+#endif
-static u8 GetForcedMovementByMetatileBehavior(void)
+/*static*/ u8 GetForcedMovementByMetatileBehavior(void)
{
u8 i;
@@ -436,12 +483,57 @@ bool8 ForcedMovement_MuddySlope(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void MovePlayerNotOnBike(u8 u81, u16 u161)
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " add r5, r2, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r6, r1, #0x10\n"
+ " ldr r0, ._84 @ gUnknown_020297ED\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._82 @cond_branch\n"
+ " add r0, r2, #0\n"
+ " bl debug_sub_805F2B0\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._83 @cond_branch\n"
+ "._82:\n"
+ " ldr r4, ._84 + 4 @ gUnknown_0830FBEC\n"
+ " add r0, r5, #0\n"
+ " bl CheckMovementInputNotOnBike\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x16\n"
+ " add r0, r0, r4\n"
+ " ldr r2, [r0]\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " bl _call_via_r2\n"
+ "._83:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._85:\n"
+ " .align 2, 0\n"
+ "._84:\n"
+ " .word gUnknown_020297ED\n"
+ " .word gUnknown_0830FBEC\n"
+ "\n"
+ );
+}
+#else
static void MovePlayerNotOnBike(u8 direction, u16 heldKeys)
{
gUnknown_0830FBEC[CheckMovementInputNotOnBike(direction)](direction, heldKeys);
}
+#endif
-static u8 CheckMovementInputNotOnBike(u8 direction)
+/*static*/ u8 CheckMovementInputNotOnBike(u8 direction)
{
if (direction == DIR_NONE)
{
@@ -1763,3 +1855,98 @@ static void sub_805A954(void)
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 1, playerSprite->pos2.y);
}
+
+#if DEBUG
+__attribute__((naked))
+void debug_sub_805F2B0()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " ldr r0, ._422 @ gMain\n"
+ " ldrh r1, [r0, #0x2c]\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._420 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._421\n"
+ "._423:\n"
+ " .align 2, 0\n"
+ "._422:\n"
+ " .word gMain\n"
+ "._420:\n"
+ " add r0, r2, #0\n"
+ " bl debug_sub_805F2DC\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ "._421:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_805F2DC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0\n"
+ " bne ._424 @cond_branch\n"
+ " ldr r2, ._426 @ gMapObjects\n"
+ " ldr r0, ._426 + 4 @ gPlayerAvatar\n"
+ " ldrb r1, [r0, #0x5]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r2\n"
+ " ldrb r0, [r0, #0x18]\n"
+ " lsr r0, r0, #0x4\n"
+ " bl PlayerFaceDirection\n"
+ " b ._430\n"
+ "._427:\n"
+ " .align 2, 0\n"
+ "._426:\n"
+ " .word gMapObjects\n"
+ " .word gPlayerAvatar\n"
+ "._424:\n"
+ " ldr r2, ._431 @ gMapObjects\n"
+ " ldr r0, ._431 + 4 @ gPlayerAvatar\n"
+ " ldrb r1, [r0, #0x5]\n"
+ " lsl r0, r1, #0x3\n"
+ " add r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, r2\n"
+ " ldrb r0, [r0, #0x1]\n"
+ " lsr r0, r0, #0x7\n"
+ " cmp r0, #0\n"
+ " beq ._429 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl CanCameraMoveInDirection\n"
+ " cmp r0, #0\n"
+ " bne ._429 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl PlayerOnBikeCollide\n"
+ " b ._430\n"
+ "._432:\n"
+ " .align 2, 0\n"
+ "._431:\n"
+ " .word gMapObjects\n"
+ " .word gPlayerAvatar\n"
+ "._429:\n"
+ " add r0, r4, #0\n"
+ " bl PlayerGoSpeed4\n"
+ "._430:\n"
+ " mov r0, #0x1\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+#endif
diff --git a/src/field/field_weather.c b/src/field/field_weather.c
index 7beb1b440..fbc5431ae 100644
--- a/src/field/field_weather.c
+++ b/src/field/field_weather.c
@@ -43,7 +43,10 @@ struct WeatherCallbacks
EWRAM_DATA struct Weather gWeather = {0};
EWRAM_DATA u8 gFieldEffectPaletteGammaTypes[32] = {0};
-EWRAM_DATA u16 gUnknown_0202FF58 = {0};
+EWRAM_DATA u16 gUnknown_0202FF58 = 0;
+#if DEBUG
+EWRAM_DATA u16 gUnknown_Debug_20301FE = 0;
+#endif
static const u8 *sPaletteGammaTypes;
@@ -210,6 +213,45 @@ static const u8 sBasePaletteGammaTypes[32] =
GAMMA_NORMAL,
};
+#if DEBUG
+
+const u8 gDebugText_Weather_0[] = _("なし   ");
+const u8 gDebugText_Weather_1[] = _("はれ   ");
+const u8 gDebugText_Weather_2[] = _("はれ2  ");
+const u8 gDebugText_Weather_3[] = _("あめ   ");
+const u8 gDebugText_Weather_4[] = _("ゆき   ");
+const u8 gDebugText_Weather_5[] = _("かみなり ");
+const u8 gDebugText_Weather_6[] = _("きり   ");
+const u8 gDebugText_Weather_7[] = _("かざんばい");
+const u8 gDebugText_Weather_8[] = _("すなあらし");
+const u8 gDebugText_Weather_9[] = _("きり2  ");
+const u8 gDebugText_Weather_10[] = _("かいてい ");
+const u8 gDebugText_Weather_11[] = _("くもり  ");
+const u8 gDebugText_Weather_12[] = _("はれ3  ");
+const u8 gDebugText_Weather_13[] = _("おおあめ");
+const u8 gDebugText_Weather_14[] = _("かいてい2");
+
+const u8 *const gDebugText_Weather[] =
+{
+ gDebugText_Weather_0,
+ gDebugText_Weather_1,
+ gDebugText_Weather_2,
+ gDebugText_Weather_3,
+ gDebugText_Weather_4,
+ gDebugText_Weather_5,
+ gDebugText_Weather_6,
+ gDebugText_Weather_7,
+ gDebugText_Weather_8,
+ gDebugText_Weather_9,
+ gDebugText_Weather_10,
+ gDebugText_Weather_11,
+ gDebugText_Weather_12,
+ gDebugText_Weather_13,
+ gDebugText_Weather_14,
+};
+
+#endif
+
const u16 gUnknown_083970E8[] = INCBIN_U16("graphics/weather/0.gbapal");
void StartWeather(void)
@@ -1213,3 +1255,145 @@ void ResetPreservedPalettesInWeather(void)
{
sPaletteGammaTypes = sBasePaletteGammaTypes;
}
+
+#if DEBUG
+
+__attribute__((naked))
+u8 debug_sub_8085564(void)
+{
+ asm("\
+ push {lr}\n\
+ mov r2, #0x0\n\
+ ldr r0, ._375 @ gMain\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._370 @cond_branch\n\
+ ldr r1, ._375 + 4 @ gUnknown_Debug_20301FE\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0xf\n\
+ bne ._371 @cond_branch\n\
+ strb r2, [r1]\n\
+._371:\n\
+ mov r2, #0x1\n\
+._370:\n\
+ ldr r0, ._375 @ gMain\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._372 @cond_branch\n\
+ ldr r1, ._375 + 4 @ gUnknown_Debug_20301FE\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0\n\
+ beq ._373 @cond_branch\n\
+ sub r0, r0, #0x1\n\
+ b ._374\n\
+._376:\n\
+ .align 2, 0\n\
+._375:\n\
+ .word gMain\n\
+ .word gUnknown_Debug_20301FE\n\
+._373:\n\
+ mov r0, #0xe\n\
+._374:\n\
+ strb r0, [r1]\n\
+ mov r2, #0x1\n\
+._372:\n\
+ cmp r2, #0\n\
+ beq ._377 @cond_branch\n\
+ mov r0, #0x16\n\
+ mov r1, #0x1\n\
+ mov r2, #0x1c\n\
+ mov r3, #0x2\n\
+ bl Menu_BlankWindowRect\n\
+ ldr r1, ._380 @ gDebugText_Weather\n\
+ ldr r0, ._380 + 4 @ gUnknown_Debug_20301FE\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x17\n\
+ mov r2, #0x1\n\
+ bl Menu_PrintText\n\
+._377:\n\
+ ldr r0, ._380 + 8 @ gMain\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._378 @cond_branch\n\
+ mov r0, #0x0\n\
+ b ._379\n\
+._381:\n\
+ .align 2, 0\n\
+._380:\n\
+ .word gDebugText_Weather\n\
+ .word gUnknown_Debug_20301FE\n\
+ .word gMain\n\
+._378:\n\
+ ldr r0, ._382 @ gUnknown_Debug_20301FE\n\
+ ldrb r0, [r0]\n\
+ bl ChangeWeather\n\
+ bl CloseMenu\n\
+ mov r0, #0x1\n\
+._379:\n\
+ pop {r1}\n\
+ bx r1\n\
+._383:\n\
+ .align 2, 0\n\
+._382:\n\
+ .word gUnknown_Debug_20301FE");
+}
+
+__attribute__((naked))
+u8 debug_sub_808560C(void)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r4, ._384 @ gUnknown_Debug_20301FE\n\
+ ldr r0, ._384 + 4 @ gWeather\n\
+ mov r1, #0xda\n\
+ lsl r1, r1, #0x3\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r4]\n\
+ bl Menu_EraseScreen\n\
+ mov r0, #0x16\n\
+ mov r1, #0x1\n\
+ mov r2, #0x1c\n\
+ mov r3, #0x2\n\
+ bl Menu_BlankWindowRect\n\
+ ldr r1, ._384 + 8 @ gDebugText_Weather\n\
+ ldrb r0, [r4]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x17\n\
+ mov r2, #0x1\n\
+ bl Menu_PrintText\n\
+ ldr r1, ._384 + 12 @ gMenuCallback\n\
+ ldr r0, ._384 + 16 @ debug_sub_8085564\n\
+ str r0, [r1]\n\
+ mov r0, #0x0\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+._385:\n\
+ .align 2, 0\n\
+._384:\n\
+ .word gUnknown_Debug_20301FE\n\
+ .word gWeather\n\
+ .word gDebugText_Weather\n\
+ .word gMenuCallback\n\
+ .word debug_sub_8085564+1");
+}
+
+#endif
diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c
index 513107729..5d39b87a9 100644
--- a/src/field/fldeff_cut.c
+++ b/src/field/fldeff_cut.c
@@ -72,6 +72,115 @@ static const struct SpriteTemplate gSpriteTemplate_CutGrass =
.callback = sub_80A2A48,
};
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80AFEE4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, r8\n"
+ " push {r7}\n"
+ " mov r0, #0x52\n"
+ " bl npc_before_player_of_type\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._1 @cond_branch\n"
+ " ldr r1, ._3 @ gLastFieldPokeMenuOpened\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " bl sub_80A2634\n"
+ " b ._8\n"
+ "._4:\n"
+ " .align 2, 0\n"
+ "._3:\n"
+ " .word gLastFieldPokeMenuOpened\n"
+ "._1:\n"
+ " ldr r4, ._9 @ gUnknown_0203923C\n"
+ " add r1, r4, #2\n"
+ " add r0, r4, #0\n"
+ " bl PlayerGetDestCoords\n"
+ " mov r7, #0x0\n"
+ " mov r8, r4\n"
+ "._12:\n"
+ " ldr r1, ._9 + 4 @ 0xffff\n"
+ " add r0, r7, r1\n"
+ " mov r2, r8\n"
+ " ldrh r2, [r2, #0x2]\n"
+ " add r0, r0, r2\n"
+ " mov r6, #0x0\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r5, r0, #0x10\n"
+ "._11:\n"
+ " ldr r1, ._9 + 4 @ 0xffff\n"
+ " add r0, r6, r1\n"
+ " mov r2, r8\n"
+ " ldrh r2, [r2]\n"
+ " add r0, r0, r2\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r4, r0, #0x10\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " bl MapGridGetZCoordAt\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r2, r8\n"
+ " mov r1, #0x4\n"
+ " ldsb r1, [r2, r1]\n"
+ " cmp r0, r1\n"
+ " bne ._7 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " bl MapGridGetMetatileBehaviorAt\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " add r0, r4, #0\n"
+ " bl MetatileBehavior_IsPokeGrass\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " beq ._6 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl MetatileBehavior_IsAshGrass\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._7 @cond_branch\n"
+ "._6:\n"
+ " ldr r1, ._9 + 8 @ gLastFieldPokeMenuOpened\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ " bl sub_80A25E8\n"
+ " b ._8\n"
+ "._10:\n"
+ " .align 2, 0\n"
+ "._9:\n"
+ " .word gUnknown_0203923C\n"
+ " .word 0xffff\n"
+ " .word gLastFieldPokeMenuOpened\n"
+ "._7:\n"
+ " add r0, r6, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " cmp r6, #0x2\n"
+ " bls ._11 @cond_branch\n"
+ " add r0, r7, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " cmp r7, #0x2\n"
+ " bls ._12 @cond_branch\n"
+ " bl ScriptContext2_Disable\n"
+ "._8:\n"
+ " pop {r3}\n"
+ " mov r8, r3\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+#endif
+
bool8 SetUpFieldMove_Cut(void)
{
s16 x, y;
diff --git a/src/field/fldeff_flash.c b/src/field/fldeff_flash.c
index 22f170184..8c0f09bd9 100644
--- a/src/field/fldeff_flash.c
+++ b/src/field/fldeff_flash.c
@@ -71,6 +71,36 @@ static const u16 gUnknown_083F809C[] = INCBIN_U16("graphics/misc/83F809C.gbapal"
static const u16 gCaveTransitionTilemap[] = INCBIN_U16("graphics/misc/cave_transition_map.bin.lz");
static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transition.4bpp.lz");
+#if DEBUG
+__attribute__((naked))
+void debug_sub_8122080(void)
+{
+ asm("\
+ push {lr}\n\
+ ldr r0, ._4 @ gMapHeader\n\
+ ldrb r0, [r0, #0x15]\n\
+ cmp r0, #0x1\n\
+ bne ._2 @cond_branch\n\
+ ldr r0, ._4 + 4 @ 0x828\n\
+ bl FlagGet\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._2 @cond_branch\n\
+ bl sub_810CBFC\n\
+ b ._3\n\
+._5:\n\
+ .align 2, 0\n\
+._4:\n\
+ .word gMapHeader\n\
+ .word 0x828\n\
+._2:\n\
+ bl ScriptContext2_Disable\n\
+._3:\n\
+ pop {r0}\n\
+ bx r0");
+}
+#endif
+
bool8 SetUpFieldMove_Flash(void)
{
if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH))
diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c
index bf8e98403..0e91bb55c 100644
--- a/src/field/fldeff_secretpower.c
+++ b/src/field/fldeff_secretpower.c
@@ -243,6 +243,102 @@ void sub_80C6280(void)
}
}
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_80D93F4()
+{
+ asm("\
+ push {r4, lr}\n\
+ bl sub_80BB63C\n\
+ ldr r0, ._98 @ gSpecialVar_Result\n\
+ ldrh r0, [r0]\n\
+ cmp r0, #0x1\n\
+ beq ._95 @cond_branch\n\
+ bl player_get_direction_lower_nybble\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x2\n\
+ beq ._96 @cond_branch\n\
+._95:\n\
+ bl ScriptContext2_Disable\n\
+ b ._109\n\
+._99:\n\
+ .align 2, 0\n\
+._98:\n\
+ .word gSpecialVar_Result\n\
+._96:\n\
+ ldr r4, ._102 @ gUnknown_0203923C\n\
+ add r1, r4, #2\n\
+ add r0, r4, #0\n\
+ bl GetXYCoordsOneStepInFrontOfPlayer\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r4, r1]\n\
+ mov r2, #0x2\n\
+ ldsh r1, [r4, r2]\n\
+ bl MapGridGetMetatileBehaviorAt\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ add r0, r4, #0\n\
+ bl MetatileBehavior_IsSecretBaseCave\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._100 @cond_branch\n\
+ bl sub_80C6264\n\
+ ldr r1, ._102 + 4 @ gLastFieldPokeMenuOpened\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ bl sub_80C639C\n\
+ b ._109\n\
+._103:\n\
+ .align 2, 0\n\
+._102:\n\
+ .word gUnknown_0203923C\n\
+ .word gLastFieldPokeMenuOpened\n\
+._100:\n\
+ add r0, r4, #0\n\
+ bl MetatileBehavior_IsSecretBaseTree\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._104 @cond_branch\n\
+ bl sub_80C6264\n\
+ ldr r1, ._106 @ gLastFieldPokeMenuOpened\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ bl sub_80C64A8\n\
+ b ._109\n\
+._107:\n\
+ .align 2, 0\n\
+._106:\n\
+ .word gLastFieldPokeMenuOpened\n\
+._104:\n\
+ add r0, r4, #0\n\
+ bl MetatileBehavior_IsSecretBaseShrub\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._108 @cond_branch\n\
+ bl sub_80C6264\n\
+ ldr r1, ._110 @ gLastFieldPokeMenuOpened\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ bl sub_80C660C\n\
+ b ._109\n\
+._111:\n\
+ .align 2, 0\n\
+._110:\n\
+ .word gLastFieldPokeMenuOpened\n\
+._108:\n\
+ bl ScriptContext2_Disable\n\
+._109:\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0");
+}
+#endif
+
bool8 SetUpFieldMove_SecretPower(void)
{
u8 behavior;
diff --git a/src/field/fldeff_strength.c b/src/field/fldeff_strength.c
index 565ac1651..9f9cd4013 100644
--- a/src/field/fldeff_strength.c
+++ b/src/field/fldeff_strength.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "constants/map_objects.h"
#include "braille_puzzles.h"
#include "field_effect.h"
#include "party_menu.h"
@@ -20,6 +21,28 @@ extern void (*gUnknown_03005CE4)(void);
extern u8 S_UseStrength[];
+#if DEBUG
+void debug_sub_8130318(void)
+{
+ if (ShouldDoBrailleStrengthEffect())
+ {
+ gLastFieldPokeMenuOpened = 0;
+ gSpecialVar_Result = 0;
+ sub_811AA38();
+ }
+ else if (npc_before_player_of_type(MAP_OBJ_GFX_PUSHABLE_BOULDER) == TRUE)
+ {
+ gLastFieldPokeMenuOpened = 0;
+ gSpecialVar_Result = 0;
+ sub_811AA18();
+ }
+ else
+ {
+ ScriptContext2_Disable();
+ }
+}
+#endif
+
bool8 SetUpFieldMove_Strength(void)
{
if (ShouldDoBrailleStrengthEffect())
diff --git a/src/field/item_menu.c b/src/field/item_menu.c
index 959eb09ae..ae1465fbd 100644
--- a/src/field/item_menu.c
+++ b/src/field/item_menu.c
@@ -158,6 +158,9 @@ extern struct PocketScrollState gBagPocketScrollStates[];
extern struct ItemSlot *gCurrentBagPocketItemSlots; // selected pocket item slots
extern const u8 Event_NoRegisteredItem[];
+// TODO: decompile the debug code so we can use static in this file
+#define static
+
extern const struct CompressedSpriteSheet sMaleBagSpriteSheet;
extern const struct CompressedSpriteSheet sFemaleBagSpriteSheet;
extern const struct CompressedSpritePalette sBagSpritePalette;
@@ -286,6 +289,24 @@ static void sub_80A6618(u8);
const struct YesNoFuncTable gUnknown_083C16FC = {sub_80A65AC, sub_80A6618};
+#if DEBUG
+const struct {u16 item; u8 unk;} gUnknown_Debug_083EBC68[12+48] =
+{
+ {ITEM_POKE_BALL, 10},
+ {ITEM_ULTRA_BALL, 15},
+ {ITEM_GREAT_BALL, 20},
+ {ITEM_MASTER_BALL, 25},
+ {ITEM_ACRO_BIKE, 1 },
+ {ITEM_OLD_ROD, 1 },
+ {ITEM_GOOD_ROD, 1 },
+ {ITEM_SUPER_ROD, 1 },
+ {ITEM_POKEBLOCK_CASE, 1 },
+ {ITEM_WAILMER_PAIL, 1 },
+ {ITEM_ITEMFINDER, 1 },
+ {ITEM_NONE, 1 },
+};
+#endif
+
void sub_80A34E8(void);
static bool8 LoadBagGraphicsMultistep(void);
static void sub_80A362C(void);
@@ -372,6 +393,390 @@ static void sub_80A3134(void)
DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(VRAM + 0x6000), 0x800);
}
+#if DEBUG
+__attribute__((naked))
+static bool8 SetupBagMultistep(void)
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._5 @ gMain\n\
+ ldr r1, ._5 + 4 @ 0x43c\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x10\n\
+ bls ._3 @cond_branch\n\
+ b ._66\n\
+._3:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._5 + 8 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._6:\n\
+ .align 2, 0\n\
+._5:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+ .word ._7\n\
+._7:\n\
+ .word ._8\n\
+ .word ._9\n\
+ .word ._10\n\
+ .word ._11\n\
+ .word ._12\n\
+ .word ._13\n\
+ .word ._14\n\
+ .word ._15\n\
+ .word ._16\n\
+ .word ._17\n\
+ .word ._18\n\
+ .word ._19\n\
+ .word ._20\n\
+ .word ._21\n\
+ .word ._22\n\
+ .word ._23\n\
+ .word ._24\n\
+._8:\n\
+ bl ClearVideoCallbacks\n\
+ bl sub_80A34E8\n\
+ b ._61\n\
+._9:\n\
+ bl ScanlineEffect_Stop\n\
+ ldr r1, ._27 @ gMain\n\
+ ldr r0, ._27 + 4 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._28:\n\
+ .align 2, 0\n\
+._27:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._10:\n\
+ bl gpu_pal_allocator_reset__manage_upper_four\n\
+ b ._61\n\
+._11:\n\
+ bl ClearBGTilemapBuffers\n\
+ ldr r0, ._31 @ \n\
+ ldr r1, ._31 + 4 @ \n\
+ add r0, r0, r1\n\
+ mov r1, #0x0\n\
+ strb r1, [r0]\n\
+ b ._61\n\
+._32:\n\
+ .align 2, 0\n\
+._31:\n\
+ .word +0x2000000\n\
+ .word 0x1ffff\n\
+._12:\n\
+ bl ResetPaletteFade\n\
+ ldr r2, ._34 @ gPaletteFade\n\
+ ldrb r0, [r2, #0x8]\n\
+ mov r1, #0x80\n\
+ orr r0, r0, r1\n\
+ strb r0, [r2, #0x8]\n\
+ ldr r1, ._34 + 4 @ gMain\n\
+ ldr r0, ._34 + 8 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._35:\n\
+ .align 2, 0\n\
+._34:\n\
+ .word gPaletteFade\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._13:\n\
+ bl ResetSpriteData\n\
+ b ._61\n\
+._14:\n\
+ bl LoadBagGraphicsMultistep\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._37 @cond_branch\n\
+ b ._66\n\
+._37:\n\
+ ldr r1, ._40 @ gMain\n\
+ ldr r0, ._40 + 4 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._41:\n\
+ .align 2, 0\n\
+._40:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._15:\n\
+ ldr r0, ._43 @ gWindowTemplate_81E6DFC\n\
+ bl Text_LoadWindowTemplate\n\
+ b ._61\n\
+._44:\n\
+ .align 2, 0\n\
+._43:\n\
+ .word gWindowTemplate_81E6DFC\n\
+._16:\n\
+ ldr r0, ._46 @ gWindowTemplate_81E6DFC\n\
+ bl MultistepInitMenuWindowBegin\n\
+ ldr r1, ._46 + 4 @ gMain\n\
+ ldr r0, ._46 + 8 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._47:\n\
+ .align 2, 0\n\
+._46:\n\
+ .word gWindowTemplate_81E6DFC\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._17:\n\
+ bl MultistepInitMenuWindowContinue\n\
+ cmp r0, #0\n\
+ bne ._48 @cond_branch\n\
+ b ._66\n\
+._48:\n\
+ b ._61\n\
+._18:\n\
+ bl ClearVerticalScrollIndicatorPalettes\n\
+ bl LoadScrollIndicatorPalette\n\
+ mov r0, #0x0\n\
+ mov r1, #0xac\n\
+ mov r2, #0xc\n\
+ bl CreateVerticalScrollIndicators\n\
+ mov r0, #0x1\n\
+ mov r1, #0xac\n\
+ mov r2, #0x94\n\
+ bl CreateVerticalScrollIndicators\n\
+ mov r0, #0x2\n\
+ mov r1, #0x1c\n\
+ mov r2, #0x58\n\
+ bl CreateVerticalScrollIndicators\n\
+ mov r0, #0x3\n\
+ mov r1, #0x64\n\
+ mov r2, #0x58\n\
+ bl CreateVerticalScrollIndicators\n\
+ mov r0, #0x0\n\
+ mov r1, #0x2\n\
+ bl SetVerticalScrollIndicatorPriority\n\
+ mov r0, #0x1\n\
+ mov r1, #0x2\n\
+ bl SetVerticalScrollIndicatorPriority\n\
+ mov r0, #0x2\n\
+ mov r1, #0x2\n\
+ bl SetVerticalScrollIndicatorPriority\n\
+ mov r0, #0x3\n\
+ mov r1, #0x2\n\
+ bl SetVerticalScrollIndicatorPriority\n\
+ ldr r0, ._53 @ sReturnLocation\n\
+ ldrb r0, [r0]\n\
+ sub r0, r0, #0x4\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bhi ._51 @cond_branch\n\
+ mov r0, #0x2\n\
+ mov r1, #0x1\n\
+ bl SetVerticalScrollIndicators\n\
+ mov r0, #0x3\n\
+ mov r1, #0x1\n\
+ bl SetVerticalScrollIndicators\n\
+._51:\n\
+ ldr r1, ._53 + 4 @ gMain\n\
+ ldr r0, ._53 + 8 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._54:\n\
+ .align 2, 0\n\
+._53:\n\
+ .word sReturnLocation\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._19:\n\
+ ldr r1, ._56 @ gUnknown_0203855A\n\
+ mov r0, #0x10\n\
+ strb r0, [r1]\n\
+ ldr r4, ._56 + 4 @ gBGTilemapBuffers\n\
+ ldr r5, ._56 + 8 @ sCurrentBagPocket\n\
+ ldrb r1, [r5]\n\
+ add r1, r1, #0x1\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ add r0, r4, #0\n\
+ bl sub_80A39B8\n\
+ ldrb r1, [r5]\n\
+ add r0, r4, #0\n\
+ bl DrawPocketIndicatorDots\n\
+ bl UpdateAllBagPockets\n\
+ ldr r4, ._56 + 12 @ gBagPockets\n\
+ ldr r0, [r4, #0x10]\n\
+ ldr r1, [r4, #0x14]\n\
+ bl SortItemSlots\n\
+ ldr r0, [r4, #0x18]\n\
+ ldr r1, [r4, #0x1c]\n\
+ bl SortItemSlots\n\
+ bl sub_80A3D40\n\
+ ldr r1, ._56 + 16 @ gCurrentBagPocketItemSlots\n\
+ mov r0, #0x0\n\
+ ldsb r0, [r5, r0]\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r4\n\
+ ldr r0, [r0]\n\
+ str r0, [r1]\n\
+ bl sub_80A362C\n\
+ b ._61\n\
+._57:\n\
+ .align 2, 0\n\
+._56:\n\
+ .word gUnknown_0203855A\n\
+ .word gBGTilemapBuffers+0x1000\n\
+ .word sCurrentBagPocket\n\
+ .word gBagPockets\n\
+ .word gCurrentBagPocketItemSlots\n\
+._20:\n\
+ ldr r0, ._59 @ 0xffff\n\
+ mov r1, #0x0\n\
+ mov r2, #0x7\n\
+ bl sub_80A48E8\n\
+ ldr r1, ._59 + 4 @ gBagPocketScrollStates\n\
+ ldr r4, ._59 + 8 @ sCurrentBagPocket\n\
+ mov r0, #0x0\n\
+ ldsb r0, [r4, r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x1]\n\
+ ldrb r0, [r0]\n\
+ add r1, r1, r0\n\
+ ldr r0, ._59 + 12 @ gCurrentBagPocketItemSlots\n\
+ ldr r0, [r0]\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r0\n\
+ mov r2, #0x0\n\
+ ldsh r0, [r1, r2]\n\
+ bl ItemListMenu_InitDescription\n\
+ bl ItemListMenu_InitMenu\n\
+ ldr r1, ._59 + 16 @ gUnknown_0203855B\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ ldr r1, ._59 + 20 @ gUnknown_0203855C\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ ldr r1, ._59 + 24 @ gMain\n\
+ ldr r0, ._59 + 28 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._60:\n\
+ .align 2, 0\n\
+._59:\n\
+ .word 0xffff\n\
+ .word gBagPocketScrollStates\n\
+ .word sCurrentBagPocket\n\
+ .word gCurrentBagPocketItemSlots\n\
+ .word gUnknown_0203855B\n\
+ .word gUnknown_0203855C\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._21:\n\
+ bl CreateBagSprite\n\
+ mov r0, #0x0\n\
+ bl CreateBagPokeballSprite\n\
+ bl sub_80A3740\n\
+ b ._61\n\
+._22:\n\
+ ldr r3, ._63 @ 0x4000208\n\
+ ldrh r2, [r3]\n\
+ mov r0, #0x0\n\
+ strh r0, [r3]\n\
+ ldr r4, ._63 + 4 @ 0x4000200\n\
+ ldrh r0, [r4]\n\
+ mov r1, #0x1\n\
+ orr r0, r0, r1\n\
+ strh r0, [r4]\n\
+ strh r2, [r3]\n\
+ ldr r2, ._63 + 8 @ 0x4000004\n\
+ ldrh r0, [r2]\n\
+ mov r1, #0x8\n\
+ orr r0, r0, r1\n\
+ strh r0, [r2]\n\
+ mov r0, #0x1\n\
+ neg r0, r0\n\
+ mov r1, #0x0\n\
+ str r1, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r2, ._63 + 12 @ gPaletteFade\n\
+ ldrb r1, [r2, #0x8]\n\
+ mov r0, #0x7f\n\
+ and r0, r0, r1\n\
+ strb r0, [r2, #0x8]\n\
+ ldr r1, ._63 + 16 @ gMain\n\
+ ldr r0, ._63 + 20 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._62\n\
+._64:\n\
+ .align 2, 0\n\
+._63:\n\
+ .word 0x4000208\n\
+ .word 0x4000200\n\
+ .word 0x4000004\n\
+ .word gPaletteFade\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._23:\n\
+ bl sub_8055870\n\
+ cmp r0, #0x1\n\
+ beq ._66 @cond_branch\n\
+._61:\n\
+ ldr r1, ._67 @ gMain\n\
+ ldr r2, ._67 + 4 @ 0x43c\n\
+ add r1, r1, r2\n\
+._62:\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ b ._66\n\
+._68:\n\
+ .align 2, 0\n\
+._67:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._24:\n\
+ ldr r0, ._71 @ sub_80A3134\n\
+ bl SetVBlankCallback\n\
+ ldr r0, ._71 + 4 @ sub_80A3118\n\
+ bl SetMainCallback2\n\
+ bl sub_80A751C\n\
+ bl sub_80A7630\n\
+ bl sub_80A770C\n\
+ bl sub_80A7828\n\
+ bl sub_80A78B8\n\
+ ldr r0, ._71 + 8 @ gLinkOpen\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._69 @cond_branch\n\
+ ldr r0, ._71 + 12 @ 0x600f5e0\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x8\n\
+ ldr r2, ._71 + 16 @ 0x600f800\n\
+ mov r3, #0x0\n\
+ bl debug_sub_8008218\n\
+._69:\n\
+ mov r0, #0x1\n\
+ b ._70\n\
+._72:\n\
+ .align 2, 0\n\
+._71:\n\
+ .word sub_80A3134+1\n\
+ .word sub_80A3118+1\n\
+ .word gLinkOpen\n\
+ .word 0x600f5e0\n\
+ .word 0x600f800\n\
+._66:\n\
+ mov r0, #0x0\n\
+._70:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5}\n\
+ pop {r1}\n\
+ bx r1");
+}
+#else
static bool8 SetupBagMultistep(void)
{
u32 index;
@@ -496,6 +901,7 @@ static bool8 SetupBagMultistep(void)
}
return FALSE;
}
+#endif
static bool8 sub_80A34B4(void)
{
@@ -622,6 +1028,79 @@ void ClearBag(void)
ResetBagScrollPositions();
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80A3714()
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ add sp, sp, #0xfffffff4\n\
+ mov r5, #0x0\n\
+ ldr r2, ._138 @ gUnknown_Debug_083EBC68\n\
+ mov r1, #0x0\n\
+._134:\n\
+ lsl r0, r5, #0x1\n\
+ add r0, r0, sp\n\
+ strh r1, [r0]\n\
+ add r0, r5, #1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r5, r0, #0x10\n\
+ cmp r5, #0x4\n\
+ bls ._134 @cond_branch\n\
+ mov r5, #0x0\n\
+ ldrh r0, [r2]\n\
+ cmp r0, #0\n\
+ beq ._136 @cond_branch\n\
+ add r6, r2, #0\n\
+._137:\n\
+ lsl r4, r5, #0x2\n\
+ add r4, r4, r6\n\
+ ldrh r0, [r4]\n\
+ bl ItemId_GetPocket\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x8\n\
+ ldr r1, ._138 + 4 @ 0xffff0000\n\
+ add r0, r0, r1\n\
+ lsr r0, r0, #0x10\n\
+ ldr r1, ._138 + 8 @ gBagPockets\n\
+ lsl r2, r0, #0x3\n\
+ add r2, r2, r1\n\
+ lsl r0, r0, #0x1\n\
+ mov r1, sp\n\
+ add r3, r1, r0\n\
+ ldrh r1, [r3]\n\
+ ldr r0, [r2]\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r0\n\
+ ldr r0, [r4]\n\
+ str r0, [r1]\n\
+ ldrh r0, [r3]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r3]\n\
+ add r0, r5, #1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r5, r0, #0x10\n\
+ cmp r5, #0x3b\n\
+ bhi ._136 @cond_branch\n\
+ lsl r0, r5, #0x2\n\
+ add r0, r0, r6\n\
+ ldrh r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._137 @cond_branch\n\
+._136:\n\
+ add sp, sp, #0xc\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._139:\n\
+ .align 2, 0\n\
+._138:\n\
+ .word gUnknown_Debug_083EBC68\n\
+ .word 0xffff0000\n\
+ .word gBagPockets");
+}
+#endif
+
static void sub_80A3740(void)
{
const u16 colors[2] = {RGB(14, 15, 16), RGB_WHITE};
@@ -3561,12 +4040,49 @@ static void sub_80A73FC(void)
MenuCursor_Destroy814AD44();
}
+#if DEBUG
+__attribute__((naked))
+static void sub_80A740C(void)
+{
+ asm("\
+ push {lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ bl sub_80A75E4\n\
+ bl sub_80A7768\n\
+ bl sub_80A7420\n\
+ ldr r0, ._931 @ gLinkOpen\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._930 @cond_branch\n\
+ ldr r0, ._931 + 4 @ gLink\n\
+ ldr r1, ._931 + 8 @ 0xfbd\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x0\n\
+ str r1, [sp]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x1\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._930:\n\
+ add sp, sp, #0x4\n\
+ pop {r0}\n\
+ bx r0\n\
+._932:\n\
+ .align 2, 0\n\
+._931:\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
static void sub_80A740C(void)
{
sub_80A75E4();
sub_80A7768();
sub_80A7420();
}
+#endif
static void sub_80A7420(void)
{
diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c
index 0a841eed1..b42c50513 100644
--- a/src/field/mauville_man.c
+++ b/src/field/mauville_man.c
@@ -250,7 +250,88 @@ void SetupMauvilleOldMan(void)
sub_80F83D0();
}
-static u8 GetCurrentMauvilleOldMan(void)
+#if DEBUG
+__attribute__((naked))
+void debug_sub_810B32C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x4\n"
+ " bhi ._37 @cond_branch\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._23 @ \n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._24:\n"
+ " .align 2, 0\n"
+ "._23:\n"
+ " .word ._22\n"
+ "._22:\n"
+ " .word ._25\n"
+ " .word ._26\n"
+ " .word ._27\n"
+ " .word ._28\n"
+ " .word ._29\n"
+ "._25:\n"
+ " bl SetupBard\n"
+ " b ._37\n"
+ "._26:\n"
+ " mov r2, #0x0\n"
+ " ldr r3, ._34 @ gSaveBlock1\n"
+ "._31:\n"
+ " mov r0, sp\n"
+ " add r1, r0, r2\n"
+ " add r0, r2, r3\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r1]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x7\n"
+ " bls ._31 @cond_branch\n"
+ " bl SetupHipster\n"
+ " mov r2, #0x0\n"
+ " ldr r3, ._34 @ gSaveBlock1\n"
+ "._32:\n"
+ " add r1, r2, r3\n"
+ " mov r4, sp\n"
+ " add r0, r4, r2\n"
+ " ldrb r0, [r0]\n"
+ " strb r0, [r1]\n"
+ " add r0, r2, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " cmp r2, #0x7\n"
+ " bls ._32 @cond_branch\n"
+ " b ._37\n"
+ "._35:\n"
+ " .align 2, 0\n"
+ "._34:\n"
+ " .word gSaveBlock1+0x2d8c\n"
+ "._27:\n"
+ " bl SetupTrader\n"
+ " b ._37\n"
+ "._28:\n"
+ " bl SetupStoryteller\n"
+ " b ._37\n"
+ "._29:\n"
+ " bl SetupGiddy\n"
+ "._37:\n"
+ " bl sub_80F83D0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+#endif
+
+u8 GetCurrentMauvilleOldMan(void)
{
struct MauvilleManCommon *common = &gSaveBlock1.mauvilleMan.common;
diff --git a/src/field/overworld.c b/src/field/overworld.c
index 07453e4fe..07135080e 100644
--- a/src/field/overworld.c
+++ b/src/field/overworld.c
@@ -25,6 +25,7 @@
#include "link.h"
#include "load_save.h"
#include "main.h"
+#include "m4a.h"
#include "constants/maps.h"
#include "map_name_popup.h"
#include "menu.h"
@@ -62,6 +63,7 @@ struct UnkTVStruct
u32 tv_field_4;
};
+extern u8 gUnknown_020297ED;
extern u16 gUnknown_03004898;
extern u16 gUnknown_0300489C;
@@ -1106,6 +1108,68 @@ u8 sav1_map_get_battletype(void)
return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType;
}
+#if DEBUG
+
+void debug_sub_8076B68(void);
+
+void debug_sub_80589D8(void);
+
+void debug_sub_8058A50(void);
+
+void CB2_InitTestMenu(void)
+{
+ m4aSoundVSyncOff();
+ SetVBlankCallback(NULL);
+ DmaFill32(3, 0, (void *) VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *) PLTT, PLTT_SIZE);
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ ScanlineEffect_Stop();
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gWindowTemplate_81E6CE4);
+ debug_sub_8076B68();
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ REG_IE |= 1;
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP;
+ m4aSoundVSyncOn();
+ SetVBlankCallback(debug_sub_8058A50);
+ m4aSongNumStart(0x19D);
+ SetMainCallback2(debug_sub_80589D8);
+}
+
+void debug_sub_80589D8(void)
+{
+ if (UpdatePaletteFade())
+ return;
+
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+void debug_sub_80589F4(void)
+{
+ if (UpdatePaletteFade())
+ return;
+
+ SetVBlankCallback(NULL);
+
+ DmaFill32(3, 0, (void *) VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *) PLTT, PLTT_SIZE);
+
+ SetMainCallback2(gMain.savedCallback);
+}
+
+void debug_sub_8058A50(void)
+{
+ ProcessSpriteCopyRequests();
+ LoadOam();
+ TransferPlttBuffer();
+}
+
+#endif
+
void ResetSafariZoneFlag_(void)
{
ResetSafariZoneFlag();
@@ -1210,6 +1274,33 @@ void CB2_NewGame(void)
SetMainCallback2(c2_overworld);
}
+#if DEBUG
+
+extern void (*gFieldCallback)(void);
+
+void debug_sub_8058C00(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ StopMapMusic();
+ ResetSafariZoneFlag_();
+ player_avatar_init_params_reset();
+ PlayTimeCounter_Start();
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+
+ if (gMain.heldKeys & R_BUTTON)
+ gFieldCallback = ExecuteTruckSequence;
+ else
+ gFieldCallback = sub_8080B60;
+
+ do_load_map_stuff_loop(&gMain.state);
+ SetFieldVBlankCallback();
+ set_callback1(c1_overworld);
+ SetMainCallback2(c2_overworld);
+}
+
+#endif
+
void CB2_WhiteOut(void)
{
u8 val;
@@ -1365,6 +1456,10 @@ void CB2_ContinueSavedGame(void)
{
FieldClearVBlankHBlankCallbacks();
StopMapMusic();
+#if DEBUG
+ if (gMain.heldKeys & R_BUTTON)
+ gUnknown_020297ED = TRUE;
+#endif
ResetSafariZoneFlag_();
LoadSaveblockMapHeader();
LoadSaveblockMapObjScripts();
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index f55ed669d..66e7e2319 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -94,9 +94,9 @@ static void SpriteCB_UpdateHeldItemIconPosition(struct Sprite *sprite);
static void ItemUseMoveMenu_HandleMoveSelection(u8 taskId);
static void ItemUseMoveMenu_HandleCancel(u8 taskId);
static bool8 SetupDefaultPartyMenu(void);
-static void sub_806B4A8(void);
-static void VBlankCB_PartyMenu(void);
-static bool8 LoadPartyMenuGraphics(u8 a);
+/*static*/ void sub_806B4A8(void);
+/*static*/ void VBlankCB_PartyMenu(void);
+/*static*/ bool8 LoadPartyMenuGraphics(u8 a);
static void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d);
static void sub_806BB9C(u8 a);
static void sub_806BBEC(u8 a);
@@ -493,6 +493,71 @@ extern const u8 gStatusPal_Icons[];
#define WINDOW_RIGHT (29)
#endif
+#if DEBUG
+__attribute__((naked))
+void CB2_PartyMenuMain(void)
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ bl AnimateSprites\n\
+ bl BuildOamBuffer\n\
+ ldr r0, ._3 @ gPartyMenuType\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x4\n\
+ ldr r1, ._3 + 4 @ PartyMonTextSettings\n\
+ add r5, r0, r1\n\
+ mov r6, #0x0\n\
+._1:\n\
+ ldrb r0, [r5]\n\
+ lsl r0, r0, #0x3\n\
+ ldrb r1, [r5, #0x1]\n\
+ lsl r1, r1, #0x3\n\
+ ldr r2, [r5, #0x4]\n\
+ lsl r3, r6, #0x5\n\
+ mov r4, #0x80\n\
+ lsl r4, r4, #0x2\n\
+ orr r3, r3, r4\n\
+ str r3, [sp]\n\
+ mov r3, #0x0\n\
+ bl DrawPartyMenuMonText\n\
+ add r5, r5, #0x8\n\
+ add r6, r6, #0x1\n\
+ cmp r6, #0x5\n\
+ ble ._1 @cond_branch\n\
+ bl RunTasks\n\
+ bl UpdatePaletteFade\n\
+ ldr r0, ._3 + 8 @ gLinkOpen\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._2 @cond_branch\n\
+ ldr r0, ._3 + 12 @ gLink\n\
+ ldr r1, ._3 + 16 @ 0xfbd\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x2\n\
+ str r1, [sp]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x1\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._2:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._4:\n\
+ .align 2, 0\n\
+._3:\n\
+ .word gPartyMenuType\n\
+ .word PartyMonTextSettings\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
void CB2_PartyMenuMain(void)
{
const struct PartyMonTextSettingsStruct *textSettings;
@@ -517,6 +582,7 @@ void CB2_PartyMenuMain(void)
RunTasks();
UpdatePaletteFade();
}
+#endif
void VBlankCB_PartyMenu(void)
{
@@ -621,6 +687,425 @@ bool8 SetupDefaultPartyMenu(void)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+bool8 InitPartyMenu(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ add sp, sp, #0xfffffff4\n\
+ ldr r0, ._55 @ gMain\n\
+ ldr r1, ._55 + 4 @ 0x43c\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x11\n\
+ bls ._53 @cond_branch\n\
+ b ._125\n\
+._53:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._55 + 8 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._56:\n\
+ .align 2, 0\n\
+._55:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+ .word ._57\n\
+._57:\n\
+ .word ._58\n\
+ .word ._59\n\
+ .word ._60\n\
+ .word ._61\n\
+ .word ._62\n\
+ .word ._63\n\
+ .word ._64\n\
+ .word ._65\n\
+ .word ._66\n\
+ .word ._67\n\
+ .word ._68\n\
+ .word ._69\n\
+ .word ._70\n\
+ .word ._71\n\
+ .word ._72\n\
+ .word ._73\n\
+ .word ._74\n\
+ .word ._75\n\
+._58:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ mov r3, #0xc0\n\
+ lsl r3, r3, #0x13\n\
+ mov r4, #0xc0\n\
+ lsl r4, r4, #0x9\n\
+ add r2, sp, #0x8\n\
+ mov r8, r2\n\
+ add r2, sp, #0x4\n\
+ mov r6, #0x0\n\
+ ldr r1, ._78 @ 0x40000d4\n\
+ mov r5, #0x80\n\
+ lsl r5, r5, #0x5\n\
+ ldr r7, ._78 + 4 @ 0x81000800\n\
+ mov r0, #0x81\n\
+ lsl r0, r0, #0x18\n\
+ mov ip, r0\n\
+._76:\n\
+ strh r6, [r2]\n\
+ add r0, sp, #0x4\n\
+ str r0, [r1]\n\
+ str r3, [r1, #0x4]\n\
+ str r7, [r1, #0x8]\n\
+ ldr r0, [r1, #0x8]\n\
+ add r3, r3, r5\n\
+ sub r4, r4, r5\n\
+ cmp r4, r5\n\
+ bhi ._76 @cond_branch\n\
+ strh r6, [r2]\n\
+ add r2, sp, #0x4\n\
+ str r2, [r1]\n\
+ str r3, [r1, #0x4]\n\
+ lsr r0, r4, #0x1\n\
+ mov r3, ip\n\
+ orr r0, r0, r3\n\
+ str r0, [r1, #0x8]\n\
+ ldr r0, [r1, #0x8]\n\
+ mov r0, #0xe0\n\
+ lsl r0, r0, #0x13\n\
+ mov r3, #0x80\n\
+ lsl r3, r3, #0x3\n\
+ mov r4, #0x0\n\
+ str r4, [sp, #0x8]\n\
+ ldr r2, ._78 @ 0x40000d4\n\
+ mov r1, r8\n\
+ str r1, [r2]\n\
+ str r0, [r2, #0x4]\n\
+ lsr r0, r3, #0x2\n\
+ mov r1, #0x85\n\
+ lsl r1, r1, #0x18\n\
+ orr r0, r0, r1\n\
+ str r0, [r2, #0x8]\n\
+ ldr r0, [r2, #0x8]\n\
+ mov r1, #0xa0\n\
+ lsl r1, r1, #0x13\n\
+ add r0, sp, #0x4\n\
+ strh r4, [r0]\n\
+ str r0, [r2]\n\
+ str r1, [r2, #0x4]\n\
+ lsr r3, r3, #0x1\n\
+ mov r0, #0x81\n\
+ lsl r0, r0, #0x18\n\
+ orr r3, r3, r0\n\
+ str r3, [r2, #0x8]\n\
+ ldr r0, [r2, #0x8]\n\
+ ldr r2, ._78 + 8 @ gPaletteFade\n\
+ ldrb r0, [r2, #0x8]\n\
+ mov r1, #0x80\n\
+ orr r0, r0, r1\n\
+ strb r0, [r2, #0x8]\n\
+ ldr r1, ._78 + 12 @ gMain\n\
+ ldr r2, ._78 + 16 @ 0x43c\n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._79:\n\
+ .align 2, 0\n\
+._78:\n\
+ .word 0x40000d4\n\
+ .word 0x81000800\n\
+ .word gPaletteFade\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._59:\n\
+ bl ScanlineEffect_Stop\n\
+ b ._115\n\
+._60:\n\
+ bl sub_806B4A8\n\
+ ldr r1, ._82 @ \n\
+ mov r2, #0x99\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ mov r2, #0x0\n\
+ strh r2, [r0]\n\
+ ldr r3, ._82 + 4 @ \n\
+ add r0, r1, r3\n\
+ strh r2, [r0]\n\
+ mov r0, #0x9a\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ strh r2, [r1]\n\
+ ldr r1, ._82 + 8 @ \n\
+ ldr r2, ._82 + 12 @ \n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._83:\n\
+ .align 2, 0\n\
+._82:\n\
+ .word +0x201b000\n\
+ .word 0x266\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._61:\n\
+ bl ResetSpriteData\n\
+ b ._115\n\
+._62:\n\
+ ldr r0, ._88 @ \n\
+ mov r1, #0x96\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ beq ._86 @cond_branch\n\
+ cmp r0, #0x5\n\
+ beq ._86 @cond_branch\n\
+ bl ResetTasks\n\
+._86:\n\
+ ldr r1, ._88 + 4 @ \n\
+ ldr r2, ._88 + 8 @ \n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._89:\n\
+ .align 2, 0\n\
+._88:\n\
+ .word +0x201b000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._63:\n\
+ bl FreeAllSpritePalettes\n\
+ b ._115\n\
+._64:\n\
+ ldr r4, ._92 @ \n\
+ mov r1, #0x97\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x0\n\
+ bl CreateTask\n\
+ mov r2, #0x98\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ strb r0, [r1]\n\
+ b ._115\n\
+._93:\n\
+ .align 2, 0\n\
+._92:\n\
+ .word +0x201b000\n\
+._65:\n\
+ ldr r0, ._95 @ gWindowTemplate_81E6C90\n\
+ bl Text_LoadWindowTemplate\n\
+ ldr r1, ._95 + 4 @ gMain\n\
+ ldr r0, ._95 + 8 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._122\n\
+._96:\n\
+ .align 2, 0\n\
+._95:\n\
+ .word gWindowTemplate_81E6C90\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._66:\n\
+ ldr r4, ._98 @ gUnknown_03004210\n\
+ ldr r1, ._98 + 4 @ gWindowTemplate_81E6C90\n\
+ add r0, r4, #0\n\
+ bl Text_InitWindowWithTemplate\n\
+ add r0, r4, #0\n\
+ mov r1, #0x1\n\
+ bl MultistepInitWindowTileData\n\
+ ldr r1, ._98 + 8 @ gMain\n\
+ ldr r2, ._98 + 12 @ 0x43c\n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._99:\n\
+ .align 2, 0\n\
+._98:\n\
+ .word gUnknown_03004210\n\
+ .word gWindowTemplate_81E6C90\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._67:\n\
+ bl MultistepLoadFont\n\
+ cmp r0, #0\n\
+ bne ._100 @cond_branch\n\
+ b ._125\n\
+._100:\n\
+ ldr r0, ._103 @ \n\
+ mov r3, #0x99\n\
+ lsl r3, r3, #0x2\n\
+ add r0, r0, r3\n\
+ mov r1, #0x1\n\
+ strh r1, [r0]\n\
+ ldr r1, ._103 + 4 @ \n\
+ ldr r0, ._103 + 8 @ \n\
+ add r1, r1, r0\n\
+ b ._122\n\
+._104:\n\
+ .align 2, 0\n\
+._103:\n\
+ .word +0x201b000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._68:\n\
+ ldr r0, ._107 @ \n\
+ mov r1, #0x99\n\
+ lsl r1, r1, #0x2\n\
+ add r4, r0, r1\n\
+ ldrb r0, [r4]\n\
+ bl LoadPartyMenuGraphics\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._105 @cond_branch\n\
+ mov r0, #0x0\n\
+ strh r0, [r4]\n\
+ ldr r1, ._107 + 4 @ \n\
+ ldr r2, ._107 + 8 @ \n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._108:\n\
+ .align 2, 0\n\
+._107:\n\
+ .word +0x201b000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._105:\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4]\n\
+ b ._125\n\
+._69:\n\
+ bl sub_809D51C\n\
+ b ._115\n\
+._70:\n\
+ ldr r2, ._113 @ PartyMenuHandlers\n\
+ ldr r0, ._113 + 4 @ \n\
+ mov r1, #0x96\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r2, r2, #0x4\n\
+ add r0, r0, r2\n\
+ ldr r0, [r0]\n\
+ bl _call_via_r0\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._125 @cond_branch\n\
+ ldr r1, ._113 + 8 @ \n\
+ ldr r2, ._113 + 12 @ \n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._114:\n\
+ .align 2, 0\n\
+._113:\n\
+ .word PartyMenuHandlers\n\
+ .word +0x201b000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._71:\n\
+ ldr r0, ._116 @ gWindowTemplate_81E6CC8\n\
+ bl MultistepInitMenuWindowBegin\n\
+ b ._115\n\
+._117:\n\
+ .align 2, 0\n\
+._116:\n\
+ .word gWindowTemplate_81E6CC8\n\
+._72:\n\
+ bl MultistepInitMenuWindowContinue\n\
+ cmp r0, #0\n\
+ beq ._125 @cond_branch\n\
+ ldr r1, ._120 @ gMain\n\
+ ldr r0, ._120 + 4 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._122\n\
+._121:\n\
+ .align 2, 0\n\
+._120:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._73:\n\
+ ldr r0, ._123 @ \n\
+ ldr r1, ._123 + 4 @ \n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x0\n\
+ bl PrintPartyMenuPromptText\n\
+ ldr r1, ._123 + 8 @ \n\
+ ldr r2, ._123 + 12 @ \n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._124:\n\
+ .align 2, 0\n\
+._123:\n\
+ .word +0x201b000\n\
+ .word 0x259\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._74:\n\
+ mov r0, #0x1\n\
+ neg r0, r0\n\
+ mov r1, #0x0\n\
+ str r1, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r2, ._126 @ gPaletteFade\n\
+ ldrb r1, [r2, #0x8]\n\
+ mov r0, #0x7f\n\
+ and r0, r0, r1\n\
+ strb r0, [r2, #0x8]\n\
+._115:\n\
+ ldr r1, ._126 + 4 @ gMain\n\
+ ldr r3, ._126 + 8 @ 0x43c\n\
+ add r1, r1, r3\n\
+._122:\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ b ._125\n\
+._127:\n\
+ .align 2, 0\n\
+._126:\n\
+ .word gPaletteFade\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._75:\n\
+ ldr r0, ._130 @ VBlankCB_PartyMenu\n\
+ bl SetVBlankCallback\n\
+ ldr r0, ._130 + 4 @ gLinkOpen\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._128 @cond_branch\n\
+ ldr r0, ._130 + 8 @ 0x600e5e0\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x8\n\
+ ldr r2, ._130 + 12 @ 0x6007800\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008218\n\
+._128:\n\
+ mov r0, #0x1\n\
+ b ._129\n\
+._131:\n\
+ .align 2, 0\n\
+._130:\n\
+ .word VBlankCB_PartyMenu+1\n\
+ .word gLinkOpen\n\
+ .word 0x600e5e0\n\
+ .word 0x6007800\n\
+._125:\n\
+ mov r0, #0x0\n\
+._129:\n\
+ add sp, sp, #0xc\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r1}\n\
+ bx r1");
+}
+#else
bool8 InitPartyMenu(void)
{
switch (gMain.state)
@@ -728,6 +1213,7 @@ bool8 InitPartyMenu(void)
return FALSE;
}
+#endif
void CB2_InitPartyMenu(void)
{
@@ -4007,6 +4493,10 @@ void TeachMonTMMove(u8 taskId, u16 move, TaskFunc func)
CreateTask(Task_TeamMonTMMove, 5);
}
+#if DEBUG
+extern u8 gUnknown_020297ED;
+#endif
+
void Task_TeamMonTMMove(u8 taskId)
{
GetMonNickname(ewram1C000.pokemon, gStringVar1);
@@ -4021,7 +4511,11 @@ void Task_TeamMonTMMove(u8 taskId)
}
else
{
- if (!CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33))
+ if (
+#if DEBUG
+ !gUnknown_020297ED &&
+#endif
+ !CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33))
{
StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible);
sub_806E834(gStringVar4, 1);
@@ -4751,7 +5245,8 @@ void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c)
gMain.newKeys = 0;
}
-static const u8 *const StatNames[] = {
+static const u8 *const StatNames[] =
+{
gOtherText_HP,
gOtherText_Attack,
gOtherText_Defense,
@@ -4760,7 +5255,8 @@ static const u8 *const StatNames[] = {
gOtherText_Speed,
};
-static const u8 StatDataTypes[] = {
+static const u8 StatDataTypes[] =
+{
MON_DATA_MAX_HP,
MON_DATA_ATK,
MON_DATA_DEF,
@@ -4768,6 +5264,17 @@ static const u8 StatDataTypes[] = {
MON_DATA_SPDEF,
MON_DATA_SPEED,
};
+
+#if DEBUG
+
+const u8 gUnknown_Debug_839B6CE[] = {0x40, 0, 0, 0, 0x44, 0, 0xFF, 0, 0, 0};
+
+const u8 gUnknown_Debug_839B6D8[] = _(
+ "{STR_VAR_1}かい じっこう\n"
+ "{STR_VAR_2}たんいじかん しょうひ");
+
+#endif
+
void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c)
{
u8 i;
@@ -5499,9 +6006,13 @@ _08070F8A:\n\
}
#endif // NONMATCHING
+
+// Maybe this goes in start_menu.c
+#if !DEBUG
void unref_sub_8070F90(void)
{
FlagSet(FLAG_SYS_POKEDEX_GET);
FlagSet(FLAG_SYS_POKEMON_GET);
FlagSet(FLAG_SYS_POKENAV_GET);
}
+#endif
diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c
index e08a65f49..b4be44aa2 100644
--- a/src/field/pokeblock.c
+++ b/src/field/pokeblock.c
@@ -91,7 +91,8 @@ static const u8 *gUnknown_03000758;
#define GFX_TAG_POKEBLOCK_CASE 14800
-const s8 gPokeblockFlavorCompatibilityTable[] = {
+const s8 gPokeblockFlavorCompatibilityTable[] =
+{
// Cool, Beauty, Cute, Smart, Tough
0, 0, 0, 0, 0, // Hardy
1, 0, 0, 0, -1, // Lonely
@@ -120,14 +121,16 @@ const s8 gPokeblockFlavorCompatibilityTable[] = {
0, 0, 0, 0, 0 // Quirky
};
-void (*const gUnknown_083F7EA8[])(void) = {
+void (*const gUnknown_083F7EA8[])(void) =
+{
sub_80A5B40,
c2_exit_to_overworld_2_switch,
sub_802E424,
c2_exit_to_overworld_2_switch
};
-const u8 *const gPokeblockNames[] = {
+const u8 *const gPokeblockNames[] =
+{
NULL,
ContestStatsText_RedPokeBlock,
ContestStatsText_BluePokeBlock,
@@ -145,7 +148,8 @@ const u8 *const gPokeblockNames[] = {
ContestStatsText_GoldPokeBlock
};
-const struct MenuAction2 gUnknown_083F7EF4[] = {
+const struct MenuAction2 gUnknown_083F7EF4[] =
+{
{OtherText_Use, sub_810C508},
{OtherText_Toss, sub_810C5C0},
{gOtherText_CancelNoTerminator, sub_810C748},
@@ -161,21 +165,25 @@ const struct YesNoFuncTable gUnknown_083F7F24 = {sub_810C610, sub_810C668};
const u8 UnreferencedData_083F7F2C[] = {0x16, 0x17, 0x18, 0x21, 0x2f};
-const struct OamData gOamData_83F7F34 = {
+const struct OamData gOamData_83F7F34 =
+{
.size = 3,
.priority = 2
};
-const union AnimCmd gSpriteAnim_83F7F3C[] = {
+const union AnimCmd gSpriteAnim_83F7F3C[] =
+{
ANIMCMD_FRAME(.imageValue = 0, .duration = 0),
ANIMCMD_END
};
-const union AnimCmd *const gSpriteAnimTable_83F7F44[] = {
+const union AnimCmd *const gSpriteAnimTable_83F7F44[] =
+{
gSpriteAnim_83F7F3C
};
-const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = {
+const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] =
+{
AFFINEANIMCMD_FRAME(0, 0, -2, 2),
AFFINEANIMCMD_FRAME(0, 0, 2, 4),
AFFINEANIMCMD_FRAME(0, 0, -2, 4),
@@ -183,22 +191,26 @@ const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = {
AFFINEANIMCMD_END
};
-const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7F70[] = {
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7F70[] =
+{
gSpriteAffineAnim_83F7F48
};
-const struct CompressedSpriteSheet gUnknown_083F7F74 = {
+const struct CompressedSpriteSheet gUnknown_083F7F74 =
+{
gMenuPokeblockDevice_Gfx,
0x800,
GFX_TAG_POKEBLOCK_CASE
};
-const struct CompressedSpritePalette gUnknown_083F7F7C = {
+const struct CompressedSpritePalette gUnknown_083F7F7C =
+{
gMenuPokeblockDevice_Pal,
GFX_TAG_POKEBLOCK_CASE
};
-const struct SpriteTemplate gSpriteTemplate_83F7F84 = {
+const struct SpriteTemplate gSpriteTemplate_83F7F84 =
+{
GFX_TAG_POKEBLOCK_CASE,
GFX_TAG_POKEBLOCK_CASE,
&gOamData_83F7F34,
@@ -208,12 +220,25 @@ const struct SpriteTemplate gSpriteTemplate_83F7F84 = {
SpriteCallbackDummy
};
-const struct Pokeblock gUnknown_083F7F9C[] = {
- { PBLOCK_CLR_RED, 20, 0, 0, 0, 0, 20},
- { PBLOCK_CLR_BLUE, 0, 20, 0, 0, 0, 20},
- { PBLOCK_CLR_PINK, 0, 0, 20, 0, 0, 20},
- { PBLOCK_CLR_GREEN, 0, 0, 0, 20, 0, 20},
- { PBLOCK_CLR_YELLOW, 0, 0, 0, 0, 20, 20}
+const struct Pokeblock gUnknown_083F7F9C[] =
+{
+ { PBLOCK_CLR_RED, 20, 0, 0, 0, 0, 20 },
+ { PBLOCK_CLR_BLUE, 0, 20, 0, 0, 0, 20 },
+ { PBLOCK_CLR_PINK, 0, 0, 20, 0, 0, 20 },
+ { PBLOCK_CLR_GREEN, 0, 0, 0, 20, 0, 20 },
+ { PBLOCK_CLR_YELLOW, 0, 0, 0, 0, 20, 20 },
+#if DEBUG
+ { PBLOCK_CLR_PURPLE, 20, 0, 20, 0, 0, 20 },
+ { PBLOCK_CLR_INDIGO, 0, 20, 0, 20, 0, 20 },
+ { PBLOCK_CLR_BROWN, 0, 0, 20, 0, 20, 20 },
+ { PBLOCK_CLR_LITEBLUE, 20, 0, 0, 20, 0, 20 },
+ { PBLOCK_CLR_OLIVE, 0, 20, 0, 0, 20, 20 },
+ { PBLOCK_CLR_GRAY, 0, 2, 0, 2, 2, 0 },
+ { PBLOCK_CLR_BLACK, 3, 3, 3, 4, 3, 0 },
+ { PBLOCK_CLR_WHITE, 1, 1, 1, 1, 1, 1 },
+ { PBLOCK_CLR_GOLD, 20, 0, 0, 0, 0, 20 },
+ { 0 },
+#endif
};
// text
@@ -424,14 +449,13 @@ void OpenPokeblockCaseOnFeeder(void)
SetMainCallback2(sub_810B96C);
}
-#ifdef DEBUG
+#if DEBUG
void debug_sub_8120F98(void)
{
u8 i;
- for (i=0; i<40 && gUnknown_083F7F9C[i].color != 0; i++)
- {
+
+ for (i = 0; i < 40 && gUnknown_083F7F9C[i].color != 0; i++)
gSaveBlock1.pokeblocks[i] = gUnknown_083F7F9C[i];
- }
}
#endif
diff --git a/src/field/region_map.c b/src/field/region_map.c
index 1378820fe..7bfda1a81 100644
--- a/src/field/region_map.c
+++ b/src/field/region_map.c
@@ -280,7 +280,7 @@ static u16 sub_80FB9C0(u16);
static void sub_80FBA18(void);
static bool8 sub_80FBAA0(u16);
void CreateRegionMapCursor(u16, u16);
-static void sub_80FBCA0(void);
+void sub_80FBCA0(void);
static void sub_80FBDF8(void);
static void sub_80FBE24(void);
static void SpriteCB_PlayerIconZoomedOut(struct Sprite *);
@@ -288,8 +288,8 @@ static void UpdateIconBlink(struct Sprite *);
static void SpriteCB_PlayerIconZoomedIn(struct Sprite *);
const u8 *GetMapSectionName(u8 *, u16, u16);
static void VBlankCB_FlyRegionMap(void);
-static void CB2_FlyRegionMap(void);
-static void sub_80FC244(void (*func)(void));
+void CB2_FlyRegionMap(void);
+void sub_80FC244(void (*func)(void));
static void PrintFlyTargetName(void);
static void CreateFlyTargetGraphics(void);
static void CreateCityTownFlyTargetIcons(void);
@@ -297,7 +297,7 @@ static void CreateSpecialAreaFlyTargetIcons(void);
static void SpriteCB_FlyTargetIcons(struct Sprite *);
static void sub_80FC5B4(void);
static void sub_80FC600(void);
-static void sub_80FC69C(void);
+void sub_80FC69C(void);
void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed)
{
@@ -1127,7 +1127,7 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag)
}
}
-static void sub_80FBCA0(void)
+void sub_80FBCA0(void)
{
if (gRegionMap->cursorSprite != NULL)
{
@@ -1420,7 +1420,7 @@ struct UnknownStruct4
static const u8 *const sEverGrandeCityAreaNames[] = {OtherText_PokeLeague, OtherText_PokeCenter};
-static const struct UnknownStruct4 sUnknown_083E79C0[1] =
+const struct UnknownStruct4 gUnknown_083E79C0[1] =
{
{sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, FLAG_SYS_POKEMON_LEAGUE_FLY},
};
@@ -1591,14 +1591,14 @@ static void VBlankCB_FlyRegionMap(void)
TransferPlttBuffer();
}
-static void CB2_FlyRegionMap(void)
+void CB2_FlyRegionMap(void)
{
ewram0_3.unk0();
AnimateSprites();
BuildOamBuffer();
}
-static void sub_80FC244(void (*func)(void))
+void sub_80FC244(void (*func)(void))
{
ewram0_3.unk0 = func;
ewram0_3.unk4 = 0;
@@ -1611,9 +1611,9 @@ static void PrintFlyTargetName(void)
u16 i;
bool32 drawFrameDisabled = FALSE;
- for (i = 0; i < ARRAY_COUNT(sUnknown_083E79C0); i++)
+ for (i = 0; i < ARRAY_COUNT(gUnknown_083E79C0); i++)
{
- const struct UnknownStruct4 *r4 = &sUnknown_083E79C0[i];
+ const struct UnknownStruct4 *r4 = &gUnknown_083E79C0[i];
if (ewram0_3.regionMap.mapSectionId == r4->mapSectionId)
{
@@ -1795,7 +1795,7 @@ static void sub_80FC600(void)
}
}
-static void sub_80FC69C(void)
+void sub_80FC69C(void)
{
switch (ewram0_3.unk4)
{
diff --git a/src/field/roamer.c b/src/field/roamer.c
index 2eb26ef9d..6ed5b6c89 100644
--- a/src/field/roamer.c
+++ b/src/field/roamer.c
@@ -1,7 +1,9 @@
#include "global.h"
+#include "debug.h"
#include "roamer.h"
#include "pokemon.h"
#include "random.h"
+#include "region_map.h"
#include "constants/species.h"
#ifdef SAPPHIRE
@@ -224,3 +226,20 @@ void GetRoamerLocation(u8 *mapGroup, u8 *mapNum)
*mapGroup = sRoamerLocation[MAP_GRP];
*mapNum = sRoamerLocation[MAP_NUM];
}
+
+#if DEBUG
+void debug_sub_814A714(void)
+{
+ if (gSaveBlock1.location.mapGroup == 0)
+ {
+ CreateInitialRoamerMon();
+ sRoamerLocation[0] = 0;
+ sRoamerLocation[1] = gSaveBlock1.location.mapNum;
+ }
+}
+
+void debug_sub_814A73C(u8* str)
+{
+ GetMapSectionName(str, sRoamerLocation[1], 0);
+}
+#endif
diff --git a/src/field/safari_zone.c b/src/field/safari_zone.c
index 6c7c8b391..f371b08b3 100644
--- a/src/field/safari_zone.c
+++ b/src/field/safari_zone.c
@@ -26,7 +26,7 @@ static void DecrementFeederStepCounters(void);
extern u8 gBattleOutcome;
EWRAM_DATA u8 gNumSafariBalls = 0;
-EWRAM_DATA static u16 gSafariZoneStepCounter = 0;
+EWRAM_DATA u16 gSafariZoneStepCounter = 0;
EWRAM_DATA static struct PokeblockFeeder gPokeblockFeeders[NUM_POKEBLOCK_FEEDERS] = {0};
extern void (*gFieldCallback)(void);
diff --git a/src/field/secret_base.c b/src/field/secret_base.c
index 2d02de004..8b67a2cd9 100644
--- a/src/field/secret_base.c
+++ b/src/field/secret_base.c
@@ -1648,6 +1648,178 @@ void sub_80BD610(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
sub_80BD328(basesC, 0);
}
+#if DEBUG
+__attribute__((naked))
+void sub_80BD674(void *playerRecords, u32 size, u8 c)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ add r6, r0, #0\n\
+ add r5, r1, #0\n\
+ lsl r2, r2, #0x18\n\
+ lsr r7, r2, #0x18\n\
+ ldr r0, ._503 @ gUnknown_020297ED\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._498 @cond_branch\n\
+ mov r0, #0x60\n\
+ bl FlagGet\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._498 @cond_branch\n\
+ b ._520\n\
+._498:\n\
+ bl GetLinkPlayerCount\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x2\n\
+ beq ._500 @cond_branch\n\
+ cmp r0, #0x3\n\
+ beq ._501 @cond_branch\n\
+ b ._505\n\
+._504:\n\
+ .align 2, 0\n\
+._503:\n\
+ .word gUnknown_020297ED\n\
+._500:\n\
+ lsl r4, r5, #0x1\n\
+ add r0, r6, r4\n\
+ mov r1, #0x0\n\
+ add r2, r5, #0\n\
+ bl memset\n\
+ add r4, r4, r5\n\
+ add r4, r6, r4\n\
+ add r0, r4, #0\n\
+ mov r1, #0x0\n\
+ add r2, r5, #0\n\
+ bl memset\n\
+ b ._505\n\
+._501:\n\
+ lsl r0, r5, #0x1\n\
+ add r0, r0, r5\n\
+ add r0, r6, r0\n\
+ mov r1, #0x0\n\
+ add r2, r5, #0\n\
+ bl memset\n\
+._505:\n\
+ cmp r7, #0x1\n\
+ beq ._506 @cond_branch\n\
+ cmp r7, #0x1\n\
+ bgt ._507 @cond_branch\n\
+ cmp r7, #0\n\
+ beq ._508 @cond_branch\n\
+ b ._515\n\
+._507:\n\
+ cmp r7, #0x2\n\
+ beq ._510 @cond_branch\n\
+ cmp r7, #0x3\n\
+ beq ._511 @cond_branch\n\
+ b ._515\n\
+._508:\n\
+ add r0, r6, r5\n\
+ lsl r2, r5, #0x1\n\
+ add r1, r6, r2\n\
+ add r2, r2, r5\n\
+ add r2, r6, r2\n\
+ bl sub_80BD610\n\
+ b ._515\n\
+._506:\n\
+ lsl r1, r5, #0x1\n\
+ add r0, r6, r1\n\
+ add r1, r1, r5\n\
+ add r1, r6, r1\n\
+ add r2, r6, #0\n\
+ bl sub_80BD610\n\
+ b ._515\n\
+._510:\n\
+ lsl r0, r5, #0x1\n\
+ add r0, r0, r5\n\
+ add r0, r6, r0\n\
+ add r2, r6, r5\n\
+ add r1, r6, #0\n\
+ bl sub_80BD610\n\
+ b ._515\n\
+._511:\n\
+ add r1, r6, r5\n\
+ lsl r2, r5, #0x1\n\
+ add r2, r6, r2\n\
+ add r0, r6, #0\n\
+ bl sub_80BD610\n\
+._515:\n\
+ mov r3, #0x1\n\
+ ldr r6, ._521 @ gSaveBlock1\n\
+ mov r5, #0x10\n\
+ neg r5, r5\n\
+ ldr r4, ._521 + 4 @ 0x1a09\n\
+._517:\n\
+ lsl r0, r3, #0x2\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x5\n\
+ add r0, r0, r6\n\
+ add r2, r0, r4\n\
+ ldrb r1, [r2]\n\
+ lsl r0, r1, #0x1c\n\
+ lsr r0, r0, #0x1c\n\
+ cmp r0, #0x1\n\
+ bne ._516 @cond_branch\n\
+ mov r0, #0x3f\n\
+ and r0, r0, r1\n\
+ mov r1, #0x40\n\
+ orr r0, r0, r1\n\
+ and r0, r0, r5\n\
+ strb r0, [r2]\n\
+._516:\n\
+ add r0, r3, #1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r3, r0, #0x10\n\
+ cmp r3, #0x13\n\
+ bls ._517 @cond_branch\n\
+ bl sub_80BD280\n\
+ mov r3, #0x1\n\
+ ldr r4, ._521 @ gSaveBlock1\n\
+ ldr r6, ._521 + 4 @ 0x1a09\n\
+ add r7, r4, #0\n\
+ mov r5, #0x3f\n\
+._519:\n\
+ lsl r0, r3, #0x2\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x5\n\
+ add r0, r0, r4\n\
+ add r2, r0, r6\n\
+ ldrb r1, [r2]\n\
+ lsr r0, r1, #0x6\n\
+ cmp r0, #0x2\n\
+ bne ._518 @cond_branch\n\
+ add r0, r5, #0\n\
+ and r0, r0, r1\n\
+ strb r0, [r2]\n\
+._518:\n\
+ add r0, r3, #1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r3, r0, #0x10\n\
+ cmp r3, #0x13\n\
+ bls ._519 @cond_branch\n\
+ ldr r0, ._521 + 8 @ 0x1a16\n\
+ add r2, r7, r0\n\
+ ldrh r1, [r2]\n\
+ ldr r0, ._521 + 12 @ 0xffff\n\
+ cmp r1, r0\n\
+ beq ._520 @cond_branch\n\
+ add r0, r1, #1\n\
+ strh r0, [r2]\n\
+._520:\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._522:\n\
+ .align 2, 0\n\
+._521:\n\
+ .word gSaveBlock1\n\
+ .word 0x1a09\n\
+ .word 0x1a16\n\
+ .word 0xffff");
+}
+#else
void sub_80BD674(void *playerRecords, u32 size, u8 c)
{
if (FlagGet(FLAG_RECEIVED_SECRET_POWER))
@@ -1706,3 +1878,4 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c)
}
}
}
+#endif
diff --git a/src/field/shop.c b/src/field/shop.c
index e087628da..fdee31178 100644
--- a/src/field/shop.c
+++ b/src/field/shop.c
@@ -1238,3 +1238,24 @@ void Shop_CreateDecorationShop2Menu(u16 *itemList)
SetShopItemsForSale(itemList);
SetShopMenuCallback(EnableBothScriptContexts);
}
+
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80C2818(void)
+{
+ asm("\
+ push {lr}\n\
+ mov r0, #0x0\n\
+ bl CreateShopMenu\n\
+ ldr r0, ._290 @ gMartBuyNoSellOptionList\n\
+ bl SetShopItemsForSale\n\
+ mov r0, #0x0\n\
+ bl SetShopMenuCallback\n\
+ pop {r0}\n\
+ bx r0\n\
+._291:\n\
+ .align 2, 0\n\
+._290:\n\
+ .word gMartBuyNoSellOptionList+0x3");
+}
+#endif
diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c
index 21bf29e91..2c97c146d 100644
--- a/src/field/slot_machine.c
+++ b/src/field/slot_machine.c
@@ -17,7 +17,8 @@
#include "menu.h"
#include "ewram.h"
-struct UnkStruct1 {
+struct UnkStruct1
+{
/*0x00*/ u8 unk00;
/*0x01*/ u8 unk01;
/*0x02*/ s16 unk02;
@@ -29,6 +30,8 @@ struct UnkStruct1 {
#define SLOTMACHINE_GFX_TILES 236
#endif
+// TODO: figure out which functions are static and which are not.
+#define static
static void CB2_SlotMachineSetup(void);
static void CB2_SlotMachineLoop(void);
@@ -61,7 +64,7 @@ static bool8 sub_8102008(struct Task *task);
static bool8 sub_8102034(struct Task *task);
static bool8 sub_8102058(struct Task *task);
static bool8 sub_8102090(struct Task *task);
-static bool8 sub_81020C8(struct Task *task);
+bool8 sub_81020C8(struct Task *task);
static bool8 sub_81021E0(struct Task *task);
static bool8 sub_81021FC(struct Task *task);
static bool8 sub_8102264(struct Task *task);
@@ -76,6 +79,7 @@ static bool8 sub_81023E0(struct Task *task);
static bool8 sub_81023FC(struct Task *task);
static bool8 sub_8102424(struct Task *task);
static bool8 sub_8102460(struct Task *task);
+static bool8 debug_sub_8116E74(struct Task *);
static void sub_8102484(void);
static void sub_81024F0(void);
static bool8 sub_8102540(void);
@@ -222,6 +226,15 @@ static void sub_81064B8(void);
static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
static void sub_81065DC(void);
+#if DEBUG
+__attribute__((section(".bss"))) u8 unk_debug_bss_1_0 = 0;
+__attribute__((section(".bss"))) u8 unk_debug_bss_1_1 = 0;
+__attribute__((section(".bss"))) u8 unk_debug_bss_1_2 = 0;
+__attribute__((section(".bss"))) u8 unk_debug_bss_1_3 = 0;
+__attribute__((section(".bss"))) u8 unk_debug_bss_1_4 = 0;
+__attribute__((section(".bss"))) u32 unk_debug_bss_1_8 = 0;
+#endif
+
static const struct UnkStruct1 *const gUnknown_083ED048[];
static const u16 gPalette_83EDE24[];
static const u8 gUnknown_083ECD04[][3];
@@ -231,10 +244,22 @@ static const u16 gUnknown_083ECE48[];
void PlaySlotMachine(u8 arg0, MainCallback cb)
{
+#if DEBUG
+ unk_debug_bss_1_1 = 0;
+#endif
PlaySlotMachine_Internal(arg0, cb);
SetMainCallback2(CB2_SlotMachineSetup);
}
+#if DEBUG
+void debug_sub_811609C(u8 a, void (*func)(void))
+{
+ unk_debug_bss_1_1 = 1;
+ PlaySlotMachine_Internal(a, func);
+ SetMainCallback2(CB2_SlotMachineSetup);
+}
+#endif
+
static void CB2_SlotMachineSetup(void)
{
switch (gMain.state)
@@ -366,6 +391,135 @@ static void SlotMachineSetup_2_1(void)
static const s16 gUnknown_083ECCF8[][2];
+#if DEBUG
+__attribute__((naked))
+static void SlotMachineSetup_0_1(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, sl\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5, r6, r7}\n\
+ bl sub_81019EC\n\
+ ldr r5, ._43 @ \n\
+ mov r4, #0x0\n\
+ strb r4, [r5]\n\
+ strb r4, [r5, #0x2]\n\
+ bl Random\n\
+ mov r1, #0x1\n\
+ and r1, r1, r0\n\
+ strb r1, [r5, #0x3]\n\
+ strb r4, [r5, #0x4]\n\
+ mov r0, #0x0\n\
+ strh r4, [r5, #0x8]\n\
+ strb r0, [r5, #0xa]\n\
+ strb r0, [r5, #0xb]\n\
+ ldr r0, ._43 + 4 @ \n\
+ ldr r1, ._43 + 8 @ \n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r5, #0xc]\n\
+ strh r4, [r5, #0xe]\n\
+ strh r4, [r5, #0x10]\n\
+ strh r4, [r5, #0x12]\n\
+ strh r4, [r5, #0x18]\n\
+ mov r0, #0x8\n\
+ strh r0, [r5, #0x1a]\n\
+ add r1, r5, #0\n\
+ add r1, r1, #0x58\n\
+ mov r0, #0xf0\n\
+ strh r0, [r1]\n\
+ add r1, r1, #0x2\n\
+ mov r0, #0xa0\n\
+ strh r0, [r1]\n\
+ add r0, r5, #0\n\
+ add r0, r0, #0x5c\n\
+ mov r1, #0x3f\n\
+ strh r1, [r0]\n\
+ add r0, r0, #0x2\n\
+ strh r1, [r0]\n\
+ bl GetCurrentMapMusic\n\
+ add r1, r5, #0\n\
+ add r1, r1, #0x60\n\
+ strh r0, [r1]\n\
+ mov r7, #0x0\n\
+ add r6, r5, #0\n\
+ ldr r2, ._43 + 12 @ \n\
+ mov sl, r2\n\
+ mov r0, #0x1c\n\
+ add r0, r0, r6\n\
+ mov r9, r0\n\
+._41:\n\
+ lsl r5, r7, #0x1\n\
+ mov r1, #0x22\n\
+ add r1, r1, r6\n\
+ mov r8, r1\n\
+ add r1, r5, r1\n\
+ mov r0, #0x0\n\
+ strh r0, [r1]\n\
+ add r4, r6, #0\n\
+ add r4, r4, #0x28\n\
+ add r4, r5, r4\n\
+ ldrb r0, [r6, #0x3]\n\
+ lsl r0, r0, #0x1\n\
+ lsl r1, r7, #0x2\n\
+ add r0, r0, r1\n\
+ add r0, r0, sl\n\
+ mov r2, #0x0\n\
+ ldsh r0, [r0, r2]\n\
+ mov r1, #0x15\n\
+ bl __modsi3\n\
+ strh r0, [r4]\n\
+ add r5, r5, r9\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r4, r1]\n\
+ lsl r1, r0, #0x1\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x3\n\
+ mov r2, #0xfc\n\
+ lsl r2, r2, #0x1\n\
+ add r0, r2, #0\n\
+ sub r0, r0, r1\n\
+ strh r0, [r5]\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r5, r1]\n\
+ add r1, r2, #0\n\
+ bl __modsi3\n\
+ strh r0, [r5]\n\
+ add r0, r7, #1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r7, r0, #0x18\n\
+ cmp r7, #0x2\n\
+ bls ._41 @cond_branch\n\
+ bl debug_sub_811B5D0\n\
+ ldr r0, ._43 + 16 @ \n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._42 @cond_branch\n\
+ mov r1, r8\n\
+ sub r1, r1, #0x22\n\
+ mov r0, #0xfa\n\
+ lsl r0, r0, #0x2\n\
+ strh r0, [r1, #0xc]\n\
+._42:\n\
+ pop {r3, r4, r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov sl, r5\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._44:\n\
+ .align 2, 0\n\
+._43:\n\
+ .word +0x2000000\n\
+ .word gSaveBlock1\n\
+ .word 0x494\n\
+ .word gUnknown_083ECCF8\n\
+ .word unk_debug_bss_1_1");
+}
+#else
static void SlotMachineSetup_0_1(void)
{
u8 i;
@@ -397,6 +551,7 @@ static void SlotMachineSetup_0_1(void)
eSlotMachine->unk1C[i] %= 0x1f8;
}
}
+#endif
static void SlotMachineSetup_3_0(void)
{
@@ -441,7 +596,8 @@ static void sub_8101D04(void)
sub_8101D24(CreateTask(sub_8101D24, 0));
}
-static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = {
+static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) =
+{
sub_8101D5C,
sub_8101D8C,
sub_8101DB0,
@@ -470,7 +626,10 @@ static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = {
sub_81023E0,
sub_81023FC,
sub_8102424,
- sub_8102460
+ sub_8102460,
+#if DEBUG
+ debug_sub_8116E74,
+#endif
};
static void sub_8101D24(u8 taskId)
@@ -523,6 +682,46 @@ static bool8 sub_8101DF4(struct Task *task)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8101E10(struct Task *task)
+{
+ asm("\
+ push {lr}\n\
+ mov r0, #0x0\n\
+ bl sub_8104CAC\n\
+ ldr r2, ._70 @ \n\
+ mov r0, #0x5\n\
+ strb r0, [r2]\n\
+ ldr r0, ._70 + 4 @ \n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._67 @cond_branch\n\
+ ldr r0, ._70 + 8 @ \n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._69 @cond_branch\n\
+._67:\n\
+ mov r0, #0xc\n\
+ ldsh r1, [r2, r0]\n\
+ ldr r0, ._70 + 12 @ \n\
+ cmp r1, r0\n\
+ ble ._69 @cond_branch\n\
+ mov r0, #0x17\n\
+ strb r0, [r2]\n\
+._69:\n\
+ mov r0, #0x1\n\
+ pop {r1}\n\
+ bx r1\n\
+._71:\n\
+ .align 2, 0\n\
+._70:\n\
+ .word +0x2000000\n\
+ .word unk_debug_bss_1_1\n\
+ .word unk_debug_bss_1_4\n\
+ .word 0x270e");
+}
+#else
static bool8 sub_8101E10(struct Task *task)
{
sub_8104CAC(0);
@@ -533,7 +732,205 @@ static bool8 sub_8101E10(struct Task *task)
}
return TRUE;
}
+#endif
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8101E3C(struct Task *task)
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ ldr r0, ._77 @ unk_debug_bss_1_1\n\
+ ldrb r1, [r0]\n\
+ add r3, r0, #0\n\
+ ldr r5, ._77 + 4 @ gMain\n\
+ cmp r1, #0\n\
+ beq ._76 @cond_branch\n\
+ ldr r2, ._77 + 8 @ unk_debug_bss_1_4\n\
+ ldrb r0, [r2]\n\
+ cmp r0, #0\n\
+ beq ._76 @cond_branch\n\
+ ldr r4, ._77 + 12 @ \n\
+ mov r1, #0xc\n\
+ ldsh r0, [r4, r1]\n\
+ cmp r0, #0x3\n\
+ ble ._74 @cond_branch\n\
+ ldrh r1, [r5, #0x2c]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._75 @cond_branch\n\
+._74:\n\
+ mov r0, #0x0\n\
+ strb r0, [r2]\n\
+ b ._76\n\
+._78:\n\
+ .align 2, 0\n\
+._77:\n\
+ .word unk_debug_bss_1_1\n\
+ .word gMain\n\
+ .word unk_debug_bss_1_4\n\
+ .word +0x2000000\n\
+._75:\n\
+ mov r0, #0x0\n\
+ bl sub_8103D50\n\
+ mov r0, #0x1\n\
+ bl sub_8103D50\n\
+ mov r0, #0x2\n\
+ bl sub_8103D50\n\
+ ldrh r0, [r4, #0xc]\n\
+ sub r0, r0, #0x3\n\
+ strh r0, [r4, #0xc]\n\
+ mov r0, #0x3\n\
+ strh r0, [r4, #0x12]\n\
+ mov r0, #0x9\n\
+ strb r0, [r4]\n\
+ b ._102\n\
+._76:\n\
+ ldrb r0, [r3]\n\
+ cmp r0, #0\n\
+ beq ._81 @cond_branch\n\
+ ldrh r1, [r5, #0x2e]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._81 @cond_branch\n\
+ bl debug_sub_811B620\n\
+ ldr r1, ._83 @ \n\
+ mov r0, #0x1d\n\
+ strb r0, [r1]\n\
+ b ._102\n\
+._84:\n\
+ .align 2, 0\n\
+._83:\n\
+ .word +0x2000000\n\
+._81:\n\
+ ldrh r1, [r5, #0x2e]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._85 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl sub_8104AB8\n\
+ ldr r1, ._87 @ \n\
+ mov r0, #0x8\n\
+ strb r0, [r1]\n\
+ b ._102\n\
+._88:\n\
+ .align 2, 0\n\
+._87:\n\
+ .word +0x2000000\n\
+._85:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._89 @cond_branch\n\
+ ldr r2, ._94 @ \n\
+ mov r3, #0xc\n\
+ ldsh r0, [r2, r3]\n\
+ sub r0, r0, #0x3\n\
+ mov r3, #0x12\n\
+ ldsh r1, [r2, r3]\n\
+ add r0, r0, r1\n\
+ cmp r0, #0\n\
+ blt ._90 @cond_branch\n\
+ ldrh r4, [r2, #0x12]\n\
+ add r0, r1, #0\n\
+ cmp r0, #0x2\n\
+ bgt ._91 @cond_branch\n\
+._92:\n\
+ lsl r0, r4, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ bl sub_8103D50\n\
+ lsl r0, r4, #0x10\n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0x9\n\
+ add r0, r0, r2\n\
+ lsr r4, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0x2\n\
+ ble ._92 @cond_branch\n\
+._91:\n\
+ ldr r1, ._94 @ \n\
+ ldrh r0, [r1, #0xc]\n\
+ sub r0, r0, #0x3\n\
+ ldrh r3, [r1, #0x12]\n\
+ add r0, r0, r3\n\
+ strh r0, [r1, #0xc]\n\
+ mov r0, #0x3\n\
+ strh r0, [r1, #0x12]\n\
+ mov r0, #0x9\n\
+ strb r0, [r1]\n\
+ mov r0, #0x5f\n\
+ bl PlaySE\n\
+ b ._102\n\
+._95:\n\
+ .align 2, 0\n\
+._94:\n\
+ .word +0x2000000\n\
+._90:\n\
+ mov r0, #0x6\n\
+ b ._96\n\
+._89:\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._98 @cond_branch\n\
+ ldr r4, ._103 @ \n\
+ mov r1, #0xc\n\
+ ldsh r0, [r4, r1]\n\
+ cmp r0, #0\n\
+ beq ._98 @cond_branch\n\
+ mov r0, #0x5f\n\
+ bl PlaySE\n\
+ ldrb r0, [r4, #0x12]\n\
+ bl sub_8103D50\n\
+ ldrh r0, [r4, #0xc]\n\
+ sub r0, r0, #0x1\n\
+ strh r0, [r4, #0xc]\n\
+ ldrh r0, [r4, #0x12]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4, #0x12]\n\
+._98:\n\
+ ldr r0, ._103 @ \n\
+ mov r2, #0x12\n\
+ ldsh r1, [r0, r2]\n\
+ add r2, r0, #0\n\
+ ldr r5, ._103 + 4 @ \n\
+ cmp r1, #0x2\n\
+ bgt ._99 @cond_branch\n\
+ cmp r1, #0\n\
+ beq ._101 @cond_branch\n\
+ ldrh r1, [r5, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._101 @cond_branch\n\
+._99:\n\
+ mov r0, #0x9\n\
+ strb r0, [r2]\n\
+._101:\n\
+ ldrh r1, [r5, #0x2e]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._102 @cond_branch\n\
+ mov r0, #0x15\n\
+._96:\n\
+ strb r0, [r2]\n\
+._102:\n\
+ mov r0, #0x0\n\
+ pop {r4, r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+._104:\n\
+ .align 2, 0\n\
+._103:\n\
+ .word +0x2000000\n\
+ .word gMain");
+}
+#else
static bool8 sub_8101E3C(struct Task *task)
{
s16 i;
@@ -581,6 +978,7 @@ static bool8 sub_8101E3C(struct Task *task)
}
return FALSE;
}
+#endif
static void sub_8101F2C(const u8 *str)
{
@@ -614,6 +1012,71 @@ static bool8 sub_8101F88(struct Task *task)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8101FA4(struct Task *task)
+{
+ asm("\
+ push {r4, lr}\n\
+ add r4, r0, #0\n\
+ bl sub_8102484\n\
+ bl sub_8104DA4\n\
+ mov r0, #0x0\n\
+ bl sub_8102DEC\n\
+ mov r0, #0x1\n\
+ bl sub_8102DEC\n\
+ mov r0, #0x2\n\
+ bl sub_8102DEC\n\
+ mov r0, #0x0\n\
+ strh r0, [r4, #0x8]\n\
+ ldr r4, ._115 @ \n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x20\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._113 @cond_branch\n\
+ bl sub_810430C\n\
+ mov r0, #0xa\n\
+ b ._114\n\
+._116:\n\
+ .align 2, 0\n\
+._115:\n\
+ .word +0x2000000\n\
+._113:\n\
+ mov r0, #0x1\n\
+ bl sub_8104CAC\n\
+ mov r0, #0xb\n\
+._114:\n\
+ strb r0, [r4]\n\
+ ldr r4, ._119 @ \n\
+ mov r0, #0x8\n\
+ strh r0, [r4, #0x1a]\n\
+ ldrb r0, [r4, #0xa]\n\
+ cmp r0, #0\n\
+ beq ._117 @cond_branch\n\
+ bl dp15_jump_random_unknown\n\
+ strh r0, [r4, #0x1a]\n\
+._117:\n\
+ ldr r0, ._119 + 4 @ \n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._118 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x68\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._118:\n\
+ mov r0, #0x0\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+._120:\n\
+ .align 2, 0\n\
+._119:\n\
+ .word +0x2000000\n\
+ .word unk_debug_bss_1_1");
+}
+#else
static bool8 sub_8101FA4(struct Task *task)
{
sub_8102484();
@@ -639,6 +1102,7 @@ static bool8 sub_8101FA4(struct Task *task)
}
return FALSE;
}
+#endif
static bool8 sub_8102008(struct Task *task)
{
@@ -651,6 +1115,52 @@ static bool8 sub_8102008(struct Task *task)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8102034(struct Task *task)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldrh r1, [r0, #0x8]\n\
+ add r1, r1, #0x1\n\
+ strh r1, [r0, #0x8]\n\
+ lsl r1, r1, #0x10\n\
+ asr r1, r1, #0x10\n\
+ cmp r1, #0x1d\n\
+ ble ._124 @cond_branch\n\
+ ldr r0, ._127 @ unk_debug_bss_1_1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._126 @cond_branch\n\
+ ldr r0, ._127 + 4 @ unk_debug_bss_1_4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._126 @cond_branch\n\
+ ldr r4, ._127 + 8 @ unk_debug_bss_1_8\n\
+ bl Random\n\
+ mov r1, #0x1f\n\
+ and r1, r1, r0\n\
+ add r1, r1, #0x1\n\
+ str r1, [r4]\n\
+._126:\n\
+ bl sub_81024F0\n\
+ ldr r1, ._127 + 12 @ \n\
+ mov r0, #0xc\n\
+ strb r0, [r1]\n\
+._124:\n\
+ mov r0, #0x0\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+._128:\n\
+ .align 2, 0\n\
+._127:\n\
+ .word unk_debug_bss_1_1\n\
+ .word unk_debug_bss_1_4\n\
+ .word unk_debug_bss_1_8\n\
+ .word +0x2000000");
+}
+#else
static bool8 sub_8102034(struct Task *task)
{
if (++task->data[0] >= 30)
@@ -660,7 +1170,77 @@ static bool8 sub_8102034(struct Task *task)
}
return FALSE;
}
+#endif
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8102058(struct Task *task)
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ ldr r0, ._133 @ unk_debug_bss_1_1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._130 @cond_branch\n\
+ ldr r0, ._133 + 4 @ unk_debug_bss_1_4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._130 @cond_branch\n\
+ ldr r5, ._133 + 8 @ unk_debug_bss_1_8\n\
+ ldr r0, [r5]\n\
+ sub r0, r0, #0x1\n\
+ str r0, [r5]\n\
+ cmp r0, #0\n\
+ bne ._135 @cond_branch\n\
+ mov r0, #0x18\n\
+ bl PlaySE\n\
+ ldr r4, ._133 + 12 @ \n\
+ ldrb r0, [r4, #0x18]\n\
+ bl sub_8102E1C\n\
+ ldrb r0, [r4, #0x18]\n\
+ bl sub_8103C14\n\
+ bl Random\n\
+ mov r1, #0x1f\n\
+ and r1, r1, r0\n\
+ add r1, r1, #0x1\n\
+ str r1, [r5]\n\
+ b ._132\n\
+._134:\n\
+ .align 2, 0\n\
+._133:\n\
+ .word unk_debug_bss_1_1\n\
+ .word unk_debug_bss_1_4\n\
+ .word unk_debug_bss_1_8\n\
+ .word +0x2000000\n\
+._130:\n\
+ ldr r0, ._136 @ gMain\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._135 @cond_branch\n\
+ mov r0, #0x18\n\
+ bl PlaySE\n\
+ ldr r4, ._136 + 4 @ \n\
+ ldrb r0, [r4, #0x18]\n\
+ bl sub_8102E1C\n\
+ ldrb r0, [r4, #0x18]\n\
+ bl sub_8103C14\n\
+._132:\n\
+ mov r0, #0xd\n\
+ strb r0, [r4]\n\
+._135:\n\
+ mov r0, #0x0\n\
+ pop {r4, r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+._137:\n\
+ .align 2, 0\n\
+._136:\n\
+ .word gMain\n\
+ .word +0x2000000");
+}
+#else
static bool8 sub_8102058(struct Task *task)
{
if (gMain.newKeys & A_BUTTON)
@@ -672,7 +1252,121 @@ static bool8 sub_8102058(struct Task *task)
}
return FALSE;
}
+#endif
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8102090(struct Task *task)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r4, ._146 @ \n\
+ ldrb r0, [r4, #0x18]\n\
+ bl sub_8102E40\n\
+ lsl r0, r0, #0x18\n\
+ lsr r2, r0, #0x18\n\
+ cmp r2, #0\n\
+ bne ._138 @cond_branch\n\
+ ldrh r0, [r4, #0x18]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4, #0x18]\n\
+ mov r1, #0xc\n\
+ strb r1, [r4]\n\
+ lsl r0, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0x2\n\
+ ble ._161 @cond_branch\n\
+ mov r0, #0xe\n\
+ strb r0, [r4]\n\
+ ldr r0, ._146 + 4 @ \n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x8\n\
+ beq ._140 @cond_branch\n\
+ cmp r0, #0x8\n\
+ bgt ._141 @cond_branch\n\
+ cmp r0, #0x2\n\
+ beq ._142 @cond_branch\n\
+ cmp r0, #0x2\n\
+ bgt ._143 @cond_branch\n\
+ cmp r0, #0x1\n\
+ beq ._144 @cond_branch\n\
+ b ._161\n\
+._147:\n\
+ .align 2, 0\n\
+._146:\n\
+ .word +0x2000000\n\
+ .word unk_debug_bss_1_0\n\
+._143:\n\
+ cmp r0, #0x4\n\
+ beq ._148 @cond_branch\n\
+ b ._161\n\
+._141:\n\
+ cmp r0, #0x40\n\
+ beq ._150 @cond_branch\n\
+ cmp r0, #0x40\n\
+ bgt ._151 @cond_branch\n\
+ cmp r0, #0x10\n\
+ beq ._152 @cond_branch\n\
+ b ._161\n\
+._151:\n\
+ cmp r0, #0x80\n\
+ beq ._154 @cond_branch\n\
+ b ._161\n\
+._142:\n\
+ mov r0, #0x14\n\
+ strh r0, [r4, #0x28]\n\
+ strh r0, [r4, #0x2a]\n\
+ mov r0, #0x12\n\
+ b ._160\n\
+._144:\n\
+ mov r0, #0x14\n\
+ strh r0, [r4, #0x28]\n\
+ strh r0, [r4, #0x2a]\n\
+ mov r0, #0x12\n\
+ b ._160\n\
+._148:\n\
+ mov r0, #0x3\n\
+ strh r0, [r4, #0x28]\n\
+ mov r0, #0x1\n\
+ strh r0, [r4, #0x2a]\n\
+ mov r0, #0x2\n\
+ b ._160\n\
+._140:\n\
+ strh r2, [r4, #0x28]\n\
+ mov r0, #0x2\n\
+ strh r0, [r4, #0x2a]\n\
+ mov r0, #0x3\n\
+ b ._160\n\
+._152:\n\
+ mov r0, #0x2\n\
+ strh r0, [r4, #0x28]\n\
+ mov r0, #0x5\n\
+ strh r0, [r4, #0x2a]\n\
+ mov r0, #0x14\n\
+ b ._160\n\
+._150:\n\
+ mov r0, #0x13\n\
+ strh r0, [r4, #0x28]\n\
+ strh r0, [r4, #0x2a]\n\
+ strh r2, [r4, #0x2c]\n\
+ b ._161\n\
+._154:\n\
+ mov r0, #0x13\n\
+ strh r0, [r4, #0x28]\n\
+ strh r0, [r4, #0x2a]\n\
+._160:\n\
+ strh r0, [r4, #0x2c]\n\
+._161:\n\
+ mov r0, #0x1\n\
+ b ._162\n\
+._138:\n\
+ mov r0, #0x0\n\
+._162:\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1");
+}
+#else
static bool8 sub_8102090(struct Task *task)
{
if (!sub_8102E40(eSlotMachine->unk18))
@@ -687,8 +1381,169 @@ static bool8 sub_8102090(struct Task *task)
}
return FALSE;
}
+#endif
-static bool8 sub_81020C8(struct Task *task)
+#if DEBUG
+__attribute__((naked))
+bool8 sub_81020C8(struct Task *task)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r4, ._165 @ \n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0xc0\n\
+ and r0, r0, r1\n\
+ strb r0, [r4, #0x4]\n\
+ bl CheckMatch\n\
+ ldrb r0, [r4, #0xa]\n\
+ cmp r0, #0\n\
+ beq ._163 @cond_branch\n\
+ sub r0, r0, #0x1\n\
+ strb r0, [r4, #0xa]\n\
+ ldrb r0, [r4, #0xb]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r4, #0xb]\n\
+ b ._164\n\
+._166:\n\
+ .align 2, 0\n\
+._165:\n\
+ .word +0x2000000\n\
+._163:\n\
+ bl debug_sub_811B894\n\
+._164:\n\
+ ldr r4, ._171 @ \n\
+ ldrh r0, [r4, #0x8]\n\
+ cmp r0, #0\n\
+ beq ._167 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x6c\n\
+ mov r2, #0xe\n\
+ ldsh r1, [r4, r2]\n\
+ bl debug_sub_811B5B4\n\
+ mov r0, #0xf\n\
+ strb r0, [r4]\n\
+ bl sub_8102A24\n\
+ bl sub_8103F70\n\
+ ldrh r0, [r4, #0x10]\n\
+ ldrh r1, [r4, #0xe]\n\
+ sub r0, r0, r1\n\
+ strh r0, [r4, #0x10]\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bge ._168 @cond_branch\n\
+ mov r0, #0x0\n\
+ strh r0, [r4, #0x10]\n\
+._168:\n\
+ ldrh r1, [r4, #0x8]\n\
+ mov r0, #0xc0\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._169 @cond_branch\n\
+ ldr r0, ._171 + 4 @ \n\
+ bl PlayFanfare\n\
+ mov r0, #0x6\n\
+ bl sub_8104CAC\n\
+ b ._174\n\
+._172:\n\
+ .align 2, 0\n\
+._171:\n\
+ .word +0x2000000\n\
+ .word 0x185\n\
+._169:\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._173 @cond_branch\n\
+ ldr r0, ._175 @ 0x185\n\
+ bl PlayFanfare\n\
+ mov r0, #0x5\n\
+ bl sub_8104CAC\n\
+ b ._174\n\
+._176:\n\
+ .align 2, 0\n\
+._175:\n\
+ .word 0x185\n\
+._173:\n\
+ mov r0, #0xc3\n\
+ lsl r0, r0, #0x1\n\
+ bl PlayFanfare\n\
+ mov r0, #0x2\n\
+ bl sub_8104CAC\n\
+._174:\n\
+ ldr r1, ._183 @ \n\
+ ldrh r3, [r1, #0x8]\n\
+ mov r0, #0xe0\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r3\n\
+ add r2, r1, #0\n\
+ cmp r0, #0\n\
+ beq ._179 @cond_branch\n\
+ ldrb r1, [r2, #0x4]\n\
+ mov r0, #0x3f\n\
+ and r0, r0, r1\n\
+ mov r1, #0x0\n\
+ strb r0, [r2, #0x4]\n\
+ mov r0, #0xc0\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r3\n\
+ cmp r0, #0\n\
+ beq ._179 @cond_branch\n\
+ strb r1, [r2, #0xa]\n\
+ strb r1, [r2, #0xb]\n\
+ strb r1, [r2, #0x3]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r3\n\
+ cmp r0, #0\n\
+ beq ._179 @cond_branch\n\
+ mov r0, #0x1\n\
+ strb r0, [r2, #0x3]\n\
+._179:\n\
+ ldrh r1, [r2, #0x8]\n\
+ mov r0, #0x20\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._185 @cond_branch\n\
+ ldrb r0, [r2, #0x2]\n\
+ cmp r0, #0xf\n\
+ bhi ._185 @cond_branch\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r2, #0x2]\n\
+ ldrb r0, [r2, #0x2]\n\
+ bl sub_8104064\n\
+ b ._185\n\
+._184:\n\
+ .align 2, 0\n\
+._183:\n\
+ .word +0x2000000\n\
+._167:\n\
+ mov r0, #0x3\n\
+ bl sub_8104CAC\n\
+ mov r0, #0x14\n\
+ strb r0, [r4]\n\
+ ldrh r0, [r4, #0x12]\n\
+ ldrh r1, [r4, #0x10]\n\
+ add r0, r0, r1\n\
+ strh r0, [r4, #0x10]\n\
+ lsl r0, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ ldr r1, ._186 @ 0x270f\n\
+ cmp r0, r1\n\
+ ble ._185 @cond_branch\n\
+ strh r1, [r4, #0x10]\n\
+._185:\n\
+ mov r0, #0x0\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+._187:\n\
+ .align 2, 0\n\
+._186:\n\
+ .word 0x270f");
+}
+#else
+bool8 sub_81020C8(struct Task *task)
{
eSlotMachine->unk04 &= 0xc0;
CheckMatch();
@@ -752,6 +1607,7 @@ static bool8 sub_81020C8(struct Task *task)
}
return FALSE;
}
+#endif
static bool8 sub_81021E0(struct Task *task)
{
@@ -902,6 +1758,48 @@ static bool8 sub_81023FC(struct Task *task)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+static bool8 sub_8102424(struct Task *task)
+{
+ asm("\
+ push {lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._234 @ unk_debug_bss_1_1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._233 @cond_branch\n\
+ ldr r0, ._234 + 4 @ gSaveBlock1\n\
+ ldr r1, ._234 + 8 @ \n\
+ ldrh r1, [r1, #0xc]\n\
+ ldr r2, ._234 + 12 @ \n\
+ add r0, r0, r2\n\
+ strh r1, [r0]\n\
+._233:\n\
+ mov r0, #0x1\n\
+ neg r0, r0\n\
+ mov r1, #0x0\n\
+ str r1, [sp]\n\
+ mov r2, #0x0\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r1, ._234 + 8 @ \n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ mov r0, #0x0\n\
+ add sp, sp, #0x4\n\
+ pop {r1}\n\
+ bx r1\n\
+._235:\n\
+ .align 2, 0\n\
+._234:\n\
+ .word unk_debug_bss_1_1\n\
+ .word gSaveBlock1\n\
+ .word +0x2000000\n\
+ .word 0x494");
+}
+#else
static bool8 sub_8102424(struct Task *task)
{
gSaveBlock1.coins = eSlotMachine->coins;
@@ -909,6 +1807,7 @@ static bool8 sub_8102424(struct Task *task)
eSlotMachine->state++;
return FALSE;
}
+#endif
static bool8 sub_8102460(struct Task *task)
{
@@ -919,6 +1818,272 @@ static bool8 sub_8102460(struct Task *task)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+static bool8 debug_sub_8116E74(struct Task *task)
+{
+ asm("\
+ push {lr}\n\
+ bl debug_sub_811B634\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._239 @cond_branch\n\
+ ldr r1, ._240 @ \n\
+ mov r0, #0x5\n\
+ strb r0, [r1]\n\
+._239:\n\
+ mov r0, #0x0\n\
+ pop {r1}\n\
+ bx r1\n\
+._241:\n\
+ .align 2, 0\n\
+._240:\n\
+ .word +0x2000000");
+}
+#endif
+
+#if DEBUG
+__attribute__((naked))
+static void sub_8102484(void)
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ ldr r0, ._256 @ \n\
+ ldrb r2, [r0, #0xa]\n\
+ add r4, r0, #0\n\
+ cmp r2, #0\n\
+ beq ._242 @cond_branch\n\
+ b ._270\n\
+._242:\n\
+ ldr r0, ._256 + 4 @ \n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._245 @cond_branch\n\
+ ldr r3, ._256 + 8 @ \n\
+ ldrb r0, [r3]\n\
+ cmp r0, #0\n\
+ beq ._245 @cond_branch\n\
+ ldr r0, ._256 + 12 @ \n\
+ ldrb r1, [r0]\n\
+ strb r1, [r4, #0x4]\n\
+ strb r2, [r3]\n\
+ strb r2, [r0]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._246 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x88\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._246:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._247 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x84\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._247:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x20\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._248 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x8c\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._248:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x10\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._249 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x80\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._249:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._250 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x7c\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._250:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._251 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x78\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._251:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._252 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x74\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._252:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._253 @cond_branch\n\
+ b ._270\n\
+._253:\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x70\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+ b ._270\n\
+._257:\n\
+ .align 2, 0\n\
+._256:\n\
+ .word +0x2000000\n\
+ .word unk_debug_bss_1_1\n\
+ .word unk_debug_bss_1_2\n\
+ .word unk_debug_bss_1_3\n\
+._245:\n\
+ add r5, r4, #0\n\
+ ldrb r1, [r5, #0x4]\n\
+ mov r0, #0xc0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._270 @cond_branch\n\
+ bl sub_8102540\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._260 @cond_branch\n\
+ bl sub_8102578\n\
+ lsl r0, r0, #0x18\n\
+ lsr r6, r0, #0x18\n\
+ cmp r6, #0x3\n\
+ beq ._260 @cond_branch\n\
+ ldr r1, ._271 @ gUnknown_083ECE42\n\
+ lsl r0, r6, #0x1\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ ldrb r0, [r5, #0x4]\n\
+ orr r0, r0, r1\n\
+ strb r0, [r5, #0x4]\n\
+ mov r1, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._261 @cond_branch\n\
+ add r0, r5, #0\n\
+ add r0, r0, #0x88\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._261:\n\
+ ldrb r1, [r5, #0x4]\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._262 @cond_branch\n\
+ add r0, r5, #0\n\
+ add r0, r0, #0x84\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._262:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x20\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._263 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x8c\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._263:\n\
+ cmp r6, #0x1\n\
+ bne ._270 @cond_branch\n\
+._260:\n\
+ bl sub_81025BC\n\
+ lsl r0, r0, #0x18\n\
+ lsr r6, r0, #0x18\n\
+ cmp r6, #0x5\n\
+ beq ._270 @cond_branch\n\
+ ldr r4, ._271 + 4 @ \n\
+ ldr r1, ._271 + 8 @ \n\
+ lsl r0, r6, #0x1\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ ldrb r0, [r4, #0x4]\n\
+ orr r0, r0, r1\n\
+ strb r0, [r4, #0x4]\n\
+ mov r1, #0x10\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._266 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x80\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._266:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._267 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x7c\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._267:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._268 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x78\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._268:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._269 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x74\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._269:\n\
+ ldrb r1, [r4, #0x4]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._270 @cond_branch\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x70\n\
+ mov r1, #0x1\n\
+ bl debug_sub_811B5B4\n\
+._270:\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._272:\n\
+ .align 2, 0\n\
+._271:\n\
+ .word gUnknown_083ECE42\n\
+ .word +0x2000000\n\
+ .word gUnknown_083ECE48");
+}
+#else
static void sub_8102484(void)
{
u8 r3;
@@ -944,6 +2109,7 @@ static void sub_8102484(void)
}
}
}
+#endif
static void sub_81024F0(void)
{
@@ -2854,7 +4020,8 @@ static void sub_8104C5C(void)
static void LoadSlotMachineWheelOverlay(void);
-static void sub_8104CAC(u8 arg0) {
+static void sub_8104CAC(u8 arg0)
+{
u8 i;
struct Task *task;
@@ -2875,9 +4042,7 @@ static void sub_8104CAC(u8 arg0) {
#ifdef GERMAN
if (arg0 == 5 && i <= 2)
- {
gSprites[spriteId].invisible = TRUE;
- }
#endif
}
}
@@ -3949,7 +5114,8 @@ static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) {
vram[16 * 32 + 1 + arg0] = arg4;
}
-static void sub_81065DC(void) {
+static void sub_81065DC(void)
+{
s16 y, x;
u16 *screen;
@@ -3965,7 +5131,1226 @@ static void sub_81065DC(void) {
}
}
-static const u8 sReelSymbols[][21] = {
+#if DEBUG
+__attribute__((naked))
+void debug_sub_811B1C4()
+{
+ asm(
+ " ldr r1, .__1_\n"
+ " ldrb r0, [r1]\n"
+ " mov r3, #0x2\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " ldr r2, .__1_ + 4\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x2\n"
+ " eor r1, r1, r0\n"
+ " neg r0, r1\n"
+ " orr r0, r0, r1\n"
+ " asr r0, r0, #0x1f\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ ".__2_:\n"
+ " .align 2, 0\n"
+ ".__1_:\n"
+ " .word unk_debug_bss_1_3\n"
+ " .word unk_debug_bss_1_0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B1EC()
+{
+ asm(
+ " ldr r2, .__3\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x1\n"
+ " orr r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " ldr r2, .__3 + 4\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x1\n"
+ " eor r0, r0, r1\n"
+ " neg r0, r0\n"
+ " lsr r0, r0, #0x1f\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ ".__4:\n"
+ " .align 2, 0\n"
+ ".__3:\n"
+ " .word unk_debug_bss_1_3\n"
+ " .word unk_debug_bss_1_0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B210()
+{
+ asm(
+ " ldr r1, .__5\n"
+ " ldrb r0, [r1]\n"
+ " mov r3, #0x4\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " ldr r2, .__5 + 4\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x4\n"
+ " eor r1, r1, r0\n"
+ " neg r0, r1\n"
+ " orr r0, r0, r1\n"
+ " asr r0, r0, #0x1f\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ ".__6:\n"
+ " .align 2, 0\n"
+ ".__5:\n"
+ " .word unk_debug_bss_1_3\n"
+ " .word unk_debug_bss_1_0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B238()
+{
+ asm(
+ " ldr r1, .__7\n"
+ " ldrb r0, [r1]\n"
+ " mov r3, #0x8\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " ldr r2, .__7 + 4\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x8\n"
+ " eor r1, r1, r0\n"
+ " neg r0, r1\n"
+ " orr r0, r0, r1\n"
+ " asr r0, r0, #0x1f\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ ".__8:\n"
+ " .align 2, 0\n"
+ ".__7:\n"
+ " .word unk_debug_bss_1_3\n"
+ " .word unk_debug_bss_1_0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B260()
+{
+ asm(
+ " ldr r1, .__9\n"
+ " ldrb r0, [r1]\n"
+ " mov r3, #0x10\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " ldr r2, .__9 + 4\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x10\n"
+ " eor r1, r1, r0\n"
+ " neg r0, r1\n"
+ " orr r0, r0, r1\n"
+ " asr r0, r0, #0x1f\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ ".__10:\n"
+ " .align 2, 0\n"
+ ".__9:\n"
+ " .word unk_debug_bss_1_3\n"
+ " .word unk_debug_bss_1_0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B288()
+{
+ asm(
+ " ldr r1, .__11\n"
+ " ldrb r0, [r1]\n"
+ " mov r3, #0x40\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " ldr r2, .__11 + 4\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x40\n"
+ " eor r1, r1, r0\n"
+ " neg r0, r1\n"
+ " orr r0, r0, r1\n"
+ " asr r0, r0, #0x1f\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ ".__12:\n"
+ " .align 2, 0\n"
+ ".__11:\n"
+ " .word unk_debug_bss_1_3\n"
+ " .word unk_debug_bss_1_0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B2B0()
+{
+ asm(
+ " ldr r1, .__13\n"
+ " ldrb r0, [r1]\n"
+ " mov r3, #0x80\n"
+ " orr r0, r0, r3\n"
+ " strb r0, [r1]\n"
+ " ldr r2, .__13 + 4\n"
+ " ldrb r1, [r2]\n"
+ " mov r0, #0x80\n"
+ " eor r1, r1, r0\n"
+ " neg r0, r1\n"
+ " orr r0, r0, r1\n"
+ " asr r0, r0, #0x1f\n"
+ " and r0, r0, r3\n"
+ " strb r0, [r2]\n"
+ " bx lr\n"
+ ".__14:\n"
+ " .align 2, 0\n"
+ ".__13:\n"
+ " .word unk_debug_bss_1_3\n"
+ " .word unk_debug_bss_1_0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B2D8()
+{
+ asm(
+ " ldr r0, .__15\n"
+ " ldrb r1, [r0]\n"
+ " mov r2, #0x20\n"
+ " orr r1, r1, r2\n"
+ " strb r1, [r0]\n"
+ " bx lr\n"
+ ".__16:\n"
+ " .align 2, 0\n"
+ ".__15:\n"
+ " .word unk_debug_bss_1_3\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B2E8()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " ldr r0, .__17\n"
+ " ldrb r1, [r0, #0x1]\n"
+ " add r1, r1, #0x1\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x6\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " add sp, sp, #0x4\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ ".__18:\n"
+ " .align 2, 0\n"
+ ".__17:\n"
+ " .word +0x2000000\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B310()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " ldr r0, .__21\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 4\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 8\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 12\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 16\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 20\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 24\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 28\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 32\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 36\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 40\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 44\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 48\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 52\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 56\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 60\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 64\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 68\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__21 + 72\n"
+ " ldrb r0, [r0, #0x3]\n"
+ " cmp r0, #0\n"
+ " bne .__19 @cond_branch\n"
+ " ldr r0, .__21 + 76\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\n"
+ " b .__20\n"
+ ".__22:\n"
+ " .align 2, 0\n"
+ ".__21:\n"
+ " .word Str_841B1C4\n"
+ " .word Str_841B1CB\n"
+ " .word Str_841B1D4\n"
+ " .word Str_841B1DB\n"
+ " .word Str_841B1E2\n"
+ " .word Str_841B1E8\n"
+ " .word Str_841B1F3\n"
+ " .word Str_841B202\n"
+ " .word Str_841B24C\n"
+ " .word Str_841B211\n"
+ " .word Str_841B219\n"
+ " .word Str_841B220\n"
+ " .word Str_841B227\n"
+ " .word Str_841B22E\n"
+ " .word Str_841B235\n"
+ " .word Str_841B23B\n"
+ " .word Str_841B23F\n"
+ " .word Str_841B243\n"
+ " .word +0x2000000\n"
+ " .word Str_841B246\n"
+ ".__19:\n"
+ " ldr r0, .__30\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\n"
+ ".__20:\n"
+ " ldr r4, .__30 + 4\n"
+ " ldr r1, [r4, #0x68]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, [r4, #0x6c]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x10\n"
+ " ldsh r1, [r4, r0]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, [r4, #0x70]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, [r4, #0x74]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x5\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, [r4, #0x78]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x7\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, [r4, #0x7c]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x9\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x80\n"
+ " ldr r1, [r0]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x84\n"
+ " ldr r1, [r0]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x88\n"
+ " ldr r1, [r0]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x8c\n"
+ " ldr r1, [r0]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, .__30 + 8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq .__23 @cond_branch\n"
+ " mov r2, #0x0\n"
+ " cmp r0, #0x8\n"
+ " beq .__24 @cond_branch\n"
+ " cmp r0, #0x8\n"
+ " bgt .__25 @cond_branch\n"
+ " cmp r0, #0x2\n"
+ " beq .__26 @cond_branch\n"
+ " cmp r0, #0x2\n"
+ " bgt .__27 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq .__28 @cond_branch\n"
+ " b .__45\n"
+ ".__31:\n"
+ " .align 2, 0\n"
+ ".__30:\n"
+ " .word Str_841B249\n"
+ " .word +0x2000000\n"
+ " .word unk_debug_bss_1_0\n"
+ ".__27:\n"
+ " cmp r0, #0x4\n"
+ " beq .__32 @cond_branch\n"
+ " b .__45\n"
+ ".__25:\n"
+ " cmp r0, #0x40\n"
+ " beq .__34 @cond_branch\n"
+ " cmp r0, #0x40\n"
+ " bgt .__35 @cond_branch\n"
+ " cmp r0, #0x10\n"
+ " beq .__36 @cond_branch\n"
+ " b .__45\n"
+ ".__35:\n"
+ " cmp r0, #0x80\n"
+ " beq .__38 @cond_branch\n"
+ " b .__45\n"
+ ".__26:\n"
+ " mov r2, #0x3\n"
+ " b .__45\n"
+ ".__28:\n"
+ " mov r2, #0x5\n"
+ " b .__45\n"
+ ".__32:\n"
+ " mov r2, #0x7\n"
+ " b .__45\n"
+ ".__24:\n"
+ " mov r2, #0x9\n"
+ " b .__45\n"
+ ".__36:\n"
+ " mov r2, #0xb\n"
+ " b .__45\n"
+ ".__34:\n"
+ " mov r2, #0xd\n"
+ " b .__45\n"
+ ".__38:\n"
+ " mov r2, #0xf\n"
+ ".__45:\n"
+ " ldr r0, .__46\n"
+ " mov r1, #0x17\n"
+ " bl Menu_PrintText\n"
+ ".__23:\n"
+ " bl debug_sub_811B2E8\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ ".__47:\n"
+ " .align 2, 0\n"
+ ".__46:\n"
+ " .word Str_841B26D\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B5B4()
+{
+ asm(
+ " push {lr}\n"
+ " add r2, r0, #0\n"
+ " ldr r0, [r2]\n"
+ " add r0, r0, r1\n"
+ " str r0, [r2]\n"
+ " ldr r1, .__49\n"
+ " cmp r0, r1\n"
+ " ble .__48 @cond_branch\n"
+ " str r1, [r2]\n"
+ ".__48:\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ ".__50:\n"
+ " .align 2, 0\n"
+ ".__49:\n"
+ " .word 0x270f\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B5D0()
+{
+ asm(
+ " ldr r0, .__51\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r0]\n"
+ " ldr r0, .__51 + 4\n"
+ " strb r1, [r0]\n"
+ " ldr r0, .__51 + 8\n"
+ " strb r1, [r0]\n"
+ " ldr r0, .__51 + 12\n"
+ " strb r1, [r0]\n"
+ " ldr r2, .__51 + 16\n"
+ " mov r0, #0x0\n"
+ " str r0, [r2, #0x68]\n"
+ " str r0, [r2, #0x6c]\n"
+ " str r0, [r2, #0x70]\n"
+ " str r0, [r2, #0x74]\n"
+ " str r0, [r2, #0x78]\n"
+ " str r0, [r2, #0x7c]\n"
+ " add r1, r2, #0\n"
+ " add r1, r1, #0x80\n"
+ " str r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " str r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " str r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " str r0, [r1]\n"
+ " add r1, r1, #0x4\n"
+ " str r0, [r1]\n"
+ " bx lr\n"
+ ".__52:\n"
+ " .align 2, 0\n"
+ ".__51:\n"
+ " .word unk_debug_bss_1_0\n"
+ " .word unk_debug_bss_1_2\n"
+ " .word unk_debug_bss_1_3\n"
+ " .word unk_debug_bss_1_4\n"
+ " .word +0x2000000\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B620()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, .__53\n"
+ " mov r1, #0x0\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ ".__54:\n"
+ " .align 2, 0\n"
+ ".__53:\n"
+ " .word debug_sub_811B654+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B634()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, .__57\n"
+ " bl FindTaskIdByFunc\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0xff\n"
+ " beq .__55 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b .__56\n"
+ ".__58:\n"
+ " .align 2, 0\n"
+ ".__57:\n"
+ " .word debug_sub_811B654+1\n"
+ ".__55:\n"
+ " mov r0, #0x1\n"
+ ".__56:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B654()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " lsl r0, r6, #0x2\n"
+ " add r0, r0, r6\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, .__63\n"
+ " add r5, r0, r1\n"
+ " mov r0, #0x8\n"
+ " ldsh r1, [r5, r0]\n"
+ " cmp r1, #0x1\n"
+ " beq .__59 @cond_branch\n"
+ " cmp r1, #0x1\n"
+ " bgt .__60 @cond_branch\n"
+ " cmp r1, #0\n"
+ " beq .__61 @cond_branch\n"
+ " b .__116\n"
+ ".__64:\n"
+ " .align 2, 0\n"
+ ".__63:\n"
+ " .word gTasks\n"
+ ".__60:\n"
+ " cmp r1, #0x2\n"
+ " bne .__65 @cond_branch\n"
+ " b .__66\n"
+ ".__65:\n"
+ " cmp r1, #0x3\n"
+ " bne .__67 @cond_branch\n"
+ " b .__68\n"
+ ".__67:\n"
+ " b .__116\n"
+ ".__61:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x18\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " bl debug_sub_811B310\n"
+ " ldrh r0, [r5, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r5, #0x8]\n"
+ " b .__116\n"
+ ".__59:\n"
+ " ldr r7, .__76\n"
+ " ldrh r2, [r7, #0x2e]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq .__71 @cond_branch\n"
+ " b .__94\n"
+ ".__71:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r2\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r3, r0, #0x10\n"
+ " cmp r3, #0\n"
+ " beq .__73 @cond_branch\n"
+ " ldr r1, .__76 + 4\n"
+ " ldrb r0, [r1, #0x1]\n"
+ " sub r0, r0, #0x1\n"
+ " strb r0, [r1, #0x1]\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bge .__79 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " strb r0, [r1, #0x1]\n"
+ " b .__79\n"
+ ".__77:\n"
+ " .align 2, 0\n"
+ ".__76:\n"
+ " .word gMain\n"
+ " .word +0x2000000\n"
+ ".__73:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq .__78 @cond_branch\n"
+ " ldr r1, .__81\n"
+ " ldrb r0, [r1, #0x1]\n"
+ " add r0, r0, #0x1\n"
+ " strb r0, [r1, #0x1]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x5\n"
+ " bls .__79 @cond_branch\n"
+ " strb r3, [r1, #0x1]\n"
+ ".__79:\n"
+ " bl debug_sub_811B2E8\n"
+ " b .__116\n"
+ ".__82:\n"
+ " .align 2, 0\n"
+ ".__81:\n"
+ " .word +0x2000000\n"
+ ".__78:\n"
+ " and r1, r1, r2\n"
+ " lsl r0, r1, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " cmp r4, #0\n"
+ " beq .__83 @cond_branch\n"
+ " mov r0, #0x3\n"
+ " strh r0, [r5, #0x8]\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x9\n"
+ " mov r3, #0x5\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, .__85\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__85 + 4\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " bl Menu_PrintText\n"
+ " b .__116\n"
+ ".__86:\n"
+ " .align 2, 0\n"
+ ".__85:\n"
+ " .word Str_841B25C\n"
+ " .word Str_841B264\n"
+ ".__83:\n"
+ " mov r0, #0x4\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq .__87 @cond_branch\n"
+ " ldr r0, .__91\n"
+ " strb r4, [r0]\n"
+ " ldr r0, .__91 + 4\n"
+ " strb r4, [r0]\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xa\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, .__91 + 8\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r3, .__91 + 12\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintItems\n"
+ " str r4, [sp]\n"
+ " mov r0, #0x9\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x3\n"
+ " mov r3, #0x8\n"
+ " bl InitMenu\n"
+ " ldrh r0, [r5, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r5, #0x8]\n"
+ ".__87:\n"
+ " ldrh r1, [r7, #0x2e]\n"
+ " mov r0, #0x8\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne .__88 @cond_branch\n"
+ " b .__116\n"
+ ".__88:\n"
+ " ldr r1, .__91 + 16\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " b .__94\n"
+ ".__92:\n"
+ " .align 2, 0\n"
+ ".__91:\n"
+ " .word unk_debug_bss_1_2\n"
+ " .word unk_debug_bss_1_3\n"
+ " .word Str_841B254\n"
+ " .word _841B270\n"
+ " .word unk_debug_bss_1_4\n"
+ ".__66:\n"
+ " bl Menu_ProcessInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r2, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r2, r0\n"
+ " beq .__116 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r2, r0\n"
+ " beq .__94 @cond_branch\n"
+ " ldr r1, .__96\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " ldr r0, .__96 + 4\n"
+ " lsl r1, r2, #0x3\n"
+ " add r0, r0, #0x4\n"
+ " add r1, r1, r0\n"
+ " ldr r0, [r1]\n"
+ " bl _call_via_r0\n"
+ ".__94:\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r6, #0\n"
+ " bl DestroyTask\n"
+ " b .__116\n"
+ ".__97:\n"
+ " .align 2, 0\n"
+ ".__96:\n"
+ " .word unk_debug_bss_1_2\n"
+ " .word _841B270\n"
+ ".__68:\n"
+ " ldr r2, .__100\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq .__98 @cond_branch\n"
+ " ldr r2, .__100 + 4\n"
+ " ldrh r0, [r2, #0xc]\n"
+ " add r0, r0, #0x64\n"
+ " b .__99\n"
+ ".__101:\n"
+ " .align 2, 0\n"
+ ".__100:\n"
+ " .word gMain\n"
+ " .word +0x2000000\n"
+ ".__98:\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq .__102 @cond_branch\n"
+ " ldr r1, .__104\n"
+ " ldrh r0, [r1, #0xc]\n"
+ " sub r0, r0, #0x64\n"
+ " b .__103\n"
+ ".__105:\n"
+ " .align 2, 0\n"
+ ".__104:\n"
+ " .word +0x2000000\n"
+ ".__102:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq .__106 @cond_branch\n"
+ " ldr r1, .__109\n"
+ " ldr r2, .__109 + 4\n"
+ " add r0, r2, #0\n"
+ " ldrh r2, [r1, #0xc]\n"
+ " add r0, r0, r2\n"
+ ".__103:\n"
+ " strh r0, [r1, #0xc]\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " bgt .__116 @cond_branch\n"
+ " ldr r0, .__109 + 8\n"
+ " strh r0, [r1, #0xc]\n"
+ " b .__116\n"
+ ".__110:\n"
+ " .align 2, 0\n"
+ ".__109:\n"
+ " .word +0x2000000\n"
+ " .word 0xfffffc18\n"
+ " .word 0x270f\n"
+ ".__106:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq .__111 @cond_branch\n"
+ " ldr r2, .__114\n"
+ " mov r1, #0xfa\n"
+ " lsl r1, r1, #0x2\n"
+ " add r0, r1, #0\n"
+ " ldrh r1, [r2, #0xc]\n"
+ " add r0, r0, r1\n"
+ ".__99:\n"
+ " strh r0, [r2, #0xc]\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x10\n"
+ " ldr r1, .__114 + 4\n"
+ " cmp r0, r1\n"
+ " ble .__116 @cond_branch\n"
+ " strh r1, [r2, #0xc]\n"
+ " b .__116\n"
+ ".__115:\n"
+ " .align 2, 0\n"
+ ".__114:\n"
+ " .word +0x2000000\n"
+ " .word 0x270f\n"
+ ".__111:\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq .__116 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r6, #0\n"
+ " bl DestroyTask\n"
+ ".__116:\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_811B894()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " ldr r1, .__122\n"
+ " ldrh r2, [r1, #0x8]\n"
+ " mov r0, #0xc0\n"
+ " lsl r0, r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " add r4, r1, #0\n"
+ " cmp r0, #0\n"
+ " beq .__117 @cond_branch\n"
+ " add r1, r1, #0x90\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, #0x1\n"
+ " str r0, [r1]\n"
+ " ldr r2, .__122 + 4\n"
+ " cmp r0, r2\n"
+ " ble .__118 @cond_branch\n"
+ " str r2, [r1]\n"
+ ".__118:\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0x88\n"
+ " ldr r1, [r1]\n"
+ " ldr r0, [r0]\n"
+ " cmp r1, r0\n"
+ " beq .__119 @cond_branch\n"
+ " ldr r0, .__122 + 8\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, .__122 + 12\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ ".__119:\n"
+ " ldrb r1, [r4, #0x4]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0\n"
+ " bne .__126 @cond_branch\n"
+ " ldr r0, .__122 + 16\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x11\n"
+ " b .__121\n"
+ ".__123:\n"
+ " .align 2, 0\n"
+ ".__122:\n"
+ " .word +0x2000000\n"
+ " .word 0x270f\n"
+ " .word Str_841B2B0\n"
+ " .word unk_debug_bss_1_4\n"
+ " .word Str_841B2D3\n"
+ ".__117:\n"
+ " lsl r0, r2, #0x10\n"
+ " cmp r0, #0\n"
+ " beq .__127 @cond_branch\n"
+ " ldrb r1, [r4, #0x4]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq .__126 @cond_branch\n"
+ " mov r4, #0x3\n"
+ " and r4, r4, r2\n"
+ " cmp r4, #0\n"
+ " bne .__126 @cond_branch\n"
+ " ldr r0, .__163\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x2\n"
+ ".__121:\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, .__163 + 4\n"
+ " strb r4, [r0]\n"
+ ".__126:\n"
+ " ldr r0, .__163 + 8\n"
+ " ldrh r1, [r0, #0x8]\n"
+ " add r4, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq .__127 @cond_branch\n"
+ " b .__162\n"
+ ".__127:\n"
+ " mov r1, #0x12\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0x3\n"
+ " beq .__129 @cond_branch\n"
+ " b .__162\n"
+ ".__129:\n"
+ " ldrb r1, [r4, #0x4]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq .__131 @cond_branch\n"
+ " b .__162\n"
+ ".__131:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r7, r0, #0x18\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x2\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x3\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r6, r0, #0x18\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r9, r0\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x2\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x3\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov sl, r0\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x2\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x3\n"
+ " bl GetTagOfReelSymbolOnScreenAtPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r7, #0\n"
+ " bne .__134 @cond_branch\n"
+ " mov r1, r9\n"
+ " cmp r1, #0x1\n"
+ " bne .__134 @cond_branch\n"
+ " cmp r5, #0\n"
+ " beq .__159 @cond_branch\n"
+ ".__134:\n"
+ " ldr r1, [sp]\n"
+ " cmp r1, #0\n"
+ " bne .__137 @cond_branch\n"
+ " cmp r4, #0x1\n"
+ " bne .__137 @cond_branch\n"
+ " mov r1, r8\n"
+ " cmp r1, #0\n"
+ " beq .__159 @cond_branch\n"
+ ".__137:\n"
+ " cmp r6, #0\n"
+ " bne .__140 @cond_branch\n"
+ " mov r1, sl\n"
+ " cmp r1, #0x1\n"
+ " bne .__140 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq .__159 @cond_branch\n"
+ ".__140:\n"
+ " cmp r7, #0\n"
+ " bne .__143 @cond_branch\n"
+ " cmp r4, #0x1\n"
+ " bne .__143 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq .__159 @cond_branch\n"
+ ".__143:\n"
+ " cmp r6, #0\n"
+ " bne .__146 @cond_branch\n"
+ " cmp r4, #0x1\n"
+ " bne .__146 @cond_branch\n"
+ " cmp r5, #0\n"
+ " beq .__159 @cond_branch\n"
+ ".__146:\n"
+ " cmp r7, #0x1\n"
+ " bne .__149 @cond_branch\n"
+ " mov r1, r9\n"
+ " cmp r1, #0\n"
+ " bne .__149 @cond_branch\n"
+ " cmp r5, #0x1\n"
+ " beq .__159 @cond_branch\n"
+ ".__149:\n"
+ " ldr r1, [sp]\n"
+ " cmp r1, #0x1\n"
+ " bne .__152 @cond_branch\n"
+ " cmp r4, #0\n"
+ " bne .__152 @cond_branch\n"
+ " mov r1, r8\n"
+ " cmp r1, #0x1\n"
+ " beq .__159 @cond_branch\n"
+ ".__152:\n"
+ " cmp r6, #0x1\n"
+ " bne .__155 @cond_branch\n"
+ " mov r1, sl\n"
+ " cmp r1, #0\n"
+ " bne .__155 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq .__159 @cond_branch\n"
+ ".__155:\n"
+ " cmp r7, #0x1\n"
+ " bne .__158 @cond_branch\n"
+ " cmp r4, #0\n"
+ " bne .__158 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq .__159 @cond_branch\n"
+ ".__158:\n"
+ " cmp r6, #0x1\n"
+ " bne .__162 @cond_branch\n"
+ " cmp r4, #0\n"
+ " bne .__162 @cond_branch\n"
+ " cmp r5, #0x1\n"
+ " bne .__162 @cond_branch\n"
+ ".__159:\n"
+ " ldr r0, .__163 + 12\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x0\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, .__163 + 4\n"
+ " mov r0, #0x0\n"
+ " strb r0, [r1]\n"
+ ".__162:\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ ".__164:\n"
+ " .align 2, 0\n"
+ ".__163:\n"
+ " .word Str_841B2E4\n"
+ " .word unk_debug_bss_1_4\n"
+ " .word +0x2000000\n"
+ " .word Str_841B2BF\n"
+ "\n"
+ );
+}
+#endif
+
+static const u8 sReelSymbols[][21] =
+{
{
SLOT_MACHINE_TAG_7_RED,
SLOT_MACHINE_TAG_CHERRY,
@@ -5394,3 +7779,50 @@ static const struct SpritePalette gSlotMachineSpritePalettes[] = {
static const u8 sReelTimeGfx[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz");
static const u16 sReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/reel_time_window_map.bin");
+
+#if DEBUG
+
+const u8 Str_841B1C4[] = _("SETTEI");
+const u8 Str_841B1CB[] = _("MAWASITA");
+const u8 Str_841B1D4[] = _("MODOSI");
+const u8 Str_841B1DB[] = _("NOMARE");
+const u8 Str_841B1E2[] = _("MAE 7");
+const u8 Str_841B1E8[] = _("LR  HENKOU");
+const u8 Str_841B1F3[] = _("START  JIDOUSU");
+const u8 Str_841B202[] = _("SELECT  SETTEI");
+const u8 Str_841B211[] = _("TYUHSEN");
+const u8 Str_841B219[] = _("CHERRY");
+const u8 Str_841B220[] = _("REPLAY");
+const u8 Str_841B227[] = _("HASUBO");
+const u8 Str_841B22E[] = _("RURIRI");
+const u8 Str_841B235[] = _("INAZU");
+const u8 Str_841B23B[] = _("REG");
+const u8 Str_841B23F[] = _("BIG");
+const u8 Str_841B243[] = _("BD");
+const u8 Str_841B246[] = _("R7");
+const u8 Str_841B249[] = _("B7");
+const u8 Str_841B24C[] = _("A  COIN");
+const u8 Str_841B254[] = _("TYUHSEN");
+const u8 Str_841B25C[] = _("UD  100");
+const u8 Str_841B264[] = _("LR  1000");
+const u8 Str_841B26D[] = _("×");
+
+// Is this MenuAction2? I'm not sure.
+const struct {const u8 *text; void (*func)();} _841B270[] =
+{
+ {Str_841B219, debug_sub_811B1C4},
+ {Str_841B220, debug_sub_811B1EC},
+ {Str_841B227, debug_sub_811B210},
+ {Str_841B22E, debug_sub_811B238},
+ {Str_841B235, debug_sub_811B260},
+ {Str_841B23B, debug_sub_811B288},
+ {Str_841B23F, debug_sub_811B2B0},
+ {Str_841B243, debug_sub_811B2D8},
+};
+
+const u8 Str_841B2B0[] = _("·カウントエラーがおきました");
+const u8 Str_841B2BF[] = _("·リールそうさで エラーが おきました");
+const u8 Str_841B2D3[] = _("·フラグオフエラーが おきました");
+const u8 Str_841B2E4[] = _("·ボーナスこやくの エラーが おきました");
+
+#endif
diff --git a/src/field/start_menu.c b/src/field/start_menu.c
index 381c19bb7..4904f4a80 100644
--- a/src/field/start_menu.c
+++ b/src/field/start_menu.c
@@ -44,6 +44,11 @@ enum {
MENU_ACTION_PLAYER_LINK
};
+#if DEBUG
+static u32 _debugStartMenu_0 __attribute__((unused));
+static u32 _debugStartMenu_1 __attribute__((unused));
+#endif
+
static u8 (*saveDialogCallback)(void);
static u8 saveDialogTimer; //Number of frames to keep the window on screen after save was completed
static bool8 savingComplete;
@@ -132,6 +137,304 @@ static bool32 sub_80719FC(u8 *ptr);
static void sub_8071B54(void);
static void Task_8071B64(u8 taskId);
+#if DEBUG
+__attribute__((naked))
+void debug_sub_8075C30()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl debug_sub_8075D9C\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8075C40()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._5 @ gTasks\n"
+ " add r5, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r5, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._1 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._2 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._3 @cond_branch\n"
+ " b ._18\n"
+ "._6:\n"
+ " .align 2, 0\n"
+ "._5:\n"
+ " .word gTasks+0x8\n"
+ "._2:\n"
+ " cmp r0, #0x2\n"
+ " beq ._7 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._8 @cond_branch\n"
+ " b ._18\n"
+ "._3:\n"
+ " bl m4aSoundVSyncOff\n"
+ " b ._12\n"
+ "._1:\n"
+ " ldr r1, ._13 @ 0x4000208\n"
+ " ldrh r0, [r1]\n"
+ " mov sl, r0\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._13 + 4 @ 0x4000108\n"
+ " strh r0, [r1]\n"
+ " mov r0, #0x83\n"
+ " lsl r0, r0, #0x10\n"
+ " str r0, [r1]\n"
+ " ldr r4, ._13 + 8 @ 0xc34f\n"
+ " mov r9, r4\n"
+ " ldr r2, ._13 + 12 @ 0x40000b0\n"
+ " ldr r0, ._13 + 16 @ gScanlineEffectRegBuffers\n"
+ " mov ip, r0\n"
+ " ldr r1, ._13 + 20 @ 0xc5ff\n"
+ " mov r8, r1\n"
+ " ldr r7, ._13 + 24 @ 0x7fff\n"
+ " mov r3, r9\n"
+ " add r3, r3, #0x1\n"
+ " ldr r6, ._13 + 28 @ 0x4000040\n"
+ " ldr r4, ._13 + 32 @ 0xa2600001\n"
+ "._11:\n"
+ " mov r0, ip\n"
+ " str r0, [r2]\n"
+ " str r6, [r2, #0x4]\n"
+ " str r4, [r2, #0x8]\n"
+ " ldr r0, [r2, #0x8]\n"
+ " ldrh r1, [r2, #0xa]\n"
+ " mov r0, r8\n"
+ " and r0, r0, r1\n"
+ " strh r0, [r2, #0xa]\n"
+ " ldrh r1, [r2, #0xa]\n"
+ " add r0, r7, #0\n"
+ " and r0, r0, r1\n"
+ " strh r0, [r2, #0xa]\n"
+ " ldrh r0, [r2, #0xa]\n"
+ " sub r3, r3, #0x1\n"
+ " cmp r3, #0\n"
+ " bne ._11 @cond_branch\n"
+ " mov r3, r9\n"
+ " add r3, r3, #0x1\n"
+ " ldr r0, ._13 + 36 @ 0x400010a\n"
+ " mov r2, #0x0\n"
+ " strh r2, [r0]\n"
+ " ldr r1, ._13 + 4 @ 0x4000108\n"
+ " ldrh r0, [r1]\n"
+ " ldr r4, ._13 + 40 @ _debugStartMenu_0\n"
+ " str r0, [r4]\n"
+ " strh r2, [r1]\n"
+ " ldr r0, ._13 @ 0x4000208\n"
+ " mov r1, sl\n"
+ " strh r1, [r0]\n"
+ " ldr r4, ._13 + 44 @ _debugStartMenu_1\n"
+ " str r3, [r4]\n"
+ " bl m4aSoundVSyncOn\n"
+ " b ._12\n"
+ "._14:\n"
+ " .align 2, 0\n"
+ "._13:\n"
+ " .word 0x4000208\n"
+ " .word 0x4000108\n"
+ " .word 0xc34f\n"
+ " .word 0x40000b0\n"
+ " .word gScanlineEffectRegBuffers\n"
+ " .word 0xc5ff\n"
+ " .word 0x7fff\n"
+ " .word 0x4000040\n"
+ " .word 0xa2600001\n"
+ " .word 0x400010a\n"
+ " .word _debugStartMenu_0\n"
+ " .word _debugStartMenu_1\n"
+ "._7:\n"
+ " mov r0, #0x15\n"
+ " bl PlaySE\n"
+ " ldr r0, ._16 @ gStringVar1\n"
+ " ldr r1, ._16 + 4 @ _debugStartMenu_1\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r0, ._16 + 8 @ gStringVar2\n"
+ " ldr r1, ._16 + 12 @ _debugStartMenu_0\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._16 + 16 @ gUnknown_Debug_839B6D8\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ "._12:\n"
+ " ldrh r0, [r5]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r5]\n"
+ " b ._18\n"
+ "._17:\n"
+ " .align 2, 0\n"
+ "._16:\n"
+ " .word gStringVar1\n"
+ " .word _debugStartMenu_1\n"
+ " .word gStringVar2\n"
+ " .word _debugStartMenu_0\n"
+ " .word gUnknown_Debug_839B6D8\n"
+ "._8:\n"
+ " ldr r0, ._19 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._18 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ "._18:\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._20:\n"
+ " .align 2, 0\n"
+ "._19:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8075D9C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._21 @ debug_sub_8075C40\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._22:\n"
+ " .align 2, 0\n"
+ "._21:\n"
+ " .word debug_sub_8075C40+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8075DB4()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " add r5, r1, #0\n"
+ " add r4, r2, #0\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4d\n"
+ " bl __umodsi3\n"
+ " strb r0, [r6, #0x1]\n"
+ " add r1, r6, #0\n"
+ " add r1, r1, #0xc\n"
+ " add r0, r4, #0\n"
+ " bl write_word_to_mem\n"
+ " add r0, r6, #4\n"
+ " add r1, r5, #0\n"
+ " bl StringCopy8\n"
+ " mov r3, #0x7\n"
+ " mov r4, #0x0\n"
+ " ldr r0, ._25 @ gSaveBlock1\n"
+ " ldr r1, ._25 + 4 @ 0x2b28\n"
+ " add r5, r0, r1\n"
+ " add r2, r6, #0\n"
+ " add r2, r2, #0x10\n"
+ " add r1, r6, #0\n"
+ " add r1, r1, #0x1c\n"
+ "._23:\n"
+ " ldrh r0, [r5]\n"
+ " strh r0, [r2]\n"
+ " strh r3, [r1]\n"
+ " add r0, r3, #6\n"
+ " strh r0, [r1, #0xc]\n"
+ " add r3, r3, #0x1\n"
+ " add r5, r5, #0x2\n"
+ " add r2, r2, #0x2\n"
+ " add r1, r1, #0x2\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x5\n"
+ " ble ._23 @cond_branch\n"
+ " mov r4, #0x0\n"
+ "._24:\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r4\n"
+ " ldr r1, ._25 + 8 @ gPlayerParty\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x2c\n"
+ " mul r1, r1, r4\n"
+ " add r1, r1, #0x34\n"
+ " add r1, r6, r1\n"
+ " bl sub_803AF78\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x2\n"
+ " ble ._24 @cond_branch\n"
+ " add r0, r6, #0\n"
+ " bl SetEReaderTrainerChecksum\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._26:\n"
+ " .align 2, 0\n"
+ "._25:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2b28\n"
+ " .word gPlayerParty\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void unref_sub_8070F90()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._27 @ 0x801\n"
+ " bl FlagSet\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x4\n"
+ " bl FlagSet\n"
+ " ldr r0, ._27 + 4 @ 0x802\n"
+ " bl FlagSet\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._28:\n"
+ " .align 2, 0\n"
+ "._27:\n"
+ " .word 0x801\n"
+ " .word 0x802\n"
+ "\n"
+ );
+}
+#endif
static void BuildStartMenuActions(void)
{
diff --git a/src/field/trader.c b/src/field/trader.c
index 64bd708f6..885557d5a 100644
--- a/src/field/trader.c
+++ b/src/field/trader.c
@@ -108,7 +108,7 @@ void CreateAvailableDecorationsMenu(u8 taskId)
{
if (trader->unk1[i] > DECOR_REGISTEEL_DOLL)
{
- Menu_PrintText(gOtherText_FiveQuestionsAndSlash, 1, numDecorations * 2 + 2);
+ Menu_PrintText(gOtherText_FiveQuestions, 1, numDecorations * 2 + 2);
}
else
{
diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c
index 79542422e..19778e29b 100644
--- a/src/field/wild_encounter.c
+++ b/src/field/wild_encounter.c
@@ -3698,13 +3698,13 @@ const u16 gRoute119WaterTileData[] =
extern u16 gSpecialVar_Result;
extern u8 S_RepelWoreOff[];
-EWRAM_DATA static u8 sWildEncountersDisabled = 0;
+EWRAM_DATA u8 sWildEncountersDisabled = 0;
EWRAM_DATA static u32 sFeebasRngValue = 0;
#define NUM_FEEBAS_SPOTS 6
-static u16 FeebasRandom(void);
-static void FeebasSeedRng(u16 seed);
+u16 FeebasRandom(void);
+void FeebasSeedRng(u16 seed);
static bool8 IsWildLevelAllowedByRepel(u8 level);
static void ApplyFluteEncounterRateMod(u32 *encRate);
@@ -3791,17 +3791,30 @@ static bool8 CheckFeebas(void)
return FALSE;
}
-static u16 FeebasRandom(void)
+u16 FeebasRandom(void)
{
sFeebasRngValue = 12345 + 0x41C64E6D * sFeebasRngValue;
return sFeebasRngValue >> 16;
}
-static void FeebasSeedRng(u16 seed)
+void FeebasSeedRng(u16 seed)
{
sFeebasRngValue = seed;
}
+#if DEBUG
+u16 debug_sub_8092344(u8 arg0)
+{
+ if (arg0 == 0)
+ return 131;
+ if (arg0 == 1)
+ return 167;
+ if (arg0 == 2)
+ return 149;
+ return 0;
+}
+#endif
+
static u8 ChooseWildMonIndex_Land(void)
{
u8 rand = Random() % 100;
@@ -4042,6 +4055,24 @@ static bool8 DoWildEncounterRateDiceRoll(u16 encounterRate)
return FALSE;
}
+#if DEBUG
+u16 debug_sub_809283C(u16 attempts)
+{
+ u16 retval = 0;
+ u16 i = 0;
+
+ while (i < attempts)
+ {
+ if (DoWildEncounterRateDiceRoll(320) == TRUE)
+ retval++;
+
+ i++;
+ }
+
+ return retval;
+}
+#endif
+
static bool8 DoWildEncounterTest(u32 encounterRate, bool8 ignoreAbility)
{
encounterRate *= 16;
diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c
index 921a3ad93..4497c98fb 100644
--- a/src/pokemon/mail.c
+++ b/src/pokemon/mail.c
@@ -1,7 +1,10 @@
#include "global.h"
#include "mail.h"
+#include "data2.h"
#include "easy_chat.h"
#include "constants/items.h"
+#include "constants/species.h"
+#include "field_fadetransition.h"
#include "graphics.h"
#include "mail_data.h"
#include "menu.h"
@@ -10,6 +13,7 @@
#include "palette.h"
#include "pokemon_icon.h"
#include "overworld.h"
+#include "script.h"
#include "sprite.h"
#include "string_util.h"
#include "strings2.h"
@@ -18,6 +22,8 @@
#include "scanline_effect.h"
#include "ewram.h"
+extern u8 (*gMenuCallback)(void);
+
struct UnkMailStruct
{
u8 unk_0_0:2;
@@ -234,6 +240,56 @@ const struct MailLayout gUnknown_083E57A4[] =
{5, 15, 15, 4, 3, Unknown_3E5790},
};
+#if DEBUG
+
+const u8 Str_8411540[] = _("レイアウトを にほんごで ひょうじ?"); // Display using Japanese layout?
+const u8 Str_8411553[] = _("にほんご "); // Japanese
+const u8 Str_8411559[] = _("かいがい "); // Overseas
+
+const u8 *const _8411560[] =
+{
+ Str_8411553,
+ Str_8411559,
+};
+
+const u8 Str_8411568[] = _("イメージ タイプを えらんでね"); // Choose an image type
+const u8 Str_8411578[] = _("{STR_VAR_1}");
+const u8 Str_841157B[] = _("オレンジ "); // Orange
+const u8 Str_8411581[] = _("ハーバー "); // Harbor
+const u8 Str_8411587[] = _("キラキラ "); // Glitter
+const u8 Str_841158D[] = _("メカニカル"); // Mech
+const u8 Str_8411593[] = _("ウッディー"); // Wood
+const u8 Str_8411599[] = _("クロス  "); // Wave
+const u8 Str_841159F[] = _("トレジャー"); // Bead
+const u8 Str_84115A5[] = _("シャドウ "); // Shadow
+const u8 Str_84115AB[] = _("トロピカル"); // Tropic
+const u8 Str_84115B1[] = _("ドリーム "); // Dream
+const u8 Str_84115B7[] = _("ミラクル "); // Fab
+const u8 Str_84115BD[] = _("レトロ  "); // Retro
+
+const u8 *const _84115C4[] =
+{
+ Str_841157B,
+ Str_8411581,
+ Str_8411587,
+ Str_841158D,
+ Str_8411593,
+ Str_8411599,
+ Str_841159F,
+ Str_84115A5,
+ Str_84115AB,
+ Str_84115B1,
+ Str_84115B7,
+ Str_84115BD,
+};
+
+const u8 Str_84115F4[] = _("メールをみる"); // View Mail
+const u8 Str_84115FB[] = _("メールとうろく"); // Register Mail
+const u8 Str_8411603[] = _("もたせる"); // Give to Pokémon
+const u8 Str_8411608[] = _("メールをけす"); // Delete Mail
+
+#endif
+
// XXX: what is this?
static u8 *const sSharedMemPtr = gSharedMem;
@@ -247,26 +303,44 @@ static void sub_80F8F58(void);
static void sub_80F8F78(void);
static void sub_80F8FB4(void);
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gSpecialVar_0x8006;
+
+#if DEBUG
+static u8 gUnknown_Debug_0300079C;
+#endif
+
void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
{
- u16 mailDesign;
u16 buffer[2];
+ u16 species;
- ewram0_4.varFF = GAME_LANGUAGE;
- ewram0_4.var100 = 1;
- ewram0_4.var104 = (MainCallback)EasyChat_GetWordText;
- ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString;
-
- mailDesign = arg0->itemId - ITEM_ORANGE_MAIL;
-
- if (mailDesign <= 11)
+#if DEBUG
+ if (gUnknown_Debug_0300079C != 0)
{
- ewram0_4.varFA = arg0->itemId - ITEM_ORANGE_MAIL;
+ ewram0_4.varFF = GAME_LANGUAGE;
+ ewram0_4.var100 = gSpecialVar_0x8004;
+ ewram0_4.var104 = (MainCallback)EasyChat_GetWordText;
+ ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString;
+ ewram0_4.varFA = gSpecialVar_0x8006;
}
else
+#endif
{
- ewram0_4.varFA = 0;
- arg2 = FALSE;
+ ewram0_4.varFF = GAME_LANGUAGE;
+ ewram0_4.var100 = 1;
+ ewram0_4.var104 = (MainCallback)EasyChat_GetWordText;
+ ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString;
+ if (IS_ITEM_MAIL(arg0->itemId))
+ {
+ ewram0_4.varFA = arg0->itemId - 0x79;
+ }
+ else
+ {
+ ewram0_4.varFA = 0;
+ arg2 = FALSE;
+ }
}
switch (ewram0_4.var100)
@@ -275,24 +349,22 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
default:
ewram0_4.var10C = &gUnknown_083E5730[ewram0_4.varFA];
break;
-
case 1:
ewram0_4.var10C = &gUnknown_083E57A4[ewram0_4.varFA];
break;
}
- if (((MailSpeciesToSpecies(arg0->species, buffer) << 16) + 0xFFFF0000) <= (410 << 16))
+ species = MailSpeciesToSpecies(arg0->species, buffer);
+ if (species >= 1 && species <= 411)
{
switch (ewram0_4.varFA)
{
case 6:
ewram0_4.varFB = 1;
break;
-
case 9:
ewram0_4.varFB = 2;
break;
-
default:
ewram0_4.varFB = 0;
break;
@@ -303,7 +375,6 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
ewram0_4.varFB = 0;
}
-
ewram0_4.varF4 = arg0;
ewram0_4.varEC = arg1;
ewram0_4.varF8 = arg2;
@@ -575,25 +646,514 @@ static void sub_80F8F78(void)
static void sub_80F8FB4(void)
{
- u16 local1;
+ if (!UpdatePaletteFade())
+ {
+ SetMainCallback2(ewram0_4.varEC);
+ switch (ewram0_4.varFB)
+ {
+ case 2:
+ case 1:
+ sub_809D608(sub_809D4A8(ewram0_4.varF4->species));
+ sub_809D510(&gSprites[ewram0_4.varFC]);
+ break;
+ }
+#if !DEBUG
+ memset(&ewram0_4, 0, 0x110);
+#endif
+ ResetPaletteFade();
+ }
+}
+
+#if DEBUG
- if (UpdatePaletteFade())
+void debug_sub_810CA7C(u8);
+void debug_sub_810CE1C(u8);
+void debug_sub_810D388(void);
+void debug_sub_810D340(void);
+
+void debug_sub_810C910(u8 taskId)
+{
+ if (!gPaletteFade.active)
{
+ gUnknown_Debug_0300079C = 1;
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ if (gSaveBlock1.mail[gSpecialVar_0x8005].itemId == 0)
+ HandleReadMail(&gSaveBlock1.mail[gSpecialVar_0x8005], debug_sub_810D388, 0);
+ else
+ HandleReadMail(&gSaveBlock1.mail[gSpecialVar_0x8005], debug_sub_810D388, 1);
+ }
+}
+
+void debug_sub_810C990(u8 taskId)
+{
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_DOWN))
+ {
+ gSpecialVar_0x8006 = (gSpecialVar_0x8006 + 11) % 12;
+ Menu_DrawStdWindowFrame(1, 1, 10, 4);
+ Menu_PrintText(_84115C4[gSpecialVar_0x8006], 2, 2);
+ }
+ else if (gMain.newKeys & (DPAD_UP | DPAD_RIGHT))
+ {
+ gSpecialVar_0x8006 = (gSpecialVar_0x8006 + 1) % 12;
+ Menu_DrawStdWindowFrame(1, 1, 10, 4);
+ Menu_PrintText(_84115C4[gSpecialVar_0x8006], 2, 2);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = debug_sub_810C910;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_8411540, 4, 15);
+ Menu_PrintText(_8411560[gSpecialVar_0x8004], 2, 2);
+ gTasks[taskId].func = debug_sub_810CA7C;
+ }
+}
+
+void debug_sub_810CA7C(u8 taskId)
+{
+ if (gMain.newKeys & 0xF0)
+ {
+ gSpecialVar_0x8004 ^= 1;
+ Menu_PrintText(_8411560[gSpecialVar_0x8004], 2, 2);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (gMain.watchedKeysPressed)
+ {
+ gMain.watchedKeysPressed = FALSE;
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_8411540, 4, 15);
+ Menu_DrawStdWindowFrame(1, 1, 10, 4);
+ Menu_PrintText(_8411560[gSpecialVar_0x8004], 2, 2);
+ }
+ else
+ {
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_8411568, 4, 15);
+ Menu_DrawStdWindowFrame(1, 1, 10, 4);
+ Menu_PrintText(_84115C4[gSpecialVar_0x8006], 2, 2);
+ gTasks[taskId].func = debug_sub_810C990;
+ }
+ }
+}
+
+void debug_sub_810CB50(u8 taskId)
+{
+ u8 sp0[] = _("{STR_VAR_1} {STR_VAR_2}");
+ u8 sp8[] = _("メール{STR_VAR_1} {STR_VAR_2}");
+ bool8 r2 = FALSE;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 2, 1);
+ StringCopy(gStringVar2, gSpeciesNames[gTasks[taskId].data[0]]);
+ gSaveBlock1.mail[gSpecialVar_0x8005].species = gTasks[taskId].data[0];
+ StringExpandPlaceholders(gStringVar4, sp8);
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gStringVar4, 4, 15);
+ DestroyTask(taskId);
+ CreateTask(debug_sub_810CE1C, 0);
+ debug_sub_810D340();
return;
}
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ DestroyTask(taskId);
+ Menu_EraseScreen();
+ CreateTask(debug_sub_810CE1C, 0);
+ debug_sub_810D340();
+ return;
+ }
+ else if (gMain.newKeys & (DPAD_LEFT | DPAD_DOWN))
+ {
+ gTasks[taskId].data[0] = (gTasks[taskId].data[0] + 0x19B) % 0x19C;
+ r2 = TRUE;
+ }
+ else if (gMain.newKeys & (DPAD_UP | DPAD_RIGHT))
+ {
+ gTasks[taskId].data[0] = (gTasks[taskId].data[0] + 1) % 0x19C;
+ r2 = TRUE;
+ }
+
+ if (r2)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[0], 2, 3);
+ StringCopy(gStringVar2, gSpeciesNames[gTasks[taskId].data[0]]);
+ StringExpandPlaceholders(gStringVar4, sp0);
+ Menu_DrawStdWindowFrame(0, 0, 12, 3);
+ Menu_PrintText(gStringVar4, 1, 1);
+ }
+}
+
+void debug_sub_810CCEC(u8 taskId)
+{
+ u8 string1[] = _("メール{STR_VAR_1}を だれに もたせる?");
+ u8 string2[] = _("000 {STR_VAR_1}");
+
+ ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 1, 1);
+ StringExpandPlaceholders(gStringVar4, string1);
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gStringVar4, 4, 15);
+
+ StringCopy(gStringVar1, gSpeciesNames[0]);
+ StringExpandPlaceholders(gStringVar4, string2);
+ Menu_DrawStdWindowFrame(0, 0, 12, 3);
+ Menu_PrintText(string2, 1, 1); // This probably should have been gStringVar4
+
+ gTasks[taskId].func = debug_sub_810CB50;
+}
+
+u8 debug_sub_810CD9C(void)
+{
+ CloseMenu();
+ ScriptContext1_Stop();
+ ScriptContext2_Enable();
+ gUnknown_Debug_0300079C = 0;
+ gSpecialVar_0x8004 = gSpecialVar_0x8005 = gSpecialVar_0x8006 = 0;
+ SetMainCallback2(debug_sub_810D388);
+ return 1;
+}
+
+void debug_sub_810CDE0(void)
+{
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+void debug_sub_810CDF0(void)
+{
+ gMain.watchedKeysPressed = 0;
+ gMain.watchedKeysMask = 0;
+ gFieldCallback = mapldr_default;
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+}
+
+void debug_sub_810CE1C(u8 taskId)
+{
+ if (gMenuCallback() == TRUE)
+ {
+ CloseMenu();
+ DestroyTask(taskId);
+ }
+}
+
+u8 debug_sub_810CE48(void)
+{
+ s8 input = Menu_ProcessInput();
- SetMainCallback2(ewram0_4.varEC);
- switch (ewram0_4.varFB)
+ switch (input)
{
+ case -1:
+ Menu_EraseScreen();
+ debug_sub_810D340();
+ return 0;
+ case -2:
+ return 0;
+ default:
+ gSpecialVar_0x8005 = input;
+ gSpecialVar_0x8006 %= 12;
+ CreateTask(debug_sub_810CA7C, 0);
+ gMain.watchedKeysPressed = TRUE; // huh?
+ gMain.watchedKeysMask = 0;
+ return 1;
+ }
+}
+
+u8 debug_sub_810CEA4(void)
+{
+ if (!gPaletteFade.active)
+ {
+ gSpecialVar_0x8004 = 4;
+ sub_80E60D8();
+ return 1;
+ }
+ return 0;
+}
+
+u8 debug_sub_810CED0(void)
+{
+ u8 text[] = _("せいきの データが とうろくずみ です\n"
+ "しんき とうろく できません");
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ Menu_EraseScreen();
+ break;
+ case -2:
+ return 0;
+ default:
+ gSpecialVar_0x8005 = input;
+ if (IS_ITEM_MAIL(gSaveBlock1.mail[input].itemId))
+ {
+ Menu_EraseScreen();
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(text, 4, 15);
+ }
+ else
+ {
+ gSaveBlock1.mail[gSpecialVar_0x8005].itemId = 0xFFFF;
+ StringCopy(gSaveBlock1.mail[gSpecialVar_0x8005].playerName, gSaveBlock2.playerName);
+ *(u32 *)gSaveBlock1.mail[gSpecialVar_0x8005].trainerId = *(u32 *)gSaveBlock2.playerTrainerId;
+ gMenuCallback = debug_sub_810CEA4;
+ return 0;
+ }
+ break;
+ }
+ debug_sub_810D340();
+ return 0;
+}
+
+u8 debug_sub_810CFA4(void)
+{
+ u8 text[] = _("せいきに とうろくされたメールデータは\n"
+ "へんこう できません");
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ Menu_EraseScreen();
+ debug_sub_810D340();
+ return 0;
+ case -2:
+ return 0;
+ default:
+ gSpecialVar_0x8005 = input;
+ if (IS_ITEM_MAIL(gSaveBlock1.mail[input].itemId))
+ {
+ Menu_EraseScreen();
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(text, 4, 15);
+ debug_sub_810D340();
+ return 0;
+ }
+ else
+ {
+ CreateTask(debug_sub_810CCEC, 0);
+ return 1;
+ }
+ }
+}
+
+u8 debug_sub_810D030(void)
+{
+ const u8 text1[] = _("メール{STR_VAR_1} とうろく かいじょ");
+ const u8 text2[] = _("デバッグメニューから とうろくした\n"
+ "メール いがいは けせません");
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ Menu_EraseScreen();
+ debug_sub_810D340();
+ return 0;
+ case -2:
+ return 0;
+ default:
+ gSpecialVar_0x8005 = input;
+ if (gSaveBlock1.mail[gSpecialVar_0x8005].itemId != 0xFFFF
+ && gSaveBlock1.mail[gSpecialVar_0x8005].itemId != 0)
+ {
+ Menu_EraseScreen();
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(text2, 4, 15);
+ debug_sub_810D340();
+ return 0;
+ }
+ else
+ {
+ s8 i;
+
+ gSaveBlock1.mail[gSpecialVar_0x8005].itemId = 0;
+ gSaveBlock1.mail[gSpecialVar_0x8005].species = 0;
+ gSaveBlock1.mail[gSpecialVar_0x8005].playerName[0] = EOS;
+ *(u32 *)gSaveBlock1.mail[gSpecialVar_0x8005].trainerId = 0;
+ for (i = 0; i < 9; i++)
+ gSaveBlock1.mail[gSpecialVar_0x8005].words[i] = 0xFFFF;
+ ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 1, 1);
+ StringExpandPlaceholders(gStringVar4, text1);
+ Menu_EraseScreen();
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gStringVar4, 4, 15);
+ debug_sub_810D340();
+ return 0;
+ }
+ }
+}
+
+void debug_sub_810D174(u8 a)
+{
+ u8 string[] = _("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}");
+ u8 buffer[9][20];
+ struct MenuAction menuActions[9];
+ u8 i;
+
+ for (i = 0; i < 9; i++)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, i, 1, 1);
+ if (gSaveBlock1.mail[i].itemId == 0xFFFF)
+ {
+ ConvertIntToDecimalStringN(gStringVar2, 1, 1, 1);
+ }
+ else if (IS_ITEM_MAIL(gSaveBlock1.mail[i].itemId))
+ {
+ ConvertIntToDecimalStringN(gStringVar2, 2, 1, 1);
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(gStringVar2, 0, 1, 1);
+ gSaveBlock1.mail[i].itemId = 0;
+ }
+ StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.mail[i].species]);
+ StringExpandPlaceholders(buffer[i], string);
+ menuActions[i].text = buffer[i];
+ menuActions[i].func = NULL;
+ }
+ Menu_DrawStdWindowFrame(0, 0, 16, 19);
+ Menu_PrintItems(2, 1, 9, menuActions);
+ InitMenu(0, 1, 1, 9, 0, 15);
+ switch (a)
+ {
+ case 0:
+ gMenuCallback = debug_sub_810CE48;
+ break;
+ case 1:
+ gMenuCallback = debug_sub_810CED0;
+ break;
case 2:
+ gMenuCallback = debug_sub_810CFA4;
+ break;
+ case 3:
+ gMenuCallback = debug_sub_810D030;
+ break;
+ }
+}
+
+u8 debug_sub_810D2F4(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ SetMainCallback2(debug_sub_810CDF0);
+ return 1;
+ case -2:
+ return 0;
+ }
+
+ switch (input)
+ {
+ case 0:
+ debug_sub_810D174(input);
+ return 0;
case 1:
- local1 = sub_809D4A8(ewram0_4.varF4->species);
- sub_809D608(local1);
+ debug_sub_810D174(input);
+ return 0;
+ case 2:
+ debug_sub_810D174(input);
+ return 0;
+ case 3:
+ debug_sub_810D174(input);
+ return 0;
+ }
- sub_809D510(&gSprites[ewram0_4.varFC]);
+ return 1;
+}
+
+const struct MenuAction _84116BC[] =
+{
+ {Str_84115F4, NULL},
+ {Str_84115FB, NULL},
+ {Str_8411603, NULL},
+ {Str_8411608, NULL},
+};
+
+void debug_sub_810D340(void)
+{
+ Menu_DrawStdWindowFrame(0, 0, 9, 9);
+ Menu_PrintItems(2, 1, 4, _84116BC);
+ InitMenu(0, 1, 1, 4, 0, 8);
+ gMenuCallback = debug_sub_810D2F4;
+}
+
+void debug_sub_810D388(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ if (gUnknown_Debug_0300079C != 0)
+ {
+ gMain.state = 2;
+ gUnknown_Debug_0300079C = 0;
+ return;
+ }
+ else
+ {
+ ScanlineEffect_Stop();
+ ResetPaletteFade();
+ SetVBlankCallback(sub_80F8F18);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ }
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return;
+ break;
+ case 2:
+ SetVBlankCallback(NULL);
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
break;
+ case 3:
+ ResetSpriteData();
+ ResetTasks();
+ FreeAllSpritePalettes();
+ break;
+ case 4:
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Menu_EraseScreen();
+ break;
+ case 5:
+ LoadPalette(gMailGraphicsTable[0].palette, 0, 32);
+ LZ77UnCompVram(gMailGraphicsTable[0].tiles, (void *)VRAM);
+ DmaFill16(3, 1, (void *)(VRAM + 0x4000), 0x500);
+ break;
+ case 6:
+ REG_BG0CNT = 0x9F08;
+ REG_BG1CNT = 0x0801;
+ REG_BLDCNT = 0;
+ REG_DISPCNT = 0x0340;
+ debug_sub_810D340();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ SetVBlankCallback(sub_80F8F18);
+ break;
+ case 7:
+ if (!UpdatePaletteFade())
+ return;
+ break;
+ case 8:
+ CreateTask(debug_sub_810CE1C, 0);
+ SetMainCallback2(debug_sub_810CDE0);
+ break;
+ default:
+ return;
}
-
- memset(&ewram0_4, 0, 0x110);
- ResetPaletteFade();
+ gMain.state++;
}
+
+#endif
diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c
index cbd816206..090873f9d 100644
--- a/src/pokemon/pokedex.c
+++ b/src/pokemon/pokedex.c
@@ -1273,7 +1273,7 @@ static u8 sub_8091260(u16 num, u8, u8, u8);
static void sub_8091304(const u8 *name, u8, u8);
static void sub_8091458(u16 height, u8 i, u8 i1);
static void sub_8091564(u16 weight, u8 i, u8 i1);
-static void sub_8091738(u16, u16, u16);
+void sub_8091738(u16, u16, u16);
static void sub_80917CC(u16 i, u16 i1);
static u16 sub_8091818(u8, u16, u16, u16);
u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d);
@@ -4449,7 +4449,7 @@ static void sub_8091564(u16 arg0, u8 left, u8 top)
}
#endif
-static void sub_8091738(u16 num, u16 b, u16 c)
+void sub_8091738(u16 num, u16 b, u16 c)
{
u8 arr[0x80];
u16 i;
diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c
index 06a088046..80d245b52 100644
--- a/src/pokemon/pokemon_1.c
+++ b/src/pokemon/pokemon_1.c
@@ -524,6 +524,53 @@ void CalculateMonStats(struct Pokemon *mon)
SetMonData(mon, MON_DATA_HP, &currentHP);
}
+#if DEBUG
+void debug_sub_803F55C(struct Pokemon *mon)
+{
+ s32 currentHP = GetMonData(mon, MON_DATA_HP, NULL);
+ s32 hpIV = GetMonData(mon, MON_DATA_HP_IV, NULL);
+ s32 hpEV = GetMonData(mon, MON_DATA_HP_EV, NULL);
+ s32 attackIV = GetMonData(mon, MON_DATA_ATK_IV, NULL);
+ s32 attackEV = GetMonData(mon, MON_DATA_ATK_EV, NULL);
+ s32 defenseIV = GetMonData(mon, MON_DATA_DEF_IV, NULL);
+ s32 defenseEV = GetMonData(mon, MON_DATA_DEF_EV, NULL);
+ s32 speedIV = GetMonData(mon, MON_DATA_SPEED_IV, NULL);
+ s32 speedEV = GetMonData(mon, MON_DATA_SPEED_EV, NULL);
+ s32 spAttackIV = GetMonData(mon, MON_DATA_SPATK_IV, NULL);
+ s32 spAttackEV = GetMonData(mon, MON_DATA_SPATK_EV, NULL);
+ s32 spDefenseIV = GetMonData(mon, MON_DATA_SPDEF_IV, NULL);
+ s32 spDefenseEV = GetMonData(mon, MON_DATA_SPDEF_EV, NULL);
+ u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
+ s32 level = GetLevelFromMonExp(mon);
+ s32 newMaxHP;
+
+ SetMonData(mon, MON_DATA_LEVEL, &level);
+
+ if (species == SPECIES_SHEDINJA)
+ {
+ newMaxHP = 1;
+ }
+ else
+ {
+ s32 n = 2 * gBaseStats[species].baseHP + hpIV;
+ newMaxHP = (((n + hpEV / 4) * level) / 100) + level + 10;
+ }
+
+ SetMonData(mon, MON_DATA_MAX_HP, &newMaxHP);
+
+ CALC_STAT(baseAttack, attackIV, attackEV, 1, MON_DATA_ATK)
+ CALC_STAT(baseDefense, defenseIV, defenseEV, 2, MON_DATA_DEF)
+ CALC_STAT(baseSpeed, speedIV, speedEV, 3, MON_DATA_SPEED)
+ CALC_STAT(baseSpAttack, spAttackIV, spAttackEV, 4, MON_DATA_SPATK)
+ CALC_STAT(baseSpDefense, spDefenseIV, spDefenseEV, 5, MON_DATA_SPDEF)
+
+ if (newMaxHP < currentHP)
+ currentHP = newMaxHP;
+
+ SetMonData(mon, MON_DATA_HP, &currentHP);
+}
+#endif
+
void ExpandBoxMon(const struct BoxPokemon *src, struct Pokemon *dest)
{
u32 value = 0;
diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c
index c0cae9353..532340ce4 100644
--- a/src/pokemon/pokemon_menu.c
+++ b/src/pokemon/pokemon_menu.c
@@ -31,6 +31,7 @@
#include "item_menu.h"
#include "player_pc.h"
#include "ewram.h"
+#include "script.h"
/*
Pokemon menu:
@@ -45,6 +46,7 @@ struct PokeMenuFieldMoveFunc
u8 field_1;
};
+extern u8 gUnknown_020297ED;
extern u8 gUnknown_020384F0;
extern u8 gUnknown_0202E8F4;
extern u8 gUnknown_0202E8F5;
@@ -900,9 +902,10 @@ static void sub_808AE08(void)
static bool8 SetUpFieldMove_Waterfall(void)
{
s16 x, y;
+
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE
- && IsPlayerSurfingNorth() == TRUE)
+ && IsPlayerSurfingNorth() == TRUE)
{
gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_808AE08;
@@ -912,6 +915,20 @@ static bool8 SetUpFieldMove_Waterfall(void)
return FALSE;
}
+#if DEBUG
+void debug_sub_80986AC(void)
+{
+ s16 x, y;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE
+ && IsPlayerSurfingNorth() == TRUE)
+ sub_808AE08();
+ else
+ ScriptContext2_Disable();
+}
+#endif
+
static void sub_808AE8C(void)
{
u8 i;
@@ -921,7 +938,11 @@ static void sub_808AE8C(void)
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES))
{
sub_806D668(i);
- if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg))
+ if (
+#if DEBUG
+ gUnknown_020297ED == 0 &&
+#endif
+ (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg)))
sub_806BC3C(i, 0x9A);
else if (pokemon_has_move(&gPlayerParty[i], ItemIdToBattleMoveId(gSpecialVar_ItemId)))
sub_806BC3C(i, 0xA8);
diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c
index 24c45247e..1ea8bc205 100644
--- a/src/pokemon/pokemon_storage_system.c
+++ b/src/pokemon/pokemon_storage_system.c
@@ -35,6 +35,10 @@ const struct PSS_MenuStringPtrs gUnknown_083B600C[] = {
{PCText_SeeYa, PCText_ReturnToPrevMenu}
};
+#if DEBUG
+const u16 gUnknown_Debug_083E05F0[2] = {0};
+#endif
+
const union AnimCmd gSpriteAnim_83B602C[] = {
ANIMCMD_FRAME( 0, 5),
ANIMCMD_END
@@ -400,6 +404,180 @@ void ResetPokemonStorageSystem(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80A3904(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, sl\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5, r6, r7}\n\
+ add sp, sp, #0xffffffe4\n\
+ mov r0, #0x0\n\
+ mov r8, r0\n\
+ mov r7, r8\n\
+ mov r1, #0x14\n\
+ str r1, [sp, #0x18]\n\
+ mov r2, #0xff\n\
+ mov r9, r2\n\
+._162:\n\
+ mov r5, #0x0\n\
+ cmp r7, #0\n\
+ beq ._160 @cond_branch\n\
+ mov r0, #0xe\n\
+ mov r8, r0\n\
+ b ._158\n\
+._160:\n\
+ bl Random\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ str r0, [sp, #0x14]\n\
+ mov r2, r8\n\
+ lsl r1, r2, #0x2\n\
+ add r1, r1, r8\n\
+ lsl r3, r1, #0x4\n\
+ sub r3, r3, r1\n\
+ lsl r3, r3, #0x5\n\
+ lsl r1, r5, #0x2\n\
+ add r1, r1, r5\n\
+ lsl r1, r1, #0x4\n\
+ ldr r2, ._163 @ gPokemonStorage\n\
+ add r1, r1, r2\n\
+ add r6, r3, r1\n\
+ ldr r2, ._163 + 4 @ gUnknown_Debug_083E05F0\n\
+ lsl r1, r7, #0x1\n\
+ add r1, r1, r2\n\
+ ldrh r4, [r1]\n\
+ add r5, r5, #0x1\n\
+ lsl r2, r5, #0x18\n\
+ lsr r2, r2, #0x18\n\
+ mov r1, #0x0\n\
+ str r1, [sp]\n\
+ str r1, [sp, #0x4]\n\
+ mov r1, #0x1\n\
+ mov sl, r1\n\
+ str r1, [sp, #0x8]\n\
+ str r0, [sp, #0xc]\n\
+ add r0, r6, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0x20\n\
+ bl CreateBoxMon\n\
+ cmp r4, #0\n\
+ beq ._157 @cond_branch\n\
+ cmp r4, #0xac\n\
+ bne ._156 @cond_branch\n\
+ add r0, sp, #0x10\n\
+ mov r2, sl\n\
+ strb r2, [r0]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x2d\n\
+ add r2, sp, #0x10\n\
+ bl SetBoxMonData\n\
+._156:\n\
+ bl Random\n\
+ mov r1, r9\n\
+ and r1, r1, r0\n\
+ str r1, [sp, #0x14]\n\
+ add r4, sp, #0x14\n\
+ add r0, r6, #0\n\
+ mov r1, #0x16\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+ bl Random\n\
+ mov r1, r9\n\
+ and r1, r1, r0\n\
+ str r1, [sp, #0x14]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x17\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+ bl Random\n\
+ mov r1, r9\n\
+ and r1, r1, r0\n\
+ str r1, [sp, #0x14]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x18\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+ bl Random\n\
+ mov r1, r9\n\
+ and r1, r1, r0\n\
+ str r1, [sp, #0x14]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x21\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+ bl Random\n\
+ mov r1, r9\n\
+ and r1, r1, r0\n\
+ str r1, [sp, #0x14]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x2f\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+ bl Random\n\
+ mov r1, r9\n\
+ and r1, r1, r0\n\
+ str r1, [sp, #0x14]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x30\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+ ldr r0, [sp, #0x18]\n\
+ cmp r0, #0\n\
+ beq ._157 @cond_branch\n\
+ sub r0, r0, #0x1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ str r0, [sp, #0x18]\n\
+ mov r1, sl\n\
+ str r1, [sp, #0x14]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x32\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+._157:\n\
+ add r0, r7, #1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r7, r0, #0x10\n\
+ lsl r0, r5, #0x10\n\
+ lsr r5, r0, #0x10\n\
+ cmp r5, #0x1d\n\
+ bhi ._158 @cond_branch\n\
+ cmp r7, #0\n\
+ bne ._159 @cond_branch\n\
+ b ._160\n\
+._159:\n\
+ mov r2, #0xe\n\
+ mov r8, r2\n\
+._158:\n\
+ mov r0, r8\n\
+ add r0, r0, #0x1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ mov r8, r0\n\
+ cmp r0, #0xd\n\
+ bhi ._161 @cond_branch\n\
+ b ._162\n\
+._161:\n\
+ add sp, sp, #0x1c\n\
+ pop {r3, r4, r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov sl, r5\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._164:\n\
+ .align 2, 0\n\
+._163:\n\
+ .word gPokemonStorage+0x4\n\
+ .word gUnknown_Debug_083E05F0");
+}
+#endif
+
void sub_8096264(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3)
{
struct SpritePalette palette = {
diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c
index 512bde5db..2f12b6bfa 100644
--- a/src/pokemon/pokemon_storage_system_2.c
+++ b/src/pokemon/pokemon_storage_system_2.c
@@ -192,6 +192,144 @@ void sub_8096874(void)
REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON;
}
+#if DEBUG
+__attribute__((naked))
+void sub_8096884(void)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r0, ._223 @ gMain\n\
+ ldr r1, ._223 + 4 @ 0x43c\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x9\n\
+ bls ._221 @cond_branch\n\
+ b ._222\n\
+._221:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._223 + 8 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._224:\n\
+ .align 2, 0\n\
+._223:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+ .word ._225\n\
+._225:\n\
+ .word ._226\n\
+ .word ._227\n\
+ .word ._228\n\
+ .word ._229\n\
+ .word ._230\n\
+ .word ._231\n\
+ .word ._232\n\
+ .word ._233\n\
+ .word ._234\n\
+ .word ._235\n\
+._226:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x13\n\
+ mov r4, #0x0\n\
+ strh r4, [r0]\n\
+ bl sub_8096804\n\
+ ldr r0, ._237 @ unk_2038790\n\
+ strb r4, [r0]\n\
+ b ._250\n\
+._238:\n\
+ .align 2, 0\n\
+._237:\n\
+ .word unk_2038790\n\
+._227:\n\
+ ldr r0, ._240 @ gWindowTemplate_81E6D00\n\
+ bl Text_LoadWindowTemplate\n\
+ b ._250\n\
+._241:\n\
+ .align 2, 0\n\
+._240:\n\
+ .word gWindowTemplate_81E6D00\n\
+._228:\n\
+ ldr r0, ._243 @ gWindowTemplate_81E6D00\n\
+ bl InitMenuWindow\n\
+ bl Menu_EraseScreen\n\
+ b ._250\n\
+._244:\n\
+ .align 2, 0\n\
+._243:\n\
+ .word gWindowTemplate_81E6D00\n\
+._229:\n\
+ bl sub_80967DC\n\
+ bl sub_8096848\n\
+ b ._250\n\
+._230:\n\
+ bl ResetPSSMonIconSprites\n\
+ bl sub_809AA24\n\
+ b ._250\n\
+._231:\n\
+ bl sub_8097DE0\n\
+ b ._250\n\
+._232:\n\
+ bl sub_8097E70\n\
+ b ._250\n\
+._233:\n\
+ bl sub_8098400\n\
+ b ._250\n\
+._234:\n\
+ ldr r0, ._251 @ gPokemonStorage\n\
+ ldrb r0, [r0]\n\
+ bl sub_8099BF8\n\
+ ldr r2, ._251 + 4 @ 0x2000000\n\
+ ldr r1, ._251 + 8 @ 0x12bc\n\
+ add r0, r2, r1\n\
+ mov r1, #0xa\n\
+ strh r1, [r0]\n\
+ ldr r1, ._251 + 12 @ 0x12be\n\
+ add r2, r2, r1\n\
+ ldr r1, ._251 + 16 @ 0xdacb\n\
+ strh r1, [r2]\n\
+ bl sub_80F727C\n\
+ bl sub_80F7404\n\
+ b ._250\n\
+._252:\n\
+ .align 2, 0\n\
+._251:\n\
+ .word gPokemonStorage\n\
+ .word 0x2000000\n\
+ .word 0x12bc\n\
+ .word 0x12be\n\
+ .word 0xdacb\n\
+._235:\n\
+ bl sub_8096874\n\
+ ldr r0, ._253 @ sub_8096BF0\n\
+ bl SetPSSCallback\n\
+ ldr r0, ._253 + 4 @ sub_8096B38\n\
+ bl SetMainCallback2\n\
+ ldr r0, ._253 + 8 @ sub_8096AFC\n\
+ bl SetVBlankCallback\n\
+._250:\n\
+ ldr r1, ._253 + 12 @ gMain\n\
+ ldr r0, ._253 + 16 @ 0x43c\n\
+ add r1, r1, r0\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+._222:\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._254:\n\
+ .align 2, 0\n\
+._253:\n\
+ .word sub_8096BF0+1\n\
+ .word sub_8096B38+1\n\
+ .word sub_8096AFC+1\n\
+ .word gMain\n\
+ .word 0x43c");
+}
+#else
void sub_8096884(void)
{
switch (gMain.state)
@@ -250,6 +388,7 @@ void sub_8096884(void)
break;
}
}
+#endif
void sub_80969A0(void)
{
@@ -318,6 +457,117 @@ void sub_80969A0(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80A4300()
+{
+ asm("\
+ push {lr}\n\
+ ldr r1, ._296 @ gUnknown_0203847D\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ ldr r1, ._296 + 4 @ 0x2000000\n\
+ mov r0, #0x0\n\
+ strb r0, [r1, #0x5]\n\
+ bl sub_8096884\n\
+ ldr r0, ._296 + 8 @ gMain\n\
+ ldr r1, [r0, #0x4]\n\
+ ldr r0, ._296 + 12 @ sub_8096B38\n\
+ cmp r1, r0\n\
+ bne ._295 @cond_branch\n\
+ ldr r1, ._296 + 16 @ unk_2038790\n\
+ mov r0, #0x1\n\
+ strb r0, [r1]\n\
+._295:\n\
+ pop {r0}\n\
+ bx r0\n\
+._297:\n\
+ .align 2, 0\n\
+._296:\n\
+ .word gUnknown_0203847D\n\
+ .word 0x2000000\n\
+ .word gMain\n\
+ .word sub_8096B38+1\n\
+ .word unk_2038790");
+}
+
+__attribute__((naked))
+void debug_sub_80A433C()
+{
+ asm("\
+ push {lr}\n\
+ ldr r2, ._298 @ unk_2038794\n\
+ str r1, [r2]\n\
+ ldr r1, ._298 + 4 @ unk_2038798\n\
+ str r0, [r1]\n\
+ ldr r0, ._298 + 8 @ debug_sub_80A4300\n\
+ bl SetMainCallback2\n\
+ pop {r0}\n\
+ bx r0\n\
+._299:\n\
+ .align 2, 0\n\
+._298:\n\
+ .word unk_2038794\n\
+ .word unk_2038798\n\
+ .word debug_sub_80A4300+1");
+}
+
+__attribute__((naked))
+void debug_sub_80A435C()
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r5, ._303 @ 0x2000000\n\
+ ldrb r4, [r5, #0x4]\n\
+ cmp r4, #0\n\
+ beq ._300 @cond_branch\n\
+ cmp r4, #0x1\n\
+ beq ._301 @cond_branch\n\
+ b ._308\n\
+._304:\n\
+ .align 2, 0\n\
+._303:\n\
+ .word 0x2000000\n\
+._300:\n\
+ ldr r0, ._306 @ unk_2038798\n\
+ ldr r0, [r0]\n\
+ bl unref_sub_809CB94\n\
+ mov r0, #0x1\n\
+ neg r0, r0\n\
+ str r4, [sp]\n\
+ mov r1, #0x0\n\
+ mov r2, #0x0\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ ldrb r0, [r5, #0x4]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r5, #0x4]\n\
+ b ._308\n\
+._307:\n\
+ .align 2, 0\n\
+._306:\n\
+ .word unk_2038798\n\
+._301:\n\
+ bl UpdatePaletteFade\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._308 @cond_branch\n\
+ ldr r0, ._309 @ unk_2038794\n\
+ ldr r0, [r0]\n\
+ bl _call_via_r0\n\
+._308:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._310:\n\
+ .align 2, 0\n\
+._309:\n\
+ .word unk_2038794");
+}
+#endif
+
void sub_8096AFC(void)
{
REG_BG2HOFS = gPokemonStorageSystemPtr->unk_08b4;
@@ -388,6 +638,438 @@ void sub_8096C68(void)
SetPSSCallback(sub_8096C84);
}
+#if DEBUG
+__attribute__((naked))
+void sub_8096C84(void)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r0, ._347 @ 0x2000000\n\
+ ldrb r0, [r0, #0x4]\n\
+ cmp r0, #0x6\n\
+ bls ._345 @cond_branch\n\
+ b ._466\n\
+._345:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._347 + 4 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._348:\n\
+ .align 2, 0\n\
+._347:\n\
+ .word 0x2000000\n\
+ .word ._349\n\
+._349:\n\
+ .word ._350\n\
+ .word ._351\n\
+ .word ._352\n\
+ .word ._353\n\
+ .word ._354\n\
+ .word ._355\n\
+ .word ._356\n\
+._350:\n\
+ bl sub_809CA40\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ sub r0, r0, #0x1\n\
+ cmp r0, #0xf\n\
+ bls ._357 @cond_branch\n\
+ b ._466\n\
+._357:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._360 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._361:\n\
+ .align 2, 0\n\
+._360:\n\
+ .word ._359\n\
+._359:\n\
+ .word ._362\n\
+ .word ._466\n\
+ .word ._466\n\
+ .word ._365\n\
+ .word ._366\n\
+ .word ._367\n\
+ .word ._368\n\
+ .word ._369\n\
+ .word ._370\n\
+ .word ._371\n\
+ .word ._372\n\
+ .word ._373\n\
+ .word ._374\n\
+ .word ._375\n\
+ .word ._376\n\
+ .word ._377\n\
+._362:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r1, ._379 @ 0x2000000\n\
+ mov r0, #0x1\n\
+ strb r0, [r1, #0x4]\n\
+ b ._466\n\
+._380:\n\
+ .align 2, 0\n\
+._379:\n\
+ .word 0x2000000\n\
+._366:\n\
+ ldr r4, ._383 @ 0x2000000\n\
+ ldrb r0, [r4, #0x5]\n\
+ cmp r0, #0x2\n\
+ beq ._381 @cond_branch\n\
+ mov r0, #0x10\n\
+ bl PrintStorageActionText\n\
+ mov r0, #0x3\n\
+ strb r0, [r4, #0x4]\n\
+ b ._466\n\
+._384:\n\
+ .align 2, 0\n\
+._383:\n\
+ .word 0x2000000\n\
+._381:\n\
+ bl sub_809B0D4\n\
+ ldr r0, ._386 @ sub_8096FC8\n\
+ bl SetPSSCallback\n\
+ b ._466\n\
+._387:\n\
+ .align 2, 0\n\
+._386:\n\
+ .word sub_8096FC8+1\n\
+._367:\n\
+ ldr r4, ._394 @ 0x2000000\n\
+ ldrb r0, [r4, #0x5]\n\
+ cmp r0, #0x2\n\
+ beq ._388 @cond_branch\n\
+ b ._466\n\
+._388:\n\
+ bl sub_809BF20\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._391 @cond_branch\n\
+ ldr r1, ._394 + 4 @ 0x11f2\n\
+ add r0, r4, r1\n\
+ ldrh r0, [r0]\n\
+ bl ItemIsMail\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._391 @cond_branch\n\
+ b ._392\n\
+._391:\n\
+ ldr r0, ._394 + 8 @ sub_8097004\n\
+ bl SetPSSCallback\n\
+ b ._466\n\
+._395:\n\
+ .align 2, 0\n\
+._394:\n\
+ .word 0x2000000\n\
+ .word 0x11f2\n\
+ .word sub_8097004+1\n\
+._365:\n\
+ ldr r0, ._399 @ unk_2038790\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._396 @cond_branch\n\
+ b ._466\n\
+._396:\n\
+ ldr r0, ._399 + 4 @ sub_8097BA0\n\
+ bl SetPSSCallback\n\
+ b ._466\n\
+._400:\n\
+ .align 2, 0\n\
+._399:\n\
+ .word unk_2038790\n\
+ .word sub_8097BA0+1\n\
+._377:\n\
+ ldr r0, ._404 @ unk_2038790\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._401 @cond_branch\n\
+ b ._466\n\
+._401:\n\
+ ldr r0, ._404 + 4 @ sub_8097CC0\n\
+ bl SetPSSCallback\n\
+ b ._466\n\
+._405:\n\
+ .align 2, 0\n\
+._404:\n\
+ .word unk_2038790\n\
+ .word sub_8097CC0+1\n\
+._368:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._407 @ sub_809789C\n\
+ bl SetPSSCallback\n\
+ b ._466\n\
+._408:\n\
+ .align 2, 0\n\
+._407:\n\
+ .word sub_809789C+1\n\
+._369:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._410 @ sub_8097078\n\
+ bl SetPSSCallback\n\
+ b ._466\n\
+._411:\n\
+ .align 2, 0\n\
+._410:\n\
+ .word sub_8097078+1\n\
+._370:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r4, ._414 @ 0x2000000\n\
+ ldr r0, ._414 + 4 @ gPokemonStorage\n\
+ ldrb r0, [r0]\n\
+ add r0, r0, #0x1\n\
+ ldr r2, ._414 + 8 @ 0x8b2\n\
+ add r1, r4, r2\n\
+ strh r0, [r1]\n\
+ cmp r0, #0xd\n\
+ ble ._416 @cond_branch\n\
+ mov r0, #0x0\n\
+ b ._413\n\
+._415:\n\
+ .align 2, 0\n\
+._414:\n\
+ .word 0x2000000\n\
+ .word gPokemonStorage\n\
+ .word 0x8b2\n\
+._371:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r4, ._418 @ 0x2000000\n\
+ ldr r0, ._418 + 4 @ gPokemonStorage\n\
+ ldrb r0, [r0]\n\
+ sub r0, r0, #0x1\n\
+ ldr r2, ._418 + 8 @ 0x8b2\n\
+ add r1, r4, r2\n\
+ strh r0, [r1]\n\
+ cmp r0, #0\n\
+ bge ._416 @cond_branch\n\
+ mov r0, #0xd\n\
+._413:\n\
+ strh r0, [r1]\n\
+._416:\n\
+ ldrb r0, [r1]\n\
+ bl sub_8099C70\n\
+ mov r0, #0x2\n\
+ strb r0, [r4, #0x4]\n\
+ b ._466\n\
+._419:\n\
+ .align 2, 0\n\
+._418:\n\
+ .word 0x2000000\n\
+ .word gPokemonStorage\n\
+ .word 0x8b2\n\
+._372:\n\
+ bl sub_809BE80\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._428 @cond_branch\n\
+ ldr r4, ._423 @ 0x2000000\n\
+ ldr r1, ._423 + 4 @ 0x11f2\n\
+ add r0, r4, r1\n\
+ ldrh r0, [r0]\n\
+ bl ItemIsMail\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._421 @cond_branch\n\
+._392:\n\
+ mov r0, #0x5\n\
+ strb r0, [r4, #0x4]\n\
+ b ._466\n\
+._424:\n\
+ .align 2, 0\n\
+._423:\n\
+ .word 0x2000000\n\
+ .word 0x11f2\n\
+._421:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._426 @ sub_809746C\n\
+ bl SetPSSCallback\n\
+ b ._466\n\
+._427:\n\
+ .align 2, 0\n\
+._426:\n\
+ .word sub_809746C+1\n\
+._374:\n\
+ bl sub_809BE80\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._428 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._430 @ sub_80972A8\n\
+ bl SetPSSCallback\n\
+ b ._466\n\
+._431:\n\
+ .align 2, 0\n\
+._430:\n\
+ .word sub_80972A8+1\n\
+._375:\n\
+ bl sub_809BEBC\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._432 @cond_branch\n\
+._428:\n\
+ ldr r1, ._434 @ 0x2000000\n\
+ mov r0, #0x4\n\
+ strb r0, [r1, #0x4]\n\
+ b ._466\n\
+._435:\n\
+ .align 2, 0\n\
+._434:\n\
+ .word 0x2000000\n\
+._432:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._437 @ c3_0808DC50\n\
+ bl SetPSSCallback\n\
+ b ._466\n\
+._438:\n\
+ .align 2, 0\n\
+._437:\n\
+ .word c3_0808DC50+1\n\
+._373:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._440 @ sub_8097390\n\
+ bl SetPSSCallback\n\
+ b ._466\n\
+._441:\n\
+ .align 2, 0\n\
+._440:\n\
+ .word sub_8097390+1\n\
+._376:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._443 @ sub_80972FC\n\
+ bl SetPSSCallback\n\
+ b ._466\n\
+._444:\n\
+ .align 2, 0\n\
+._443:\n\
+ .word sub_80972FC+1\n\
+._351:\n\
+ bl sub_809AC00\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._466 @cond_branch\n\
+ bl sub_809BF48\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._446 @cond_branch\n\
+ bl sub_80986E8\n\
+ b ._447\n\
+._446:\n\
+ bl sub_8098710\n\
+._447:\n\
+ ldr r4, ._450 @ 0x2000000\n\
+ ldr r2, ._450 + 4 @ 0x11f6\n\
+ add r0, r4, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._448 @cond_branch\n\
+ bl BoxSetMosaic\n\
+._448:\n\
+ mov r0, #0x0\n\
+ strb r0, [r4, #0x4]\n\
+ b ._466\n\
+._451:\n\
+ .align 2, 0\n\
+._450:\n\
+ .word 0x2000000\n\
+ .word 0x11f6\n\
+._352:\n\
+ bl sub_8099D34\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._466 @cond_branch\n\
+ ldr r1, ._456 @ gPokemonStorage\n\
+ ldr r0, ._456 + 4 @ 0x2000000\n\
+ ldr r2, ._456 + 8 @ 0x8b2\n\
+ add r0, r0, r2\n\
+ ldrh r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldr r0, ._456 + 12 @ gUnknown_0203847C\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._455 @cond_branch\n\
+ bl sub_809BF20\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._455 @cond_branch\n\
+ bl sub_809B440\n\
+ bl BoxSetMosaic\n\
+ b ._455\n\
+._457:\n\
+ .align 2, 0\n\
+._456:\n\
+ .word gPokemonStorage\n\
+ .word 0x2000000\n\
+ .word 0x8b2\n\
+ .word gUnknown_0203847C\n\
+._353:\n\
+ ldr r0, ._460 @ gMain\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0xf3\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._466 @cond_branch\n\
+ bl sub_8098A5C\n\
+._455:\n\
+ ldr r1, ._460 + 4 @ 0x2000000\n\
+ mov r0, #0x0\n\
+ strb r0, [r1, #0x4]\n\
+ b ._466\n\
+._461:\n\
+ .align 2, 0\n\
+._460:\n\
+ .word gMain\n\
+ .word 0x2000000\n\
+._354:\n\
+ mov r0, #0x20\n\
+ bl PlaySE\n\
+ mov r0, #0xd\n\
+ b ._462\n\
+._355:\n\
+ mov r0, #0x20\n\
+ bl PlaySE\n\
+ mov r0, #0x16\n\
+._462:\n\
+ bl PrintStorageActionText\n\
+ ldr r1, ._464 @ 0x2000000\n\
+ mov r0, #0x6\n\
+ strb r0, [r1, #0x4]\n\
+ b ._466\n\
+._465:\n\
+ .align 2, 0\n\
+._464:\n\
+ .word 0x2000000\n\
+._356:\n\
+ ldr r0, ._467 @ gMain\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0xf3\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._466 @cond_branch\n\
+ bl sub_8098A5C\n\
+ ldr r0, ._467 + 4 @ sub_8096C84\n\
+ bl SetPSSCallback\n\
+._466:\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._468:\n\
+ .align 2, 0\n\
+._467:\n\
+ .word gMain\n\
+ .word sub_8096C84+1");
+}
+#else
void sub_8096C84(void)
{
switch (gPokemonStorageSystemPtr->unk_0004)
@@ -554,6 +1236,7 @@ void sub_8096C84(void)
break;
}
}
+#endif
void sub_8096FC8(void)
{
@@ -597,6 +1280,317 @@ void sub_8097004(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void sub_8097078(void)
+{
+ asm("\
+ push {r4, lr}\n\
+ ldr r0, ._495 @ 0x2000000\n\
+ ldrb r0, [r0, #0x4]\n\
+ cmp r0, #0x5\n\
+ bls ._493 @cond_branch\n\
+ b ._597\n\
+._493:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._495 + 4 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._496:\n\
+ .align 2, 0\n\
+._495:\n\
+ .word 0x2000000\n\
+ .word ._497\n\
+._497:\n\
+ .word ._498\n\
+ .word ._499\n\
+ .word ._500\n\
+ .word ._501\n\
+ .word ._502\n\
+ .word ._503\n\
+._498:\n\
+ mov r0, #0x4\n\
+ bl PrintStorageActionText\n\
+ bl sub_809CE84\n\
+ ldr r1, ._505 @ 0x2000000\n\
+ mov r0, #0x1\n\
+ strb r0, [r1, #0x4]\n\
+ b ._597\n\
+._506:\n\
+ .align 2, 0\n\
+._505:\n\
+ .word 0x2000000\n\
+._499:\n\
+ bl sub_809CF30\n\
+ add r0, r0, #0x1\n\
+ lsl r0, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0x21\n\
+ bls ._507 @cond_branch\n\
+ b ._597\n\
+._507:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._510 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._511:\n\
+ .align 2, 0\n\
+._510:\n\
+ .word ._509\n\
+._509:\n\
+ .word ._513\n\
+ .word ._513\n\
+ .word ._514\n\
+ .word ._515\n\
+ .word ._516\n\
+ .word ._517\n\
+ .word ._518\n\
+ .word ._519\n\
+ .word ._520\n\
+ .word ._521\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._597\n\
+ .word ._545\n\
+._513:\n\
+ bl sub_8098A5C\n\
+ ldr r0, ._547 @ sub_8096C84\n\
+ bl SetPSSCallback\n\
+ b ._597\n\
+._548:\n\
+ .align 2, 0\n\
+._547:\n\
+ .word sub_8096C84+1\n\
+._516:\n\
+ bl sub_809BE80\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._563 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl sub_8098A5C\n\
+ ldr r0, ._551 @ sub_80972A8\n\
+ bl SetPSSCallback\n\
+ b ._597\n\
+._552:\n\
+ .align 2, 0\n\
+._551:\n\
+ .word sub_80972A8+1\n\
+._518:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl sub_8098A5C\n\
+ ldr r0, ._554 @ sub_80972FC\n\
+ bl SetPSSCallback\n\
+ b ._597\n\
+._555:\n\
+ .align 2, 0\n\
+._554:\n\
+ .word sub_80972FC+1\n\
+._517:\n\
+ bl sub_809BEBC\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._563 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl sub_8098A5C\n\
+ ldr r0, ._558 @ c3_0808DC50\n\
+ bl SetPSSCallback\n\
+ b ._597\n\
+._559:\n\
+ .align 2, 0\n\
+._558:\n\
+ .word c3_0808DC50+1\n\
+._515:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl sub_8098A5C\n\
+ ldr r0, ._561 @ sub_8097390\n\
+ bl SetPSSCallback\n\
+ b ._597\n\
+._562:\n\
+ .align 2, 0\n\
+._561:\n\
+ .word sub_8097390+1\n\
+._514:\n\
+ bl sub_809BE80\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._563 @cond_branch\n\
+ ldr r4, ._566 @ 0x2000000\n\
+ ldr r1, ._566 + 4 @ 0x11f2\n\
+ add r0, r4, r1\n\
+ ldrh r0, [r0]\n\
+ bl ItemIsMail\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._564 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl sub_8098A5C\n\
+ ldr r0, ._566 + 8 @ sub_809746C\n\
+ bl SetPSSCallback\n\
+ b ._597\n\
+._567:\n\
+ .align 2, 0\n\
+._566:\n\
+ .word 0x2000000\n\
+ .word 0x11f2\n\
+ .word sub_809746C+1\n\
+._520:\n\
+ bl sub_809BE80\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._568 @cond_branch\n\
+._563:\n\
+ ldr r1, ._570 @ 0x2000000\n\
+ mov r0, #0x2\n\
+ strb r0, [r1, #0x4]\n\
+ b ._597\n\
+._571:\n\
+ .align 2, 0\n\
+._570:\n\
+ .word 0x2000000\n\
+._568:\n\
+ ldr r4, ._574 @ 0x2000000\n\
+ ldr r1, ._574 + 4 @ 0x11f9\n\
+ add r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._572 @cond_branch\n\
+ mov r0, #0x4\n\
+ strb r0, [r4, #0x4]\n\
+ b ._597\n\
+._575:\n\
+ .align 2, 0\n\
+._574:\n\
+ .word 0x2000000\n\
+ .word 0x11f9\n\
+._572:\n\
+ ldr r1, ._578 @ 0x11f2\n\
+ add r0, r4, r1\n\
+ ldrh r0, [r0]\n\
+ bl ItemIsMail\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._576 @cond_branch\n\
+._564:\n\
+ mov r0, #0x3\n\
+ strb r0, [r4, #0x4]\n\
+ b ._597\n\
+._579:\n\
+ .align 2, 0\n\
+._578:\n\
+ .word 0x11f2\n\
+._576:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._581 @ sub_8097594\n\
+ bl SetPSSCallback\n\
+ b ._597\n\
+._582:\n\
+ .align 2, 0\n\
+._581:\n\
+ .word sub_8097594+1\n\
+._519:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._584 @ sub_8097788\n\
+ bl SetPSSCallback\n\
+ b ._597\n\
+._585:\n\
+ .align 2, 0\n\
+._584:\n\
+ .word sub_8097788+1\n\
+._521:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldr r0, ._587 @ sub_80977E4\n\
+ bl SetPSSCallback\n\
+ b ._597\n\
+._588:\n\
+ .align 2, 0\n\
+._587:\n\
+ .word sub_80977E4+1\n\
+._545:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl sub_8098A5C\n\
+ ldr r0, ._590 @ debug_sub_80A435C\n\
+ bl SetPSSCallback\n\
+ b ._597\n\
+._591:\n\
+ .align 2, 0\n\
+._590:\n\
+ .word debug_sub_80A435C+1\n\
+._500:\n\
+ mov r0, #0x20\n\
+ bl PlaySE\n\
+ mov r0, #0xd\n\
+ b ._593\n\
+._502:\n\
+ mov r0, #0x20\n\
+ bl PlaySE\n\
+ mov r0, #0x11\n\
+ b ._593\n\
+._501:\n\
+ mov r0, #0x20\n\
+ bl PlaySE\n\
+ mov r0, #0x16\n\
+._593:\n\
+ bl PrintStorageActionText\n\
+ ldr r1, ._595 @ 0x2000000\n\
+ mov r0, #0x5\n\
+ strb r0, [r1, #0x4]\n\
+ b ._597\n\
+._596:\n\
+ .align 2, 0\n\
+._595:\n\
+ .word 0x2000000\n\
+._503:\n\
+ ldr r0, ._598 @ gMain\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0xf3\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._597 @cond_branch\n\
+ bl sub_8098A5C\n\
+ ldr r0, ._598 + 4 @ sub_8096C84\n\
+ bl SetPSSCallback\n\
+._597:\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._599:\n\
+ .align 2, 0\n\
+._598:\n\
+ .word gMain\n\
+ .word sub_8096C84+1");
+}
+#else
void sub_8097078(void)
{
switch (gPokemonStorageSystemPtr->unk_0004)
@@ -717,6 +1711,7 @@ void sub_8097078(void)
break;
}
}
+#endif
void sub_80972A8(void)
{
diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c
index 1cc9f7e3b..19fddc0f7 100644
--- a/src/pokemon/pokemon_storage_system_4.c
+++ b/src/pokemon/pokemon_storage_system_4.c
@@ -25,6 +25,11 @@ struct WallpaperTable {
// Static RAM declarations
EWRAM_DATA struct Pokemon gUnknown_02038480 = {};
+#if DEBUG
+EWRAM_DATA u32 unk_2038790 = 0;
+EWRAM_DATA u32 unk_2038794 = 0;
+EWRAM_DATA u32 unk_2038798 = 0;
+#endif
EWRAM_DATA s8 gUnknown_020384E4 = 0;
EWRAM_DATA s8 gUnknown_020384E5 = 0;
EWRAM_DATA bool8 gUnknown_020384E6 = FALSE;
diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c
index 325a94117..9c621780a 100644
--- a/src/pokemon/pokemon_summary_screen.c
+++ b/src/pokemon/pokemon_summary_screen.c
@@ -41,11 +41,11 @@ static void sub_80A0090(struct Pokemon *);
static void sub_80A015C(struct Pokemon *);
static void sub_809DE44(void);
static void sub_809EB40(u8);
-static void sub_809EBC4(void);
-static void sub_809E044(void);
+/*static*/ void sub_809EBC4(void);
+/*static*/ void sub_809E044(void);
static void sub_80A1D84(struct Pokemon *);
-static void sub_80A18C4(void);
-static bool8 LoadPokemonSummaryScreenGraphics(void);
+/*static*/ void sub_80A18C4(void);
+/*static*/ bool8 LoadPokemonSummaryScreenGraphics(void);
static bool8 MonKnowsMultipleMoves(struct Pokemon *);
static void PrintSummaryWindowHeaderText(void);
static void sub_80A1DCC(struct Pokemon *);
@@ -63,8 +63,8 @@ static void PrintHeldItemName(u16, u8, u8);
static void PrintNumRibbons(struct Pokemon *);
static void DrawExperienceProgressBar(struct Pokemon *, u8, u8);
static void sub_809E13C(u8 taskId);
-static void sub_80A1950(void);
-static void sub_809DE64(void);
+/*static*/ void sub_80A1950(void);
+/*static*/ void sub_809DE64(void);
static void SummaryScreenHandleAButton(u8);
static void SummaryScreenHandleUpDownInput(u8, s8);
static bool8 sub_809F7D0(u8);
@@ -571,7 +571,43 @@ static const u8 sUnknown_083C15BC[] = {
-1, 15, 0, 10,
};
-
+#if DEBUG
+__attribute__((naked))
+void sub_809D844(void)
+{
+ asm("\
+ push {lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ bl RunTasks\n\
+ bl AnimateSprites\n\
+ bl BuildOamBuffer\n\
+ bl UpdatePaletteFade\n\
+ ldr r0, ._2 @ gLinkOpen\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1 @cond_branch\n\
+ ldr r0, ._2 + 4 @ gLink\n\
+ ldr r1, ._2 + 8 @ 0xfbd\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x3\n\
+ str r1, [sp]\n\
+ mov r1, #0x14\n\
+ mov r2, #0x1\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._1:\n\
+ add sp, sp, #0x4\n\
+ pop {r0}\n\
+ bx r0\n\
+._3:\n\
+ .align 2, 0\n\
+._2:\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
void sub_809D844(void)
{
RunTasks();
@@ -579,6 +615,7 @@ void sub_809D844(void)
BuildOamBuffer();
UpdatePaletteFade();
}
+#endif
void sub_809D85C(void)
{
@@ -688,6 +725,491 @@ void sub_809DA1C(void)
}
}
+#if DEBUG
+__attribute__((naked))
+bool8 sub_809DA84(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ add sp, sp, #0xfffffff8\n\
+ ldr r1, ._52 @ gMain\n\
+ ldr r2, ._52 + 4 @ 0x43c\n\
+ add r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ mov ip, r1\n\
+ cmp r0, #0x16\n\
+ bls ._50 @cond_branch\n\
+ b ._51\n\
+._50:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._52 + 8 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._53:\n\
+ .align 2, 0\n\
+._52:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+ .word ._54\n\
+._54:\n\
+ .word ._55\n\
+ .word ._56\n\
+ .word ._57\n\
+ .word ._58\n\
+ .word ._59\n\
+ .word ._60\n\
+ .word ._61\n\
+ .word ._62\n\
+ .word ._63\n\
+ .word ._64\n\
+ .word ._65\n\
+ .word ._66\n\
+ .word ._67\n\
+ .word ._68\n\
+ .word ._69\n\
+ .word ._70\n\
+ .word ._71\n\
+ .word ._72\n\
+ .word ._73\n\
+ .word ._74\n\
+ .word ._75\n\
+ .word ._76\n\
+ .word ._77\n\
+._55:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ bl ResetSpriteData\n\
+ b ._146\n\
+._56:\n\
+ bl ScanlineEffect_Stop\n\
+ ldr r1, ._80 @ gMain\n\
+ ldr r2, ._80 + 4 @ 0x43c\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._81:\n\
+ .align 2, 0\n\
+._80:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._57:\n\
+ bl FreeAllSpritePalettes\n\
+ b ._146\n\
+._58:\n\
+ mov r2, #0xc0\n\
+ lsl r2, r2, #0x13\n\
+ mov r3, #0x80\n\
+ lsl r3, r3, #0x9\n\
+ mov r5, #0x0\n\
+ ldr r1, ._85 @ 0x40000d4\n\
+ mov r4, #0x80\n\
+ lsl r4, r4, #0x5\n\
+ ldr r6, ._85 + 4 @ 0x85000400\n\
+ mov r7, #0x85\n\
+ lsl r7, r7, #0x18\n\
+._83:\n\
+ str r5, [sp, #0x4]\n\
+ add r0, sp, #0x4\n\
+ str r0, [r1]\n\
+ str r2, [r1, #0x4]\n\
+ str r6, [r1, #0x8]\n\
+ ldr r0, [r1, #0x8]\n\
+ add r2, r2, r4\n\
+ sub r3, r3, r4\n\
+ cmp r3, r4\n\
+ bhi ._83 @cond_branch\n\
+ str r5, [sp, #0x4]\n\
+ add r0, sp, #0x4\n\
+ str r0, [r1]\n\
+ str r2, [r1, #0x4]\n\
+ lsr r0, r3, #0x2\n\
+ orr r0, r0, r7\n\
+ str r0, [r1, #0x8]\n\
+ ldr r0, [r1, #0x8]\n\
+ ldr r1, ._85 + 8 @ 0x43c\n\
+ add r1, r1, ip\n\
+ b ._153\n\
+._86:\n\
+ .align 2, 0\n\
+._85:\n\
+ .word 0x40000d4\n\
+ .word 0x85000400\n\
+ .word 0x43c\n\
+._59:\n\
+ bl sub_809DE64\n\
+ ldr r1, ._88 @ gMain\n\
+ ldr r2, ._88 + 4 @ 0x43c\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._89:\n\
+ .align 2, 0\n\
+._88:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._60:\n\
+ ldr r0, ._91 @ gWindowTemplate_81E6E6C\n\
+ bl Text_LoadWindowTemplate\n\
+ b ._146\n\
+._92:\n\
+ .align 2, 0\n\
+._91:\n\
+ .word gWindowTemplate_81E6E6C\n\
+._61:\n\
+ ldr r0, ._94 @ gWindowTemplate_81E6E6C\n\
+ bl MultistepInitMenuWindowBegin\n\
+ ldr r1, ._94 + 4 @ gMain\n\
+ ldr r2, ._94 + 8 @ 0x43c\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._95:\n\
+ .align 2, 0\n\
+._94:\n\
+ .word gWindowTemplate_81E6E6C\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._62:\n\
+ bl MultistepInitMenuWindowContinue\n\
+ cmp r0, #0\n\
+ bne ._96 @cond_branch\n\
+ b ._157\n\
+._96:\n\
+ b ._146\n\
+._63:\n\
+ bl sub_809DA1C\n\
+ ldr r1, ._100 @ gMain\n\
+ ldr r2, ._100 + 4 @ 0x43c\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._101:\n\
+ .align 2, 0\n\
+._100:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._64:\n\
+ ldr r1, ._103 @ gSummaryScreenTextTiles\n\
+ ldr r2, ._103 + 4 @ 0x600d000\n\
+ ldr r0, ._103 + 8 @ 0x40000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, #0x4]\n\
+ ldr r1, ._103 + 12 @ 0x800000a0\n\
+ str r1, [r0, #0x8]\n\
+ ldr r1, [r0, #0x8]\n\
+ ldr r1, ._103 + 16 @ sSummaryScreenButtonTiles\n\
+ ldr r2, ._103 + 20 @ 0x600d140\n\
+ str r1, [r0]\n\
+ str r2, [r0, #0x4]\n\
+ ldr r1, ._103 + 24 @ 0x80000080\n\
+ str r1, [r0, #0x8]\n\
+ ldr r0, [r0, #0x8]\n\
+ ldr r0, ._103 + 28 @ \n\
+ add r0, r0, #0x74\n\
+ mov r1, #0x0\n\
+ strb r1, [r0]\n\
+ ldr r1, ._103 + 32 @ \n\
+ add r1, r1, ip\n\
+ b ._153\n\
+._104:\n\
+ .align 2, 0\n\
+._103:\n\
+ .word gSummaryScreenTextTiles\n\
+ .word 0x600d000\n\
+ .word 0x40000d4\n\
+ .word 0x800000a0\n\
+ .word sSummaryScreenButtonTiles\n\
+ .word 0x600d140\n\
+ .word 0x80000080\n\
+ .word +0x2018000\n\
+ .word 0x43c\n\
+._65:\n\
+ bl LoadPokemonSummaryScreenGraphics\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._105 @cond_branch\n\
+ b ._157\n\
+._105:\n\
+ ldr r0, ._108 @ \n\
+ add r0, r0, #0x74\n\
+ mov r1, #0x0\n\
+ strb r1, [r0]\n\
+ b ._146\n\
+._109:\n\
+ .align 2, 0\n\
+._108:\n\
+ .word +0x2018000\n\
+._66:\n\
+ bl sub_80A18C4\n\
+ ldr r1, ._111 @ gMain\n\
+ ldr r2, ._111 + 4 @ 0x43c\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._112:\n\
+ .align 2, 0\n\
+._111:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._67:\n\
+ ldr r4, ._115 @ \n\
+ add r0, r4, #0\n\
+ bl sub_809F678\n\
+ add r0, r4, #0\n\
+ bl GetMonStatusAndPokerus\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._113 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl sub_80A12D0\n\
+ b ._114\n\
+._116:\n\
+ .align 2, 0\n\
+._115:\n\
+ .word +0x2018010\n\
+._113:\n\
+ mov r0, #0xa\n\
+ bl sub_80A12D0\n\
+._114:\n\
+ ldr r0, ._118 @ \n\
+ bl DrawPokerusSurvivorDot\n\
+ b ._146\n\
+._119:\n\
+ .align 2, 0\n\
+._118:\n\
+ .word +0x2018010\n\
+._68:\n\
+ bl sub_80A1950\n\
+ ldr r0, ._121 @ \n\
+ bl sub_80A1D84\n\
+ ldr r1, ._121 + 4 @ \n\
+ ldr r2, ._121 + 8 @ \n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._122:\n\
+ .align 2, 0\n\
+._121:\n\
+ .word +0x2018010\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._69:\n\
+ ldr r4, ._124 @ \n\
+ add r0, r4, #0\n\
+ bl sub_80A1DE8\n\
+ add r4, r4, #0x64\n\
+ mov r0, #0x0\n\
+ strb r0, [r4]\n\
+ b ._146\n\
+._125:\n\
+ .align 2, 0\n\
+._124:\n\
+ .word +0x2018010\n\
+._70:\n\
+ ldr r4, ._129 @ \n\
+ add r5, r4, #0\n\
+ add r5, r5, #0x64\n\
+ add r0, r4, #0\n\
+ add r1, r5, #0\n\
+ bl sub_809F6B4\n\
+ sub r4, r4, #0x10\n\
+ strb r0, [r4, #0xc]\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0xff\n\
+ bne ._126 @cond_branch\n\
+ b ._157\n\
+._126:\n\
+ mov r0, #0x0\n\
+ strb r0, [r5]\n\
+ ldr r1, ._129 + 4 @ \n\
+ ldr r2, ._129 + 8 @ \n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._130:\n\
+ .align 2, 0\n\
+._129:\n\
+ .word +0x2018010\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._71:\n\
+ bl sub_809E044\n\
+ bl DrawSummaryScreenNavigationDots\n\
+ b ._146\n\
+._72:\n\
+ ldr r1, ._134 @ \n\
+ ldrb r0, [r1, #0xb]\n\
+ cmp r0, #0x1\n\
+ bhi ._132 @cond_branch\n\
+ ldr r0, ._134 + 4 @ \n\
+ ldrb r1, [r1, #0xb]\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r0\n\
+ ldr r0, [r1]\n\
+ bl _call_via_r0\n\
+._132:\n\
+ ldr r1, ._134 + 8 @ \n\
+ ldr r2, ._134 + 12 @ \n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._135:\n\
+ .align 2, 0\n\
+._134:\n\
+ .word +0x2018000\n\
+ .word sUnknown_083C1580\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._73:\n\
+ ldr r0, ._137 @ \n\
+ bl sub_809FAC8\n\
+ b ._146\n\
+._138:\n\
+ .align 2, 0\n\
+._137:\n\
+ .word +0x2018010\n\
+._74:\n\
+ ldr r2, ._140 @ sUnknown_083C1598\n\
+ ldr r0, ._140 + 4 @ \n\
+ ldrb r1, [r0, #0xb]\n\
+ lsl r1, r1, #0x2\n\
+ add r1, r1, r2\n\
+ add r0, r0, #0x10\n\
+ ldr r1, [r1]\n\
+ bl _call_via_r1\n\
+ ldr r1, ._140 + 8 @ \n\
+ ldr r2, ._140 + 12 @ \n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._141:\n\
+ .align 2, 0\n\
+._140:\n\
+ .word sUnknown_083C1598\n\
+ .word +0x2018000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._75:\n\
+ ldr r0, ._144 @ \n\
+ mov r1, #0x2d\n\
+ bl GetMonData\n\
+ add r1, r0, #0\n\
+ cmp r1, #0\n\
+ beq ._142 @cond_branch\n\
+ ldr r1, ._144 + 4 @ \n\
+ mov r2, #0x80\n\
+ lsl r2, r2, #0x1\n\
+ add r0, r2, #0\n\
+ strh r0, [r1]\n\
+ b ._146\n\
+._145:\n\
+ .align 2, 0\n\
+._144:\n\
+ .word +0x2018010\n\
+ .word gBattle_BG3_X\n\
+._142:\n\
+ ldr r0, ._147 @ gBattle_BG3_X\n\
+ strh r1, [r0]\n\
+ b ._146\n\
+._148:\n\
+ .align 2, 0\n\
+._147:\n\
+ .word gBattle_BG3_X\n\
+._76:\n\
+ bl sub_809EBC4\n\
+ ldr r0, ._151 @ \n\
+ add r0, r0, #0x79\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._149 @cond_branch\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ bl sub_80A1488\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ bl sub_80A1654\n\
+ b ._150\n\
+._152:\n\
+ .align 2, 0\n\
+._151:\n\
+ .word +0x2018000\n\
+._149:\n\
+ mov r0, #0xa\n\
+ mov r1, #0x0\n\
+ bl sub_80A1488\n\
+ mov r0, #0xa\n\
+ mov r1, #0x0\n\
+ bl sub_80A1654\n\
+._150:\n\
+ bl PrintSummaryWindowHeaderText\n\
+ ldr r1, ._154 @ gMain\n\
+ ldr r2, ._154 + 4 @ 0x43c\n\
+ add r1, r1, r2\n\
+ b ._153\n\
+._155:\n\
+ .align 2, 0\n\
+._154:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._77:\n\
+ bl sub_8055870\n\
+ cmp r0, #0x1\n\
+ beq ._157 @cond_branch\n\
+._146:\n\
+ ldr r1, ._158 @ gMain\n\
+ ldr r0, ._158 + 4 @ 0x43c\n\
+ add r1, r1, r0\n\
+._153:\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ b ._157\n\
+._159:\n\
+ .align 2, 0\n\
+._158:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._51:\n\
+ ldr r0, ._162 @ sub_809D85C\n\
+ bl SetVBlankCallback\n\
+ mov r0, #0x1\n\
+ str r0, [sp]\n\
+ mov r0, #0xff\n\
+ mov r1, #0x0\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginHardwarePaletteFade\n\
+ ldr r0, ._162 + 4 @ sub_809D844\n\
+ bl SetMainCallback2\n\
+ ldr r2, ._162 + 8 @ gPaletteFade\n\
+ ldrb r1, [r2, #0x8]\n\
+ mov r0, #0x7f\n\
+ and r0, r0, r1\n\
+ strb r0, [r2, #0x8]\n\
+ ldr r0, ._162 + 12 @ gLinkOpen\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._160 @cond_branch\n\
+ ldr r0, ._162 + 16 @ 0x600dde0\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x8\n\
+ ldr r2, ._162 + 20 @ 0x600f000\n\
+ mov r3, #0x3\n\
+ bl debug_sub_8008218\n\
+._160:\n\
+ mov r0, #0x1\n\
+ b ._161\n\
+._163:\n\
+ .align 2, 0\n\
+._162:\n\
+ .word sub_809D85C+1\n\
+ .word sub_809D844+1\n\
+ .word gPaletteFade\n\
+ .word gLinkOpen\n\
+ .word 0x600dde0\n\
+ .word 0x600f000\n\
+._157:\n\
+ mov r0, #0x0\n\
+._161:\n\
+ add sp, sp, #0x8\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r1}\n\
+ bx r1");
+}
+#else
bool8 sub_809DA84(void)
{
switch (gMain.state)
@@ -845,13 +1367,15 @@ bool8 sub_809DA84(void)
return FALSE;
}
+#endif
static void sub_809DE44(void)
{
- while (sub_809DA84() != TRUE && sub_80F9344() != TRUE);
+ while (sub_809DA84() != TRUE && sub_80F9344() != TRUE)
+ ;
}
-static void sub_809DE64(void)
+/*static*/ void sub_809DE64(void)
{
REG_BG0CNT = 0x1E08;
REG_BG1CNT = 0x4801;
@@ -878,7 +1402,7 @@ static void sub_809DE64(void)
REG_DISPCNT = 0x1F40;
}
-static bool8 LoadPokemonSummaryScreenGraphics(void)
+/*static*/ bool8 LoadPokemonSummaryScreenGraphics(void)
{
switch (pssData.loadGfxState)
{
@@ -928,7 +1452,7 @@ static bool8 LoadPokemonSummaryScreenGraphics(void)
return FALSE;
}
-static void sub_809E044(void)
+/*static*/ void sub_809E044(void)
{
LoadPalette(gUnknownPalette_81E6692 + 14, 129, 2);
LoadPalette(gUnknownPalette_81E6692 + 15, 136, 2);
@@ -1507,7 +2031,7 @@ static void sub_809EB40(u8 taskId)
}
}
-static void sub_809EBC4(void)
+/*static*/ void sub_809EBC4(void)
{
if (pssData.page != PSS_PAGE_INFO)
{
@@ -2565,14 +3089,14 @@ static void sub_809FC34(struct Pokemon *mon)
buffer = gStringVar1;
buffer = sub_80A1E58(buffer, 13);
buffer = StringCopy(buffer, gOtherText_OriginalTrainer);
- buffer = StringCopy(buffer, gOtherText_FiveQuestionsAndSlash);
+ buffer = StringCopy(buffer, gOtherText_FiveQuestions);
buffer[0] = EXT_CTRL_CODE_BEGIN;
buffer[1] = 0x13;
buffer[2] = 0x4E;
buffer[3] = EOS;
Menu_PrintText(gStringVar1, 11, 4);
- sub_80A1EF8(gOtherText_FiveQuestionsAndSlash, 13, 193, 32, 1);
+ sub_80A1EF8(gOtherText_FiveQuestions, 13, 193, 32, 1);
sub_80A198C(9, 120, 48, 0);
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
@@ -4874,7 +5398,7 @@ static void sub_80A1888(struct Sprite *sprite)
}
}
-static void sub_80A18C4(void)
+/*static*/ void sub_80A18C4(void)
{
u8 i;
@@ -4898,7 +5422,7 @@ static void sub_80A1918(u8 a, u8 invisible)
gSprites[ewram1A000[a]].invisible = invisible;
}
-static void sub_80A1950(void)
+/*static*/ void sub_80A1950(void)
{
u8 i;
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index 600c5aba8..4f7eb66b4 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -20,8 +20,6 @@
#include "text.h"
#include "scanline_effect.h"
-extern u8 ewram[];
-
struct UnknownPokenav0
{
/* 0x0000 */ u8 var0[0x0300];
@@ -131,6 +129,10 @@ extern const u8 gUnknown_08E99FB0[];
extern const u8 gUnknown_08E9A100[];
extern const u16 gPokenavHoennMap1_Pal[];
+// TODO: decompile the debug code so the compiler doesn't complain about
+// unused static functions
+#define static
+
static void sub_80EBCA8();
static void sub_80EEE20();
static bool8 sub_80EEE54();
@@ -296,7 +298,6 @@ extern void sub_80F19FC();
extern u16 gKeyRepeatStartDelay;
-
void sub_80EBA5C()
{
switch (gMain.state)
@@ -551,6 +552,10 @@ void sub_80EBDD8()
{
sub_80EF428(0, 0);
sub_80EBDBC(&sub_80EC268);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
}
break;
}
@@ -625,6 +630,10 @@ void sub_80EC00C()
{
sub_80EF428(0, ewram0_10.var6dad);
sub_80EBDBC(&sub_80EC268);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
}
break;
}
@@ -826,6 +835,10 @@ void sub_80EC4A0()
break;
case 0xD:
sub_80EED2C(0x1);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x75E0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
ewram0_10.var304++;
break;
case 0xE:
@@ -905,6 +918,10 @@ void sub_80EC67C()
}
break;
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 1, 2, 4);
+#endif
}
void sub_80EC81C()
@@ -1010,23 +1027,23 @@ void sub_80ECA10()
SetVBlankCallback(&sub_80EBD80);
sub_80EED1C();
ewram0_10.var6dad = ewram0_10.var6df0;
- ewram0_10.var6dae = 0x3;
+ ewram0_10.var6dae = 3;
sub_80EEE08();
ewram0_10.var304++;
}
break;
case 1:
- sub_80EF248(0x1);
+ sub_80EF248(1);
ewram0_10.var304++;
case 2:
- if (!sub_80EF284(0x1))
+ if (!sub_80EF284(1))
ewram0_10.var304++;
break;
case 3:
- sub_80F1B8C(0x1);
+ sub_80F1B8C(1);
ewram0_10.var304++;
case 4:
- if (!sub_80F1BC8(0x1))
+ if (!sub_80F1BC8(1))
ewram0_10.var304++;
break;
case 5:
@@ -1050,23 +1067,27 @@ void sub_80ECA10()
if (!gPaletteFade.active)
ewram0_10.var304++;
break;
- case 0xA:
- sub_80F2C80(0x1);
+ case 10:
+ sub_80F2C80(1);
ewram0_10.var304++;
// fall through
- case 0xB:
- if (!sub_80F2CBC(0x1))
+ case 11:
+ if (!sub_80F2CBC(1))
ewram0_10.var304++;
break;
- case 0xC:
+ case 12:
sub_80F1DF0();
ewram0_10.var304++;
break;
- case 0xD:
+ case 13:
if (!sub_80F1E50())
{
sub_80EF428(1, ewram0_10.var6dad);
sub_80EBDBC(&sub_80EC86C);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
}
break;
}
@@ -1228,6 +1249,10 @@ void sub_80ECD80()
{
sub_80EF428(2, ewram0_10.var6dad);
sub_80EBDBC(&sub_80ECC08);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
}
break;
}
@@ -1337,7 +1362,13 @@ void sub_80ED01C()
// fall through
case 19:
if (!sub_80F2CBC(ewram0_10.var6dfc + 7))
+ {
sub_80EBDBC(&sub_80ED31C);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
+ }
break;
}
}
@@ -1352,21 +1383,23 @@ void sub_80ED31C()
case 1:
PlaySE(SE_SELECT);
ShowMapNamePopUpWindow();
- break;
+ return;
case 2:
PlaySE(SE_SELECT);
ewram0_10.var304++;
- break;
+ return;
default:
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80ED4D8);
+ return;
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80ECD80);
+ return;
}
break;
}
@@ -1384,6 +1417,10 @@ void sub_80ED31C()
ewram0_10.var304 = 0;
break;
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 8, 2, 4);
+#endif
}
void sub_80ED3D0()
@@ -1424,6 +1461,10 @@ void sub_80ED3D0()
case 7:
sub_80EED2C(0x4);
ewram0_10.var304++;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
break;
case 8:
if (!gPaletteFade.active)
@@ -1475,6 +1516,10 @@ void sub_80ED4D8()
case 7:
sub_80EED2C(0x2);
ewram0_10.var304++;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF000), 4);
+#endif
break;
case 8:
if (!gPaletteFade.active)
@@ -1568,7 +1613,13 @@ void sub_80ED620()
// fall through
case 16:
if (!sub_80F2CBC(0x6))
+ {
sub_80EBDBC(&sub_80ED858);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF000), 4);
+#endif
+ }
break;
}
}
@@ -1741,8 +1792,433 @@ label2:
}
#else
+#if DEBUG
__attribute__((naked))
-void sub_80ED858() {
+void sub_80ED858()
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._917 @ gSharedMem\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r5, r1, #0\n\
+ cmp r0, #0xb\n\
+ bls ._915 @cond_branch\n\
+ b ._999\n\
+._915:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._917 + 4 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._918:\n\
+ .align 2, 0\n\
+._917:\n\
+ .word gSharedMem\n\
+ .word ._919\n\
+._919:\n\
+ .word ._920\n\
+ .word ._921\n\
+ .word ._922\n\
+ .word ._923\n\
+ .word ._924\n\
+ .word ._925\n\
+ .word ._926\n\
+ .word ._927\n\
+ .word ._928\n\
+ .word ._929\n\
+ .word ._999\n\
+ .word ._931\n\
+._920:\n\
+ bl sub_80F4F78\n\
+ bl sub_80F5B38\n\
+ ldr r0, ._933 @ gSharedMem\n\
+ mov r4, #0xc1\n\
+ lsl r4, r4, #0x2\n\
+ add r0, r0, r4\n\
+ mov r1, #0x1\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._934:\n\
+ .align 2, 0\n\
+._933:\n\
+ .word gSharedMem\n\
+._921:\n\
+ bl sub_80F5B50\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._935 @cond_branch\n\
+ b ._999\n\
+._935:\n\
+ ldr r0, ._938 @ gSharedMem\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ mov r1, #0x2\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._939:\n\
+ .align 2, 0\n\
+._938:\n\
+ .word gSharedMem\n\
+._922:\n\
+ mov r0, #0x1\n\
+ bl sub_80F0174\n\
+ ldr r0, ._941 @ gSharedMem\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r0, r2\n\
+ mov r1, #0x3\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._942:\n\
+ .align 2, 0\n\
+._941:\n\
+ .word gSharedMem\n\
+._923:\n\
+ bl sub_80F4FB4\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._943 @cond_branch\n\
+ b ._999\n\
+._943:\n\
+ bl sub_80F3C94\n\
+ bl sub_80F3D00\n\
+ b ._945\n\
+._924:\n\
+ ldr r2, ._951 @ gMain\n\
+ ldrh r1, [r2, #0x2c]\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ add r3, r2, #0\n\
+ cmp r0, #0\n\
+ beq ._949 @cond_branch\n\
+ ldr r1, ._951 + 4 @ 0x87cb\n\
+ add r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._949 @cond_branch\n\
+ ldr r2, ._951 + 8 @ 0x76aa\n\
+ add r0, r5, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._948 @cond_branch\n\
+ ldr r4, ._951 + 12 @ 0x87dc\n\
+ add r0, r5, r4\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r0, r1]\n\
+ cmp r0, #0\n\
+ beq ._949 @cond_branch\n\
+._948:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0x1\n\
+ bl sub_80F5060\n\
+ bl move_anim_execute\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r5, r2\n\
+ b ._950\n\
+._952:\n\
+ .align 2, 0\n\
+._951:\n\
+ .word gMain\n\
+ .word 0x87cb\n\
+ .word 0x76aa\n\
+ .word 0x87dc\n\
+._949:\n\
+ ldrh r1, [r3, #0x2c]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._956 @cond_branch\n\
+ ldr r4, ._958 @ 0x87cb\n\
+ add r0, r5, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._956 @cond_branch\n\
+ ldr r1, ._958 + 4 @ 0x76aa\n\
+ add r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._955 @cond_branch\n\
+ ldr r2, ._958 + 8 @ 0x87dc\n\
+ add r0, r5, r2\n\
+ sub r4, r4, #0x57\n\
+ add r1, r5, r4\n\
+ mov r4, #0x0\n\
+ ldsh r2, [r0, r4]\n\
+ mov r4, #0x0\n\
+ ldsh r0, [r1, r4]\n\
+ cmp r2, r0\n\
+ bge ._956 @cond_branch\n\
+._955:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0x0\n\
+ bl sub_80F5060\n\
+ bl move_anim_execute\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r5, r0\n\
+._950:\n\
+ mov r0, #0x5\n\
+ strh r0, [r1]\n\
+ b ._999\n\
+._959:\n\
+ .align 2, 0\n\
+._958:\n\
+ .word 0x87cb\n\
+ .word 0x76aa\n\
+ .word 0x87dc\n\
+._956:\n\
+ ldrh r2, [r3, #0x2e]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ beq ._960 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl sub_80F4FDC\n\
+ bl move_anim_execute\n\
+ ldr r0, ._962 @ gSharedMem\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ mov r1, #0x9\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._963:\n\
+ .align 2, 0\n\
+._962:\n\
+ .word gSharedMem\n\
+._960:\n\
+ mov r0, #0x1\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ bne ._964 @cond_branch\n\
+ b ._999\n\
+._964:\n\
+ add r4, r5, #0\n\
+ ldr r2, ._970 @ 0x76aa\n\
+ add r0, r4, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._966 @cond_branch\n\
+ ldr r1, ._970 + 4 @ 0x87dc\n\
+ add r0, r4, r1\n\
+ mov r2, #0x0\n\
+ ldsh r1, [r0, r2]\n\
+ ldr r2, ._970 + 8 @ 0x87da\n\
+ add r0, r4, r2\n\
+ mov r2, #0x0\n\
+ ldsh r0, [r0, r2]\n\
+ sub r0, r0, #0x1\n\
+ cmp r1, r0\n\
+ beq ._967 @cond_branch\n\
+ b ._999\n\
+._967:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r4, r0\n\
+ mov r0, #0x9\n\
+ strh r0, [r1]\n\
+ b ._999\n\
+._971:\n\
+ .align 2, 0\n\
+._970:\n\
+ .word 0x76aa\n\
+ .word 0x87dc\n\
+ .word 0x87da\n\
+._966:\n\
+ ldr r1, ._975 @ 0x6dac\n\
+ add r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._972 @cond_branch\n\
+ b ._999\n\
+._972:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r5, r2\n\
+ mov r0, #0x7\n\
+ strh r0, [r1]\n\
+ b ._999\n\
+._976:\n\
+ .align 2, 0\n\
+._975:\n\
+ .word 0x6dac\n\
+._925:\n\
+ bl gpu_sync_bg_show\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._977 @cond_branch\n\
+ b ._999\n\
+._977:\n\
+ bl sub_80F3D00\n\
+ ldr r0, ._980 @ gSharedMem\n\
+ mov r4, #0xc1\n\
+ lsl r4, r4, #0x2\n\
+ add r0, r0, r4\n\
+ mov r1, #0x6\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._981:\n\
+ .align 2, 0\n\
+._980:\n\
+ .word gSharedMem\n\
+._926:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._999 @cond_branch\n\
+ ldr r0, ._984 @ gSharedMem\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ b ._983\n\
+._985:\n\
+ .align 2, 0\n\
+._984:\n\
+ .word gSharedMem\n\
+._927:\n\
+ mov r0, #0x3\n\
+ bl sub_80EEFBC\n\
+ bl sub_80F3668\n\
+ ldr r0, ._987 @ gSharedMem\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r0, r2\n\
+ mov r1, #0x8\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._988:\n\
+ .align 2, 0\n\
+._987:\n\
+ .word gSharedMem\n\
+._928:\n\
+ bl sub_80F7500\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._999 @cond_branch\n\
+ mov r0, #0x2\n\
+ bl sub_80EEFBC\n\
+ bl sub_80F3698\n\
+._945:\n\
+ ldr r0, ._991 @ gSharedMem\n\
+ mov r4, #0xc1\n\
+ lsl r4, r4, #0x2\n\
+ add r0, r0, r4\n\
+._983:\n\
+ mov r1, #0x4\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._992:\n\
+ .align 2, 0\n\
+._991:\n\
+ .word gSharedMem\n\
+._929:\n\
+ bl sub_80F5038\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0\n\
+ bne ._999 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl sub_80F0174\n\
+ bl sub_80F2F48\n\
+ ldr r5, ._995 @ gSharedMem\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r5, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ str r4, [sp]\n\
+ mov r2, #0x0\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r5, r2\n\
+ mov r0, #0xb\n\
+ strh r0, [r1]\n\
+ b ._999\n\
+._996:\n\
+ .align 2, 0\n\
+._995:\n\
+ .word gSharedMem\n\
+._931:\n\
+ ldr r0, ._1000 @ gPaletteFade\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._999 @cond_branch\n\
+ bl sub_80F3CE8\n\
+ bl sub_80F5BDC\n\
+ ldr r0, ._1000 + 4 @ gSharedMem\n\
+ ldr r4, ._1000 + 8 @ 0x76aa\n\
+ add r0, r0, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._998 @cond_branch\n\
+ bl sub_80F357C\n\
+ mov r0, #0x1\n\
+ bl sub_80F2D6C\n\
+ mov r0, #0x6\n\
+ bl sub_80F2D6C\n\
+ ldr r0, ._1000 + 12 @ sub_80ECA10\n\
+ bl sub_80EBDBC\n\
+ b ._999\n\
+._1001:\n\
+ .align 2, 0\n\
+._1000:\n\
+ .word gPaletteFade\n\
+ .word gSharedMem\n\
+ .word 0x76aa\n\
+ .word sub_80ECA10+1\n\
+._998:\n\
+ bl sub_80F3614\n\
+ ldr r0, ._1003 @ sub_80ED3D0\n\
+ bl sub_80EBDBC\n\
+._999:\n\
+ ldr r0, ._1003 + 4 @ gLinkOpen\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1002 @cond_branch\n\
+ ldr r0, ._1003 + 8 @ gLink\n\
+ ldr r1, ._1003 + 12 @ 0xfbd\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x4\n\
+ str r1, [sp]\n\
+ mov r1, #0x9\n\
+ mov r2, #0x6\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._1002:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1004:\n\
+ .align 2, 0\n\
+._1003:\n\
+ .word sub_80ED3D0+1\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
+__attribute__((naked))
+void sub_80ED858()
+{
asm_unified("push {r4,r5,lr}\n\
sub sp, 0x4\n\
ldr r1, _080ED878 @ =gSharedMem\n\
@@ -2113,6 +2589,7 @@ _080EDB7A:\n\
_080EDB84: .4byte sub_80ED3D0\n");
}
#endif
+#endif
void sub_80EDB88()
{
@@ -2197,6 +2674,10 @@ void sub_80EDB88()
case 16:
sub_80EED2C(0x4);
ewram0_10.var304++;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
break;
case 17:
if (!gPaletteFade.active)
@@ -2215,21 +2696,23 @@ void sub_80EDDBC()
case 1:
PlaySE(SE_SELECT);
ShowMapNamePopUpWindow();
- break;
+ return;
case 2:
PlaySE(SE_SELECT);
ewram0_10.var304++;
- break;
+ return;
default:
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80EDEE4);
+ return;
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80EDE70);
+ return;
}
break;
}
@@ -2246,8 +2729,11 @@ void sub_80EDDBC()
if (!sub_8055870())
ewram0_10.var304 = 0;
break;
-
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 8, 2, 4);
+#endif
}
void sub_80EDE70()
@@ -2319,6 +2805,10 @@ void sub_80EDEE4()
case 8:
sub_80EED2C(0x3);
ewram0_10.var304++;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF000), 4);
+#endif
break;
case 9:
if (!gPaletteFade.active)
@@ -2391,7 +2881,7 @@ void sub_80EE06C()
PlaySE(SE_SELECT);
sub_80F3B94();
ewram0_10.var304 = 0x7;
- break;
+ return;
default:
case 0:
if (gMain.newKeys & B_BUTTON)
@@ -2415,6 +2905,10 @@ void sub_80EE06C()
}
break;
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 4, 2, 4);
+#endif
}
void sub_80EE294()
@@ -2460,6 +2954,10 @@ void sub_80EE294()
case 7:
sub_80EED2C(0x4);
ewram0_10.var304++;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
break;
case 8:
if (!gPaletteFade.active)
@@ -2536,6 +3034,10 @@ void sub_80EE3D8()
case 12:
sub_80EED2C(0x5);
ewram0_10.var304++;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
break;
case 13:
if (!gPaletteFade.active)
@@ -2554,21 +3056,23 @@ void sub_80EE58C()
case 1:
PlaySE(SE_SELECT);
sub_80F0FFC(ewram0_10.var876E);
- break;
+ return;
case 2:
PlaySE(SE_SELECT);
ewram0_10.var304++;
- break;
+ return;
default:
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80EE658);
+ return;
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80EE8F4);
+ return;
}
break;
}
@@ -2586,6 +3090,10 @@ void sub_80EE58C()
ewram0_10.var304 = 0;
break;
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 3, 2, 4);
+#endif
}
void sub_80EE658()
@@ -3037,6 +3545,10 @@ bool8 sub_80EEC10()
} while (!ewram0_10.var6db2[ewram0_11.var6dad]);
return TRUE;
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 6, 10, 2, 4);
+#endif
return FALSE;
}
@@ -3054,6 +3566,10 @@ bool8 sub_80EEC90()
ewram0_11.var6dad = 0;
return TRUE;
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 6, 10, 2, 4);
+#endif
return FALSE;
}
diff --git a/src/rom3.c b/src/rom3.c
index 000de8356..7b3051b86 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -67,6 +67,10 @@ void sub_800B858(void)
}
}
+#if DEBUG
+extern u8 gUnknown_02023A14_50;
+#endif
+
void setup_poochyena_battle(void)
{
s32 i;
@@ -93,6 +97,16 @@ void setup_poochyena_battle(void)
}
gUnknown_020239FC = 0;
gUnknown_02024C78 = 0;
+
+#if DEBUG
+ if (gUnknown_02023A14_50 & 0x80)
+ {
+ gSharedMem[0x160fd] = 0;
+ gSharedMem[0x160fe] = 0;
+ gSharedMem[0x160ff] = 0;
+ ((u32 *) gBattleBuffersTransferData)[64]++;
+ }
+#endif
}
void sub_800B950(void)
diff --git a/src/rom6.c b/src/rom6.c
index 62fbc987c..06e84cc0f 100644
--- a/src/rom6.c
+++ b/src/rom6.c
@@ -1,4 +1,6 @@
#include "global.h"
+#include "constants/map_objects.h"
+#include "constants/songs.h"
#include "rom6.h"
#include "braille_puzzles.h"
#include "field_effect.h"
@@ -8,7 +10,6 @@
#include "pokemon_menu.h"
#include "overworld.h"
#include "script.h"
-#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
#include "task.h"
@@ -116,6 +117,21 @@ static void sub_810B4CC(u8 taskId)
DestroyTask(taskId);
}
+#if DEBUG
+void debug_sub_8120968(void)
+{
+ if (npc_before_player_of_type(MAP_OBJ_GFX_BREAKABLE_ROCK) == TRUE)
+ {
+ gLastFieldPokeMenuOpened = 0;
+ sub_810B53C();
+ }
+ else
+ {
+ ScriptContext2_Disable();
+ }
+}
+#endif
+
bool8 SetUpFieldMove_RockSmash(void)
{
if (npc_before_player_of_type(0x56) == TRUE)
diff --git a/src/roulette.c b/src/roulette.c
index 41e8ef77f..838ce94f8 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -131,6 +131,12 @@ struct StructgUnknown_083F8D90
u32 var04;
};
+#if DEBUG
+u8 gUnknown_Debug_03005FB8;
+#endif
+
+#define static
+
static void sub_81150FC(void);
static void sub_8115124(void);
static void sub_8115238(void);
@@ -308,7 +314,10 @@ extern const u16 gUnknown_083FA632[];
extern const s8 gUnknown_083FA64A[0x2];
extern const s8 gUnknown_083FA64C[0x8][0x2];
-
+#if DEBUG
+EWRAM_DATA u8 unk_203955C[4] = { 0 };
+EWRAM_DATA u8 unk_2039560[4] = { 0 };
+#endif
void sub_81150FC(void)
@@ -570,6 +579,305 @@ void sub_8115238(void)
}
#endif
+#if DEBUG
+__attribute__((naked))
+void sub_8115384(void)
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._35 @ gUnknown_Debug_03005FB8\n\
+ ldr r0, ._35 + 4 @ 0x2019000\n\
+ str r0, [r1]\n\
+ ldr r1, ._35 + 8 @ gMain\n\
+ ldr r2, ._35 + 12 @ 0x43c\n\
+ add r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ add r2, r1, #0\n\
+ cmp r0, #0x7\n\
+ bls ._33 @cond_branch\n\
+ b ._64\n\
+._33:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._35 + 16 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._36:\n\
+ .align 2, 0\n\
+._35:\n\
+ .word gUnknown_Debug_03005FB8\n\
+ .word 0x2019000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+ .word ._37\n\
+._37:\n\
+ .word ._38\n\
+ .word ._39\n\
+ .word ._40\n\
+ .word ._41\n\
+ .word ._42\n\
+ .word ._43\n\
+ .word ._44\n\
+ .word ._45\n\
+._38:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ bl ScanlineEffect_Stop\n\
+ bl ClearVideoCallbacks\n\
+ bl sub_80F9368\n\
+ ldr r1, ._47 @ 0x400000c\n\
+ ldr r3, ._47 + 4 @ 0x4686\n\
+ add r0, r3, #0\n\
+ strh r0, [r1]\n\
+ sub r1, r1, #0x2\n\
+ ldr r2, ._47 + 8 @ 0x4401\n\
+ add r0, r2, #0\n\
+ strh r0, [r1]\n\
+ add r1, r1, #0x46\n\
+ mov r3, #0x90\n\
+ lsl r3, r3, #0x6\n\
+ add r0, r3, #0\n\
+ strh r0, [r1]\n\
+ add r1, r1, #0x2\n\
+ ldr r2, ._47 + 12 @ 0x60a\n\
+ add r0, r2, #0\n\
+ strh r0, [r1]\n\
+ ldr r0, ._47 + 16 @ gUnknown_08E8096C\n\
+ mov r1, #0xc0\n\
+ lsl r1, r1, #0x13\n\
+ bl LZ77UnCompVram\n\
+ ldr r0, ._47 + 20 @ gRouletteWheelTiles\n\
+ ldr r1, ._47 + 24 @ 0x6004000\n\
+ bl LZ77UnCompVram\n\
+ ldr r1, ._47 + 28 @ gMain\n\
+ ldr r3, ._47 + 32 @ 0x43c\n\
+ add r1, r1, r3\n\
+ b ._61\n\
+._48:\n\
+ .align 2, 0\n\
+._47:\n\
+ .word 0x400000c\n\
+ .word 0x4686\n\
+ .word 0x4401\n\
+ .word 0x60a\n\
+ .word gUnknown_08E8096C\n\
+ .word gRouletteWheelTiles\n\
+ .word 0x6004000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._39:\n\
+ bl ResetPaletteFade\n\
+ bl ResetSpriteData\n\
+ bl ResetTasks\n\
+ ldr r1, ._50 @ gMain\n\
+ ldr r0, ._50 + 4 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._61\n\
+._51:\n\
+ .align 2, 0\n\
+._50:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._40:\n\
+ ldr r0, ._53 @ gWindowTemplate_81E6C3C\n\
+ bl Text_LoadWindowTemplate\n\
+ ldr r0, ._53 + 4 @ gWindowTemplate_81E6CE4\n\
+ bl InitMenuWindow\n\
+ ldr r0, ._53 + 8 @ gUnknown_083F86BC\n\
+ mov r2, #0xe0\n\
+ lsl r2, r2, #0x1\n\
+ mov r1, #0x0\n\
+ bl LoadPalette\n\
+ ldr r1, ._53 + 12 @ gMain\n\
+ ldr r2, ._53 + 16 @ 0x43c\n\
+ add r1, r1, r2\n\
+ b ._61\n\
+._54:\n\
+ .align 2, 0\n\
+._53:\n\
+ .word gWindowTemplate_81E6C3C\n\
+ .word gWindowTemplate_81E6CE4\n\
+ .word gUnknown_083F86BC\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._41:\n\
+ bl sub_8115238\n\
+ bl ClearBGTilemapBuffers\n\
+ ldr r0, ._56 @ gUnknown_083F88BC\n\
+ ldr r1, ._56 + 4 @ 0x2018800\n\
+ bl LZ77UnCompWram\n\
+ ldr r0, ._56 + 8 @ gUnknown_083F8A60\n\
+ ldr r1, ._56 + 12 @ 0x6003000\n\
+ bl LZ77UnCompVram\n\
+ ldr r1, ._56 + 16 @ gMain\n\
+ ldr r3, ._56 + 20 @ 0x43c\n\
+ add r1, r1, r3\n\
+ b ._61\n\
+._57:\n\
+ .align 2, 0\n\
+._56:\n\
+ .word gUnknown_083F88BC\n\
+ .word 0x2018800\n\
+ .word gUnknown_083F8A60\n\
+ .word 0x6003000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._42:\n\
+ mov r0, #0x0\n\
+ bl sub_8117838\n\
+ bl sub_811857C\n\
+ bl sub_81184D8\n\
+ bl sub_8117F2C\n\
+ bl sub_8117900\n\
+ bl sub_8117BBC\n\
+ bl sub_8117DF4\n\
+ ldr r1, ._59 @ gMain\n\
+ ldr r0, ._59 + 4 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._61\n\
+._60:\n\
+ .align 2, 0\n\
+._59:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._43:\n\
+ bl AnimateSprites\n\
+ bl BuildOamBuffer\n\
+ ldr r0, ._62 @ gSaveBlock1\n\
+ ldr r1, ._62 + 4 @ 0x494\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0]\n\
+ bl sub_81180F4\n\
+ mov r0, #0x6\n\
+ bl sub_81182F8\n\
+ mov r0, #0x0\n\
+ bl sub_811829C\n\
+ mov r0, #0x0\n\
+ bl sub_8117158\n\
+ mov r0, #0x0\n\
+ mov r1, #0xe\n\
+ mov r2, #0x1d\n\
+ mov r3, #0x13\n\
+ bl Menu_DrawStdWindowFrame\n\
+ ldr r0, ._62 + 8 @ gUnknown_081C4157\n\
+ mov r1, #0x1\n\
+ mov r2, #0xf\n\
+ bl Menu_PrintText\n\
+ ldr r1, ._62 + 12 @ gSpriteCoordOffsetX\n\
+ mov r2, #0x3c\n\
+ neg r2, r2\n\
+ add r0, r2, #0\n\
+ strh r0, [r1]\n\
+ ldr r1, ._62 + 16 @ gSpriteCoordOffsetY\n\
+ mov r0, #0x0\n\
+ strh r0, [r1]\n\
+ ldr r1, ._62 + 20 @ gMain\n\
+ ldr r3, ._62 + 24 @ 0x43c\n\
+ add r1, r1, r3\n\
+ b ._61\n\
+._63:\n\
+ .align 2, 0\n\
+._62:\n\
+ .word gSaveBlock1\n\
+ .word 0x494\n\
+ .word gUnknown_081C4157\n\
+ .word gSpriteCoordOffsetX\n\
+ .word gSpriteCoordOffsetY\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._44:\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x13\n\
+ ldr r3, ._65 @ 0x1741\n\
+ add r0, r3, #0\n\
+ strh r0, [r1]\n\
+ ldr r0, ._65 + 4 @ 0x43c\n\
+ add r1, r2, r0\n\
+._61:\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ b ._64\n\
+._66:\n\
+ .align 2, 0\n\
+._65:\n\
+ .word 0x1741\n\
+ .word 0x43c\n\
+._45:\n\
+ ldr r3, ._67 @ 0x4000208\n\
+ ldrh r2, [r3]\n\
+ mov r0, #0x0\n\
+ strh r0, [r3]\n\
+ ldr r4, ._67 + 4 @ 0x4000200\n\
+ ldrh r0, [r4]\n\
+ mov r1, #0x1\n\
+ orr r0, r0, r1\n\
+ strh r0, [r4]\n\
+ strh r2, [r3]\n\
+ ldr r2, ._67 + 8 @ 0x4000004\n\
+ ldrh r0, [r2]\n\
+ mov r1, #0x8\n\
+ orr r0, r0, r1\n\
+ strh r0, [r2]\n\
+ ldr r0, ._67 + 12 @ sub_8115124\n\
+ bl SetVBlankCallback\n\
+ mov r0, #0x1\n\
+ str r0, [sp]\n\
+ mov r0, #0xff\n\
+ mov r1, #0x0\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginHardwarePaletteFade\n\
+ ldr r0, ._67 + 16 @ sub_81156BC\n\
+ mov r1, #0x0\n\
+ bl CreateTask\n\
+ ldr r4, ._67 + 20 @ 0x2019000\n\
+ add r1, r4, #0\n\
+ add r1, r1, #0xa4\n\
+ strb r0, [r1]\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r2, ._67 + 24 @ gTasks\n\
+ lsl r1, r0, #0x2\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r2\n\
+ mov r0, #0x6\n\
+ strh r0, [r1, #0x14]\n\
+ ldr r0, ._67 + 28 @ gSaveBlock1\n\
+ ldr r2, ._67 + 32 @ 0x494\n\
+ add r0, r0, r2\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1, #0x22]\n\
+ ldr r0, ._67 + 36 @ sub_8115634\n\
+ mov r1, #0x1\n\
+ bl CreateTask\n\
+ add r4, r4, #0xa5\n\
+ strb r0, [r4]\n\
+ ldr r0, ._67 + 40 @ sub_81150FC\n\
+ bl SetMainCallback2\n\
+._64:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._68:\n\
+ .align 2, 0\n\
+._67:\n\
+ .word 0x4000208\n\
+ .word 0x4000200\n\
+ .word 0x4000004\n\
+ .word sub_8115124+1\n\
+ .word sub_81156BC+1\n\
+ .word 0x2019000\n\
+ .word gTasks\n\
+ .word gSaveBlock1\n\
+ .word 0x494\n\
+ .word sub_8115634+1\n\
+ .word sub_81150FC+1");
+}
+#else
void sub_8115384(void)
{
u32 temp_IME;
@@ -651,7 +959,120 @@ void sub_8115384(void)
break;
}
}
+#endif
+#if DEBUG
+__attribute__((naked))
+void sub_8115634(u8 unused)
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ ldr r0, ._75 @ 0x2019000\n\
+ add r3, r0, #0\n\
+ add r3, r3, #0x21\n\
+ ldrb r1, [r3]\n\
+ add r2, r1, #1\n\
+ strb r2, [r3]\n\
+ add r2, r0, #0\n\
+ add r2, r2, #0x23\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ add r6, r0, #0\n\
+ ldrb r2, [r2]\n\
+ cmp r1, r2\n\
+ bne ._70 @cond_branch\n\
+ mov r0, #0x0\n\
+ strb r0, [r3]\n\
+ add r2, r6, #0\n\
+ add r2, r2, #0x22\n\
+ ldrb r1, [r2]\n\
+ ldrh r0, [r6, #0x24]\n\
+ sub r0, r0, r1\n\
+ strh r0, [r6, #0x24]\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bge ._70 @cond_branch\n\
+ ldrb r1, [r2]\n\
+ mov r2, #0xb4\n\
+ lsl r2, r2, #0x1\n\
+ add r0, r2, #0\n\
+ sub r0, r0, r1\n\
+ strh r0, [r6, #0x24]\n\
+._70:\n\
+ add r4, r6, #0\n\
+ ldrh r0, [r4, #0x24]\n\
+ bl Sin2\n\
+ lsl r0, r0, #0x10\n\
+ lsr r5, r0, #0x10\n\
+ ldrh r0, [r4, #0x24]\n\
+ bl Cos2\n\
+ lsl r0, r0, #0x10\n\
+ lsr r1, r0, #0x10\n\
+ lsl r0, r5, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bge ._71 @cond_branch\n\
+ add r0, r0, #0xf\n\
+._71:\n\
+ lsl r0, r0, #0xc\n\
+ lsr r5, r0, #0x10\n\
+ lsl r0, r1, #0x10\n\
+ asr r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bge ._72 @cond_branch\n\
+ add r0, r0, #0xf\n\
+._72:\n\
+ asr r0, r0, #0x4\n\
+ strh r0, [r6, #0x32]\n\
+ strh r0, [r6, #0x2c]\n\
+ strh r5, [r6, #0x2e]\n\
+ lsl r0, r5, #0x10\n\
+ asr r0, r0, #0x10\n\
+ neg r0, r0\n\
+ strh r0, [r6, #0x30]\n\
+ ldr r0, ._75 + 4 @ unk_203955C\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._74 @cond_branch\n\
+ ldr r0, ._75 + 8 @ gMain\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._74 @cond_branch\n\
+ ldr r2, ._75 + 12 @ gTasks\n\
+ add r0, r6, #0\n\
+ add r0, r0, #0xa4\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x2\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x3\n\
+ add r0, r0, r2\n\
+ ldr r1, ._75 + 16 @ sub_81157AC\n\
+ str r1, [r0]\n\
+ ldr r0, ._75 + 20 @ gMPlay_SE1\n\
+ bl m4aMPlayStop\n\
+ ldr r0, ._75 + 24 @ gMPlay_SE2\n\
+ bl m4aMPlayStop\n\
+ ldr r0, ._75 + 28 @ gMPlay_SE3\n\
+ bl m4aMPlayStop\n\
+._74:\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._76:\n\
+ .align 2, 0\n\
+._75:\n\
+ .word 0x2019000\n\
+ .word unk_203955C\n\
+ .word gMain\n\
+ .word gTasks\n\
+ .word sub_81157AC+1\n\
+ .word gMPlay_SE1\n\
+ .word gMPlay_SE2\n\
+ .word gMPlay_SE3");
+}
+#else
void sub_8115634(u8 unused)
{
s16 sin;
@@ -672,6 +1093,7 @@ void sub_8115634(u8 unused)
eRoulette->var2C.b = sin;
eRoulette->var2C.c = -sin;
}
+#endif
void sub_81156BC(u8 taskid)
{
@@ -1593,7 +2015,69 @@ void sub_8116AB0(u8 taskid)
gTasks[taskid].func = &sub_8116B40;
}
-void sub_8116B40(u8 taskid) // end oulette ?
+#if DEBUG
+__attribute__((naked))
+void sub_8116B40(u8 taskid) // end roulette ?
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r6, r0, #0x18\n\
+ bl UpdatePaletteFade\n\
+ lsl r0, r0, #0x18\n\
+ lsr r5, r0, #0x18\n\
+ cmp r5, #0\n\
+ bne ._380 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ ldr r0, ._381 @ 0x2019000\n\
+ mov r2, #0xbe\n\
+ lsl r2, r2, #0x1\n\
+ mov r1, #0x0\n\
+ bl memset\n\
+ ldr r1, ._381 + 4 @ gSpriteCoordOffsetX\n\
+ ldr r0, ._381 + 8 @ gSpriteCoordOffsetY\n\
+ mov r4, #0x0\n\
+ strh r5, [r0]\n\
+ strh r5, [r1]\n\
+ bl sub_80F9368\n\
+ bl FreeAllSpritePalettes\n\
+ bl ResetPaletteFade\n\
+ bl ResetSpriteData\n\
+ bl ClearBGTilemapBuffers\n\
+ ldr r0, ._381 + 12 @ 0x4000050\n\
+ strh r5, [r0]\n\
+ add r0, r0, #0x2\n\
+ strh r5, [r0]\n\
+ add r0, r0, #0x2\n\
+ strh r5, [r0]\n\
+ ldr r1, ._381 + 16 @ gFieldCallback\n\
+ ldr r0, ._381 + 20 @ sub_8080990\n\
+ str r0, [r1]\n\
+ ldr r0, ._381 + 24 @ c2_exit_to_overworld_2_switch\n\
+ bl SetMainCallback2\n\
+ add r0, r6, #0\n\
+ bl DestroyTask\n\
+ ldr r0, ._381 + 28 @ unk_203955C\n\
+ strb r4, [r0]\n\
+._380:\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._382:\n\
+ .align 2, 0\n\
+._381:\n\
+ .word 0x2019000\n\
+ .word gSpriteCoordOffsetX\n\
+ .word gSpriteCoordOffsetY\n\
+ .word 0x4000050\n\
+ .word gFieldCallback\n\
+ .word sub_8080990+1\n\
+ .word c2_exit_to_overworld_2_switch+1\n\
+ .word unk_203955C");
+}
+#else
+void sub_8116B40(u8 taskid) // end roulette ?
{
if (UpdatePaletteFade() == 0)
{
@@ -1613,6 +2097,7 @@ void sub_8116B40(u8 taskid) // end oulette ?
DestroyTask(taskid);
}
}
+#endif
void sub_8116BC0(u8 taskid)
{
@@ -2629,6 +3114,9 @@ void sub_811755C(u8 taskid)
void sub_81175C0(u8 taskid)
{
+#if DEBUG
+ unk_203955C[0] = 0;
+#endif
Menu_EraseScreen();
ScriptContext2_Disable();
DestroyTask(taskid);
@@ -2691,6 +3179,386 @@ void Task_Roulette_0(u8 taskid)
}
}
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_812CDE4()
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r3, r0, #0x18\n\
+ add r4, r3, #0\n\
+ ldr r0, ._575 @ gMain\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._572 @cond_branch\n\
+ ldr r1, ._575 + 4 @ gTasks\n\
+ lsl r0, r3, #0x2\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x3\n\
+ add r2, r0, r1\n\
+ ldrh r0, [r2, #0x22]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r2, #0x22]\n\
+ lsl r0, r0, #0x10\n\
+ ldr r1, ._575 + 8 @ 0x27100000\n\
+ cmp r0, r1\n\
+ bne ._573 @cond_branch\n\
+ mov r0, #0x0\n\
+ strh r0, [r2, #0x22]\n\
+._573:\n\
+ ldr r0, ._575 + 12 @ gStringVar1\n\
+ mov r3, #0x22\n\
+ ldsh r1, [r2, r3]\n\
+ b ._584\n\
+._576:\n\
+ .align 2, 0\n\
+._575:\n\
+ .word gMain\n\
+ .word gTasks\n\
+ .word 0x27100000\n\
+ .word gStringVar1\n\
+._572:\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._577 @cond_branch\n\
+ ldr r1, ._580 @ gTasks\n\
+ lsl r0, r3, #0x2\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x3\n\
+ add r2, r0, r1\n\
+ ldrh r0, [r2, #0x22]\n\
+ sub r0, r0, #0x1\n\
+ strh r0, [r2, #0x22]\n\
+ lsl r0, r0, #0x10\n\
+ asr r0, r0, #0x10\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ cmp r0, r1\n\
+ bne ._578 @cond_branch\n\
+ ldr r0, ._580 + 4 @ 0x270f\n\
+ strh r0, [r2, #0x22]\n\
+._578:\n\
+ ldr r0, ._580 + 8 @ gStringVar1\n\
+ mov r3, #0x22\n\
+ ldsh r1, [r2, r3]\n\
+ b ._584\n\
+._581:\n\
+ .align 2, 0\n\
+._580:\n\
+ .word gTasks\n\
+ .word 0x270f\n\
+ .word gStringVar1\n\
+._577:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._582 @cond_branch\n\
+ ldr r1, ._585 @ gTasks\n\
+ lsl r0, r3, #0x2\n\
+ add r0, r0, r3\n\
+ lsl r0, r0, #0x3\n\
+ add r2, r0, r1\n\
+ ldrh r3, [r2, #0x22]\n\
+ add r0, r3, #0\n\
+ add r0, r0, #0xa\n\
+ strh r0, [r2, #0x22]\n\
+ lsl r0, r0, #0x10\n\
+ ldr r1, ._585 + 4 @ 0x270f0000\n\
+ cmp r0, r1\n\
+ ble ._583 @cond_branch\n\
+ ldr r1, ._585 + 8 @ 0xffffd8fb\n\
+ add r0, r3, r1\n\
+ strh r0, [r2, #0x22]\n\
+._583:\n\
+ ldr r0, ._585 + 12 @ gStringVar1\n\
+ mov r3, #0x22\n\
+ ldsh r1, [r2, r3]\n\
+ b ._584\n\
+._586:\n\
+ .align 2, 0\n\
+._585:\n\
+ .word gTasks\n\
+ .word 0x270f0000\n\
+ .word 0xffffd8fb\n\
+ .word gStringVar1\n\
+._582:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._587 @cond_branch\n\
+ ldr r0, ._590 @ gTasks\n\
+ lsl r1, r3, #0x2\n\
+ add r1, r1, r3\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r0\n\
+ ldrh r2, [r1, #0x22]\n\
+ add r0, r2, #0\n\
+ sub r0, r0, #0xa\n\
+ strh r0, [r1, #0x22]\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bge ._588 @cond_branch\n\
+ ldr r3, ._590 + 4 @ 0x2705\n\
+ add r0, r2, r3\n\
+ strh r0, [r1, #0x22]\n\
+._588:\n\
+ ldr r0, ._590 + 8 @ gStringVar1\n\
+ mov r2, #0x22\n\
+ ldsh r1, [r1, r2]\n\
+._584:\n\
+ mov r2, #0x1\n\
+ mov r3, #0x4\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r4, ._590 + 12 @ gStringVar4\n\
+ ldr r1, ._590 + 16 @ gOtherText_Coins\n\
+ add r0, r4, #0\n\
+ bl StringExpandPlaceholders\n\
+ add r0, r4, #0\n\
+ mov r1, #0x9\n\
+ mov r2, #0x1\n\
+ bl MenuPrint_RightAligned\n\
+ b ._596\n\
+._591:\n\
+ .align 2, 0\n\
+._590:\n\
+ .word gTasks\n\
+ .word 0x2705\n\
+ .word gStringVar1\n\
+ .word gStringVar4\n\
+ .word gOtherText_Coins\n\
+._587:\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._592 @cond_branch\n\
+ ldr r0, ._594 @ gSaveBlock1\n\
+ ldr r2, ._594 + 4 @ gTasks\n\
+ lsl r1, r3, #0x2\n\
+ add r1, r1, r3\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r2\n\
+ ldrh r2, [r1, #0x22]\n\
+ ldr r3, ._594 + 8 @ 0x494\n\
+ add r0, r0, r3\n\
+ mov r5, #0x0\n\
+ strh r2, [r0]\n\
+ ldr r0, ._594 + 12 @ Task_Roulette_0\n\
+ str r0, [r1]\n\
+ ldr r0, ._594 + 16 @ gStringVar1\n\
+ mov r2, #0x22\n\
+ ldsh r1, [r1, r2]\n\
+ mov r2, #0x1\n\
+ mov r3, #0x4\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r4, ._594 + 20 @ gStringVar4\n\
+ ldr r1, ._594 + 24 @ gOtherText_Coins\n\
+ add r0, r4, #0\n\
+ bl StringExpandPlaceholders\n\
+ add r0, r4, #0\n\
+ mov r1, #0x9\n\
+ mov r2, #0x1\n\
+ bl MenuPrint_RightAligned\n\
+ ldr r0, ._594 + 28 @ unk_2039560\n\
+ strb r5, [r0]\n\
+ b ._596\n\
+._595:\n\
+ .align 2, 0\n\
+._594:\n\
+ .word gSaveBlock1\n\
+ .word gTasks\n\
+ .word 0x494\n\
+ .word Task_Roulette_0+1\n\
+ .word gStringVar1\n\
+ .word gStringVar4\n\
+ .word gOtherText_Coins\n\
+ .word unk_2039560\n\
+._592:\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._596 @cond_branch\n\
+ ldr r0, ._597 @ gSaveBlock1\n\
+ ldr r2, ._597 + 4 @ gTasks\n\
+ lsl r1, r4, #0x2\n\
+ add r1, r1, r4\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r2\n\
+ ldrh r2, [r1, #0x22]\n\
+ ldr r3, ._597 + 8 @ 0x494\n\
+ add r0, r0, r3\n\
+ strh r2, [r0]\n\
+ ldr r0, ._597 + 12 @ Task_Roulette_0\n\
+ str r0, [r1]\n\
+ ldr r0, ._597 + 16 @ gStringVar1\n\
+ mov r2, #0x22\n\
+ ldsh r1, [r1, r2]\n\
+ mov r2, #0x1\n\
+ mov r3, #0x4\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r4, ._597 + 20 @ gStringVar4\n\
+ ldr r1, ._597 + 24 @ gOtherText_Coins\n\
+ add r0, r4, #0\n\
+ bl StringExpandPlaceholders\n\
+ add r0, r4, #0\n\
+ mov r1, #0x9\n\
+ mov r2, #0x1\n\
+ bl MenuPrint_RightAligned\n\
+ ldr r1, ._597 + 28 @ unk_2039560\n\
+ mov r0, #0x1\n\
+ strb r0, [r1]\n\
+._596:\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._598:\n\
+ .align 2, 0\n\
+._597:\n\
+ .word gSaveBlock1\n\
+ .word gTasks\n\
+ .word 0x494\n\
+ .word Task_Roulette_0+1\n\
+ .word gStringVar1\n\
+ .word gStringVar4\n\
+ .word gOtherText_Coins\n\
+ .word unk_2039560");
+}
+
+__attribute__((naked))
+void debug_sub_812CFE8()
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r2, ._600 @ gTasks\n\
+ lsl r1, r0, #0x2\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x3\n\
+ add r5, r1, r2\n\
+ ldr r0, ._600 + 4 @ gSaveBlock1\n\
+ ldr r1, ._600 + 8 @ 0x494\n\
+ add r0, r0, r1\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r5, #0x22]\n\
+ bl Random\n\
+ mov r1, #0x1\n\
+ and r1, r1, r0\n\
+ cmp r1, #0\n\
+ beq ._599 @cond_branch\n\
+ ldr r0, ._600 + 12 @ gSpecialVar_0x8004\n\
+ ldrh r1, [r0]\n\
+ mov r2, #0x80\n\
+ orr r1, r1, r2\n\
+ strh r1, [r0]\n\
+._599:\n\
+ ldr r0, ._600 + 16 @ gStringVar1\n\
+ mov r2, #0x22\n\
+ ldsh r1, [r5, r2]\n\
+ mov r2, #0x1\n\
+ mov r3, #0x4\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r4, ._600 + 20 @ gStringVar4\n\
+ ldr r1, ._600 + 24 @ gOtherText_Coins\n\
+ add r0, r4, #0\n\
+ bl StringExpandPlaceholders\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ mov r2, #0x9\n\
+ mov r3, #0x3\n\
+ bl Menu_DrawStdWindowFrame\n\
+ add r0, r4, #0\n\
+ mov r1, #0x9\n\
+ mov r2, #0x1\n\
+ bl MenuPrint_RightAligned\n\
+ mov r0, #0x0\n\
+ mov r1, #0xe\n\
+ mov r2, #0x1d\n\
+ mov r3, #0x13\n\
+ bl Menu_DrawStdWindowFrame\n\
+ ldr r0, ._600 + 28 @ gUnknown_Debug_0842510D\n\
+ mov r1, #0x1\n\
+ mov r2, #0xf\n\
+ bl Menu_PrintText\n\
+ ldr r0, ._600 + 32 @ debug_sub_812CDE4\n\
+ str r0, [r5]\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._601:\n\
+ .align 2, 0\n\
+._600:\n\
+ .word gTasks\n\
+ .word gSaveBlock1\n\
+ .word 0x494\n\
+ .word gSpecialVar_0x8004\n\
+ .word gStringVar1\n\
+ .word gStringVar4\n\
+ .word gOtherText_Coins\n\
+ .word gUnknown_Debug_0842510D\n\
+ .word debug_sub_812CDE4+1");
+}
+
+#endif
+
+#if DEBUG
+__attribute__((naked))
+void PlayRoulette(void)
+{
+ asm("\
+ push {lr}\n\
+ bl ScriptContext2_Enable\n\
+ ldr r1, ._604 @ unk_2039560\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+ ldr r0, ._604 + 4 @ unk_203955C\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._602 @cond_branch\n\
+ ldr r0, ._604 + 8 @ debug_sub_812CFE8\n\
+ mov r1, #0x0\n\
+ bl CreateTask\n\
+ b ._603\n\
+._605:\n\
+ .align 2, 0\n\
+._604:\n\
+ .word unk_2039560\n\
+ .word unk_203955C\n\
+ .word debug_sub_812CFE8+1\n\
+._602:\n\
+ ldr r0, ._606 @ Task_Roulette_0\n\
+ mov r1, #0x0\n\
+ bl CreateTask\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ ldr r2, ._606 + 4 @ gTasks\n\
+ lsl r1, r0, #0x2\n\
+ add r1, r1, r0\n\
+ lsl r1, r1, #0x3\n\
+ add r1, r1, r2\n\
+ ldr r0, ._606 + 8 @ gSaveBlock1\n\
+ ldr r2, ._606 + 12 @ 0x494\n\
+ add r0, r0, r2\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1, #0x22]\n\
+._603:\n\
+ pop {r0}\n\
+ bx r0\n\
+._607:\n\
+ .align 2, 0\n\
+._606:\n\
+ .word Task_Roulette_0+1\n\
+ .word gTasks\n\
+ .word gSaveBlock1\n\
+ .word 0x494");
+}
+#else
void PlayRoulette(void)
{
u8 taskid;
@@ -2698,6 +3566,7 @@ void PlayRoulette(void)
taskid = CreateTask(&Task_Roulette_0, 0x0);
gTasks[taskid].data[0xD] = gSaveBlock1.coins;
}
+#endif
void sub_8117838(u8 r0)
{
@@ -3591,6 +4460,99 @@ void sub_8118D2C(struct Sprite *sprite)
}
}
+#if DEBUG
+__attribute__((naked))
+void debug_sub_812E698()
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ add r7, r0, #0\n\
+ bl sub_8118724\n\
+ mov r0, #0x0\n\
+ strh r0, [r7, #0x32]\n\
+ add r0, r7, #0\n\
+ bl sub_81186B8\n\
+ mov r0, #0x38\n\
+ bl m4aSongNumStart\n\
+ bl Random\n\
+ mov r1, #0x1\n\
+ and r1, r1, r0\n\
+ cmp r1, #0\n\
+ beq ._837 @cond_branch\n\
+ ldr r4, ._839 @ 0x2019000\n\
+ add r1, r4, #0\n\
+ add r1, r1, #0x8c\n\
+ ldr r0, ._839 + 4 @ 0x0\n\
+ str r0, [r1]\n\
+ add r0, r4, #0\n\
+ add r0, r0, #0x7e\n\
+ ldrb r0, [r0]\n\
+ add r0, r0, #0x1\n\
+ mov r1, #0xc\n\
+ bl __modsi3\n\
+ add r1, r4, #0\n\
+ add r1, r1, #0x7f\n\
+ strb r0, [r1]\n\
+ add r1, r4, #0\n\
+ ldr r4, ._839 + 8 @ gUnknown_083F8DF4\n\
+ b ._838\n\
+._840:\n\
+ .align 2, 0\n\
+._839:\n\
+ .word 0x2019000\n\
+ .word 0x0\n\
+ .word gUnknown_083F8DF4\n\
+._837:\n\
+ ldr r6, ._841 @ 0x2019000\n\
+ add r5, r6, #0\n\
+ add r5, r5, #0x8c\n\
+ ldr r4, ._841 + 4 @ gUnknown_083F8DF4\n\
+ ldrb r0, [r6, #0x4]\n\
+ lsl r0, r0, #0x1e\n\
+ lsr r0, r0, #0x19\n\
+ add r1, r4, #0\n\
+ add r1, r1, #0x1c\n\
+ add r0, r0, r1\n\
+ ldr r1, [r0]\n\
+ add r0, r1, #0\n\
+ bl __addsf3\n\
+ str r0, [r5]\n\
+ add r0, r6, #0\n\
+ add r0, r0, #0x7e\n\
+ ldrb r0, [r0]\n\
+ add r1, r6, #0\n\
+ add r1, r1, #0x7f\n\
+ strb r0, [r1]\n\
+ add r1, r6, #0\n\
+._838:\n\
+ mov r0, #0x1\n\
+ strh r0, [r7, #0x2e]\n\
+ ldrb r0, [r1, #0x4]\n\
+ lsl r0, r0, #0x1e\n\
+ lsr r0, r0, #0x19\n\
+ add r0, r0, r4\n\
+ ldrb r0, [r0, #0x2]\n\
+ strh r0, [r7, #0x32]\n\
+ add r1, r1, #0x98\n\
+ ldr r0, ._841 + 8 @ 0x3dae147b\n\
+ str r0, [r1]\n\
+ ldr r0, ._841 + 12 @ sub_8118D2C\n\
+ str r0, [r7, #0x1c]\n\
+ mov r0, #0x5\n\
+ strh r0, [r7, #0x30]\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._842:\n\
+ .align 2, 0\n\
+._841:\n\
+ .word 0x2019000\n\
+ .word gUnknown_083F8DF4\n\
+ .word 0x3dae147b\n\
+ .word sub_8118D2C+1");
+}
+#endif
+
#ifdef NONMATCHING
void sub_8118DE4(struct Sprite *sprite)
{
@@ -3866,6 +4828,137 @@ _08118F88: .4byte sub_8118D2C\n\
}
#endif
+#if DEBUG
+__attribute__((naked))
+void sub_8118F8C(struct Sprite *sprite)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6, r7}\n\
+ add r6, r0, #0\n\
+ bl sub_8118724\n\
+ ldr r5, ._868 @ 0x2019000\n\
+ mov r0, #0x8c\n\
+ add r0, r0, r5\n\
+ mov r8, r0\n\
+ ldr r0, [r0]\n\
+ ldr r1, ._868 + 4 @ 0x3f000000\n\
+ bl __gtsf2\n\
+ cmp r0, #0\n\
+ bgt ._874 @cond_branch\n\
+ add r0, r6, #0\n\
+ bl sub_81186B8\n\
+ add r0, r6, #0\n\
+ bl sub_81186E8\n\
+ lsl r0, r0, #0x10\n\
+ cmp r0, #0\n\
+ bne ._864 @cond_branch\n\
+ add r1, r5, #0\n\
+ add r1, r1, #0x90\n\
+ ldr r0, ._868 + 8 @ 0x0\n\
+ str r0, [r1]\n\
+ ldr r1, ._868 + 12 @ gUnknown_083F8DF4\n\
+ mov r9, r1\n\
+ ldrb r0, [r5, #0x4]\n\
+ lsl r7, r0, #0x1e\n\
+ lsr r0, r7, #0x19\n\
+ add r0, r0, r9\n\
+ mov r4, #0x3\n\
+ ldsb r4, [r0, r4]\n\
+ add r0, r4, #0\n\
+ bl __floatsisf\n\
+ add r5, r0, #0\n\
+ cmp r4, #0\n\
+ bge ._865 @cond_branch\n\
+ ldr r1, ._868 + 16 @ 0x43800000\n\
+ bl __addsf3\n\
+ add r5, r0, #0\n\
+._865:\n\
+ lsr r0, r7, #0x19\n\
+ add r0, r0, r9\n\
+ ldrb r0, [r0, #0x4]\n\
+ add r0, r0, #0x1\n\
+ bl __floatsisf\n\
+ add r1, r0, #0\n\
+ add r0, r5, #0\n\
+ bl __divsf3\n\
+ add r1, r0, #0\n\
+ mov r2, r8\n\
+ ldr r0, [r2]\n\
+ bl __subsf3\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ mov r0, #0x4\n\
+ strh r0, [r6, #0x30]\n\
+ ldr r0, ._868 + 20 @ unk_2039560\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._866 @cond_branch\n\
+ ldr r0, ._868 + 24 @ debug_sub_812E698\n\
+ str r0, [r6, #0x1c]\n\
+ b ._874\n\
+._869:\n\
+ .align 2, 0\n\
+._868:\n\
+ .word 0x2019000\n\
+ .word 0x3f000000\n\
+ .word 0x0\n\
+ .word gUnknown_083F8DF4\n\
+ .word 0x43800000\n\
+ .word unk_2039560\n\
+ .word debug_sub_812E698+1\n\
+._866:\n\
+ ldr r0, ._871 @ sub_8118DE4\n\
+ str r0, [r6, #0x1c]\n\
+ b ._874\n\
+._872:\n\
+ .align 2, 0\n\
+._871:\n\
+ .word sub_8118DE4+1\n\
+._864:\n\
+ add r6, r5, #0\n\
+ add r6, r6, #0x90\n\
+ ldr r0, [r6]\n\
+ ldr r4, ._875 @ 0x0\n\
+ add r1, r4, #0\n\
+ bl __nesf2\n\
+ cmp r0, #0\n\
+ beq ._874 @cond_branch\n\
+ mov r2, r8\n\
+ ldr r0, [r2]\n\
+ add r1, r4, #0\n\
+ bl __ltsf2\n\
+ cmp r0, #0\n\
+ bge ._874 @cond_branch\n\
+ str r4, [r6]\n\
+ mov r0, r8\n\
+ str r4, [r0]\n\
+ add r4, r5, #0\n\
+ add r4, r4, #0x98\n\
+ ldr r0, [r4]\n\
+ bl __extendsfdf2\n\
+ ldr r2, ._875 + 4 @ 0x3ff33333\n\
+ ldr r3, ._875 + 8 @ 0x33333333\n\
+ bl __divdf3\n\
+ bl __truncdfsf2\n\
+ str r0, [r4]\n\
+._874:\n\
+ pop {r3, r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._876:\n\
+ .align 2, 0\n\
+._875:\n\
+ .word 0x0\n\
+ .word 0x3ff33333\n\
+ .word 0x33333333");
+}
+#else
void sub_8118F8C(struct Sprite *sprite)
{
sub_8118724(sprite);
@@ -3896,6 +4989,7 @@ void sub_8118F8C(struct Sprite *sprite)
}
}
}
+#endif
void sub_8119088(struct Sprite *sprite)
{
diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c
index 2cb68ccf1..24cbcb9c0 100644
--- a/src/scene/berry_blender.c
+++ b/src/scene/berry_blender.c
@@ -274,12 +274,12 @@ static void sub_8051B18(void);
static void sub_805123C(void);
static void sub_8050954(void);
static bool8 Blender_PrintBlendingRanking(void);
-static bool8 Blender_PrintBlendingResults(void);
+bool8 Blender_PrintBlendingResults(void);
static void sub_80510E8(void);
static void sub_8050E30(void);
static void sub_805197C(u16 a0, u16 a1);
-static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst);
-static void sub_8052BD0(u8 taskID);
+/*static*/ void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst);
+/*static*/ void sub_8052BD0(u8 taskID);
static void sub_8052AF8(void);
static void sub_804F8C8(u8 taskID);
static void sub_804F9F4(u8 taskID);
@@ -2411,7 +2411,7 @@ static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct
Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4);
}
-static void sub_8050760(void)
+/*static*/ void sub_8050760(void)
{
u32 frames = (u16)(gBerryBlenderData->gameFrameTime);
u16 max_RPM = gBerryBlenderData->max_RPM;
@@ -3270,13 +3270,13 @@ static void sub_8051C04(struct Sprite* sprite)
sprite->pos2.y = -(gBerryBlenderData->field_146);
}
-static void Blender_TrySettingRecord(void)
+/*static*/ void Blender_TrySettingRecord(void)
{
if (gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] < gBerryBlenderData->max_RPM)
gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] = gBerryBlenderData->max_RPM;
}
-static bool8 Blender_PrintBlendingResults(void)
+bool8 Blender_PrintBlendingResults(void)
{
u16 i;
@@ -3395,6 +3395,11 @@ static bool8 Blender_PrintBlendingResults(void)
Blender_CalculatePokeblock(gBerryBlenderData->blendedBerries, &pokeblock, gBerryBlenderData->playersNo, flavours, gBerryBlenderData->max_RPM);
Blender_PrintMadePokeblockString(&pokeblock, gBerryBlenderData->stringVar);
CreateTask(sub_8052BD0, 6);
+#if DEBUG
+ ConvertIntToHexStringN(text[0], sub_8007E40(), 0, 4);
+ StringAppend(text[0], gUnknown_08216249);
+ StringAppend(gBerryBlenderData->stringVar, text[0]);
+#endif
MenuPrintMessage(gBerryBlenderData->stringVar, 1, 15);
RemoveBagItem(gSpecialVar_ItemId, 1);
sub_810CA34(&pokeblock);
@@ -3411,7 +3416,7 @@ static bool8 Blender_PrintBlendingResults(void)
return FALSE;
}
-static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst)
+/*static*/ void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst)
{
u8 text[12];
u8 flavourLvl, feel;
@@ -3834,7 +3839,7 @@ void ShowBerryBlenderRecordWindow(void)
}
}
-static void sub_8052BD0(u8 taskID)
+/*static*/ void sub_8052BD0(u8 taskID)
{
if (gTasks[taskID].data[0] == 0)
{
diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c
index 7faa8d844..114505e4d 100644
--- a/src/scene/cable_car.c
+++ b/src/scene/cable_car.c
@@ -6,6 +6,7 @@
#include "palette.h"
#include "random.h"
#include "main.h"
+#include "menu.h"
#include "script.h"
#include "task.h"
#include "sound.h"
@@ -103,6 +104,31 @@ static void sub_81248AC(u8);
// .rodata
+#if DEBUG
+
+u8 debug_sub_8138D74(void);
+u8 debug_sub_8138D8C(void);
+u8 debug_sub_8138C14(void);
+u8 debug_sub_8138C34(void);
+u8 debug_sub_810CD9C(void);
+
+const u8 Str_842DBD0[] = _("CABLE CAR U");
+const u8 Str_842DBDC[] = _("CABLE CAR D");
+const u8 Str_842DBE8[] = _("ROULETTE1");
+const u8 Str_842DBF2[] = _("ROULETTE3");
+const u8 Str_842DBFC[] = _("View a MAIL");
+
+const struct MenuAction gUnkDebug4Menu[] =
+{
+ {Str_842DBD0, debug_sub_8138D74},
+ {Str_842DBDC, debug_sub_8138D8C},
+ {Str_842DBE8, debug_sub_8138C14},
+ {Str_842DBF2, debug_sub_8138C34},
+ {Str_842DBFC, debug_sub_810CD9C},
+};
+
+#endif
+
static const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz");
static const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz");
@@ -183,6 +209,158 @@ static const struct SpriteTemplate gSpriteTemplate_8401D40[] = {
// .text
+#if DEBUG
+
+__attribute__((naked))
+u8 debug_sub_8138C14(void)
+{
+ asm("\n\
+ push {lr}\n\
+ ldr r0, ._1 @ unk_203955C\n\
+ mov r1, #0x1\n\
+ strb r1, [r0]\n\
+ ldr r0, ._1 + 4 @ MauvilleCity_GameCorner_EventScript_1C407E\n\
+ bl ScriptContext1_SetupScript\n\
+ bl CloseMenu\n\
+ mov r0, #0x1\n\
+ pop {r1}\n\
+ bx r1\n\
+._2:\n\
+ .align 2, 0\n\
+._1:\n\
+ .word unk_203955C\n\
+ .word MauvilleCity_GameCorner_EventScript_1C407E");
+}
+
+__attribute__((naked))
+u8 debug_sub_8138C34(void)
+{
+ asm("\n\
+ push {lr}\n\
+ ldr r0, ._3 @ unk_203955C\n\
+ mov r1, #0x1\n\
+ strb r1, [r0]\n\
+ ldr r0, ._3 + 4 @ MauvilleCity_GameCorner_EventScript_1C40AC\n\
+ bl ScriptContext1_SetupScript\n\
+ bl CloseMenu\n\
+ mov r0, #0x1\n\
+ pop {r1}\n\
+ bx r1\n\
+._4:\n\
+ .align 2, 0\n\
+._3:\n\
+ .word unk_203955C\n\
+ .word MauvilleCity_GameCorner_EventScript_1C40AC");
+}
+
+__attribute__((naked))
+u8 debug_sub_8138C54(void)
+{
+ asm("\n\
+ push {r4, lr}\n\
+ ldr r4, ._10 @ gMain\n\
+ ldrh r0, [r4, #0x2e]\n\
+ cmp r0, #0x40\n\
+ bne ._5 @cond_branch\n\
+ mov r0, #0x1\n\
+ neg r0, r0\n\
+ bl Menu_MoveCursor\n\
+._5:\n\
+ ldrh r0, [r4, #0x2e]\n\
+ cmp r0, #0x80\n\
+ bne ._6 @cond_branch\n\
+ mov r0, #0x1\n\
+ bl Menu_MoveCursor\n\
+._6:\n\
+ ldrh r1, [r4, #0x2e]\n\
+ cmp r1, #0x1\n\
+ beq ._7 @cond_branch\n\
+ ldr r0, ._10 + 4 @ 0x101\n\
+ cmp r1, r0\n\
+ bne ._8 @cond_branch\n\
+ ldr r1, ._10 + 8 @ gSpecialVar_0x8004\n\
+ mov r0, #0x1\n\
+ strh r0, [r1]\n\
+._7:\n\
+ ldr r4, ._10 + 12 @ gUnkDebug4Menu\n\
+ bl Menu_GetCursorPos\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x15\n\
+ add r4, r4, #0x4\n\
+ add r0, r0, r4\n\
+ ldr r0, [r0]\n\
+ bl _call_via_r0\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ b ._13\n\
+._11:\n\
+ .align 2, 0\n\
+._10:\n\
+ .word gMain\n\
+ .word 0x101\n\
+ .word gSpecialVar_0x8004\n\
+ .word gUnkDebug4Menu\n\
+._8:\n\
+ cmp r1, #0x2\n\
+ beq ._12 @cond_branch\n\
+ mov r0, #0x0\n\
+ b ._13\n\
+._12:\n\
+ bl CloseMenu\n\
+ mov r0, #0x1\n\
+._13:\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1");
+}
+
+__attribute__((naked))
+u8 debug_sub_8138CC4(void)
+{
+ asm("\n\
+ push {lr}\n\
+ add sp, sp, #0xfffffff8\n\
+ ldr r1, ._14 @ gSpecialVar_0x8004\n\
+ mov r0, #0x0\n\
+ strh r0, [r1]\n\
+ bl Menu_EraseScreen\n\
+ mov r0, #0x13\n\
+ mov r1, #0x0\n\
+ mov r2, #0x1d\n\
+ mov r3, #0xc\n\
+ bl Menu_DrawStdWindowFrame\n\
+ ldr r3, ._14 + 4 @ gUnkDebug4Menu\n\
+ mov r0, #0x14\n\
+ mov r1, #0x1\n\
+ mov r2, #0x5\n\
+ bl Menu_PrintItems\n\
+ mov r0, #0x0\n\
+ str r0, [sp]\n\
+ mov r0, #0x8\n\
+ str r0, [sp, #0x4]\n\
+ mov r0, #0x0\n\
+ mov r1, #0x14\n\
+ mov r2, #0x1\n\
+ mov r3, #0x5\n\
+ bl InitMenu\n\
+ ldr r1, ._14 + 8 @ gMenuCallback\n\
+ ldr r0, ._14 + 12 @ debug_sub_8138C54\n\
+ str r0, [r1]\n\
+ mov r0, #0x0\n\
+ add sp, sp, #0x8\n\
+ pop {r1}\n\
+ bx r1\n\
+._15:\n\
+ .align 2, 0\n\
+._14:\n\
+ .word gSpecialVar_0x8004\n\
+ .word gUnkDebug4Menu\n\
+ .word gMenuCallback\n\
+ .word debug_sub_8138C54+1");
+}
+
+#endif
+
static void CableCarTask1(u8 taskId)
{
if (!gPaletteFade.active)
@@ -199,6 +377,46 @@ void CableCar(void)
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
}
+#if DEBUG
+
+__attribute__((naked))
+u8 debug_sub_8138D74(void)
+{
+ asm("\n\
+ push {lr}\n\
+ ldr r1, ._21 @ gSpecialVar_0x8004\n\
+ mov r0, #0x0\n\
+ strh r0, [r1]\n\
+ bl CloseMenu\n\
+ bl CableCar\n\
+ pop {r0}\n\
+ bx r0\n\
+._22:\n\
+ .align 2, 0\n\
+._21:\n\
+ .word gSpecialVar_0x8004");
+}
+
+__attribute__((naked))
+u8 debug_sub_8138D8C(void)
+{
+ asm("\n\
+ push {lr}\n\
+ ldr r1, ._23 @ gSpecialVar_0x8004\n\
+ mov r0, #0x1\n\
+ strh r0, [r1]\n\
+ bl CloseMenu\n\
+ bl CableCar\n\
+ pop {r0}\n\
+ bx r0\n\
+._24:\n\
+ .align 2, 0\n\
+._23:\n\
+ .word gSpecialVar_0x8004");
+}
+
+#endif
+
static void CableCarMainCallback_Setup(void)
{
u8 i;
diff --git a/src/scene/cute_sketch.c b/src/scene/cute_sketch.c
index 5317bc334..2af990290 100644
--- a/src/scene/cute_sketch.c
+++ b/src/scene/cute_sketch.c
@@ -29,6 +29,350 @@ void sub_80FD1C8(u16);
u16 sub_80FD39C(u16*);
u16 sub_80FD68C(u16*, u16*, u16*);
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_8110CCC(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, #0x0\n\
+ mov r1, #0x0\n\
+ ldr r2, ._5 @ gUnknown_083E79C0\n\
+ ldr r6, ._5 + 4 @ \n\
+._7:\n\
+ lsl r0, r1, #0x3\n\
+ add r4, r0, r2\n\
+ ldrh r0, [r6, #0x1c]\n\
+ ldrh r3, [r4, #0x4]\n\
+ cmp r0, r3\n\
+ bne ._1 @cond_branch\n\
+ ldrh r0, [r4, #0x6]\n\
+ bl FlagGet\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._4 @cond_branch\n\
+ ldrb r0, [r6, #0x1f]\n\
+ ldr r1, [r4]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ bl StringLength\n\
+ mov r1, #0xc\n\
+ sub r1, r1, r0\n\
+ lsl r1, r1, #0x10\n\
+ lsr r5, r1, #0x10\n\
+ cmp r1, #0\n\
+ bge ._3 @cond_branch\n\
+ mov r5, #0x0\n\
+._3:\n\
+ mov r7, #0x1\n\
+ mov r0, #0x10\n\
+ mov r1, #0xe\n\
+ mov r2, #0x1d\n\
+ mov r3, #0x13\n\
+ bl Menu_DrawStdWindowFrame\n\
+ add r0, r6, #0\n\
+ add r0, r0, #0x8\n\
+ mov r1, #0x11\n\
+ mov r2, #0xf\n\
+ bl Menu_PrintText\n\
+ ldrb r0, [r6, #0x1f]\n\
+ ldr r1, [r4]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ add r1, r5, #0\n\
+ add r1, r1, #0x11\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ mov r2, #0x11\n\
+ bl Menu_PrintText\n\
+ b ._4\n\
+._6:\n\
+ .align 2, 0\n\
+._5:\n\
+ .word gUnknown_083E79C0\n\
+ .word +0x2000000\n\
+._1:\n\
+ add r0, r1, #1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r1, r0, #0x10\n\
+ cmp r1, #0\n\
+ beq ._7 @cond_branch\n\
+._4:\n\
+ cmp r7, #0\n\
+ bne ._8 @cond_branch\n\
+ mov r0, #0x10\n\
+ mov r1, #0x10\n\
+ mov r2, #0x1d\n\
+ mov r3, #0x13\n\
+ bl Menu_DrawStdWindowFrame\n\
+ ldr r0, ._9 @ \n\
+ mov r1, #0x11\n\
+ mov r2, #0x11\n\
+ bl Menu_PrintText\n\
+ mov r0, #0x10\n\
+ mov r1, #0xe\n\
+ mov r2, #0x1d\n\
+ mov r3, #0xf\n\
+ bl Menu_EraseWindowRect\n\
+._8:\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._10:\n\
+ .align 2, 0\n\
+._9:\n\
+ .word +0x2000008");
+}
+
+__attribute__((naked))
+void debug_sub_8110D84(void)
+{
+ asm("\
+ push {r4, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._13 @ \n\
+ ldrh r0, [r0, #0x4]\n\
+ cmp r0, #0x7\n\
+ bls ._11 @cond_branch\n\
+ b ._65\n\
+._11:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._13 + 4 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._14:\n\
+ .align 2, 0\n\
+._13:\n\
+ .word +0x2000000\n\
+ .word ._15\n\
+._15:\n\
+ .word ._16\n\
+ .word ._17\n\
+ .word ._18\n\
+ .word ._19\n\
+ .word ._20\n\
+ .word ._21\n\
+ .word ._22\n\
+ .word ._23\n\
+._16:\n\
+ mov r0, #0x1\n\
+ neg r0, r0\n\
+ mov r1, #0x0\n\
+ str r1, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r1, ._25 @ \n\
+ ldrh r0, [r1, #0x4]\n\
+ add r0, r0, #0x1\n\
+ b ._62\n\
+._26:\n\
+ .align 2, 0\n\
+._25:\n\
+ .word +0x2000000\n\
+._17:\n\
+ bl UpdatePaletteFade\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._27 @cond_branch\n\
+ b ._65\n\
+._27:\n\
+ ldr r1, ._30 @ \n\
+ ldrh r0, [r1, #0x4]\n\
+ add r0, r0, #0x1\n\
+ b ._62\n\
+._31:\n\
+ .align 2, 0\n\
+._30:\n\
+ .word +0x2000000\n\
+._18:\n\
+ bl sub_80FAB60\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x3\n\
+ beq ._32 @cond_branch\n\
+ cmp r0, #0x3\n\
+ bgt ._33 @cond_branch\n\
+ b ._65\n\
+._33:\n\
+ cmp r0, #0x4\n\
+ beq ._35 @cond_branch\n\
+ cmp r0, #0x5\n\
+ beq ._36 @cond_branch\n\
+ b ._65\n\
+._35:\n\
+ ldr r4, ._41 @ \n\
+ ldrb r0, [r4, #0x1e]\n\
+ cmp r0, #0\n\
+ bne ._38 @cond_branch\n\
+ b ._65\n\
+._38:\n\
+ mov r0, #0x5\n\
+ bl m4aSongNumStart\n\
+ ldr r1, ._41 + 4 @ \n\
+ add r0, r4, r1\n\
+ mov r1, #0x1\n\
+ strb r1, [r0]\n\
+ ldr r0, ._41 + 8 @ \n\
+ bl sub_80FC244\n\
+ b ._65\n\
+._42:\n\
+ .align 2, 0\n\
+._41:\n\
+ .word +0x2000000\n\
+ .word 0xa6e\n\
+ .word sub_80FC69C+1\n\
+._36:\n\
+ mov r0, #0x5\n\
+ bl m4aSongNumStart\n\
+ mov r0, #0x1\n\
+ neg r0, r0\n\
+ mov r1, #0x0\n\
+ str r1, [sp]\n\
+ mov r2, #0x0\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r1, ._44 @ \n\
+ ldrh r0, [r1, #0x4]\n\
+ add r0, r0, #0x1\n\
+ b ._62\n\
+._45:\n\
+ .align 2, 0\n\
+._44:\n\
+ .word +0x2000000\n\
+._19:\n\
+ bl UpdatePaletteFade\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._65 @cond_branch\n\
+ ldr r0, ._48 @ sub_805469C\n\
+ bl SetMainCallback2\n\
+ b ._65\n\
+._49:\n\
+ .align 2, 0\n\
+._48:\n\
+ .word sub_805469C+1\n\
+._20:\n\
+ bl sub_80FAB60\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._50 @cond_branch\n\
+._32:\n\
+ bl debug_sub_8110CCC\n\
+ b ._65\n\
+._50:\n\
+ ldr r0, ._54 @ gMain\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._65 @cond_branch\n\
+ bl sub_80FBCA0\n\
+ bl sub_80FAEC4\n\
+ ldr r1, ._54 + 4 @ \n\
+ ldrh r0, [r1, #0x4]\n\
+ add r0, r0, #0x1\n\
+ b ._62\n\
+._55:\n\
+ .align 2, 0\n\
+._54:\n\
+ .word gMain\n\
+ .word +0x2000000\n\
+._21:\n\
+ bl sub_80FAFC0\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._65 @cond_branch\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ bl CreateRegionMapCursor\n\
+ ldr r1, ._58 @ \n\
+ ldrh r0, [r1, #0x4]\n\
+ add r0, r0, #0x1\n\
+ b ._62\n\
+._59:\n\
+ .align 2, 0\n\
+._58:\n\
+ .word +0x2000000\n\
+._22:\n\
+ bl sub_80FAB60\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._60 @cond_branch\n\
+ bl debug_sub_8110CCC\n\
+._60:\n\
+ ldr r0, ._63 @ gMain\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._65 @cond_branch\n\
+ bl sub_80FBCA0\n\
+ bl sub_80FAEC4\n\
+ ldr r1, ._63 + 4 @ \n\
+ ldrh r0, [r1, #0x4]\n\
+ add r0, r0, #0x1\n\
+ b ._62\n\
+._64:\n\
+ .align 2, 0\n\
+._63:\n\
+ .word gMain\n\
+ .word +0x2000000\n\
+._23:\n\
+ bl sub_80FAFC0\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._65 @cond_branch\n\
+ mov r0, #0x0\n\
+ mov r1, #0x0\n\
+ bl CreateRegionMapCursor\n\
+ ldr r1, ._66 @ \n\
+ mov r0, #0x3\n\
+._62:\n\
+ strh r0, [r1, #0x4]\n\
+._65:\n\
+ add sp, sp, #0x4\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+._67:\n\
+ .align 2, 0\n\
+._66:\n\
+ .word +0x2000000");
+}
+
+__attribute__((naked))
+void debug_sub_8110F28(void)
+{
+ asm("\
+ push {lr}\n\
+ bl CB2_InitFlyRegionMap\n\
+ ldr r0, ._69 @ gMain\n\
+ ldr r1, [r0, #0x4]\n\
+ ldr r0, ._69 + 4 @ CB2_FlyRegionMap\n\
+ cmp r1, r0\n\
+ bne ._68 @cond_branch\n\
+ bl sub_80FBF94\n\
+ ldr r0, ._69 + 8 @ debug_sub_8110D84\n\
+ bl sub_80FC244\n\
+ bl debug_sub_8110CCC\n\
+._68:\n\
+ pop {r0}\n\
+ bx r0\n\
+._70:\n\
+ .align 2, 0\n\
+._69:\n\
+ .word gMain\n\
+ .word CB2_FlyRegionMap+1\n\
+ .word debug_sub_8110D84+1");
+}
+
+#endif
+
void sub_80FC7A0(struct Unk03005E20* info)
{
gUnknown_03005DEC = info->var_4;
diff --git a/src/scene/new_game.c b/src/scene/new_game.c
index 0279f99c6..e64dc91e3 100644
--- a/src/scene/new_game.c
+++ b/src/scene/new_game.c
@@ -1,4 +1,7 @@
#include "global.h"
+#include "constants/maps.h"
+#include "constants/species.h"
+#include "clock.h"
#include "new_game.h"
#include "battle_records.h"
#include "berry.h"
@@ -20,6 +23,7 @@
#include "pokemon_storage_system.h"
#include "random.h"
#include "roamer.h"
+#include "script_pokemon_80C4.h"
#include "overworld.h"
#include "rtc.h"
#include "script.h"
@@ -42,6 +46,18 @@ static const struct ContestWinner sEmptyMuseumPortrait =
.trainerName = {EOS},
};
+#if DEBUG
+const s8 gUnknown_Debug_0823C788[][2] =
+{
+ { MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK) },
+ { MAP_GROUP(OLDALE_TOWN_POKEMON_CENTER_2F), MAP_NUM(OLDALE_TOWN_POKEMON_CENTER_2F) },
+ { MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN) },
+ { MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F) }
+};
+
+const u8 gUnknown_Debug_0823C790[] = _("KRÖTE");
+#endif
+
void write_word_to_mem(u32 var, u8 *dataPtr)
{
dataPtr[0] = var;
@@ -94,6 +110,30 @@ void ZeroBattleTowerData(void)
CpuFill32(0, &gSaveBlock2.battleTower, sizeof(gSaveBlock2.battleTower));
}
+#if DEBUG
+void debug_sub_8052E04()
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_Debug_0823C788[i][0] == gSaveBlock1.location.mapGroup &&
+ gUnknown_Debug_0823C788[i][1] == gSaveBlock1.location.mapNum)
+ {
+ break;
+ }
+ }
+
+ i++;
+ if (i >= 4)
+ {
+ i = 0;
+ }
+
+ Overworld_SetWarpDestination(gUnknown_Debug_0823C788[i][0], gUnknown_Debug_0823C788[i][1], -1, -1, -1);
+}
+#endif
+
void WarpToTruck(void)
{
Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck
@@ -109,6 +149,9 @@ void ClearSav2(void)
void sub_8052E4C(void)
{
gDifferentSaveFile = 0;
+#if DEBUG
+ gUnknown_020297ED = 0;
+#endif
sub_808C0A0();
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
@@ -161,3 +204,33 @@ void NewGameInitData(void)
WarpToTruck();
ScriptContext2_RunNewScript(gUnknown_0819FA81);
}
+
+#if DEBUG
+extern void debug_sub_80A3904(void);
+extern void debug_sub_80A3714(void);
+extern void debug_sub_8120F98(void);
+extern void unref_sub_8070F90(void);
+
+void debug_sub_8057508(bool32 arg0)
+{
+ gUnknown_020297ED = 1;
+ NewGameInitData();
+ gSaveBlock1.money = 999999;
+ FlagSet(FLAG_SYS_POKEMON_GET);
+ FlagSet(FLAG_SYS_POKEDEX_GET);
+ FlagSet(FLAG_SYS_POKENAV_GET);
+ FlagSet(FLAG_SYS_B_DASH);
+ ScriptGiveMon(SPECIES_TREECKO, 99, 0, 0, 0, 0);
+
+ if (arg0 == TRUE)
+ SetMonData(&gPlayerParty[0], MON_DATA_NICKNAME, gUnknown_Debug_0823C790);
+
+ debug_sub_80A3904();
+ debug_sub_80A3714();
+ debug_sub_8120F98();
+ FlagSet(FLAG_SYS_HIPSTER_MEET);
+ sub_80EB8EC();
+ unref_sub_8070F90();
+ InitTimeBasedEvents();
+}
+#endif
diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c
index 202b752a6..a1c8e081d 100644
--- a/src/scene/title_screen.c
+++ b/src/scene/title_screen.c
@@ -8,6 +8,7 @@
#include "m4a.h"
#include "main.h"
#include "main_menu.h"
+#include "overworld.h"
#include "palette.h"
#include "reset_rtc_screen.h"
#include "sound.h"
@@ -353,6 +354,9 @@ static void Task_TitleScreenPhase1(u8);
static void Task_TitleScreenPhase2(u8);
static void Task_TitleScreenPhase3(u8);
static void CB2_GoToMainMenu(void);
+#if DEBUG
+static void CB2_GoToTestMenu(void);
+#endif
static void CB2_GoToClearSaveDataScreen(void);
static void CB2_GoToResetRtcScreen(void);
static void CB2_GoToCopyrightScreen(void);
@@ -829,6 +833,13 @@ static void Task_TitleScreenPhase3(u8 taskId)
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
SetMainCallback2(CB2_GoToResetRtcScreen);
}
+#if DEBUG
+ else if (gMain.heldKeys == SELECT_BUTTON)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ SetMainCallback2(CB2_GoToTestMenu);
+ }
+#endif
else
{
REG_BG2Y = 0;
@@ -855,6 +866,14 @@ static void CB2_GoToMainMenu(void)
SetMainCallback2(CB2_InitMainMenu);
}
+#if DEBUG
+static void CB2_GoToTestMenu(void)
+{
+ if (!UpdatePaletteFade())
+ SetMainCallback2(CB2_InitTestMenu);
+}
+#endif
+
static void CB2_GoToCopyrightScreen(void)
{
if (!UpdatePaletteFade())
diff --git a/src/strings.c b/src/strings.c
index 06bbadb8f..0f599db72 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -173,7 +173,8 @@ const u8 gOtherText_None[] = _("NONE");
const u8 gOtherText_ThreeQuestions2[] = _("???");
-const u8 gOtherText_FiveQuestionsAndSlash[] = _("?????$/");
+const u8 gOtherText_FiveQuestions[] = _("?????");
+const u8 gOtherText_Slash[] = _("/");
const u8 gOtherText_OneDash[] = _("-");
const u8 gOtherText_TwoDashes[] = _("--");
@@ -267,7 +268,9 @@ const u8 gContestStatsText_Spicy[] = _("SPICY");
const u8 gContestStatsText_Dry[] = _("DRY");
const u8 gContestStatsText_Sweet[] = _("SWEET");
const u8 gContestStatsText_Bitter[] = _("BITTER");
-const u8 gContestStatsText_Sour[] = _("SOUR$TASTY$FEEL"); // tasty is unused, feel might not be
+const u8 gContestStatsText_Sour[] = _("SOUR");
+const u8 gContestStatsText_Tasty[] = _("TASTY");
+const u8 gContestStatsText_Feel[] = _("FEEL");
const u8 gContestStatsText_StowCase[] = _("Stow CASE.");
const u8 gContestStatsText_ThrowAwayPrompt[] = _("Throw away this\n{STR_VAR_1}?");
@@ -1096,7 +1099,8 @@ const u8 gOtherText_None[] = _("KEINES");
const u8 gOtherText_ThreeQuestions2[] = _("???");
-const u8 gOtherText_FiveQuestionsAndSlash[] = _("?????$/");
+const u8 gOtherText_FiveQuestions[] = _("?????");
+const u8 gOtherText_Slash[] = _("/");
const u8 gOtherText_OneDash[] = _("-");
const u8 gOtherText_TwoDashes[] = _("--");
@@ -1190,7 +1194,9 @@ const u8 gContestStatsText_Spicy[] = _("SCHARF");
const u8 gContestStatsText_Dry[] = _("TROCKEN");
const u8 gContestStatsText_Sweet[] = _("SÜSS");
const u8 gContestStatsText_Bitter[] = _("BITTER");
-const u8 gContestStatsText_Sour[] = _("SAUER$LECKER$WÜRZE");
+const u8 gContestStatsText_Sour[] = _("SAUER");
+const u8 gContestStatsText_Tasty[] = _("LECKER");
+const u8 gContestStatsText_Feel[] = _("WÜRZE");
const u8 gContestStatsText_StowCase[] = _("BOX verstauen.");
const u8 gContestStatsText_ThrowAwayPrompt[] = _("{STR_VAR_1}\nwegwerfen?");
diff --git a/sym_bss.txt b/sym_bss.txt
index 5e22693fd..7f0aa80f6 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -15,12 +15,20 @@
. = ALIGN(4); src/engine/text_window.o(.bss);
. = ALIGN(4); src/engine/script.o(.bss);
. = ALIGN(4); src/field/start_menu.o(.bss);
+. = ALIGN(4); src/debug/start_menu_debug.o(.bss);
. = ALIGN(4); src/engine/menu.o(.bss);
. = ALIGN(4); src/engine/tileset_anim.o(.bss);
. = ALIGN(4); src/engine/sound.o(.bss);
. = ALIGN(4); src/field/field_weather.o(.bss);
+. = ALIGN(4); src/debug/tomomichi_debug_menu.o(.bss);
+. = ALIGN(4); src/debug/nohara_debug_menu.o(.bss);
. = ALIGN(4); src/field/field_effect.o(.bss);
+. = ALIGN(4); src/engine/trainer_card.o(.bss);
. = ALIGN(4); src/field/item_menu.o(.bss);
+#if DEBUG
+unk_debug_bss_3 = .;
+ . += 0x4;
+#endif
. = ALIGN(4); src/field/shop.o(.bss);
. = ALIGN(4); src/engine/record_mixing.o(.bss);
. = ALIGN(4); src/field/tv.o(.bss);
@@ -28,12 +36,15 @@
. = ALIGN(4); src/easy_chat_2.o(.bss);
. = ALIGN(4); src/pokenav_before.o(.bss);
. = ALIGN(4); src/field/mauville_man.o(.bss);
+. = ALIGN(4); src/pokemon/mail.o(.bss);
. = ALIGN(4); src/field/menu_helpers.o(.bss);
+. = ALIGN(4); src/field/slot_machine.o(.bss);
. = ALIGN(4); src/scene/contest_painting.o(.bss);
. = ALIGN(4); src/field/pokeblock.o(.bss);
. = ALIGN(4); src/field/field_specials.o(.bss);
. = ALIGN(4); src/pokemon/learn_move.o(.bss);
. = ALIGN(4); src/field/player_pc.o(.bss);
+. = ALIGN(4); src/debug/nakamura_debug_menu.o(.bss);
. = ALIGN(4); src/libs/m4a_1.o(.bss);
. = ALIGN(4); src/libs/agb_flash.o(.bss);
. = ALIGN(4); src/libs/siirtc.o(.bss);
diff --git a/sym_common.txt b/sym_common.txt
index 07c827de8..b4061bfe4 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -6,8 +6,14 @@
// main.c
+#if DEBUG
+/*. += 0x18;*/
+#endif
SYMBOL(gKeyRepeatStartDelay, 4)
SYMBOL(gLinkTransferringData, 4)
+#if DEBUG
+. += 0x8;
+#endif
SYMBOL(gMain, 1088)
SYMBOL(gKeyRepeatContinueDelay, 4)
SYMBOL(gSoftResetDisabled, 4)
@@ -72,7 +78,7 @@ SYMBOL(gLinkCallback, 4)
SYMBOL(gSavedLinkPlayers, 112)
SYMBOL(gShouldAdvanceLinkState, 4)
SYMBOL(gLinkTestBlockChecksums, 8)
-. += 0x4;
+SYMBOL(gUnknown_Debug_30030E0, 4)
SYMBOL(gBlockRequestType, 4)
. += 0x8;
SYMBOL(gLastSendQueueCount, 4)
@@ -106,6 +112,20 @@ SYMBOL(gBattleTextBuff3, 16)
SYMBOL(gBattle_BG1_X, 4)
SYMBOL(gBattle_WIN0H, 4)
. += 0x8;
+
+#if DEBUG
+gUnknown_Debug_03004360 = .;
+ . += 0x10;
+gUnknown_Debug_03004370 = .;
+ . += 0x30;
+gUnknown_Debug_030043A0 = .;
+ . += 0x4;
+gUnknown_Debug_030043A4 = .;
+ . += 0x4;
+gUnknown_Debug_030043A8 = .;
+ . += 0x8;
+#endif
+
SYMBOL(gPreBattleCallback1, 4)
gBattleMainFunc = .;
. += 0xC;
@@ -169,6 +189,11 @@ SYMBOL(gUnknown_0300489C, 4)
// field_map_obj.c
SYMBOL(gMapObjects, 576)
+#if DEBUG
+gUnknown_Debug_03004BC0 = .;
+. += 0x4;
+#endif
+
// field_control_avatar.c
SYMBOL(gSelectedMapObject, 4)
@@ -178,9 +203,19 @@ SYMBOL(gPokemonItemUseCallback, 4)
// start_menu.c
SYMBOL(gMenuCallback, 4)
+#if DEBUG
+gUnknown_Debug_03004BD0 = .;
+. += 0x4;
+#endif
+
// sound.c
SYMBOL(gDisableMusic, 4)
+#if DEBUG
+unk_debug_common_2 = .;
+. += 0x8;
+#endif
+
// battle_anim.c
SYMBOL(gSoundAnimFramesToWait, 4)
SYMBOL(gBattleAnimArgs, 16)
@@ -189,6 +224,15 @@ SYMBOL(gAnimSpriteIndexArray, 16)
// task.c
SYMBOL(gTasks, 640)
+#if DEBUG
+unk_debug_common_1 = .;
+. += 0x4;
+unk_3004E94 = .;
+. += 0x4;
+unk_3004E98 = .;
+. += 0x8;
+#endif
+
// mori_debug_menu.c
SYMBOL(gUnknown_03004DA0, 32)
@@ -220,6 +264,16 @@ SYMBOL(gCurrentBagPocketItemSlots, 4)
// contest.c
SYMBOL(gContestRngValue, 4)
+#if DEBUG
+unk_debug_common_0 = .;
+. += 0x4;
+
+// watanabe_debug_menu.c
+byte_3005E30 = .;
+. += 0x20;
+
+#endif
+
// record_mixing.c
SYMBOL(gUnknown_03005D2C, 4)
@@ -229,7 +283,11 @@ SYMBOL(gSoundTestCryNum, 4)
// tv.c
SYMBOL(gUnknown_03005D38, 4)
+#if DEBUG
+. += 0x54;
+#else
. += 0x64; // huge gap?
+#endif
// mauville_man.c
SYMBOL(gUnknown_03005DA0, 0x48)
@@ -256,6 +314,11 @@ SYMBOL(gUnknown_03005E90, 4)
// evolution_scene.c
SYMBOL(gCB2_AfterEvolution, 4)
+#if DEBUG
+gUnknown_Debug_03005FB8 = .;
+. += 0x4;
+#endif
+
// pokedex_cry_screen.c
SYMBOL(gUnknown_03005E98, 4)
@@ -269,7 +332,11 @@ SYMBOL(gFastSaveSection, 4)
SYMBOL(gUnknown_03005EB4, 4)
SYMBOL(gSaveFileStatus, 4)
SYMBOL(gGameContinueCallback, 4)
+#if DEBUG
+. += 0xC;
+#else
. += 0x10;
+#endif
// intro.c
SYMBOL(gIntroFrameCounter, 4)
@@ -293,9 +360,16 @@ SYMBOL(gUnknown_03005F3C, 4)
SYMBOL(gUnknown_03005F40, 4)
SYMBOL(gPokeblockFeedPokeSpriteCopy, 68)
SYMBOL(gUnknown_03005F94, 4)
+#if DEBUG
+SYMBOL(gUnknown_03005FA0, 32)
+#else
SYMBOL(gUnknown_03005FA0, 48)
+#endif
// m4a_2.c
+#if DEBUG
+. += 0x10;
+#endif
SYMBOL(gSoundInfo, 4016)
SYMBOL(gPokemonCrySongs, 104)
SYMBOL(gPokemonCryMusicPlayers, 128)
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 24b01b594..012a32cc6 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -32,23 +32,43 @@ gUnknown_02023A04 = .; /* 2023A04 */
gUnknown_02023A14 = .; /* 2023A14 */
. += 0x4C;
-gBattleBufferA = .; /* 2023A60 */
- . += 0x2;
+#if DEBUG
-gUnknown_02023A62 = .; /* 2023A62 */
- . += 0x1;
+gUnknown_02023A14_4C = .;
+ . += 0x4;
-gUnknown_02023A63 = .; /* 2023A63 */
- . += 0x1;
+gUnknown_02023A14_50 = .;
+ . += 0x2;
-gUnknown_02023A64 = .; /* 2023A64 */
- . += 0x7FC;
+gUnknown_Debug_2023A76 = .;
+gUnknown_Debug_2023A76_ = .;
+ . += 0x4;
-gBattleBufferB = .; /* 2024260 */
+gUnknown_Debug_2023A7A = .;
+ . += 0x42;
+
+gUnknown_Debug_2023ABC = .;
. += 0x4;
-gUnknown_02024264 = .; /* 2024264 */
- . += 0x7FC;
+gUnknown_Debug_2023AC0 = .;
+ . += 0x42;
+
+gUnknown_Debug_2023B02 = .;
+ . += 0x30;
+
+gUnknown_Debug_2023B32 = .;
+ . += 0x30;
+
+gUnknown_Debug_2023B62 = .;
+ . += 0x1A2;
+
+#endif
+
+gBattleBufferA = .; /* 2023A60 */
+ . += 0x800;
+
+gBattleBufferB = .; /* 2024260 */
+ . += 0x800;
gActiveBank = .; /* 2024A60 */
. += 0x4;
@@ -319,6 +339,13 @@ gBattleMonForms = .; /* 2024E84 */
. = ALIGN(4); src/scene/title_screen.o(ewram_data);
. = ALIGN(4); src/field/field_weather.o(ewram_data);
. = ALIGN(4); src/battle/battle_setup.o(ewram_data);
+
+#if DEBUG
+unk_2030220 = .;
+ . += 0x4;
+. = ALIGN(4); src/debug/taya_debug_window.o(ewram_data);
+#endif
+
. = ALIGN(4); src/field/wild_encounter.o(ewram_data);
. = ALIGN(4); src/field/field_effect.o(ewram_data);
. = ALIGN(4); src/scanline_effect.o(ewram_data);
@@ -337,6 +364,7 @@ gBattleMonForms = .; /* 2024E84 */
. = ALIGN(4); src/contest.o(ewram_data);
. = ALIGN(4); src/field/shop.o(ewram_data);
. = ALIGN(4); src/field/fldeff_escalator.o(ewram_data);
+. = ALIGN(4); src/debug/watanabe_debug_menu.o(ewram_data);
. = ALIGN(4); src/field/money.o(ewram_data);
. = ALIGN(4); src/engine/record_mixing.o(ewram_data);
. = ALIGN(4); src/debug/sound_check_menu.o(ewram_data);
@@ -357,6 +385,7 @@ gBattleMonForms = .; /* 2024E84 */
. = ALIGN(4); src/field/pokeblock.o(ewram_data);
. = ALIGN(4); src/field/field_specials.o(ewram_data);
. = ALIGN(4); src/field/pokedex_area_screen.o(ewram_data);
+. = ALIGN(4); src/roulette.o(ewram_data);
. = ALIGN(4); src/battle/battle_message.o(ewram_data);
. = ALIGN(4); src/field/choose_party.o(ewram_data);
. = ALIGN(4); src/scene/cable_car.o(ewram_data);
@@ -373,11 +402,16 @@ gBattleMonForms = .; /* 2024E84 */
. = ALIGN(4); src/engine/mystery_event_menu.o(ewram_data);
. = ALIGN(4); src/engine/save_failed_screen.o(ewram_data);
. = ALIGN(4); src/pokemon/pokeblock_feed.o(ewram_data);
+. = ALIGN(4); src/debug/nakamura_debug_menu.o(ewram_data);
. = ALIGN(4); src/scene/intro_credits_graphics.o(ewram_data);
/* ??? */
+#if DEBUG
+ . = ALIGN(8);
+#else
. = ALIGN(16);
+#endif
gTileBuffer = .; /* 2039360 */
. += 0x100;