summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/sound_check_menu.s2444
-rw-r--r--data/sound_check_menu.s121
-rw-r--r--data/text/song_names.inc1105
-rw-r--r--include/global.h11
-rw-r--r--include/player_pc.h4
-rw-r--r--include/task.h4
-rw-r--r--include/text.h1
-rwxr-xr-xld_script.txt4
-rw-r--r--src/battle_ai.c2
-rwxr-xr-xsrc/sound_check_menu.c2198
10 files changed, 2217 insertions, 3677 deletions
diff --git a/asm/sound_check_menu.s b/asm/sound_check_menu.s
deleted file mode 100644
index b47229d2b..000000000
--- a/asm/sound_check_menu.s
+++ /dev/null
@@ -1,2444 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80BA0A8
-sub_80BA0A8: @ 80BA0A8
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80BA0A8
-
- thumb_func_start sub_80BA0C0
-sub_80BA0C0: @ 80BA0C0
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- ldr r0, _080BA0E8 @ =gUnknown_020387B0
- ldrb r0, [r0]
- cmp r0, 0
- beq _080BA0E2
- bl m4aSoundMain
- bl m4aSoundMain
- bl m4aSoundMain
-_080BA0E2:
- pop {r0}
- bx r0
- .align 2, 0
-_080BA0E8: .4byte gUnknown_020387B0
- thumb_func_end sub_80BA0C0
-
- thumb_func_start unref_sub_80BA0EC
-unref_sub_80BA0EC: @ 80BA0EC
- push {r4-r6,lr}
- sub sp, 0xC
- movs r0, 0
- bl SetVBlankCallback
- movs r6, 0x80
- lsls r6, 19
- movs r5, 0
- strh r5, [r6]
- ldr r0, _080BA20C @ =REG_BG2CNT
- strh r5, [r0]
- subs r0, 0x2
- strh r5, [r0]
- subs r0, 0x2
- strh r5, [r0]
- adds r0, 0x10
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- subs r0, 0x6
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- subs r0, 0x6
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- add r0, sp, 0x4
- strh r5, [r0]
- ldr r1, _080BA210 @ =0x040000d4
- str r0, [r1]
- movs r0, 0xC0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _080BA214 @ =0x8100c000
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r4, 0
- str r4, [sp, 0x8]
- add r0, sp, 0x8
- str r0, [r1]
- movs r0, 0xE0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _080BA218 @ =0x85000100
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add r0, sp, 0x4
- strh r4, [r0]
- str r0, [r1]
- movs r0, 0xA0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _080BA21C @ =0x81000200
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetPaletteFade
- bl ResetTasks
- bl ResetSpriteData
- ldr r0, _080BA220 @ =gWindowConfig_81E6C3C
- bl SetUpWindowConfig
- ldr r0, _080BA224 @ =gWindowConfig_81E6CE4
- bl InitMenuWindow
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _080BA228 @ =REG_WIN0H
- strh r4, [r0]
- adds r0, 0x4
- strh r4, [r0]
- subs r0, 0x2
- strh r4, [r0]
- adds r0, 0x4
- strh r4, [r0]
- ldr r1, _080BA22C @ =REG_WININ
- ldr r2, _080BA230 @ =0x00001111
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x31
- strh r0, [r1]
- adds r1, 0x6
- movs r0, 0xE1
- strh r0, [r1]
- ldr r0, _080BA234 @ =REG_BLDALPHA
- strh r4, [r0]
- adds r1, 0x4
- movs r0, 0x7
- strh r0, [r1]
- ldr r1, _080BA238 @ =0x04000200
- movs r2, 0x1
- strh r2, [r1]
- ldrh r0, [r1]
- orrs r0, r2
- strh r0, [r1]
- ldr r2, _080BA23C @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _080BA240 @ =sub_80BA0C0
- bl SetVBlankCallback
- ldr r0, _080BA244 @ =sub_80BA0A8
- bl SetMainCallback2
- ldr r1, _080BA248 @ =0x00007140
- adds r0, r1, 0
- strh r0, [r6]
- ldr r0, _080BA24C @ =sub_80BA258
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BA250 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- strh r4, [r1, 0xA]
- strh r4, [r1, 0xC]
- strh r4, [r1, 0xE]
- ldr r0, _080BA254 @ =gUnknown_020387B0
- strb r5, [r0]
- strh r4, [r1, 0xE]
- bl m4aSoundInit
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA20C: .4byte REG_BG2CNT
-_080BA210: .4byte 0x040000d4
-_080BA214: .4byte 0x8100c000
-_080BA218: .4byte 0x85000100
-_080BA21C: .4byte 0x81000200
-_080BA220: .4byte gWindowConfig_81E6C3C
-_080BA224: .4byte gWindowConfig_81E6CE4
-_080BA228: .4byte REG_WIN0H
-_080BA22C: .4byte REG_WININ
-_080BA230: .4byte 0x00001111
-_080BA234: .4byte REG_BLDALPHA
-_080BA238: .4byte 0x04000200
-_080BA23C: .4byte REG_DISPSTAT
-_080BA240: .4byte sub_80BA0C0
-_080BA244: .4byte sub_80BA0A8
-_080BA248: .4byte 0x00007140
-_080BA24C: .4byte sub_80BA258
-_080BA250: .4byte gTasks
-_080BA254: .4byte gUnknown_020387B0
- thumb_func_end unref_sub_80BA0EC
-
- thumb_func_start sub_80BA258
-sub_80BA258: @ 80BA258
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x40
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, _080BA354 @ =gDebugText_SoundCheckJap
- mov r0, sp
- movs r2, 0x9
- bl memcpy
- add r7, sp, 0xC
- ldr r1, _080BA358 @ =gDebugText_BGM
- adds r0, r7, 0
- movs r2, 0x4
- bl memcpy
- add r0, sp, 0x10
- mov r8, r0
- ldr r1, _080BA35C @ =gDebugText_SE
- movs r2, 0x4
- bl memcpy
- add r5, sp, 0x14
- ldr r1, _080BA360 @ =gUnknown_083D02D9
- adds r0, r5, 0
- movs r2, 0xD
- bl memcpy
- add r4, sp, 0x24
- ldr r1, _080BA364 @ =gDebugText_UpDown
- adds r0, r4, 0
- movs r2, 0xC
- bl memcpy
- add r6, sp, 0x30
- ldr r1, _080BA368 @ =gDebugText_DriverTest
- adds r0, r6, 0
- movs r2, 0xE
- bl memcpy
- ldr r0, _080BA36C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BA344
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x1B
- movs r3, 0x3
- bl MenuDrawTextWindow
- movs r0, 0x2
- movs r1, 0x5
- movs r2, 0x1B
- movs r3, 0xA
- bl MenuDrawTextWindow
- movs r0, 0x2
- movs r1, 0xC
- movs r2, 0x1B
- movs r3, 0x11
- bl MenuDrawTextWindow
- mov r0, sp
- movs r1, 0x4
- movs r2, 0x1
- bl MenuPrint
- adds r0, r5, 0
- movs r1, 0xE
- movs r2, 0x1
- bl MenuPrint
- adds r0, r7, 0
- movs r1, 0x4
- movs r2, 0x6
- bl MenuPrint
- adds r0, r4, 0
- movs r1, 0xE
- movs r2, 0x6
- bl MenuPrint
- mov r0, r8
- movs r1, 0x4
- movs r2, 0xD
- bl MenuPrint
- adds r0, r4, 0
- movs r1, 0xE
- movs r2, 0xD
- bl MenuPrint
- adds r0, r6, 0
- movs r1, 0xE
- movs r2, 0x12
- bl MenuPrint
- ldr r1, _080BA370 @ =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BA374 @ =sub_80BA384
- str r1, [r0]
- ldr r1, _080BA378 @ =REG_WIN0H
- ldr r2, _080BA37C @ =0x000011df
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x4
- ldr r2, _080BA380 @ =0x0000011f
- adds r0, r2, 0
- strh r0, [r1]
-_080BA344:
- add sp, 0x40
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA354: .4byte gDebugText_SoundCheckJap
-_080BA358: .4byte gDebugText_BGM
-_080BA35C: .4byte gDebugText_SE
-_080BA360: .4byte gUnknown_083D02D9
-_080BA364: .4byte gDebugText_UpDown
-_080BA368: .4byte gDebugText_DriverTest
-_080BA36C: .4byte gPaletteFade
-_080BA370: .4byte gTasks
-_080BA374: .4byte sub_80BA384
-_080BA378: .4byte REG_WIN0H
-_080BA37C: .4byte 0x000011df
-_080BA380: .4byte 0x0000011f
- thumb_func_end sub_80BA258
-
- thumb_func_start sub_80BA384
-sub_80BA384: @ 80BA384
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080BA3EC @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldrb r0, [r4, 0x8]
- bl sub_80BA6B8
- ldr r1, _080BA3F0 @ =0x0000015d
- adds r0, r1, 0
- ldrh r2, [r4, 0xA]
- adds r0, r2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x7
- movs r2, 0x8
- bl sub_80BA700
- ldr r1, _080BA3F4 @ =gBGMNames
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0xB
- movs r2, 0x8
- bl sub_80BA79C
- ldrh r0, [r4, 0xC]
- movs r1, 0x7
- movs r2, 0xF
- bl sub_80BA700
- ldr r1, _080BA3F8 @ =gSENames
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0xB
- movs r2, 0xF
- bl sub_80BA79C
- ldr r0, _080BA3FC @ =sub_80BA65C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA3EC: .4byte gTasks
-_080BA3F0: .4byte 0x0000015d
-_080BA3F4: .4byte gBGMNames
-_080BA3F8: .4byte gSENames
-_080BA3FC: .4byte sub_80BA65C
- thumb_func_end sub_80BA384
-
- thumb_func_start sub_80BA400
-sub_80BA400: @ 80BA400
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _080BA428 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080BA434
- ldr r0, _080BA42C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080BA430 @ =sub_80BA800
- str r0, [r1]
- b _080BA64C
- .align 2, 0
-_080BA428: .4byte gMain
-_080BA42C: .4byte gTasks
-_080BA430: .4byte sub_80BA800
-_080BA434:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _080BA458
- ldr r0, _080BA450 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080BA454 @ =sub_80BAF84
- str r0, [r1]
- b _080BA64C
- .align 2, 0
-_080BA450: .4byte gTasks
-_080BA454: .4byte sub_80BAF84
-_080BA458:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080BA478
- ldr r0, _080BA470 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080BA474 @ =sub_80BB25C
- str r0, [r1]
- b _080BA64C
- .align 2, 0
-_080BA470: .4byte gTasks
-_080BA474: .4byte sub_80BB25C
-_080BA478:
- movs r6, 0x1
- movs r5, 0x1
- ands r5, r1
- cmp r5, 0
- beq _080BA538
- ldr r0, _080BA4AC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r5, r1, r0
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080BA4D0
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _080BA4BA
- movs r3, 0xC
- ldrsh r4, [r5, r3]
- cmp r4, 0
- beq _080BA4B0
- ldrh r0, [r5, 0x10]
- bl m4aSongNumStop
- b _080BA4C4
- .align 2, 0
-_080BA4AC: .4byte gTasks
-_080BA4B0:
- ldrh r0, [r5, 0x10]
- bl m4aSongNumStop
- strh r4, [r5, 0x10]
- b _080BA64C
-_080BA4BA:
- movs r4, 0xC
- ldrsh r0, [r5, r4]
- cmp r0, 0
- bne _080BA4C4
- b _080BA64C
-_080BA4C4:
- ldrh r0, [r5, 0xC]
- bl m4aSongNumStart
- ldrh r0, [r5, 0xC]
- strh r0, [r5, 0x10]
- b _080BA64C
-_080BA4D0:
- ldrh r1, [r5, 0xE]
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _080BA514
- movs r3, 0xA
- ldrsh r4, [r5, r3]
- cmp r4, 0
- beq _080BA500
- ldr r0, _080BA4FC @ =0x0000015d
- adds r4, r0, 0
- adds r0, r1, r4
- lsls r0, 16
- lsrs r0, 16
- bl m4aSongNumStop
- ldrh r1, [r5, 0xA]
- adds r4, r1
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- b _080BA528
- .align 2, 0
-_080BA4FC: .4byte 0x0000015d
-_080BA500:
- ldr r2, _080BA510 @ =0x0000015d
- adds r0, r1, r2
- lsls r0, 16
- lsrs r0, 16
- bl m4aSongNumStop
- strh r4, [r5, 0xE]
- b _080BA64C
- .align 2, 0
-_080BA510: .4byte 0x0000015d
-_080BA514:
- ldrh r1, [r5, 0xA]
- movs r3, 0xA
- ldrsh r0, [r5, r3]
- cmp r0, 0
- bne _080BA520
- b _080BA64C
-_080BA520:
- ldr r4, _080BA534 @ =0x0000015d
- adds r0, r1, r4
- lsls r0, 16
- lsrs r0, 16
-_080BA528:
- bl m4aSongNumStart
- ldrh r0, [r5, 0xA]
- strh r0, [r5, 0xE]
- b _080BA64C
- .align 2, 0
-_080BA534: .4byte 0x0000015d
-_080BA538:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BA570
- movs r0, 0x5
- bl m4aSongNumStart
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _080BA568 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BA56C @ =sub_80BA68C
- str r1, [r0]
- b _080BA64C
- .align 2, 0
-_080BA568: .4byte gTasks
-_080BA56C: .4byte sub_80BA68C
-_080BA570:
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _080BA582
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080BA59C
-_080BA582:
- ldr r0, _080BA598 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- eors r0, r6
- strh r0, [r1, 0x8]
-_080BA592:
- movs r0, 0x1
- b _080BA64E
- .align 2, 0
-_080BA598: .4byte gTasks
-_080BA59C:
- movs r0, 0x10
- ands r0, r1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- beq _080BA5EA
- ldr r0, _080BA5CC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _080BA5D6
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _080BA5D0
- subs r0, r2, 0x1
- strh r0, [r1, 0xC]
- b _080BA592
- .align 2, 0
-_080BA5CC: .4byte gTasks
-_080BA5D0:
- movs r0, 0xF7
- strh r0, [r1, 0xC]
- b _080BA592
-_080BA5D6:
- ldrh r2, [r1, 0xA]
- movs r4, 0xA
- ldrsh r0, [r1, r4]
- cmp r0, 0
- ble _080BA5E4
- subs r0, r2, 0x1
- b _080BA5E6
-_080BA5E4:
- movs r0, 0x75
-_080BA5E6:
- strh r0, [r1, 0xA]
- b _080BA592
-_080BA5EA:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080BA630
- ldr r1, _080BA614 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- movs r0, 0x8
- ldrsh r2, [r1, r0]
- cmp r2, 0
- beq _080BA61C
- ldrh r2, [r1, 0xC]
- movs r4, 0xC
- ldrsh r0, [r1, r4]
- cmp r0, 0xF6
- bgt _080BA618
- adds r0, r2, 0x1
- strh r0, [r1, 0xC]
- b _080BA592
- .align 2, 0
-_080BA614: .4byte gTasks
-_080BA618:
- strh r3, [r1, 0xC]
- b _080BA592
-_080BA61C:
- ldrh r3, [r1, 0xA]
- movs r4, 0xA
- ldrsh r0, [r1, r4]
- cmp r0, 0x74
- bgt _080BA62C
- adds r0, r3, 0x1
- strh r0, [r1, 0xA]
- b _080BA592
-_080BA62C:
- strh r2, [r1, 0xA]
- b _080BA592
-_080BA630:
- ldrh r1, [r2, 0x2C]
- movs r0, 0x4
- ands r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080BA648
- ldr r0, _080BA644 @ =gUnknown_020387B0
- strb r6, [r0]
- b _080BA64C
- .align 2, 0
-_080BA644: .4byte gUnknown_020387B0
-_080BA648:
- ldr r0, _080BA658 @ =gUnknown_020387B0
- strb r1, [r0]
-_080BA64C:
- movs r0, 0
-_080BA64E:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080BA658: .4byte gUnknown_020387B0
- thumb_func_end sub_80BA400
-
- thumb_func_start sub_80BA65C
-sub_80BA65C: @ 80BA65C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_80BA400
- lsls r0, 24
- cmp r0, 0
- beq _080BA67C
- ldr r0, _080BA684 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080BA688 @ =sub_80BA384
- str r0, [r1]
-_080BA67C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA684: .4byte gTasks
-_080BA688: .4byte sub_80BA384
- thumb_func_end sub_80BA65C
-
- thumb_func_start sub_80BA68C
-sub_80BA68C: @ 80BA68C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080BA6B0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BA6AA
- adds r0, r2, 0
- bl DestroyTask
- ldr r0, _080BA6B4 @ =CB2_InitTitleScreen
- bl SetMainCallback2
-_080BA6AA:
- pop {r0}
- bx r0
- .align 2, 0
-_080BA6B0: .4byte gPaletteFade
-_080BA6B4: .4byte CB2_InitTitleScreen
- thumb_func_end sub_80BA68C
-
- thumb_func_start sub_80BA6B8
-sub_80BA6B8: @ 80BA6B8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080BA6C6
- cmp r0, 0x1
- beq _080BA6E0
-_080BA6C6:
- ldr r1, _080BA6D4 @ =REG_WIN1H
- ldr r2, _080BA6D8 @ =0x000011df
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x4
- ldr r2, _080BA6DC @ =0x00002957
- b _080BA6EC
- .align 2, 0
-_080BA6D4: .4byte REG_WIN1H
-_080BA6D8: .4byte 0x000011df
-_080BA6DC: .4byte 0x00002957
-_080BA6E0:
- ldr r1, _080BA6F4 @ =REG_WIN1H
- ldr r2, _080BA6F8 @ =0x000011df
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x4
- ldr r2, _080BA6FC @ =0x0000618f
-_080BA6EC:
- adds r0, r2, 0
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080BA6F4: .4byte REG_WIN1H
-_080BA6F8: .4byte 0x000011df
-_080BA6FC: .4byte 0x0000618f
- thumb_func_end sub_80BA6B8
-
- thumb_func_start sub_80BA700
-sub_80BA700: @ 80BA700
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 16
- lsrs r7, r2, 16
- movs r1, 0
- movs r2, 0
-_080BA714:
- mov r3, sp
- adds r0, r3, r1
- strb r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bls _080BA714
- mov r1, sp
- movs r0, 0xB0
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- movs r4, 0
- adds r0, r5, 0
- movs r1, 0x64
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080BA748
- mov r1, sp
- adds r0, 0xA1
- strb r0, [r1]
- movs r4, 0x1
-_080BA748:
- adds r0, r5, 0
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080BA766
- cmp r4, 0
- beq _080BA76C
-_080BA766:
- mov r1, sp
- adds r0, 0xA1
- strb r0, [r1, 0x1]
-_080BA76C:
- mov r4, sp
- adds r0, r5, 0
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r4, 0x2]
- lsls r1, r6, 24
- lsrs r1, 24
- lsls r2, r7, 24
- lsrs r2, 24
- mov r0, sp
- bl MenuPrint
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BA700
-
- thumb_func_start sub_80BA79C
-sub_80BA79C: @ 80BA79C
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 16
- lsrs r5, r2, 16
- movs r3, 0
- movs r1, 0
-_080BA7AE:
- mov r2, sp
- adds r0, r2, r3
- strb r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xA
- bls _080BA7AE
- mov r0, sp
- movs r1, 0xFF
- strb r1, [r0, 0xA]
- movs r3, 0
- ldrb r0, [r4]
- lsls r2, r6, 24
- lsls r5, 24
- cmp r0, 0xFF
- beq _080BA7EC
-_080BA7D0:
- mov r0, sp
- adds r1, r0, r3
- adds r0, r4, r3
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r4, r3
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _080BA7EC
- cmp r3, 0x9
- bls _080BA7D0
-_080BA7EC:
- lsrs r1, r2, 24
- lsrs r2, r5, 24
- mov r0, sp
- bl MenuPrint
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BA79C
-
- thumb_func_start sub_80BA800
-sub_80BA800: @ 80BA800
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xCC
- lsls r0, 24
- str r0, [sp, 0xB0]
- lsrs r2, r0, 24
- str r2, [sp, 0xAC]
- ldr r1, _080BA9E8 @ =gUnknown_083D0312
- mov r0, sp
- movs r2, 0xA
- bl memcpy
- mov r0, sp
- adds r0, 0xC
- str r0, [sp, 0xB4]
- ldr r1, _080BA9EC @ =gUnknown_083D031C
- movs r2, 0xB
- bl memcpy
- mov r2, sp
- adds r2, 0x18
- str r2, [sp, 0xB8]
- ldr r1, _080BA9F0 @ =gDebugText_Voice
- adds r0, r2, 0
- movs r2, 0xA
- bl memcpy
- mov r0, sp
- adds r0, 0x24
- str r0, [sp, 0xBC]
- ldr r1, _080BA9F4 @ =gDebugText_Volume
- movs r2, 0xA
- bl memcpy
- mov r2, sp
- adds r2, 0x30
- str r2, [sp, 0xC0]
- ldr r1, _080BA9F8 @ =gDebugText_Panpot
- adds r0, r2, 0
- movs r2, 0xA
- bl memcpy
- mov r0, sp
- adds r0, 0x3C
- str r0, [sp, 0xC4]
- ldr r1, _080BA9FC @ =gDebugText_Pitch
- movs r2, 0xA
- bl memcpy
- mov r2, sp
- adds r2, 0x48
- str r2, [sp, 0xC8]
- ldr r1, _080BAA00 @ =gDebugText_Length
- adds r0, r2, 0
- movs r2, 0xA
- bl memcpy
- add r4, sp, 0x54
- ldr r1, _080BAA04 @ =gDebugText_Release
- adds r0, r4, 0
- movs r2, 0xA
- bl memcpy
- add r7, sp, 0x60
- ldr r1, _080BAA08 @ =gDebugText_Progress
- adds r0, r7, 0
- movs r2, 0xA
- bl memcpy
- add r0, sp, 0x6C
- mov r10, r0
- ldr r1, _080BAA0C @ =gDebugText_Chorus
- movs r2, 0xA
- bl memcpy
- add r2, sp, 0x78
- mov r9, r2
- ldr r1, _080BAA10 @ =gDebugText_Priority
- mov r0, r9
- movs r2, 0xA
- bl memcpy
- add r0, sp, 0x84
- mov r8, r0
- ldr r1, _080BAA14 @ =gUnknown_083D0381
- movs r2, 0x9
- bl memcpy
- add r6, sp, 0x90
- ldr r1, _080BAA18 @ =gUnknown_083D038A
- adds r0, r6, 0
- movs r2, 0x9
- bl memcpy
- add r5, sp, 0x9C
- ldr r1, _080BAA1C @ =gUnknown_083D0393
- adds r0, r5, 0
- movs r2, 0x9
- bl memcpy
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xC5
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- mov r0, sp
- movs r1, 0x13
- movs r2, 0x4
- bl MenuPrint
- ldr r0, [sp, 0xB4]
- movs r1, 0x13
- movs r2, 0x2
- bl MenuPrint
- ldr r0, [sp, 0xB8]
- movs r1, 0x2
- movs r2, 0x1
- bl MenuPrint
- ldr r0, [sp, 0xBC]
- movs r1, 0x2
- movs r2, 0x3
- bl MenuPrint
- ldr r0, [sp, 0xC0]
- movs r1, 0x2
- movs r2, 0x5
- bl MenuPrint
- ldr r0, [sp, 0xC4]
- movs r1, 0x2
- movs r2, 0x7
- bl MenuPrint
- ldr r0, [sp, 0xC8]
- movs r1, 0x2
- movs r2, 0x9
- bl MenuPrint
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0xB
- bl MenuPrint
- adds r0, r7, 0
- movs r1, 0x2
- movs r2, 0xD
- bl MenuPrint
- mov r0, r10
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- mov r0, r9
- movs r1, 0x2
- movs r2, 0x11
- bl MenuPrint
- mov r0, r8
- movs r1, 0x13
- movs r2, 0x10
- bl MenuPrint
- adds r0, r6, 0
- movs r1, 0x13
- movs r2, 0xE
- bl MenuPrint
- adds r0, r5, 0
- movs r1, 0x13
- movs r2, 0xC
- bl MenuPrint
- ldr r1, _080BAA20 @ =REG_WIN0H
- movs r0, 0xF0
- strh r0, [r1]
- adds r1, 0x4
- movs r0, 0xA0
- strh r0, [r1]
- ldr r0, _080BAA24 @ =gUnknown_020387B3
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080BAA28 @ =gUnknown_020387B1
- strb r1, [r0]
- ldr r0, _080BAA2C @ =gUnknown_020387B2
- strb r1, [r0]
- ldr r0, _080BAA30 @ =gUnknown_03005D30
- movs r2, 0
- str r2, [r0]
- ldr r0, _080BAA34 @ =gUnknown_020387D8
- strb r2, [r0]
- ldr r1, _080BAA38 @ =gUnknown_020387D9
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, _080BAA3C @ =gUnknown_020387B4
- str r2, [r0]
- movs r1, 0x78
- str r1, [r0, 0x4]
- str r2, [r0, 0x8]
- movs r1, 0xF0
- lsls r1, 6
- str r1, [r0, 0xC]
- movs r1, 0xB4
- str r1, [r0, 0x10]
- str r2, [r0, 0x18]
- str r2, [r0, 0x14]
- str r2, [r0, 0x1C]
- movs r1, 0x2
- str r1, [r0, 0x20]
- bl sub_80BAD5C
- movs r0, 0
- movs r1, 0
- bl sub_80BAE10
- ldr r1, _080BAA40 @ =gTasks
- ldr r2, [sp, 0xAC]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BAA44 @ =sub_80BAA48
- str r1, [r0]
- add sp, 0xCC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA9E8: .4byte gUnknown_083D0312
-_080BA9EC: .4byte gUnknown_083D031C
-_080BA9F0: .4byte gDebugText_Voice
-_080BA9F4: .4byte gDebugText_Volume
-_080BA9F8: .4byte gDebugText_Panpot
-_080BA9FC: .4byte gDebugText_Pitch
-_080BAA00: .4byte gDebugText_Length
-_080BAA04: .4byte gDebugText_Release
-_080BAA08: .4byte gDebugText_Progress
-_080BAA0C: .4byte gDebugText_Chorus
-_080BAA10: .4byte gDebugText_Priority
-_080BAA14: .4byte gUnknown_083D0381
-_080BAA18: .4byte gUnknown_083D038A
-_080BAA1C: .4byte gUnknown_083D0393
-_080BAA20: .4byte REG_WIN0H
-_080BAA24: .4byte gUnknown_020387B3
-_080BAA28: .4byte gUnknown_020387B1
-_080BAA2C: .4byte gUnknown_020387B2
-_080BAA30: .4byte gUnknown_03005D30
-_080BAA34: .4byte gUnknown_020387D8
-_080BAA38: .4byte gUnknown_020387D9
-_080BAA3C: .4byte gUnknown_020387B4
-_080BAA40: .4byte gTasks
-_080BAA44: .4byte sub_80BAA48
- thumb_func_end sub_80BA800
-
- thumb_func_start sub_80BAA48
-sub_80BAA48: @ 80BAA48
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080BAA90 @ =gMain
- ldrh r2, [r1, 0x2E]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _080BAAA8
- movs r1, 0x80
- lsls r1, 19
- ldr r2, _080BAA94 @ =0x00007140
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x40
- ldr r2, _080BAA98 @ =0x000011df
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x4
- ldr r2, _080BAA9C @ =0x0000011f
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _080BAAA0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BAAA4 @ =sub_80BA258
- str r1, [r0]
- b _080BACC6
- .align 2, 0
-_080BAA90: .4byte gMain
-_080BAA94: .4byte 0x00007140
-_080BAA98: .4byte 0x000011df
-_080BAA9C: .4byte 0x0000011f
-_080BAAA0: .4byte gTasks
-_080BAAA4: .4byte sub_80BA258
-_080BAAA8:
- ldrh r1, [r1, 0x30]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- beq _080BAAD0
- ldr r1, _080BAACC @ =gUnknown_020387B3
- ldrb r2, [r1]
- subs r0, r2, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bge _080BAAEA
- movs r0, 0x8
- strb r0, [r1]
- b _080BAAEA
- .align 2, 0
-_080BAACC: .4byte gUnknown_020387B3
-_080BAAD0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080BAAF8
- ldr r1, _080BAAF4 @ =gUnknown_020387B3
- ldrb r2, [r1]
- adds r0, r2, 0x1
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x8
- ble _080BAAEA
- strb r3, [r1]
-_080BAAEA:
- ldrb r1, [r1]
- adds r0, r2, 0
- bl sub_80BAE10
- b _080BACC6
- .align 2, 0
-_080BAAF4: .4byte gUnknown_020387B3
-_080BAAF8:
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _080BAB14
- ldr r0, _080BAB10 @ =gUnknown_020387D8
- ldrb r1, [r0]
- movs r2, 0x1
- eors r1, r2
- strb r1, [r0]
- bl sub_80BAD5C
- b _080BACC6
- .align 2, 0
-_080BAB10: .4byte gUnknown_020387D8
-_080BAB14:
- movs r0, 0x4
- ands r0, r2
- cmp r0, 0
- beq _080BAB38
- ldr r4, _080BAB34 @ =gUnknown_020387D9
- ldrb r0, [r4]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r4]
- bl sub_80BAD5C
- ldrb r0, [r4]
- bl SetPokemonCryStereo
- b _080BACC6
- .align 2, 0
-_080BAB34: .4byte gUnknown_020387D9
-_080BAB38:
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080BAB46
- movs r0, 0xA
- b _080BAB6E
-_080BAB46:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _080BAB56
- movs r0, 0xA
- negs r0, r0
- b _080BAB6E
-_080BAB56:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080BAB64
- movs r0, 0x1
- negs r0, r0
- b _080BAB6E
-_080BAB64:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080BAB78
- movs r0, 0x1
-_080BAB6E:
- bl sub_80BACDC
- bl sub_80BAD5C
- b _080BACC6
-_080BAB78:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- bne _080BAB82
- b _080BACA2
-_080BAB82:
- ldr r4, _080BABE4 @ =gUnknown_020387B4
- ldrb r0, [r4, 0x4]
- bl SetPokemonCryVolume
- movs r0, 0x8
- ldrsb r0, [r4, r0]
- bl SetPokemonCryPanpot
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- bl SetPokemonCryPitch
- ldrh r0, [r4, 0x10]
- bl SetPokemonCryLength
- ldr r0, [r4, 0x18]
- bl SetPokemonCryProgress
- ldrb r0, [r4, 0x14]
- bl SetPokemonCryRelease
- movs r0, 0x1C
- ldrsb r0, [r4, r0]
- bl SetPokemonCryChorus
- ldr r0, [r4, 0x20]
- lsls r0, 24
- lsrs r0, 24
- bl SetPokemonCryPriority
- ldr r4, [r4]
- adds r0, r4, 0
- cmp r4, 0
- bge _080BABC8
- adds r0, 0x7F
-_080BABC8:
- asrs r2, r0, 7
- lsls r0, r2, 7
- subs r0, r4, r0
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r2, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BAC1C
- cmp r0, 0x1
- bgt _080BABE8
- cmp r0, 0
- beq _080BABF2
- b _080BACA2
- .align 2, 0
-_080BABE4: .4byte gUnknown_020387B4
-_080BABE8:
- cmp r0, 0x2
- beq _080BAC48
- cmp r0, 0x3
- beq _080BAC74
- b _080BACA2
-_080BABF2:
- ldr r0, _080BAC04 @ =gUnknown_020387D8
- ldrb r0, [r0]
- cmp r0, 0
- beq _080BAC0C
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BAC08 @ =voicegroup_84537C0
- b _080BAC98
- .align 2, 0
-_080BAC04: .4byte gUnknown_020387D8
-_080BAC08: .4byte voicegroup_84537C0
-_080BAC0C:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BAC18 @ =voicegroup_8452590
- b _080BAC98
- .align 2, 0
-_080BAC18: .4byte voicegroup_8452590
-_080BAC1C:
- ldr r0, _080BAC30 @ =gUnknown_020387D8
- ldrb r0, [r0]
- cmp r0, 0
- beq _080BAC38
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BAC34 @ =voicegroup_8453DC0
- b _080BAC98
- .align 2, 0
-_080BAC30: .4byte gUnknown_020387D8
-_080BAC34: .4byte voicegroup_8453DC0
-_080BAC38:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BAC44 @ =voicegroup_8452B90
- b _080BAC98
- .align 2, 0
-_080BAC44: .4byte voicegroup_8452B90
-_080BAC48:
- ldr r0, _080BAC5C @ =gUnknown_020387D8
- ldrb r0, [r0]
- cmp r0, 0
- beq _080BAC64
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BAC60 @ =voicegroup_84543C0
- b _080BAC98
- .align 2, 0
-_080BAC5C: .4byte gUnknown_020387D8
-_080BAC60: .4byte voicegroup_84543C0
-_080BAC64:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BAC70 @ =voicegroup_8453190
- b _080BAC98
- .align 2, 0
-_080BAC70: .4byte voicegroup_8453190
-_080BAC74:
- ldr r0, _080BAC88 @ =gUnknown_020387D8
- ldrb r0, [r0]
- cmp r0, 0
- beq _080BAC90
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BAC8C @ =voicegroup_84549C0
- b _080BAC98
- .align 2, 0
-_080BAC88: .4byte gUnknown_020387D8
-_080BAC8C: .4byte voicegroup_84549C0
-_080BAC90:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BACCC @ =voicegroup_8453790
-_080BAC98:
- adds r0, r1
- bl SetPokemonCryTone
- ldr r1, _080BACD0 @ =gUnknown_03005D30
- str r0, [r1]
-_080BACA2:
- ldr r0, _080BACD0 @ =gUnknown_03005D30
- ldr r0, [r0]
- cmp r0, 0
- beq _080BACC6
- ldr r5, _080BACD4 @ =gUnknown_020387B1
- bl IsPokemonCryPlaying
- strb r0, [r5]
- ldr r4, _080BACD8 @ =gUnknown_020387B2
- lsls r0, 24
- lsrs r0, 24
- ldrb r2, [r4]
- cmp r0, r2
- beq _080BACC2
- bl sub_80BAD5C
-_080BACC2:
- ldrb r0, [r5]
- strb r0, [r4]
-_080BACC6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BACCC: .4byte voicegroup_8453790
-_080BACD0: .4byte gUnknown_03005D30
-_080BACD4: .4byte gUnknown_020387B1
-_080BACD8: .4byte gUnknown_020387B2
- thumb_func_end sub_80BAA48
-
- thumb_func_start sub_80BACDC
-sub_80BACDC: @ 80BACDC
- push {r4-r6,lr}
- sub sp, 0x40
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080BAD50 @ =gUnknown_083D039C
- mov r0, sp
- movs r2, 0x40
- bl memcpy
- ldr r6, _080BAD54 @ =gUnknown_020387B4
- ldr r5, _080BAD58 @ =gUnknown_020387B3
- movs r1, 0
- ldrsb r1, [r5, r1]
- lsls r1, 2
- adds r1, r6
- lsls r4, 24
- asrs r4, 24
- ldr r0, [r1]
- adds r0, r4
- str r0, [r1]
- movs r2, 0
- ldrsb r2, [r5, r2]
- lsls r0, r2, 2
- adds r3, r0, r6
- lsls r0, r2, 1
- adds r0, 0x1
- lsls r0, 2
- add r0, sp
- ldr r1, [r3]
- ldr r0, [r0]
- cmp r1, r0
- ble _080BAD26
- lsls r0, r2, 3
- add r0, sp
- ldr r0, [r0]
- str r0, [r3]
-_080BAD26:
- movs r2, 0
- ldrsb r2, [r5, r2]
- lsls r0, r2, 2
- adds r3, r0, r6
- lsls r0, r2, 3
- add r0, sp
- ldr r1, [r3]
- ldr r0, [r0]
- cmp r1, r0
- bge _080BAD46
- lsls r0, r2, 1
- adds r0, 0x1
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- str r0, [r3]
-_080BAD46:
- add sp, 0x40
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BAD50: .4byte gUnknown_083D039C
-_080BAD54: .4byte gUnknown_020387B4
-_080BAD58: .4byte gUnknown_020387B3
- thumb_func_end sub_80BACDC
-
- thumb_func_start sub_80BAD5C
-sub_80BAD5C: @ 80BAD5C
- push {r4,lr}
- ldr r4, _080BAE00 @ =gUnknown_020387B4
- ldr r0, [r4]
- adds r0, 0x1
- movs r1, 0xB
- movs r2, 0x1
- movs r3, 0x5
- bl sub_80BAE78
- ldr r0, [r4, 0x4]
- movs r1, 0xB
- movs r2, 0x3
- movs r3, 0x5
- bl sub_80BAE78
- ldr r0, [r4, 0x8]
- movs r1, 0xB
- movs r2, 0x5
- movs r3, 0x5
- bl sub_80BAE78
- ldr r0, [r4, 0xC]
- movs r1, 0xB
- movs r2, 0x7
- movs r3, 0x5
- bl sub_80BAE78
- ldr r0, [r4, 0x10]
- movs r1, 0xB
- movs r2, 0x9
- movs r3, 0x5
- bl sub_80BAE78
- ldr r0, [r4, 0x14]
- movs r1, 0xB
- movs r2, 0xB
- movs r3, 0x5
- bl sub_80BAE78
- ldr r0, [r4, 0x18]
- movs r1, 0xB
- movs r2, 0xD
- movs r3, 0x5
- bl sub_80BAE78
- ldr r0, [r4, 0x1C]
- movs r1, 0xB
- movs r2, 0xF
- movs r3, 0x5
- bl sub_80BAE78
- ldr r0, [r4, 0x20]
- movs r1, 0xB
- movs r2, 0x11
- movs r3, 0x5
- bl sub_80BAE78
- ldr r0, _080BAE04 @ =gUnknown_020387B1
- ldrb r0, [r0]
- movs r1, 0x1B
- movs r2, 0x10
- movs r3, 0x1
- bl sub_80BAE78
- ldr r0, _080BAE08 @ =gUnknown_020387D8
- ldrb r0, [r0]
- movs r1, 0x1B
- movs r2, 0xE
- movs r3, 0x1
- bl sub_80BAE78
- ldr r0, _080BAE0C @ =gUnknown_020387D9
- ldrb r0, [r0]
- movs r1, 0x1B
- movs r2, 0xC
- movs r3, 0x1
- bl sub_80BAE78
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BAE00: .4byte gUnknown_020387B4
-_080BAE04: .4byte gUnknown_020387B1
-_080BAE08: .4byte gUnknown_020387D8
-_080BAE0C: .4byte gUnknown_020387D9
- thumb_func_end sub_80BAD5C
-
- thumb_func_start sub_80BAE10
-sub_80BAE10: @ 80BAE10
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r1, _080BAE6C @ =gUnknown_083D03DC
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- add r0, sp, 0x4
- mov r8, r0
- ldr r1, _080BAE70 @ =gUnknown_083D03DE
- movs r2, 0x2
- bl memcpy
- ldr r6, _080BAE74 @ =gUnknown_083D0300
- lsls r4, 1
- adds r0, r4, r6
- ldrb r1, [r0]
- adds r4, 0x1
- adds r4, r6
- ldrb r2, [r4]
- mov r0, r8
- bl MenuPrint
- lsls r5, 1
- adds r0, r5, r6
- ldrb r1, [r0]
- adds r5, 0x1
- adds r5, r6
- ldrb r2, [r5]
- mov r0, sp
- bl MenuPrint
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BAE6C: .4byte gUnknown_083D03DC
-_080BAE70: .4byte gUnknown_083D03DE
-_080BAE74: .4byte gUnknown_083D0300
- thumb_func_end sub_80BAE10
-
- thumb_func_start sub_80BAE78
-sub_80BAE78: @ 80BAE78
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- mov r8, r0
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 24
- lsrs r7, r3, 24
- mov r1, sp
- ldr r0, _080BAF80 @ =gUnknown_083D03E0
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- movs r5, 0
- add r0, sp, 0x18
- mov r9, r0
- cmp r5, r7
- bgt _080BAEC0
- mov r4, r9
- movs r3, 0
-_080BAEAC:
- lsls r0, r5, 24
- asrs r0, 24
- adds r1, r4, r0
- strb r3, [r1]
- adds r0, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- asrs r0, 24
- cmp r0, r7
- ble _080BAEAC
-_080BAEC0:
- adds r0, r7, 0x1
- add r0, r9
- movs r1, 0xFF
- strb r1, [r0]
- movs r1, 0
- mov r3, r8
- cmp r3, 0
- bge _080BAED6
- negs r3, r3
- mov r8, r3
- movs r1, 0x1
-_080BAED6:
- movs r4, 0
- mov r10, r4
- cmp r7, 0x1
- bne _080BAEE2
- movs r5, 0x1
- mov r10, r5
-_080BAEE2:
- subs r0, r7, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 24
- lsls r6, 24
- str r6, [sp, 0x24]
- lsls r2, 24
- str r2, [sp, 0x28]
- cmp r0, 0
- blt _080BAF62
- str r1, [sp, 0x20]
-_080BAEF8:
- asrs r6, r0, 24
- lsls r0, r6, 2
- add r0, sp
- ldr r1, [r0]
- mov r0, r8
- bl __divsi3
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r0, 0
- bne _080BAF1A
- mov r0, r10
- cmp r0, 0
- bne _080BAF1A
- lsls r4, r5, 24
- cmp r6, 0
- bne _080BAF46
-_080BAF1A:
- lsls r4, r5, 24
- ldr r3, [sp, 0x20]
- cmp r3, 0
- beq _080BAF34
- mov r5, r10
- cmp r5, 0
- bne _080BAF34
- asrs r0, r4, 24
- subs r0, r7, r0
- subs r0, 0x1
- add r0, r9
- movs r1, 0xAE
- strb r1, [r0]
-_080BAF34:
- asrs r1, r4, 24
- subs r1, r7, r1
- add r1, r9
- lsls r0, r2, 24
- asrs r0, 24
- subs r0, 0x5F
- strb r0, [r1]
- movs r0, 0x1
- mov r10, r0
-_080BAF46:
- asrs r4, 24
- lsls r0, r4, 2
- add r0, sp
- ldr r1, [r0]
- mov r0, r8
- bl __modsi3
- mov r8, r0
- subs r4, 0x1
- lsls r4, 24
- lsrs r5, r4, 24
- lsls r0, r5, 24
- cmp r0, 0
- bge _080BAEF8
-_080BAF62:
- ldr r3, [sp, 0x24]
- lsrs r1, r3, 24
- ldr r4, [sp, 0x28]
- lsrs r2, r4, 24
- mov r0, r9
- bl MenuPrint
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BAF80: .4byte gUnknown_083D03E0
- thumb_func_end sub_80BAE78
-
- thumb_func_start sub_80BAF84
-sub_80BAF84: @ 80BAF84
- push {r4-r6,lr}
- sub sp, 0x14
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080BB01C @ =gOtherText_SE
- mov r0, sp
- movs r2, 0x3
- bl memcpy
- add r6, sp, 0x4
- ldr r1, _080BB020 @ =gOtherText_Pan
- adds r0, r6, 0
- movs r2, 0x4
- bl memcpy
- add r5, sp, 0x8
- ldr r1, _080BB024 @ =gUnknown_083D0381
- adds r0, r5, 0
- movs r2, 0x9
- bl memcpy
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xC5
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- mov r0, sp
- movs r1, 0x3
- movs r2, 0x2
- bl MenuPrint
- adds r0, r6, 0
- movs r1, 0x3
- movs r2, 0x4
- bl MenuPrint
- adds r0, r5, 0
- movs r1, 0x3
- movs r2, 0x8
- bl MenuPrint
- ldr r1, _080BB028 @ =REG_WIN0H
- movs r0, 0xF0
- strh r0, [r1]
- adds r1, 0x4
- movs r0, 0xA0
- strh r0, [r1]
- ldr r1, _080BB02C @ =gUnknown_020387B4
- movs r0, 0x1
- str r0, [r1]
- movs r0, 0
- str r0, [r1, 0x8]
- str r0, [r1, 0x1C]
- str r0, [r1, 0x18]
- str r0, [r1, 0x14]
- bl sub_80BB1D4
- ldr r1, _080BB030 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BB034 @ =sub_80BB038
- str r1, [r0]
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB01C: .4byte gOtherText_SE
-_080BB020: .4byte gOtherText_Pan
-_080BB024: .4byte gUnknown_083D0381
-_080BB028: .4byte REG_WIN0H
-_080BB02C: .4byte gUnknown_020387B4
-_080BB030: .4byte gTasks
-_080BB034: .4byte sub_80BB038
- thumb_func_end sub_80BAF84
-
- thumb_func_start sub_80BB038
-sub_80BB038: @ 80BB038
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_80BB1D4
- ldr r2, _080BB058 @ =gUnknown_020387B4
- ldr r0, [r2, 0x18]
- cmp r0, 0
- beq _080BB0A2
- ldr r0, [r2, 0x14]
- cmp r0, 0
- beq _080BB05C
- subs r0, 0x1
- str r0, [r2, 0x14]
- b _080BB0A2
- .align 2, 0
-_080BB058: .4byte gUnknown_020387B4
-_080BB05C:
- ldr r0, _080BB088 @ =gUnknown_083D03F8
- ldr r1, [r2, 0x8]
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x80
- negs r0, r0
- cmp r1, r0
- beq _080BB08C
- cmp r1, 0x7F
- bne _080BB0A2
- ldr r0, [r2, 0x1C]
- adds r0, 0x2
- str r0, [r2, 0x1C]
- cmp r0, 0x3E
- bgt _080BB0A2
- lsls r0, 24
- asrs r0, 24
- bl SE12PanpotControl
- b _080BB0A2
- .align 2, 0
-_080BB088: .4byte gUnknown_083D03F8
-_080BB08C:
- ldr r0, [r2, 0x1C]
- subs r1, r0, 0x2
- str r1, [r2, 0x1C]
- movs r0, 0x40
- negs r0, r0
- cmp r1, r0
- ble _080BB0A2
- lsls r0, r1, 24
- asrs r0, 24
- bl SE12PanpotControl
-_080BB0A2:
- ldr r1, _080BB0EC @ =gMain
- ldrh r3, [r1, 0x2E]
- movs r0, 0x2
- ands r0, r3
- lsls r0, 16
- lsrs r4, r0, 16
- adds r7, r1, 0
- cmp r4, 0
- beq _080BB104
- movs r1, 0x80
- lsls r1, 19
- ldr r2, _080BB0F0 @ =0x00007140
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x40
- ldr r2, _080BB0F4 @ =0x000011df
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x4
- ldr r2, _080BB0F8 @ =0x0000011f
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _080BB0FC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BB100 @ =sub_80BA258
- str r1, [r0]
- b _080BB1C8
- .align 2, 0
-_080BB0EC: .4byte gMain
-_080BB0F0: .4byte 0x00007140
-_080BB0F4: .4byte 0x000011df
-_080BB0F8: .4byte 0x0000011f
-_080BB0FC: .4byte gTasks
-_080BB100: .4byte sub_80BA258
-_080BB104:
- movs r6, 0x1
- adds r2, r6, 0
- ands r2, r3
- cmp r2, 0
- beq _080BB15E
- ldr r0, _080BB138 @ =gUnknown_083D03F8
- ldr r5, _080BB13C @ =gUnknown_020387B4
- ldr r1, [r5, 0x8]
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x80
- negs r0, r0
- cmp r1, r0
- beq _080BB140
- cmp r1, 0x7F
- bne _080BB154
- ldrh r0, [r5]
- movs r4, 0x40
- negs r4, r4
- adds r1, r4, 0
- bl PlaySE12WithPanning
- str r4, [r5, 0x1C]
- b _080BB14C
- .align 2, 0
-_080BB138: .4byte gUnknown_083D03F8
-_080BB13C: .4byte gUnknown_020387B4
-_080BB140:
- ldrh r0, [r5]
- movs r1, 0x3F
- bl PlaySE12WithPanning
- movs r0, 0x3F
- str r0, [r5, 0x1C]
-_080BB14C:
- str r6, [r5, 0x18]
- movs r0, 0x1E
- str r0, [r5, 0x14]
- b _080BB1C8
-_080BB154:
- ldrh r0, [r5]
- bl PlaySE12WithPanning
- str r4, [r5, 0x18]
- b _080BB1C8
-_080BB15E:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r3
- cmp r0, 0
- beq _080BB176
- ldr r1, _080BB1AC @ =gUnknown_020387B4
- ldr r0, [r1, 0x8]
- adds r0, 0x1
- str r0, [r1, 0x8]
- cmp r0, 0x4
- ble _080BB176
- str r2, [r1, 0x8]
-_080BB176:
- ldrh r1, [r7, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080BB192
- ldr r1, _080BB1AC @ =gUnknown_020387B4
- ldr r0, [r1, 0x8]
- subs r0, 0x1
- str r0, [r1, 0x8]
- cmp r0, 0
- bge _080BB192
- movs r0, 0x4
- str r0, [r1, 0x8]
-_080BB192:
- ldrh r1, [r7, 0x30]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080BB1B0
- ldr r1, _080BB1AC @ =gUnknown_020387B4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0xF7
- ble _080BB1C8
- movs r0, 0
- b _080BB1C6
- .align 2, 0
-_080BB1AC: .4byte gUnknown_020387B4
-_080BB1B0:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080BB1C8
- ldr r1, _080BB1D0 @ =gUnknown_020387B4
- ldr r0, [r1]
- subs r0, 0x1
- str r0, [r1]
- cmp r0, 0
- bge _080BB1C8
- movs r0, 0xF7
-_080BB1C6:
- str r0, [r1]
-_080BB1C8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB1D0: .4byte gUnknown_020387B4
- thumb_func_end sub_80BB038
-
- thumb_func_start sub_80BB1D4
-sub_80BB1D4: @ 80BB1D4
- push {r4,r5,lr}
- sub sp, 0x10
- ldr r1, _080BB218 @ =gOtherText_LR
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- add r5, sp, 0x8
- ldr r1, _080BB21C @ =gOtherText_RL
- adds r0, r5, 0
- movs r2, 0x5
- bl memcpy
- ldr r4, _080BB220 @ =gUnknown_020387B4
- ldr r0, [r4]
- movs r1, 0x7
- movs r2, 0x2
- movs r3, 0x3
- bl sub_80BAE78
- ldr r1, _080BB224 @ =gUnknown_083D03F8
- ldr r0, [r4, 0x8]
- adds r0, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0x80
- negs r0, r0
- cmp r1, r0
- beq _080BB228
- cmp r1, 0x7F
- bne _080BB234
- mov r0, sp
- b _080BB22A
- .align 2, 0
-_080BB218: .4byte gOtherText_LR
-_080BB21C: .4byte gOtherText_RL
-_080BB220: .4byte gUnknown_020387B4
-_080BB224: .4byte gUnknown_083D03F8
-_080BB228:
- adds r0, r5, 0
-_080BB22A:
- movs r1, 0x7
- movs r2, 0x4
- bl MenuPrint
- b _080BB240
-_080BB234:
- adds r0, r1, 0
- movs r1, 0x7
- movs r2, 0x4
- movs r3, 0x3
- bl sub_80BAE78
-_080BB240:
- bl IsSEPlaying
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xC
- movs r2, 0x8
- movs r3, 0x1
- bl sub_80BAE78
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80BB1D4
-
- thumb_func_start sub_80BB25C
-sub_80BB25C: @ 80BB25C
- push {r4-r6,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080BB374 @ =gWindowConfig_81E6C3C
- bl SetUpWindowConfig
- ldr r0, _080BB378 @ =gWindowConfig_81E6CE4
- bl InitMenuWindow
- ldr r1, _080BB37C @ =gUnknown_03005D34
- movs r0, 0x1
- strh r0, [r1]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r1, _080BB380 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0x80
- lsls r1, 6
- orrs r0, r1
- ldr r1, _080BB384 @ =0xff00ffff
- ands r0, r1
- movs r1, 0xE8
- lsls r1, 13
- orrs r0, r1
- ldr r1, _080BB388 @ =0x00ffffff
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 20
- orrs r0, r1
- str r0, [sp, 0x4]
- ldr r1, _080BB38C @ =0xffff00ff
- ldr r0, [sp, 0x8]
- ands r0, r1
- movs r1, 0xF0
- lsls r1, 5
- orrs r0, r1
- ldr r1, _080BB390 @ =0xffffff00
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- str r0, [sp, 0x8]
- movs r1, 0
- ldr r0, _080BB394 @ =gUnknown_03005E98
- strb r1, [r0]
- add r4, sp, 0xC
-_080BB2BE:
- add r0, sp, 0x4
- movs r1, 0x3
- bl sub_8119E3C
- lsls r0, 24
- cmp r0, 0
- beq _080BB2BE
- ldr r1, _080BB380 @ =0xffff0000
- ldr r0, [sp, 0xC]
- ands r0, r1
- ldr r1, _080BB384 @ =0xff00ffff
- ands r0, r1
- movs r1, 0xF0
- lsls r1, 12
- orrs r0, r1
- ldr r1, _080BB388 @ =0x00ffffff
- ands r0, r1
- movs r1, 0xD0
- lsls r1, 20
- orrs r0, r1
- str r0, [sp, 0xC]
- ldr r1, _080BB390 @ =0xffffff00
- ldr r0, [r4, 0x4]
- ands r0, r1
- movs r1, 0xC
- orrs r0, r1
- ldr r1, _080BB38C @ =0xffff00ff
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 4
- orrs r0, r1
- str r0, [r4, 0x4]
- movs r1, 0
- ldr r0, _080BB394 @ =gUnknown_03005E98
- strb r1, [r0]
- lsls r5, r6, 2
-_080BB306:
- adds r0, r4, 0
- movs r1, 0x2
- bl ShowPokedexCryScreen
- lsls r0, 24
- cmp r0, 0
- beq _080BB306
- movs r0, 0
- movs r1, 0x10
- movs r2, 0x5
- movs r3, 0x13
- bl MenuDrawTextWindow
- bl sub_80BB494
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _080BB398 @ =REG_BG2HOFS
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- ldr r1, _080BB39C @ =REG_BG2CNT
- ldr r2, _080BB3A0 @ =0x00000f01
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _080BB3A4 @ =0x00001d03
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xE
- adds r2, 0x3D
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _080BB3A8 @ =gMPlay_BGM
- movs r1, 0x2
- bl m4aMPlayFadeOutTemporarily
- ldr r1, _080BB3AC @ =gTasks
- adds r0, r5, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BB3B0 @ =sub_80BB3B4
- str r1, [r0]
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB374: .4byte gWindowConfig_81E6C3C
-_080BB378: .4byte gWindowConfig_81E6CE4
-_080BB37C: .4byte gUnknown_03005D34
-_080BB380: .4byte 0xffff0000
-_080BB384: .4byte 0xff00ffff
-_080BB388: .4byte 0x00ffffff
-_080BB38C: .4byte 0xffff00ff
-_080BB390: .4byte 0xffffff00
-_080BB394: .4byte gUnknown_03005E98
-_080BB398: .4byte REG_BG2HOFS
-_080BB39C: .4byte REG_BG2CNT
-_080BB3A0: .4byte 0x00000f01
-_080BB3A4: .4byte 0x00001d03
-_080BB3A8: .4byte gMPlay_BGM
-_080BB3AC: .4byte gTasks
-_080BB3B0: .4byte sub_80BB3B4
- thumb_func_end sub_80BB25C
-
- thumb_func_start sub_80BB3B4
-sub_80BB3B4: @ 80BB3B4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x3
- bl sub_8119F88
- ldr r4, _080BB478 @ =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080BB3D4
- ldr r0, _080BB47C @ =gUnknown_03005D34
- ldrh r0, [r0]
- bl sub_811A050
-_080BB3D4:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080BB3E4
- bl StopCryAndClearCrySongs
-_080BB3E4:
- ldrh r1, [r4, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080BB408
- ldr r1, _080BB47C @ =gUnknown_03005D34
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bne _080BB404
- movs r2, 0xC0
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
-_080BB404:
- bl sub_80BB494
-_080BB408:
- ldr r0, _080BB478 @ =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080BB42E
- ldr r2, _080BB47C @ =gUnknown_03005D34
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 17
- cmp r0, r1
- bls _080BB42A
- movs r0, 0x1
- strh r0, [r2]
-_080BB42A:
- bl sub_80BB494
-_080BB42E:
- ldr r0, _080BB478 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BB472
- movs r1, 0x80
- lsls r1, 19
- ldr r2, _080BB480 @ =0x00007140
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x40
- ldr r2, _080BB484 @ =0x000011df
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x4
- ldr r2, _080BB488 @ =0x0000011f
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _080BB48C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BB490 @ =sub_80BA258
- str r1, [r0]
- bl DestroyCryMeterNeedleSprite
-_080BB472:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB478: .4byte gMain
-_080BB47C: .4byte gUnknown_03005D34
-_080BB480: .4byte 0x00007140
-_080BB484: .4byte 0x000011df
-_080BB488: .4byte 0x0000011f
-_080BB48C: .4byte gTasks
-_080BB490: .4byte sub_80BA258
- thumb_func_end sub_80BB3B4
-
- thumb_func_start sub_80BB494
-sub_80BB494: @ 80BB494
- push {lr}
- ldr r0, _080BB4A8 @ =gUnknown_03005D34
- ldrh r0, [r0]
- movs r1, 0x1
- movs r2, 0x11
- movs r3, 0x3
- bl sub_80BAE78
- pop {r0}
- bx r0
- .align 2, 0
-_080BB4A8: .4byte gUnknown_03005D34
- thumb_func_end sub_80BB494
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/sound_check_menu.s b/data/sound_check_menu.s
deleted file mode 100644
index a91f55d04..000000000
--- a/data/sound_check_menu.s
+++ /dev/null
@@ -1,121 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2 @ object file boundary?
-
-gDebugText_SoundCheckJap:: @ 83D02C8
- .string "サウンドチェック$" @ Sound Check
-
-gDebugText_BGM:: @ 83D02D1
- .string "BGM$"
-
-gDebugText_SE:: @ 83D02D5
- .string "SE $"
-
-gUnknown_083D02D9:: @ 83D02D9
- .string "A‥さいせい B‥おわり$"
-
-gDebugText_UpDown:: @ 83D02E6
- .string "L‥UP R‥DOWN$"
-
-gDebugText_DriverTest:: @ 83D02F2
- .string "R‥DRIVER-TEST$"
-
-gUnknown_083D0300:: @ 83D0300
- .byte 1, 1
- .byte 1, 3
- .byte 1, 5
- .byte 1, 7
- .byte 1, 9
- .byte 1, 11
- .byte 1, 13
- .byte 1, 15
- .byte 1, 17
-
-gUnknown_083D0312:: @ 83D0312
- .string "Bぼたんで もどる$"
-
-gUnknown_083D031C:: @ 83D031C
- .string "Aぼたんで さいせい$"
-
-gDebugText_Voice:: @ 83D0327
- .string "VOICE‥‥‥‥$"
-
-gDebugText_Volume:: @ 83D0331
- .string "VOLUME‥‥‥$"
-
-gDebugText_Panpot:: @ 83D033B
- .string "PANPOT‥‥‥$"
-
-gDebugText_Pitch:: @ 83D0345
- .string "PITCH‥‥‥‥$"
-
-gDebugText_Length:: @ 83D034F
- .string "LENGTH‥‥‥$"
-
-gDebugText_Release:: @ 83D0359
- .string "RELEASE‥‥$"
-
-gDebugText_Progress:: @ 83D0363
- .string "PROGRESS‥$"
-
-gDebugText_Chorus:: @ 83D036D
- .string "CHORUS‥‥‥$"
-
-gDebugText_Priority:: @ 83D0377
- .string "PRIORITY‥$"
-
-gUnknown_083D0381:: @ 83D0381
- .string "さいせいちゆう‥$" @ 再生中 (playing)
-
-gUnknown_083D038A:: @ 83D038A
- .string "はんてん‥‥‥‥$" @ 反転 (reverse)
-
-gUnknown_083D0393:: @ 83D0393
- .string "すてれお‥‥‥‥$" @ stereo
-
- .align 2
-gUnknown_083D039C:: @ 83D039C
- .4byte 0, 387
- .4byte 0, 127
- .4byte -127, 127
- .4byte -128, 32639
- .4byte 0, 65535
- .4byte 0, 255
- .4byte 0, 65535
- .4byte -64, 63
-
-gUnknown_083D03DC:: @ 83D03DC
- .string "▶$"
-
-gUnknown_083D03DE:: @ 83D03DE
- .string " $"
-
- .align 2
-gUnknown_083D03E0:: @ 83D03E0
- .4byte 1
- .4byte 10
- .4byte 100
- .4byte 1000
- .4byte 10000
- .4byte 100000
-
-gUnknown_083D03F8:: @ 83D03F8
- .byte 0x3F, 0x00, 0xC0, 0x7F, 0x80 @ stereo panning
-
-gOtherText_SE:: @ 83D03FD
- .string "SE$"
-
-gOtherText_Pan:: @ 83D0400
- .string "PAN$"
-
-gOtherText_LR:: @ 83D0404
- .string " LR$"
-
-gOtherText_RL:: @ 83D0409
- .string " RL$"
-
-@ 83D040E
- .include "data/text/song_names.inc"
diff --git a/data/text/song_names.inc b/data/text/song_names.inc
deleted file mode 100644
index 29fad36e1..000000000
--- a/data/text/song_names.inc
+++ /dev/null
@@ -1,1105 +0,0 @@
-BGMName_STOP:
- .string "STOP$"
-BGMName_TETSUJI:
- .string "TETSUJI$"
-BGMName_FIELD13:
- .string "FIELD13$"
-BGMName_KACHI22:
- .string "KACHI22$"
-BGMName_KACHI2:
- .string "KACHI2$"
-BGMName_KACHI3:
- .string "KACHI3$"
-BGMName_KACHI5:
- .string "KACHI5$"
-BGMName_PCC:
- .string "PCC$"
-BGMName_NIBI:
- .string "NIBI$"
-BGMName_SUIKUN:
- .string "SUIKUN$"
-BGMName_DOORO1:
- .string "DOORO1$"
-BGMName_DOORO_X1:
- .string "DOORO-X1$"
-BGMName_DOORO_X3:
- .string "DOORO-X3$"
-BGMName_MACHI_S2:
- .string "MACHI-S2$"
-BGMName_MACHI_S4:
- .string "MACHI-S4$"
-BGMName_GIM:
- .string "GIM$"
-BGMName_NAMINORI:
- .string "NAMINORI$"
-BGMName_DAN01:
- .string "DAN01$"
-BGMName_FANFA1:
- .string "FANFA1$"
-BGMName_ME_ASA:
- .string "ME-ASA$"
-BGMName_ME_BACHI:
- .string "ME-BACHI$"
-BGMName_FANFA4:
- .string "FANFA4$"
-BGMName_FANFA5:
- .string "FANFA5$"
-BGMName_ME_WAZA:
- .string "ME-WAZA$"
-BGMName_BIJYUTU:
- .string "BIJYUTU$"
-BGMName_DOORO_X4:
- .string "DOORO-X4$"
-BGMName_FUNE_KAN:
- .string "FUNE-KAN$"
-BGMName_ME_SHINKA:
- .string "ME-SHINKA$"
-BGMName_SHINKA:
- .string "SHINKA$"
-BGMName_ME_WASURE:
- .string "ME-WASURE$"
-BGMName_SYOUJOEYE:
- .string "SYOUJOEYE$"
-BGMName_BOYEYE:
- .string "BOYEYE$"
-BGMName_DAN02:
- .string "DAN02$"
-BGMName_MACHI_S3:
- .string "MACHI-S3$"
-BGMName_ODAMAKI:
- .string "ODAMAKI$"
-BGMName_B_TOWER:
- .string "B-TOWER$"
-BGMName_SWIMEYE:
- .string "SWIMEYE$"
-BGMName_DAN03:
- .string "DAN03$"
-BGMName_ME_KINOMI:
- .string "ME-KINOMI$"
-BGMName_ME_TAMA:
- .string "ME-TAMA$"
-BGMName_ME_B_BIG:
- .string "ME-B-BIG$"
-BGMName_ME_B_SMALL:
- .string "ME-B-SMALL$"
-BGMName_ME_ZANNEN:
- .string "ME-ZANNEN$"
-BGMName_BD_TIME:
- .string "BD-TIME$"
-BGMName_TEST1:
- .string "TEST1$"
-BGMName_TEST2:
- .string "TEST2$"
-BGMName_TEST3:
- .string "TEST3$"
-BGMName_TEST4:
- .string "TEST4$"
-BGMName_TEST:
- .string "TEST$"
-BGMName_GOMACHI0:
- .string "GOMACHI0$"
-BGMName_GOTOWN:
- .string "GOTOWN$"
-BGMName_POKECEN:
- .string "POKECEN$"
-BGMName_NEXTROAD:
- .string "NEXTROAD$"
-BGMName_GRANROAD:
- .string "GRANROAD$"
-BGMName_CYCLING:
- .string "CYCLING$"
-BGMName_FRIENDLY:
- .string "FRIENDLY$"
-BGMName_MISHIRO:
- .string "MISHIRO$"
-BGMName_TOZAN:
- .string "TOZAN$"
-BGMName_GIRLEYE:
- .string "GIRLEYE$"
-BGMName_MINAMO:
- .string "MINAMO$"
-BGMName_ASHROAD:
- .string "ASHROAD$"
-BGMName_EVENT0:
- .string "EVENT0$"
-BGMName_DEEPDEEP:
- .string "DEEPDEEP$"
-BGMName_KACHI1:
- .string "KACHI1$"
-BGMName_TITLE3:
- .string "TITLE3$"
-BGMName_DEMO1:
- .string "DEMO1$"
-BGMName_GIRL_SUP:
- .string "GIRL-SUP$"
-BGMName_HAGESHII:
- .string "HAGESHII$"
-BGMName_KAKKOII:
- .string "KAKKOII$"
-BGMName_KAZANBAI:
- .string "KAZANBAI$"
-BGMName_AQA_0:
- .string "AQA-0$"
-BGMName_TSURETEK:
- .string "TSURETEK$"
-BGMName_BOY_SUP:
- .string "BOY-SUP$"
-BGMName_RAINBOW:
- .string "RAINBOW$"
-BGMName_AYASII:
- .string "AYASII$"
-BGMName_KACHI4:
- .string "KACHI4$"
-BGMName_ROPEWAY:
- .string "ROPEWAY$"
-BGMName_CASINO:
- .string "CASINO$"
-BGMName_HIGHTOWN:
- .string "HIGHTOWN$"
-BGMName_SAFARI:
- .string "SAFARI$"
-BGMName_C_ROAD:
- .string "C-ROAD$"
-BGMName_AJITO:
- .string "AJITO$"
-BGMName_M_BOAT:
- .string "M-BOAT$"
-BGMName_M_DUNGON:
- .string "M-DUNGON$"
-BGMName_FINECITY:
- .string "FINECITY$"
-BGMName_MACHUPI:
- .string "MACHUPI$"
-BGMName_P_SCHOOL:
- .string "P-SCHOOL$"
-BGMName_DENDOU:
- .string "DENDOU$"
-BGMName_TONEKUSA:
- .string "TONEKUSA$"
-BGMName_MABOROSI:
- .string "MABOROSI$"
-BGMName_CON_FAN:
- .string "CON-FAN$"
-BGMName_CONTEST0:
- .string "CONTEST0$"
-BGMName_MGM0:
- .string "MGM0$"
-BGMName_T_BATTLE:
- .string "T-BATTLE$"
-BGMName_OOAME:
- .string "OOAME$"
-BGMName_HIDERI:
- .string "HIDERI$"
-BGMName_RUNECITY:
- .string "RUNECITY$"
-BGMName_CON_K:
- .string "CON-K$"
-BGMName_EIKOU_R:
- .string "EIKOU-R$"
-BGMName_KARAKURI:
- .string "KARAKURI$"
-BGMName_HUTAGO:
- .string "HUTAGO$"
-BGMName_SITENNOU:
- .string "SITENNOU$"
-BGMName_YAMA_EYE:
- .string "YAMA-EYE$"
-BGMName_CONLOBBY:
- .string "CONLOBBY$"
-BGMName_INTER_V:
- .string "INTER-V$"
-BGMName_DAIGO:
- .string "DAIGO$"
-BGMName_THANKFOR:
- .string "THANKFOR$"
-BGMName_END:
- .string "END$"
-BGMName_BATTLE27:
- .string "BATTLE27$"
-BGMName_BATTLE31:
- .string "BATTLE31$"
-BGMName_BATTLE20:
- .string "BATTLE20$"
-BGMName_BATTLE32:
- .string "BATTLE32$"
-BGMName_BATTLE33:
- .string "BATTLE33$"
-BGMName_BATTLE36:
- .string "BATTLE36$"
-BGMName_BATTLE34:
- .string "BATTLE34$"
-BGMName_BATTLE35:
- .string "BATTLE35$"
-BGMName_BATTLE38:
- .string "BATTLE38$"
-BGMName_BATTLE30:
- .string "BATTLE30$"
-
- .align 2
-gBGMNames:: @ 83D07AC
- .word BGMName_STOP
- .word BGMName_TETSUJI
- .word BGMName_FIELD13
- .word BGMName_KACHI22
- .word BGMName_KACHI2
- .word BGMName_KACHI3
- .word BGMName_KACHI5
- .word BGMName_PCC
- .word BGMName_NIBI
- .word BGMName_SUIKUN
- .word BGMName_DOORO1
- .word BGMName_DOORO_X1
- .word BGMName_DOORO_X3
- .word BGMName_MACHI_S2
- .word BGMName_MACHI_S4
- .word BGMName_GIM
- .word BGMName_NAMINORI
- .word BGMName_DAN01
- .word BGMName_FANFA1
- .word BGMName_ME_ASA
- .word BGMName_ME_BACHI
- .word BGMName_FANFA4
- .word BGMName_FANFA5
- .word BGMName_ME_WAZA
- .word BGMName_BIJYUTU
- .word BGMName_DOORO_X4
- .word BGMName_FUNE_KAN
- .word BGMName_ME_SHINKA
- .word BGMName_SHINKA
- .word BGMName_ME_WASURE
- .word BGMName_SYOUJOEYE
- .word BGMName_BOYEYE
- .word BGMName_DAN02
- .word BGMName_MACHI_S3
- .word BGMName_ODAMAKI
- .word BGMName_B_TOWER
- .word BGMName_SWIMEYE
- .word BGMName_DAN03
- .word BGMName_ME_KINOMI
- .word BGMName_ME_TAMA
- .word BGMName_ME_B_BIG
- .word BGMName_ME_B_SMALL
- .word BGMName_ME_ZANNEN
- .word BGMName_BD_TIME
- .word BGMName_TEST1
- .word BGMName_TEST2
- .word BGMName_TEST3
- .word BGMName_TEST4
- .word BGMName_TEST
- .word BGMName_GOMACHI0
- .word BGMName_GOTOWN
- .word BGMName_POKECEN
- .word BGMName_NEXTROAD
- .word BGMName_GRANROAD
- .word BGMName_CYCLING
- .word BGMName_FRIENDLY
- .word BGMName_MISHIRO
- .word BGMName_TOZAN
- .word BGMName_GIRLEYE
- .word BGMName_MINAMO
- .word BGMName_ASHROAD
- .word BGMName_EVENT0
- .word BGMName_DEEPDEEP
- .word BGMName_KACHI1
- .word BGMName_TITLE3
- .word BGMName_DEMO1
- .word BGMName_GIRL_SUP
- .word BGMName_HAGESHII
- .word BGMName_KAKKOII
- .word BGMName_KAZANBAI
- .word BGMName_AQA_0
- .word BGMName_TSURETEK
- .word BGMName_BOY_SUP
- .word BGMName_RAINBOW
- .word BGMName_AYASII
- .word BGMName_KACHI4
- .word BGMName_ROPEWAY
- .word BGMName_CASINO
- .word BGMName_HIGHTOWN
- .word BGMName_SAFARI
- .word BGMName_C_ROAD
- .word BGMName_AJITO
- .word BGMName_M_BOAT
- .word BGMName_M_DUNGON
- .word BGMName_FINECITY
- .word BGMName_MACHUPI
- .word BGMName_P_SCHOOL
- .word BGMName_DENDOU
- .word BGMName_TONEKUSA
- .word BGMName_MABOROSI
- .word BGMName_CON_FAN
- .word BGMName_CONTEST0
- .word BGMName_MGM0
- .word BGMName_T_BATTLE
- .word BGMName_OOAME
- .word BGMName_HIDERI
- .word BGMName_RUNECITY
- .word BGMName_CON_K
- .word BGMName_EIKOU_R
- .word BGMName_KARAKURI
- .word BGMName_HUTAGO
- .word BGMName_SITENNOU
- .word BGMName_YAMA_EYE
- .word BGMName_CONLOBBY
- .word BGMName_INTER_V
- .word BGMName_DAIGO
- .word BGMName_THANKFOR
- .word BGMName_END
- .word BGMName_BATTLE27
- .word BGMName_BATTLE31
- .word BGMName_BATTLE20
- .word BGMName_BATTLE32
- .word BGMName_BATTLE33
- .word BGMName_BATTLE36
- .word BGMName_BATTLE34
- .word BGMName_BATTLE35
- .word BGMName_BATTLE38
- .word BGMName_BATTLE30
-
-SEName_STOP:
- .string "STOP$"
-SEName_KAIFUKU:
- .string "KAIFUKU$"
-SEName_PC_LOGON:
- .string "PC-LOGON$"
-SEName_PC_OFF:
- .string "PC-OFF$"
-SEName_PC_ON:
- .string "PC-ON$"
-SEName_SELECT:
- .string "SELECT$"
-SEName_WIN_OPEN:
- .string "WIN-OPEN$"
-SEName_WALL_HIT:
- .string "WALL-HIT$"
-SEName_DOOR:
- .string "DOOR$"
-SEName_KAIDAN:
- .string "KAIDAN$"
-SEName_DANSA:
- .string "DANSA$"
-SEName_JITENSYA:
- .string "JITENSYA$"
-SEName_KOUKA_L:
- .string "KOUKA-L$"
-SEName_KOUKA_M:
- .string "KOUKA-M$"
-SEName_KOUKA_H:
- .string "KOUKA-H$"
-SEName_BOWA2:
- .string "BOWA2$"
-SEName_POKE_DEAD:
- .string "POKE-DEAD$"
-SEName_NIGERU:
- .string "NIGERU$"
-SEName_JIDO_DOA:
- .string "JIDO-DOA$"
-SEName_NAMINORI:
- .string "NAMINORI$"
-SEName_BAN:
- .string "BAN$"
-SEName_PIN:
- .string "PIN$"
-SEName_BOO:
- .string "BOO$"
-SEName_BOWA:
- .string "BOWA$"
-SEName_JYUNI:
- .string "JYUNI$"
-SEName_A:
- .string "A$"
-SEName_I:
- .string "I$"
-SEName_U:
- .string "U$"
-SEName_E:
- .string "E$"
-SEName_O:
- .string "O$"
-SEName_N:
- .string "N$"
-SEName_SEIKAI:
- .string "SEIKAI$"
-SEName_HAZURE:
- .string "HAZURE$"
-SEName_EXP:
- .string "EXP$"
-SEName_JITE_PYOKO:
- .string "JITE-PYOKO$"
-SEName_MU_PACHI:
- .string "MU-PACHI$"
-SEName_TK_KASYA:
- .string "TK-KASYA$"
-SEName_FU_ZAKU:
- .string "FU-ZAKU$"
-SEName_FU_ZAKU2:
- .string "FU-ZAKU2$"
-SEName_FU_ZUZUZU:
- .string "FU-ZUZUZU$"
-SEName_RU_GASHIN:
- .string "RU-GASHIN$"
-SEName_RU_GASYAN:
- .string "RU-GASYAN$"
-SEName_RU_BARI:
- .string "RU-BARI$"
-SEName_RU_HYUU:
- .string "RU-HYUU$"
-SEName_KI_GASYAN:
- .string "KI-GASYAN$"
-SEName_TK_WARPIN:
- .string "TK-WARPIN$"
-SEName_TK_WARPOUT:
- .string "TK-WARPOUT$"
-SEName_TU_SAA:
- .string "TU-SAA$"
-SEName_HI_TURUN:
- .string "HI-TURUN$"
-SEName_TRACK_MOVE:
- .string "TRACK-MOVE$"
-SEName_TRACK_STOP:
- .string "TRACK-STOP$"
-SEName_TRACK_HAIK:
- .string "TRACK-HAIK$"
-SEName_TRACK_DOOR:
- .string "TRACK-DOOR$"
-SEName_MOTER:
- .string "MOTER$"
-SEName_CARD:
- .string "CARD$"
-SEName_SAVE:
- .string "SAVE$"
-SEName_KON:
- .string "KON$"
-SEName_KON2:
- .string "KON2$"
-SEName_KON3:
- .string "KON3$"
-SEName_KON4:
- .string "KON4$"
-SEName_SUIKOMU:
- .string "SUIKOMU$"
-SEName_NAGERU:
- .string "NAGERU$"
-SEName_TOY_C:
- .string "TOY-C$"
-SEName_TOY_D:
- .string "TOY-D$"
-SEName_TOY_E:
- .string "TOY-E$"
-SEName_TOY_F:
- .string "TOY-F$"
-SEName_TOY_G:
- .string "TOY-G$"
-SEName_TOY_A:
- .string "TOY-A$"
-SEName_TOY_B:
- .string "TOY-B$"
-SEName_TOY_C1:
- .string "TOY-C1$"
-SEName_MIZU:
- .string "MIZU$"
-SEName_HASHI:
- .string "HASHI$"
-SEName_DAUGI:
- .string "DAUGI$"
-SEName_PINPON:
- .string "PINPON$"
-SEName_FUUSEN1:
- .string "FUUSEN1$"
-SEName_FUUSEN2:
- .string "FUUSEN2$"
-SEName_FUUSEN3:
- .string "FUUSEN3$"
-SEName_TOY_KABE:
- .string "TOY-KABE$"
-SEName_TOY_DANGO:
- .string "TOY-DANGO$"
-SEName_DOKU:
- .string "DOKU$"
-SEName_ESUKA:
- .string "ESUKA$"
-SEName_T_AME:
- .string "T-AME$"
-SEName_T_AME_E:
- .string "T-AME-E$"
-SEName_T_OOAME:
- .string "T-OOAME$"
-SEName_T_OOAME_E:
- .string "T-OOAME-E$"
-SEName_T_KOAME:
- .string "T-KOAME$"
-SEName_T_KOAME_E:
- .string "T-KOAME-E$"
-SEName_T_KAMI:
- .string "T-KAMI$"
-SEName_T_KAMI2:
- .string "T-KAMI2$"
-SEName_ELEBETA:
- .string "ELEBETA$"
-SEName_HINSI:
- .string "HINSI$"
-SEName_EXPMAX:
- .string "EXPMAX$"
-SEName_TAMAKORO:
- .string "TAMAKORO$"
-SEName_TAMAKORO_E:
- .string "TAMAKORO-E$"
-SEName_BASABASA:
- .string "BASABASA$"
-SEName_REGI:
- .string "REGI$"
-SEName_C_GAJI:
- .string "C-GAJI$"
-SEName_C_MAKU_U:
- .string "C-MAKU-U$"
-SEName_C_MAKU_D:
- .string "C-MAKU-D$"
-SEName_C_PASI:
- .string "C-PASI$"
-SEName_C_SYU:
- .string "C-SYU$"
-SEName_C_PIKON:
- .string "C-PIKON$"
-SEName_REAPOKE:
- .string "REAPOKE$"
-SEName_OP_BASYU:
- .string "OP-BASYU$"
-SEName_BT_START:
- .string "BT-START$"
-SEName_DENDOU:
- .string "DENDOU$"
-SEName_JIHANKI:
- .string "JIHANKI$"
-SEName_TAMA:
- .string "TAMA$"
-SEName_Z_SCROLL:
- .string "Z-SCROLL$"
-SEName_Z_PAGE:
- .string "Z-PAGE$"
-SEName_PN_ON:
- .string "PN-ON$"
-SEName_PN_OFF:
- .string "PN-OFF$"
-SEName_Z_SEARCH:
- .string "Z-SEARCH$"
-SEName_TAMAGO:
- .string "TAMAGO$"
-SEName_TB_START:
- .string "TB-START$"
-SEName_TB_KON:
- .string "TB-KON$"
-SEName_TB_KARA:
- .string "TB-KARA$"
-SEName_BIDORO:
- .string "BIDORO$"
-SEName_W085:
- .string "W085$"
-SEName_W085B:
- .string "W085B$"
-SEName_W231:
- .string "W231$"
-SEName_W171:
- .string "W171$"
-SEName_W233:
- .string "W233$"
-SEName_W233B:
- .string "W233B$"
-SEName_W145:
- .string "W145$"
-SEName_W145B:
- .string "W145B$"
-SEName_W145C:
- .string "W145C$"
-SEName_W240:
- .string "W240$"
-SEName_W015:
- .string "W015$"
-SEName_W081:
- .string "W081$"
-SEName_W081B:
- .string "W081B$"
-SEName_W088:
- .string "W088$"
-SEName_W016:
- .string "W016$"
-SEName_W016B:
- .string "W016B$"
-SEName_W003:
- .string "W003$"
-SEName_W104:
- .string "W104$"
-SEName_W013:
- .string "W013$"
-SEName_W196:
- .string "W196$"
-SEName_W086:
- .string "W086$"
-SEName_W004:
- .string "W004$"
-SEName_W025:
- .string "W025$"
-SEName_W025B:
- .string "W025B$"
-SEName_W152:
- .string "W152$"
-SEName_W026:
- .string "W026$"
-SEName_W172:
- .string "W172$"
-SEName_W172B:
- .string "W172B$"
-SEName_W053:
- .string "W053$"
-SEName_W007:
- .string "W007$"
-SEName_W092:
- .string "W092$"
-SEName_W221:
- .string "W221$"
-SEName_W221B:
- .string "W221B$"
-SEName_W052:
- .string "W052$"
-SEName_W036:
- .string "W036$"
-SEName_W059:
- .string "W059$"
-SEName_W059B:
- .string "W059B$"
-SEName_W010:
- .string "W010$"
-SEName_W011:
- .string "W011$"
-SEName_W017:
- .string "W017$"
-SEName_W019:
- .string "W019$"
-SEName_W028:
- .string "W028$"
-SEName_W013B:
- .string "W013B$"
-SEName_W044:
- .string "W044$"
-SEName_W029:
- .string "W029$"
-SEName_W057:
- .string "W057$"
-SEName_W056:
- .string "W056$"
-SEName_W250:
- .string "W250$"
-SEName_W030:
- .string "W030$"
-SEName_W039:
- .string "W039$"
-SEName_W054:
- .string "W054$"
-SEName_W077:
- .string "W077$"
-SEName_W020:
- .string "W020$"
-SEName_W082:
- .string "W082$"
-SEName_W047:
- .string "W047$"
-SEName_W195:
- .string "W195$"
-SEName_W006:
- .string "W006$"
-SEName_W091:
- .string "W091$"
-SEName_W146:
- .string "W146$"
-SEName_W120:
- .string "W120$"
-SEName_W153:
- .string "W153$"
-SEName_W071B:
- .string "W071B$"
-SEName_W071:
- .string "W071$"
-SEName_W103:
- .string "W103$"
-SEName_W062:
- .string "W062$"
-SEName_W062B:
- .string "W062B$"
-SEName_W048:
- .string "W048$"
-SEName_W187:
- .string "W187$"
-SEName_W118:
- .string "W118$"
-SEName_W155:
- .string "W155$"
-SEName_W122:
- .string "W122$"
-SEName_W060:
- .string "W060$"
-SEName_W185:
- .string "W185$"
-SEName_W014:
- .string "W014$"
-SEName_W043:
- .string "W043$"
-SEName_W207:
- .string "W207$"
-SEName_W207B:
- .string "W207B$"
-SEName_W215:
- .string "W215$"
-SEName_W109:
- .string "W109$"
-SEName_W173:
- .string "W173$"
-SEName_W280:
- .string "W280$"
-SEName_W202:
- .string "W202$"
-SEName_W060B:
- .string "W060B$"
-SEName_W076:
- .string "W076$"
-SEName_W080:
- .string "W080$"
-SEName_W100:
- .string "W100$"
-SEName_W107:
- .string "W107$"
-SEName_W166:
- .string "W166$"
-SEName_W129:
- .string "W129$"
-SEName_W115:
- .string "W115$"
-SEName_W112:
- .string "W112$"
-SEName_W197:
- .string "W197$"
-SEName_W199:
- .string "W199$"
-SEName_W236:
- .string "W236$"
-SEName_W204:
- .string "W204$"
-SEName_W268:
- .string "W268$"
-SEName_W070:
- .string "W070$"
-SEName_W063:
- .string "W063$"
-SEName_W127:
- .string "W127$"
-SEName_W179:
- .string "W179$"
-SEName_W151:
- .string "W151$"
-SEName_W201:
- .string "W201$"
-SEName_W161:
- .string "W161$"
-SEName_W161B:
- .string "W161B$"
-SEName_W227:
- .string "W227$"
-SEName_W227B:
- .string "W227B$"
-SEName_W226:
- .string "W226$"
-SEName_W208:
- .string "W208$"
-SEName_W213:
- .string "W213$"
-SEName_W213B:
- .string "W213B$"
-SEName_W234:
- .string "W234$"
-SEName_W260:
- .string "W260$"
-SEName_W328:
- .string "W328$"
-SEName_W320:
- .string "W320$"
-SEName_W255:
- .string "W255$"
-SEName_W291:
- .string "W291$"
-SEName_W089:
- .string "W089$"
-SEName_W239:
- .string "W239$"
-SEName_W230:
- .string "W230$"
-SEName_W281:
- .string "W281$"
-SEName_W327:
- .string "W327$"
-SEName_W287:
- .string "W287$"
-SEName_W257:
- .string "W257$"
-SEName_W253:
- .string "W253$"
-SEName_W258:
- .string "W258$"
-SEName_W322:
- .string "W322$"
-SEName_W298:
- .string "W298$"
-SEName_W287B:
- .string "W287B$"
-SEName_W114:
- .string "W114$"
-SEName_W063B:
- .string "W063B$"
-
- .align 2
-gSENames:: @ 83D0F78
- .word SEName_STOP
- .word SEName_KAIFUKU
- .word SEName_PC_LOGON
- .word SEName_PC_OFF
- .word SEName_PC_ON
- .word SEName_SELECT
- .word SEName_WIN_OPEN
- .word SEName_WALL_HIT
- .word SEName_DOOR
- .word SEName_KAIDAN
- .word SEName_DANSA
- .word SEName_JITENSYA
- .word SEName_KOUKA_L
- .word SEName_KOUKA_M
- .word SEName_KOUKA_H
- .word SEName_BOWA2
- .word SEName_POKE_DEAD
- .word SEName_NIGERU
- .word SEName_JIDO_DOA
- .word SEName_NAMINORI
- .word SEName_BAN
- .word SEName_PIN
- .word SEName_BOO
- .word SEName_BOWA
- .word SEName_JYUNI
- .word SEName_A
- .word SEName_I
- .word SEName_U
- .word SEName_E
- .word SEName_O
- .word SEName_N
- .word SEName_SEIKAI
- .word SEName_HAZURE
- .word SEName_EXP
- .word SEName_JITE_PYOKO
- .word SEName_MU_PACHI
- .word SEName_TK_KASYA
- .word SEName_FU_ZAKU
- .word SEName_FU_ZAKU2
- .word SEName_FU_ZUZUZU
- .word SEName_RU_GASHIN
- .word SEName_RU_GASYAN
- .word SEName_RU_BARI
- .word SEName_RU_HYUU
- .word SEName_KI_GASYAN
- .word SEName_TK_WARPIN
- .word SEName_TK_WARPOUT
- .word SEName_TU_SAA
- .word SEName_HI_TURUN
- .word SEName_TRACK_MOVE
- .word SEName_TRACK_STOP
- .word SEName_TRACK_HAIK
- .word SEName_TRACK_DOOR
- .word SEName_MOTER
- .word SEName_CARD
- .word SEName_SAVE
- .word SEName_KON
- .word SEName_KON2
- .word SEName_KON3
- .word SEName_KON4
- .word SEName_SUIKOMU
- .word SEName_NAGERU
- .word SEName_TOY_C
- .word SEName_TOY_D
- .word SEName_TOY_E
- .word SEName_TOY_F
- .word SEName_TOY_G
- .word SEName_TOY_A
- .word SEName_TOY_B
- .word SEName_TOY_C1
- .word SEName_MIZU
- .word SEName_HASHI
- .word SEName_DAUGI
- .word SEName_PINPON
- .word SEName_FUUSEN1
- .word SEName_FUUSEN2
- .word SEName_FUUSEN3
- .word SEName_TOY_KABE
- .word SEName_TOY_DANGO
- .word SEName_DOKU
- .word SEName_ESUKA
- .word SEName_T_AME
- .word SEName_T_AME_E
- .word SEName_T_OOAME
- .word SEName_T_OOAME_E
- .word SEName_T_KOAME
- .word SEName_T_KOAME_E
- .word SEName_T_KAMI
- .word SEName_T_KAMI2
- .word SEName_ELEBETA
- .word SEName_HINSI
- .word SEName_EXPMAX
- .word SEName_TAMAKORO
- .word SEName_TAMAKORO_E
- .word SEName_BASABASA
- .word SEName_REGI
- .word SEName_C_GAJI
- .word SEName_C_MAKU_U
- .word SEName_C_MAKU_D
- .word SEName_C_PASI
- .word SEName_C_SYU
- .word SEName_C_PIKON
- .word SEName_REAPOKE
- .word SEName_OP_BASYU
- .word SEName_BT_START
- .word SEName_DENDOU
- .word SEName_JIHANKI
- .word SEName_TAMA
- .word SEName_Z_SCROLL
- .word SEName_Z_PAGE
- .word SEName_PN_ON
- .word SEName_PN_OFF
- .word SEName_Z_SEARCH
- .word SEName_TAMAGO
- .word SEName_TB_START
- .word SEName_TB_KON
- .word SEName_TB_KARA
- .word SEName_BIDORO
- .word SEName_W085
- .word SEName_W085B
- .word SEName_W231
- .word SEName_W171
- .word SEName_W233
- .word SEName_W233B
- .word SEName_W145
- .word SEName_W145B
- .word SEName_W145C
- .word SEName_W240
- .word SEName_W015
- .word SEName_W081
- .word SEName_W081B
- .word SEName_W088
- .word SEName_W016
- .word SEName_W016B
- .word SEName_W003
- .word SEName_W104
- .word SEName_W013
- .word SEName_W196
- .word SEName_W086
- .word SEName_W004
- .word SEName_W025
- .word SEName_W025B
- .word SEName_W152
- .word SEName_W026
- .word SEName_W172
- .word SEName_W172B
- .word SEName_W053
- .word SEName_W007
- .word SEName_W092
- .word SEName_W221
- .word SEName_W221B
- .word SEName_W052
- .word SEName_W036
- .word SEName_W059
- .word SEName_W059B
- .word SEName_W010
- .word SEName_W011
- .word SEName_W017
- .word SEName_W019
- .word SEName_W028
- .word SEName_W013B
- .word SEName_W044
- .word SEName_W029
- .word SEName_W057
- .word SEName_W056
- .word SEName_W250
- .word SEName_W030
- .word SEName_W039
- .word SEName_W054
- .word SEName_W077
- .word SEName_W020
- .word SEName_W082
- .word SEName_W047
- .word SEName_W195
- .word SEName_W006
- .word SEName_W091
- .word SEName_W146
- .word SEName_W120
- .word SEName_W153
- .word SEName_W071B
- .word SEName_W071
- .word SEName_W103
- .word SEName_W062
- .word SEName_W062B
- .word SEName_W048
- .word SEName_W187
- .word SEName_W118
- .word SEName_W155
- .word SEName_W122
- .word SEName_W060
- .word SEName_W185
- .word SEName_W014
- .word SEName_W043
- .word SEName_W207
- .word SEName_W207B
- .word SEName_W215
- .word SEName_W109
- .word SEName_W173
- .word SEName_W280
- .word SEName_W202
- .word SEName_W060B
- .word SEName_W076
- .word SEName_W080
- .word SEName_W100
- .word SEName_W107
- .word SEName_W166
- .word SEName_W129
- .word SEName_W115
- .word SEName_W112
- .word SEName_W197
- .word SEName_W199
- .word SEName_W236
- .word SEName_W204
- .word SEName_W268
- .word SEName_W070
- .word SEName_W063
- .word SEName_W127
- .word SEName_W179
- .word SEName_W151
- .word SEName_W201
- .word SEName_W161
- .word SEName_W161B
- .word SEName_W227
- .word SEName_W227B
- .word SEName_W226
- .word SEName_W208
- .word SEName_W213
- .word SEName_W213B
- .word SEName_W234
- .word SEName_W260
- .word SEName_W328
- .word SEName_W320
- .word SEName_W255
- .word SEName_W291
- .word SEName_W089
- .word SEName_W239
- .word SEName_W230
- .word SEName_W281
- .word SEName_W327
- .word SEName_W287
- .word SEName_W257
- .word SEName_W253
- .word SEName_W258
- .word SEName_W322
- .word SEName_W298
- .word SEName_W287B
- .word SEName_W114
- .word SEName_W063B
diff --git a/include/global.h b/include/global.h
index e90fcdd0f..0f5bcde6d 100644
--- a/include/global.h
+++ b/include/global.h
@@ -43,6 +43,17 @@ fndec\
#define min(a, b) (a >= b ? a : b)
#define max(a, b) (a <= b ? a : b)
+// why does GF hate 2d arrays
+#define MULTI_DIM_ARR(x, dim, y) ((x) * dim + (y))
+
+// dim access enums
+enum
+{
+ B_8 = 1,
+ B_16 = 2,
+ B_32 = 4
+};
+
enum
{
VERSION_SAPPHIRE = 1,
diff --git a/include/player_pc.h b/include/player_pc.h
index f2446ebdf..8debeda88 100644
--- a/include/player_pc.h
+++ b/include/player_pc.h
@@ -1,10 +1,6 @@
#ifndef GUARD_PLAYER_PC_H
#define GUARD_PLAYER_PC_H
-// general task defines
-#define TASK gTasks[taskId]
-#define FUNC func
-
// local task defines
#define PAGE_INDEX data[0]
#define ITEMS_ABOVE_TOP data[1]
diff --git a/include/task.h b/include/task.h
index 6c6efdf4f..a71577ee3 100644
--- a/include/task.h
+++ b/include/task.h
@@ -1,6 +1,10 @@
#ifndef GUARD_TASK_H
#define GUARD_TASK_H
+// general task defines
+#define TASK gTasks[taskId]
+#define FUNC func
+
typedef void (*TaskFunc)(u8 taskId);
struct Task
diff --git a/include/text.h b/include/text.h
index 6e32de6dd..cf413644b 100644
--- a/include/text.h
+++ b/include/text.h
@@ -6,6 +6,7 @@
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
#define CHAR_HYPHEN 0xAE
+#define CHAR_ELLIPSIS 0xB0
#define CHAR_MALE 0xB5
#define CHAR_FEMALE 0xB6
#define CHAR_COMMA 0xB8
diff --git a/ld_script.txt b/ld_script.txt
index 78613c3a3..4a9a7ec90 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -169,7 +169,7 @@ SECTIONS {
asm/contest_effect.o(.text);
src/record_mixing.o(.text);
asm/record_mixing.o(.text);
- asm/sound_check_menu.o(.text);
+ src/sound_check_menu.o(.text);
src/secret_base.o(.text);
asm/secret_base.o(.text_80BC1D0);
src/tv.o(.text);
@@ -409,7 +409,7 @@ SECTIONS {
data/money.o(.rodata);
data/contest_effect.o(.rodata);
data/record_mixing.o(.rodata);
- data/sound_check_menu.o(.rodata);
+ src/sound_check_menu.o(.rodata);
data/secret_base.o(.rodata);
data/tv.o(.rodata);
data/contest_link_80C2020.o(.rodata);
diff --git a/src/battle_ai.c b/src/battle_ai.c
index 9f95d23f3..d262e69c8 100644
--- a/src/battle_ai.c
+++ b/src/battle_ai.c
@@ -1990,7 +1990,7 @@ static void BattleAICmd_get_used_item(void)
index = gBankTarget;
// this hack and a half matches. whatever. i dont care. someone else fix this mess later. PS: still cant fix this.
- AI_THINKING_STRUCT->funcResult = ewram[0x160CC + (index * 2)];
+ AI_THINKING_STRUCT->funcResult = ewram[MULTI_DIM_ARR(index, B_16, 0x160CC)];
gAIScriptPtr += 2;
}
diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c
new file mode 100755
index 000000000..13a6f6f3e
--- /dev/null
+++ b/src/sound_check_menu.c
@@ -0,0 +1,2198 @@
+#include "global.h"
+#include "sprite.h"
+#include "palette.h"
+#include "task.h"
+#include "m4a.h"
+#include "main.h"
+#include "text.h"
+#include "menu.h"
+#include "songs.h"
+#include "title_screen.h"
+#include "sound.h"
+#include "pokedex_cry_screen.h"
+
+// local task defines
+#define WINDOW_SELECTED data[0]
+#define BGM_INDEX data[1]
+#define SE_INDEX data[2]
+#define UNK_DATA3 data[3]
+#define UNK_DATA4 data[4]
+// data 5-7 are not used
+// i dont have a define for data 8 yet because its used in a nonmatching and I can't be sure yet its actually used.
+
+// window selections
+enum
+{
+ BGM_WINDOW,
+ SE_WINDOW
+};
+
+// driver test cry enums
+enum
+{
+ CRY_TEST_UNK0,
+ CRY_TEST_VOLUME,
+ CRY_TEST_PANPOT,
+ CRY_TEST_PITCH,
+ CRY_TEST_LENGTH,
+ CRY_TEST_RELEASE,
+ CRY_TEST_PROGRESS,
+ CRY_TEST_CHORUS,
+ CRY_TEST_PRIORITY
+};
+
+// minmax range enums
+enum
+{
+ MIN,
+ MAX
+};
+
+extern struct ToneData voicegroup_84537C0[];
+extern struct ToneData voicegroup_8452590[];
+extern struct ToneData voicegroup_8453DC0[];
+extern struct ToneData voicegroup_8452B90[];
+extern struct ToneData voicegroup_84543C0[];
+extern struct ToneData voicegroup_8453190[];
+extern struct ToneData voicegroup_84549C0[];
+extern struct ToneData voicegroup_8453790[];
+
+extern int gUnknown_020387B4[9];
+
+extern s8 gUnknown_020387B3;
+extern u8 gUnknown_020387B1;
+extern u8 gUnknown_020387B2;
+extern u8 gUnknown_020387D8;
+extern u8 gUnknown_020387D9;
+extern u8 gUnknown_020387B0;
+extern u16 gUnknown_03005D34;
+extern u8 gUnknown_03005E98;
+
+extern struct MusicPlayerInfo *gUnknown_03005D30;
+extern struct MusicPlayerInfo gMPlay_BGM;
+
+void sub_80BA258(u8);
+void sub_80BA384(u8);
+void sub_80BA65C(u8);
+void sub_80BA68C(u8);
+void sub_80BA6B8(u8);
+void sub_80BA700(u16, u16, u16);
+void sub_80BA79C(const u8 *const, u16, u16);
+void sub_80BA800(u8);
+void sub_80BAA48(u8);
+void sub_80BACDC(s8);
+void sub_80BAD5C(void);
+void sub_80BAE10(u8, u8);
+void sub_80BAE78(int, u16, u16, u8);
+void sub_80BAF84(u8);
+void sub_80BB038(u8);
+void sub_80BB1D4(void);
+void sub_80BB25C(u8);
+void sub_80BB3B4(u8);
+void sub_80BB494(void);
+
+static const u8 gDebugText_SoundCheckJap[] = _("サウンドチェック");
+static const u8 gDebugText_BGM[] = _("BGM");
+static const u8 gDebugText_SE[] = _("SE ");
+static const u8 gDebugText_ABDesc[] = _("A‥さいせい B‥おわり");
+static const u8 gDebugText_UpDown[] = _("L‥UP R‥DOWN");
+static const u8 gDebugText_DriverTest[] = _("R‥DRIVER-TEST");
+
+// ideally this should be a multi Coords8 struct, but it wont match when its treated like a struct.
+static const u8 gUnknown_083D0300[] = { 1, 1, 1, 3, 1, 5, 1, 7, 1, 9, 1, 11, 1, 13, 1, 15, 1, 17 };
+
+static const u8 gDebugText_BBack[] = _("Bぼたんで もどる");
+static const u8 gDebugText_APlay[] = _("Aぼたんで さいせい");
+static const u8 gDebugText_Voice[] = _("VOICE‥‥‥‥");
+static const u8 gDebugText_Volume[] = _("VOLUME‥‥‥");
+static const u8 gDebugText_Panpot[] = _("PANPOT‥‥‥");
+static const u8 gDebugText_Pitch[] = _("PITCH‥‥‥‥");
+static const u8 gDebugText_Length[] = _("LENGTH‥‥‥");
+static const u8 gDebugText_Release[] = _("RELEASE‥‥");
+static const u8 gDebugText_Progress[] = _("PROGRESS‥");
+static const u8 gDebugText_Chorus[] = _("CHORUS‥‥‥");
+static const u8 gDebugText_Priority[] = _("PRIORITY‥");
+static const u8 gDebugText_Playing[] = _("さいせいちゆう‥"); // 再生中 (playing)
+static const u8 gDebugText_Reverse[] = _("はんてん‥‥‥‥"); // 反転 (reverse)
+static const u8 gDebugText_Stereo[] = _("すてれお‥‥‥‥"); // stereo
+
+// also ideally should be a MinMax struct, but any attempt to make this into a struct causes it to not match due to the weird multi dim access.
+static const int gUnknown_083D039C[16] =
+{
+ 0, 387,
+ 0, 127,
+ -127, 127,
+ -128, 32639,
+ 0, 65535,
+ 0, 255,
+ 0, 65535,
+ -64, 63
+};
+
+static const u8 gUnknown_083D03DC[] = _("▶");
+static const u8 gUnknown_083D03DE[] = _(" ");
+
+// why not just use Powers of ten from string_util?
+static const int gUnknown_083D03E0[6] =
+{
+ 1,
+ 10,
+ 100,
+ 1000,
+ 10000,
+ 100000
+};
+
+static const s8 gUnknown_083D03F8[5] = { 0x3F, 0x00, 0xC0, 0x7F, 0x80 };
+
+static const u8 gOtherText_SE[] = _("SE");
+static const u8 gOtherText_Pan[] = _("PAN");
+static const u8 gOtherText_LR[] = _(" LR");
+static const u8 gOtherText_RL[] = _(" RL");
+
+// bgm names
+static const u8 BGMName_STOP[] = _("STOP");
+static const u8 BGMName_TETSUJI[] = _("TETSUJI");
+static const u8 BGMName_FIELD13[] = _("FIELD13");
+static const u8 BGMName_KACHI22[] = _("KACHI22");
+static const u8 BGMName_KACHI2[] = _("KACHI2");
+static const u8 BGMName_KACHI3[] = _("KACHI3");
+static const u8 BGMName_KACHI5[] = _("KACHI5");
+static const u8 BGMName_PCC[] = _("PCC");
+static const u8 BGMName_NIBI[] = _("NIBI");
+static const u8 BGMName_SUIKUN[] = _("SUIKUN");
+static const u8 BGMName_DOORO1[] = _("DOORO1");
+static const u8 BGMName_DOORO_X1[] = _("DOORO-X1");
+static const u8 BGMName_DOORO_X3[] = _("DOORO-X3");
+static const u8 BGMName_MACHI_S2[] = _("MACHI-S2");
+static const u8 BGMName_MACHI_S4[] = _("MACHI-S4");
+static const u8 BGMName_GIM[] = _("GIM");
+static const u8 BGMName_NAMINORI[] = _("NAMINORI");
+static const u8 BGMName_DAN01[] = _("DAN01");
+static const u8 BGMName_FANFA1[] = _("FANFA1");
+static const u8 BGMName_ME_ASA[] = _("ME-ASA");
+static const u8 BGMName_ME_BACHI[] = _("ME-BACHI");
+static const u8 BGMName_FANFA4[] = _("FANFA4");
+static const u8 BGMName_FANFA5[] = _("FANFA5");
+static const u8 BGMName_ME_WAZA[] = _("ME-WAZA");
+static const u8 BGMName_BIJYUTU[] = _("BIJYUTU");
+static const u8 BGMName_DOORO_X4[] = _("DOORO-X4");
+static const u8 BGMName_FUNE_KAN[] = _("FUNE-KAN");
+static const u8 BGMName_ME_SHINKA[] = _("ME-SHINKA");
+static const u8 BGMName_SHINKA[] = _("SHINKA");
+static const u8 BGMName_ME_WASURE[] = _("ME-WASURE");
+static const u8 BGMName_SYOUJOEYE[] = _("SYOUJOEYE");
+static const u8 BGMName_BOYEYE[] = _("BOYEYE");
+static const u8 BGMName_DAN02[] = _("DAN02");
+static const u8 BGMName_MACHI_S3[] = _("MACHI-S3");
+static const u8 BGMName_ODAMAKI[] = _("ODAMAKI");
+static const u8 BGMName_B_TOWER[] = _("B-TOWER");
+static const u8 BGMName_SWIMEYE[] = _("SWIMEYE");
+static const u8 BGMName_DAN03[] = _("DAN03");
+static const u8 BGMName_ME_KINOMI[] = _("ME-KINOMI");
+static const u8 BGMName_ME_TAMA[] = _("ME-TAMA");
+static const u8 BGMName_ME_B_BIG[] = _("ME-B-BIG");
+static const u8 BGMName_ME_B_SMALL[] = _("ME-B-SMALL");
+static const u8 BGMName_ME_ZANNEN[] = _("ME-ZANNEN");
+static const u8 BGMName_BD_TIME[] = _("BD-TIME");
+static const u8 BGMName_TEST1[] = _("TEST1");
+static const u8 BGMName_TEST2[] = _("TEST2");
+static const u8 BGMName_TEST3[] = _("TEST3");
+static const u8 BGMName_TEST4[] = _("TEST4");
+static const u8 BGMName_TEST[] = _("TEST");
+static const u8 BGMName_GOMACHI0[] = _("GOMACHI0");
+static const u8 BGMName_GOTOWN[] = _("GOTOWN");
+static const u8 BGMName_POKECEN[] = _("POKECEN");
+static const u8 BGMName_NEXTROAD[] = _("NEXTROAD");
+static const u8 BGMName_GRANROAD[] = _("GRANROAD");
+static const u8 BGMName_CYCLING[] = _("CYCLING");
+static const u8 BGMName_FRIENDLY[] = _("FRIENDLY");
+static const u8 BGMName_MISHIRO[] = _("MISHIRO");
+static const u8 BGMName_TOZAN[] = _("TOZAN");
+static const u8 BGMName_GIRLEYE[] = _("GIRLEYE");
+static const u8 BGMName_MINAMO[] = _("MINAMO");
+static const u8 BGMName_ASHROAD[] = _("ASHROAD");
+static const u8 BGMName_EVENT0[] = _("EVENT0");
+static const u8 BGMName_DEEPDEEP[] = _("DEEPDEEP");
+static const u8 BGMName_KACHI1[] = _("KACHI1");
+static const u8 BGMName_TITLE3[] = _("TITLE3");
+static const u8 BGMName_DEMO1[] = _("DEMO1");
+static const u8 BGMName_GIRL_SUP[] = _("GIRL-SUP");
+static const u8 BGMName_HAGESHII[] = _("HAGESHII");
+static const u8 BGMName_KAKKOII[] = _("KAKKOII");
+static const u8 BGMName_KAZANBAI[] = _("KAZANBAI");
+static const u8 BGMName_AQA_0[] = _("AQA-0");
+static const u8 BGMName_TSURETEK[] = _("TSURETEK");
+static const u8 BGMName_BOY_SUP[] = _("BOY-SUP");
+static const u8 BGMName_RAINBOW[] = _("RAINBOW");
+static const u8 BGMName_AYASII[] = _("AYASII");
+static const u8 BGMName_KACHI4[] = _("KACHI4");
+static const u8 BGMName_ROPEWAY[] = _("ROPEWAY");
+static const u8 BGMName_CASINO[] = _("CASINO");
+static const u8 BGMName_HIGHTOWN[] = _("HIGHTOWN");
+static const u8 BGMName_SAFARI[] = _("SAFARI");
+static const u8 BGMName_C_ROAD[] = _("C-ROAD");
+static const u8 BGMName_AJITO[] = _("AJITO");
+static const u8 BGMName_M_BOAT[] = _("M-BOAT");
+static const u8 BGMName_M_DUNGON[] = _("M-DUNGON");
+static const u8 BGMName_FINECITY[] = _("FINECITY");
+static const u8 BGMName_MACHUPI[] = _("MACHUPI");
+static const u8 BGMName_P_SCHOOL[] = _("P-SCHOOL");
+static const u8 BGMName_DENDOU[] = _("DENDOU");
+static const u8 BGMName_TONEKUSA[] = _("TONEKUSA");
+static const u8 BGMName_MABOROSI[] = _("MABOROSI");
+static const u8 BGMName_CON_FAN[] = _("CON-FAN");
+static const u8 BGMName_CONTEST0[] = _("CONTEST0");
+static const u8 BGMName_MGM0[] = _("MGM0");
+static const u8 BGMName_T_BATTLE[] = _("T-BATTLE");
+static const u8 BGMName_OOAME[] = _("OOAME");
+static const u8 BGMName_HIDERI[] = _("HIDERI");
+static const u8 BGMName_RUNECITY[] = _("RUNECITY");
+static const u8 BGMName_CON_K[] = _("CON-K");
+static const u8 BGMName_EIKOU_R[] = _("EIKOU-R");
+static const u8 BGMName_KARAKURI[] = _("KARAKURI");
+static const u8 BGMName_HUTAGO[] = _("HUTAGO");
+static const u8 BGMName_SITENNOU[] = _("SITENNOU");
+static const u8 BGMName_YAMA_EYE[] = _("YAMA-EYE");
+static const u8 BGMName_CONLOBBY[] = _("CONLOBBY");
+static const u8 BGMName_INTER_V[] = _("INTER-V");
+static const u8 BGMName_DAIGO[] = _("DAIGO");
+static const u8 BGMName_THANKFOR[] = _("THANKFOR");
+static const u8 BGMName_END[] = _("END");
+static const u8 BGMName_BATTLE27[] = _("BATTLE27");
+static const u8 BGMName_BATTLE31[] = _("BATTLE31");
+static const u8 BGMName_BATTLE20[] = _("BATTLE20");
+static const u8 BGMName_BATTLE32[] = _("BATTLE32");
+static const u8 BGMName_BATTLE33[] = _("BATTLE33");
+static const u8 BGMName_BATTLE36[] = _("BATTLE36");
+static const u8 BGMName_BATTLE34[] = _("BATTLE34");
+static const u8 BGMName_BATTLE35[] = _("BATTLE35");
+static const u8 BGMName_BATTLE38[] = _("BATTLE38");
+static const u8 BGMName_BATTLE30[] = _("BATTLE30");
+
+static const u8 *const gBGMNames[] =
+{
+ BGMName_STOP,
+ BGMName_TETSUJI,
+ BGMName_FIELD13,
+ BGMName_KACHI22,
+ BGMName_KACHI2,
+ BGMName_KACHI3,
+ BGMName_KACHI5,
+ BGMName_PCC,
+ BGMName_NIBI,
+ BGMName_SUIKUN,
+ BGMName_DOORO1,
+ BGMName_DOORO_X1,
+ BGMName_DOORO_X3,
+ BGMName_MACHI_S2,
+ BGMName_MACHI_S4,
+ BGMName_GIM,
+ BGMName_NAMINORI,
+ BGMName_DAN01,
+ BGMName_FANFA1,
+ BGMName_ME_ASA,
+ BGMName_ME_BACHI,
+ BGMName_FANFA4,
+ BGMName_FANFA5,
+ BGMName_ME_WAZA,
+ BGMName_BIJYUTU,
+ BGMName_DOORO_X4,
+ BGMName_FUNE_KAN,
+ BGMName_ME_SHINKA,
+ BGMName_SHINKA,
+ BGMName_ME_WASURE,
+ BGMName_SYOUJOEYE,
+ BGMName_BOYEYE,
+ BGMName_DAN02,
+ BGMName_MACHI_S3,
+ BGMName_ODAMAKI,
+ BGMName_B_TOWER,
+ BGMName_SWIMEYE,
+ BGMName_DAN03,
+ BGMName_ME_KINOMI,
+ BGMName_ME_TAMA,
+ BGMName_ME_B_BIG,
+ BGMName_ME_B_SMALL,
+ BGMName_ME_ZANNEN,
+ BGMName_BD_TIME,
+ BGMName_TEST1,
+ BGMName_TEST2,
+ BGMName_TEST3,
+ BGMName_TEST4,
+ BGMName_TEST,
+ BGMName_GOMACHI0,
+ BGMName_GOTOWN,
+ BGMName_POKECEN,
+ BGMName_NEXTROAD,
+ BGMName_GRANROAD,
+ BGMName_CYCLING,
+ BGMName_FRIENDLY,
+ BGMName_MISHIRO,
+ BGMName_TOZAN,
+ BGMName_GIRLEYE,
+ BGMName_MINAMO,
+ BGMName_ASHROAD,
+ BGMName_EVENT0,
+ BGMName_DEEPDEEP,
+ BGMName_KACHI1,
+ BGMName_TITLE3,
+ BGMName_DEMO1,
+ BGMName_GIRL_SUP,
+ BGMName_HAGESHII,
+ BGMName_KAKKOII,
+ BGMName_KAZANBAI,
+ BGMName_AQA_0,
+ BGMName_TSURETEK,
+ BGMName_BOY_SUP,
+ BGMName_RAINBOW,
+ BGMName_AYASII,
+ BGMName_KACHI4,
+ BGMName_ROPEWAY,
+ BGMName_CASINO,
+ BGMName_HIGHTOWN,
+ BGMName_SAFARI,
+ BGMName_C_ROAD,
+ BGMName_AJITO,
+ BGMName_M_BOAT,
+ BGMName_M_DUNGON,
+ BGMName_FINECITY,
+ BGMName_MACHUPI,
+ BGMName_P_SCHOOL,
+ BGMName_DENDOU,
+ BGMName_TONEKUSA,
+ BGMName_MABOROSI,
+ BGMName_CON_FAN,
+ BGMName_CONTEST0,
+ BGMName_MGM0,
+ BGMName_T_BATTLE,
+ BGMName_OOAME,
+ BGMName_HIDERI,
+ BGMName_RUNECITY,
+ BGMName_CON_K,
+ BGMName_EIKOU_R,
+ BGMName_KARAKURI,
+ BGMName_HUTAGO,
+ BGMName_SITENNOU,
+ BGMName_YAMA_EYE,
+ BGMName_CONLOBBY,
+ BGMName_INTER_V,
+ BGMName_DAIGO,
+ BGMName_THANKFOR,
+ BGMName_END,
+ BGMName_BATTLE27,
+ BGMName_BATTLE31,
+ BGMName_BATTLE20,
+ BGMName_BATTLE32,
+ BGMName_BATTLE33,
+ BGMName_BATTLE36,
+ BGMName_BATTLE34,
+ BGMName_BATTLE35,
+ BGMName_BATTLE38,
+ BGMName_BATTLE30
+};
+
+// SE names
+static const u8 SEName_STOP[] = _("STOP");
+static const u8 SEName_KAIFUKU[] = _("KAIFUKU");
+static const u8 SEName_PC_LOGON[] = _("PC-LOGON");
+static const u8 SEName_PC_OFF[] = _("PC-OFF");
+static const u8 SEName_PC_ON[] = _("PC-ON");
+static const u8 SEName_SELECT[] = _("SELECT");
+static const u8 SEName_WIN_OPEN[] = _("WIN-OPEN");
+static const u8 SEName_WALL_HIT[] = _("WALL-HIT");
+static const u8 SEName_DOOR[] = _("DOOR");
+static const u8 SEName_KAIDAN[] = _("KAIDAN");
+static const u8 SEName_DANSA[] = _("DANSA");
+static const u8 SEName_JITENSYA[] = _("JITENSYA");
+static const u8 SEName_KOUKA_L[] = _("KOUKA-L");
+static const u8 SEName_KOUKA_M[] = _("KOUKA-M");
+static const u8 SEName_KOUKA_H[] = _("KOUKA-H");
+static const u8 SEName_BOWA2[] = _("BOWA2");
+static const u8 SEName_POKE_DEAD[] = _("POKE-DEAD");
+static const u8 SEName_NIGERU[] = _("NIGERU");
+static const u8 SEName_JIDO_DOA[] = _("JIDO-DOA");
+static const u8 SEName_NAMINORI[] = _("NAMINORI");
+static const u8 SEName_BAN[] = _("BAN");
+static const u8 SEName_PIN[] = _("PIN");
+static const u8 SEName_BOO[] = _("BOO");
+static const u8 SEName_BOWA[] = _("BOWA");
+static const u8 SEName_JYUNI[] = _("JYUNI");
+static const u8 SEName_A[] = _("A");
+static const u8 SEName_I[] = _("I");
+static const u8 SEName_U[] = _("U");
+static const u8 SEName_E[] = _("E");
+static const u8 SEName_O[] = _("O");
+static const u8 SEName_N[] = _("N");
+static const u8 SEName_SEIKAI[] = _("SEIKAI");
+static const u8 SEName_HAZURE[] = _("HAZURE");
+static const u8 SEName_EXP[] = _("EXP");
+static const u8 SEName_JITE_PYOKO[] = _("JITE-PYOKO");
+static const u8 SEName_MU_PACHI[] = _("MU-PACHI");
+static const u8 SEName_TK_KASYA[] = _("TK-KASYA");
+static const u8 SEName_FU_ZAKU[] = _("FU-ZAKU");
+static const u8 SEName_FU_ZAKU2[] = _("FU-ZAKU2");
+static const u8 SEName_FU_ZUZUZU[] = _("FU-ZUZUZU");
+static const u8 SEName_RU_GASHIN[] = _("RU-GASHIN");
+static const u8 SEName_RU_GASYAN[] = _("RU-GASYAN");
+static const u8 SEName_RU_BARI[] = _("RU-BARI");
+static const u8 SEName_RU_HYUU[] = _("RU-HYUU");
+static const u8 SEName_KI_GASYAN[] = _("KI-GASYAN");
+static const u8 SEName_TK_WARPIN[] = _("TK-WARPIN");
+static const u8 SEName_TK_WARPOUT[] = _("TK-WARPOUT");
+static const u8 SEName_TU_SAA[] = _("TU-SAA");
+static const u8 SEName_HI_TURUN[] = _("HI-TURUN");
+static const u8 SEName_TRACK_MOVE[] = _("TRACK-MOVE");
+static const u8 SEName_TRACK_STOP[] = _("TRACK-STOP");
+static const u8 SEName_TRACK_HAIK[] = _("TRACK-HAIK");
+static const u8 SEName_TRACK_DOOR[] = _("TRACK-DOOR");
+static const u8 SEName_MOTER[] = _("MOTER");
+static const u8 SEName_CARD[] = _("CARD");
+static const u8 SEName_SAVE[] = _("SAVE");
+static const u8 SEName_KON[] = _("KON");
+static const u8 SEName_KON2[] = _("KON2");
+static const u8 SEName_KON3[] = _("KON3");
+static const u8 SEName_KON4[] = _("KON4");
+static const u8 SEName_SUIKOMU[] = _("SUIKOMU");
+static const u8 SEName_NAGERU[] = _("NAGERU");
+static const u8 SEName_TOY_C[] = _("TOY-C");
+static const u8 SEName_TOY_D[] = _("TOY-D");
+static const u8 SEName_TOY_E[] = _("TOY-E");
+static const u8 SEName_TOY_F[] = _("TOY-F");
+static const u8 SEName_TOY_G[] = _("TOY-G");
+static const u8 SEName_TOY_A[] = _("TOY-A");
+static const u8 SEName_TOY_B[] = _("TOY-B");
+static const u8 SEName_TOY_C1[] = _("TOY-C1");
+static const u8 SEName_MIZU[] = _("MIZU");
+static const u8 SEName_HASHI[] = _("HASHI");
+static const u8 SEName_DAUGI[] = _("DAUGI");
+static const u8 SEName_PINPON[] = _("PINPON");
+static const u8 SEName_FUUSEN1[] = _("FUUSEN1");
+static const u8 SEName_FUUSEN2[] = _("FUUSEN2");
+static const u8 SEName_FUUSEN3[] = _("FUUSEN3");
+static const u8 SEName_TOY_KABE[] = _("TOY-KABE");
+static const u8 SEName_TOY_DANGO[] = _("TOY-DANGO");
+static const u8 SEName_DOKU[] = _("DOKU");
+static const u8 SEName_ESUKA[] = _("ESUKA");
+static const u8 SEName_T_AME[] = _("T-AME");
+static const u8 SEName_T_AME_E[] = _("T-AME-E");
+static const u8 SEName_T_OOAME[] = _("T-OOAME");
+static const u8 SEName_T_OOAME_E[] = _("T-OOAME-E");
+static const u8 SEName_T_KOAME[] = _("T-KOAME");
+static const u8 SEName_T_KOAME_E[] = _("T-KOAME-E");
+static const u8 SEName_T_KAMI[] = _("T-KAMI");
+static const u8 SEName_T_KAMI2[] = _("T-KAMI2");
+static const u8 SEName_ELEBETA[] = _("ELEBETA");
+static const u8 SEName_HINSI[] = _("HINSI");
+static const u8 SEName_EXPMAX[] = _("EXPMAX");
+static const u8 SEName_TAMAKORO[] = _("TAMAKORO");
+static const u8 SEName_TAMAKORO_E[] = _("TAMAKORO-E");
+static const u8 SEName_BASABASA[] = _("BASABASA");
+static const u8 SEName_REGI[] = _("REGI");
+static const u8 SEName_C_GAJI[] = _("C-GAJI");
+static const u8 SEName_C_MAKU_U[] = _("C-MAKU-U");
+static const u8 SEName_C_MAKU_D[] = _("C-MAKU-D");
+static const u8 SEName_C_PASI[] = _("C-PASI");
+static const u8 SEName_C_SYU[] = _("C-SYU");
+static const u8 SEName_C_PIKON[] = _("C-PIKON");
+static const u8 SEName_REAPOKE[] = _("REAPOKE");
+static const u8 SEName_OP_BASYU[] = _("OP-BASYU");
+static const u8 SEName_BT_START[] = _("BT-START");
+static const u8 SEName_DENDOU[] = _("DENDOU");
+static const u8 SEName_JIHANKI[] = _("JIHANKI");
+static const u8 SEName_TAMA[] = _("TAMA");
+static const u8 SEName_Z_SCROLL[] = _("Z-SCROLL");
+static const u8 SEName_Z_PAGE[] = _("Z-PAGE");
+static const u8 SEName_PN_ON[] = _("PN-ON");
+static const u8 SEName_PN_OFF[] = _("PN-OFF");
+static const u8 SEName_Z_SEARCH[] = _("Z-SEARCH");
+static const u8 SEName_TAMAGO[] = _("TAMAGO");
+static const u8 SEName_TB_START[] = _("TB-START");
+static const u8 SEName_TB_KON[] = _("TB-KON");
+static const u8 SEName_TB_KARA[] = _("TB-KARA");
+static const u8 SEName_BIDORO[] = _("BIDORO");
+static const u8 SEName_W085[] = _("W085");
+static const u8 SEName_W085B[] = _("W085B");
+static const u8 SEName_W231[] = _("W231");
+static const u8 SEName_W171[] = _("W171");
+static const u8 SEName_W233[] = _("W233");
+static const u8 SEName_W233B[] = _("W233B");
+static const u8 SEName_W145[] = _("W145");
+static const u8 SEName_W145B[] = _("W145B");
+static const u8 SEName_W145C[] = _("W145C");
+static const u8 SEName_W240[] = _("W240");
+static const u8 SEName_W015[] = _("W015");
+static const u8 SEName_W081[] = _("W081");
+static const u8 SEName_W081B[] = _("W081B");
+static const u8 SEName_W088[] = _("W088");
+static const u8 SEName_W016[] = _("W016");
+static const u8 SEName_W016B[] = _("W016B");
+static const u8 SEName_W003[] = _("W003");
+static const u8 SEName_W104[] = _("W104");
+static const u8 SEName_W013[] = _("W013");
+static const u8 SEName_W196[] = _("W196");
+static const u8 SEName_W086[] = _("W086");
+static const u8 SEName_W004[] = _("W004");
+static const u8 SEName_W025[] = _("W025");
+static const u8 SEName_W025B[] = _("W025B");
+static const u8 SEName_W152[] = _("W152");
+static const u8 SEName_W026[] = _("W026");
+static const u8 SEName_W172[] = _("W172");
+static const u8 SEName_W172B[] = _("W172B");
+static const u8 SEName_W053[] = _("W053");
+static const u8 SEName_W007[] = _("W007");
+static const u8 SEName_W092[] = _("W092");
+static const u8 SEName_W221[] = _("W221");
+static const u8 SEName_W221B[] = _("W221B");
+static const u8 SEName_W052[] = _("W052");
+static const u8 SEName_W036[] = _("W036");
+static const u8 SEName_W059[] = _("W059");
+static const u8 SEName_W059B[] = _("W059B");
+static const u8 SEName_W010[] = _("W010");
+static const u8 SEName_W011[] = _("W011");
+static const u8 SEName_W017[] = _("W017");
+static const u8 SEName_W019[] = _("W019");
+static const u8 SEName_W028[] = _("W028");
+static const u8 SEName_W013B[] = _("W013B");
+static const u8 SEName_W044[] = _("W044");
+static const u8 SEName_W029[] = _("W029");
+static const u8 SEName_W057[] = _("W057");
+static const u8 SEName_W056[] = _("W056");
+static const u8 SEName_W250[] = _("W250");
+static const u8 SEName_W030[] = _("W030");
+static const u8 SEName_W039[] = _("W039");
+static const u8 SEName_W054[] = _("W054");
+static const u8 SEName_W077[] = _("W077");
+static const u8 SEName_W020[] = _("W020");
+static const u8 SEName_W082[] = _("W082");
+static const u8 SEName_W047[] = _("W047");
+static const u8 SEName_W195[] = _("W195");
+static const u8 SEName_W006[] = _("W006");
+static const u8 SEName_W091[] = _("W091");
+static const u8 SEName_W146[] = _("W146");
+static const u8 SEName_W120[] = _("W120");
+static const u8 SEName_W153[] = _("W153");
+static const u8 SEName_W071B[] = _("W071B");
+static const u8 SEName_W071[] = _("W071");
+static const u8 SEName_W103[] = _("W103");
+static const u8 SEName_W062[] = _("W062");
+static const u8 SEName_W062B[] = _("W062B");
+static const u8 SEName_W048[] = _("W048");
+static const u8 SEName_W187[] = _("W187");
+static const u8 SEName_W118[] = _("W118");
+static const u8 SEName_W155[] = _("W155");
+static const u8 SEName_W122[] = _("W122");
+static const u8 SEName_W060[] = _("W060");
+static const u8 SEName_W185[] = _("W185");
+static const u8 SEName_W014[] = _("W014");
+static const u8 SEName_W043[] = _("W043");
+static const u8 SEName_W207[] = _("W207");
+static const u8 SEName_W207B[] = _("W207B");
+static const u8 SEName_W215[] = _("W215");
+static const u8 SEName_W109[] = _("W109");
+static const u8 SEName_W173[] = _("W173");
+static const u8 SEName_W280[] = _("W280");
+static const u8 SEName_W202[] = _("W202");
+static const u8 SEName_W060B[] = _("W060B");
+static const u8 SEName_W076[] = _("W076");
+static const u8 SEName_W080[] = _("W080");
+static const u8 SEName_W100[] = _("W100");
+static const u8 SEName_W107[] = _("W107");
+static const u8 SEName_W166[] = _("W166");
+static const u8 SEName_W129[] = _("W129");
+static const u8 SEName_W115[] = _("W115");
+static const u8 SEName_W112[] = _("W112");
+static const u8 SEName_W197[] = _("W197");
+static const u8 SEName_W199[] = _("W199");
+static const u8 SEName_W236[] = _("W236");
+static const u8 SEName_W204[] = _("W204");
+static const u8 SEName_W268[] = _("W268");
+static const u8 SEName_W070[] = _("W070");
+static const u8 SEName_W063[] = _("W063");
+static const u8 SEName_W127[] = _("W127");
+static const u8 SEName_W179[] = _("W179");
+static const u8 SEName_W151[] = _("W151");
+static const u8 SEName_W201[] = _("W201");
+static const u8 SEName_W161[] = _("W161");
+static const u8 SEName_W161B[] = _("W161B");
+static const u8 SEName_W227[] = _("W227");
+static const u8 SEName_W227B[] = _("W227B");
+static const u8 SEName_W226[] = _("W226");
+static const u8 SEName_W208[] = _("W208");
+static const u8 SEName_W213[] = _("W213");
+static const u8 SEName_W213B[] = _("W213B");
+static const u8 SEName_W234[] = _("W234");
+static const u8 SEName_W260[] = _("W260");
+static const u8 SEName_W328[] = _("W328");
+static const u8 SEName_W320[] = _("W320");
+static const u8 SEName_W255[] = _("W255");
+static const u8 SEName_W291[] = _("W291");
+static const u8 SEName_W089[] = _("W089");
+static const u8 SEName_W239[] = _("W239");
+static const u8 SEName_W230[] = _("W230");
+static const u8 SEName_W281[] = _("W281");
+static const u8 SEName_W327[] = _("W327");
+static const u8 SEName_W287[] = _("W287");
+static const u8 SEName_W257[] = _("W257");
+static const u8 SEName_W253[] = _("W253");
+static const u8 SEName_W258[] = _("W258");
+static const u8 SEName_W322[] = _("W322");
+static const u8 SEName_W298[] = _("W298");
+static const u8 SEName_W287B[] = _("W287B");
+static const u8 SEName_W114[] = _("W114");
+static const u8 SEName_W063B[] = _("W063B");
+
+static const u8 *const gSENames[] =
+{
+ SEName_STOP,
+ SEName_KAIFUKU,
+ SEName_PC_LOGON,
+ SEName_PC_OFF,
+ SEName_PC_ON,
+ SEName_SELECT,
+ SEName_WIN_OPEN,
+ SEName_WALL_HIT,
+ SEName_DOOR,
+ SEName_KAIDAN,
+ SEName_DANSA,
+ SEName_JITENSYA,
+ SEName_KOUKA_L,
+ SEName_KOUKA_M,
+ SEName_KOUKA_H,
+ SEName_BOWA2,
+ SEName_POKE_DEAD,
+ SEName_NIGERU,
+ SEName_JIDO_DOA,
+ SEName_NAMINORI,
+ SEName_BAN,
+ SEName_PIN,
+ SEName_BOO,
+ SEName_BOWA,
+ SEName_JYUNI,
+ SEName_A,
+ SEName_I,
+ SEName_U,
+ SEName_E,
+ SEName_O,
+ SEName_N,
+ SEName_SEIKAI,
+ SEName_HAZURE,
+ SEName_EXP,
+ SEName_JITE_PYOKO,
+ SEName_MU_PACHI,
+ SEName_TK_KASYA,
+ SEName_FU_ZAKU,
+ SEName_FU_ZAKU2,
+ SEName_FU_ZUZUZU,
+ SEName_RU_GASHIN,
+ SEName_RU_GASYAN,
+ SEName_RU_BARI,
+ SEName_RU_HYUU,
+ SEName_KI_GASYAN,
+ SEName_TK_WARPIN,
+ SEName_TK_WARPOUT,
+ SEName_TU_SAA,
+ SEName_HI_TURUN,
+ SEName_TRACK_MOVE,
+ SEName_TRACK_STOP,
+ SEName_TRACK_HAIK,
+ SEName_TRACK_DOOR,
+ SEName_MOTER,
+ SEName_CARD,
+ SEName_SAVE,
+ SEName_KON,
+ SEName_KON2,
+ SEName_KON3,
+ SEName_KON4,
+ SEName_SUIKOMU,
+ SEName_NAGERU,
+ SEName_TOY_C,
+ SEName_TOY_D,
+ SEName_TOY_E,
+ SEName_TOY_F,
+ SEName_TOY_G,
+ SEName_TOY_A,
+ SEName_TOY_B,
+ SEName_TOY_C1,
+ SEName_MIZU,
+ SEName_HASHI,
+ SEName_DAUGI,
+ SEName_PINPON,
+ SEName_FUUSEN1,
+ SEName_FUUSEN2,
+ SEName_FUUSEN3,
+ SEName_TOY_KABE,
+ SEName_TOY_DANGO,
+ SEName_DOKU,
+ SEName_ESUKA,
+ SEName_T_AME,
+ SEName_T_AME_E,
+ SEName_T_OOAME,
+ SEName_T_OOAME_E,
+ SEName_T_KOAME,
+ SEName_T_KOAME_E,
+ SEName_T_KAMI,
+ SEName_T_KAMI2,
+ SEName_ELEBETA,
+ SEName_HINSI,
+ SEName_EXPMAX,
+ SEName_TAMAKORO,
+ SEName_TAMAKORO_E,
+ SEName_BASABASA,
+ SEName_REGI,
+ SEName_C_GAJI,
+ SEName_C_MAKU_U,
+ SEName_C_MAKU_D,
+ SEName_C_PASI,
+ SEName_C_SYU,
+ SEName_C_PIKON,
+ SEName_REAPOKE,
+ SEName_OP_BASYU,
+ SEName_BT_START,
+ SEName_DENDOU,
+ SEName_JIHANKI,
+ SEName_TAMA,
+ SEName_Z_SCROLL,
+ SEName_Z_PAGE,
+ SEName_PN_ON,
+ SEName_PN_OFF,
+ SEName_Z_SEARCH,
+ SEName_TAMAGO,
+ SEName_TB_START,
+ SEName_TB_KON,
+ SEName_TB_KARA,
+ SEName_BIDORO,
+ SEName_W085,
+ SEName_W085B,
+ SEName_W231,
+ SEName_W171,
+ SEName_W233,
+ SEName_W233B,
+ SEName_W145,
+ SEName_W145B,
+ SEName_W145C,
+ SEName_W240,
+ SEName_W015,
+ SEName_W081,
+ SEName_W081B,
+ SEName_W088,
+ SEName_W016,
+ SEName_W016B,
+ SEName_W003,
+ SEName_W104,
+ SEName_W013,
+ SEName_W196,
+ SEName_W086,
+ SEName_W004,
+ SEName_W025,
+ SEName_W025B,
+ SEName_W152,
+ SEName_W026,
+ SEName_W172,
+ SEName_W172B,
+ SEName_W053,
+ SEName_W007,
+ SEName_W092,
+ SEName_W221,
+ SEName_W221B,
+ SEName_W052,
+ SEName_W036,
+ SEName_W059,
+ SEName_W059B,
+ SEName_W010,
+ SEName_W011,
+ SEName_W017,
+ SEName_W019,
+ SEName_W028,
+ SEName_W013B,
+ SEName_W044,
+ SEName_W029,
+ SEName_W057,
+ SEName_W056,
+ SEName_W250,
+ SEName_W030,
+ SEName_W039,
+ SEName_W054,
+ SEName_W077,
+ SEName_W020,
+ SEName_W082,
+ SEName_W047,
+ SEName_W195,
+ SEName_W006,
+ SEName_W091,
+ SEName_W146,
+ SEName_W120,
+ SEName_W153,
+ SEName_W071B,
+ SEName_W071,
+ SEName_W103,
+ SEName_W062,
+ SEName_W062B,
+ SEName_W048,
+ SEName_W187,
+ SEName_W118,
+ SEName_W155,
+ SEName_W122,
+ SEName_W060,
+ SEName_W185,
+ SEName_W014,
+ SEName_W043,
+ SEName_W207,
+ SEName_W207B,
+ SEName_W215,
+ SEName_W109,
+ SEName_W173,
+ SEName_W280,
+ SEName_W202,
+ SEName_W060B,
+ SEName_W076,
+ SEName_W080,
+ SEName_W100,
+ SEName_W107,
+ SEName_W166,
+ SEName_W129,
+ SEName_W115,
+ SEName_W112,
+ SEName_W197,
+ SEName_W199,
+ SEName_W236,
+ SEName_W204,
+ SEName_W268,
+ SEName_W070,
+ SEName_W063,
+ SEName_W127,
+ SEName_W179,
+ SEName_W151,
+ SEName_W201,
+ SEName_W161,
+ SEName_W161B,
+ SEName_W227,
+ SEName_W227B,
+ SEName_W226,
+ SEName_W208,
+ SEName_W213,
+ SEName_W213B,
+ SEName_W234,
+ SEName_W260,
+ SEName_W328,
+ SEName_W320,
+ SEName_W255,
+ SEName_W291,
+ SEName_W089,
+ SEName_W239,
+ SEName_W230,
+ SEName_W281,
+ SEName_W327,
+ SEName_W287,
+ SEName_W257,
+ SEName_W253,
+ SEName_W258,
+ SEName_W322,
+ SEName_W298,
+ SEName_W287B,
+ SEName_W114,
+ SEName_W063B
+};
+
+void sub_80BA0A8(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_80BA0C0(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+
+ if(gUnknown_020387B0 != 0)
+ {
+ m4aSoundMain();
+ m4aSoundMain();
+ m4aSoundMain();
+ }
+}
+
+// unused
+void CB2_StartSoundCheckMenu(void)
+{
+ u8 taskId;
+
+ SetVBlankCallback(NULL);
+ REG_DISPCNT = 0;
+ REG_BG2CNT = 0;
+ REG_BG1CNT = 0;
+ REG_BG0CNT = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ DmaFill16(3, 0, VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, OAM, OAM_SIZE);
+ DmaFill16(3, 0, PLTT, PLTT_SIZE);
+ ResetPaletteFade();
+ ResetTasks();
+ ResetSpriteData();
+ SetUpWindowConfig(&gWindowConfig_81E6C3C);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ REG_WIN0H = WIN_RANGE(0, 0);
+ REG_WIN0V = WIN_RANGE(0, 0);
+ REG_WIN1H = WIN_RANGE(0, 0);
+ REG_WIN1V = WIN_RANGE(0, 0);
+ REG_WININ = 0x1111;
+ REG_WINOUT = 0x31;
+ REG_BLDCNT = 0xE1;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 7;
+ REG_IE = 1; // could be a typo of REG_IME
+ REG_IE |= 1;
+ REG_DISPSTAT |= 8;
+ SetVBlankCallback(sub_80BA0C0);
+ SetMainCallback2(sub_80BA0A8);
+ REG_DISPCNT = 0x7140;
+ taskId = CreateTask(sub_80BA258, 0);
+ TASK.WINDOW_SELECTED = BGM_WINDOW;
+ TASK.BGM_INDEX = 0;
+ TASK.SE_INDEX = 0;
+ TASK.UNK_DATA3 = 0;
+ gUnknown_020387B0 = 0;
+ TASK.UNK_DATA3 = 0; // why?
+ m4aSoundInit();
+}
+
+// Task_InitSoundCheckMenu
+void sub_80BA258(u8 taskId)
+{
+ u8 soundcheckStr[sizeof(gDebugText_SoundCheckJap)];
+ u8 bgmStr[sizeof(gDebugText_BGM)];
+ u8 seStr[sizeof(gDebugText_SE)];
+ u8 abDescStr[sizeof(gDebugText_ABDesc)];
+ u8 upDownStr[sizeof(gDebugText_UpDown)];
+ u8 driverStr[sizeof(gDebugText_DriverTest)];
+
+ memcpy(soundcheckStr, gDebugText_SoundCheckJap, sizeof(gDebugText_SoundCheckJap));
+ memcpy(bgmStr, gDebugText_BGM, sizeof(gDebugText_BGM));
+ memcpy(seStr, gDebugText_SE, sizeof(gDebugText_SE));
+ memcpy(abDescStr, gDebugText_ABDesc, sizeof(gDebugText_ABDesc));
+ memcpy(upDownStr, gDebugText_UpDown, sizeof(gDebugText_UpDown));
+ memcpy(driverStr, gDebugText_DriverTest, sizeof(gDebugText_DriverTest));
+
+ if(!gPaletteFade.active)
+ {
+ MenuDrawTextWindow(0x2, 0, 0x1B, 0x3);
+ MenuDrawTextWindow(0x2, 0x5, 0x1B, 0xA);
+ MenuDrawTextWindow(0x2, 0xC, 0x1B, 0x11);
+ MenuPrint(soundcheckStr, 4, 1);
+ MenuPrint(abDescStr, 14, 1);
+ MenuPrint(bgmStr, 4, 6);
+ MenuPrint(upDownStr, 14, 6);
+ MenuPrint(seStr, 4, 13);
+ MenuPrint(upDownStr, 14, 13);
+ MenuPrint(driverStr, 14, 18);
+ TASK.FUNC = sub_80BA384;
+ REG_WIN0H = WIN_RANGE(17, 223);
+ REG_WIN0V = WIN_RANGE(1, 31);
+ }
+}
+
+void sub_80BA384(u8 taskId) // Task_HandleDrawingSoundCheckMenuText
+{
+ sub_80BA6B8(TASK.WINDOW_SELECTED);
+ sub_80BA700(TASK.BGM_INDEX + BGM_STOP, 7, 8); // print by BGM index
+ sub_80BA79C(gBGMNames[TASK.BGM_INDEX], 11, 8);
+ sub_80BA700(TASK.SE_INDEX, 7, 15);
+ sub_80BA79C(gSENames[TASK.SE_INDEX], 11, 15);
+ TASK.FUNC = sub_80BA65C;
+}
+
+#ifdef NONMATCHING
+bool8 sub_80BA400(u8 taskId) // Task_ProcessSoundCheckMenuInput
+{
+ if(gMain.newKeys & R_BUTTON) // driver test
+ {
+ TASK.FUNC = sub_80BA800;
+ return FALSE;
+ }
+ if(gMain.newKeys & L_BUTTON)
+ {
+ TASK.FUNC = sub_80BAF84;
+ return FALSE;
+ }
+ if(gMain.newKeys & START_BUTTON)
+ {
+ TASK.FUNC = sub_80BB25C;
+ return FALSE;
+ }
+ if(gMain.newKeys & A_BUTTON) // both these cases insist on non reuses of certain data variables and cause the function to not match.
+ {
+ if(TASK.WINDOW_SELECTED != 0) // is playing?
+ {
+ if(TASK.UNK_DATA4 != 0)
+ {
+ if(TASK.SE_INDEX != 0) // why are you insiting on a non signed halfword?
+ {
+ m4aSongNumStop(TASK.UNK_DATA4);
+ }
+ else
+ {
+ m4aSongNumStop(TASK.SE_INDEX);
+ TASK.UNK_DATA4 = TASK.SE_INDEX;
+ return FALSE;
+ }
+ }
+ else if(TASK.SE_INDEX == 0) // _080BA4BA
+ {
+ return FALSE;
+ }
+ // _080BA4C4
+ m4aSongNumStart(TASK.SE_INDEX);
+ TASK.UNK_DATA4 = TASK.SE_INDEX;
+ return FALSE;
+ }
+ else // _080BA4D0
+ {
+ if(TASK.UNK_DATA3 != 0)
+ {
+ if(TASK.BGM_INDEX != 0)
+ {
+ m4aSongNumStop(TASK.UNK_DATA3 + BGM_STOP);
+ }
+ else // _080BA500
+ {
+ m4aSongNumStop(TASK.UNK_DATA3 + BGM_STOP);
+ TASK.UNK_DATA3 = TASK.BGM_INDEX;
+ return FALSE;
+ }
+ }
+ else if(TASK.BGM_INDEX == 0) // _080BA514
+ return FALSE;
+
+ m4aSongNumStart(TASK.BGM_INDEX + BGM_STOP);
+ TASK.UNK_DATA3 = TASK.BGM_INDEX;
+ }
+ return FALSE;
+ }
+ if(gMain.newKeys & B_BUTTON)
+ {
+ m4aSongNumStart(5);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ TASK.FUNC = sub_80BA68C;
+ return FALSE;
+ }
+ if(gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ TASK.data[8] ^= A_BUTTON; // huh?
+ return TRUE;
+ }
+ if(gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ TASK.data[8] ^= A_BUTTON; // huh?
+ return TRUE;
+ }
+ else
+ {
+ u16 keys = gMain.newAndRepeatedKeys & DPAD_RIGHT;
+ if(keys)
+ {
+ if(TASK.WINDOW_SELECTED != 0)
+ {
+ if(TASK.SE_INDEX > 0)
+ {
+ TASK.SE_INDEX--;
+ }
+ else
+ {
+ TASK.SE_INDEX = 0xF7;
+ }
+ }
+ else if(TASK.BGM_INDEX > 0)
+ {
+ TASK.BGM_INDEX--;
+ }
+ else
+ {
+ TASK.BGM_INDEX = 0x75;
+ }
+ return TRUE;
+ }
+ if(gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ if(TASK.WINDOW_SELECTED != 0)
+ {
+ if(TASK.SE_INDEX < 0xF7)
+ {
+ TASK.SE_INDEX++;
+ }
+ else
+ {
+ TASK.SE_INDEX = keys; // ??
+ }
+ }
+ else if(TASK.BGM_INDEX < 0x75)
+ {
+ TASK.BGM_INDEX++;
+ return TRUE;
+ }
+ else
+ {
+ TASK.BGM_INDEX = TASK.SE_INDEX;
+ return TRUE;
+ }
+ return TRUE;
+ }
+ if(gMain.heldKeys & SELECT_BUTTON)
+ {
+ gUnknown_020387B0 = A_BUTTON;
+ return FALSE;
+ }
+ else
+ {
+ gUnknown_020387B0 = (gMain.heldKeys & SELECT_BUTTON);
+ return FALSE;
+ }
+ }
+}
+#else
+__attribute__((naked))
+bool8 sub_80BA400(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ ldr r2, _080BA428 @ =gMain\n\
+ ldrh r1, [r2, 0x2E]\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080BA434\n\
+ ldr r0, _080BA42C @ =gTasks\n\
+ lsls r1, r4, 2\n\
+ adds r1, r4\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldr r0, _080BA430 @ =sub_80BA800\n\
+ str r0, [r1]\n\
+ b _080BA64C\n\
+ .align 2, 0\n\
+_080BA428: .4byte gMain\n\
+_080BA42C: .4byte gTasks\n\
+_080BA430: .4byte sub_80BA800\n\
+_080BA434:\n\
+ movs r0, 0x80\n\
+ lsls r0, 2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080BA458\n\
+ ldr r0, _080BA450 @ =gTasks\n\
+ lsls r1, r4, 2\n\
+ adds r1, r4\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldr r0, _080BA454 @ =sub_80BAF84\n\
+ str r0, [r1]\n\
+ b _080BA64C\n\
+ .align 2, 0\n\
+_080BA450: .4byte gTasks\n\
+_080BA454: .4byte sub_80BAF84\n\
+_080BA458:\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080BA478\n\
+ ldr r0, _080BA470 @ =gTasks\n\
+ lsls r1, r4, 2\n\
+ adds r1, r4\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldr r0, _080BA474 @ =sub_80BB25C\n\
+ str r0, [r1]\n\
+ b _080BA64C\n\
+ .align 2, 0\n\
+_080BA470: .4byte gTasks\n\
+_080BA474: .4byte sub_80BB25C\n\
+_080BA478:\n\
+ movs r6, 0x1\n\
+ movs r5, 0x1\n\
+ ands r5, r1\n\
+ cmp r5, 0\n\
+ beq _080BA538\n\
+ ldr r0, _080BA4AC @ =gTasks\n\
+ lsls r1, r4, 2\n\
+ adds r1, r4\n\
+ lsls r1, 3\n\
+ adds r5, r1, r0\n\
+ movs r1, 0x8\n\
+ ldrsh r0, [r5, r1]\n\
+ cmp r0, 0\n\
+ beq _080BA4D0\n\
+ movs r2, 0x10\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0\n\
+ beq _080BA4BA\n\
+ movs r3, 0xC\n\
+ ldrsh r4, [r5, r3]\n\
+ cmp r4, 0\n\
+ beq _080BA4B0\n\
+ ldrh r0, [r5, 0x10]\n\
+ bl m4aSongNumStop\n\
+ b _080BA4C4\n\
+ .align 2, 0\n\
+_080BA4AC: .4byte gTasks\n\
+_080BA4B0:\n\
+ ldrh r0, [r5, 0x10]\n\
+ bl m4aSongNumStop\n\
+ strh r4, [r5, 0x10]\n\
+ b _080BA64C\n\
+_080BA4BA:\n\
+ movs r4, 0xC\n\
+ ldrsh r0, [r5, r4]\n\
+ cmp r0, 0\n\
+ bne _080BA4C4\n\
+ b _080BA64C\n\
+_080BA4C4:\n\
+ ldrh r0, [r5, 0xC]\n\
+ bl m4aSongNumStart\n\
+ ldrh r0, [r5, 0xC]\n\
+ strh r0, [r5, 0x10]\n\
+ b _080BA64C\n\
+_080BA4D0:\n\
+ ldrh r1, [r5, 0xE]\n\
+ movs r2, 0xE\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0\n\
+ beq _080BA514\n\
+ movs r3, 0xA\n\
+ ldrsh r4, [r5, r3]\n\
+ cmp r4, 0\n\
+ beq _080BA500\n\
+ ldr r0, _080BA4FC @ =0x0000015d\n\
+ adds r4, r0, 0\n\
+ adds r0, r1, r4\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl m4aSongNumStop\n\
+ ldrh r1, [r5, 0xA]\n\
+ adds r4, r1\n\
+ lsls r4, 16\n\
+ lsrs r4, 16\n\
+ adds r0, r4, 0\n\
+ b _080BA528\n\
+ .align 2, 0\n\
+_080BA4FC: .4byte 0x0000015d\n\
+_080BA500:\n\
+ ldr r2, _080BA510 @ =0x0000015d\n\
+ adds r0, r1, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl m4aSongNumStop\n\
+ strh r4, [r5, 0xE]\n\
+ b _080BA64C\n\
+ .align 2, 0\n\
+_080BA510: .4byte 0x0000015d\n\
+_080BA514:\n\
+ ldrh r1, [r5, 0xA]\n\
+ movs r3, 0xA\n\
+ ldrsh r0, [r5, r3]\n\
+ cmp r0, 0\n\
+ bne _080BA520\n\
+ b _080BA64C\n\
+_080BA520:\n\
+ ldr r4, _080BA534 @ =0x0000015d\n\
+ adds r0, r1, r4\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+_080BA528:\n\
+ bl m4aSongNumStart\n\
+ ldrh r0, [r5, 0xA]\n\
+ strh r0, [r5, 0xE]\n\
+ b _080BA64C\n\
+ .align 2, 0\n\
+_080BA534: .4byte 0x0000015d\n\
+_080BA538:\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080BA570\n\
+ movs r0, 0x5\n\
+ bl m4aSongNumStart\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ str r5, [sp]\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ movs r3, 0x10\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r1, _080BA568 @ =gTasks\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldr r1, _080BA56C @ =sub_80BA68C\n\
+ str r1, [r0]\n\
+ b _080BA64C\n\
+ .align 2, 0\n\
+_080BA568: .4byte gTasks\n\
+_080BA56C: .4byte sub_80BA68C\n\
+_080BA570:\n\
+ ldrh r1, [r2, 0x30]\n\
+ movs r0, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080BA582\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080BA59C\n\
+_080BA582:\n\
+ ldr r0, _080BA598 @ =gTasks\n\
+ lsls r1, r4, 2\n\
+ adds r1, r4\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldrh r0, [r1, 0x8]\n\
+ eors r0, r6\n\
+ strh r0, [r1, 0x8]\n\
+_080BA592:\n\
+ movs r0, 0x1\n\
+ b _080BA64E\n\
+ .align 2, 0\n\
+_080BA598: .4byte gTasks\n\
+_080BA59C:\n\
+ movs r0, 0x10\n\
+ ands r0, r1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0\n\
+ beq _080BA5EA\n\
+ ldr r0, _080BA5CC @ =gTasks\n\
+ lsls r1, r4, 2\n\
+ adds r1, r4\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ movs r2, 0x8\n\
+ ldrsh r0, [r1, r2]\n\
+ cmp r0, 0\n\
+ beq _080BA5D6\n\
+ ldrh r2, [r1, 0xC]\n\
+ movs r3, 0xC\n\
+ ldrsh r0, [r1, r3]\n\
+ cmp r0, 0\n\
+ ble _080BA5D0\n\
+ subs r0, r2, 0x1\n\
+ strh r0, [r1, 0xC]\n\
+ b _080BA592\n\
+ .align 2, 0\n\
+_080BA5CC: .4byte gTasks\n\
+_080BA5D0:\n\
+ movs r0, 0xF7\n\
+ strh r0, [r1, 0xC]\n\
+ b _080BA592\n\
+_080BA5D6:\n\
+ ldrh r2, [r1, 0xA]\n\
+ movs r4, 0xA\n\
+ ldrsh r0, [r1, r4]\n\
+ cmp r0, 0\n\
+ ble _080BA5E4\n\
+ subs r0, r2, 0x1\n\
+ b _080BA5E6\n\
+_080BA5E4:\n\
+ movs r0, 0x75\n\
+_080BA5E6:\n\
+ strh r0, [r1, 0xA]\n\
+ b _080BA592\n\
+_080BA5EA:\n\
+ movs r0, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080BA630\n\
+ ldr r1, _080BA614 @ =gTasks\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 3\n\
+ adds r1, r0, r1\n\
+ movs r0, 0x8\n\
+ ldrsh r2, [r1, r0]\n\
+ cmp r2, 0\n\
+ beq _080BA61C\n\
+ ldrh r2, [r1, 0xC]\n\
+ movs r4, 0xC\n\
+ ldrsh r0, [r1, r4]\n\
+ cmp r0, 0xF6\n\
+ bgt _080BA618\n\
+ adds r0, r2, 0x1\n\
+ strh r0, [r1, 0xC]\n\
+ b _080BA592\n\
+ .align 2, 0\n\
+_080BA614: .4byte gTasks\n\
+_080BA618:\n\
+ strh r3, [r1, 0xC]\n\
+ b _080BA592\n\
+_080BA61C:\n\
+ ldrh r3, [r1, 0xA]\n\
+ movs r4, 0xA\n\
+ ldrsh r0, [r1, r4]\n\
+ cmp r0, 0x74\n\
+ bgt _080BA62C\n\
+ adds r0, r3, 0x1\n\
+ strh r0, [r1, 0xA]\n\
+ b _080BA592\n\
+_080BA62C:\n\
+ strh r2, [r1, 0xA]\n\
+ b _080BA592\n\
+_080BA630:\n\
+ ldrh r1, [r2, 0x2C]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, 0\n\
+ beq _080BA648\n\
+ ldr r0, _080BA644 @ =gUnknown_020387B0\n\
+ strb r6, [r0]\n\
+ b _080BA64C\n\
+ .align 2, 0\n\
+_080BA644: .4byte gUnknown_020387B0\n\
+_080BA648:\n\
+ ldr r0, _080BA658 @ =gUnknown_020387B0\n\
+ strb r1, [r0]\n\
+_080BA64C:\n\
+ movs r0, 0\n\
+_080BA64E:\n\
+ add sp, 0x4\n\
+ pop {r4-r6}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_080BA658: .4byte gUnknown_020387B0\n\
+ .syntax divided");
+}
+#endif
+
+void sub_80BA65C(u8 taskId)
+{
+ if(sub_80BA400(taskId) != FALSE)
+ TASK.FUNC = sub_80BA384;
+}
+
+void sub_80BA68C(u8 taskId)
+{
+ if(!gPaletteFade.active)
+ {
+ DestroyTask(taskId);
+ SetMainCallback2(CB2_InitTitleScreen);
+ }
+}
+
+void sub_80BA6B8(u8 windowType)
+{
+ switch(windowType)
+ {
+ case BGM_WINDOW:
+ default:
+ REG_WIN1H = WIN_RANGE(17, 223);
+ REG_WIN1V = WIN_RANGE(41, 87);
+ break;
+ case SE_WINDOW:
+ REG_WIN1H = WIN_RANGE(17, 223);
+ REG_WIN1V = WIN_RANGE(97, 143);
+ break;
+ }
+}
+
+void sub_80BA700(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ?
+{
+ u8 i;
+ u8 str[5];
+ bool8 someBool;
+ u8 divisorValue;
+
+ for(i = 0; i < 3; i++)
+ str[i] = 0; // initialize array
+
+ str[3] = CHAR_ELLIPSIS;
+ str[4] = EOS;
+ someBool = FALSE;
+
+ divisorValue = soundIndex / 100;
+ if(divisorValue)
+ {
+ str[0] = divisorValue + CHAR_0;
+ someBool = TRUE;
+ }
+
+ divisorValue = (soundIndex % 100) / 10;
+ if(divisorValue || someBool != FALSE)
+ str[1] = divisorValue + CHAR_0;
+
+ str[2] = ((soundIndex % 100) % 10) + CHAR_0;
+ MenuPrint(str, x, y);
+}
+
+void sub_80BA79C(const u8 *const string, u16 x, u16 y)
+{
+ u8 i;
+ u8 str[11];
+
+ for(i = 0; i < 11; i++)
+ str[i] = 0; // format string.
+
+ str[10] = EOS; // the above for loop formats the last element of the array unnecessarily.
+
+ for(i = 0; string[i] != EOS && i < 10; i++)
+ str[i] = string[i];
+
+ MenuPrint(str, x, y);
+}
+
+void sub_80BA800(u8 taskId) // Task_DrawDriverTestMenu
+{
+ u8 bbackStr[sizeof(gDebugText_BBack)];
+ u8 aplayStr[sizeof(gDebugText_APlay)];
+ u8 voiceStr[sizeof(gDebugText_Voice)];
+ u8 volumeStr[sizeof(gDebugText_Volume)];
+ u8 panpotStr[sizeof(gDebugText_Panpot)];
+ u8 pitchStr[sizeof(gDebugText_Pitch)];
+ u8 lengthStr[sizeof(gDebugText_Length)];
+ u8 releaseStr[sizeof(gDebugText_Release)];
+ u8 progressStr[sizeof(gDebugText_Progress)];
+ u8 chorusStr[sizeof(gDebugText_Chorus)];
+ u8 priorityStr[sizeof(gDebugText_Priority)];
+ u8 playingStr[sizeof(gDebugText_Playing)];
+ u8 reverseStr[sizeof(gDebugText_Reverse)];
+ u8 stereoStr[sizeof(gDebugText_Stereo)];
+
+ memcpy(bbackStr, gDebugText_BBack, sizeof(gDebugText_BBack));
+ memcpy(aplayStr, gDebugText_APlay, sizeof(gDebugText_APlay));
+ memcpy(voiceStr, gDebugText_Voice, sizeof(gDebugText_Voice));
+ memcpy(volumeStr, gDebugText_Volume, sizeof(gDebugText_Volume));
+ memcpy(panpotStr, gDebugText_Panpot, sizeof(gDebugText_Panpot));
+ memcpy(pitchStr, gDebugText_Pitch, sizeof(gDebugText_Pitch));
+ memcpy(lengthStr, gDebugText_Length, sizeof(gDebugText_Length));
+ memcpy(releaseStr, gDebugText_Release, sizeof(gDebugText_Release));
+ memcpy(progressStr, gDebugText_Progress, sizeof(gDebugText_Progress));
+ memcpy(chorusStr, gDebugText_Chorus, sizeof(gDebugText_Chorus));
+ memcpy(priorityStr, gDebugText_Priority, sizeof(gDebugText_Priority));
+ memcpy(playingStr, gDebugText_Playing, sizeof(gDebugText_Playing));
+ memcpy(reverseStr, gDebugText_Reverse, sizeof(gDebugText_Reverse));
+ memcpy(stereoStr, gDebugText_Stereo, sizeof(gDebugText_Stereo));
+
+ REG_DISPCNT = 0x3140;
+ MenuDrawTextWindow(0, 0, 0x1D, 0x13);
+ MenuPrint(bbackStr, 0x13, 0x4);
+ MenuPrint(aplayStr, 0x13, 0x2);
+ MenuPrint(voiceStr, 0x2, 0x1);
+ MenuPrint(volumeStr, 0x2, 0x3);
+ MenuPrint(panpotStr, 0x2, 0x5);
+ MenuPrint(pitchStr, 0x2, 0x7);
+ MenuPrint(lengthStr, 0x2, 0x9);
+ MenuPrint(releaseStr, 0x2, 0xB);
+ MenuPrint(progressStr, 0x2, 0xD);
+ MenuPrint(chorusStr, 0x2, 0xF);
+ MenuPrint(priorityStr, 0x2, 0x11);
+ MenuPrint(playingStr, 0x13, 0x10);
+ MenuPrint(reverseStr, 0x13, 0xE);
+ MenuPrint(stereoStr, 0x13, 0xC);
+ REG_WIN0H = WIN_RANGE(0, 240);
+ REG_WIN0V = WIN_RANGE(0, 160);
+ gUnknown_020387B3 = 0;
+ gUnknown_020387B1 = 0;
+ gUnknown_020387B2 = 0;
+ gUnknown_03005D30 = NULL;
+ gUnknown_020387D8 = 0;
+ gUnknown_020387D9 = 1;
+ gUnknown_020387B4[CRY_TEST_UNK0] = 0;
+ gUnknown_020387B4[CRY_TEST_VOLUME] = 0x78;
+ gUnknown_020387B4[CRY_TEST_PANPOT] = 0;
+ gUnknown_020387B4[CRY_TEST_PITCH] = 0x3C00;
+ gUnknown_020387B4[CRY_TEST_LENGTH] = 0xB4;
+ gUnknown_020387B4[CRY_TEST_PROGRESS] = 0;
+ gUnknown_020387B4[CRY_TEST_RELEASE] = 0;
+ gUnknown_020387B4[CRY_TEST_CHORUS] = 0;
+ gUnknown_020387B4[CRY_TEST_PRIORITY] = 2;
+ sub_80BAD5C();
+ sub_80BAE10(0, 0);
+ TASK.FUNC = sub_80BAA48;
+}
+
+void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput
+{
+ if(gMain.newKeys & B_BUTTON)
+ {
+ REG_DISPCNT = 0x7140;
+ REG_WIN0H = WIN_RANGE(17, 223);
+ REG_WIN0V = WIN_RANGE(1, 31);
+ MenuZeroFillWindowRect(0, 0, 0x1D, 0x13);
+ TASK.FUNC = sub_80BA258;
+ return;
+ }
+ if(gMain.newAndRepeatedKeys & DPAD_UP) // _080BAAA8
+ {
+ u8 backupVar = gUnknown_020387B3;
+ if(--gUnknown_020387B3 < 0)
+ gUnknown_020387B3 = 8;
+
+ sub_80BAE10(backupVar, gUnknown_020387B3);
+ return;
+ }
+ if(gMain.newAndRepeatedKeys & DPAD_DOWN) // _080BAAD0
+ {
+ u8 backupVar = gUnknown_020387B3;
+ if(++gUnknown_020387B3 > 8)
+ gUnknown_020387B3 = 0;
+
+ sub_80BAE10(backupVar, gUnknown_020387B3);
+ return;
+ }
+ if(gMain.newKeys & START_BUTTON) // _080BAAF8
+ {
+ gUnknown_020387D8 ^= 1;
+ sub_80BAD5C();
+ return;
+ }
+ if(gMain.newKeys & SELECT_BUTTON) // _080BAB14
+ {
+ gUnknown_020387D9 ^= 1;
+ sub_80BAD5C();
+ SetPokemonCryStereo(gUnknown_020387D9);
+ return;
+ }
+ if(gMain.newAndRepeatedKeys & R_BUTTON) // _080BAB38
+ {
+ sub_80BACDC(10);
+ sub_80BAD5C();
+ return;
+ }
+ if(gMain.newAndRepeatedKeys & L_BUTTON) // _080BAB46
+ {
+ sub_80BACDC(-10);
+ sub_80BAD5C();
+ return;
+ }
+ if(gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BAB56
+ {
+ sub_80BACDC(-1);
+ sub_80BAD5C();
+ return;
+ }
+ if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BAB64
+ {
+ sub_80BACDC(1);
+ sub_80BAD5C();
+ return;
+ }
+ if(gMain.newKeys & A_BUTTON) // _080BAB78
+ {
+ u8 divide, remaining;
+
+ SetPokemonCryVolume(gUnknown_020387B4[CRY_TEST_VOLUME]);
+ SetPokemonCryPanpot(gUnknown_020387B4[CRY_TEST_PANPOT]);
+ SetPokemonCryPitch(gUnknown_020387B4[CRY_TEST_PITCH]);
+ SetPokemonCryLength(gUnknown_020387B4[CRY_TEST_LENGTH]);
+ SetPokemonCryProgress(gUnknown_020387B4[CRY_TEST_PROGRESS]);
+ SetPokemonCryRelease(gUnknown_020387B4[CRY_TEST_RELEASE]);
+ SetPokemonCryChorus(gUnknown_020387B4[CRY_TEST_CHORUS]);
+ SetPokemonCryPriority(gUnknown_020387B4[CRY_TEST_PRIORITY]);
+
+ remaining = gUnknown_020387B4[CRY_TEST_UNK0] % 128;
+ divide = gUnknown_020387B4[CRY_TEST_UNK0] / 128;
+
+ switch(divide)
+ {
+ case 0:
+ if(gUnknown_020387D8)
+ gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84537C0[remaining]);
+ else
+ gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452590[remaining]);
+ break;
+ case 1:
+ if(gUnknown_020387D8)
+ gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453DC0[remaining]);
+ else
+ gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452B90[remaining]);
+ break;
+ case 2:
+ if(gUnknown_020387D8)
+ gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84543C0[remaining]);
+ else
+ gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453190[remaining]);
+ break;
+ case 3:
+ if(gUnknown_020387D8)
+ gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84549C0[remaining]);
+ else
+ gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453790[remaining]);
+ break;
+ }
+ }
+
+ // _080BACA2
+ if(gUnknown_03005D30 != NULL)
+ {
+ gUnknown_020387B1 = IsPokemonCryPlaying(gUnknown_03005D30);
+
+ if(gUnknown_020387B1 != gUnknown_020387B2)
+ sub_80BAD5C();
+
+ gUnknown_020387B2 = gUnknown_020387B1;
+ }
+}
+
+void sub_80BACDC(s8 var)
+{
+ int minMaxArray[ARRAY_COUNT(gUnknown_083D039C)];
+
+ memcpy(minMaxArray, gUnknown_083D039C, sizeof(gUnknown_083D039C));
+ gUnknown_020387B4[gUnknown_020387B3] += var;
+
+ if(gUnknown_020387B4[gUnknown_020387B3] > minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MAX)])
+ gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MIN)];
+
+ if(gUnknown_020387B4[gUnknown_020387B3] < minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MIN)])
+ gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MAX)];
+}
+
+void sub_80BAD5C(void)
+{
+ sub_80BAE78(gUnknown_020387B4[CRY_TEST_UNK0] + 1, 0xB, 0x1, 0x5);
+ sub_80BAE78(gUnknown_020387B4[CRY_TEST_VOLUME], 0xB, 0x3, 0x5);
+ sub_80BAE78(gUnknown_020387B4[CRY_TEST_PANPOT], 0xB, 0x5, 0x5);
+ sub_80BAE78(gUnknown_020387B4[CRY_TEST_PITCH], 0xB, 0x7, 0x5);
+ sub_80BAE78(gUnknown_020387B4[CRY_TEST_LENGTH], 0xB, 0x9, 0x5);
+ sub_80BAE78(gUnknown_020387B4[CRY_TEST_RELEASE], 0xB, 0xB, 0x5);
+ sub_80BAE78(gUnknown_020387B4[CRY_TEST_PROGRESS], 0xB, 0xD, 0x5);
+ sub_80BAE78(gUnknown_020387B4[CRY_TEST_CHORUS], 0xB, 0xF, 0x5);
+ sub_80BAE78(gUnknown_020387B4[CRY_TEST_PRIORITY], 0xB, 0x11, 0x5);
+ sub_80BAE78(gUnknown_020387B1, 0x1B, 0x10, 0x1);
+ sub_80BAE78(gUnknown_020387D8, 0x1B, 0xE, 0x1);
+ sub_80BAE78(gUnknown_020387D9, 0x1B, 0xC, 0x1);
+}
+
+void sub_80BAE10(u8 var1, u8 var2)
+{
+ u8 str1[sizeof(gUnknown_083D03DC)];
+ u8 str2[sizeof(gUnknown_083D03DE)];
+
+ memcpy(str1, gUnknown_083D03DC, sizeof(gUnknown_083D03DC));
+ memcpy(str2, gUnknown_083D03DE, sizeof(gUnknown_083D03DE));
+
+ MenuPrint(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]);
+ MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]);
+}
+
+/*void sub_80BAE78(int var1, u16 var2, u16 var3, u8 var4)
+{
+ u32 powers[6];
+ u8 str[8];
+ u8 i;
+ u8 someVar, someVar2;
+
+ memcpy(powers, gUnknown_083D03E0, sizeof(powers);
+
+ for(i = 0; i < var4; i++)
+ str[i] = 0;
+
+ str[var4 + 1] = CHAR_0;
+ someVar = 0;
+
+ if(var1 < 0) // make absolute value? wtf
+ {
+ var1 = -var1; // just use abs?
+ someVar = 1;
+ }
+
+ // _080BAED6
+ someVar2 = 0;
+ if(var4 == 1)
+ someVar2 = 1;
+
+ // _080BAEE2
+ for(;;)
+ {
+
+ }
+}*/
+
+// no.
+__attribute__((naked))
+void sub_80BAE78(int var1, u16 var2, u16 var3, u8 var4)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x2C\n\
+ mov r8, r0\n\
+ lsls r1, 16\n\
+ lsrs r6, r1, 16\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ lsls r3, 24\n\
+ lsrs r7, r3, 24\n\
+ mov r1, sp\n\
+ ldr r0, _080BAF80 @ =gUnknown_083D03E0\n\
+ ldm r0!, {r3-r5}\n\
+ stm r1!, {r3-r5}\n\
+ ldm r0!, {r3-r5}\n\
+ stm r1!, {r3-r5}\n\
+ movs r5, 0\n\
+ add r0, sp, 0x18\n\
+ mov r9, r0\n\
+ cmp r5, r7\n\
+ bgt _080BAEC0\n\
+ mov r4, r9\n\
+ movs r3, 0\n\
+_080BAEAC:\n\
+ lsls r0, r5, 24\n\
+ asrs r0, 24\n\
+ adds r1, r4, r0\n\
+ strb r3, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, r7\n\
+ ble _080BAEAC\n\
+_080BAEC0:\n\
+ adds r0, r7, 0x1\n\
+ add r0, r9\n\
+ movs r1, 0xFF\n\
+ strb r1, [r0]\n\
+ movs r1, 0\n\
+ mov r3, r8\n\
+ cmp r3, 0\n\
+ bge _080BAED6\n\
+ negs r3, r3\n\
+ mov r8, r3\n\
+ movs r1, 0x1\n\
+_080BAED6:\n\
+ movs r4, 0\n\
+ mov r10, r4\n\
+ cmp r7, 0x1\n\
+ bne _080BAEE2\n\
+ movs r5, 0x1\n\
+ mov r10, r5\n\
+_080BAEE2:\n\
+ subs r0, r7, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r0, r5, 24\n\
+ lsls r6, 24\n\
+ str r6, [sp, 0x24]\n\
+ lsls r2, 24\n\
+ str r2, [sp, 0x28]\n\
+ cmp r0, 0\n\
+ blt _080BAF62\n\
+ str r1, [sp, 0x20]\n\
+_080BAEF8:\n\
+ asrs r6, r0, 24\n\
+ lsls r0, r6, 2\n\
+ add r0, sp\n\
+ ldr r1, [r0]\n\
+ mov r0, r8\n\
+ bl __divsi3\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ cmp r0, 0\n\
+ bne _080BAF1A\n\
+ mov r0, r10\n\
+ cmp r0, 0\n\
+ bne _080BAF1A\n\
+ lsls r4, r5, 24\n\
+ cmp r6, 0\n\
+ bne _080BAF46\n\
+_080BAF1A:\n\
+ lsls r4, r5, 24\n\
+ ldr r3, [sp, 0x20]\n\
+ cmp r3, 0\n\
+ beq _080BAF34\n\
+ mov r5, r10\n\
+ cmp r5, 0\n\
+ bne _080BAF34\n\
+ asrs r0, r4, 24\n\
+ subs r0, r7, r0\n\
+ subs r0, 0x1\n\
+ add r0, r9\n\
+ movs r1, 0xAE\n\
+ strb r1, [r0]\n\
+_080BAF34:\n\
+ asrs r1, r4, 24\n\
+ subs r1, r7, r1\n\
+ add r1, r9\n\
+ lsls r0, r2, 24\n\
+ asrs r0, 24\n\
+ subs r0, 0x5F\n\
+ strb r0, [r1]\n\
+ movs r0, 0x1\n\
+ mov r10, r0\n\
+_080BAF46:\n\
+ asrs r4, 24\n\
+ lsls r0, r4, 2\n\
+ add r0, sp\n\
+ ldr r1, [r0]\n\
+ mov r0, r8\n\
+ bl __modsi3\n\
+ mov r8, r0\n\
+ subs r4, 0x1\n\
+ lsls r4, 24\n\
+ lsrs r5, r4, 24\n\
+ lsls r0, r5, 24\n\
+ cmp r0, 0\n\
+ bge _080BAEF8\n\
+_080BAF62:\n\
+ ldr r3, [sp, 0x24]\n\
+ lsrs r1, r3, 24\n\
+ ldr r4, [sp, 0x28]\n\
+ lsrs r2, r4, 24\n\
+ mov r0, r9\n\
+ bl MenuPrint\n\
+ add sp, 0x2C\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080BAF80: .4byte gUnknown_083D03E0\n\
+ .syntax divided");
+}
+
+void sub_80BAF84(u8 taskId)
+{
+ u8 seStr[sizeof(gOtherText_SE)];
+ u8 panStr[sizeof(gOtherText_Pan)];
+ u8 playingStr[sizeof(gDebugText_Playing)];
+
+ memcpy(seStr, gOtherText_SE, sizeof(gOtherText_SE));
+ memcpy(panStr, gOtherText_Pan, sizeof(gOtherText_Pan));
+ memcpy(playingStr, gDebugText_Playing, sizeof(gDebugText_Playing));
+
+ REG_DISPCNT = 0x3140;
+ MenuDrawTextWindow(0, 0, 0x1D, 0x13);
+ MenuPrint(seStr, 3, 2);
+ MenuPrint(panStr, 3, 4);
+ MenuPrint(playingStr, 3, 8);
+ REG_WIN0H = WIN_RANGE(0, 240);
+ REG_WIN0V = WIN_RANGE(0, 160);
+ gUnknown_020387B4[CRY_TEST_UNK0] = 1;
+ gUnknown_020387B4[CRY_TEST_PANPOT] = 0;
+ gUnknown_020387B4[CRY_TEST_CHORUS] = 0;
+ gUnknown_020387B4[CRY_TEST_PROGRESS] = 0;
+ gUnknown_020387B4[CRY_TEST_RELEASE] = 0;
+ sub_80BB1D4();
+ TASK.FUNC = sub_80BB038;
+}
+
+void sub_80BB038(u8 taskId)
+{
+ sub_80BB1D4();
+ if(gUnknown_020387B4[CRY_TEST_PROGRESS])
+ {
+ if(gUnknown_020387B4[CRY_TEST_RELEASE])
+ {
+ gUnknown_020387B4[CRY_TEST_RELEASE]--;
+ }
+ else // _080BB05C
+ {
+ s8 panpot = gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]];
+ if(panpot != -128)
+ {
+ if(panpot == 0x7F)
+ {
+ gUnknown_020387B4[CRY_TEST_CHORUS] += 2;
+ if(gUnknown_020387B4[CRY_TEST_CHORUS] < 0x3F)
+ SE12PanpotControl(gUnknown_020387B4[CRY_TEST_CHORUS]);
+ }
+ }
+ else // _080BB08C
+ {
+ gUnknown_020387B4[CRY_TEST_CHORUS] -= 2;
+ if(gUnknown_020387B4[CRY_TEST_CHORUS] > -0x40)
+ SE12PanpotControl(gUnknown_020387B4[CRY_TEST_CHORUS]);
+ }
+ }
+ }
+ // _080BB0A2
+ if(gMain.newKeys & B_BUTTON)
+ {
+ REG_DISPCNT = 0x7140;
+ REG_WIN0H = WIN_RANGE(17, 223);
+ REG_WIN0V = WIN_RANGE(1, 31);
+ MenuZeroFillWindowRect(0, 0, 0x1D, 0x13);
+ TASK.FUNC = sub_80BA258;
+ return;
+ }
+ if(gMain.newKeys & A_BUTTON) // _080BB104
+ {
+ s8 panpot = gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]];
+ if(panpot != -128)
+ {
+ if(panpot == 0x7F)
+ {
+ PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], -0x40);
+ gUnknown_020387B4[CRY_TEST_CHORUS] = -0x40;
+ gUnknown_020387B4[CRY_TEST_PROGRESS] = 1;
+ gUnknown_020387B4[CRY_TEST_RELEASE] = 0x1E;
+ return;
+ }
+ }
+ else // _080BB140
+ {
+ PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], 0x3F);
+ gUnknown_020387B4[CRY_TEST_CHORUS] = 0x3F;
+ gUnknown_020387B4[CRY_TEST_PROGRESS] = 1;
+ gUnknown_020387B4[CRY_TEST_RELEASE] = 0x1E;
+ return;
+ }
+ // _080BB154
+ PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], panpot);
+ gUnknown_020387B4[CRY_TEST_PROGRESS] = 0;
+ return;
+ }
+ if(gMain.newKeys & L_BUTTON) // _080BB15E
+ {
+ gUnknown_020387B4[CRY_TEST_PANPOT]++;
+ if(gUnknown_020387B4[CRY_TEST_PANPOT] > 4)
+ gUnknown_020387B4[CRY_TEST_PANPOT] = 0;
+ }
+ if(gMain.newKeys & R_BUTTON) // _080BB176
+ {
+ gUnknown_020387B4[CRY_TEST_PANPOT]--;
+ if(gUnknown_020387B4[CRY_TEST_PANPOT] < 0)
+ gUnknown_020387B4[CRY_TEST_PANPOT] = 4;
+ }
+ if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BB192
+ {
+ gUnknown_020387B4[CRY_TEST_UNK0]++;
+ if(gUnknown_020387B4[CRY_TEST_UNK0] > 0xF7)
+ gUnknown_020387B4[CRY_TEST_UNK0] = 0;
+ }
+ else if(gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BB1B0
+ {
+ gUnknown_020387B4[CRY_TEST_UNK0]--;
+ if(gUnknown_020387B4[CRY_TEST_UNK0] < 0)
+ gUnknown_020387B4[CRY_TEST_UNK0] = 0xF7;
+ }
+}
+
+void sub_80BB1D4(void)
+{
+ u8 lrStr[sizeof(gOtherText_LR)];
+ u8 rlStr[sizeof(gOtherText_RL)];
+
+ memcpy(lrStr, gOtherText_LR, sizeof(lrStr));
+ memcpy(rlStr, gOtherText_RL, sizeof(rlStr));
+
+ sub_80BAE78(gUnknown_020387B4[CRY_TEST_UNK0], 7, 2, 3);
+
+ switch(gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]])
+ {
+ case 0x7F:
+ MenuPrint(lrStr, 7, 4);
+ break;
+ case -0x80:
+ MenuPrint(rlStr, 7, 4);
+ break;
+ default:
+ sub_80BAE78(gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]], 7, 4, 3);
+ break;
+ }
+ sub_80BAE78(IsSEPlaying(), 12, 8, 1);
+}
+
+void sub_80BB25C(u8 taskId)
+{
+ struct CryRelatedStruct cryStruct, cryStruct2;
+ u8 zero;
+
+ SetUpWindowConfig(&gWindowConfig_81E6C3C);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ gUnknown_03005D34 = 1;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+
+ cryStruct.unk0 = 0x2000;
+ cryStruct.unk2 = 29;
+ cryStruct.paletteNo = 12;
+ cryStruct.yPos = 30;
+ cryStruct.xPos = 4;
+
+ zero = 0; // wtf?
+ gUnknown_03005E98 = 0;
+
+ while(sub_8119E3C(&cryStruct, 3) == FALSE);
+
+ cryStruct2.unk0 = 0;
+ cryStruct2.unk2 = 15;
+ cryStruct2.paletteNo = 13;
+ cryStruct2.xPos = 12;
+ cryStruct2.yPos = 12;
+
+ zero = 0; // wtf?
+ gUnknown_03005E98 = 0;
+
+ while(ShowPokedexCryScreen(&cryStruct2, 2) == FALSE);
+
+ MenuDrawTextWindow(0, 16, 5, 19);
+ sub_80BB494();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG2CNT = 0xF01;
+ REG_BG3CNT = 0x1D03;
+ REG_DISPCNT = 0x1d40;
+ m4aMPlayFadeOutTemporarily(&gMPlay_BGM, 2);
+ TASK.FUNC = sub_80BB3B4;
+}
+
+void sub_80BB3B4(u8 taskId)
+{
+ sub_8119F88(3);
+
+ if(gMain.newKeys & A_BUTTON)
+ {
+ sub_811A050(gUnknown_03005D34);
+ }
+ if(gMain.newKeys & R_BUTTON)
+ {
+ StopCryAndClearCrySongs();
+ }
+ if(gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ if(--gUnknown_03005D34 == 0)
+ gUnknown_03005D34 = 384; // total species
+ sub_80BB494();
+ }
+ if(gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ if(++gUnknown_03005D34 > 384)
+ gUnknown_03005D34 = 1;
+ sub_80BB494();
+ }
+ if(gMain.newKeys & B_BUTTON)
+ {
+ REG_DISPCNT = 0x7140;
+ REG_WIN0H = WIN_RANGE(17, 223);
+ REG_WIN0V = WIN_RANGE(1, 31);
+ MenuZeroFillWindowRect(0, 0, 0x1D, 0x13);
+ TASK.FUNC = sub_80BA258;
+ DestroyCryMeterNeedleSprite();
+ }
+}
+
+void sub_80BB494(void)
+{
+ sub_80BAE78(gUnknown_03005D34, 1, 17, 3);
+}