summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2020-08-16 14:57:09 -0500
committerMarcus Huderle <huderlem@gmail.com>2020-08-16 14:57:09 -0500
commit2e782891124bbd71e1d2b4a59eb116aeac2cb6ca (patch)
tree5648fc0bef09c0e4443bae0a1316a1facb00c7ed
parent79cb86022ecd20cb3696588c634ecfd29b0dd08b (diff)
Start decompiling chooseFile.c
-rwxr-xr-xasm/chooseFile.s3614
-rw-r--r--asm/code_08050038.s4067
-rw-r--r--include/functions.h9
-rw-r--r--include/main.h19
-rw-r--r--include/structures.h37
-rw-r--r--linker.ld5
-rwxr-xr-xsrc/chooseFile.c236
-rw-r--r--src/code_0805436C.c4
-rw-r--r--src/code_0807CC3C.c6
-rw-r--r--src/entity.c2
-rw-r--r--src/ezloNag.c8
-rw-r--r--src/intro.c5
-rw-r--r--src/mainLoop.c2
-rw-r--r--src/npc/smith.c4
-rw-r--r--src/npc/teachers.c4
-rwxr-xr-xsrc/object/object48.c2
16 files changed, 3913 insertions, 4111 deletions
diff --git a/asm/chooseFile.s b/asm/chooseFile.s
new file mode 100755
index 00000000..3acaceed
--- /dev/null
+++ b/asm/chooseFile.s
@@ -0,0 +1,3614 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_0805070C
+sub_0805070C: @ 0x0805070C
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ bl sub_0805F2C8
+ adds r5, r0, #0
+ cmp r5, #0
+ beq _0805077A
+ movs r0, #0
+ strb r0, [r5, #2]
+ movs r0, #5
+ strb r0, [r5, #3]
+ movs r0, #1
+ strb r0, [r5, #1]
+ movs r0, #0x30
+ strh r0, [r5, #4]
+ ldr r0, _08050780 @ =gUnk_02000D00
+ str r0, [r5, #8]
+ movs r6, #0
+_08050732:
+ movs r0, #0
+ strh r0, [r5, #6]
+ ldr r0, [r5, #8]
+ movs r1, #0x80
+ lsls r1, r1, #2
+ bl _DmaZero
+ ldr r0, _08050784 @ =0x000004B4
+ adds r1, r6, #0
+ muls r1, r0, r1
+ ldr r0, _08050788 @ =gUnk_02019F6C
+ adds r7, r1, r0
+ movs r4, #0
+ lsls r0, r6, #9
+ mov r8, r0
+ adds r6, #1
+_08050752:
+ adds r0, r7, r4
+ ldrb r0, [r0]
+ adds r1, r5, #0
+ bl sub_0805F7DC
+ adds r4, #1
+ cmp r4, #5
+ ble _08050752
+ ldr r0, [r5, #8]
+ ldr r1, _0805078C @ =0x06014000
+ add r1, r8
+ movs r2, #0x80
+ lsls r2, r2, #2
+ bl sub_0801D66C
+ cmp r6, #2
+ bls _08050732
+ adds r0, r5, #0
+ bl sub_0805F300
+_0805077A:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_08050780: .4byte gUnk_02000D00
+_08050784: .4byte 0x000004B4
+_08050788: .4byte gUnk_02019F6C
+_0805078C: .4byte 0x06014000
+
+ thumb_func_start sub_08050790
+sub_08050790: @ 0x08050790
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ bl sub_0805F2C8
+ adds r6, r0, #0
+ cmp r6, #0
+ beq _080507F0
+ movs r0, #0
+ strb r0, [r6, #2]
+ movs r0, #5
+ strb r0, [r6, #3]
+ movs r0, #1
+ strb r0, [r6, #1]
+ movs r0, #0x80
+ strh r0, [r6, #4]
+ ldr r0, _080507F8 @ =gUnk_02000D00
+ str r0, [r6, #8]
+ movs r1, #0
+_080507B6:
+ movs r0, #0
+ strh r0, [r6, #6]
+ lsls r4, r1, #4
+ movs r5, #0
+ lsls r7, r1, #0xa
+ adds r1, #1
+ mov r8, r1
+_080507C4:
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_0805F7DC
+ adds r4, #1
+ adds r5, #1
+ cmp r5, #0xf
+ bls _080507C4
+ movs r0, #0xc0
+ lsls r0, r0, #0x13
+ adds r1, r7, r0
+ ldr r0, _080507F8 @ =gUnk_02000D00
+ movs r2, #0x80
+ lsls r2, r2, #3
+ bl sub_0801D66C
+ mov r1, r8
+ cmp r1, #0xf
+ bls _080507B6
+ adds r0, r6, #0
+ bl sub_0805F300
+_080507F0:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_080507F8: .4byte gUnk_02000D00
+
+ thumb_func_start sub_080507FC
+sub_080507FC: @ 0x080507FC
+ ldr r0, _0805080C @ =gUnk_0200AF00
+ movs r1, #0xa0
+ lsls r1, r1, #1
+ strh r1, [r0, #0x1a]
+ movs r1, #0x24
+ strh r1, [r0, #0x20]
+ bx lr
+ .align 2, 0
+_0805080C: .4byte gUnk_0200AF00
+
+ thumb_func_start sub_08050810
+sub_08050810: @ 0x08050810
+ ldr r0, _0805081C @ =gUnk_0200AF00
+ movs r1, #0xd0
+ strh r1, [r0, #0x1a]
+ movs r1, #0x24
+ strh r1, [r0, #0x20]
+ bx lr
+ .align 2, 0
+_0805081C: .4byte gUnk_0200AF00
+
+ thumb_func_start sub_08050820
+sub_08050820: @ 0x08050820
+ push {lr}
+ ldr r1, _0805083C @ =gUnk_080FC8FC
+ ldr r0, _08050840 @ =gMenu
+ ldrb r0, [r0, #5]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldr r0, _08050844 @ =gUnk_02019EE0
+ ldrb r0, [r0, #6]
+ bl sub_08050A64
+ pop {pc}
+ .align 2, 0
+_0805083C: .4byte gUnk_080FC8FC
+_08050840: .4byte gMenu
+_08050844: .4byte gUnk_02019EE0
+
+ thumb_func_start sub_08050848
+sub_08050848: @ 0x08050848
+ push {lr}
+ movs r0, #7
+ bl sub_080503A8
+ bl sub_0805070C
+ ldr r0, _08050868 @ =gUnk_02019EE0
+ movs r1, #0
+ strb r1, [r0, #7]
+ ldrb r0, [r0, #6]
+ bl sub_08050AFC
+ movs r0, #1
+ bl sub_080A7114
+ pop {pc}
+ .align 2, 0
+_08050868: .4byte gUnk_02019EE0
+
+ thumb_func_start sub_0805086C
+sub_0805086C: @ 0x0805086C
+ push {lr}
+ ldr r1, _08050880 @ =gUnk_080FC908
+ ldr r0, _08050884 @ =gMenu
+ ldrb r0, [r0, #6]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {pc}
+ .align 2, 0
+_08050880: .4byte gUnk_080FC908
+_08050884: .4byte gMenu
+
+ thumb_func_start sub_08050888
+sub_08050888: @ 0x08050888
+ push {r4, lr}
+ ldr r0, _080508C4 @ =gFadeControl
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _080508DC
+ ldr r4, _080508C8 @ =gUnk_02019EE0
+ ldrb r1, [r4, #7]
+ adds r0, r4, #0
+ adds r0, #8
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ lsls r0, r0, #0x18
+ asrs r0, r0, #0x18
+ cmp r0, #0
+ beq _080508D0
+ cmp r0, #1
+ beq _080508D6
+ adds r0, r1, #0
+ bl sub_0805194C
+ ldrb r1, [r4, #7]
+ adds r1, #1
+ movs r0, #0
+ bl sub_08050318
+ ldr r1, _080508CC @ =gMenu
+ movs r0, #0x1e
+ strh r0, [r1, #8]
+ movs r0, #1
+ b _080508DA
+ .align 2, 0
+_080508C4: .4byte gFadeControl
+_080508C8: .4byte gUnk_02019EE0
+_080508CC: .4byte gMenu
+_080508D0:
+ adds r0, r1, #0
+ bl sub_0805194C
+_080508D6:
+ ldr r1, _080508E0 @ =gMenu
+ movs r0, #2
+_080508DA:
+ strb r0, [r1, #6]
+_080508DC:
+ pop {r4, pc}
+ .align 2, 0
+_080508E0: .4byte gMenu
+
+ thumb_func_start sub_080508E4
+sub_080508E4: @ 0x080508E4
+ push {lr}
+ ldr r2, _08050900 @ =gMenu
+ ldrh r0, [r2, #8]
+ cmp r0, #0
+ bne _08050908
+ ldr r0, _08050904 @ =gUnk_03000FF0
+ ldrh r1, [r0, #2]
+ movs r0, #9
+ ands r0, r1
+ cmp r0, #0
+ beq _0805090C
+ movs r0, #2
+ strb r0, [r2, #6]
+ b _0805090C
+ .align 2, 0
+_08050900: .4byte gMenu
+_08050904: .4byte gUnk_03000FF0
+_08050908:
+ subs r0, #1
+ strh r0, [r2, #8]
+_0805090C:
+ pop {pc}
+ .align 2, 0
+
+ thumb_func_start sub_08050910
+sub_08050910: @ 0x08050910
+ push {lr}
+ bl sub_08050384
+ ldr r1, _08050930 @ =gUnk_02019EE0
+ ldrb r0, [r1, #7]
+ adds r0, #1
+ strb r0, [r1, #7]
+ lsls r0, r0, #0x18
+ lsrs r0, r0, #0x18
+ cmp r0, #2
+ bls _08050934
+ movs r0, #2
+ bl sub_080A7114
+ b _0805093A
+ .align 2, 0
+_08050930: .4byte gUnk_02019EE0
+_08050934:
+ ldr r1, _0805093C @ =gMenu
+ movs r0, #0
+ strb r0, [r1, #6]
+_0805093A:
+ pop {pc}
+ .align 2, 0
+_0805093C: .4byte gMenu
+
+ thumb_func_start sub_08050940
+sub_08050940: @ 0x08050940
+ push {r4, r5, r6, lr}
+ ldr r3, _0805099C @ =gUnk_02019EE0
+ ldrb r0, [r3]
+ cmp r0, #0
+ beq _0805094C
+ b _08050A58
+_0805094C:
+ ldrb r4, [r3, #6]
+ ldr r0, _080509A0 @ =gUnk_03000FF0
+ ldrh r2, [r0, #2]
+ ldrh r1, [r0]
+ movs r0, #0x80
+ lsls r0, r0, #2
+ ands r0, r1
+ cmp r0, #0
+ beq _08050974
+ adds r0, r3, #0
+ adds r0, #8
+ adds r0, r4, r0
+ ldrb r0, [r0]
+ lsls r0, r0, #0x18
+ asrs r0, r0, #0x18
+ cmp r0, #1
+ bne _08050974
+ movs r0, #0xc1
+ rsbs r0, r0, #0
+ ands r2, r0
+_08050974:
+ movs r0, #0x80
+ lsls r0, r0, #0x12
+ ldrb r0, [r0, #7]
+ movs r6, #3
+ cmp r0, #1
+ bls _08050982
+ movs r6, #4
+_08050982:
+ ldr r0, _080509A4 @ =gUnk_02032EC0
+ ldrb r5, [r0, #2]
+ adds r1, r0, #0
+ cmp r2, #0x40
+ beq _080509B6
+ cmp r2, #0x40
+ bhi _080509A8
+ cmp r2, #1
+ beq _080509E0
+ cmp r2, #8
+ beq _080509E0
+ b _08050A10
+ .align 2, 0
+_0805099C: .4byte gUnk_02019EE0
+_080509A0: .4byte gUnk_03000FF0
+_080509A4: .4byte gUnk_02032EC0
+_080509A8:
+ cmp r2, #0x80
+ beq _080509BE
+ movs r0, #0x80
+ lsls r0, r0, #1
+ cmp r2, r0
+ beq _080509C8
+ b _08050A10
+_080509B6:
+ cmp r4, #0
+ ble _08050A10
+ subs r4, #1
+ b _08050A10
+_080509BE:
+ subs r0, r6, #1
+ cmp r0, r4
+ ble _08050A10
+ adds r4, #1
+ b _08050A10
+_080509C8:
+ ldr r0, _080509DC @ =gUnk_02019EE0
+ adds r0, #8
+ adds r0, r4, r0
+ ldrb r0, [r0]
+ lsls r0, r0, #0x18
+ asrs r0, r0, #0x18
+ cmp r0, #1
+ bne _08050A10
+ movs r5, #3
+ b _08050A10
+ .align 2, 0
+_080509DC: .4byte gUnk_02019EE0
+_080509E0:
+ adds r0, r4, #0
+ bl sub_0805041C
+ cmp r4, #3
+ bne _080509EE
+ movs r5, #2
+ b _08050A0E
+_080509EE:
+ ldr r0, _08050A04 @ =gUnk_02019EE0
+ adds r0, #8
+ adds r0, r4, r0
+ ldrb r0, [r0]
+ lsls r0, r0, #0x18
+ asrs r0, r0, #0x18
+ cmp r0, #0
+ beq _08050A08
+ cmp r0, #1
+ beq _08050A0C
+ b _08050A0E
+ .align 2, 0
+_08050A04: .4byte gUnk_02019EE0
+_08050A08:
+ movs r5, #1
+ b _08050A0E
+_08050A0C:
+ movs r5, #4
+_08050A0E:
+ ldr r1, _08050A5C @ =gUnk_02032EC0
+_08050A10:
+ ldrb r0, [r1, #2]
+ cmp r0, r5
+ beq _08050A22
+ adds r0, r5, #0
+ bl sub_080503BC
+ movs r0, #0x6a
+ bl PlaySFX
+_08050A22:
+ adds r0, r4, r6
+ adds r1, r6, #0
+ bl __modsi3
+ adds r4, r0, #0
+ ldr r5, _08050A60 @ =gUnk_02019EE0
+ ldrb r0, [r5, #6]
+ cmp r0, r4
+ beq _08050A42
+ strb r4, [r5, #6]
+ adds r0, r4, #0
+ bl sub_08050AFC
+ movs r0, #0x69
+ bl PlaySFX
+_08050A42:
+ adds r0, r5, #0
+ adds r0, #8
+ ldrb r5, [r5, #6]
+ adds r0, r0, r5
+ ldrb r0, [r0]
+ lsls r0, r0, #0x18
+ asrs r0, r0, #0x18
+ cmp r0, #1
+ bne _08050A58
+ bl sub_08050810
+_08050A58:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_08050A5C: .4byte gUnk_02032EC0
+_08050A60: .4byte gUnk_02019EE0
+
+ thumb_func_start sub_08050A64
+sub_08050A64: @ 0x08050A64
+ push {r4, lr}
+ ldr r1, _08050AF0 @ =gUnk_02019EE0
+ adds r1, #8
+ adds r0, r0, r1
+ ldrb r0, [r0]
+ lsls r0, r0, #0x18
+ asrs r0, r0, #0x18
+ cmp r0, #1
+ bne _08050AEC
+ ldr r4, _08050AF4 @ =gUnk_03001010
+ movs r0, #0
+ strh r0, [r4, #4]
+ strh r0, [r4, #6]
+ movs r0, #0x80
+ lsls r0, r0, #3
+ strh r0, [r4, #8]
+ movs r0, #0x40
+ bl GetInventoryValue
+ cmp r0, #0
+ beq _08050A9E
+ movs r0, #0xa2
+ strh r0, [r4]
+ movs r0, #0x36
+ strh r0, [r4, #2]
+ ldr r0, _08050AF8 @ =0x00000145
+ movs r1, #0x24
+ bl sub_080ADA14
+_08050A9E:
+ movs r0, #0x41
+ bl GetInventoryValue
+ cmp r0, #0
+ beq _08050AB8
+ movs r0, #0x96
+ strh r0, [r4]
+ movs r0, #0x3d
+ strh r0, [r4, #2]
+ ldr r0, _08050AF8 @ =0x00000145
+ movs r1, #0x22
+ bl sub_080ADA14
+_08050AB8:
+ movs r0, #0x42
+ bl GetInventoryValue
+ cmp r0, #0
+ beq _08050AD2
+ movs r0, #0xae
+ strh r0, [r4]
+ movs r0, #0x3d
+ strh r0, [r4, #2]
+ ldr r0, _08050AF8 @ =0x00000145
+ movs r1, #0x23
+ bl sub_080ADA14
+_08050AD2:
+ movs r0, #0x43
+ bl GetInventoryValue
+ cmp r0, #0
+ beq _08050AEC
+ movs r0, #0xa2
+ strh r0, [r4]
+ movs r0, #0x44
+ strh r0, [r4, #2]
+ ldr r0, _08050AF8 @ =0x00000145
+ movs r1, #0x21
+ bl sub_080ADA14
+_08050AEC:
+ pop {r4, pc}
+ .align 2, 0
+_08050AF0: .4byte gUnk_02019EE0
+_08050AF4: .4byte gUnk_03001010
+_08050AF8: .4byte 0x00000145
+
+ thumb_func_start sub_08050AFC
+sub_08050AFC: @ 0x08050AFC
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ bl sub_0805041C
+ ldr r5, _08050B30 @ =gUnk_02021F30
+ movs r1, #0x80
+ lsls r1, r1, #4
+ adds r0, r5, #0
+ bl _DmaZero
+ ldr r0, _08050B34 @ =gUnk_02019EE0
+ adds r0, #8
+ adds r4, r4, r0
+ movs r0, #0
+ ldrsb r0, [r4, r0]
+ cmp r0, #1
+ bne _08050B28
+ movs r1, #0xa7
+ lsls r1, r1, #2
+ adds r0, r5, r1
+ bl sub_08050B3C
+_08050B28:
+ ldr r1, _08050B38 @ =gScreen
+ movs r0, #1
+ strh r0, [r1, #0x1a]
+ pop {r4, r5, pc}
+ .align 2, 0
+_08050B30: .4byte gUnk_02021F30
+_08050B34: .4byte gUnk_02019EE0
+_08050B38: .4byte gScreen
+
+ thumb_func_start sub_08050B3C
+sub_08050B3C: @ 0x08050B3C
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, sb
+ mov r5, r8
+ push {r5, r6, r7}
+ sub sp, #8
+ str r0, [sp]
+ ldr r1, _08050C18 @ =gUnk_02002A40
+ adds r0, r1, #0
+ adds r0, #0xaa
+ ldrb r0, [r0]
+ lsrs r2, r0, #1
+ cmp r2, #0
+ bne _08050B5A
+ movs r2, #1
+_08050B5A:
+ adds r0, r1, #0
+ adds r0, #0xab
+ ldrb r0, [r0]
+ lsrs r3, r0, #1
+ cmp r3, #0
+ beq _08050C0A
+ cmp r2, r3
+ ble _08050B6C
+ adds r2, r3, #0
+_08050B6C:
+ movs r0, #3
+ ands r0, r2
+ str r0, [sp, #4]
+ adds r0, r2, #0
+ asrs r5, r0, #2
+ mov ip, r5
+ cmp r5, #0xa
+ ble _08050B80
+ movs r2, #0xa
+ mov ip, r2
+_08050B80:
+ adds r6, r5, #0
+ subs r6, #0xa
+ mov sb, r6
+ cmp r6, #0
+ bge _08050B8E
+ movs r7, #0
+ mov sb, r7
+_08050B8E:
+ adds r0, r3, #0
+ asrs r3, r0, #2
+ adds r0, r3, #0
+ cmp r3, #0xa
+ ble _08050B9A
+ movs r3, #0xa
+_08050B9A:
+ adds r4, r0, #0
+ subs r4, #0xa
+ ldr r2, [sp]
+ ldr r0, _08050C1C @ =0x0000F24C
+ mov sl, r0
+ strh r0, [r2]
+ ldr r1, _08050C20 @ =0x040000D4
+ movs r7, #0xa
+ mov r8, r7
+ mov r0, r8
+ mov r7, ip
+ subs r0, r0, r7
+ lsls r0, r0, #1
+ ldr r7, _08050C24 @ =gUnk_080FC914
+ mov ip, r7
+ add r0, ip
+ str r0, [r1]
+ adds r0, r2, #2
+ str r0, [r1, #4]
+ movs r0, #0x80
+ lsls r0, r0, #0x18
+ orrs r3, r0
+ str r3, [r1, #8]
+ ldr r0, [r1, #8]
+ cmp r4, #0
+ ble _08050BEE
+ adds r2, #0x40
+ mov r3, sl
+ strh r3, [r2]
+ mov r7, r8
+ mov r3, sb
+ subs r0, r7, r3
+ lsls r0, r0, #1
+ add r0, ip
+ str r0, [r1]
+ adds r0, r2, #2
+ str r0, [r1, #4]
+ movs r7, #0x80
+ lsls r7, r7, #0x18
+ orrs r4, r7
+ str r4, [r1, #8]
+ ldr r0, [r1, #8]
+_08050BEE:
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ beq _08050C0A
+ ldr r2, [sp]
+ cmp r5, #9
+ ble _08050BFE
+ adds r5, r6, #0
+ adds r2, #0x40
+_08050BFE:
+ lsls r0, r5, #1
+ adds r0, r0, r2
+ ldr r2, [sp, #4]
+ ldr r3, _08050C28 @ =0xFFFFF24D
+ adds r1, r2, r3
+ strh r1, [r0, #2]
+_08050C0A:
+ add sp, #8
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov sb, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_08050C18: .4byte gUnk_02002A40
+_08050C1C: .4byte 0x0000F24C
+_08050C20: .4byte 0x040000D4
+_08050C24: .4byte gUnk_080FC914
+_08050C28: .4byte 0xFFFFF24D
+
+ thumb_func_start sub_08050C2C
+sub_08050C2C: @ 0x08050C2C
+ push {lr}
+ ldr r1, _08050C48 @ =gUnk_080FC93C
+ ldr r0, _08050C4C @ =gMenu
+ ldrb r0, [r0, #5]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldr r0, _08050C50 @ =gUnk_02019EE0
+ ldrb r0, [r0, #6]
+ bl sub_08050A64
+ pop {pc}
+ .align 2, 0
+_08050C48: .4byte gUnk_080FC93C
+_08050C4C: .4byte gMenu
+_08050C50: .4byte gUnk_02019EE0
+
+ thumb_func_start sub_08050C54
+sub_08050C54: @ 0x08050C54
+ push {r4, lr}
+ ldr r0, _08050C78 @ =gUnk_02019EE0
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _08050C60
+ b _08050D60
+_08050C60:
+ ldr r0, _08050C7C @ =gMenu
+ ldrb r4, [r0, #1]
+ ldr r0, _08050C80 @ =gUnk_03000FF0
+ ldrh r0, [r0, #2]
+ subs r0, #1
+ cmp r0, #0x1f
+ bhi _08050D44
+ lsls r0, r0, #2
+ ldr r1, _08050C84 @ =_08050C88
+ adds r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08050C78: .4byte gUnk_02019EE0
+_08050C7C: .4byte gMenu
+_08050C80: .4byte gUnk_03000FF0
+_08050C84: .4byte _08050C88
+_08050C88: @ jump table
+ .4byte _08050D08 @ case 0
+ .4byte _08050D30 @ case 1
+ .4byte _08050D44 @ case 2
+ .4byte _08050D44 @ case 3
+ .4byte _08050D44 @ case 4
+ .4byte _08050D44 @ case 5
+ .4byte _08050D44 @ case 6
+ .4byte _08050D08 @ case 7
+ .4byte _08050D44 @ case 8
+ .4byte _08050D44 @ case 9
+ .4byte _08050D44 @ case 10
+ .4byte _08050D44 @ case 11
+ .4byte _08050D44 @ case 12
+ .4byte _08050D44 @ case 13
+ .4byte _08050D44 @ case 14
+ .4byte _08050D42 @ case 15
+ .4byte _08050D44 @ case 16
+ .4byte _08050D44 @ case 17
+ .4byte _08050D44 @ case 18
+ .4byte _08050D44 @ case 19
+ .4byte _08050D44 @ case 20
+ .4byte _08050D44 @ case 21
+ .4byte _08050D44 @ case 22
+ .4byte _08050D44 @ case 23
+ .4byte _08050D44 @ case 24
+ .4byte _08050D44 @ case 25
+ .4byte _08050D44 @ case 26
+ .4byte _08050D44 @ case 27
+ .4byte _08050D44 @ case 28
+ .4byte _08050D44 @ case 29
+ .4byte _08050D44 @ case 30
+ .4byte _08050D3E @ case 31
+_08050D08:
+ cmp r4, #0
+ bne _08050D12
+ ldr r0, _08050D28 @ =0x80080000
+ bl PlaySFX
+_08050D12:
+ ldr r1, _08050D2C @ =gMenu
+ movs r0, #0xf
+ strh r0, [r1, #8]
+ movs r0, #1
+ bl sub_080A7114
+ movs r0, #0x6a
+ bl PlaySFX
+ b _08050D44
+ .align 2, 0
+_08050D28: .4byte 0x80080000
+_08050D2C: .4byte gMenu
+_08050D30:
+ movs r0, #0x6c
+ bl PlaySFX
+ movs r0, #0
+ bl sub_080503BC
+ b _08050D44
+_08050D3E:
+ subs r4, #1
+ b _08050D44
+_08050D42:
+ adds r4, #1
+_08050D44:
+ cmp r4, #0
+ bge _08050D4A
+ movs r4, #0
+_08050D4A:
+ cmp r4, #2
+ ble _08050D50
+ movs r4, #2
+_08050D50:
+ ldr r1, _08050D64 @ =gMenu
+ ldrb r0, [r1, #1]
+ cmp r0, r4
+ beq _08050D60
+ strb r4, [r1, #1]
+ movs r0, #0x69
+ bl PlaySFX
+_08050D60:
+ pop {r4, pc}
+ .align 2, 0
+_08050D64: .4byte gMenu
+
+ thumb_func_start sub_08050D68
+sub_08050D68: @ 0x08050D68
+ push {lr}
+ ldr r1, _08050D84 @ =gMenu
+ ldrh r0, [r1, #8]
+ cmp r0, #0
+ bne _08050D94
+ ldrb r0, [r1, #1]
+ cmp r0, #1
+ beq _08050D88
+ cmp r0, #1
+ ble _08050D80
+ cmp r0, #2
+ beq _08050D8C
+_08050D80:
+ movs r0, #7
+ b _08050D8E
+ .align 2, 0
+_08050D84: .4byte gMenu
+_08050D88:
+ movs r0, #5
+ b _08050D8E
+_08050D8C:
+ movs r0, #6
+_08050D8E:
+ bl sub_080503BC
+ b _08050D98
+_08050D94:
+ subs r0, #1
+ strh r0, [r1, #8]
+_08050D98:
+ pop {pc}
+ .align 2, 0
+
+ thumb_func_start sub_08050D9C
+sub_08050D9C: @ 0x08050D9C
+ push {lr}
+ ldr r1, _08050DB0 @ =gUnk_080FC944
+ ldr r0, _08050DB4 @ =gMenu
+ ldrb r0, [r0, #5]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {pc}
+ .align 2, 0
+_08050DB0: .4byte gUnk_080FC944
+_08050DB4: .4byte gMenu
+
+ thumb_func_start sub_08050DB8
+sub_08050DB8: @ 0x08050DB8
+ push {lr}
+ ldr r0, _08050DDC @ =gUnk_020344B0
+ movs r1, #0x80
+ lsls r1, r1, #4
+ bl _DmaZero
+ movs r0, #0xc
+ bl sub_080503A8
+ ldr r1, _08050DE0 @ =gMenu
+ movs r0, #0x80
+ lsls r0, r0, #0x12
+ ldrb r0, [r0, #7]
+ strb r0, [r1, #4]
+ movs r0, #1
+ bl sub_080A7114
+ pop {pc}
+ .align 2, 0
+_08050DDC: .4byte gUnk_020344B0
+_08050DE0: .4byte gMenu
+
+ thumb_func_start sub_08050DE4
+sub_08050DE4: @ 0x08050DE4
+ push {r4, lr}
+ ldr r0, _08050E0C @ =gUnk_02019EE0
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _08050E80
+ movs r1, #0x80
+ lsls r1, r1, #0x12
+ ldrb r4, [r1, #7]
+ ldr r0, _08050E10 @ =gUnk_03000FF0
+ ldrh r0, [r0, #2]
+ cmp r0, #8
+ beq _08050E26
+ cmp r0, #8
+ bgt _08050E14
+ cmp r0, #1
+ beq _08050E26
+ cmp r0, #2
+ beq _08050E50
+ b _08050E62
+ .align 2, 0
+_08050E0C: .4byte gUnk_02019EE0
+_08050E10: .4byte gUnk_03000FF0
+_08050E14:
+ cmp r0, #0x40
+ beq _08050E1E
+ cmp r0, #0x80
+ beq _08050E22
+ b _08050E62
+_08050E1E:
+ subs r4, #1
+ b _08050E62
+_08050E22:
+ adds r4, #1
+ b _08050E62
+_08050E26:
+ movs r0, #0x6a
+ bl PlaySFX
+ ldr r0, _08050E44 @ =gMenu
+ ldrb r0, [r0, #4]
+ cmp r0, r4
+ beq _08050E48
+ movs r0, #2
+ bl sub_080A7114
+ movs r0, #8
+ movs r1, #0
+ bl sub_08050318
+ b _08050E62
+ .align 2, 0
+_08050E44: .4byte gMenu
+_08050E48:
+ movs r0, #0
+ bl sub_080503BC
+ b _08050E62
+_08050E50:
+ ldr r0, _08050E84 @ =gMenu
+ ldrb r4, [r0, #4]
+ strb r4, [r1, #7]
+ movs r0, #0x6c
+ bl PlaySFX
+ movs r0, #0
+ bl sub_080503BC
+_08050E62:
+ cmp r4, #1
+ bgt _08050E68
+ movs r4, #2
+_08050E68:
+ cmp r4, #6
+ ble _08050E6E
+ movs r4, #6
+_08050E6E:
+ movs r1, #0x80
+ lsls r1, r1, #0x12
+ ldrb r0, [r1, #7]
+ cmp r0, r4
+ beq _08050E80
+ strb r4, [r1, #7]
+ movs r0, #0x69
+ bl PlaySFX
+_08050E80:
+ pop {r4, pc}
+ .align 2, 0
+_08050E84: .4byte gMenu
+
+ thumb_func_start sub_08050E88
+sub_08050E88: @ 0x08050E88
+ push {lr}
+ movs r0, #2
+ bl sub_0807CDA4
+ cmp r0, #0
+ beq _08050E9A
+ movs r0, #0
+ bl sub_080503BC
+_08050E9A:
+ pop {pc}
+
+ thumb_func_start sub_08050E9C
+sub_08050E9C: @ 0x08050E9C
+ push {lr}
+ ldr r1, _08050EB0 @ =gUnk_080FC950
+ ldr r0, _08050EB4 @ =gMenu
+ ldrb r0, [r0, #5]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {pc}
+ .align 2, 0
+_08050EB0: .4byte gUnk_080FC950
+_08050EB4: .4byte gMenu
+
+ thumb_func_start sub_08050EB8
+sub_08050EB8: @ 0x08050EB8
+ push {lr}
+ movs r0, #0xe
+ bl sub_080503A8
+ ldr r2, _08050EE8 @ =gUnk_02019EE0
+ ldrb r1, [r2, #6]
+ ldr r0, _08050EEC @ =0x000004B4
+ muls r1, r0, r1
+ adds r0, r2, #0
+ adds r0, #0xc
+ adds r1, r1, r0
+ ldrb r0, [r1, #2]
+ movs r3, #0
+ strb r0, [r2, #4]
+ ldrb r0, [r1, #3]
+ strb r0, [r2, #5]
+ ldr r1, _08050EF0 @ =gMenu
+ strb r3, [r1, #1]
+ movs r0, #0xff
+ strh r0, [r1, #8]
+ movs r0, #1
+ bl sub_080A7114
+ pop {pc}
+ .align 2, 0
+_08050EE8: .4byte gUnk_02019EE0
+_08050EEC: .4byte 0x000004B4
+_08050EF0: .4byte gMenu
+
+ thumb_func_start sub_08050EF4
+sub_08050EF4: @ 0x08050EF4
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ ldr r0, _08050F40 @ =gUnk_02019EE0
+ ldrb r1, [r0]
+ adds r6, r0, #0
+ cmp r1, #0
+ bne _08050FF4
+ ldrb r1, [r6, #6]
+ ldr r0, _08050F44 @ =0x000004B4
+ muls r1, r0, r1
+ adds r0, r6, #0
+ adds r0, #0xc
+ adds r1, r1, r0
+ ldr r0, _08050F48 @ =gMenu
+ ldrb r3, [r0, #1]
+ adds r4, r1, #3
+ mov ip, r0
+ cmp r3, #0
+ bne _08050F1E
+ adds r4, r1, #2
+_08050F1E:
+ ldrb r2, [r4]
+ movs r5, #0
+ ldr r0, _08050F4C @ =gUnk_03000FF0
+ ldrh r0, [r0, #2]
+ mov r8, r2
+ cmp r0, #0x10
+ beq _08050F7A
+ cmp r0, #0x10
+ bgt _08050F56
+ cmp r0, #2
+ beq _08050F8C
+ cmp r0, #2
+ bgt _08050F50
+ cmp r0, #1
+ beq _08050F82
+ b _08050F8E
+ .align 2, 0
+_08050F40: .4byte gUnk_02019EE0
+_08050F44: .4byte 0x000004B4
+_08050F48: .4byte gMenu
+_08050F4C: .4byte gUnk_03000FF0
+_08050F50:
+ cmp r0, #8
+ beq _08050F82
+ b _08050F8E
+_08050F56:
+ cmp r0, #0x40
+ beq _08050F6A
+ cmp r0, #0x40
+ bgt _08050F64
+ cmp r0, #0x20
+ beq _08050F72
+ b _08050F8E
+_08050F64:
+ cmp r0, #0x80
+ beq _08050F6E
+ b _08050F8E
+_08050F6A:
+ movs r3, #0
+ b _08050F8E
+_08050F6E:
+ movs r3, #1
+ b _08050F8E
+_08050F72:
+ cmp r2, #0
+ beq _08050F8E
+ subs r2, #1
+ b _08050F8E
+_08050F7A:
+ cmp r2, #1
+ bhi _08050F8E
+ adds r2, #1
+ b _08050F8E
+_08050F82:
+ ldrh r0, [r6, #4]
+ movs r5, #2
+ ldrh r7, [r1, #2]
+ cmp r0, r7
+ bne _08050F8E
+_08050F8C:
+ movs r5, #3
+_08050F8E:
+ cmp r5, #0
+ beq _08050FD0
+ cmp r5, #2
+ beq _08050F9C
+ cmp r5, #3
+ beq _08050FAC
+ b _08050FBA
+_08050F9C:
+ movs r0, #8
+ movs r1, #0
+ bl sub_08050318
+ movs r0, #0x6a
+ bl PlaySFX
+ b _08050FBA
+_08050FAC:
+ ldrb r0, [r6, #4]
+ strb r0, [r1, #2]
+ ldrb r0, [r6, #5]
+ strb r0, [r1, #3]
+ movs r0, #0x6c
+ bl PlaySFX
+_08050FBA:
+ adds r0, r5, #0
+ bl sub_080A7114
+ ldr r0, _08050FCC @ =gUnk_02019EE0
+ ldrb r0, [r0, #6]
+ bl sub_0805041C
+ b _08050FF4
+ .align 2, 0
+_08050FCC: .4byte gUnk_02019EE0
+_08050FD0:
+ mov r1, ip
+ ldrb r0, [r1, #1]
+ cmp r0, r3
+ beq _08050FE2
+ strb r3, [r1, #1]
+ movs r0, #0x69
+ bl PlaySFX
+ b _08050FF4
+_08050FE2:
+ cmp r2, r8
+ beq _08050FF4
+ strb r2, [r4]
+ ldrb r0, [r6, #6]
+ bl sub_080503E4
+ movs r0, #0x69
+ bl PlaySFX
+_08050FF4:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start sub_08050FFC
+sub_08050FFC: @ 0x08050FFC
+ push {lr}
+ movs r0, #0
+ bl sub_0807CDA4
+ adds r1, r0, #0
+ movs r0, #1
+ rsbs r0, r0, #0
+ cmp r1, r0
+ beq _08051014
+ cmp r1, #1
+ beq _0805102A
+ b _08051030
+_08051014:
+ ldr r1, _08051034 @ =gMenu
+ movs r0, #0x1e
+ strh r0, [r1, #8]
+ ldr r0, _08051038 @ =gUnk_02019EE0
+ ldrb r0, [r0, #6]
+ bl sub_0805194C
+ movs r0, #9
+ movs r1, #0
+ bl sub_08050318
+_0805102A:
+ movs r0, #3
+ bl sub_080A7114
+_08051030:
+ pop {pc}
+ .align 2, 0
+_08051034: .4byte gMenu
+_08051038: .4byte gUnk_02019EE0
+
+ thumb_func_start sub_0805103C
+sub_0805103C: @ 0x0805103C
+ push {lr}
+ ldr r0, _08051050 @ =gMenu
+ ldrb r1, [r0, #8]
+ adds r2, r0, #0
+ cmp r1, #0
+ beq _08051054
+ cmp r1, #0xff
+ beq _0805106C
+ b _08051060
+ .align 2, 0
+_08051050: .4byte gMenu
+_08051054:
+ ldr r0, _08051068 @ =gUnk_03000FF0
+ ldrh r1, [r0, #2]
+ movs r0, #9
+ ands r0, r1
+ cmp r0, #0
+ beq _08051072
+_08051060:
+ ldrh r0, [r2, #8]
+ subs r0, #1
+ strh r0, [r2, #8]
+ b _08051072
+ .align 2, 0
+_08051068: .4byte gUnk_03000FF0
+_0805106C:
+ movs r0, #0
+ bl sub_080503BC
+_08051072:
+ pop {pc}
+
+ thumb_func_start sub_08051074
+sub_08051074: @ 0x08051074
+ push {lr}
+ ldr r1, _08051088 @ =gUnk_080FC960
+ ldr r0, _0805108C @ =gMenu
+ ldrb r0, [r0, #5]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {pc}
+ .align 2, 0
+_08051088: .4byte gUnk_080FC960
+_0805108C: .4byte gMenu
+
+ thumb_func_start sub_08051090
+sub_08051090: @ 0x08051090
+ push {lr}
+ movs r0, #8
+ bl sub_080503A8
+ bl sub_08050790
+ bl sub_0805070C
+ bl sub_08051458
+ ldr r1, _080510B4 @ =gScreen
+ movs r0, #0xff
+ strh r0, [r1, #0x18]
+ strh r0, [r1, #0x24]
+ movs r0, #1
+ bl sub_080A7114
+ pop {pc}
+ .align 2, 0
+_080510B4: .4byte gScreen
+
+ thumb_func_start sub_080510B8
+sub_080510B8: @ 0x080510B8
+ push {r4, r5, r6, r7, lr}
+ ldr r0, _080510E4 @ =gUnk_02019EE0
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _080510C4
+ b _0805134C
+_080510C4:
+ movs r7, #0
+ ldr r0, _080510E8 @ =gUnk_03000FF0
+ ldrh r1, [r0, #2]
+ adds r2, r0, #0
+ cmp r1, #8
+ bne _080510D2
+ b _080511C8
+_080510D2:
+ cmp r1, #8
+ bgt _080510EC
+ cmp r1, #1
+ bne _080510DC
+ b _080511F2
+_080510DC:
+ cmp r1, #2
+ beq _080511B8
+ b _08051100
+ .align 2, 0
+_080510E4: .4byte gUnk_02019EE0
+_080510E8: .4byte gUnk_03000FF0
+_080510EC:
+ movs r0, #0x80
+ lsls r0, r0, #1
+ cmp r1, r0
+ bne _080510F6
+ b _0805122C
+_080510F6:
+ movs r0, #0x80
+ lsls r0, r0, #2
+ cmp r1, r0
+ bne _08051100
+ b _0805121C
+_08051100:
+ movs r6, #0
+ movs r5, #0
+ ldrh r0, [r2, #4]
+ cmp r0, #0x20
+ beq _08051128
+ cmp r0, #0x20
+ bgt _08051114
+ cmp r0, #0x10
+ beq _0805112E
+ b _08051130
+_08051114:
+ cmp r0, #0x40
+ beq _0805111E
+ cmp r0, #0x80
+ beq _08051124
+ b _08051130
+_0805111E:
+ movs r5, #1
+ rsbs r5, r5, #0
+ b _08051130
+_08051124:
+ movs r5, #1
+ b _08051130
+_08051128:
+ movs r6, #1
+ rsbs r6, r6, #0
+ b _08051130
+_0805112E:
+ movs r6, #1
+_08051130:
+ ldr r4, _0805117C @ =gMenu
+ ldrb r0, [r4, #0x11]
+ adds r0, r0, r5
+ adds r0, #6
+ movs r1, #6
+ bl __modsi3
+ strb r0, [r4, #0x11]
+ orrs r5, r6
+ cmp r5, #0
+ beq _0805114C
+ movs r0, #0x67
+ bl PlaySFX
+_0805114C:
+ cmp r6, #0
+ beq _0805123A
+ ldrb r0, [r4, #0x11]
+ cmp r0, #5
+ beq _08051184
+ ldrb r0, [r4, #0x10]
+ adds r0, r0, r6
+ adds r0, #0xd
+ movs r1, #0xd
+ bl __modsi3
+ strb r0, [r4, #0x10]
+ ldr r1, _08051180 @ =gUnk_080FC980
+ movs r0, #0x80
+ lsls r0, r0, #0x12
+ ldrb r0, [r0, #7]
+ cmp r0, #0
+ beq _08051172
+ adds r1, #0x10
+_08051172:
+ ldrb r0, [r4, #0x10]
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ strb r0, [r4, #0x12]
+ b _0805123A
+ .align 2, 0
+_0805117C: .4byte gMenu
+_08051180: .4byte gUnk_080FC980
+_08051184:
+ movs r0, #0x80
+ lsls r0, r0, #0x12
+ ldrb r0, [r0, #7]
+ adds r5, r0, #0
+ movs r1, #4
+ cmp r5, #0
+ bne _08051194
+ movs r1, #5
+_08051194:
+ ldrb r0, [r4, #0x12]
+ adds r0, r0, r6
+ adds r0, r0, r1
+ bl __modsi3
+ strb r0, [r4, #0x12]
+ ldr r1, _080511B4 @ =gUnk_080FC9A0
+ cmp r5, #0
+ beq _080511A8
+ adds r1, #8
+_080511A8:
+ ldrb r0, [r4, #0x12]
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ strb r0, [r4, #0x10]
+ b _0805123A
+ .align 2, 0
+_080511B4: .4byte gUnk_080FC9A0
+_080511B8:
+ ldr r0, _080511C4 @ =gMenu
+ ldrb r0, [r0, #0x13]
+ cmp r0, #0
+ beq _080511EC
+ movs r7, #5
+ b _0805123A
+ .align 2, 0
+_080511C4: .4byte gMenu
+_080511C8:
+ movs r0, #0x80
+ lsls r0, r0, #0x12
+ ldrb r0, [r0, #7]
+ movs r1, #3
+ cmp r0, #0
+ bne _080511D6
+ movs r1, #4
+_080511D6:
+ ldr r2, _080511E8 @ =gMenu
+ ldrb r0, [r2, #0x11]
+ cmp r0, #5
+ bne _080511EC
+ ldrb r2, [r2, #0x12]
+ cmp r1, r2
+ bne _080511EC
+ movs r7, #8
+ b _0805123A
+ .align 2, 0
+_080511E8: .4byte gMenu
+_080511EC:
+ bl sub_08051358
+ b _0805123A
+_080511F2:
+ ldr r1, _08051210 @ =gMenu
+ ldrb r0, [r1, #0x11]
+ cmp r0, #5
+ bne _08051218
+ ldr r2, _08051214 @ =gUnk_080FC970
+ ldrb r1, [r1, #0x12]
+ movs r0, #0x80
+ lsls r0, r0, #0x12
+ ldrb r0, [r0, #7]
+ cmp r0, #0
+ beq _0805120A
+ adds r1, #8
+_0805120A:
+ adds r0, r1, r2
+ ldrb r7, [r0]
+ b _0805123A
+ .align 2, 0
+_08051210: .4byte gMenu
+_08051214: .4byte gUnk_080FC970
+_08051218:
+ movs r7, #6
+ b _0805123A
+_0805121C:
+ movs r0, #0x80
+ lsls r0, r0, #0x12
+ ldrb r0, [r0, #7]
+ movs r7, #1
+ cmp r0, #0
+ bne _0805123A
+ movs r7, #4
+ b _0805123A
+_0805122C:
+ movs r0, #0x80
+ lsls r0, r0, #0x12
+ ldrb r0, [r0, #7]
+ movs r7, #2
+ cmp r0, #0
+ bne _0805123A
+ movs r7, #7
+_0805123A:
+ ldr r0, _08051250 @ =gMenu
+ ldrb r4, [r0, #1]
+ subs r0, r7, #1
+ cmp r0, #7
+ bhi _08051322
+ lsls r0, r0, #2
+ ldr r1, _08051254 @ =_08051258
+ adds r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08051250: .4byte gMenu
+_08051254: .4byte _08051258
+_08051258: @ jump table
+ .4byte _08051278 @ case 0
+ .4byte _0805127C @ case 1
+ .4byte _08051280 @ case 2
+ .4byte _08051284 @ case 3
+ .4byte _08051288 @ case 4
+ .4byte _080512C0 @ case 5
+ .4byte _080512B8 @ case 6
+ .4byte _080512EC @ case 7
+_08051278:
+ movs r4, #0
+ b _08051322
+_0805127C:
+ movs r4, #1
+ b _08051322
+_08051280:
+ movs r4, #2
+ b _08051322
+_08051284:
+ adds r4, #1
+ b _08051322
+_08051288:
+ ldr r3, _080512B0 @ =gMenu
+ ldrb r0, [r3, #0x13]
+ cmp r0, #0
+ beq _08051322
+ subs r0, #1
+ movs r2, #0
+ strb r0, [r3, #0x13]
+ ldr r1, _080512B4 @ =gUnk_02002A40
+ ldrb r0, [r3, #0x13]
+ adds r1, #0x80
+ adds r0, r0, r1
+ strb r2, [r0]
+ ldrb r0, [r3, #0x13]
+ adds r0, #1
+ adds r0, r0, r1
+ strb r2, [r0]
+ movs r0, #0x6c
+ bl sub_08051574
+ b _08051322
+ .align 2, 0
+_080512B0: .4byte gMenu
+_080512B4: .4byte gUnk_02002A40
+_080512B8:
+ movs r0, #0
+ bl sub_08051480
+ b _08051322
+_080512C0:
+ ldr r2, _080512E4 @ =gUnk_02001A40
+ ldr r0, _080512E8 @ =gMenu
+ ldrb r1, [r0, #0x10]
+ lsls r1, r1, #1
+ ldrb r0, [r0, #0x11]
+ lsls r0, r0, #6
+ adds r0, #0xc3
+ adds r1, r1, r0
+ lsls r1, r1, #1
+ adds r1, r1, r2
+ ldrh r0, [r1]
+ lsrs r0, r0, #1
+ lsls r0, r0, #0x18
+ lsrs r0, r0, #0x18
+ bl sub_08051480
+ b _08051322
+ .align 2, 0
+_080512E4: .4byte gUnk_02001A40
+_080512E8: .4byte gMenu
+_080512EC:
+ movs r3, #5
+ ldr r0, _08051350 @ =gUnk_02002A40
+ adds r6, r0, #0
+ adds r6, #0x80
+ movs r5, #0
+_080512F6:
+ adds r2, r3, r6
+ ldrb r1, [r2]
+ cmp r1, #0
+ beq _08051302
+ cmp r1, #0x20
+ bne _0805130A
+_08051302:
+ strb r5, [r2]
+ subs r3, #1
+ cmp r3, #0
+ bge _080512F6
+_0805130A:
+ adds r0, #0x80
+ ldrb r0, [r0]
+ movs r7, #3
+ cmp r0, #0
+ beq _08051316
+ movs r7, #2
+_08051316:
+ movs r0, #0x6a
+ bl sub_08051574
+ adds r0, r7, #0
+ bl sub_080A7114
+_08051322:
+ movs r0, #0x80
+ lsls r0, r0, #0x12
+ ldrb r0, [r0, #7]
+ movs r1, #2
+ cmp r0, #0
+ bne _08051330
+ movs r1, #3
+_08051330:
+ adds r0, r4, r1
+ bl __modsi3
+ adds r4, r0, #0
+ ldr r1, _08051354 @ =gMenu
+ ldrb r0, [r1, #1]
+ cmp r0, r4
+ beq _0805134C
+ strb r4, [r1, #1]
+ bl sub_08051458
+ movs r0, #0x68
+ bl PlaySFX
+_0805134C:
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_08051350: .4byte gUnk_02002A40
+_08051354: .4byte gMenu
+
+ thumb_func_start sub_08051358
+sub_08051358: @ 0x08051358
+ push {lr}
+ ldr r2, _08051384 @ =gMenu
+ movs r0, #0x80
+ lsls r0, r0, #0x12
+ ldrb r0, [r0, #7]
+ movs r1, #3
+ cmp r0, #0
+ bne _0805136A
+ movs r1, #4
+_0805136A:
+ strb r1, [r2, #0x12]
+ ldrh r1, [r2, #0x10]
+ ldr r0, _08051388 @ =0x0000050B
+ cmp r1, r0
+ beq _08051382
+ movs r0, #5
+ strb r0, [r2, #0x11]
+ movs r0, #0xb
+ strb r0, [r2, #0x10]
+ movs r0, #0x67
+ bl PlaySFX
+_08051382:
+ pop {pc}
+ .align 2, 0
+_08051384: .4byte gMenu
+_08051388: .4byte 0x0000050B
+
+ thumb_func_start sub_0805138C
+sub_0805138C: @ 0x0805138C
+ push {lr}
+ ldr r1, _080513A0 @ =gUnk_080FC9B0
+ ldr r0, _080513A4 @ =gMenu
+ ldrb r0, [r0, #6]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {pc}
+ .align 2, 0
+_080513A0: .4byte gUnk_080FC9B0
+_080513A4: .4byte gMenu
+
+ thumb_func_start sub_080513A8
+sub_080513A8: @ 0x080513A8
+ push {lr}
+ movs r0, #5
+ movs r1, #0
+ bl sub_08050318
+ ldr r1, _080513BC @ =gMenu
+ movs r0, #1
+ strb r0, [r1, #6]
+ pop {pc}
+ .align 2, 0
+_080513BC: .4byte gMenu
+
+ thumb_func_start sub_080513C0
+sub_080513C0: @ 0x080513C0
+ push {lr}
+ movs r0, #0
+ bl sub_0807CDA4
+ adds r2, r0, #0
+ cmp r2, #0
+ beq _08051412
+ cmp r2, #0
+ bgt _080513DC
+ movs r0, #1
+ rsbs r0, r0, #0
+ cmp r2, r0
+ beq _080513F8
+ b _08051412
+_080513DC:
+ cmp r2, #1
+ bne _08051412
+ ldr r1, _080513F4 @ =gUnk_02019EE0
+ adds r0, r1, #0
+ adds r0, #8
+ ldrb r1, [r1, #6]
+ adds r0, r0, r1
+ strb r2, [r0]
+ movs r0, #3
+ bl sub_080A7114
+ b _08051412
+ .align 2, 0
+_080513F4: .4byte gUnk_02019EE0
+_080513F8:
+ ldr r0, _08051414 @ =gUnk_02019EE0
+ ldrb r0, [r0, #6]
+ bl sub_0805194C
+ movs r0, #6
+ movs r1, #0
+ bl sub_08050318
+ ldr r1, _08051418 @ =gMenu
+ movs r0, #0x1e
+ strh r0, [r1, #8]
+ movs r0, #2
+ strb r0, [r1, #6]
+_08051412:
+ pop {pc}
+ .align 2, 0
+_08051414: .4byte gUnk_02019EE0
+_08051418: .4byte gMenu
+
+ thumb_func_start sub_0805141C
+sub_0805141C: @ 0x0805141C
+ push {lr}
+ ldr r1, _0805143C @ =gMenu
+ ldrh r0, [r1, #8]
+ cmp r0, #0
+ bne _08051444
+ ldr r0, _08051440 @ =gUnk_03000FF0
+ ldrh r1, [r0, #2]
+ movs r0, #9
+ ands r0, r1
+ cmp r0, #0
+ beq _08051448
+ movs r0, #3
+ bl sub_080A7114
+ b _08051448
+ .align 2, 0
+_0805143C: .4byte gMenu
+_08051440: .4byte gUnk_03000FF0
+_08051444:
+ subs r0, #1
+ strh r0, [r1, #8]
+_08051448:
+ pop {pc}
+ .align 2, 0
+
+ thumb_func_start sub_0805144C
+sub_0805144C: @ 0x0805144C
+ push {lr}
+ movs r0, #0
+ bl sub_080503BC
+ pop {pc}
+ .align 2, 0
+
+ thumb_func_start sub_08051458
+sub_08051458: @ 0x08051458
+ push {lr}
+ ldr r0, _08051474 @ =gMenu
+ ldrb r0, [r0, #1]
+ adds r0, #9
+ bl sub_080503A8
+ ldr r0, _08051478 @ =gUnk_02001B40
+ ldr r1, _0805147C @ =gUnk_02022030
+ movs r2, #0x80
+ lsls r2, r2, #3
+ bl sub_0801D66C
+ pop {pc}
+ .align 2, 0
+_08051474: .4byte gMenu
+_08051478: .4byte gUnk_02001B40
+_0805147C: .4byte gUnk_02022030
+
+ thumb_func_start sub_08051480
+sub_08051480: @ 0x08051480
+ push {r4, lr}
+ adds r4, r0, #0
+ bl sub_080514BC
+ ldr r2, _080514B4 @ =gMenu
+ ldrb r1, [r2, #0x13]
+ cmp r0, #0
+ beq _080514B0
+ cmp r0, #1
+ beq _08051498
+ adds r4, r0, #0
+ subs r1, #1
+_08051498:
+ cmp r1, #5
+ bls _0805149E
+ movs r1, #5
+_0805149E:
+ adds r0, r1, #1
+ strb r0, [r2, #0x13]
+ ldr r0, _080514B8 @ =gUnk_02002A40
+ adds r0, #0x80
+ adds r0, r1, r0
+ strb r4, [r0]
+ movs r0, #0x6b
+ bl sub_08051574
+_080514B0:
+ pop {r4, pc}
+ .align 2, 0
+_080514B4: .4byte gMenu
+_080514B8: .4byte gUnk_02002A40
+
+ thumb_func_start sub_080514BC
+sub_080514BC: @ 0x080514BC
+ push {lr}
+ adds r2, r0, #0
+ movs r0, #0x80
+ lsls r0, r0, #0x12
+ ldrb r0, [r0, #7]
+ cmp r0, #0
+ bne _080514D6
+ cmp r2, #0
+ beq _080514DA
+ cmp r2, #0xf
+ bhi _080514D6
+ cmp r2, #0xe
+ bhs _080514DA
+_080514D6:
+ movs r0, #1
+ b _08051572
+_080514DA:
+ ldr r0, _08051500 @ =gMenu
+ ldrb r1, [r0, #0x13]
+ cmp r1, #0
+ beq _08051570
+ ldr r0, _08051504 @ =gUnk_02002A40
+ adds r0, r0, r1
+ adds r0, #0x7f
+ ldrb r1, [r0]
+ adds r0, r1, #0
+ subs r0, #0xa4
+ cmp r0, #0x28
+ bhi _08051522
+ cmp r2, #0xe
+ beq _0805153C
+ cmp r2, #0xe
+ bhi _08051508
+ cmp r2, #0
+ beq _0805150E
+ b _0805153C
+ .align 2, 0
+_08051500: .4byte gMenu
+_08051504: .4byte gUnk_02002A40
+_08051508:
+ cmp r2, #0xf
+ beq _08051518
+ b _0805153C
+_0805150E:
+ cmp r1, #0xc2
+ bhi _0805151C
+ adds r0, r1, #0
+ adds r0, #0x33
+ b _08051572
+_08051518:
+ cmp r1, #0xc2
+ bls _08051570
+_0805151C:
+ adds r0, r1, #0
+ adds r0, #0xa
+ b _08051572
+_08051522:
+ adds r0, r1, #0
+ subs r0, #0xcd
+ cmp r0, #9
+ bhi _0805154C
+ cmp r2, #0xe
+ beq _08051546
+ cmp r2, #0xe
+ bhi _08051538
+ cmp r2, #0
+ beq _08051540
+ b _0805154C
+_08051538:
+ cmp r2, #0xf
+ bne _0805154C
+_0805153C:
+ adds r0, r1, #0
+ b _08051572
+_08051540:
+ adds r0, r1, #0
+ adds r0, #0x29
+ b _08051572
+_08051546:
+ adds r0, r1, #0
+ subs r0, #0xa
+ b _08051572
+_0805154C:
+ adds r0, r1, #0
+ subs r0, #0xd7
+ cmp r0, #0x28
+ bhi _08051570
+ cmp r2, #0xe
+ beq _08051560
+ cmp r2, #0xe
+ bls _08051560
+ cmp r2, #0xf
+ beq _08051566
+_08051560:
+ adds r0, r1, #0
+ subs r0, #0x33
+ b _08051572
+_08051566:
+ cmp r1, #0xf5
+ bls _08051570
+ adds r0, r1, #0
+ subs r0, #0x29
+ b _08051572
+_08051570:
+ movs r0, #0
+_08051572:
+ pop {pc}
+
+ thumb_func_start sub_08051574
+sub_08051574: @ 0x08051574
+ push {lr}
+ bl PlaySFX
+ ldr r0, _08051594 @ =gUnk_02002A40
+ ldr r3, _08051598 @ =gUnk_02019EE0
+ ldrb r1, [r3, #6]
+ ldr r2, _0805159C @ =0x000004B4
+ muls r1, r2, r1
+ adds r3, #0xc
+ adds r1, r1, r3
+ bl sub_0801D66C
+ bl sub_0805070C
+ pop {pc}
+ .align 2, 0
+_08051594: .4byte gUnk_02002A40
+_08051598: .4byte gUnk_02019EE0
+_0805159C: .4byte 0x000004B4
+
+ thumb_func_start sub_080515A0
+sub_080515A0: @ 0x080515A0
+ push {lr}
+ ldr r1, _080515BC @ =gUnk_080FC9BC
+ ldr r0, _080515C0 @ =gMenu
+ ldrb r0, [r0, #5]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldr r0, _080515C4 @ =gUnk_02019EE0
+ ldrb r0, [r0, #6]
+ bl sub_08050A64
+ pop {pc}
+ .align 2, 0
+_080515BC: .4byte gUnk_080FC9BC
+_080515C0: .4byte gMenu
+_080515C4: .4byte gUnk_02019EE0
+
+ thumb_func_start sub_080515C8
+sub_080515C8: @ 0x080515C8
+ push {lr}
+ movs r0, #1
+ bl sub_080A7114
+ pop {pc}
+ .align 2, 0
+
+ thumb_func_start sub_080515D4
+sub_080515D4: @ 0x080515D4
+ push {r4, lr}
+ ldr r0, _080515FC @ =gUnk_02019EE0
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _080515E0
+ b _080516D8
+_080515E0:
+ ldr r1, _08051600 @ =gMenu
+ movs r0, #4
+ strh r0, [r1, #8]
+ ldrb r4, [r1, #1]
+ ldr r0, _08051604 @ =gUnk_03000FF0
+ ldrh r0, [r0, #2]
+ subs r0, #1
+ cmp r0, #0x1f
+ bhi _080516C8
+ lsls r0, r0, #2
+ ldr r1, _08051608 @ =_0805160C
+ adds r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080515FC: .4byte gUnk_02019EE0
+_08051600: .4byte gMenu
+_08051604: .4byte gUnk_03000FF0
+_08051608: .4byte _0805160C
+_0805160C: @ jump table
+ .4byte _08051694 @ case 0
+ .4byte _0805168C @ case 1
+ .4byte _080516C8 @ case 2
+ .4byte _080516C8 @ case 3
+ .4byte _080516C8 @ case 4
+ .4byte _080516C8 @ case 5
+ .4byte _080516C8 @ case 6
+ .4byte _08051694 @ case 7
+ .4byte _080516C8 @ case 8
+ .4byte _080516C8 @ case 9
+ .4byte _080516C8 @ case 10
+ .4byte _080516C8 @ case 11
+ .4byte _080516C8 @ case 12
+ .4byte _080516C8 @ case 13
+ .4byte _080516C8 @ case 14
+ .4byte _080516C6 @ case 15
+ .4byte _080516C8 @ case 16
+ .4byte _080516C8 @ case 17
+ .4byte _080516C8 @ case 18
+ .4byte _080516C8 @ case 19
+ .4byte _080516C8 @ case 20
+ .4byte _080516C8 @ case 21
+ .4byte _080516C8 @ case 22
+ .4byte _080516C8 @ case 23
+ .4byte _080516C8 @ case 24
+ .4byte _080516C8 @ case 25
+ .4byte _080516C8 @ case 26
+ .4byte _080516C8 @ case 27
+ .4byte _080516C8 @ case 28
+ .4byte _080516C8 @ case 29
+ .4byte _080516C8 @ case 30
+ .4byte _080516C2 @ case 31
+_0805168C:
+ ldr r1, _080516B0 @ =gMenu
+ movs r0, #0
+ strb r0, [r1, #1]
+ movs r4, #0
+_08051694:
+ cmp r4, #1
+ bne _080516B4
+ movs r0, #4
+ movs r1, #0
+ bl sub_08050318
+ movs r0, #2
+ bl sub_080A7114
+ movs r0, #0x6a
+ bl PlaySFX
+ b _080516C8
+ .align 2, 0
+_080516B0: .4byte gMenu
+_080516B4:
+ movs r0, #0
+ bl sub_080503BC
+ movs r0, #0x6c
+ bl PlaySFX
+ b _080516C8
+_080516C2:
+ movs r4, #0
+ b _080516C8
+_080516C6:
+ movs r4, #1
+_080516C8:
+ ldr r1, _080516DC @ =gMenu
+ ldrb r0, [r1, #1]
+ cmp r0, r4
+ beq _080516D8
+ strb r4, [r1, #1]
+ movs r0, #0x69
+ bl PlaySFX
+_080516D8:
+ pop {r4, pc}
+ .align 2, 0
+_080516DC: .4byte gMenu
+
+ thumb_func_start sub_080516E0
+sub_080516E0: @ 0x080516E0
+ push {r4, lr}
+ movs r0, #1
+ bl sub_0807CDA4
+ cmp r0, #0
+ beq _08051706
+ ldr r4, _08051708 @ =gUnk_02019EE0
+ ldrb r0, [r4, #6]
+ bl sub_0805194C
+ ldrb r0, [r4, #6]
+ bl sub_08050AFC
+ ldr r1, _0805170C @ =gMenu
+ movs r0, #2
+ strh r0, [r1, #8]
+ movs r0, #0
+ bl sub_080503BC
+_08051706:
+ pop {r4, pc}
+ .align 2, 0
+_08051708: .4byte gUnk_02019EE0
+_0805170C: .4byte gMenu
+
+ thumb_func_start sub_08051710
+sub_08051710: @ 0x08051710
+ push {lr}
+ ldr r1, _0805172C @ =gUnk_080FC9C8
+ ldr r0, _08051730 @ =gMenu
+ ldrb r0, [r0, #5]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldr r0, _08051734 @ =gUnk_02019EE0
+ ldrb r0, [r0, #6]
+ bl sub_08050A64
+ pop {pc}
+ .align 2, 0
+_0805172C: .4byte gUnk_080FC9C8
+_08051730: .4byte gMenu
+_08051734: .4byte gUnk_02019EE0
+
+ thumb_func_start sub_08051738
+sub_08051738: @ 0x08051738
+ push {r4, r5, r6, r7, lr}
+ ldr r1, _08051768 @ =gUnk_02019EE0
+ movs r0, #4
+ strb r0, [r1, #7]
+ movs r4, #0
+ movs r3, #0
+ adds r5, r1, #0
+ adds r7, r5, #0
+ adds r7, #8
+ ldr r6, _0805176C @ =gUnk_02000090
+_0805174C:
+ adds r0, r3, r7
+ ldrb r0, [r0]
+ lsls r0, r0, #0x18
+ asrs r0, r0, #0x18
+ cmp r0, #1
+ bne _08051770
+ ldrb r1, [r5, #6]
+ movs r2, #4
+ eors r1, r3
+ rsbs r0, r1, #0
+ orrs r0, r1
+ asrs r0, r0, #0x1f
+ ands r2, r0
+ b _08051774
+ .align 2, 0
+_08051768: .4byte gUnk_02019EE0
+_0805176C: .4byte gUnk_02000090
+_08051770:
+ adds r4, #1
+ adds r2, r4, #0
+_08051774:
+ adds r0, r3, r6
+ strb r2, [r0]
+ adds r3, #1
+ cmp r3, #2
+ bls _0805174C
+ cmp r4, #0
+ bne _0805179C
+ ldr r1, _08051798 @ =gMenu
+ movs r0, #0x3c
+ strh r0, [r1, #8]
+ movs r0, #1
+ movs r1, #0
+ bl sub_08050318
+ movs r0, #3
+ bl sub_080A7114
+ b _080517A2
+ .align 2, 0
+_08051798: .4byte gMenu
+_0805179C:
+ movs r0, #1
+ bl sub_080A7114
+_080517A2:
+ adds r4, #1
+ ldr r0, _080517B0 @ =gMenu
+ strb r4, [r0, #0x16]
+ movs r1, #4
+ strb r1, [r0, #0x13]
+ strb r4, [r0, #0x14]
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_080517B0: .4byte gMenu
+
+ thumb_func_start sub_080517B4
+sub_080517B4: @ 0x080517B4
+ push {r4, lr}
+ adds r2, r0, #0
+ ldr r0, _080517E4 @ =gUnk_02019EE0
+ ldrb r1, [r0, #7]
+ adds r4, r0, #0
+ cmp r2, #0
+ beq _080517DE
+ adds r1, r1, r2
+ cmp r1, #4
+ bhi _080517DC
+ ldr r3, _080517E8 @ =gUnk_02000090
+_080517CA:
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _080517D6
+ cmp r0, #4
+ bne _080517DE
+_080517D6:
+ adds r1, r1, r2
+ cmp r1, #4
+ bls _080517CA
+_080517DC:
+ ldrb r1, [r4, #7]
+_080517DE:
+ adds r0, r1, #0
+ pop {r4, pc}
+ .align 2, 0
+_080517E4: .4byte gUnk_02019EE0
+_080517E8: .4byte gUnk_02000090
+
+ thumb_func_start sub_080517EC
+sub_080517EC: @ 0x080517EC
+ push {r4, lr}
+ ldr r0, _08051810 @ =gUnk_02019EE0
+ ldrb r1, [r0]
+ adds r2, r0, #0
+ cmp r1, #0
+ bne _0805186E
+ movs r4, #0
+ ldr r0, _08051814 @ =gUnk_03000FF0
+ ldrh r0, [r0, #2]
+ cmp r0, #8
+ beq _0805182C
+ cmp r0, #8
+ bgt _08051818
+ cmp r0, #1
+ beq _0805182C
+ cmp r0, #2
+ beq _08051848
+ b _08051858
+ .align 2, 0
+_08051810: .4byte gUnk_02019EE0
+_08051814: .4byte gUnk_03000FF0
+_08051818:
+ cmp r0, #0x40
+ beq _08051822
+ cmp r0, #0x80
+ beq _08051828
+ b _08051858
+_08051822:
+ movs r4, #1
+ rsbs r4, r4, #0
+ b _08051858
+_08051828:
+ movs r4, #1
+ b _08051858
+_0805182C:
+ ldrb r0, [r2, #7]
+ cmp r0, #2
+ bhi _08051848
+ movs r0, #2
+ movs r1, #0
+ bl sub_08050318
+ movs r0, #2
+ bl sub_080A7114
+ movs r0, #0x6a
+ bl PlaySFX
+ b _08051858
+_08051848:
+ movs r0, #4
+ strb r0, [r2, #7]
+ movs r0, #0x6c
+ bl PlaySFX
+ movs r0, #0
+ bl sub_080503BC
+_08051858:
+ adds r0, r4, #0
+ bl sub_080517B4
+ ldr r1, _08051870 @ =gUnk_02019EE0
+ ldrb r2, [r1, #7]
+ cmp r0, r2
+ beq _0805186E
+ strb r0, [r1, #7]
+ movs r0, #0x69
+ bl PlaySFX
+_0805186E:
+ pop {r4, pc}
+ .align 2, 0
+_08051870: .4byte gUnk_02019EE0
+
+ thumb_func_start sub_08051874
+sub_08051874: @ 0x08051874
+ push {r4, lr}
+ movs r1, #0x80
+ lsls r1, r1, #0x12
+ ldr r4, _080518B8 @ =gUnk_02019EE0
+ ldrb r0, [r4, #7]
+ strb r0, [r1, #4]
+ movs r0, #0
+ bl sub_0807CDA4
+ adds r1, r0, #0
+ adds r0, r4, #0
+ adds r0, #8
+ ldrb r2, [r4, #7]
+ adds r0, r0, r2
+ strb r1, [r0]
+ movs r0, #1
+ rsbs r0, r0, #0
+ cmp r1, r0
+ beq _080518C4
+ cmp r1, #1
+ bne _080518DE
+ ldr r0, _080518BC @ =gUnk_02002A40
+ ldrb r1, [r4, #7]
+ ldr r2, _080518C0 @ =0x000004B4
+ muls r1, r2, r1
+ adds r3, r4, #0
+ adds r3, #0xc
+ adds r1, r1, r3
+ bl sub_0801D66C
+ movs r0, #0
+ bl sub_080503BC
+ b _080518DE
+ .align 2, 0
+_080518B8: .4byte gUnk_02019EE0
+_080518BC: .4byte gUnk_02002A40
+_080518C0: .4byte 0x000004B4
+_080518C4:
+ ldrb r0, [r4, #7]
+ bl sub_0805194C
+ movs r0, #3
+ movs r1, #0
+ bl sub_08050318
+ ldr r1, _080518E0 @ =gMenu
+ movs r0, #0x1e
+ strh r0, [r1, #8]
+ movs r0, #3
+ bl sub_080A7114
+_080518DE:
+ pop {r4, pc}
+ .align 2, 0
+_080518E0: .4byte gMenu
+
+ thumb_func_start sub_080518E4
+sub_080518E4: @ 0x080518E4
+ push {lr}
+ ldr r1, _08051904 @ =gMenu
+ ldrh r0, [r1, #8]
+ cmp r0, #0
+ bne _0805190C
+ ldr r0, _08051908 @ =gUnk_03000FF0
+ ldrh r1, [r0, #2]
+ movs r0, #9
+ ands r0, r1
+ cmp r0, #0
+ beq _08051910
+ movs r0, #0
+ bl sub_080503BC
+ b _08051910
+ .align 2, 0
+_08051904: .4byte gMenu
+_08051908: .4byte gUnk_03000FF0
+_0805190C:
+ subs r0, #1
+ strh r0, [r1, #8]
+_08051910:
+ pop {pc}
+ .align 2, 0
+
+ thumb_func_start sub_08051914
+sub_08051914: @ 0x08051914
+ push {lr}
+ ldr r1, _08051940 @ =gMenu
+ ldrb r0, [r1, #5]
+ cmp r0, #0
+ bne _0805193E
+ movs r0, #1
+ strb r0, [r1, #5]
+ movs r2, #0x80
+ lsls r2, r2, #0x12
+ ldr r1, _08051944 @ =gUnk_02002A40
+ ldrb r0, [r1, #2]
+ strb r0, [r2, #5]
+ ldrb r0, [r1, #3]
+ strb r0, [r2, #6]
+ ldr r1, _08051948 @ =gUnk_03001000
+ movs r0, #2
+ strb r0, [r1, #3]
+ movs r0, #5
+ movs r1, #8
+ bl DoFade
+_0805193E:
+ pop {pc}
+ .align 2, 0
+_08051940: .4byte gMenu
+_08051944: .4byte gUnk_02002A40
+_08051948: .4byte gUnk_03001000
+
+ thumb_func_start sub_0805194C
+sub_0805194C: @ 0x0805194C
+ push {r4, lr}
+ ldr r3, _08051980 @ =gUnk_02019EE0
+ adds r1, r3, #0
+ adds r1, #8
+ adds r1, r0, r1
+ movs r2, #0
+ strb r2, [r1]
+ ldr r1, _08051984 @ =0x000004B4
+ adds r4, r0, #0
+ muls r4, r1, r4
+ adds r3, #0xc
+ adds r4, r4, r3
+ adds r0, r4, #0
+ bl _DmaZero
+ movs r0, #1
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ adds r1, r4, #0
+ adds r1, #0xaa
+ movs r0, #0x18
+ strb r0, [r1]
+ adds r4, #0xab
+ strb r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+_08051980: .4byte gUnk_02019EE0
+_08051984: .4byte 0x000004B4
+
+ thumb_func_start HandleGameplayScreen
+HandleGameplayScreen: @ 0x08051988
+ push {lr}
+ ldr r1, _080519A4 @ =gScreenTransition
+ ldr r0, [r1]
+ adds r0, #1
+ str r0, [r1]
+ ldr r1, _080519A8 @ =gUnk_080FC9D8
+ ldr r0, _080519AC @ =gUnk_03001000
+ ldrb r0, [r0, #3]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {pc}
+ .align 2, 0
+_080519A4: .4byte gScreenTransition
+_080519A8: .4byte gUnk_080FC9D8
+_080519AC: .4byte gUnk_03001000
+
+ thumb_func_start sub_080519B0
+sub_080519B0: @ 0x080519B0
+ push {r4, r5, lr}
+ ldr r0, _08051A04 @ =gFadeControl
+ ldrb r5, [r0]
+ cmp r5, #0
+ bne _08051A02
+ movs r0, #1
+ bl sub_0801DA90
+ bl sub_080A3210
+ bl sub_0801DA7C
+ bl sub_080A7124
+ bl sub_0807059C
+ ldr r4, _08051A08 @ =gScreenTransition
+ adds r0, r4, #0
+ movs r1, #0xb0
+ bl _DmaZero
+ bl sub_08049CD4
+ bl sub_080300AC
+ bl sub_0807CA18
+ ldr r0, _08051A0C @ =gUnk_02002AC8
+ adds r1, r4, #0
+ adds r1, #0xc
+ movs r2, #0x20
+ bl sub_0801D66C
+ movs r0, #4
+ strb r0, [r4, #9]
+ bl sub_08053518
+ ldr r1, _08051A10 @ =gUnk_03001000
+ movs r0, #1
+ strb r0, [r1, #3]
+ strb r5, [r1, #4]
+_08051A02:
+ pop {r4, r5, pc}
+ .align 2, 0
+_08051A04: .4byte gFadeControl
+_08051A08: .4byte gScreenTransition
+_08051A0C: .4byte gUnk_02002AC8
+_08051A10: .4byte gUnk_03001000
+
+ thumb_func_start sub_08051A14
+sub_08051A14: @ 0x08051A14
+ push {lr}
+ movs r0, #1
+ bl sub_0801DA90
+ ldr r1, _08051A70 @ =gFadeControl
+ movs r0, #1
+ rsbs r0, r0, #0
+ str r0, [r1, #4]
+ ldr r0, _08051A74 @ =gUnk_03000000
+ ldr r1, _08051A78 @ =0x00000B74
+ bl _DmaZero
+ ldr r0, _08051A7C @ =gUnk_02032EC0
+ movs r1, #0xed
+ lsls r1, r1, #2
+ bl _DmaZero
+ bl EraseAllEntities
+ bl sub_080197AC
+ bl sub_08080668
+ bl sub_080ADD30
+ movs r0, #1
+ bl sub_0801CFA8
+ bl sub_0806FD8C
+ ldr r2, _08051A80 @ =gRoomControls
+ ldr r1, _08051A84 @ =gScreenTransition
+ ldrb r0, [r1, #0xc]
+ strb r0, [r2, #4]
+ ldrb r0, [r1, #0xd]
+ strb r0, [r2, #5]
+ bl sub_08053320
+ ldr r1, _08051A88 @ =gUnk_02024490
+ movs r0, #1
+ strb r0, [r1]
+ ldr r1, _08051A8C @ =gUnk_03001000
+ movs r0, #2
+ strb r0, [r1, #3]
+ pop {pc}
+ .align 2, 0
+_08051A70: .4byte gFadeControl
+_08051A74: .4byte gUnk_03000000
+_08051A78: .4byte 0x00000B74
+_08051A7C: .4byte gUnk_02032EC0
+_08051A80: .4byte gRoomControls
+_08051A84: .4byte gScreenTransition
+_08051A88: .4byte gUnk_02024490
+_08051A8C: .4byte gUnk_03001000
+
+ thumb_func_start sub_08051A90
+sub_08051A90: @ 0x08051A90
+ push {lr}
+ ldr r1, _08051AA4 @ =gUnk_080FC9E8
+ ldr r0, _08051AA8 @ =gUnk_03001000
+ ldrb r0, [r0, #4]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {pc}
+ .align 2, 0
+_08051AA4: .4byte gUnk_080FC9E8
+_08051AA8: .4byte gUnk_03001000
+
+ thumb_func_start InitializeNewRoom
+InitializeNewRoom: @ 0x08051AAC
+ push {lr}
+ bl sub_0805E5A8
+ ldr r1, _08051AE4 @ =gScreen
+ movs r2, #0
+ movs r0, #0xba
+ lsls r0, r0, #5
+ strh r0, [r1]
+ ldr r1, _08051AE8 @ =gUnk_03001000
+ movs r0, #1
+ strb r0, [r1, #4]
+ ldr r0, _08051AEC @ =gScreenTransition
+ strb r2, [r0, #8]
+ strb r2, [r0, #4]
+ strb r2, [r0, #5]
+ bl sub_08056418
+ bl sub_08052CFC
+ movs r0, #0
+ bl sub_0801C370
+ bl InitializeEntities
+ bl sub_0801855C
+ pop {pc}
+ .align 2, 0
+_08051AE4: .4byte gScreen
+_08051AE8: .4byte gUnk_03001000
+_08051AEC: .4byte gScreenTransition
+
+ thumb_func_start sub_08051AF0
+sub_08051AF0: @ 0x08051AF0
+ push {r4, r5, lr}
+ bl sub_0805E5C0
+ bl sub_0805BBBC
+ cmp r0, #0
+ bne _08051B02
+ bl sub_0807FC40
+_08051B02:
+ bl sub_0801B060
+ bl sub_08000108
+ bl sub_0801C344
+ bl sub_0805E5F8
+ bl sub_080AD90C
+ bl sub_0801C208
+ bl sub_08078CB4
+ bl sub_080AD9B0
+ bl sub_080AD918
+ ldr r0, _08051BB0 @ =gFadeControl
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _08051BAE
+ ldr r0, _08051BB4 @ =gRoomControls
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _08051BAE
+ bl sub_08052F1C
+ ldr r5, _08051BB8 @ =gArea
+ movs r0, #0x86
+ lsls r0, r0, #4
+ adds r3, r5, r0
+ ldr r1, _08051BBC @ =0x00000864
+ adds r0, r5, r1
+ ldr r1, [r3]
+ ldr r2, [r0]
+ cmp r1, r2
+ beq _08051B5A
+ str r2, [r3]
+ ldr r0, _08051BC0 @ =0x800B0000
+ orrs r2, r0
+ adds r0, r2, #0
+ bl PlaySFX
+_08051B5A:
+ bl sub_0805E9F4
+ bl sub_0805BC04
+ adds r4, r0, #0
+ cmp r4, #0
+ bne _08051BAE
+ bl sub_08052C5C
+ bl sub_0805E5B4
+ bl sub_08051E04
+ bl sub_080300C4
+ ldr r1, _08051BC4 @ =gUnk_03001000
+ movs r0, #2
+ strb r0, [r1, #4]
+ movs r0, #0
+ bl sub_08078A90
+ ldr r0, _08051BC8 @ =gUnk_02034490
+ strb r4, [r0]
+ adds r0, r5, #0
+ adds r0, #0x28
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq _08051B96
+ bl sub_0801855C
+_08051B96:
+ bl sub_08052BF8
+ bl sub_08053178
+ ldr r0, _08051BCC @ =gRoomVars
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _08051BAE
+ movs r0, #0
+ movs r1, #1
+ bl sub_0805E4E0
+_08051BAE:
+ pop {r4, r5, pc}
+ .align 2, 0
+_08051BB0: .4byte gFadeControl
+_08051BB4: .4byte gRoomControls
+_08051BB8: .4byte gArea
+_08051BBC: .4byte 0x00000864
+_08051BC0: .4byte 0x800B0000
+_08051BC4: .4byte gUnk_03001000
+_08051BC8: .4byte gUnk_02034490
+_08051BCC: .4byte gRoomVars
+
+ thumb_func_start sub_08051BD0
+sub_08051BD0: @ 0x08051BD0
+ push {lr}
+ bl sub_080705AC
+ cmp r0, #0
+ bne _08051C9C
+ bl sub_0804AA84
+ cmp r0, #0
+ bne _08051C9C
+ bl sub_0805340C
+ ldr r0, _08051C5C @ =gUnk_03001000
+ ldrb r0, [r0, #4]
+ cmp r0, #2
+ bne _08051C9C
+ ldr r0, _08051C60 @ =gTextBox
+ ldrb r1, [r0]
+ movs r0, #0x7f
+ ands r0, r1
+ cmp r0, #0
+ bne _08051C02
+ ldr r0, _08051C64 @ =gUnk_03003DC0
+ ldrh r0, [r0, #8]
+ cmp r0, #0
+ beq _08051C06
+_08051C02:
+ bl sub_08078B48
+_08051C06:
+ bl sub_080AD90C
+ bl sub_0805E5C0
+ bl sub_08080A40
+ bl sub_080175F4
+ bl sub_0807FC40
+ bl sub_0801B060
+ bl sub_08000108
+ bl sub_08052C3C
+ bl sub_0801C344
+ bl sub_0805E5F8
+ bl sub_0801C208
+ bl sub_08078CB4
+ bl sub_080AD9B0
+ bl sub_0805291C
+ bl sub_08052C5C
+ bl sub_080528B4
+ bl sub_080185F8
+ bl sub_080AD918
+ ldr r0, _08051C68 @ =gRoomControls
+ ldrh r2, [r0]
+ cmp r2, #1
+ beq _08051C6C
+ cmp r2, #2
+ beq _08051C88
+ b _08051C9C
+ .align 2, 0
+_08051C5C: .4byte gUnk_03001000
+_08051C60: .4byte gTextBox
+_08051C64: .4byte gUnk_03003DC0
+_08051C68: .4byte gRoomControls
+_08051C6C:
+ ldr r0, _08051C80 @ =gPlayerState
+ movs r1, #0x17
+ strb r1, [r0, #0xc]
+ ldr r0, _08051C84 @ =gUnk_03001000
+ strb r2, [r0, #4]
+ bl sub_0805E59C
+ bl sub_08051D98
+ b _08051C9C
+ .align 2, 0
+_08051C80: .4byte gPlayerState
+_08051C84: .4byte gUnk_03001000
+_08051C88:
+ ldr r1, _08051CA0 @ =gPlayerState
+ movs r0, #0x17
+ strb r0, [r1, #0xc]
+ ldr r1, _08051CA4 @ =gUnk_03001000
+ movs r0, #1
+ strb r0, [r1, #4]
+ bl sub_0805E59C
+ bl sub_08051DCC
+_08051C9C:
+ pop {pc}
+ .align 2, 0
+_08051CA0: .4byte gPlayerState
+_08051CA4: .4byte gUnk_03001000
+
+ thumb_func_start sub_08051CA8
+sub_08051CA8: @ 0x08051CA8
+ push {lr}
+ bl sub_080705AC
+ cmp r0, #0
+ bne _08051CEA
+ bl sub_0805E5C0
+ bl sub_080175F4
+ bl sub_0801C344
+ bl sub_0805E5F8
+ bl sub_080AD90C
+ bl sub_0801C208
+ bl sub_08078CB4
+ bl sub_080AD9B0
+ bl sub_0805291C
+ bl sub_080528B4
+ bl sub_080AD918
+ ldr r0, _08051CEC @ =gFadeControl
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _08051CEA
+ bl sub_0805E5B4
+_08051CEA:
+ pop {pc}
+ .align 2, 0
+_08051CEC: .4byte gFadeControl
+
+ thumb_func_start sub_08051CF0
+sub_08051CF0: @ 0x08051CF0
+ push {r4, r5, r6, lr}
+ bl sub_080AD90C
+ bl sub_0801C208
+ bl sub_080AD9B0
+ ldr r5, _08051D20 @ =gUnk_03001000
+ movs r6, #1
+ strb r6, [r5, #0xb]
+ bl sub_080AD918
+ ldr r0, _08051D24 @ =gFadeControl
+ ldrb r4, [r0]
+ cmp r4, #0
+ bne _08051D1E
+ movs r0, #1
+ bl sub_0801DA90
+ strb r6, [r5, #3]
+ strb r4, [r5, #4]
+ ldr r0, _08051D28 @ =gScreenTransition
+ strb r6, [r0, #8]
+_08051D1E:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_08051D20: .4byte gUnk_03001000
+_08051D24: .4byte gFadeControl
+_08051D28: .4byte gScreenTransition
+
+ thumb_func_start sub_08051D2C
+sub_08051D2C: @ 0x08051D2C
+ push {lr}
+ movs r0, #7
+ movs r1, #8
+ bl DoFade
+ movs r0, #3
+ bl InitScreen
+ pop {pc}
+ .align 2, 0
+
+ thumb_func_start InitializeEntities
+InitializeEntities: @ 0x08051D40
+ push {lr}
+ bl sub_08052EA0
+ bl sub_0804AF90
+ bl sub_0804AFDC
+ bl InitializePlayer
+ ldr r1, _08051D90 @ =gUnk_03004030
+ movs r0, #0
+ str r0, [r1]
+ bl sub_0807C740
+ ldr r1, _08051D94 @ =gUnk_02000070
+ movs r0, #1
+ strb r0, [r1]
+ bl sub_0805283C
+ movs r0, #0
+ movs r1, #0
+ bl sub_0801D79C
+ bl LoadRoom
+ bl CreateZeldaFollower
+ bl sub_0804AFF4
+ bl sub_0805329C
+ bl sub_08000108
+ movs r0, #1
+ rsbs r0, r0, #0
+ bl sub_0805BB74
+ bl sub_080531F8
+ pop {pc}
+ .align 2, 0
+_08051D90: .4byte gUnk_03004030
+_08051D94: .4byte gUnk_02000070
+
+ thumb_func_start sub_08051D98
+sub_08051D98: @ 0x08051D98
+ push {lr}
+ bl sub_08052EA0
+ ldr r1, _08051DC8 @ =gRoomVars
+ movs r0, #1
+ strb r0, [r1]
+ bl sub_0805E9A8
+ bl sub_0804AF90
+ bl sub_0804AFDC
+ bl sub_0807C0DC
+ bl sub_0805283C
+ bl LoadRoom
+ bl sub_0804AFF4
+ movs r0, #1
+ bl sub_08078A90
+ pop {pc}
+ .align 2, 0
+_08051DC8: .4byte gRoomVars
+
+ thumb_func_start sub_08051DCC
+sub_08051DCC: @ 0x08051DCC
+ push {r4, lr}
+ ldr r1, _08051DFC @ =gRoomControls
+ ldr r4, _08051E00 @ =gScreenTransition
+ ldrb r0, [r4, #0xc]
+ strb r0, [r1, #4]
+ ldrb r0, [r4, #0xd]
+ strb r0, [r1, #5]
+ bl sub_080528F0
+ movs r0, #3
+ strb r0, [r4, #9]
+ bl sub_08052CFC
+ bl sub_08052EA0
+ bl sub_0805E9A8
+ bl sub_0804AF90
+ bl sub_0804AFDC
+ bl sub_0805283C
+ pop {r4, pc}
+ .align 2, 0
+_08051DFC: .4byte gRoomControls
+_08051E00: .4byte gScreenTransition
+
+ thumb_func_start sub_08051E04
+sub_08051E04: @ 0x08051E04
+ push {lr}
+ bl sub_08052620
+ cmp r0, #0
+ beq _08051E60
+ ldr r1, _08051E2C @ =gPlayerEntity
+ movs r2, #0x2e
+ ldrsh r0, [r1, r2]
+ cmp r0, #0
+ bge _08051E1A
+ adds r0, #0xf
+_08051E1A:
+ asrs r2, r0, #4
+ movs r3, #0x32
+ ldrsh r0, [r1, r3]
+ cmp r0, #0
+ bge _08051E26
+ adds r0, #0xf
+_08051E26:
+ asrs r1, r0, #4
+ ldr r3, _08051E30 @ =gUnk_08127F94
+ b _08051E36
+ .align 2, 0
+_08051E2C: .4byte gPlayerEntity
+_08051E30: .4byte gUnk_08127F94
+_08051E34:
+ adds r3, #8
+_08051E36:
+ ldrb r0, [r3]
+ cmp r0, #0xff
+ beq _08051E60
+ cmp r0, r2
+ bhi _08051E34
+ ldrb r0, [r3, #2]
+ cmp r0, r2
+ blo _08051E34
+ ldrb r0, [r3, #1]
+ cmp r0, r1
+ bhi _08051E34
+ ldrb r0, [r3, #3]
+ cmp r0, r1
+ blo _08051E34
+ ldr r2, _08051E64 @ =gUnk_02002A40
+ movs r1, #1
+ ldrb r3, [r3, #4]
+ lsls r1, r3
+ ldr r0, [r2, #0x40]
+ orrs r0, r1
+ str r0, [r2, #0x40]
+_08051E60:
+ pop {pc}
+ .align 2, 0
+_08051E64: .4byte gUnk_02002A40
+
+ thumb_func_start sub_08051E68
+sub_08051E68: @ 0x08051E68
+ push {lr}
+ ldr r1, _08051E7C @ =gUnk_080FCA08
+ ldr r0, _08051E80 @ =gMenu
+ ldrb r0, [r0, #5]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {pc}
+ .align 2, 0
+_08051E7C: .4byte gUnk_080FCA08
+_08051E80: .4byte gMenu
+
+ thumb_func_start sub_08051E84
+sub_08051E84: @ 0x08051E84
+ push {r4, r5, r6, lr}
+ ldr r0, _08051EF0 @ =gUnk_02032EC0
+ ldrb r4, [r0, #3]
+ lsls r4, r4, #3
+ ldr r0, _08051EF4 @ =gUnk_080FCA20
+ adds r4, r4, r0
+ ldr r5, _08051EF8 @ =gRoomControls
+ ldrb r0, [r4]
+ strb r0, [r5, #4]
+ ldrb r0, [r4, #1]
+ strb r0, [r5, #5]
+ bl sub_08053320
+ ldrb r0, [r5, #4]
+ bl sub_08052D58
+ ldr r1, _08051EFC @ =gArea
+ movs r6, #0
+ strh r0, [r1, #4]
+ ldrb r0, [r4]
+ ldrb r1, [r4, #1]
+ bl SetCurrentRoomPropertyList
+ ldrb r0, [r4]
+ ldrb r1, [r4, #1]
+ bl sub_08052FD8
+ ldrh r0, [r4, #4]
+ ldrh r1, [r5, #6]
+ adds r0, r0, r1
+ strh r0, [r5, #0xa]
+ ldrh r0, [r4, #6]
+ ldrh r1, [r5, #8]
+ adds r0, r0, r1
+ strh r0, [r5, #0xc]
+ ldr r1, _08051F00 @ =gMenu
+ ldrb r0, [r4, #2]
+ strb r0, [r1]
+ ldrb r2, [r4, #3]
+ movs r0, #0xf
+ ands r0, r2
+ strb r0, [r1, #3]
+ str r4, [r1, #0xc]
+ ldrb r0, [r1, #5]
+ adds r0, #1
+ strb r0, [r1, #5]
+ strb r6, [r1, #6]
+ movs r0, #0x96
+ lsls r0, r0, #1
+ strh r0, [r1, #8]
+ bl sub_08051F04
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_08051EF0: .4byte gUnk_02032EC0
+_08051EF4: .4byte gUnk_080FCA20
+_08051EF8: .4byte gRoomControls
+_08051EFC: .4byte gArea
+_08051F00: .4byte gMenu
+
+ thumb_func_start sub_08051F04
+sub_08051F04: @ 0x08051F04
+ push {lr}
+ ldr r1, _08051F38 @ =gUnk_080FCA14
+ ldr r0, _08051F3C @ =gMenu
+ ldrb r0, [r0]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ bl sub_080AD90C
+ bl sub_0805E5C0
+ bl sub_080AD9B0
+ bl sub_080AD918
+ bl sub_0807FC40
+ bl sub_0801B060
+ bl sub_0805E5F8
+ bl sub_08000108
+ pop {pc}
+ .align 2, 0
+_08051F38: .4byte gUnk_080FCA14
+_08051F3C: .4byte gMenu
+
+ thumb_func_start sub_08051F40
+sub_08051F40: @ 0x08051F40
+ push {lr}
+ ldr r0, _08051F60 @ =gUnk_080FCA20
+ ldr r2, _08051F64 @ =gUnk_02032EC0
+ ldrb r1, [r2, #3]
+ lsls r1, r1, #3
+ adds r1, r1, r0
+ ldrb r1, [r1, #3]
+ movs r0, #0xf0
+ ands r0, r1
+ cmp r0, #0
+ beq _08051F68
+ lsrs r1, r1, #4
+ movs r0, #2
+ bl MenuFadeIn
+ b _08051F76
+ .align 2, 0
+_08051F60: .4byte gUnk_080FCA20
+_08051F64: .4byte gUnk_02032EC0
+_08051F68:
+ movs r0, #3
+ strb r0, [r2]
+ movs r0, #0x10
+ bl sub_080500F4
+ bl sub_08056418
+_08051F76:
+ pop {pc}
+
+ thumb_func_start sub_08051F78
+sub_08051F78: @ 0x08051F78
+ push {lr}
+ ldr r0, _08051F94 @ =gUnk_02032EC0
+ ldrb r3, [r0, #3]
+ lsls r3, r3, #3
+ ldr r0, _08051F98 @ =gUnk_080FCA20
+ adds r3, r3, r0
+ ldrb r0, [r3]
+ ldrb r1, [r3, #1]
+ ldrh r2, [r3, #4]
+ ldrh r3, [r3, #6]
+ bl sub_08051F9C
+ pop {pc}
+ .align 2, 0
+_08051F94: .4byte gUnk_02032EC0
+_08051F98: .4byte gUnk_080FCA20
+
+ thumb_func_start sub_08051F9C
+sub_08051F9C: @ 0x08051F9C
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ adds r6, r2, #0
+ mov r8, r3
+ ldr r5, _08051FE0 @ =gScreen
+ ldrh r2, [r5]
+ movs r4, #0xc0
+ lsls r4, r4, #7
+ ands r4, r2
+ bl sub_08052FF4
+ ldr r1, _08051FE4 @ =gRoomControls
+ ldrh r0, [r1, #6]
+ adds r0, r0, r6
+ movs r6, #0
+ strh r0, [r1, #0xa]
+ ldrh r0, [r1, #8]
+ add r0, r8
+ strh r0, [r1, #0xc]
+ bl sub_0807C740
+ ldr r1, _08051FE8 @ =gUnk_02000070
+ movs r0, #1
+ strb r0, [r1]
+ ldr r0, _08051FEC @ =gUsedPalettes
+ str r6, [r0]
+ ldrh r0, [r5]
+ orrs r4, r0
+ strh r4, [r5]
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_08051FE0: .4byte gScreen
+_08051FE4: .4byte gRoomControls
+_08051FE8: .4byte gUnk_02000070
+_08051FEC: .4byte gUsedPalettes
+
+ thumb_func_start sub_08051FF0
+sub_08051FF0: @ 0x08051FF0
+ push {lr}
+ ldr r0, _08052000 @ =gMenu
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r1]
+ ldrb r1, [r1, #1]
+ bl sub_0804B0B0
+ pop {pc}
+ .align 2, 0
+_08052000: .4byte gMenu
+
+ thumb_func_start sub_08052004
+sub_08052004: @ 0x08052004
+ ldr r1, _0805200C @ =gMenu
+ movs r0, #2
+ strb r0, [r1, #5]
+ bx lr
+ .align 2, 0
+_0805200C: .4byte gMenu
+
+ thumb_func_start sub_08052010
+sub_08052010: @ 0x08052010
+ push {r4, lr}
+ bl sub_080A3210
+ bl sub_08056418
+ movs r0, #1
+ bl sub_0801DA90
+ ldr r0, _0805207C @ =gUnk_02021F30
+ movs r4, #0x80
+ lsls r4, r4, #4
+ adds r1, r4, #0
+ bl _DmaZero
+ ldr r0, _08052080 @ =gUnk_020344B0
+ adds r1, r4, #0
+ bl _DmaZero
+ bl sub_080A4D34
+ movs r0, #0xa
+ bl LoadPaletteGroup
+ movs r0, #0
+ movs r1, #0
+ bl sub_0801D79C
+ movs r0, #4
+ bl LoadGfxGroup
+ movs r0, #0xc0
+ lsls r0, r0, #0x13
+ movs r1, #0x20
+ bl _DmaZero
+ ldr r0, _08052084 @ =gMenu
+ movs r1, #0x30
+ bl _DmaZero
+ ldr r1, _08052088 @ =gScreen
+ ldrh r2, [r1]
+ movs r3, #0x80
+ lsls r3, r3, #5
+ adds r0, r3, #0
+ orrs r0, r2
+ strh r0, [r1]
+ ldr r0, _0805208C @ =0x00001C01
+ strh r0, [r1, #0x14]
+ ldr r0, _08052090 @ =0x00001D05
+ strh r0, [r1, #0x20]
+ movs r0, #1
+ strh r0, [r1, #0x1a]
+ strh r0, [r1, #0x26]
+ pop {r4, pc}
+ .align 2, 0
+_0805207C: .4byte gUnk_02021F30
+_08052080: .4byte gUnk_020344B0
+_08052084: .4byte gMenu
+_08052088: .4byte gScreen
+_0805208C: .4byte 0x00001C01
+_08052090: .4byte 0x00001D05
+
+ thumb_func_start HandleGameOverScreen
+HandleGameOverScreen: @ 0x08052094
+ push {r4, lr}
+ ldr r1, _080520BC @ =gUnk_080FCA70
+ ldr r4, _080520C0 @ =gUnk_03001000
+ ldrb r0, [r4, #3]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldrb r0, [r4, #3]
+ cmp r0, #0
+ beq _080520B8
+ bl sub_080AD90C
+ bl sub_080523D4
+ bl sub_080AD918
+_080520B8:
+ pop {r4, pc}
+ .align 2, 0
+_080520BC: .4byte gUnk_080FCA70
+_080520C0: .4byte gUnk_03001000
+
+ thumb_func_start sub_080520C4
+sub_080520C4: @ 0x080520C4
+ push {lr}
+ ldr r1, _080520D4 @ =gUnk_03001000
+ strb r0, [r1, #3]
+ movs r0, #0
+ bl sub_080A7114
+ pop {pc}
+ .align 2, 0
+_080520D4: .4byte gUnk_03001000
+
+ thumb_func_start sub_080520D8
+sub_080520D8: @ 0x080520D8
+ push {r4, lr}
+ ldr r4, _08052118 @ =gFadeControl
+ ldrb r0, [r4]
+ cmp r0, #0
+ bne _08052114
+ bl sub_08052010
+ ldr r1, _0805211C @ =gMenu
+ movs r0, #0x50
+ strb r0, [r1, #0x10]
+ movs r2, #0x3c
+ movs r0, #0x3c
+ strh r0, [r1, #8]
+ ldr r0, _08052120 @ =gUnk_02002A40
+ adds r0, #0xaa
+ movs r1, #0x18
+ strb r1, [r0]
+ ldr r0, _08052124 @ =gUnk_03001000
+ strb r2, [r0, #5]
+ movs r0, #0xa
+ bl PlaySFX
+ movs r0, #4
+ bl sub_080500F4
+ ldr r0, _08052128 @ =0xFFFF0001
+ str r0, [r4, #4]
+ movs r0, #1
+ bl sub_080520C4
+_08052114:
+ pop {r4, pc}
+ .align 2, 0
+_08052118: .4byte gFadeControl
+_0805211C: .4byte gMenu
+_08052120: .4byte gUnk_02002A40
+_08052124: .4byte gUnk_03001000
+_08052128: .4byte 0xFFFF0001
+
+ thumb_func_start sub_0805212C
+sub_0805212C: @ 0x0805212C
+ push {r4, lr}
+ ldr r4, _0805214C @ =gFadeControl
+ ldrb r0, [r4]
+ cmp r0, #0
+ bne _0805219C
+ ldr r1, _08052150 @ =gUnk_03001000
+ ldrb r0, [r1, #5]
+ cmp r0, #0
+ bne _08052198
+ ldr r1, _08052154 @ =gMenu
+ ldrb r0, [r1, #0x10]
+ cmp r0, #0x25
+ bls _08052158
+ subs r0, #1
+ strb r0, [r1, #0x10]
+ b _0805219C
+ .align 2, 0
+_0805214C: .4byte gFadeControl
+_08052150: .4byte gUnk_03001000
+_08052154: .4byte gMenu
+_08052158:
+ ldrh r0, [r1, #8]
+ subs r0, #1
+ strh r0, [r1, #8]
+ lsls r0, r0, #0x10
+ cmp r0, #0
+ bne _0805219C
+ movs r0, #2
+ bl sub_080520C4
+ movs r0, #0
+ movs r1, #0
+ bl sub_08052418
+ ldr r2, _08052190 @ =gScreen
+ ldrh r0, [r2]
+ movs r3, #0xc0
+ lsls r3, r3, #3
+ adds r1, r3, #0
+ orrs r0, r1
+ strh r0, [r2]
+ ldr r0, _08052194 @ =0x0000FFFF
+ str r0, [r4, #4]
+ movs r0, #4
+ movs r1, #0x10
+ bl DoFade
+ b _0805219C
+ .align 2, 0
+_08052190: .4byte gScreen
+_08052194: .4byte 0x0000FFFF
+_08052198:
+ subs r0, #1
+ strb r0, [r1, #5]
+_0805219C:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start sub_080521A0
+sub_080521A0: @ 0x080521A0
+ push {r4, lr}
+ ldr r0, _080521C4 @ =gFadeControl
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _080521AC
+ b _080522E8
+_080521AC:
+ ldr r0, _080521C8 @ =gMenu
+ ldrb r1, [r0, #5]
+ adds r2, r0, #0
+ cmp r1, #4
+ bls _080521B8
+ b _080522D4
+_080521B8:
+ lsls r0, r1, #2
+ ldr r1, _080521CC @ =_080521D0
+ adds r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080521C4: .4byte gFadeControl
+_080521C8: .4byte gMenu
+_080521CC: .4byte _080521D0
+_080521D0: @ jump table
+ .4byte _080521E4 @ case 0
+ .4byte _08052208 @ case 1
+ .4byte _08052278 @ case 2
+ .4byte _080522B0 @ case 3
+ .4byte _080522D4 @ case 4
+_080521E4:
+ movs r1, #0
+ movs r0, #0x1e
+ strh r0, [r2, #8]
+ strb r1, [r2, #3]
+ movs r0, #1
+ bl sub_080A7114
+ movs r0, #0
+ movs r1, #0
+ bl sub_08052418
+ ldr r1, _08052204 @ =gFadeControl
+ movs r0, #1
+ rsbs r0, r0, #0
+ str r0, [r1, #4]
+ b _080522E8
+ .align 2, 0
+_08052204: .4byte gFadeControl
+_08052208:
+ ldrh r0, [r2, #8]
+ cmp r0, #0
+ bne _080522B6
+ ldrb r4, [r2, #3]
+ ldr r0, _08052224 @ =gUnk_03000FF0
+ ldrh r0, [r0, #2]
+ cmp r0, #0x40
+ beq _0805222E
+ cmp r0, #0x40
+ bgt _08052228
+ cmp r0, #1
+ beq _08052236
+ b _0805225A
+ .align 2, 0
+_08052224: .4byte gUnk_03000FF0
+_08052228:
+ cmp r0, #0x80
+ beq _08052232
+ b _0805225A
+_0805222E:
+ movs r4, #0
+ b _0805225A
+_08052232:
+ movs r4, #1
+ b _0805225A
+_08052236:
+ cmp r4, #0
+ beq _0805223E
+ movs r2, #4
+ b _08052248
+_0805223E:
+ movs r0, #8
+ movs r1, #0
+ bl sub_08050318
+ movs r2, #2
+_08052248:
+ ldr r1, _08052274 @ =gMenu
+ movs r0, #0x3c
+ strh r0, [r1, #8]
+ adds r0, r2, #0
+ bl sub_080A7114
+ movs r0, #0x6a
+ bl PlaySFX
+_0805225A:
+ ldr r1, _08052274 @ =gMenu
+ ldrb r0, [r1, #3]
+ cmp r0, r4
+ beq _080522E8
+ strb r4, [r1, #3]
+ movs r0, #0
+ adds r1, r4, #0
+ bl sub_08052418
+ movs r0, #0x69
+ bl PlaySFX
+ b _080522E8
+ .align 2, 0
+_08052274: .4byte gMenu
+_08052278:
+ movs r0, #0
+ bl sub_0807CDA4
+ adds r1, r0, #0
+ ldr r2, _08052298 @ =gMenu
+ strb r1, [r2]
+ movs r0, #1
+ rsbs r0, r0, #0
+ cmp r1, r0
+ beq _0805229C
+ cmp r1, #1
+ bne _080522E8
+ movs r0, #4
+ bl sub_080A7114
+ b _080522E8
+ .align 2, 0
+_08052298: .4byte gMenu
+_0805229C:
+ movs r0, #0x3c
+ strh r0, [r2, #8]
+ movs r0, #9
+ movs r1, #0
+ bl sub_08050318
+ movs r0, #3
+ bl sub_080A7114
+ b _080522E8
+_080522B0:
+ ldrh r0, [r2, #8]
+ cmp r0, #0
+ beq _080522BC
+_080522B6:
+ subs r0, #1
+ strh r0, [r2, #8]
+ b _080522E8
+_080522BC:
+ ldr r0, _080522D0 @ =gUnk_03000FF0
+ ldrh r1, [r0, #2]
+ movs r0, #0xb
+ ands r0, r1
+ cmp r0, #0
+ beq _080522E8
+ movs r0, #0
+ bl sub_080A7114
+ b _080522E8
+ .align 2, 0
+_080522D0: .4byte gUnk_03000FF0
+_080522D4:
+ ldr r2, _080522EC @ =gScreen
+ ldrh r1, [r2]
+ ldr r0, _080522F0 @ =0x0000FDFF
+ ands r0, r1
+ strh r0, [r2]
+ bl sub_08050384
+ movs r0, #3
+ bl sub_080520C4
+_080522E8:
+ pop {r4, pc}
+ .align 2, 0
+_080522EC: .4byte gScreen
+_080522F0: .4byte 0x0000FDFF
+
+ thumb_func_start sub_080522F4
+sub_080522F4: @ 0x080522F4
+ push {r4, lr}
+ ldr r0, _08052320 @ =gMenu
+ ldrb r1, [r0, #5]
+ adds r3, r0, #0
+ cmp r1, #1
+ beq _08052324
+ cmp r1, #1
+ bgt _080523AC
+ cmp r1, #0
+ bne _080523AC
+ movs r1, #0
+ movs r0, #0x1e
+ strh r0, [r3, #8]
+ strb r1, [r3, #3]
+ movs r0, #1
+ bl sub_080A7114
+ movs r0, #1
+ movs r1, #0
+ bl sub_08052418
+ b _080523CC
+ .align 2, 0
+_08052320: .4byte gMenu
+_08052324:
+ ldr r2, _08052340 @ =gScreen
+ ldrh r1, [r2]
+ movs r4, #0x80
+ lsls r4, r4, #2
+ adds r0, r4, #0
+ orrs r0, r1
+ strh r0, [r2]
+ ldrh r0, [r3, #8]
+ cmp r0, #0
+ beq _08052344
+ subs r0, #1
+ strh r0, [r3, #8]
+ b _080523CC
+ .align 2, 0
+_08052340: .4byte gScreen
+_08052344:
+ ldrb r4, [r3, #3]
+ ldr r0, _08052358 @ =gUnk_03000FF0
+ ldrh r0, [r0, #2]
+ cmp r0, #0x40
+ beq _08052362
+ cmp r0, #0x40
+ bgt _0805235C
+ cmp r0, #1
+ beq _0805236A
+ b _0805238C
+ .align 2, 0
+_08052358: .4byte gUnk_03000FF0
+_0805235C:
+ cmp r0, #0x80
+ beq _08052366
+ b _0805238C
+_08052362:
+ movs r4, #0
+ b _0805238C
+_08052366:
+ movs r4, #1
+ b _0805238C
+_0805236A:
+ movs r0, #2
+ bl sub_080A7114
+ movs r0, #0x6a
+ bl PlaySFX
+ cmp r4, #0
+ bne _08052384
+ movs r0, #5
+ movs r1, #8
+ bl DoFade
+ b _0805238C
+_08052384:
+ movs r0, #7
+ movs r1, #8
+ bl DoFade
+_0805238C:
+ ldr r1, _080523A8 @ =gMenu
+ ldrb r0, [r1, #3]
+ cmp r0, r4
+ beq _080523CC
+ strb r4, [r1, #3]
+ movs r0, #1
+ adds r1, r4, #0
+ bl sub_08052418
+ movs r0, #0x69
+ bl PlaySFX
+ b _080523CC
+ .align 2, 0
+_080523A8: .4byte gMenu
+_080523AC:
+ ldr r0, _080523C4 @ =gFadeControl
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _080523CC
+ ldrb r0, [r3, #3]
+ cmp r0, #0
+ bne _080523C8
+ movs r0, #2
+ bl InitScreen
+ b _080523CC
+ .align 2, 0
+_080523C4: .4byte gFadeControl
+_080523C8:
+ bl DoSoftReset
+_080523CC:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start nullsub_107
+nullsub_107: @ 0x080523D0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start sub_080523D4
+sub_080523D4: @ 0x080523D4
+ push {r4, r5, r6, lr}
+ ldr r1, _08052408 @ =gUnk_03001010
+ movs r0, #0
+ strh r0, [r1, #4]
+ strh r0, [r1, #6]
+ movs r0, #0x86
+ lsls r0, r0, #8
+ strh r0, [r1, #8]
+ ldr r0, _0805240C @ =gMenu
+ ldrb r0, [r0, #0x10]
+ strh r0, [r1, #2]
+ movs r4, #0
+ adds r6, r1, #0
+ ldr r5, _08052410 @ =gUnk_080FCA84
+_080523F0:
+ adds r0, r4, r5
+ ldrb r0, [r0]
+ strh r0, [r6]
+ ldr r0, _08052414 @ =0x000001FD
+ adds r1, r4, #0
+ bl sub_080ADA14
+ adds r4, #1
+ cmp r4, #7
+ bls _080523F0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_08052408: .4byte gUnk_03001010
+_0805240C: .4byte gMenu
+_08052410: .4byte gUnk_080FCA84
+_08052414: .4byte 0x000001FD
diff --git a/asm/code_08050038.s b/asm/code_08050038.s
index 1751d8d8..6f789d02 100644
--- a/asm/code_08050038.s
+++ b/asm/code_08050038.s
@@ -250,4070 +250,3 @@ _08050314:
movs r0, #1
_08050316:
pop {r4, pc}
-
- thumb_func_start sub_08050318
-sub_08050318: @ 0x08050318
- push {r4, r5, r6, lr}
- sub sp, #0x18
- adds r6, r0, #0
- adds r4, r1, #0
- bl sub_08050384
- ldr r0, _08050374 @ =gUnk_080FC844
- mov r1, sp
- movs r2, #0x18
- bl sub_0801D66C
- ldr r1, _08050378 @ =gUnk_020227E8
- adds r0, r4, #0
- bl sub_08056FEC
- mov r2, sp
- mov r1, sp
- ldr r5, _0805037C @ =gUnk_080FC85C
- lsls r4, r6, #1
- adds r4, r4, r6
- lsls r4, r4, #1
- adds r0, r4, r5
- ldrh r0, [r0]
- lsls r0, r0, #0xc
- ldrh r1, [r1, #0x10]
- orrs r0, r1
- strh r0, [r2, #0x10]
- adds r0, r5, #2
- adds r0, r4, r0
- ldrh r0, [r0]
- mov r1, sp
- bl sub_0805F46C
- adds r5, #4
- adds r4, r4, r5
- ldrh r0, [r4]
- cmp r0, #0
- beq _08050368
- bl PlaySFX
-_08050368:
- ldr r1, _08050380 @ =gScreen
- movs r0, #1
- strh r0, [r1, #0xe]
- add sp, #0x18
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08050374: .4byte gUnk_080FC844
-_08050378: .4byte gUnk_020227E8
-_0805037C: .4byte gUnk_080FC85C
-_08050380: .4byte gScreen
-
- thumb_func_start sub_08050384
-sub_08050384: @ 0x08050384
- push {lr}
- movs r0, #0
- movs r1, #0
- bl sub_0801C4A0
- ldr r0, _080503A0 @ =gUnk_02034CB0
- movs r1, #0x80
- lsls r1, r1, #4
- bl _DmaZero
- ldr r1, _080503A4 @ =gScreen
- movs r0, #1
- strh r0, [r1, #0xe]
- pop {pc}
- .align 2, 0
-_080503A0: .4byte gUnk_02034CB0
-_080503A4: .4byte gScreen
-
- thumb_func_start sub_080503A8
-sub_080503A8: @ 0x080503A8
- push {lr}
- bl LoadGfxGroup
- ldr r1, _080503B8 @ =gScreen
- movs r0, #1
- strh r0, [r1, #0x1a]
- strh r0, [r1, #0x26]
- pop {pc}
- .align 2, 0
-_080503B8: .4byte gScreen
-
- thumb_func_start sub_080503BC
-sub_080503BC: @ 0x080503BC
- push {r4, lr}
- ldr r1, _080503D8 @ =gUnk_02032EC0
- strb r0, [r1, #4]
- ldr r0, _080503DC @ =gUnk_02034CB0
- movs r4, #0x80
- lsls r4, r4, #4
- adds r1, r4, #0
- bl _DmaZero
- ldr r0, _080503E0 @ =gUnk_02021F30
- adds r1, r4, #0
- bl _DmaZero
- pop {r4, pc}
- .align 2, 0
-_080503D8: .4byte gUnk_02032EC0
-_080503DC: .4byte gUnk_02034CB0
-_080503E0: .4byte gUnk_02021F30
-
- thumb_func_start sub_080503E4
-sub_080503E4: @ 0x080503E4
- push {lr}
- adds r1, r0, #0
- cmp r1, #2
- bls _080503F2
- movs r2, #1
- movs r1, #1
- b _080503FE
-_080503F2:
- ldr r0, _08050410 @ =0x000004B4
- muls r0, r1, r0
- ldr r1, _08050414 @ =gUnk_02019EEC
- adds r0, r0, r1
- ldrb r2, [r0, #2]
- ldrb r1, [r0, #3]
-_080503FE:
- movs r0, #0x80
- lsls r0, r0, #0x12
- strb r2, [r0, #5]
- strb r1, [r0, #6]
- ldr r1, _08050418 @ =gUsedPalettes
- movs r0, #1
- rsbs r0, r0, #0
- str r0, [r1]
- pop {pc}
- .align 2, 0
-_08050410: .4byte 0x000004B4
-_08050414: .4byte gUnk_02019EEC
-_08050418: .4byte gUsedPalettes
-
- thumb_func_start sub_0805041C
-sub_0805041C: @ 0x0805041C
- push {r4, lr}
- adds r4, r0, #0
- cmp r4, #2
- bhi _0805043A
- movs r0, #0x80
- lsls r0, r0, #0x12
- strb r4, [r0, #4]
- ldr r2, _08050444 @ =0x000004B4
- adds r0, r4, #0
- muls r0, r2, r0
- ldr r1, _08050448 @ =gUnk_02019EEC
- adds r0, r0, r1
- ldr r1, _0805044C @ =gUnk_02002A40
- bl sub_0801D66C
-_0805043A:
- adds r0, r4, #0
- bl sub_080503E4
- pop {r4, pc}
- .align 2, 0
-_08050444: .4byte 0x000004B4
-_08050448: .4byte gUnk_02019EEC
-_0805044C: .4byte gUnk_02002A40
-
- thumb_func_start HandleChooseFileScreen
-HandleChooseFileScreen: @ 0x08050450
- push {r4, lr}
- bl sub_080AD90C
- ldr r1, _080504D8 @ =gUnk_080FC8A4
- ldr r0, _080504DC @ =gUnk_03001000
- ldrb r0, [r0, #3]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldr r4, _080504E0 @ =gUnk_02032EC0
- ldrb r1, [r4, #4]
- ldrb r0, [r4, #2]
- cmp r0, r1
- beq _0805048A
- movs r0, #0
- strb r1, [r4, #2]
- ldr r1, _080504E4 @ =gScreen
- strh r0, [r1, #0xa]
- strh r0, [r1, #0xc]
- strh r0, [r1, #0x16]
- strh r0, [r1, #0x18]
- strh r0, [r1, #0x22]
- strh r0, [r1, #0x24]
- ldr r0, _080504E8 @ =gMenu
- movs r1, #0x30
- bl _DmaZero
-_0805048A:
- bl sub_080507FC
- ldr r1, _080504EC @ =gUnk_080FC8B0
- ldrb r0, [r4, #2]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldr r4, _080504F0 @ =gUnk_02019EE0
- movs r0, #0
- strb r0, [r4]
- bl sub_0805E5C0
- bl sub_0805066C
- bl sub_0801C1D4
- bl sub_0801C208
- bl sub_080AD9B0
- bl sub_080AD918
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r1, [r0, #7]
- ldrb r0, [r4, #3]
- cmp r0, r1
- beq _080504D4
- strb r1, [r4, #3]
- movs r0, #6
- bl sub_080503A8
- movs r0, #0xf
- bl sub_080503A8
-_080504D4:
- pop {r4, pc}
- .align 2, 0
-_080504D8: .4byte gUnk_080FC8A4
-_080504DC: .4byte gUnk_03001000
-_080504E0: .4byte gUnk_02032EC0
-_080504E4: .4byte gScreen
-_080504E8: .4byte gMenu
-_080504EC: .4byte gUnk_080FC8B0
-_080504F0: .4byte gUnk_02019EE0
-
- thumb_func_start sub_080504F4
-sub_080504F4: @ 0x080504F4
- push {r4, lr}
- movs r0, #1
- bl sub_0801DA90
- bl sub_080A3210
- movs r0, #0xc0
- lsls r0, r0, #0x13
- movs r1, #0x80
- bl _DmaZero
- bl sub_08056418
- bl EraseAllEntities
- bl sub_08080668
- bl sub_080ADD30
- movs r0, #0
- bl sub_0801CFA8
- ldr r0, _080505DC @ =gUnk_0200AF00
- movs r1, #0xcd
- lsls r1, r1, #2
- bl _DmaZero
- ldr r4, _080505E0 @ =gUnk_02019EE0
- ldr r1, _080505E4 @ =0x00000E28
- adds r0, r4, #0
- bl _DmaZero
- movs r0, #7
- strb r0, [r4, #3]
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r0, [r0, #7]
- movs r1, #0
- cmp r0, #1
- bls _08050546
- movs r1, #3
-_08050546:
- strb r1, [r4, #6]
- ldr r4, _080505E8 @ =gUnk_02032EC0
- movs r1, #0xed
- lsls r1, r1, #2
- adds r0, r4, #0
- bl _DmaZero
- movs r0, #8
- strb r0, [r4, #2]
- movs r0, #0
- bl sub_080503BC
- bl sub_0805616C
- movs r0, #0
- bl sub_08050624
- movs r0, #1
- bl sub_08050624
- movs r0, #2
- bl sub_08050624
- bl sub_08056208
- movs r0, #5
- bl sub_080503A8
- movs r0, #9
- bl LoadPaletteGroup
- movs r4, #0
-_08050586:
- movs r0, #0x48
- adds r1, r4, #0
- movs r2, #0
- bl CreateObject
- adds r4, #1
- cmp r4, #0x19
- bls _08050586
- ldr r0, _080505EC @ =gUnk_080FC8D0
- bl sub_080A70AC
- bl sub_080507FC
- ldr r1, _080505F0 @ =gScreen
- ldrh r2, [r1]
- movs r3, #0xf8
- lsls r3, r3, #5
- adds r0, r3, #0
- orrs r0, r2
- strh r0, [r1]
- ldr r0, _080505F4 @ =0x00001E0B
- strh r0, [r1, #0x2c]
- adds r2, r1, #0
- adds r2, #0x66
- ldr r0, _080505F8 @ =0x00000844
- strh r0, [r2]
- adds r1, #0x68
- ldr r0, _080505FC @ =0x00000A0F
- strh r0, [r1]
- ldr r0, _08050600 @ =gUnk_02024490
- movs r1, #1
- strb r1, [r0]
- ldr r0, _08050604 @ =gUnk_03001000
- strb r1, [r0, #3]
- movs r0, #7
- bl PlaySFX
- movs r0, #4
- movs r1, #8
- bl DoFade
- pop {r4, pc}
- .align 2, 0
-_080505DC: .4byte gUnk_0200AF00
-_080505E0: .4byte gUnk_02019EE0
-_080505E4: .4byte 0x00000E28
-_080505E8: .4byte gUnk_02032EC0
-_080505EC: .4byte gUnk_080FC8D0
-_080505F0: .4byte gScreen
-_080505F4: .4byte 0x00001E0B
-_080505F8: .4byte 0x00000844
-_080505FC: .4byte 0x00000A0F
-_08050600: .4byte gUnk_02024490
-_08050604: .4byte gUnk_03001000
-
- thumb_func_start nullsub_479
-nullsub_479: @ 0x08050608
- bx lr
- .align 2, 0
-
- thumb_func_start sub_0805060C
-sub_0805060C: @ 0x0805060C
- push {lr}
- ldr r0, _08050620 @ =gFadeControl
- ldrb r0, [r0]
- cmp r0, #0
- bne _0805061C
- movs r0, #2
- bl InitScreen
-_0805061C:
- pop {pc}
- .align 2, 0
-_08050620: .4byte gFadeControl
-
- thumb_func_start sub_08050624
-sub_08050624: @ 0x08050624
- push {r4, r5, lr}
- adds r4, r0, #0
- ldr r0, _08050648 @ =0x000004B4
- adds r1, r4, #0
- muls r1, r0, r1
- ldr r0, _0805064C @ =gUnk_02019EEC
- adds r1, r1, r0
- adds r0, r4, #0
- bl sub_0807CF28
- adds r5, r0, #0
- movs r0, #1
- rsbs r0, r0, #0
- cmp r5, r0
- beq _08050650
- cmp r5, #0
- beq _08050656
- b _0805065C
- .align 2, 0
-_08050648: .4byte 0x000004B4
-_0805064C: .4byte gUnk_02019EEC
-_08050650:
- adds r0, r4, #0
- bl sub_0807CF48
-_08050656:
- adds r0, r4, #0
- bl sub_0805194C
-_0805065C:
- ldr r0, _08050668 @ =gUnk_02019EE0
- adds r0, #8
- adds r0, r4, r0
- strb r5, [r0]
- pop {r4, r5, pc}
- .align 2, 0
-_08050668: .4byte gUnk_02019EE0
-
- thumb_func_start sub_0805066C
-sub_0805066C: @ 0x0805066C
- push {r4, lr}
- movs r1, #0
- ldr r4, _080506F0 @ =gUnk_02019EE0
- ldrb r0, [r4, #1]
- subs r0, #1
- strb r0, [r4, #1]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _08050690
- movs r0, #0x10
- strb r0, [r4, #1]
- ldrb r0, [r4, #2]
- adds r0, #1
- movs r1, #0xf
- bl __modsi3
- strb r0, [r4, #2]
- movs r1, #1
-_08050690:
- ldrb r0, [r4, #2]
- cmp r0, #0
- bne _080506AA
- movs r0, #1
- strb r0, [r4, #2]
- bl Random
- movs r1, #7
- ands r1, r0
- lsls r1, r1, #4
- adds r1, #8
- strb r1, [r4, #1]
- movs r1, #1
-_080506AA:
- cmp r1, #0
- beq _080506EE
- ldr r1, _080506F4 @ =gUnk_080FC8DE
- ldrb r0, [r4, #2]
- lsls r0, r0, #1
- adds r0, r0, r1
- ldrh r4, [r0]
- ldr r0, _080506F8 @ =gGlobalGfxAndPalettes
- adds r4, r4, r0
- ldr r1, _080506FC @ =0x00011AA0
- adds r0, r4, r1
- movs r1, #0xb
- movs r2, #1
- bl LoadPalettes
- ldr r1, _08050700 @ =0x00011BA0
- adds r0, r4, r1
- movs r1, #0xc
- movs r2, #1
- bl LoadPalettes
- ldr r1, _08050704 @ =0x00011CA0
- adds r0, r4, r1
- movs r1, #0xd
- movs r2, #1
- bl LoadPalettes
- ldr r0, _08050708 @ =0x00011DA0
- adds r4, r4, r0
- adds r0, r4, #0
- movs r1, #0xe
- movs r2, #1
- bl LoadPalettes
-_080506EE:
- pop {r4, pc}
- .align 2, 0
-_080506F0: .4byte gUnk_02019EE0
-_080506F4: .4byte gUnk_080FC8DE
-_080506F8: .4byte gGlobalGfxAndPalettes
-_080506FC: .4byte 0x00011AA0
-_08050700: .4byte 0x00011BA0
-_08050704: .4byte 0x00011CA0
-_08050708: .4byte 0x00011DA0
-
- thumb_func_start sub_0805070C
-sub_0805070C: @ 0x0805070C
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- bl sub_0805F2C8
- adds r5, r0, #0
- cmp r5, #0
- beq _0805077A
- movs r0, #0
- strb r0, [r5, #2]
- movs r0, #5
- strb r0, [r5, #3]
- movs r0, #1
- strb r0, [r5, #1]
- movs r0, #0x30
- strh r0, [r5, #4]
- ldr r0, _08050780 @ =gUnk_02000D00
- str r0, [r5, #8]
- movs r6, #0
-_08050732:
- movs r0, #0
- strh r0, [r5, #6]
- ldr r0, [r5, #8]
- movs r1, #0x80
- lsls r1, r1, #2
- bl _DmaZero
- ldr r0, _08050784 @ =0x000004B4
- adds r1, r6, #0
- muls r1, r0, r1
- ldr r0, _08050788 @ =gUnk_02019F6C
- adds r7, r1, r0
- movs r4, #0
- lsls r0, r6, #9
- mov r8, r0
- adds r6, #1
-_08050752:
- adds r0, r7, r4
- ldrb r0, [r0]
- adds r1, r5, #0
- bl sub_0805F7DC
- adds r4, #1
- cmp r4, #5
- ble _08050752
- ldr r0, [r5, #8]
- ldr r1, _0805078C @ =0x06014000
- add r1, r8
- movs r2, #0x80
- lsls r2, r2, #2
- bl sub_0801D66C
- cmp r6, #2
- bls _08050732
- adds r0, r5, #0
- bl sub_0805F300
-_0805077A:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08050780: .4byte gUnk_02000D00
-_08050784: .4byte 0x000004B4
-_08050788: .4byte gUnk_02019F6C
-_0805078C: .4byte 0x06014000
-
- thumb_func_start sub_08050790
-sub_08050790: @ 0x08050790
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- bl sub_0805F2C8
- adds r6, r0, #0
- cmp r6, #0
- beq _080507F0
- movs r0, #0
- strb r0, [r6, #2]
- movs r0, #5
- strb r0, [r6, #3]
- movs r0, #1
- strb r0, [r6, #1]
- movs r0, #0x80
- strh r0, [r6, #4]
- ldr r0, _080507F8 @ =gUnk_02000D00
- str r0, [r6, #8]
- movs r1, #0
-_080507B6:
- movs r0, #0
- strh r0, [r6, #6]
- lsls r4, r1, #4
- movs r5, #0
- lsls r7, r1, #0xa
- adds r1, #1
- mov r8, r1
-_080507C4:
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_0805F7DC
- adds r4, #1
- adds r5, #1
- cmp r5, #0xf
- bls _080507C4
- movs r0, #0xc0
- lsls r0, r0, #0x13
- adds r1, r7, r0
- ldr r0, _080507F8 @ =gUnk_02000D00
- movs r2, #0x80
- lsls r2, r2, #3
- bl sub_0801D66C
- mov r1, r8
- cmp r1, #0xf
- bls _080507B6
- adds r0, r6, #0
- bl sub_0805F300
-_080507F0:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_080507F8: .4byte gUnk_02000D00
-
- thumb_func_start sub_080507FC
-sub_080507FC: @ 0x080507FC
- ldr r0, _0805080C @ =gUnk_0200AF00
- movs r1, #0xa0
- lsls r1, r1, #1
- strh r1, [r0, #0x1a]
- movs r1, #0x24
- strh r1, [r0, #0x20]
- bx lr
- .align 2, 0
-_0805080C: .4byte gUnk_0200AF00
-
- thumb_func_start sub_08050810
-sub_08050810: @ 0x08050810
- ldr r0, _0805081C @ =gUnk_0200AF00
- movs r1, #0xd0
- strh r1, [r0, #0x1a]
- movs r1, #0x24
- strh r1, [r0, #0x20]
- bx lr
- .align 2, 0
-_0805081C: .4byte gUnk_0200AF00
-
- thumb_func_start sub_08050820
-sub_08050820: @ 0x08050820
- push {lr}
- ldr r1, _0805083C @ =gUnk_080FC8FC
- ldr r0, _08050840 @ =gMenu
- ldrb r0, [r0, #5]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, _08050844 @ =gUnk_02019EE0
- ldrb r0, [r0, #6]
- bl sub_08050A64
- pop {pc}
- .align 2, 0
-_0805083C: .4byte gUnk_080FC8FC
-_08050840: .4byte gMenu
-_08050844: .4byte gUnk_02019EE0
-
- thumb_func_start sub_08050848
-sub_08050848: @ 0x08050848
- push {lr}
- movs r0, #7
- bl sub_080503A8
- bl sub_0805070C
- ldr r0, _08050868 @ =gUnk_02019EE0
- movs r1, #0
- strb r1, [r0, #7]
- ldrb r0, [r0, #6]
- bl sub_08050AFC
- movs r0, #1
- bl sub_080A7114
- pop {pc}
- .align 2, 0
-_08050868: .4byte gUnk_02019EE0
-
- thumb_func_start sub_0805086C
-sub_0805086C: @ 0x0805086C
- push {lr}
- ldr r1, _08050880 @ =gUnk_080FC908
- ldr r0, _08050884 @ =gMenu
- ldrb r0, [r0, #6]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {pc}
- .align 2, 0
-_08050880: .4byte gUnk_080FC908
-_08050884: .4byte gMenu
-
- thumb_func_start sub_08050888
-sub_08050888: @ 0x08050888
- push {r4, lr}
- ldr r0, _080508C4 @ =gFadeControl
- ldrb r0, [r0]
- cmp r0, #0
- bne _080508DC
- ldr r4, _080508C8 @ =gUnk_02019EE0
- ldrb r1, [r4, #7]
- adds r0, r4, #0
- adds r0, #8
- adds r0, r1, r0
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #0
- beq _080508D0
- cmp r0, #1
- beq _080508D6
- adds r0, r1, #0
- bl sub_0805194C
- ldrb r1, [r4, #7]
- adds r1, #1
- movs r0, #0
- bl sub_08050318
- ldr r1, _080508CC @ =gMenu
- movs r0, #0x1e
- strh r0, [r1, #8]
- movs r0, #1
- b _080508DA
- .align 2, 0
-_080508C4: .4byte gFadeControl
-_080508C8: .4byte gUnk_02019EE0
-_080508CC: .4byte gMenu
-_080508D0:
- adds r0, r1, #0
- bl sub_0805194C
-_080508D6:
- ldr r1, _080508E0 @ =gMenu
- movs r0, #2
-_080508DA:
- strb r0, [r1, #6]
-_080508DC:
- pop {r4, pc}
- .align 2, 0
-_080508E0: .4byte gMenu
-
- thumb_func_start sub_080508E4
-sub_080508E4: @ 0x080508E4
- push {lr}
- ldr r2, _08050900 @ =gMenu
- ldrh r0, [r2, #8]
- cmp r0, #0
- bne _08050908
- ldr r0, _08050904 @ =gUnk_03000FF0
- ldrh r1, [r0, #2]
- movs r0, #9
- ands r0, r1
- cmp r0, #0
- beq _0805090C
- movs r0, #2
- strb r0, [r2, #6]
- b _0805090C
- .align 2, 0
-_08050900: .4byte gMenu
-_08050904: .4byte gUnk_03000FF0
-_08050908:
- subs r0, #1
- strh r0, [r2, #8]
-_0805090C:
- pop {pc}
- .align 2, 0
-
- thumb_func_start sub_08050910
-sub_08050910: @ 0x08050910
- push {lr}
- bl sub_08050384
- ldr r1, _08050930 @ =gUnk_02019EE0
- ldrb r0, [r1, #7]
- adds r0, #1
- strb r0, [r1, #7]
- lsls r0, r0, #0x18
- lsrs r0, r0, #0x18
- cmp r0, #2
- bls _08050934
- movs r0, #2
- bl sub_080A7114
- b _0805093A
- .align 2, 0
-_08050930: .4byte gUnk_02019EE0
-_08050934:
- ldr r1, _0805093C @ =gMenu
- movs r0, #0
- strb r0, [r1, #6]
-_0805093A:
- pop {pc}
- .align 2, 0
-_0805093C: .4byte gMenu
-
- thumb_func_start sub_08050940
-sub_08050940: @ 0x08050940
- push {r4, r5, r6, lr}
- ldr r3, _0805099C @ =gUnk_02019EE0
- ldrb r0, [r3]
- cmp r0, #0
- beq _0805094C
- b _08050A58
-_0805094C:
- ldrb r4, [r3, #6]
- ldr r0, _080509A0 @ =gUnk_03000FF0
- ldrh r2, [r0, #2]
- ldrh r1, [r0]
- movs r0, #0x80
- lsls r0, r0, #2
- ands r0, r1
- cmp r0, #0
- beq _08050974
- adds r0, r3, #0
- adds r0, #8
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #1
- bne _08050974
- movs r0, #0xc1
- rsbs r0, r0, #0
- ands r2, r0
-_08050974:
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r0, [r0, #7]
- movs r6, #3
- cmp r0, #1
- bls _08050982
- movs r6, #4
-_08050982:
- ldr r0, _080509A4 @ =gUnk_02032EC0
- ldrb r5, [r0, #2]
- adds r1, r0, #0
- cmp r2, #0x40
- beq _080509B6
- cmp r2, #0x40
- bhi _080509A8
- cmp r2, #1
- beq _080509E0
- cmp r2, #8
- beq _080509E0
- b _08050A10
- .align 2, 0
-_0805099C: .4byte gUnk_02019EE0
-_080509A0: .4byte gUnk_03000FF0
-_080509A4: .4byte gUnk_02032EC0
-_080509A8:
- cmp r2, #0x80
- beq _080509BE
- movs r0, #0x80
- lsls r0, r0, #1
- cmp r2, r0
- beq _080509C8
- b _08050A10
-_080509B6:
- cmp r4, #0
- ble _08050A10
- subs r4, #1
- b _08050A10
-_080509BE:
- subs r0, r6, #1
- cmp r0, r4
- ble _08050A10
- adds r4, #1
- b _08050A10
-_080509C8:
- ldr r0, _080509DC @ =gUnk_02019EE0
- adds r0, #8
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #1
- bne _08050A10
- movs r5, #3
- b _08050A10
- .align 2, 0
-_080509DC: .4byte gUnk_02019EE0
-_080509E0:
- adds r0, r4, #0
- bl sub_0805041C
- cmp r4, #3
- bne _080509EE
- movs r5, #2
- b _08050A0E
-_080509EE:
- ldr r0, _08050A04 @ =gUnk_02019EE0
- adds r0, #8
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #0
- beq _08050A08
- cmp r0, #1
- beq _08050A0C
- b _08050A0E
- .align 2, 0
-_08050A04: .4byte gUnk_02019EE0
-_08050A08:
- movs r5, #1
- b _08050A0E
-_08050A0C:
- movs r5, #4
-_08050A0E:
- ldr r1, _08050A5C @ =gUnk_02032EC0
-_08050A10:
- ldrb r0, [r1, #2]
- cmp r0, r5
- beq _08050A22
- adds r0, r5, #0
- bl sub_080503BC
- movs r0, #0x6a
- bl PlaySFX
-_08050A22:
- adds r0, r4, r6
- adds r1, r6, #0
- bl __modsi3
- adds r4, r0, #0
- ldr r5, _08050A60 @ =gUnk_02019EE0
- ldrb r0, [r5, #6]
- cmp r0, r4
- beq _08050A42
- strb r4, [r5, #6]
- adds r0, r4, #0
- bl sub_08050AFC
- movs r0, #0x69
- bl PlaySFX
-_08050A42:
- adds r0, r5, #0
- adds r0, #8
- ldrb r5, [r5, #6]
- adds r0, r0, r5
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #1
- bne _08050A58
- bl sub_08050810
-_08050A58:
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08050A5C: .4byte gUnk_02032EC0
-_08050A60: .4byte gUnk_02019EE0
-
- thumb_func_start sub_08050A64
-sub_08050A64: @ 0x08050A64
- push {r4, lr}
- ldr r1, _08050AF0 @ =gUnk_02019EE0
- adds r1, #8
- adds r0, r0, r1
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #1
- bne _08050AEC
- ldr r4, _08050AF4 @ =gUnk_03001010
- movs r0, #0
- strh r0, [r4, #4]
- strh r0, [r4, #6]
- movs r0, #0x80
- lsls r0, r0, #3
- strh r0, [r4, #8]
- movs r0, #0x40
- bl GetInventoryValue
- cmp r0, #0
- beq _08050A9E
- movs r0, #0xa2
- strh r0, [r4]
- movs r0, #0x36
- strh r0, [r4, #2]
- ldr r0, _08050AF8 @ =0x00000145
- movs r1, #0x24
- bl sub_080ADA14
-_08050A9E:
- movs r0, #0x41
- bl GetInventoryValue
- cmp r0, #0
- beq _08050AB8
- movs r0, #0x96
- strh r0, [r4]
- movs r0, #0x3d
- strh r0, [r4, #2]
- ldr r0, _08050AF8 @ =0x00000145
- movs r1, #0x22
- bl sub_080ADA14
-_08050AB8:
- movs r0, #0x42
- bl GetInventoryValue
- cmp r0, #0
- beq _08050AD2
- movs r0, #0xae
- strh r0, [r4]
- movs r0, #0x3d
- strh r0, [r4, #2]
- ldr r0, _08050AF8 @ =0x00000145
- movs r1, #0x23
- bl sub_080ADA14
-_08050AD2:
- movs r0, #0x43
- bl GetInventoryValue
- cmp r0, #0
- beq _08050AEC
- movs r0, #0xa2
- strh r0, [r4]
- movs r0, #0x44
- strh r0, [r4, #2]
- ldr r0, _08050AF8 @ =0x00000145
- movs r1, #0x21
- bl sub_080ADA14
-_08050AEC:
- pop {r4, pc}
- .align 2, 0
-_08050AF0: .4byte gUnk_02019EE0
-_08050AF4: .4byte gUnk_03001010
-_08050AF8: .4byte 0x00000145
-
- thumb_func_start sub_08050AFC
-sub_08050AFC: @ 0x08050AFC
- push {r4, r5, lr}
- adds r4, r0, #0
- bl sub_0805041C
- ldr r5, _08050B30 @ =gUnk_02021F30
- movs r1, #0x80
- lsls r1, r1, #4
- adds r0, r5, #0
- bl _DmaZero
- ldr r0, _08050B34 @ =gUnk_02019EE0
- adds r0, #8
- adds r4, r4, r0
- movs r0, #0
- ldrsb r0, [r4, r0]
- cmp r0, #1
- bne _08050B28
- movs r1, #0xa7
- lsls r1, r1, #2
- adds r0, r5, r1
- bl sub_08050B3C
-_08050B28:
- ldr r1, _08050B38 @ =gScreen
- movs r0, #1
- strh r0, [r1, #0x1a]
- pop {r4, r5, pc}
- .align 2, 0
-_08050B30: .4byte gUnk_02021F30
-_08050B34: .4byte gUnk_02019EE0
-_08050B38: .4byte gScreen
-
- thumb_func_start sub_08050B3C
-sub_08050B3C: @ 0x08050B3C
- push {r4, r5, r6, r7, lr}
- mov r7, sl
- mov r6, sb
- mov r5, r8
- push {r5, r6, r7}
- sub sp, #8
- str r0, [sp]
- ldr r1, _08050C18 @ =gUnk_02002A40
- adds r0, r1, #0
- adds r0, #0xaa
- ldrb r0, [r0]
- lsrs r2, r0, #1
- cmp r2, #0
- bne _08050B5A
- movs r2, #1
-_08050B5A:
- adds r0, r1, #0
- adds r0, #0xab
- ldrb r0, [r0]
- lsrs r3, r0, #1
- cmp r3, #0
- beq _08050C0A
- cmp r2, r3
- ble _08050B6C
- adds r2, r3, #0
-_08050B6C:
- movs r0, #3
- ands r0, r2
- str r0, [sp, #4]
- adds r0, r2, #0
- asrs r5, r0, #2
- mov ip, r5
- cmp r5, #0xa
- ble _08050B80
- movs r2, #0xa
- mov ip, r2
-_08050B80:
- adds r6, r5, #0
- subs r6, #0xa
- mov sb, r6
- cmp r6, #0
- bge _08050B8E
- movs r7, #0
- mov sb, r7
-_08050B8E:
- adds r0, r3, #0
- asrs r3, r0, #2
- adds r0, r3, #0
- cmp r3, #0xa
- ble _08050B9A
- movs r3, #0xa
-_08050B9A:
- adds r4, r0, #0
- subs r4, #0xa
- ldr r2, [sp]
- ldr r0, _08050C1C @ =0x0000F24C
- mov sl, r0
- strh r0, [r2]
- ldr r1, _08050C20 @ =0x040000D4
- movs r7, #0xa
- mov r8, r7
- mov r0, r8
- mov r7, ip
- subs r0, r0, r7
- lsls r0, r0, #1
- ldr r7, _08050C24 @ =gUnk_080FC914
- mov ip, r7
- add r0, ip
- str r0, [r1]
- adds r0, r2, #2
- str r0, [r1, #4]
- movs r0, #0x80
- lsls r0, r0, #0x18
- orrs r3, r0
- str r3, [r1, #8]
- ldr r0, [r1, #8]
- cmp r4, #0
- ble _08050BEE
- adds r2, #0x40
- mov r3, sl
- strh r3, [r2]
- mov r7, r8
- mov r3, sb
- subs r0, r7, r3
- lsls r0, r0, #1
- add r0, ip
- str r0, [r1]
- adds r0, r2, #2
- str r0, [r1, #4]
- movs r7, #0x80
- lsls r7, r7, #0x18
- orrs r4, r7
- str r4, [r1, #8]
- ldr r0, [r1, #8]
-_08050BEE:
- ldr r0, [sp, #4]
- cmp r0, #0
- beq _08050C0A
- ldr r2, [sp]
- cmp r5, #9
- ble _08050BFE
- adds r5, r6, #0
- adds r2, #0x40
-_08050BFE:
- lsls r0, r5, #1
- adds r0, r0, r2
- ldr r2, [sp, #4]
- ldr r3, _08050C28 @ =0xFFFFF24D
- adds r1, r2, r3
- strh r1, [r0, #2]
-_08050C0A:
- add sp, #8
- pop {r3, r4, r5}
- mov r8, r3
- mov sb, r4
- mov sl, r5
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08050C18: .4byte gUnk_02002A40
-_08050C1C: .4byte 0x0000F24C
-_08050C20: .4byte 0x040000D4
-_08050C24: .4byte gUnk_080FC914
-_08050C28: .4byte 0xFFFFF24D
-
- thumb_func_start sub_08050C2C
-sub_08050C2C: @ 0x08050C2C
- push {lr}
- ldr r1, _08050C48 @ =gUnk_080FC93C
- ldr r0, _08050C4C @ =gMenu
- ldrb r0, [r0, #5]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, _08050C50 @ =gUnk_02019EE0
- ldrb r0, [r0, #6]
- bl sub_08050A64
- pop {pc}
- .align 2, 0
-_08050C48: .4byte gUnk_080FC93C
-_08050C4C: .4byte gMenu
-_08050C50: .4byte gUnk_02019EE0
-
- thumb_func_start sub_08050C54
-sub_08050C54: @ 0x08050C54
- push {r4, lr}
- ldr r0, _08050C78 @ =gUnk_02019EE0
- ldrb r0, [r0]
- cmp r0, #0
- beq _08050C60
- b _08050D60
-_08050C60:
- ldr r0, _08050C7C @ =gMenu
- ldrb r4, [r0, #1]
- ldr r0, _08050C80 @ =gUnk_03000FF0
- ldrh r0, [r0, #2]
- subs r0, #1
- cmp r0, #0x1f
- bhi _08050D44
- lsls r0, r0, #2
- ldr r1, _08050C84 @ =_08050C88
- adds r0, r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050C78: .4byte gUnk_02019EE0
-_08050C7C: .4byte gMenu
-_08050C80: .4byte gUnk_03000FF0
-_08050C84: .4byte _08050C88
-_08050C88: @ jump table
- .4byte _08050D08 @ case 0
- .4byte _08050D30 @ case 1
- .4byte _08050D44 @ case 2
- .4byte _08050D44 @ case 3
- .4byte _08050D44 @ case 4
- .4byte _08050D44 @ case 5
- .4byte _08050D44 @ case 6
- .4byte _08050D08 @ case 7
- .4byte _08050D44 @ case 8
- .4byte _08050D44 @ case 9
- .4byte _08050D44 @ case 10
- .4byte _08050D44 @ case 11
- .4byte _08050D44 @ case 12
- .4byte _08050D44 @ case 13
- .4byte _08050D44 @ case 14
- .4byte _08050D42 @ case 15
- .4byte _08050D44 @ case 16
- .4byte _08050D44 @ case 17
- .4byte _08050D44 @ case 18
- .4byte _08050D44 @ case 19
- .4byte _08050D44 @ case 20
- .4byte _08050D44 @ case 21
- .4byte _08050D44 @ case 22
- .4byte _08050D44 @ case 23
- .4byte _08050D44 @ case 24
- .4byte _08050D44 @ case 25
- .4byte _08050D44 @ case 26
- .4byte _08050D44 @ case 27
- .4byte _08050D44 @ case 28
- .4byte _08050D44 @ case 29
- .4byte _08050D44 @ case 30
- .4byte _08050D3E @ case 31
-_08050D08:
- cmp r4, #0
- bne _08050D12
- ldr r0, _08050D28 @ =0x80080000
- bl PlaySFX
-_08050D12:
- ldr r1, _08050D2C @ =gMenu
- movs r0, #0xf
- strh r0, [r1, #8]
- movs r0, #1
- bl sub_080A7114
- movs r0, #0x6a
- bl PlaySFX
- b _08050D44
- .align 2, 0
-_08050D28: .4byte 0x80080000
-_08050D2C: .4byte gMenu
-_08050D30:
- movs r0, #0x6c
- bl PlaySFX
- movs r0, #0
- bl sub_080503BC
- b _08050D44
-_08050D3E:
- subs r4, #1
- b _08050D44
-_08050D42:
- adds r4, #1
-_08050D44:
- cmp r4, #0
- bge _08050D4A
- movs r4, #0
-_08050D4A:
- cmp r4, #2
- ble _08050D50
- movs r4, #2
-_08050D50:
- ldr r1, _08050D64 @ =gMenu
- ldrb r0, [r1, #1]
- cmp r0, r4
- beq _08050D60
- strb r4, [r1, #1]
- movs r0, #0x69
- bl PlaySFX
-_08050D60:
- pop {r4, pc}
- .align 2, 0
-_08050D64: .4byte gMenu
-
- thumb_func_start sub_08050D68
-sub_08050D68: @ 0x08050D68
- push {lr}
- ldr r1, _08050D84 @ =gMenu
- ldrh r0, [r1, #8]
- cmp r0, #0
- bne _08050D94
- ldrb r0, [r1, #1]
- cmp r0, #1
- beq _08050D88
- cmp r0, #1
- ble _08050D80
- cmp r0, #2
- beq _08050D8C
-_08050D80:
- movs r0, #7
- b _08050D8E
- .align 2, 0
-_08050D84: .4byte gMenu
-_08050D88:
- movs r0, #5
- b _08050D8E
-_08050D8C:
- movs r0, #6
-_08050D8E:
- bl sub_080503BC
- b _08050D98
-_08050D94:
- subs r0, #1
- strh r0, [r1, #8]
-_08050D98:
- pop {pc}
- .align 2, 0
-
- thumb_func_start sub_08050D9C
-sub_08050D9C: @ 0x08050D9C
- push {lr}
- ldr r1, _08050DB0 @ =gUnk_080FC944
- ldr r0, _08050DB4 @ =gMenu
- ldrb r0, [r0, #5]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {pc}
- .align 2, 0
-_08050DB0: .4byte gUnk_080FC944
-_08050DB4: .4byte gMenu
-
- thumb_func_start sub_08050DB8
-sub_08050DB8: @ 0x08050DB8
- push {lr}
- ldr r0, _08050DDC @ =gUnk_020344B0
- movs r1, #0x80
- lsls r1, r1, #4
- bl _DmaZero
- movs r0, #0xc
- bl sub_080503A8
- ldr r1, _08050DE0 @ =gMenu
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r0, [r0, #7]
- strb r0, [r1, #4]
- movs r0, #1
- bl sub_080A7114
- pop {pc}
- .align 2, 0
-_08050DDC: .4byte gUnk_020344B0
-_08050DE0: .4byte gMenu
-
- thumb_func_start sub_08050DE4
-sub_08050DE4: @ 0x08050DE4
- push {r4, lr}
- ldr r0, _08050E0C @ =gUnk_02019EE0
- ldrb r0, [r0]
- cmp r0, #0
- bne _08050E80
- movs r1, #0x80
- lsls r1, r1, #0x12
- ldrb r4, [r1, #7]
- ldr r0, _08050E10 @ =gUnk_03000FF0
- ldrh r0, [r0, #2]
- cmp r0, #8
- beq _08050E26
- cmp r0, #8
- bgt _08050E14
- cmp r0, #1
- beq _08050E26
- cmp r0, #2
- beq _08050E50
- b _08050E62
- .align 2, 0
-_08050E0C: .4byte gUnk_02019EE0
-_08050E10: .4byte gUnk_03000FF0
-_08050E14:
- cmp r0, #0x40
- beq _08050E1E
- cmp r0, #0x80
- beq _08050E22
- b _08050E62
-_08050E1E:
- subs r4, #1
- b _08050E62
-_08050E22:
- adds r4, #1
- b _08050E62
-_08050E26:
- movs r0, #0x6a
- bl PlaySFX
- ldr r0, _08050E44 @ =gMenu
- ldrb r0, [r0, #4]
- cmp r0, r4
- beq _08050E48
- movs r0, #2
- bl sub_080A7114
- movs r0, #8
- movs r1, #0
- bl sub_08050318
- b _08050E62
- .align 2, 0
-_08050E44: .4byte gMenu
-_08050E48:
- movs r0, #0
- bl sub_080503BC
- b _08050E62
-_08050E50:
- ldr r0, _08050E84 @ =gMenu
- ldrb r4, [r0, #4]
- strb r4, [r1, #7]
- movs r0, #0x6c
- bl PlaySFX
- movs r0, #0
- bl sub_080503BC
-_08050E62:
- cmp r4, #1
- bgt _08050E68
- movs r4, #2
-_08050E68:
- cmp r4, #6
- ble _08050E6E
- movs r4, #6
-_08050E6E:
- movs r1, #0x80
- lsls r1, r1, #0x12
- ldrb r0, [r1, #7]
- cmp r0, r4
- beq _08050E80
- strb r4, [r1, #7]
- movs r0, #0x69
- bl PlaySFX
-_08050E80:
- pop {r4, pc}
- .align 2, 0
-_08050E84: .4byte gMenu
-
- thumb_func_start sub_08050E88
-sub_08050E88: @ 0x08050E88
- push {lr}
- movs r0, #2
- bl sub_0807CDA4
- cmp r0, #0
- beq _08050E9A
- movs r0, #0
- bl sub_080503BC
-_08050E9A:
- pop {pc}
-
- thumb_func_start sub_08050E9C
-sub_08050E9C: @ 0x08050E9C
- push {lr}
- ldr r1, _08050EB0 @ =gUnk_080FC950
- ldr r0, _08050EB4 @ =gMenu
- ldrb r0, [r0, #5]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {pc}
- .align 2, 0
-_08050EB0: .4byte gUnk_080FC950
-_08050EB4: .4byte gMenu
-
- thumb_func_start sub_08050EB8
-sub_08050EB8: @ 0x08050EB8
- push {lr}
- movs r0, #0xe
- bl sub_080503A8
- ldr r2, _08050EE8 @ =gUnk_02019EE0
- ldrb r1, [r2, #6]
- ldr r0, _08050EEC @ =0x000004B4
- muls r1, r0, r1
- adds r0, r2, #0
- adds r0, #0xc
- adds r1, r1, r0
- ldrb r0, [r1, #2]
- movs r3, #0
- strb r0, [r2, #4]
- ldrb r0, [r1, #3]
- strb r0, [r2, #5]
- ldr r1, _08050EF0 @ =gMenu
- strb r3, [r1, #1]
- movs r0, #0xff
- strh r0, [r1, #8]
- movs r0, #1
- bl sub_080A7114
- pop {pc}
- .align 2, 0
-_08050EE8: .4byte gUnk_02019EE0
-_08050EEC: .4byte 0x000004B4
-_08050EF0: .4byte gMenu
-
- thumb_func_start sub_08050EF4
-sub_08050EF4: @ 0x08050EF4
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- ldr r0, _08050F40 @ =gUnk_02019EE0
- ldrb r1, [r0]
- adds r6, r0, #0
- cmp r1, #0
- bne _08050FF4
- ldrb r1, [r6, #6]
- ldr r0, _08050F44 @ =0x000004B4
- muls r1, r0, r1
- adds r0, r6, #0
- adds r0, #0xc
- adds r1, r1, r0
- ldr r0, _08050F48 @ =gMenu
- ldrb r3, [r0, #1]
- adds r4, r1, #3
- mov ip, r0
- cmp r3, #0
- bne _08050F1E
- adds r4, r1, #2
-_08050F1E:
- ldrb r2, [r4]
- movs r5, #0
- ldr r0, _08050F4C @ =gUnk_03000FF0
- ldrh r0, [r0, #2]
- mov r8, r2
- cmp r0, #0x10
- beq _08050F7A
- cmp r0, #0x10
- bgt _08050F56
- cmp r0, #2
- beq _08050F8C
- cmp r0, #2
- bgt _08050F50
- cmp r0, #1
- beq _08050F82
- b _08050F8E
- .align 2, 0
-_08050F40: .4byte gUnk_02019EE0
-_08050F44: .4byte 0x000004B4
-_08050F48: .4byte gMenu
-_08050F4C: .4byte gUnk_03000FF0
-_08050F50:
- cmp r0, #8
- beq _08050F82
- b _08050F8E
-_08050F56:
- cmp r0, #0x40
- beq _08050F6A
- cmp r0, #0x40
- bgt _08050F64
- cmp r0, #0x20
- beq _08050F72
- b _08050F8E
-_08050F64:
- cmp r0, #0x80
- beq _08050F6E
- b _08050F8E
-_08050F6A:
- movs r3, #0
- b _08050F8E
-_08050F6E:
- movs r3, #1
- b _08050F8E
-_08050F72:
- cmp r2, #0
- beq _08050F8E
- subs r2, #1
- b _08050F8E
-_08050F7A:
- cmp r2, #1
- bhi _08050F8E
- adds r2, #1
- b _08050F8E
-_08050F82:
- ldrh r0, [r6, #4]
- movs r5, #2
- ldrh r7, [r1, #2]
- cmp r0, r7
- bne _08050F8E
-_08050F8C:
- movs r5, #3
-_08050F8E:
- cmp r5, #0
- beq _08050FD0
- cmp r5, #2
- beq _08050F9C
- cmp r5, #3
- beq _08050FAC
- b _08050FBA
-_08050F9C:
- movs r0, #8
- movs r1, #0
- bl sub_08050318
- movs r0, #0x6a
- bl PlaySFX
- b _08050FBA
-_08050FAC:
- ldrb r0, [r6, #4]
- strb r0, [r1, #2]
- ldrb r0, [r6, #5]
- strb r0, [r1, #3]
- movs r0, #0x6c
- bl PlaySFX
-_08050FBA:
- adds r0, r5, #0
- bl sub_080A7114
- ldr r0, _08050FCC @ =gUnk_02019EE0
- ldrb r0, [r0, #6]
- bl sub_0805041C
- b _08050FF4
- .align 2, 0
-_08050FCC: .4byte gUnk_02019EE0
-_08050FD0:
- mov r1, ip
- ldrb r0, [r1, #1]
- cmp r0, r3
- beq _08050FE2
- strb r3, [r1, #1]
- movs r0, #0x69
- bl PlaySFX
- b _08050FF4
-_08050FE2:
- cmp r2, r8
- beq _08050FF4
- strb r2, [r4]
- ldrb r0, [r6, #6]
- bl sub_080503E4
- movs r0, #0x69
- bl PlaySFX
-_08050FF4:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-
- thumb_func_start sub_08050FFC
-sub_08050FFC: @ 0x08050FFC
- push {lr}
- movs r0, #0
- bl sub_0807CDA4
- adds r1, r0, #0
- movs r0, #1
- rsbs r0, r0, #0
- cmp r1, r0
- beq _08051014
- cmp r1, #1
- beq _0805102A
- b _08051030
-_08051014:
- ldr r1, _08051034 @ =gMenu
- movs r0, #0x1e
- strh r0, [r1, #8]
- ldr r0, _08051038 @ =gUnk_02019EE0
- ldrb r0, [r0, #6]
- bl sub_0805194C
- movs r0, #9
- movs r1, #0
- bl sub_08050318
-_0805102A:
- movs r0, #3
- bl sub_080A7114
-_08051030:
- pop {pc}
- .align 2, 0
-_08051034: .4byte gMenu
-_08051038: .4byte gUnk_02019EE0
-
- thumb_func_start sub_0805103C
-sub_0805103C: @ 0x0805103C
- push {lr}
- ldr r0, _08051050 @ =gMenu
- ldrb r1, [r0, #8]
- adds r2, r0, #0
- cmp r1, #0
- beq _08051054
- cmp r1, #0xff
- beq _0805106C
- b _08051060
- .align 2, 0
-_08051050: .4byte gMenu
-_08051054:
- ldr r0, _08051068 @ =gUnk_03000FF0
- ldrh r1, [r0, #2]
- movs r0, #9
- ands r0, r1
- cmp r0, #0
- beq _08051072
-_08051060:
- ldrh r0, [r2, #8]
- subs r0, #1
- strh r0, [r2, #8]
- b _08051072
- .align 2, 0
-_08051068: .4byte gUnk_03000FF0
-_0805106C:
- movs r0, #0
- bl sub_080503BC
-_08051072:
- pop {pc}
-
- thumb_func_start sub_08051074
-sub_08051074: @ 0x08051074
- push {lr}
- ldr r1, _08051088 @ =gUnk_080FC960
- ldr r0, _0805108C @ =gMenu
- ldrb r0, [r0, #5]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {pc}
- .align 2, 0
-_08051088: .4byte gUnk_080FC960
-_0805108C: .4byte gMenu
-
- thumb_func_start sub_08051090
-sub_08051090: @ 0x08051090
- push {lr}
- movs r0, #8
- bl sub_080503A8
- bl sub_08050790
- bl sub_0805070C
- bl sub_08051458
- ldr r1, _080510B4 @ =gScreen
- movs r0, #0xff
- strh r0, [r1, #0x18]
- strh r0, [r1, #0x24]
- movs r0, #1
- bl sub_080A7114
- pop {pc}
- .align 2, 0
-_080510B4: .4byte gScreen
-
- thumb_func_start sub_080510B8
-sub_080510B8: @ 0x080510B8
- push {r4, r5, r6, r7, lr}
- ldr r0, _080510E4 @ =gUnk_02019EE0
- ldrb r0, [r0]
- cmp r0, #0
- beq _080510C4
- b _0805134C
-_080510C4:
- movs r7, #0
- ldr r0, _080510E8 @ =gUnk_03000FF0
- ldrh r1, [r0, #2]
- adds r2, r0, #0
- cmp r1, #8
- bne _080510D2
- b _080511C8
-_080510D2:
- cmp r1, #8
- bgt _080510EC
- cmp r1, #1
- bne _080510DC
- b _080511F2
-_080510DC:
- cmp r1, #2
- beq _080511B8
- b _08051100
- .align 2, 0
-_080510E4: .4byte gUnk_02019EE0
-_080510E8: .4byte gUnk_03000FF0
-_080510EC:
- movs r0, #0x80
- lsls r0, r0, #1
- cmp r1, r0
- bne _080510F6
- b _0805122C
-_080510F6:
- movs r0, #0x80
- lsls r0, r0, #2
- cmp r1, r0
- bne _08051100
- b _0805121C
-_08051100:
- movs r6, #0
- movs r5, #0
- ldrh r0, [r2, #4]
- cmp r0, #0x20
- beq _08051128
- cmp r0, #0x20
- bgt _08051114
- cmp r0, #0x10
- beq _0805112E
- b _08051130
-_08051114:
- cmp r0, #0x40
- beq _0805111E
- cmp r0, #0x80
- beq _08051124
- b _08051130
-_0805111E:
- movs r5, #1
- rsbs r5, r5, #0
- b _08051130
-_08051124:
- movs r5, #1
- b _08051130
-_08051128:
- movs r6, #1
- rsbs r6, r6, #0
- b _08051130
-_0805112E:
- movs r6, #1
-_08051130:
- ldr r4, _0805117C @ =gMenu
- ldrb r0, [r4, #0x11]
- adds r0, r0, r5
- adds r0, #6
- movs r1, #6
- bl __modsi3
- strb r0, [r4, #0x11]
- orrs r5, r6
- cmp r5, #0
- beq _0805114C
- movs r0, #0x67
- bl PlaySFX
-_0805114C:
- cmp r6, #0
- beq _0805123A
- ldrb r0, [r4, #0x11]
- cmp r0, #5
- beq _08051184
- ldrb r0, [r4, #0x10]
- adds r0, r0, r6
- adds r0, #0xd
- movs r1, #0xd
- bl __modsi3
- strb r0, [r4, #0x10]
- ldr r1, _08051180 @ =gUnk_080FC980
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r0, [r0, #7]
- cmp r0, #0
- beq _08051172
- adds r1, #0x10
-_08051172:
- ldrb r0, [r4, #0x10]
- adds r0, r1, r0
- ldrb r0, [r0]
- strb r0, [r4, #0x12]
- b _0805123A
- .align 2, 0
-_0805117C: .4byte gMenu
-_08051180: .4byte gUnk_080FC980
-_08051184:
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r0, [r0, #7]
- adds r5, r0, #0
- movs r1, #4
- cmp r5, #0
- bne _08051194
- movs r1, #5
-_08051194:
- ldrb r0, [r4, #0x12]
- adds r0, r0, r6
- adds r0, r0, r1
- bl __modsi3
- strb r0, [r4, #0x12]
- ldr r1, _080511B4 @ =gUnk_080FC9A0
- cmp r5, #0
- beq _080511A8
- adds r1, #8
-_080511A8:
- ldrb r0, [r4, #0x12]
- adds r0, r1, r0
- ldrb r0, [r0]
- strb r0, [r4, #0x10]
- b _0805123A
- .align 2, 0
-_080511B4: .4byte gUnk_080FC9A0
-_080511B8:
- ldr r0, _080511C4 @ =gMenu
- ldrb r0, [r0, #0x13]
- cmp r0, #0
- beq _080511EC
- movs r7, #5
- b _0805123A
- .align 2, 0
-_080511C4: .4byte gMenu
-_080511C8:
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r0, [r0, #7]
- movs r1, #3
- cmp r0, #0
- bne _080511D6
- movs r1, #4
-_080511D6:
- ldr r2, _080511E8 @ =gMenu
- ldrb r0, [r2, #0x11]
- cmp r0, #5
- bne _080511EC
- ldrb r2, [r2, #0x12]
- cmp r1, r2
- bne _080511EC
- movs r7, #8
- b _0805123A
- .align 2, 0
-_080511E8: .4byte gMenu
-_080511EC:
- bl sub_08051358
- b _0805123A
-_080511F2:
- ldr r1, _08051210 @ =gMenu
- ldrb r0, [r1, #0x11]
- cmp r0, #5
- bne _08051218
- ldr r2, _08051214 @ =gUnk_080FC970
- ldrb r1, [r1, #0x12]
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r0, [r0, #7]
- cmp r0, #0
- beq _0805120A
- adds r1, #8
-_0805120A:
- adds r0, r1, r2
- ldrb r7, [r0]
- b _0805123A
- .align 2, 0
-_08051210: .4byte gMenu
-_08051214: .4byte gUnk_080FC970
-_08051218:
- movs r7, #6
- b _0805123A
-_0805121C:
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r0, [r0, #7]
- movs r7, #1
- cmp r0, #0
- bne _0805123A
- movs r7, #4
- b _0805123A
-_0805122C:
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r0, [r0, #7]
- movs r7, #2
- cmp r0, #0
- bne _0805123A
- movs r7, #7
-_0805123A:
- ldr r0, _08051250 @ =gMenu
- ldrb r4, [r0, #1]
- subs r0, r7, #1
- cmp r0, #7
- bhi _08051322
- lsls r0, r0, #2
- ldr r1, _08051254 @ =_08051258
- adds r0, r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08051250: .4byte gMenu
-_08051254: .4byte _08051258
-_08051258: @ jump table
- .4byte _08051278 @ case 0
- .4byte _0805127C @ case 1
- .4byte _08051280 @ case 2
- .4byte _08051284 @ case 3
- .4byte _08051288 @ case 4
- .4byte _080512C0 @ case 5
- .4byte _080512B8 @ case 6
- .4byte _080512EC @ case 7
-_08051278:
- movs r4, #0
- b _08051322
-_0805127C:
- movs r4, #1
- b _08051322
-_08051280:
- movs r4, #2
- b _08051322
-_08051284:
- adds r4, #1
- b _08051322
-_08051288:
- ldr r3, _080512B0 @ =gMenu
- ldrb r0, [r3, #0x13]
- cmp r0, #0
- beq _08051322
- subs r0, #1
- movs r2, #0
- strb r0, [r3, #0x13]
- ldr r1, _080512B4 @ =gUnk_02002A40
- ldrb r0, [r3, #0x13]
- adds r1, #0x80
- adds r0, r0, r1
- strb r2, [r0]
- ldrb r0, [r3, #0x13]
- adds r0, #1
- adds r0, r0, r1
- strb r2, [r0]
- movs r0, #0x6c
- bl sub_08051574
- b _08051322
- .align 2, 0
-_080512B0: .4byte gMenu
-_080512B4: .4byte gUnk_02002A40
-_080512B8:
- movs r0, #0
- bl sub_08051480
- b _08051322
-_080512C0:
- ldr r2, _080512E4 @ =gUnk_02001A40
- ldr r0, _080512E8 @ =gMenu
- ldrb r1, [r0, #0x10]
- lsls r1, r1, #1
- ldrb r0, [r0, #0x11]
- lsls r0, r0, #6
- adds r0, #0xc3
- adds r1, r1, r0
- lsls r1, r1, #1
- adds r1, r1, r2
- ldrh r0, [r1]
- lsrs r0, r0, #1
- lsls r0, r0, #0x18
- lsrs r0, r0, #0x18
- bl sub_08051480
- b _08051322
- .align 2, 0
-_080512E4: .4byte gUnk_02001A40
-_080512E8: .4byte gMenu
-_080512EC:
- movs r3, #5
- ldr r0, _08051350 @ =gUnk_02002A40
- adds r6, r0, #0
- adds r6, #0x80
- movs r5, #0
-_080512F6:
- adds r2, r3, r6
- ldrb r1, [r2]
- cmp r1, #0
- beq _08051302
- cmp r1, #0x20
- bne _0805130A
-_08051302:
- strb r5, [r2]
- subs r3, #1
- cmp r3, #0
- bge _080512F6
-_0805130A:
- adds r0, #0x80
- ldrb r0, [r0]
- movs r7, #3
- cmp r0, #0
- beq _08051316
- movs r7, #2
-_08051316:
- movs r0, #0x6a
- bl sub_08051574
- adds r0, r7, #0
- bl sub_080A7114
-_08051322:
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r0, [r0, #7]
- movs r1, #2
- cmp r0, #0
- bne _08051330
- movs r1, #3
-_08051330:
- adds r0, r4, r1
- bl __modsi3
- adds r4, r0, #0
- ldr r1, _08051354 @ =gMenu
- ldrb r0, [r1, #1]
- cmp r0, r4
- beq _0805134C
- strb r4, [r1, #1]
- bl sub_08051458
- movs r0, #0x68
- bl PlaySFX
-_0805134C:
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08051350: .4byte gUnk_02002A40
-_08051354: .4byte gMenu
-
- thumb_func_start sub_08051358
-sub_08051358: @ 0x08051358
- push {lr}
- ldr r2, _08051384 @ =gMenu
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r0, [r0, #7]
- movs r1, #3
- cmp r0, #0
- bne _0805136A
- movs r1, #4
-_0805136A:
- strb r1, [r2, #0x12]
- ldrh r1, [r2, #0x10]
- ldr r0, _08051388 @ =0x0000050B
- cmp r1, r0
- beq _08051382
- movs r0, #5
- strb r0, [r2, #0x11]
- movs r0, #0xb
- strb r0, [r2, #0x10]
- movs r0, #0x67
- bl PlaySFX
-_08051382:
- pop {pc}
- .align 2, 0
-_08051384: .4byte gMenu
-_08051388: .4byte 0x0000050B
-
- thumb_func_start sub_0805138C
-sub_0805138C: @ 0x0805138C
- push {lr}
- ldr r1, _080513A0 @ =gUnk_080FC9B0
- ldr r0, _080513A4 @ =gMenu
- ldrb r0, [r0, #6]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {pc}
- .align 2, 0
-_080513A0: .4byte gUnk_080FC9B0
-_080513A4: .4byte gMenu
-
- thumb_func_start sub_080513A8
-sub_080513A8: @ 0x080513A8
- push {lr}
- movs r0, #5
- movs r1, #0
- bl sub_08050318
- ldr r1, _080513BC @ =gMenu
- movs r0, #1
- strb r0, [r1, #6]
- pop {pc}
- .align 2, 0
-_080513BC: .4byte gMenu
-
- thumb_func_start sub_080513C0
-sub_080513C0: @ 0x080513C0
- push {lr}
- movs r0, #0
- bl sub_0807CDA4
- adds r2, r0, #0
- cmp r2, #0
- beq _08051412
- cmp r2, #0
- bgt _080513DC
- movs r0, #1
- rsbs r0, r0, #0
- cmp r2, r0
- beq _080513F8
- b _08051412
-_080513DC:
- cmp r2, #1
- bne _08051412
- ldr r1, _080513F4 @ =gUnk_02019EE0
- adds r0, r1, #0
- adds r0, #8
- ldrb r1, [r1, #6]
- adds r0, r0, r1
- strb r2, [r0]
- movs r0, #3
- bl sub_080A7114
- b _08051412
- .align 2, 0
-_080513F4: .4byte gUnk_02019EE0
-_080513F8:
- ldr r0, _08051414 @ =gUnk_02019EE0
- ldrb r0, [r0, #6]
- bl sub_0805194C
- movs r0, #6
- movs r1, #0
- bl sub_08050318
- ldr r1, _08051418 @ =gMenu
- movs r0, #0x1e
- strh r0, [r1, #8]
- movs r0, #2
- strb r0, [r1, #6]
-_08051412:
- pop {pc}
- .align 2, 0
-_08051414: .4byte gUnk_02019EE0
-_08051418: .4byte gMenu
-
- thumb_func_start sub_0805141C
-sub_0805141C: @ 0x0805141C
- push {lr}
- ldr r1, _0805143C @ =gMenu
- ldrh r0, [r1, #8]
- cmp r0, #0
- bne _08051444
- ldr r0, _08051440 @ =gUnk_03000FF0
- ldrh r1, [r0, #2]
- movs r0, #9
- ands r0, r1
- cmp r0, #0
- beq _08051448
- movs r0, #3
- bl sub_080A7114
- b _08051448
- .align 2, 0
-_0805143C: .4byte gMenu
-_08051440: .4byte gUnk_03000FF0
-_08051444:
- subs r0, #1
- strh r0, [r1, #8]
-_08051448:
- pop {pc}
- .align 2, 0
-
- thumb_func_start sub_0805144C
-sub_0805144C: @ 0x0805144C
- push {lr}
- movs r0, #0
- bl sub_080503BC
- pop {pc}
- .align 2, 0
-
- thumb_func_start sub_08051458
-sub_08051458: @ 0x08051458
- push {lr}
- ldr r0, _08051474 @ =gMenu
- ldrb r0, [r0, #1]
- adds r0, #9
- bl sub_080503A8
- ldr r0, _08051478 @ =gUnk_02001B40
- ldr r1, _0805147C @ =gUnk_02022030
- movs r2, #0x80
- lsls r2, r2, #3
- bl sub_0801D66C
- pop {pc}
- .align 2, 0
-_08051474: .4byte gMenu
-_08051478: .4byte gUnk_02001B40
-_0805147C: .4byte gUnk_02022030
-
- thumb_func_start sub_08051480
-sub_08051480: @ 0x08051480
- push {r4, lr}
- adds r4, r0, #0
- bl sub_080514BC
- ldr r2, _080514B4 @ =gMenu
- ldrb r1, [r2, #0x13]
- cmp r0, #0
- beq _080514B0
- cmp r0, #1
- beq _08051498
- adds r4, r0, #0
- subs r1, #1
-_08051498:
- cmp r1, #5
- bls _0805149E
- movs r1, #5
-_0805149E:
- adds r0, r1, #1
- strb r0, [r2, #0x13]
- ldr r0, _080514B8 @ =gUnk_02002A40
- adds r0, #0x80
- adds r0, r1, r0
- strb r4, [r0]
- movs r0, #0x6b
- bl sub_08051574
-_080514B0:
- pop {r4, pc}
- .align 2, 0
-_080514B4: .4byte gMenu
-_080514B8: .4byte gUnk_02002A40
-
- thumb_func_start sub_080514BC
-sub_080514BC: @ 0x080514BC
- push {lr}
- adds r2, r0, #0
- movs r0, #0x80
- lsls r0, r0, #0x12
- ldrb r0, [r0, #7]
- cmp r0, #0
- bne _080514D6
- cmp r2, #0
- beq _080514DA
- cmp r2, #0xf
- bhi _080514D6
- cmp r2, #0xe
- bhs _080514DA
-_080514D6:
- movs r0, #1
- b _08051572
-_080514DA:
- ldr r0, _08051500 @ =gMenu
- ldrb r1, [r0, #0x13]
- cmp r1, #0
- beq _08051570
- ldr r0, _08051504 @ =gUnk_02002A40
- adds r0, r0, r1
- adds r0, #0x7f
- ldrb r1, [r0]
- adds r0, r1, #0
- subs r0, #0xa4
- cmp r0, #0x28
- bhi _08051522
- cmp r2, #0xe
- beq _0805153C
- cmp r2, #0xe
- bhi _08051508
- cmp r2, #0
- beq _0805150E
- b _0805153C
- .align 2, 0
-_08051500: .4byte gMenu
-_08051504: .4byte gUnk_02002A40
-_08051508:
- cmp r2, #0xf
- beq _08051518
- b _0805153C
-_0805150E:
- cmp r1, #0xc2
- bhi _0805151C
- adds r0, r1, #0
- adds r0, #0x33
- b _08051572
-_08051518:
- cmp r1, #0xc2
- bls _08051570
-_0805151C:
- adds r0, r1, #0
- adds r0, #0xa
- b _08051572
-_08051522:
- adds r0, r1, #0
- subs r0, #0xcd
- cmp r0, #9
- bhi _0805154C
- cmp r2, #0xe
- beq _08051546
- cmp r2, #0xe
- bhi _08051538
- cmp r2, #0
- beq _08051540
- b _0805154C
-_08051538:
- cmp r2, #0xf
- bne _0805154C
-_0805153C:
- adds r0, r1, #0
- b _08051572
-_08051540:
- adds r0, r1, #0
- adds r0, #0x29
- b _08051572
-_08051546:
- adds r0, r1, #0
- subs r0, #0xa
- b _08051572
-_0805154C:
- adds r0, r1, #0
- subs r0, #0xd7
- cmp r0, #0x28
- bhi _08051570
- cmp r2, #0xe
- beq _08051560
- cmp r2, #0xe
- bls _08051560
- cmp r2, #0xf
- beq _08051566
-_08051560:
- adds r0, r1, #0
- subs r0, #0x33
- b _08051572
-_08051566:
- cmp r1, #0xf5
- bls _08051570
- adds r0, r1, #0
- subs r0, #0x29
- b _08051572
-_08051570:
- movs r0, #0
-_08051572:
- pop {pc}
-
- thumb_func_start sub_08051574
-sub_08051574: @ 0x08051574
- push {lr}
- bl PlaySFX
- ldr r0, _08051594 @ =gUnk_02002A40
- ldr r3, _08051598 @ =gUnk_02019EE0
- ldrb r1, [r3, #6]
- ldr r2, _0805159C @ =0x000004B4
- muls r1, r2, r1
- adds r3, #0xc
- adds r1, r1, r3
- bl sub_0801D66C
- bl sub_0805070C
- pop {pc}
- .align 2, 0
-_08051594: .4byte gUnk_02002A40
-_08051598: .4byte gUnk_02019EE0
-_0805159C: .4byte 0x000004B4
-
- thumb_func_start sub_080515A0
-sub_080515A0: @ 0x080515A0
- push {lr}
- ldr r1, _080515BC @ =gUnk_080FC9BC
- ldr r0, _080515C0 @ =gMenu
- ldrb r0, [r0, #5]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, _080515C4 @ =gUnk_02019EE0
- ldrb r0, [r0, #6]
- bl sub_08050A64
- pop {pc}
- .align 2, 0
-_080515BC: .4byte gUnk_080FC9BC
-_080515C0: .4byte gMenu
-_080515C4: .4byte gUnk_02019EE0
-
- thumb_func_start sub_080515C8
-sub_080515C8: @ 0x080515C8
- push {lr}
- movs r0, #1
- bl sub_080A7114
- pop {pc}
- .align 2, 0
-
- thumb_func_start sub_080515D4
-sub_080515D4: @ 0x080515D4
- push {r4, lr}
- ldr r0, _080515FC @ =gUnk_02019EE0
- ldrb r0, [r0]
- cmp r0, #0
- beq _080515E0
- b _080516D8
-_080515E0:
- ldr r1, _08051600 @ =gMenu
- movs r0, #4
- strh r0, [r1, #8]
- ldrb r4, [r1, #1]
- ldr r0, _08051604 @ =gUnk_03000FF0
- ldrh r0, [r0, #2]
- subs r0, #1
- cmp r0, #0x1f
- bhi _080516C8
- lsls r0, r0, #2
- ldr r1, _08051608 @ =_0805160C
- adds r0, r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080515FC: .4byte gUnk_02019EE0
-_08051600: .4byte gMenu
-_08051604: .4byte gUnk_03000FF0
-_08051608: .4byte _0805160C
-_0805160C: @ jump table
- .4byte _08051694 @ case 0
- .4byte _0805168C @ case 1
- .4byte _080516C8 @ case 2
- .4byte _080516C8 @ case 3
- .4byte _080516C8 @ case 4
- .4byte _080516C8 @ case 5
- .4byte _080516C8 @ case 6
- .4byte _08051694 @ case 7
- .4byte _080516C8 @ case 8
- .4byte _080516C8 @ case 9
- .4byte _080516C8 @ case 10
- .4byte _080516C8 @ case 11
- .4byte _080516C8 @ case 12
- .4byte _080516C8 @ case 13
- .4byte _080516C8 @ case 14
- .4byte _080516C6 @ case 15
- .4byte _080516C8 @ case 16
- .4byte _080516C8 @ case 17
- .4byte _080516C8 @ case 18
- .4byte _080516C8 @ case 19
- .4byte _080516C8 @ case 20
- .4byte _080516C8 @ case 21
- .4byte _080516C8 @ case 22
- .4byte _080516C8 @ case 23
- .4byte _080516C8 @ case 24
- .4byte _080516C8 @ case 25
- .4byte _080516C8 @ case 26
- .4byte _080516C8 @ case 27
- .4byte _080516C8 @ case 28
- .4byte _080516C8 @ case 29
- .4byte _080516C8 @ case 30
- .4byte _080516C2 @ case 31
-_0805168C:
- ldr r1, _080516B0 @ =gMenu
- movs r0, #0
- strb r0, [r1, #1]
- movs r4, #0
-_08051694:
- cmp r4, #1
- bne _080516B4
- movs r0, #4
- movs r1, #0
- bl sub_08050318
- movs r0, #2
- bl sub_080A7114
- movs r0, #0x6a
- bl PlaySFX
- b _080516C8
- .align 2, 0
-_080516B0: .4byte gMenu
-_080516B4:
- movs r0, #0
- bl sub_080503BC
- movs r0, #0x6c
- bl PlaySFX
- b _080516C8
-_080516C2:
- movs r4, #0
- b _080516C8
-_080516C6:
- movs r4, #1
-_080516C8:
- ldr r1, _080516DC @ =gMenu
- ldrb r0, [r1, #1]
- cmp r0, r4
- beq _080516D8
- strb r4, [r1, #1]
- movs r0, #0x69
- bl PlaySFX
-_080516D8:
- pop {r4, pc}
- .align 2, 0
-_080516DC: .4byte gMenu
-
- thumb_func_start sub_080516E0
-sub_080516E0: @ 0x080516E0
- push {r4, lr}
- movs r0, #1
- bl sub_0807CDA4
- cmp r0, #0
- beq _08051706
- ldr r4, _08051708 @ =gUnk_02019EE0
- ldrb r0, [r4, #6]
- bl sub_0805194C
- ldrb r0, [r4, #6]
- bl sub_08050AFC
- ldr r1, _0805170C @ =gMenu
- movs r0, #2
- strh r0, [r1, #8]
- movs r0, #0
- bl sub_080503BC
-_08051706:
- pop {r4, pc}
- .align 2, 0
-_08051708: .4byte gUnk_02019EE0
-_0805170C: .4byte gMenu
-
- thumb_func_start sub_08051710
-sub_08051710: @ 0x08051710
- push {lr}
- ldr r1, _0805172C @ =gUnk_080FC9C8
- ldr r0, _08051730 @ =gMenu
- ldrb r0, [r0, #5]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, _08051734 @ =gUnk_02019EE0
- ldrb r0, [r0, #6]
- bl sub_08050A64
- pop {pc}
- .align 2, 0
-_0805172C: .4byte gUnk_080FC9C8
-_08051730: .4byte gMenu
-_08051734: .4byte gUnk_02019EE0
-
- thumb_func_start sub_08051738
-sub_08051738: @ 0x08051738
- push {r4, r5, r6, r7, lr}
- ldr r1, _08051768 @ =gUnk_02019EE0
- movs r0, #4
- strb r0, [r1, #7]
- movs r4, #0
- movs r3, #0
- adds r5, r1, #0
- adds r7, r5, #0
- adds r7, #8
- ldr r6, _0805176C @ =gUnk_02000090
-_0805174C:
- adds r0, r3, r7
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #1
- bne _08051770
- ldrb r1, [r5, #6]
- movs r2, #4
- eors r1, r3
- rsbs r0, r1, #0
- orrs r0, r1
- asrs r0, r0, #0x1f
- ands r2, r0
- b _08051774
- .align 2, 0
-_08051768: .4byte gUnk_02019EE0
-_0805176C: .4byte gUnk_02000090
-_08051770:
- adds r4, #1
- adds r2, r4, #0
-_08051774:
- adds r0, r3, r6
- strb r2, [r0]
- adds r3, #1
- cmp r3, #2
- bls _0805174C
- cmp r4, #0
- bne _0805179C
- ldr r1, _08051798 @ =gMenu
- movs r0, #0x3c
- strh r0, [r1, #8]
- movs r0, #1
- movs r1, #0
- bl sub_08050318
- movs r0, #3
- bl sub_080A7114
- b _080517A2
- .align 2, 0
-_08051798: .4byte gMenu
-_0805179C:
- movs r0, #1
- bl sub_080A7114
-_080517A2:
- adds r4, #1
- ldr r0, _080517B0 @ =gMenu
- strb r4, [r0, #0x16]
- movs r1, #4
- strb r1, [r0, #0x13]
- strb r4, [r0, #0x14]
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_080517B0: .4byte gMenu
-
- thumb_func_start sub_080517B4
-sub_080517B4: @ 0x080517B4
- push {r4, lr}
- adds r2, r0, #0
- ldr r0, _080517E4 @ =gUnk_02019EE0
- ldrb r1, [r0, #7]
- adds r4, r0, #0
- cmp r2, #0
- beq _080517DE
- adds r1, r1, r2
- cmp r1, #4
- bhi _080517DC
- ldr r3, _080517E8 @ =gUnk_02000090
-_080517CA:
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, #0
- beq _080517D6
- cmp r0, #4
- bne _080517DE
-_080517D6:
- adds r1, r1, r2
- cmp r1, #4
- bls _080517CA
-_080517DC:
- ldrb r1, [r4, #7]
-_080517DE:
- adds r0, r1, #0
- pop {r4, pc}
- .align 2, 0
-_080517E4: .4byte gUnk_02019EE0
-_080517E8: .4byte gUnk_02000090
-
- thumb_func_start sub_080517EC
-sub_080517EC: @ 0x080517EC
- push {r4, lr}
- ldr r0, _08051810 @ =gUnk_02019EE0
- ldrb r1, [r0]
- adds r2, r0, #0
- cmp r1, #0
- bne _0805186E
- movs r4, #0
- ldr r0, _08051814 @ =gUnk_03000FF0
- ldrh r0, [r0, #2]
- cmp r0, #8
- beq _0805182C
- cmp r0, #8
- bgt _08051818
- cmp r0, #1
- beq _0805182C
- cmp r0, #2
- beq _08051848
- b _08051858
- .align 2, 0
-_08051810: .4byte gUnk_02019EE0
-_08051814: .4byte gUnk_03000FF0
-_08051818:
- cmp r0, #0x40
- beq _08051822
- cmp r0, #0x80
- beq _08051828
- b _08051858
-_08051822:
- movs r4, #1
- rsbs r4, r4, #0
- b _08051858
-_08051828:
- movs r4, #1
- b _08051858
-_0805182C:
- ldrb r0, [r2, #7]
- cmp r0, #2
- bhi _08051848
- movs r0, #2
- movs r1, #0
- bl sub_08050318
- movs r0, #2
- bl sub_080A7114
- movs r0, #0x6a
- bl PlaySFX
- b _08051858
-_08051848:
- movs r0, #4
- strb r0, [r2, #7]
- movs r0, #0x6c
- bl PlaySFX
- movs r0, #0
- bl sub_080503BC
-_08051858:
- adds r0, r4, #0
- bl sub_080517B4
- ldr r1, _08051870 @ =gUnk_02019EE0
- ldrb r2, [r1, #7]
- cmp r0, r2
- beq _0805186E
- strb r0, [r1, #7]
- movs r0, #0x69
- bl PlaySFX
-_0805186E:
- pop {r4, pc}
- .align 2, 0
-_08051870: .4byte gUnk_02019EE0
-
- thumb_func_start sub_08051874
-sub_08051874: @ 0x08051874
- push {r4, lr}
- movs r1, #0x80
- lsls r1, r1, #0x12
- ldr r4, _080518B8 @ =gUnk_02019EE0
- ldrb r0, [r4, #7]
- strb r0, [r1, #4]
- movs r0, #0
- bl sub_0807CDA4
- adds r1, r0, #0
- adds r0, r4, #0
- adds r0, #8
- ldrb r2, [r4, #7]
- adds r0, r0, r2
- strb r1, [r0]
- movs r0, #1
- rsbs r0, r0, #0
- cmp r1, r0
- beq _080518C4
- cmp r1, #1
- bne _080518DE
- ldr r0, _080518BC @ =gUnk_02002A40
- ldrb r1, [r4, #7]
- ldr r2, _080518C0 @ =0x000004B4
- muls r1, r2, r1
- adds r3, r4, #0
- adds r3, #0xc
- adds r1, r1, r3
- bl sub_0801D66C
- movs r0, #0
- bl sub_080503BC
- b _080518DE
- .align 2, 0
-_080518B8: .4byte gUnk_02019EE0
-_080518BC: .4byte gUnk_02002A40
-_080518C0: .4byte 0x000004B4
-_080518C4:
- ldrb r0, [r4, #7]
- bl sub_0805194C
- movs r0, #3
- movs r1, #0
- bl sub_08050318
- ldr r1, _080518E0 @ =gMenu
- movs r0, #0x1e
- strh r0, [r1, #8]
- movs r0, #3
- bl sub_080A7114
-_080518DE:
- pop {r4, pc}
- .align 2, 0
-_080518E0: .4byte gMenu
-
- thumb_func_start sub_080518E4
-sub_080518E4: @ 0x080518E4
- push {lr}
- ldr r1, _08051904 @ =gMenu
- ldrh r0, [r1, #8]
- cmp r0, #0
- bne _0805190C
- ldr r0, _08051908 @ =gUnk_03000FF0
- ldrh r1, [r0, #2]
- movs r0, #9
- ands r0, r1
- cmp r0, #0
- beq _08051910
- movs r0, #0
- bl sub_080503BC
- b _08051910
- .align 2, 0
-_08051904: .4byte gMenu
-_08051908: .4byte gUnk_03000FF0
-_0805190C:
- subs r0, #1
- strh r0, [r1, #8]
-_08051910:
- pop {pc}
- .align 2, 0
-
- thumb_func_start sub_08051914
-sub_08051914: @ 0x08051914
- push {lr}
- ldr r1, _08051940 @ =gMenu
- ldrb r0, [r1, #5]
- cmp r0, #0
- bne _0805193E
- movs r0, #1
- strb r0, [r1, #5]
- movs r2, #0x80
- lsls r2, r2, #0x12
- ldr r1, _08051944 @ =gUnk_02002A40
- ldrb r0, [r1, #2]
- strb r0, [r2, #5]
- ldrb r0, [r1, #3]
- strb r0, [r2, #6]
- ldr r1, _08051948 @ =gUnk_03001000
- movs r0, #2
- strb r0, [r1, #3]
- movs r0, #5
- movs r1, #8
- bl DoFade
-_0805193E:
- pop {pc}
- .align 2, 0
-_08051940: .4byte gMenu
-_08051944: .4byte gUnk_02002A40
-_08051948: .4byte gUnk_03001000
-
- thumb_func_start sub_0805194C
-sub_0805194C: @ 0x0805194C
- push {r4, lr}
- ldr r3, _08051980 @ =gUnk_02019EE0
- adds r1, r3, #0
- adds r1, #8
- adds r1, r0, r1
- movs r2, #0
- strb r2, [r1]
- ldr r1, _08051984 @ =0x000004B4
- adds r4, r0, #0
- muls r4, r1, r4
- adds r3, #0xc
- adds r4, r4, r3
- adds r0, r4, #0
- bl _DmaZero
- movs r0, #1
- strb r0, [r4, #2]
- strb r0, [r4, #3]
- adds r1, r4, #0
- adds r1, #0xaa
- movs r0, #0x18
- strb r0, [r1]
- adds r4, #0xab
- strb r0, [r4]
- pop {r4, pc}
- .align 2, 0
-_08051980: .4byte gUnk_02019EE0
-_08051984: .4byte 0x000004B4
-
- thumb_func_start HandleGameplayScreen
-HandleGameplayScreen: @ 0x08051988
- push {lr}
- ldr r1, _080519A4 @ =gScreenTransition
- ldr r0, [r1]
- adds r0, #1
- str r0, [r1]
- ldr r1, _080519A8 @ =gUnk_080FC9D8
- ldr r0, _080519AC @ =gUnk_03001000
- ldrb r0, [r0, #3]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {pc}
- .align 2, 0
-_080519A4: .4byte gScreenTransition
-_080519A8: .4byte gUnk_080FC9D8
-_080519AC: .4byte gUnk_03001000
-
- thumb_func_start sub_080519B0
-sub_080519B0: @ 0x080519B0
- push {r4, r5, lr}
- ldr r0, _08051A04 @ =gFadeControl
- ldrb r5, [r0]
- cmp r5, #0
- bne _08051A02
- movs r0, #1
- bl sub_0801DA90
- bl sub_080A3210
- bl sub_0801DA7C
- bl sub_080A7124
- bl sub_0807059C
- ldr r4, _08051A08 @ =gScreenTransition
- adds r0, r4, #0
- movs r1, #0xb0
- bl _DmaZero
- bl sub_08049CD4
- bl sub_080300AC
- bl sub_0807CA18
- ldr r0, _08051A0C @ =gUnk_02002AC8
- adds r1, r4, #0
- adds r1, #0xc
- movs r2, #0x20
- bl sub_0801D66C
- movs r0, #4
- strb r0, [r4, #9]
- bl sub_08053518
- ldr r1, _08051A10 @ =gUnk_03001000
- movs r0, #1
- strb r0, [r1, #3]
- strb r5, [r1, #4]
-_08051A02:
- pop {r4, r5, pc}
- .align 2, 0
-_08051A04: .4byte gFadeControl
-_08051A08: .4byte gScreenTransition
-_08051A0C: .4byte gUnk_02002AC8
-_08051A10: .4byte gUnk_03001000
-
- thumb_func_start sub_08051A14
-sub_08051A14: @ 0x08051A14
- push {lr}
- movs r0, #1
- bl sub_0801DA90
- ldr r1, _08051A70 @ =gFadeControl
- movs r0, #1
- rsbs r0, r0, #0
- str r0, [r1, #4]
- ldr r0, _08051A74 @ =gUnk_03000000
- ldr r1, _08051A78 @ =0x00000B74
- bl _DmaZero
- ldr r0, _08051A7C @ =gUnk_02032EC0
- movs r1, #0xed
- lsls r1, r1, #2
- bl _DmaZero
- bl EraseAllEntities
- bl sub_080197AC
- bl sub_08080668
- bl sub_080ADD30
- movs r0, #1
- bl sub_0801CFA8
- bl sub_0806FD8C
- ldr r2, _08051A80 @ =gRoomControls
- ldr r1, _08051A84 @ =gScreenTransition
- ldrb r0, [r1, #0xc]
- strb r0, [r2, #4]
- ldrb r0, [r1, #0xd]
- strb r0, [r2, #5]
- bl sub_08053320
- ldr r1, _08051A88 @ =gUnk_02024490
- movs r0, #1
- strb r0, [r1]
- ldr r1, _08051A8C @ =gUnk_03001000
- movs r0, #2
- strb r0, [r1, #3]
- pop {pc}
- .align 2, 0
-_08051A70: .4byte gFadeControl
-_08051A74: .4byte gUnk_03000000
-_08051A78: .4byte 0x00000B74
-_08051A7C: .4byte gUnk_02032EC0
-_08051A80: .4byte gRoomControls
-_08051A84: .4byte gScreenTransition
-_08051A88: .4byte gUnk_02024490
-_08051A8C: .4byte gUnk_03001000
-
- thumb_func_start sub_08051A90
-sub_08051A90: @ 0x08051A90
- push {lr}
- ldr r1, _08051AA4 @ =gUnk_080FC9E8
- ldr r0, _08051AA8 @ =gUnk_03001000
- ldrb r0, [r0, #4]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {pc}
- .align 2, 0
-_08051AA4: .4byte gUnk_080FC9E8
-_08051AA8: .4byte gUnk_03001000
-
- thumb_func_start InitializeNewRoom
-InitializeNewRoom: @ 0x08051AAC
- push {lr}
- bl sub_0805E5A8
- ldr r1, _08051AE4 @ =gScreen
- movs r2, #0
- movs r0, #0xba
- lsls r0, r0, #5
- strh r0, [r1]
- ldr r1, _08051AE8 @ =gUnk_03001000
- movs r0, #1
- strb r0, [r1, #4]
- ldr r0, _08051AEC @ =gScreenTransition
- strb r2, [r0, #8]
- strb r2, [r0, #4]
- strb r2, [r0, #5]
- bl sub_08056418
- bl sub_08052CFC
- movs r0, #0
- bl sub_0801C370
- bl InitializeEntities
- bl sub_0801855C
- pop {pc}
- .align 2, 0
-_08051AE4: .4byte gScreen
-_08051AE8: .4byte gUnk_03001000
-_08051AEC: .4byte gScreenTransition
-
- thumb_func_start sub_08051AF0
-sub_08051AF0: @ 0x08051AF0
- push {r4, r5, lr}
- bl sub_0805E5C0
- bl sub_0805BBBC
- cmp r0, #0
- bne _08051B02
- bl sub_0807FC40
-_08051B02:
- bl sub_0801B060
- bl sub_08000108
- bl sub_0801C344
- bl sub_0805E5F8
- bl sub_080AD90C
- bl sub_0801C208
- bl sub_08078CB4
- bl sub_080AD9B0
- bl sub_080AD918
- ldr r0, _08051BB0 @ =gFadeControl
- ldrb r0, [r0]
- cmp r0, #0
- bne _08051BAE
- ldr r0, _08051BB4 @ =gRoomControls
- ldrh r0, [r0]
- cmp r0, #0
- bne _08051BAE
- bl sub_08052F1C
- ldr r5, _08051BB8 @ =gArea
- movs r0, #0x86
- lsls r0, r0, #4
- adds r3, r5, r0
- ldr r1, _08051BBC @ =0x00000864
- adds r0, r5, r1
- ldr r1, [r3]
- ldr r2, [r0]
- cmp r1, r2
- beq _08051B5A
- str r2, [r3]
- ldr r0, _08051BC0 @ =0x800B0000
- orrs r2, r0
- adds r0, r2, #0
- bl PlaySFX
-_08051B5A:
- bl sub_0805E9F4
- bl sub_0805BC04
- adds r4, r0, #0
- cmp r4, #0
- bne _08051BAE
- bl sub_08052C5C
- bl sub_0805E5B4
- bl sub_08051E04
- bl sub_080300C4
- ldr r1, _08051BC4 @ =gUnk_03001000
- movs r0, #2
- strb r0, [r1, #4]
- movs r0, #0
- bl sub_08078A90
- ldr r0, _08051BC8 @ =gUnk_02034490
- strb r4, [r0]
- adds r0, r5, #0
- adds r0, #0x28
- ldrb r0, [r0]
- cmp r0, #0xff
- beq _08051B96
- bl sub_0801855C
-_08051B96:
- bl sub_08052BF8
- bl sub_08053178
- ldr r0, _08051BCC @ =gRoomVars
- ldrb r0, [r0]
- cmp r0, #0
- bne _08051BAE
- movs r0, #0
- movs r1, #1
- bl sub_0805E4E0
-_08051BAE:
- pop {r4, r5, pc}
- .align 2, 0
-_08051BB0: .4byte gFadeControl
-_08051BB4: .4byte gRoomControls
-_08051BB8: .4byte gArea
-_08051BBC: .4byte 0x00000864
-_08051BC0: .4byte 0x800B0000
-_08051BC4: .4byte gUnk_03001000
-_08051BC8: .4byte gUnk_02034490
-_08051BCC: .4byte gRoomVars
-
- thumb_func_start sub_08051BD0
-sub_08051BD0: @ 0x08051BD0
- push {lr}
- bl sub_080705AC
- cmp r0, #0
- bne _08051C9C
- bl sub_0804AA84
- cmp r0, #0
- bne _08051C9C
- bl sub_0805340C
- ldr r0, _08051C5C @ =gUnk_03001000
- ldrb r0, [r0, #4]
- cmp r0, #2
- bne _08051C9C
- ldr r0, _08051C60 @ =gTextBox
- ldrb r1, [r0]
- movs r0, #0x7f
- ands r0, r1
- cmp r0, #0
- bne _08051C02
- ldr r0, _08051C64 @ =gUnk_03003DC0
- ldrh r0, [r0, #8]
- cmp r0, #0
- beq _08051C06
-_08051C02:
- bl sub_08078B48
-_08051C06:
- bl sub_080AD90C
- bl sub_0805E5C0
- bl sub_08080A40
- bl sub_080175F4
- bl sub_0807FC40
- bl sub_0801B060
- bl sub_08000108
- bl sub_08052C3C
- bl sub_0801C344
- bl sub_0805E5F8
- bl sub_0801C208
- bl sub_08078CB4
- bl sub_080AD9B0
- bl sub_0805291C
- bl sub_08052C5C
- bl sub_080528B4
- bl sub_080185F8
- bl sub_080AD918
- ldr r0, _08051C68 @ =gRoomControls
- ldrh r2, [r0]
- cmp r2, #1
- beq _08051C6C
- cmp r2, #2
- beq _08051C88
- b _08051C9C
- .align 2, 0
-_08051C5C: .4byte gUnk_03001000
-_08051C60: .4byte gTextBox
-_08051C64: .4byte gUnk_03003DC0
-_08051C68: .4byte gRoomControls
-_08051C6C:
- ldr r0, _08051C80 @ =gPlayerState
- movs r1, #0x17
- strb r1, [r0, #0xc]
- ldr r0, _08051C84 @ =gUnk_03001000
- strb r2, [r0, #4]
- bl sub_0805E59C
- bl sub_08051D98
- b _08051C9C
- .align 2, 0
-_08051C80: .4byte gPlayerState
-_08051C84: .4byte gUnk_03001000
-_08051C88:
- ldr r1, _08051CA0 @ =gPlayerState
- movs r0, #0x17
- strb r0, [r1, #0xc]
- ldr r1, _08051CA4 @ =gUnk_03001000
- movs r0, #1
- strb r0, [r1, #4]
- bl sub_0805E59C
- bl sub_08051DCC
-_08051C9C:
- pop {pc}
- .align 2, 0
-_08051CA0: .4byte gPlayerState
-_08051CA4: .4byte gUnk_03001000
-
- thumb_func_start sub_08051CA8
-sub_08051CA8: @ 0x08051CA8
- push {lr}
- bl sub_080705AC
- cmp r0, #0
- bne _08051CEA
- bl sub_0805E5C0
- bl sub_080175F4
- bl sub_0801C344
- bl sub_0805E5F8
- bl sub_080AD90C
- bl sub_0801C208
- bl sub_08078CB4
- bl sub_080AD9B0
- bl sub_0805291C
- bl sub_080528B4
- bl sub_080AD918
- ldr r0, _08051CEC @ =gFadeControl
- ldrb r0, [r0]
- cmp r0, #0
- bne _08051CEA
- bl sub_0805E5B4
-_08051CEA:
- pop {pc}
- .align 2, 0
-_08051CEC: .4byte gFadeControl
-
- thumb_func_start sub_08051CF0
-sub_08051CF0: @ 0x08051CF0
- push {r4, r5, r6, lr}
- bl sub_080AD90C
- bl sub_0801C208
- bl sub_080AD9B0
- ldr r5, _08051D20 @ =gUnk_03001000
- movs r6, #1
- strb r6, [r5, #0xb]
- bl sub_080AD918
- ldr r0, _08051D24 @ =gFadeControl
- ldrb r4, [r0]
- cmp r4, #0
- bne _08051D1E
- movs r0, #1
- bl sub_0801DA90
- strb r6, [r5, #3]
- strb r4, [r5, #4]
- ldr r0, _08051D28 @ =gScreenTransition
- strb r6, [r0, #8]
-_08051D1E:
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08051D20: .4byte gUnk_03001000
-_08051D24: .4byte gFadeControl
-_08051D28: .4byte gScreenTransition
-
- thumb_func_start sub_08051D2C
-sub_08051D2C: @ 0x08051D2C
- push {lr}
- movs r0, #7
- movs r1, #8
- bl DoFade
- movs r0, #3
- bl InitScreen
- pop {pc}
- .align 2, 0
-
- thumb_func_start InitializeEntities
-InitializeEntities: @ 0x08051D40
- push {lr}
- bl sub_08052EA0
- bl sub_0804AF90
- bl sub_0804AFDC
- bl InitializePlayer
- ldr r1, _08051D90 @ =gUnk_03004030
- movs r0, #0
- str r0, [r1]
- bl sub_0807C740
- ldr r1, _08051D94 @ =gUnk_02000070
- movs r0, #1
- strb r0, [r1]
- bl sub_0805283C
- movs r0, #0
- movs r1, #0
- bl sub_0801D79C
- bl LoadRoom
- bl CreateZeldaFollower
- bl sub_0804AFF4
- bl sub_0805329C
- bl sub_08000108
- movs r0, #1
- rsbs r0, r0, #0
- bl sub_0805BB74
- bl sub_080531F8
- pop {pc}
- .align 2, 0
-_08051D90: .4byte gUnk_03004030
-_08051D94: .4byte gUnk_02000070
-
- thumb_func_start sub_08051D98
-sub_08051D98: @ 0x08051D98
- push {lr}
- bl sub_08052EA0
- ldr r1, _08051DC8 @ =gRoomVars
- movs r0, #1
- strb r0, [r1]
- bl sub_0805E9A8
- bl sub_0804AF90
- bl sub_0804AFDC
- bl sub_0807C0DC
- bl sub_0805283C
- bl LoadRoom
- bl sub_0804AFF4
- movs r0, #1
- bl sub_08078A90
- pop {pc}
- .align 2, 0
-_08051DC8: .4byte gRoomVars
-
- thumb_func_start sub_08051DCC
-sub_08051DCC: @ 0x08051DCC
- push {r4, lr}
- ldr r1, _08051DFC @ =gRoomControls
- ldr r4, _08051E00 @ =gScreenTransition
- ldrb r0, [r4, #0xc]
- strb r0, [r1, #4]
- ldrb r0, [r4, #0xd]
- strb r0, [r1, #5]
- bl sub_080528F0
- movs r0, #3
- strb r0, [r4, #9]
- bl sub_08052CFC
- bl sub_08052EA0
- bl sub_0805E9A8
- bl sub_0804AF90
- bl sub_0804AFDC
- bl sub_0805283C
- pop {r4, pc}
- .align 2, 0
-_08051DFC: .4byte gRoomControls
-_08051E00: .4byte gScreenTransition
-
- thumb_func_start sub_08051E04
-sub_08051E04: @ 0x08051E04
- push {lr}
- bl sub_08052620
- cmp r0, #0
- beq _08051E60
- ldr r1, _08051E2C @ =gPlayerEntity
- movs r2, #0x2e
- ldrsh r0, [r1, r2]
- cmp r0, #0
- bge _08051E1A
- adds r0, #0xf
-_08051E1A:
- asrs r2, r0, #4
- movs r3, #0x32
- ldrsh r0, [r1, r3]
- cmp r0, #0
- bge _08051E26
- adds r0, #0xf
-_08051E26:
- asrs r1, r0, #4
- ldr r3, _08051E30 @ =gUnk_08127F94
- b _08051E36
- .align 2, 0
-_08051E2C: .4byte gPlayerEntity
-_08051E30: .4byte gUnk_08127F94
-_08051E34:
- adds r3, #8
-_08051E36:
- ldrb r0, [r3]
- cmp r0, #0xff
- beq _08051E60
- cmp r0, r2
- bhi _08051E34
- ldrb r0, [r3, #2]
- cmp r0, r2
- blo _08051E34
- ldrb r0, [r3, #1]
- cmp r0, r1
- bhi _08051E34
- ldrb r0, [r3, #3]
- cmp r0, r1
- blo _08051E34
- ldr r2, _08051E64 @ =gUnk_02002A40
- movs r1, #1
- ldrb r3, [r3, #4]
- lsls r1, r3
- ldr r0, [r2, #0x40]
- orrs r0, r1
- str r0, [r2, #0x40]
-_08051E60:
- pop {pc}
- .align 2, 0
-_08051E64: .4byte gUnk_02002A40
-
- thumb_func_start sub_08051E68
-sub_08051E68: @ 0x08051E68
- push {lr}
- ldr r1, _08051E7C @ =gUnk_080FCA08
- ldr r0, _08051E80 @ =gMenu
- ldrb r0, [r0, #5]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {pc}
- .align 2, 0
-_08051E7C: .4byte gUnk_080FCA08
-_08051E80: .4byte gMenu
-
- thumb_func_start sub_08051E84
-sub_08051E84: @ 0x08051E84
- push {r4, r5, r6, lr}
- ldr r0, _08051EF0 @ =gUnk_02032EC0
- ldrb r4, [r0, #3]
- lsls r4, r4, #3
- ldr r0, _08051EF4 @ =gUnk_080FCA20
- adds r4, r4, r0
- ldr r5, _08051EF8 @ =gRoomControls
- ldrb r0, [r4]
- strb r0, [r5, #4]
- ldrb r0, [r4, #1]
- strb r0, [r5, #5]
- bl sub_08053320
- ldrb r0, [r5, #4]
- bl sub_08052D58
- ldr r1, _08051EFC @ =gArea
- movs r6, #0
- strh r0, [r1, #4]
- ldrb r0, [r4]
- ldrb r1, [r4, #1]
- bl SetCurrentRoomPropertyList
- ldrb r0, [r4]
- ldrb r1, [r4, #1]
- bl sub_08052FD8
- ldrh r0, [r4, #4]
- ldrh r1, [r5, #6]
- adds r0, r0, r1
- strh r0, [r5, #0xa]
- ldrh r0, [r4, #6]
- ldrh r1, [r5, #8]
- adds r0, r0, r1
- strh r0, [r5, #0xc]
- ldr r1, _08051F00 @ =gMenu
- ldrb r0, [r4, #2]
- strb r0, [r1]
- ldrb r2, [r4, #3]
- movs r0, #0xf
- ands r0, r2
- strb r0, [r1, #3]
- str r4, [r1, #0xc]
- ldrb r0, [r1, #5]
- adds r0, #1
- strb r0, [r1, #5]
- strb r6, [r1, #6]
- movs r0, #0x96
- lsls r0, r0, #1
- strh r0, [r1, #8]
- bl sub_08051F04
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08051EF0: .4byte gUnk_02032EC0
-_08051EF4: .4byte gUnk_080FCA20
-_08051EF8: .4byte gRoomControls
-_08051EFC: .4byte gArea
-_08051F00: .4byte gMenu
-
- thumb_func_start sub_08051F04
-sub_08051F04: @ 0x08051F04
- push {lr}
- ldr r1, _08051F38 @ =gUnk_080FCA14
- ldr r0, _08051F3C @ =gMenu
- ldrb r0, [r0]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- bl sub_080AD90C
- bl sub_0805E5C0
- bl sub_080AD9B0
- bl sub_080AD918
- bl sub_0807FC40
- bl sub_0801B060
- bl sub_0805E5F8
- bl sub_08000108
- pop {pc}
- .align 2, 0
-_08051F38: .4byte gUnk_080FCA14
-_08051F3C: .4byte gMenu
-
- thumb_func_start sub_08051F40
-sub_08051F40: @ 0x08051F40
- push {lr}
- ldr r0, _08051F60 @ =gUnk_080FCA20
- ldr r2, _08051F64 @ =gUnk_02032EC0
- ldrb r1, [r2, #3]
- lsls r1, r1, #3
- adds r1, r1, r0
- ldrb r1, [r1, #3]
- movs r0, #0xf0
- ands r0, r1
- cmp r0, #0
- beq _08051F68
- lsrs r1, r1, #4
- movs r0, #2
- bl MenuFadeIn
- b _08051F76
- .align 2, 0
-_08051F60: .4byte gUnk_080FCA20
-_08051F64: .4byte gUnk_02032EC0
-_08051F68:
- movs r0, #3
- strb r0, [r2]
- movs r0, #0x10
- bl sub_080500F4
- bl sub_08056418
-_08051F76:
- pop {pc}
-
- thumb_func_start sub_08051F78
-sub_08051F78: @ 0x08051F78
- push {lr}
- ldr r0, _08051F94 @ =gUnk_02032EC0
- ldrb r3, [r0, #3]
- lsls r3, r3, #3
- ldr r0, _08051F98 @ =gUnk_080FCA20
- adds r3, r3, r0
- ldrb r0, [r3]
- ldrb r1, [r3, #1]
- ldrh r2, [r3, #4]
- ldrh r3, [r3, #6]
- bl sub_08051F9C
- pop {pc}
- .align 2, 0
-_08051F94: .4byte gUnk_02032EC0
-_08051F98: .4byte gUnk_080FCA20
-
- thumb_func_start sub_08051F9C
-sub_08051F9C: @ 0x08051F9C
- push {r4, r5, r6, lr}
- mov r6, r8
- push {r6}
- adds r6, r2, #0
- mov r8, r3
- ldr r5, _08051FE0 @ =gScreen
- ldrh r2, [r5]
- movs r4, #0xc0
- lsls r4, r4, #7
- ands r4, r2
- bl sub_08052FF4
- ldr r1, _08051FE4 @ =gRoomControls
- ldrh r0, [r1, #6]
- adds r0, r0, r6
- movs r6, #0
- strh r0, [r1, #0xa]
- ldrh r0, [r1, #8]
- add r0, r8
- strh r0, [r1, #0xc]
- bl sub_0807C740
- ldr r1, _08051FE8 @ =gUnk_02000070
- movs r0, #1
- strb r0, [r1]
- ldr r0, _08051FEC @ =gUsedPalettes
- str r6, [r0]
- ldrh r0, [r5]
- orrs r4, r0
- strh r4, [r5]
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08051FE0: .4byte gScreen
-_08051FE4: .4byte gRoomControls
-_08051FE8: .4byte gUnk_02000070
-_08051FEC: .4byte gUsedPalettes
-
- thumb_func_start sub_08051FF0
-sub_08051FF0: @ 0x08051FF0
- push {lr}
- ldr r0, _08052000 @ =gMenu
- ldr r1, [r0, #0xc]
- ldrb r0, [r1]
- ldrb r1, [r1, #1]
- bl sub_0804B0B0
- pop {pc}
- .align 2, 0
-_08052000: .4byte gMenu
-
- thumb_func_start sub_08052004
-sub_08052004: @ 0x08052004
- ldr r1, _0805200C @ =gMenu
- movs r0, #2
- strb r0, [r1, #5]
- bx lr
- .align 2, 0
-_0805200C: .4byte gMenu
-
- thumb_func_start sub_08052010
-sub_08052010: @ 0x08052010
- push {r4, lr}
- bl sub_080A3210
- bl sub_08056418
- movs r0, #1
- bl sub_0801DA90
- ldr r0, _0805207C @ =gUnk_02021F30
- movs r4, #0x80
- lsls r4, r4, #4
- adds r1, r4, #0
- bl _DmaZero
- ldr r0, _08052080 @ =gUnk_020344B0
- adds r1, r4, #0
- bl _DmaZero
- bl sub_080A4D34
- movs r0, #0xa
- bl LoadPaletteGroup
- movs r0, #0
- movs r1, #0
- bl sub_0801D79C
- movs r0, #4
- bl LoadGfxGroup
- movs r0, #0xc0
- lsls r0, r0, #0x13
- movs r1, #0x20
- bl _DmaZero
- ldr r0, _08052084 @ =gMenu
- movs r1, #0x30
- bl _DmaZero
- ldr r1, _08052088 @ =gScreen
- ldrh r2, [r1]
- movs r3, #0x80
- lsls r3, r3, #5
- adds r0, r3, #0
- orrs r0, r2
- strh r0, [r1]
- ldr r0, _0805208C @ =0x00001C01
- strh r0, [r1, #0x14]
- ldr r0, _08052090 @ =0x00001D05
- strh r0, [r1, #0x20]
- movs r0, #1
- strh r0, [r1, #0x1a]
- strh r0, [r1, #0x26]
- pop {r4, pc}
- .align 2, 0
-_0805207C: .4byte gUnk_02021F30
-_08052080: .4byte gUnk_020344B0
-_08052084: .4byte gMenu
-_08052088: .4byte gScreen
-_0805208C: .4byte 0x00001C01
-_08052090: .4byte 0x00001D05
-
- thumb_func_start HandleGameOverScreen
-HandleGameOverScreen: @ 0x08052094
- push {r4, lr}
- ldr r1, _080520BC @ =gUnk_080FCA70
- ldr r4, _080520C0 @ =gUnk_03001000
- ldrb r0, [r4, #3]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldrb r0, [r4, #3]
- cmp r0, #0
- beq _080520B8
- bl sub_080AD90C
- bl sub_080523D4
- bl sub_080AD918
-_080520B8:
- pop {r4, pc}
- .align 2, 0
-_080520BC: .4byte gUnk_080FCA70
-_080520C0: .4byte gUnk_03001000
-
- thumb_func_start sub_080520C4
-sub_080520C4: @ 0x080520C4
- push {lr}
- ldr r1, _080520D4 @ =gUnk_03001000
- strb r0, [r1, #3]
- movs r0, #0
- bl sub_080A7114
- pop {pc}
- .align 2, 0
-_080520D4: .4byte gUnk_03001000
-
- thumb_func_start sub_080520D8
-sub_080520D8: @ 0x080520D8
- push {r4, lr}
- ldr r4, _08052118 @ =gFadeControl
- ldrb r0, [r4]
- cmp r0, #0
- bne _08052114
- bl sub_08052010
- ldr r1, _0805211C @ =gMenu
- movs r0, #0x50
- strb r0, [r1, #0x10]
- movs r2, #0x3c
- movs r0, #0x3c
- strh r0, [r1, #8]
- ldr r0, _08052120 @ =gUnk_02002A40
- adds r0, #0xaa
- movs r1, #0x18
- strb r1, [r0]
- ldr r0, _08052124 @ =gUnk_03001000
- strb r2, [r0, #5]
- movs r0, #0xa
- bl PlaySFX
- movs r0, #4
- bl sub_080500F4
- ldr r0, _08052128 @ =0xFFFF0001
- str r0, [r4, #4]
- movs r0, #1
- bl sub_080520C4
-_08052114:
- pop {r4, pc}
- .align 2, 0
-_08052118: .4byte gFadeControl
-_0805211C: .4byte gMenu
-_08052120: .4byte gUnk_02002A40
-_08052124: .4byte gUnk_03001000
-_08052128: .4byte 0xFFFF0001
-
- thumb_func_start sub_0805212C
-sub_0805212C: @ 0x0805212C
- push {r4, lr}
- ldr r4, _0805214C @ =gFadeControl
- ldrb r0, [r4]
- cmp r0, #0
- bne _0805219C
- ldr r1, _08052150 @ =gUnk_03001000
- ldrb r0, [r1, #5]
- cmp r0, #0
- bne _08052198
- ldr r1, _08052154 @ =gMenu
- ldrb r0, [r1, #0x10]
- cmp r0, #0x25
- bls _08052158
- subs r0, #1
- strb r0, [r1, #0x10]
- b _0805219C
- .align 2, 0
-_0805214C: .4byte gFadeControl
-_08052150: .4byte gUnk_03001000
-_08052154: .4byte gMenu
-_08052158:
- ldrh r0, [r1, #8]
- subs r0, #1
- strh r0, [r1, #8]
- lsls r0, r0, #0x10
- cmp r0, #0
- bne _0805219C
- movs r0, #2
- bl sub_080520C4
- movs r0, #0
- movs r1, #0
- bl sub_08052418
- ldr r2, _08052190 @ =gScreen
- ldrh r0, [r2]
- movs r3, #0xc0
- lsls r3, r3, #3
- adds r1, r3, #0
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _08052194 @ =0x0000FFFF
- str r0, [r4, #4]
- movs r0, #4
- movs r1, #0x10
- bl DoFade
- b _0805219C
- .align 2, 0
-_08052190: .4byte gScreen
-_08052194: .4byte 0x0000FFFF
-_08052198:
- subs r0, #1
- strb r0, [r1, #5]
-_0805219C:
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start sub_080521A0
-sub_080521A0: @ 0x080521A0
- push {r4, lr}
- ldr r0, _080521C4 @ =gFadeControl
- ldrb r0, [r0]
- cmp r0, #0
- beq _080521AC
- b _080522E8
-_080521AC:
- ldr r0, _080521C8 @ =gMenu
- ldrb r1, [r0, #5]
- adds r2, r0, #0
- cmp r1, #4
- bls _080521B8
- b _080522D4
-_080521B8:
- lsls r0, r1, #2
- ldr r1, _080521CC @ =_080521D0
- adds r0, r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080521C4: .4byte gFadeControl
-_080521C8: .4byte gMenu
-_080521CC: .4byte _080521D0
-_080521D0: @ jump table
- .4byte _080521E4 @ case 0
- .4byte _08052208 @ case 1
- .4byte _08052278 @ case 2
- .4byte _080522B0 @ case 3
- .4byte _080522D4 @ case 4
-_080521E4:
- movs r1, #0
- movs r0, #0x1e
- strh r0, [r2, #8]
- strb r1, [r2, #3]
- movs r0, #1
- bl sub_080A7114
- movs r0, #0
- movs r1, #0
- bl sub_08052418
- ldr r1, _08052204 @ =gFadeControl
- movs r0, #1
- rsbs r0, r0, #0
- str r0, [r1, #4]
- b _080522E8
- .align 2, 0
-_08052204: .4byte gFadeControl
-_08052208:
- ldrh r0, [r2, #8]
- cmp r0, #0
- bne _080522B6
- ldrb r4, [r2, #3]
- ldr r0, _08052224 @ =gUnk_03000FF0
- ldrh r0, [r0, #2]
- cmp r0, #0x40
- beq _0805222E
- cmp r0, #0x40
- bgt _08052228
- cmp r0, #1
- beq _08052236
- b _0805225A
- .align 2, 0
-_08052224: .4byte gUnk_03000FF0
-_08052228:
- cmp r0, #0x80
- beq _08052232
- b _0805225A
-_0805222E:
- movs r4, #0
- b _0805225A
-_08052232:
- movs r4, #1
- b _0805225A
-_08052236:
- cmp r4, #0
- beq _0805223E
- movs r2, #4
- b _08052248
-_0805223E:
- movs r0, #8
- movs r1, #0
- bl sub_08050318
- movs r2, #2
-_08052248:
- ldr r1, _08052274 @ =gMenu
- movs r0, #0x3c
- strh r0, [r1, #8]
- adds r0, r2, #0
- bl sub_080A7114
- movs r0, #0x6a
- bl PlaySFX
-_0805225A:
- ldr r1, _08052274 @ =gMenu
- ldrb r0, [r1, #3]
- cmp r0, r4
- beq _080522E8
- strb r4, [r1, #3]
- movs r0, #0
- adds r1, r4, #0
- bl sub_08052418
- movs r0, #0x69
- bl PlaySFX
- b _080522E8
- .align 2, 0
-_08052274: .4byte gMenu
-_08052278:
- movs r0, #0
- bl sub_0807CDA4
- adds r1, r0, #0
- ldr r2, _08052298 @ =gMenu
- strb r1, [r2]
- movs r0, #1
- rsbs r0, r0, #0
- cmp r1, r0
- beq _0805229C
- cmp r1, #1
- bne _080522E8
- movs r0, #4
- bl sub_080A7114
- b _080522E8
- .align 2, 0
-_08052298: .4byte gMenu
-_0805229C:
- movs r0, #0x3c
- strh r0, [r2, #8]
- movs r0, #9
- movs r1, #0
- bl sub_08050318
- movs r0, #3
- bl sub_080A7114
- b _080522E8
-_080522B0:
- ldrh r0, [r2, #8]
- cmp r0, #0
- beq _080522BC
-_080522B6:
- subs r0, #1
- strh r0, [r2, #8]
- b _080522E8
-_080522BC:
- ldr r0, _080522D0 @ =gUnk_03000FF0
- ldrh r1, [r0, #2]
- movs r0, #0xb
- ands r0, r1
- cmp r0, #0
- beq _080522E8
- movs r0, #0
- bl sub_080A7114
- b _080522E8
- .align 2, 0
-_080522D0: .4byte gUnk_03000FF0
-_080522D4:
- ldr r2, _080522EC @ =gScreen
- ldrh r1, [r2]
- ldr r0, _080522F0 @ =0x0000FDFF
- ands r0, r1
- strh r0, [r2]
- bl sub_08050384
- movs r0, #3
- bl sub_080520C4
-_080522E8:
- pop {r4, pc}
- .align 2, 0
-_080522EC: .4byte gScreen
-_080522F0: .4byte 0x0000FDFF
-
- thumb_func_start sub_080522F4
-sub_080522F4: @ 0x080522F4
- push {r4, lr}
- ldr r0, _08052320 @ =gMenu
- ldrb r1, [r0, #5]
- adds r3, r0, #0
- cmp r1, #1
- beq _08052324
- cmp r1, #1
- bgt _080523AC
- cmp r1, #0
- bne _080523AC
- movs r1, #0
- movs r0, #0x1e
- strh r0, [r3, #8]
- strb r1, [r3, #3]
- movs r0, #1
- bl sub_080A7114
- movs r0, #1
- movs r1, #0
- bl sub_08052418
- b _080523CC
- .align 2, 0
-_08052320: .4byte gMenu
-_08052324:
- ldr r2, _08052340 @ =gScreen
- ldrh r1, [r2]
- movs r4, #0x80
- lsls r4, r4, #2
- adds r0, r4, #0
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r3, #8]
- cmp r0, #0
- beq _08052344
- subs r0, #1
- strh r0, [r3, #8]
- b _080523CC
- .align 2, 0
-_08052340: .4byte gScreen
-_08052344:
- ldrb r4, [r3, #3]
- ldr r0, _08052358 @ =gUnk_03000FF0
- ldrh r0, [r0, #2]
- cmp r0, #0x40
- beq _08052362
- cmp r0, #0x40
- bgt _0805235C
- cmp r0, #1
- beq _0805236A
- b _0805238C
- .align 2, 0
-_08052358: .4byte gUnk_03000FF0
-_0805235C:
- cmp r0, #0x80
- beq _08052366
- b _0805238C
-_08052362:
- movs r4, #0
- b _0805238C
-_08052366:
- movs r4, #1
- b _0805238C
-_0805236A:
- movs r0, #2
- bl sub_080A7114
- movs r0, #0x6a
- bl PlaySFX
- cmp r4, #0
- bne _08052384
- movs r0, #5
- movs r1, #8
- bl DoFade
- b _0805238C
-_08052384:
- movs r0, #7
- movs r1, #8
- bl DoFade
-_0805238C:
- ldr r1, _080523A8 @ =gMenu
- ldrb r0, [r1, #3]
- cmp r0, r4
- beq _080523CC
- strb r4, [r1, #3]
- movs r0, #1
- adds r1, r4, #0
- bl sub_08052418
- movs r0, #0x69
- bl PlaySFX
- b _080523CC
- .align 2, 0
-_080523A8: .4byte gMenu
-_080523AC:
- ldr r0, _080523C4 @ =gFadeControl
- ldrb r0, [r0]
- cmp r0, #0
- bne _080523CC
- ldrb r0, [r3, #3]
- cmp r0, #0
- bne _080523C8
- movs r0, #2
- bl InitScreen
- b _080523CC
- .align 2, 0
-_080523C4: .4byte gFadeControl
-_080523C8:
- bl DoSoftReset
-_080523CC:
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start nullsub_107
-nullsub_107: @ 0x080523D0
- bx lr
- .align 2, 0
-
- thumb_func_start sub_080523D4
-sub_080523D4: @ 0x080523D4
- push {r4, r5, r6, lr}
- ldr r1, _08052408 @ =gUnk_03001010
- movs r0, #0
- strh r0, [r1, #4]
- strh r0, [r1, #6]
- movs r0, #0x86
- lsls r0, r0, #8
- strh r0, [r1, #8]
- ldr r0, _0805240C @ =gMenu
- ldrb r0, [r0, #0x10]
- strh r0, [r1, #2]
- movs r4, #0
- adds r6, r1, #0
- ldr r5, _08052410 @ =gUnk_080FCA84
-_080523F0:
- adds r0, r4, r5
- ldrb r0, [r0]
- strh r0, [r6]
- ldr r0, _08052414 @ =0x000001FD
- adds r1, r4, #0
- bl sub_080ADA14
- adds r4, #1
- cmp r4, #7
- bls _080523F0
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08052408: .4byte gUnk_03001010
-_0805240C: .4byte gMenu
-_08052410: .4byte gUnk_080FCA84
-_08052414: .4byte 0x000001FD
diff --git a/include/functions.h b/include/functions.h
index dadc6846..45837388 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -170,7 +170,7 @@ extern void sub_0804F578(void);
extern void sub_08059994(void);
extern void LoadGfxGroup(u32);
extern s32 sub_0801CFA8(u32);
-extern void sub_080A3210();
+extern void sub_080A3210(void);
extern void sub_080ADA14(u32, u32);
extern void sub_0801E1B8(u32, u32);
extern void sub_0801E1EC(s32, s32, s32);
@@ -184,7 +184,7 @@ extern u32 sub_080A4494(void);
extern void sub_080A4528(void);
extern void sub_080A4398(void);
extern void sub_0801E738(u32);
-extern void sub_080A70AC(void*);
+extern void sub_080A70AC(const void*);
extern void sub_080A7114(u32);
extern void sub_08001242(void);
extern u32 sub_08003FC4(Entity*, u32);
@@ -203,11 +203,11 @@ extern void sub_0807A108(void);
extern void sub_0801766C(Entity*);
extern void sub_08004168(Entity*);
extern u32 sub_08052638(u32);
-extern void sub_0805616C();
+extern void sub_0805616C(void);
extern u32 sub_0807CF08(u32, u8*);
extern void sub_0807CF48(u32);
extern u32 sub_0807CF10(u8 *);
-extern void sub_08056208();
+extern void sub_08056208(void);
extern void sub_08050384();
extern void sub_080B1520(u32);
extern struct_0807D1C4* sub_0807D1C4(u32);
@@ -250,4 +250,5 @@ extern void sub_08097B24(Entity*);
extern u32 sub_08079F8C(void);
extern void sub_080787CC(Entity*);
extern void sub_080526F8(s32);
+extern int sub_0807CF28(u32, SaveFile*);
#endif \ No newline at end of file
diff --git a/include/main.h b/include/main.h
index 984ed077..39820694 100644
--- a/include/main.h
+++ b/include/main.h
@@ -39,15 +39,16 @@ typedef struct {
} Main;
typedef struct {
- u16 nextToLoad;
- u8 transitionType;
- u8 field_0x3;
- u8 state;
- u8 field_0x5;
- u8 field_0x6;
- u8 pauseFadeIn;
- u16 isLoading;
- u16 fadeInTime;
+ /*0x00*/ u16 nextToLoad;
+ /*0x02*/ u8 transitionType;
+ /*0x03*/ u8 field_0x3;
+ /*0x04*/ u8 state;
+ /*0x05*/ u8 field_0x5;
+ /*0x06*/ u8 field_0x6;
+ /*0x07*/ u8 pauseFadeIn;
+ /*0x08*/ u16 isLoading;
+ /*0x0A*/ u16 fadeInTime;
+ /*0x0C*/ u8 fillerC[0x3A8];
} UI;
extern Main gUnk_03001000;
diff --git a/include/structures.h b/include/structures.h
index 16cc72a8..32ae8d74 100644
--- a/include/structures.h
+++ b/include/structures.h
@@ -7,8 +7,8 @@
typedef struct {
char header[4];
- u8 saveFile;
- u8 field_0x5;
+ u8 saveFileId;
+ u8 messageSpeed;
u8 brightnessPref;
u8 gameLanguage;
} struct_02000000;
@@ -34,7 +34,10 @@ typedef struct {
extern struct_02000010 gUnk_02000010;
typedef struct {
- /*0x000*/ u8 filler0[0x6];
+ /*0x000*/ u8 filler0[0x2];
+ /*0x002*/ u8 messageSpeed;
+ /*0x003*/ u8 brightnessPref;
+ /*0x004*/ u8 filler4[0x2];
/*0x006*/ u8 unk6;
/*0x007*/ u8 unk7;
/*0x008*/ u8 unk8;
@@ -44,11 +47,12 @@ typedef struct {
/*0x050*/ u32 unk50;
/*0x054*/ u8 filler54[0x54];
/*0x0A8*/ Stats stats;
- /*0x0D0*/ u8 filler4[0x3c0];
+ /*0x0D0*/ u8 fillerD0[0x3c0];
/*0x490*/ u32 unk490;
-} struct_02002A40;
+ /*0x494*/ u8 filler494[0x20];
+} SaveFile;
-extern struct_02002A40 gUnk_02002A40;
+extern SaveFile gUnk_02002A40;
typedef struct {
u32 frameCount; // regular frame count? does anything reset it?
@@ -99,10 +103,13 @@ typedef struct {
typedef struct {
/*0x00*/ u8 unk0;
- /*0x01*/ u8 filler1[0x5];
+ /*0x01*/ u8 unk1;
+ /*0x02*/ u8 unk2;
+ /*0x03*/ u8 unk3;
+ /*0x04*/ u8 filler4[0x2];
/*0x06*/ u8 unk6;
/*0x07*/ u8 unk7;
- /*0x08*/ s8 unk8[0x10]; // ?? unclear know how large this is
+ /*0x08*/ s8 unk8[0xE20];
} struct_02019EE0;
extern struct_02019EE0 gUnk_02019EE0;
@@ -126,4 +133,18 @@ typedef struct {
extern struct_03000FD0 gFadeControl;
+typedef struct {
+ u8 unk0[0x24];
+ u8 ezloNagFuncIndex;
+ u8 filler25[0x30F];
+} struct_0200AF00;
+
+extern struct_0200AF00 gUnk_0200AF00;
+
+typedef struct {
+ u8 unk0;
+} struct_02024490;
+
+extern struct_02024490 gUnk_02024490;
+
#endif \ No newline at end of file
diff --git a/linker.ld b/linker.ld
index cceaae18..fda209e8 100644
--- a/linker.ld
+++ b/linker.ld
@@ -18,6 +18,7 @@ SECTIONS {
. = 0x00000070; gUnk_02000070 = .;
. = 0x00000080; gMenu = .;
. = 0x00000080; gIntroState = .;
+ . = 0x00000080; gChooseFileState = .;
. = 0x00000090; gUnk_02000090 = .;
. = 0x000000B0; gUnk_020000B0 = .;
. = 0x000000C0; gUnk_020000C0 = .;
@@ -72,7 +73,7 @@ SECTIONS {
. = 0x00018EB0; gUnk_02018EB0 = .;
. = 0x00018EE0; gUnk_02018EE0 = .;
. = 0x00019EE0; gUnk_02019EE0 = .;
- . = 0x00019EEC; gUnk_02019EEC = .;
+ . = 0x00019EEC; gSaveFiles = .;
. = 0x00019F6C; gUnk_02019F6C = .;
. = 0x0001AEE0; gUnk_0201AEE0 = .;
. = 0x00021EE0; gUnk_02021EE0 = .;
@@ -450,6 +451,8 @@ SECTIONS {
src/sub_08050008.o(.text);
src/sub_08050024.o(.text);
asm/code_08050038.o(.text);
+ src/chooseFile.o(.text);
+ asm/chooseFile.o(.text);
asm/sub_08052418.o(.text);
src/initializePlayer.o(.text);
src/area.o(.text);
diff --git a/src/chooseFile.c b/src/chooseFile.c
new file mode 100755
index 00000000..6df4fec6
--- /dev/null
+++ b/src/chooseFile.c
@@ -0,0 +1,236 @@
+#include "global.h"
+#include "functions.h"
+#include "main.h"
+#include "screen.h"
+
+typedef struct {
+ u8 filler0[0x30];
+} ChooseFileState;
+
+// TODO: This occupies the same memory region as gMenu
+extern ChooseFileState gChooseFileState;
+
+typedef struct {
+ u8 filler0[0x10];
+ u16 unk10;
+ u8 filler12[0x6];
+} struct_080FC844;
+
+typedef struct {
+ u8 filler0[0x4];
+} struct_020227E8;
+
+extern struct_020227E8 gUnk_020227E8;
+
+typedef struct {
+ u8 filler0[0x800];
+} struct_02034CB0;
+
+extern struct_02034CB0 gUnk_02034CB0;
+extern struct_02034CB0 gUnk_02021F30;
+extern SaveFile gSaveFiles[];
+extern u32 gUsedPalettes;
+
+static void sub_08050624(u32);
+static void sub_0805066C(void);
+
+extern void sub_0801D66C(const void* src, void* dest, u32 size);
+extern void sub_08056FEC(u32, struct_020227E8*);
+extern void sub_0805F46C(u32, struct_080FC844*);
+extern void sub_0801C4A0(u32, u32);
+extern void sub_0801D66C(const void* src, void* dest, u32 size);
+extern void sub_080507FC(void);
+extern void sub_08080668(void);
+extern void sub_0805194C(u32);
+extern void LoadPalettes(const u8*, int, int);
+
+extern const struct_080FC844 gUnk_080FC844;
+extern const u16 gUnk_080FC85C[][3];
+extern void (*const gUnk_080FC8A4[])(void);
+extern void (*const gUnk_080FC8B0[])(void);
+extern const u8 gUnk_080FC8D0[];
+extern const u16 gUnk_080FC8DE[];
+extern const u8 gGlobalGfxAndPalettes[];
+
+void sub_08050318(u32 arg0, u32 arg1) {
+ u32 sfx;
+ struct_080FC844 var0;
+
+ sub_08050384();
+ sub_0801D66C(&gUnk_080FC844, &var0, sizeof(gUnk_080FC844));
+ sub_08056FEC(arg1, &gUnk_020227E8);
+ var0.unk10 |= gUnk_080FC85C[arg0][0] << 0xC;
+ sub_0805F46C(gUnk_080FC85C[arg0][1], &var0);
+ sfx = gUnk_080FC85C[arg0][2];
+ if (sfx) {
+ PlaySFX(sfx);
+ }
+ gScreen.bg.bg3Control = 1;
+}
+
+void sub_08050384(void) {
+ sub_0801C4A0(0, 0);
+ _DmaZero(&gUnk_02034CB0, sizeof(gUnk_02034CB0));
+ gScreen.bg.bg3Control = 1;
+}
+
+void sub_080503A8(u32 gfxGroup) {
+ LoadGfxGroup(gfxGroup);
+ gScreen.bg.bg2yOffset = 1;
+ gScreen.affine.unk = 1;
+}
+
+void sub_080503BC(u8 state) {
+ gUnk_02032EC0.state = state;
+ _DmaZero(&gUnk_02034CB0, sizeof(gUnk_02034CB0));
+ _DmaZero(&gUnk_02021F30, sizeof(gUnk_02021F30));
+}
+
+void sub_080503E4(u32 saveFileId) {
+ u8 messageSpeed;
+ u8 brightnessPref;
+
+ if (saveFileId > 2) {
+ messageSpeed = 1;
+ brightnessPref = 1;
+ } else {
+ SaveFile* saveFile = &gSaveFiles[saveFileId];
+ messageSpeed = saveFile->messageSpeed;
+ brightnessPref = saveFile->brightnessPref;
+ }
+
+ ((struct_02000000 *)0x2000000)->messageSpeed = messageSpeed;
+ ((struct_02000000 *)0x2000000)->brightnessPref = brightnessPref;
+ gUsedPalettes = 0xFFFFFFFF;
+}
+
+void sub_0805041C(u32 saveFileId) {
+ SaveFile* saveFile;
+
+ if (saveFileId < 3) {
+ ((struct_02000000 *)0x2000000)->saveFileId = saveFileId;
+ saveFile = &gSaveFiles[saveFileId];
+ sub_0801D66C(saveFile, &gUnk_02002A40, sizeof(*saveFile));
+ }
+ sub_080503E4(saveFileId);
+}
+
+void HandleChooseFileScreen(void) {
+ sub_080AD90C();
+ gUnk_080FC8A4[gUnk_03001000.funcIndex]();
+ if (gUnk_02032EC0.transitionType != gUnk_02032EC0.state) {
+ gUnk_02032EC0.transitionType = gUnk_02032EC0.state;
+ gScreen.bg.bg1Control = 0;
+ gScreen.bg.bg2Control = 0;
+ gScreen.bg.bg1yOffset = 0;
+ gScreen.bg.bg2xOffset = 0;
+ gScreen.affine.bg2xOffset = 0;
+ gScreen.affine.bg2yOffset = 0;
+ _DmaZero(&gChooseFileState, sizeof(gChooseFileState));
+ }
+
+ sub_080507FC();
+ gUnk_080FC8B0[gUnk_02032EC0.transitionType]();
+ gUnk_02019EE0.unk0 = 0;
+ sub_0805E5C0();
+ sub_0805066C();
+ sub_0801C1D4();
+ sub_0801C208();
+ sub_080AD9B0();
+ sub_080AD918();
+ if (gUnk_02019EE0.unk3 != ((struct_02000000 *)0x2000000)->gameLanguage) {
+ gUnk_02019EE0.unk3 = ((struct_02000000 *)0x2000000)->gameLanguage;
+ sub_080503A8(0x6);
+ sub_080503A8(0xF);
+ }
+}
+
+void sub_080504F4(void) {
+ u32 i;
+
+ sub_0801DA90(1);
+ sub_080A3210();
+ _DmaZero((void*)VRAM, 0x80);
+ sub_08056418();
+ EraseAllEntities();
+ sub_08080668();
+ sub_080ADD30();
+ sub_0801CFA8(0);
+ _DmaZero(&gUnk_0200AF00, sizeof(gUnk_0200AF00));
+ _DmaZero(&gUnk_02019EE0, sizeof(gUnk_02019EE0));
+ gUnk_02019EE0.unk3 = 7;
+ gUnk_02019EE0.unk6 = ((struct_02000000 *)0x2000000)->gameLanguage > 1 ? 3 : 0;
+ _DmaZero(&gUnk_02032EC0, sizeof(gUnk_02032EC0));
+ gUnk_02032EC0.transitionType = 8;
+ sub_080503BC(0);
+ sub_0805616C();
+ sub_08050624(0);
+ sub_08050624(1);
+ sub_08050624(2);
+ sub_08056208();
+ sub_080503A8(0x5);
+ LoadPaletteGroup(0x9);
+ for (i = 0; i < 26; i++) {
+ CreateObject(0x48, i, 0);
+ }
+
+ sub_080A70AC(gUnk_080FC8D0);
+ sub_080507FC();
+ gScreen.lcd.displayControl |= 0x1F00;
+ gScreen.affine.bg3Control = 0x1E0B;
+ gScreen.controls.layerFXControl = 0x844;
+ gScreen.controls.alphaBlend = BLDALPHA_BLEND(15, 10);
+ gUnk_02024490.unk0 = 1;
+ gUnk_03001000.funcIndex = 1;
+ PlaySFX(0x7);
+ DoFade(4, 8);
+}
+
+void nullsub_479(void) {
+}
+
+void sub_0805060C(void) {
+ if (!gFadeControl.active) {
+ InitScreen(SCREEN_GAMEPLAY);
+ }
+}
+
+static void sub_08050624(u32 saveFileId) {
+ SaveFile* saveFile = &gSaveFiles[saveFileId];
+ int var0 = sub_0807CF28(saveFileId, saveFile);
+ switch (var0) {
+ case -1:
+ sub_0807CF48(saveFileId);
+ // fallthrough
+ case 0:
+ sub_0805194C(saveFileId);
+ break;
+ }
+ gUnk_02019EE0.unk8[saveFileId] = var0;
+}
+
+static void sub_0805066C(void) {
+ u32 loadNewPalette;
+ const u8* paletteOffset;
+
+ loadNewPalette = FALSE;
+ if (--gUnk_02019EE0.unk1 == 0) {
+ gUnk_02019EE0.unk1 = 16;
+ gUnk_02019EE0.unk2 = (gUnk_02019EE0.unk2 + 1) % 15;
+ loadNewPalette = TRUE;
+ }
+
+ if (gUnk_02019EE0.unk2 == 0) {
+ gUnk_02019EE0.unk2 = 1;
+ gUnk_02019EE0.unk1 = (Random() & 0x7) * 16 + 8;
+ loadNewPalette = TRUE;
+ }
+
+ if (loadNewPalette) {
+ paletteOffset = &gGlobalGfxAndPalettes[gUnk_080FC8DE[gUnk_02019EE0.unk2]];
+ LoadPalettes(&paletteOffset[0x11AA0], 11, 1);
+ LoadPalettes(&paletteOffset[0x11BA0], 12, 1);
+ LoadPalettes(&paletteOffset[0x11CA0], 13, 1);
+ LoadPalettes(&paletteOffset[0x11DA0], 14, 1);
+ }
+}
diff --git a/src/code_0805436C.c b/src/code_0805436C.c
index 47f8f4d2..4999aef0 100644
--- a/src/code_0805436C.c
+++ b/src/code_0805436C.c
@@ -7,7 +7,7 @@
typedef struct {
u8 filler[0xa8];
Stats stats;
-} struct_02002A40;
+} SaveFile;
typedef struct {
u8 unk;
@@ -19,7 +19,7 @@ typedef struct {
u8 unk;
} ScreenTransition;
-extern struct_02002A40 gUnk_02002A40;
+extern SaveFile gUnk_02002A40;
extern struct_080FD5B4 gUnk_080FD5B4[];
extern ScreenTransition gScreenTransition;
diff --git a/src/code_0807CC3C.c b/src/code_0807CC3C.c
index e0cbbe90..45f67fd8 100644
--- a/src/code_0807CC3C.c
+++ b/src/code_0807CC3C.c
@@ -35,10 +35,10 @@ u32 sub_0807CDE8(u32 arg0) {
sub_0805616C();
switch (arg0) {
case 0:
- temp = sub_0807CF08(gUnk_02000000->saveFile, gUnk_02002A40.filler0);
+ temp = sub_0807CF08(gUnk_02000000->saveFileId, gUnk_02002A40.filler0);
break;
case 1:
- sub_0807CF48(gUnk_02000000->saveFile);
+ sub_0807CF48(gUnk_02000000->saveFileId);
temp = 1;
break;
case 2:
@@ -113,7 +113,7 @@ u32 sub_0807CF1C(u8* arg0) {
return sub_0807CF88(5, arg0);
}
-u32 sub_0807CF28(u32 arg0, void* arg1) {
+int sub_0807CF28(u32 arg0, SaveFile* arg1) {
return sub_0807D008(arg0, arg1);
}
diff --git a/src/entity.c b/src/entity.c
index 1ceabce4..cae8ee22 100644
--- a/src/entity.c
+++ b/src/entity.c
@@ -215,7 +215,7 @@ void sub_0805E92C(u32 param_1)
}
extern Entity gUnk_020369F0;
-extern void sub_0801D66C(void* dst, void* src, size_t size); // dma copy
+extern void sub_0801D66C(const void* src, void* dest, size_t size); // dma copy
extern void sub_0805E98C(void);
void sub_0805E958(void)
diff --git a/src/ezloNag.c b/src/ezloNag.c
index bce5c8d5..67cb5113 100644
--- a/src/ezloNag.c
+++ b/src/ezloNag.c
@@ -2,6 +2,7 @@
#include "entity.h"
#include "functions.h"
#include "textbox.h"
+#include "structures.h"
typedef struct {
s8 unk0;
@@ -23,13 +24,6 @@ typedef struct {
u8 unk13;
} Element;
-typedef struct {
- u8 unk0[0x24];
- u8 ezloNagFuncIndex;
-} struct_0200AF00;
-
-extern struct_0200AF00 gUnk_0200AF00;
-
///////////////////////////////////////////////////////////////
extern void sub_0805ECEC(u32, u32, u32, u32);
diff --git a/src/intro.c b/src/intro.c
index 261becd8..53466e3b 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -22,6 +22,7 @@ typedef struct {
int swordBgScaleRatio;
} IntroState;
+// TODO: This occupies the same memory region as gMenu
extern IntroState gIntroState;
enum {
@@ -125,8 +126,6 @@ static void HandleNintendoCapcomLogos(void)
extern u16 gUnk_03001010[5];
-extern u8 gUnk_02024490;
-
static void HandleTitlescreen(void)
{
int advance;
@@ -142,7 +141,7 @@ static void HandleTitlescreen(void)
EraseAllEntities();
sub_0801CFA8(0);
sub_080ADD30();
- gUnk_02024490 = 1;
+ gUnk_02024490.unk0 = 1;
LoadGfxGroup(2);
if (((struct_02000000*)0x2000000)->gameLanguage == 0) {
paletteGroup = 3;
diff --git a/src/mainLoop.c b/src/mainLoop.c
index a09d1c97..c46fd8bf 100644
--- a/src/mainLoop.c
+++ b/src/mainLoop.c
@@ -34,7 +34,7 @@ void MainLoop(void) {
sub_08056208();
gUnk_02000010.field_0x4 = 193;
sub_0804FFE4();
- DmaSet(3, 0x5000000U, gPaletteBuffer, 0x84000080U);
+ DmaCopy32(3, BG_PLTT, gPaletteBuffer, BG_PLTT_SIZE);
sub_0804FF84(1);
sub_08056418();
sub_080ADD30();
diff --git a/src/npc/smith.c b/src/npc/smith.c
index ca588dba..dc222709 100644
--- a/src/npc/smith.c
+++ b/src/npc/smith.c
@@ -5,7 +5,7 @@
typedef struct {
u8 filler[8];
u8 unk;
-} struct_02002A40;
+} SaveFile;
extern u32 GetFacingDirection(Entity*, Entity*);
extern u32 sub_0806F5A4(u32);
@@ -33,7 +33,7 @@ extern void (*const gUnk_0811036C[])(Entity*);
extern u16 gUnk_08110380[];
extern SpriteLoadData gUnk_08110354;
-extern struct_02002A40 gUnk_02002A40;
+extern SaveFile gUnk_02002A40;
extern u32 gUnk_08110390[];
extern u16 gUnk_081103D0[];
extern u32 gUnk_081103E0;
diff --git a/src/npc/teachers.c b/src/npc/teachers.c
index 0d3a9527..53d4a11a 100644
--- a/src/npc/teachers.c
+++ b/src/npc/teachers.c
@@ -5,7 +5,7 @@
typedef struct {
u8 filler[8];
u8 unk;
-} struct_02002A40;
+} SaveFile;
extern SpriteLoadData gUnk_08113910[];
extern void sub_0805E3A0(Entity*, u32);
@@ -20,7 +20,7 @@ extern u32 UpdateFuseInteraction(Entity*);
extern void sub_0807000C(Entity*);
extern void ShowNPCDialogue(Entity*, u16*);
-extern struct_02002A40 gUnk_02002A40;
+extern SaveFile gUnk_02002A40;
extern u16 gUnk_08113930[];
void Teachers(Entity* this) {
diff --git a/src/object/object48.c b/src/object/object48.c
index bbac3950..7f93ea16 100755
--- a/src/object/object48.c
+++ b/src/object/object48.c
@@ -458,7 +458,7 @@ void sub_0808EF24(Entity* this) {
} else {
this->spriteSettings.b.draw = 2;
if (this->entityType.form == 21) {
- var0 = ((struct_02000000 *)0x2000000)->field_0x5;
+ var0 = ((struct_02000000 *)0x2000000)->messageSpeed;
} else {
var0 = ((struct_02000000 *)0x2000000)->brightnessPref;
}