summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-09-03 23:39:12 -0700
committerYamaArashi <shadow962@live.com>2016-09-03 23:39:12 -0700
commit4d518e8ea5c93c669eb14de89b5baf6eba1ac9b0 (patch)
treedc1798b5fe56c699edb76d24d2ee708be36bee6d
parentdbaf6e125020cac5d897983dc9dfbf8d3d74e589 (diff)
WIP menu.c
-rw-r--r--.gitignore5
-rw-r--r--Makefile3
-rw-r--r--asm/rom4.s4012
-rw-r--r--asm/rom_8072DF8.s1625
-rw-r--r--ewram_syms.txt8
-rw-r--r--include/text.h2
-rw-r--r--ld_script.txt5
-rw-r--r--src/menu.c1008
-rw-r--r--src/text.c2
9 files changed, 2656 insertions, 4014 deletions
diff --git a/.gitignore b/.gitignore
index 05643bb33..d6a173013 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,8 @@ tools/agbcc
ld_script_ruby.txt
ld_script_sapphire.txt
*.map
+*.id0
+*.id1
+*.id2
+*.nam
+*.til
diff --git a/Makefile b/Makefile
index a6bbdee16..0f5c31286 100644
--- a/Makefile
+++ b/Makefile
@@ -37,7 +37,8 @@ C_SRCS := $(wildcard src/*.c)
C_OBJS := $(C_SRCS:%.c=%.o)
ASM_OBJS := asm/crt0.o asm/rom3.o asm/rom_8040EB4.o asm/rom4.o asm/rom_8074BAC.o asm/rom5.o \
- asm/libgcnmultiboot.o asm/m4a_1.o asm/m4a_3.o asm/libagbsyscall.o
+asm/libgcnmultiboot.o asm/m4a_1.o asm/m4a_3.o asm/libagbsyscall.o \
+asm/rom_8072DF8.o
DATA_ASM_OBJS := data/data2.o data/graphics.o data/sound_data.o \
data/event_scripts.o data/battle_anim_scripts.o \
diff --git a/asm/rom4.s b/asm/rom4.s
index f125cead0..132008164 100644
--- a/asm/rom4.s
+++ b/asm/rom4.s
@@ -67288,4014 +67288,4 @@ append_byte: @ 8071C3C
bx lr
thumb_func_end append_byte
- thumb_func_start sub_8071C4C
-sub_8071C4C: @ 8071C4C
- push {lr}
- movs r1, 0x1
- bl sub_8071D48
- pop {r0}
- bx r0
- thumb_func_end sub_8071C4C
-
- thumb_func_start sub_8071C58
-sub_8071C58: @ 8071C58
- push {lr}
- movs r1, 0x1
- bl sub_8071C64
- pop {r0}
- bx r0
- thumb_func_end sub_8071C58
-
- thumb_func_start sub_8071C64
-sub_8071C64: @ 8071C64
- push {lr}
- adds r3, r0, 0
- ldr r2, _08071C84
- movs r0, 0
- strb r0, [r2]
- ldr r0, _08071C88
- strh r1, [r0]
- ldr r1, _08071C8C
- ldr r0, _08071C90
- str r0, [r1]
- adds r1, r3, 0
- bl InitWindowFromConfig
- pop {r0}
- bx r0
- .align 2, 0
-_08071C84: .4byte 0x0202e9cc
-_08071C88: .4byte 0x0202e9ce
-_08071C8C: .4byte 0x0202e9c8
-_08071C90: .4byte 0x0202e908
- thumb_func_end sub_8071C64
-
- thumb_func_start sub_8071C94
-sub_8071C94: @ 8071C94
- push {r4,lr}
- ldr r0, _08071CAC
- ldrb r1, [r0]
- adds r2, r0, 0
- cmp r1, 0x4
- bhi _08071D40
- lsls r0, r1, 2
- ldr r1, _08071CB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08071CAC: .4byte 0x0202e9cc
-_08071CB0: .4byte _08071CB4
- .align 2, 0
-_08071CB4:
- .4byte _08071CC8
- .4byte _08071CD0
- .4byte _08071CF0
- .4byte _08071CFA
- .4byte _08071D1C
-_08071CC8:
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _08071D40
-_08071CD0:
- ldr r4, _08071CE4
- ldr r0, _08071CE8
- ldr r0, [r0]
- ldr r1, _08071CEC
- ldrh r1, [r1]
- bl MultistepInitWindowTileData
- strh r0, [r4]
- b _08071D06
- .align 2, 0
-_08071CE4: .4byte 0x0202e9d0
-_08071CE8: .4byte 0x0202e9c8
-_08071CEC: .4byte 0x0202e9ce
-_08071CF0:
- bl MultistepLoadFont
- cmp r0, 0
- beq _08071D40
- b _08071D06
-_08071CFA:
- ldr r0, _08071D10
- ldrh r0, [r0]
- bl sub_8064EF4
- ldr r1, _08071D14
- strh r0, [r1]
-_08071D06:
- ldr r1, _08071D18
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08071D40
- .align 2, 0
-_08071D10: .4byte 0x0202e9d0
-_08071D14: .4byte 0x0202e9d2
-_08071D18: .4byte 0x0202e9cc
-_08071D1C:
- ldr r0, _08071D34
- ldr r0, [r0]
- bl sub_8064F08
- ldr r0, _08071D38
- ldrh r0, [r0]
- bl sub_80651C8
- ldr r1, _08071D3C
- strh r0, [r1]
- movs r0, 0x1
- b _08071D42
- .align 2, 0
-_08071D34: .4byte 0x0202e9c8
-_08071D38: .4byte 0x0202e9d2
-_08071D3C: .4byte 0x0202e9d4
-_08071D40:
- movs r0, 0
-_08071D42:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8071C94
-
- thumb_func_start sub_8071D48
-sub_8071D48: @ 8071D48
- push {r4,r5,lr}
- adds r2, r0, 0
- lsls r4, r1, 16
- lsrs r4, 16
- ldr r5, _08071D8C
- ldr r0, _08071D90
- str r0, [r5]
- adds r1, r2, 0
- bl InitWindowFromConfig
- ldr r1, _08071D94
- strh r4, [r1]
- ldr r0, [r5]
- ldrh r1, [r1]
- bl InitWindowTileData
- ldr r1, _08071D98
- strh r0, [r1]
- ldrh r0, [r1]
- bl sub_8064EF4
- ldr r4, _08071D9C
- strh r0, [r4]
- ldr r0, [r5]
- bl sub_8064F08
- ldrh r0, [r4]
- bl sub_80651C8
- ldr r1, _08071DA0
- strh r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08071D8C: .4byte 0x0202e9c8
-_08071D90: .4byte 0x0202e908
-_08071D94: .4byte 0x0202e9ce
-_08071D98: .4byte 0x0202e9d0
-_08071D9C: .4byte 0x0202e9d2
-_08071DA0: .4byte 0x0202e9d4
- thumb_func_end sub_8071D48
-
- thumb_func_start unref_sub_8071DA4
-unref_sub_8071DA4: @ 8071DA4
- push {r4,r5,lr}
- adds r2, r0, 0
- lsls r4, r1, 16
- lsrs r4, 16
- ldr r5, _08071DE8
- ldr r0, _08071DEC
- str r0, [r5]
- adds r1, r2, 0
- bl InitWindowFromConfig
- ldr r0, _08071DF0
- strh r4, [r0]
- ldrh r0, [r0]
- bl sub_8064EF4
- ldr r4, _08071DF4
- strh r0, [r4]
- ldr r0, [r5]
- bl sub_8064F08
- ldrh r0, [r4]
- bl sub_80651C8
- ldr r1, _08071DF8
- strh r0, [r1]
- ldr r0, [r5]
- ldrh r1, [r1]
- bl InitWindowTileData
- ldr r1, _08071DFC
- strh r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08071DE8: .4byte 0x0202e9c8
-_08071DEC: .4byte 0x0202e908
-_08071DF0: .4byte 0x0202e9d0
-_08071DF4: .4byte 0x0202e9d2
-_08071DF8: .4byte 0x0202e9ce
-_08071DFC: .4byte 0x0202e9d4
- thumb_func_end unref_sub_8071DA4
-
- thumb_func_start sub_8071E00
-sub_8071E00: @ 8071E00
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08071E14
- ldr r0, [r0]
- bl sub_8064F6C
- pop {r0}
- bx r0
- .align 2, 0
-_08071E14: .4byte 0x0202e9c8
- thumb_func_end sub_8071E00
-
- thumb_func_start GetMapNamePopUpWindowId
-GetMapNamePopUpWindowId: @ 8071E18
- push {lr}
- ldr r0, _08071E28
- ldr r0, [r0]
- bl sub_8064F08
- pop {r0}
- bx r0
- .align 2, 0
-_08071E28: .4byte 0x0202e9c8
- thumb_func_end GetMapNamePopUpWindowId
-
- thumb_func_start sub_8071E2C
-sub_8071E2C: @ 8071E2C
- push {r4,lr}
- adds r1, r0, 0
- ldr r4, _08071E48
- ldr r0, [r4]
- bl InitWindowFromConfig
- ldr r1, [r4]
- ldr r0, _08071E4C
- ldrh r0, [r0]
- strh r0, [r1, 0x1A]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08071E48: .4byte 0x0202e9c8
-_08071E4C: .4byte 0x0202e9ce
- thumb_func_end sub_8071E2C
-
- thumb_func_start Print
-Print: @ 8071E50
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r3, r1, 0
- lsls r3, 24
- lsrs r3, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _08071E7C
- ldr r0, [r0]
- ldr r1, _08071E80
- ldrh r4, [r1]
- str r2, [sp]
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_8003460
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08071E7C: .4byte 0x0202e9c8
-_08071E80: .4byte 0x0202e9ce
- thumb_func_end Print
-
- thumb_func_start Reset
-Reset: @ 8071E84
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _08071EB8
- ldr r0, [r0]
- str r3, [sp]
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl ZeroFillWindowRect
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08071EB8: .4byte 0x0202e9c8
- thumb_func_end Reset
-
- thumb_func_start sub_8071EBC
-sub_8071EBC: @ 8071EBC
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _08071EF0
- ldr r0, [r0]
- str r3, [sp]
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl FillWindowRectWithBlankTile
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08071EF0: .4byte 0x0202e9c8
- thumb_func_end sub_8071EBC
-
- thumb_func_start sub_8071EF4
-sub_8071EF4: @ 8071EF4
- push {lr}
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl Reset
- pop {r0}
- bx r0
- thumb_func_end sub_8071EF4
-
- thumb_func_start DrawDefaultWindow
-DrawDefaultWindow: @ 8071F08
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _08071F3C
- ldr r0, [r0]
- str r3, [sp]
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl AddTextPrinterParametrized
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08071F3C: .4byte 0x0202e9c8
- thumb_func_end DrawDefaultWindow
-
- thumb_func_start sub_8071F40
-sub_8071F40: @ 8071F40
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x2
- movs r1, 0xE
- movs r2, 0x1C
- movs r3, 0x13
- bl DrawDefaultWindow
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0xF
- bl Print
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8071F40
-
- thumb_func_start sub_8071F60
-sub_8071F60: @ 8071F60
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r3, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _08071F90
- ldr r0, [r0]
- ldr r1, _08071F94
- ldrh r5, [r1]
- str r2, [sp]
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_8003490
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08071F90: .4byte 0x0202e9c8
-_08071F94: .4byte 0x0202e9ce
- thumb_func_end sub_8071F60
-
- thumb_func_start unref_sub_8071F98
-unref_sub_8071F98: @ 8071F98
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- lsls r3, 24
- lsrs r3, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _08071FB8
- ldr r0, [r0]
- adds r1, r3, 0
- bl GetWindowTilemapEntry
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_08071FB8: .4byte 0x0202e9c8
- thumb_func_end unref_sub_8071F98
-
- thumb_func_start unref_sub_8071FBC
-unref_sub_8071FBC: @ 8071FBC
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- ldr r1, [sp, 0x18]
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08071FF8
- ldr r0, [r0]
- str r3, [sp]
- str r1, [sp, 0x4]
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl DrawWindowRect
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08071FF8: .4byte 0x0202e9c8
- thumb_func_end unref_sub_8071FBC
-
- thumb_func_start sub_8071FFC
-sub_8071FFC: @ 8071FFC
- push {lr}
- ldr r0, _0807200C
- ldr r0, [r0]
- bl copy_textbox_border_tile_patterns_to_vram
- pop {r0}
- bx r0
- .align 2, 0
-_0807200C: .4byte 0x0202e9c8
- thumb_func_end sub_8071FFC
-
- thumb_func_start AddTextPrinterWithCallbackForMessage
-AddTextPrinterWithCallbackForMessage: @ 8072010
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r3, r1, 0
- lsls r3, 24
- lsrs r3, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0807203C
- ldr r0, [r0]
- ldr r1, _08072040
- ldrh r4, [r1]
- str r2, [sp]
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_8002EB0
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807203C: .4byte 0x0202e9c8
-_08072040: .4byte 0x0202e9ce
- thumb_func_end AddTextPrinterWithCallbackForMessage
-
- thumb_func_start sub_8072044
-sub_8072044: @ 8072044
- push {lr}
- sub sp, 0x4
- adds r1, r0, 0
- ldr r0, _08072064
- ldr r0, [r0]
- ldr r2, _08072068
- ldrh r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08072064: .4byte 0x0202e9c8
-_08072068: .4byte 0x0202e9ce
- thumb_func_end sub_8072044
-
- thumb_func_start sub_807206C
-sub_807206C: @ 807206C
- push {lr}
- adds r1, r0, 0
- ldr r0, _0807207C
- ldr r0, [r0]
- bl sub_8002E90
- pop {r0}
- bx r0
- .align 2, 0
-_0807207C: .4byte 0x0202e9c8
- thumb_func_end sub_807206C
-
- thumb_func_start sub_8072080
-sub_8072080: @ 8072080
- push {lr}
- ldr r0, _08072094
- ldr r0, [r0]
- bl sub_80035AC
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08072094: .4byte 0x0202e9c8
- thumb_func_end sub_8072080
-
- thumb_func_start unref_sub_8072098
-unref_sub_8072098: @ 8072098
- push {lr}
- ldr r0, _080720AC
- ldr r0, [r0]
- bl sub_8003418
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080720AC: .4byte 0x0202e9c8
- thumb_func_end unref_sub_8072098
-
- thumb_func_start sub_80720B0
-sub_80720B0: @ 80720B0
- push {lr}
- ldr r0, _080720C0
- ldr r0, [r0]
- bl ClearWindowTextLines
- pop {r0}
- bx r0
- .align 2, 0
-_080720C0: .4byte 0x0202e9c8
- thumb_func_end sub_80720B0
-
- thumb_func_start MoveMenuCursor
-MoveMenuCursor: @ 80720C4
- push {r4,lr}
- ldr r1, _080720E0
- movs r2, 0x2
- ldrsb r2, [r1, r2]
- lsls r0, 24
- asrs r3, r0, 24
- adds r2, r3
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- adds r4, r1, 0
- cmp r2, r0
- bge _080720E4
- ldrb r0, [r4, 0x4]
- b _080720F4
- .align 2, 0
-_080720E0: .4byte 0x030006b0
-_080720E4:
- movs r0, 0x4
- ldrsb r0, [r4, r0]
- cmp r2, r0
- ble _080720F0
- ldrb r0, [r4, 0x3]
- b _080720F4
-_080720F0:
- ldrb r0, [r4, 0x2]
- adds r0, r3, r0
-_080720F4:
- strb r0, [r4, 0x2]
- ldrb r0, [r4]
- movs r1, 0x2
- ldrsb r1, [r4, r1]
- lsls r1, 1
- ldrb r2, [r4, 0x1]
- adds r1, r2
- lsls r1, 24
- lsrs r1, 24
- bl RedrawMenuCursor
- ldrb r0, [r4, 0x2]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MoveMenuCursor
-
- thumb_func_start MoveMenuCursorNoWrapAround
-MoveMenuCursorNoWrapAround: @ 8072114
- push {r4,lr}
- ldr r1, _08072130
- movs r2, 0x2
- ldrsb r2, [r1, r2]
- lsls r0, 24
- asrs r3, r0, 24
- adds r2, r3
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- adds r4, r1, 0
- cmp r2, r0
- bge _08072134
- ldrb r0, [r4, 0x3]
- b _08072144
- .align 2, 0
-_08072130: .4byte 0x030006b0
-_08072134:
- movs r0, 0x4
- ldrsb r0, [r4, r0]
- cmp r2, r0
- ble _08072140
- ldrb r0, [r4, 0x4]
- b _08072144
-_08072140:
- ldrb r0, [r4, 0x2]
- adds r0, r3, r0
-_08072144:
- strb r0, [r4, 0x2]
- ldrb r0, [r4]
- movs r1, 0x2
- ldrsb r1, [r4, r1]
- lsls r1, 1
- ldrb r2, [r4, 0x1]
- adds r1, r2
- lsls r1, 24
- lsrs r1, 24
- bl RedrawMenuCursor
- ldrb r0, [r4, 0x2]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MoveMenuCursorNoWrapAround
-
- thumb_func_start GetMenuCursorPos
-GetMenuCursorPos: @ 8072164
- ldr r0, _0807216C
- ldrb r0, [r0, 0x2]
- bx lr
- .align 2, 0
-_0807216C: .4byte 0x030006b0
- thumb_func_end GetMenuCursorPos
-
- thumb_func_start ProcessMenuInput
-ProcessMenuInput: @ 8072170
- push {r4,lr}
- ldr r0, _08072198
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080721A0
- movs r0, 0x5
- bl audio_play
- ldr r4, _0807219C
- ldrb r0, [r4, 0x7]
- cmp r0, 0
- beq _08072190
- bl sub_8072DEC
-_08072190:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _080721EC
- .align 2, 0
-_08072198: .4byte 0x03001770
-_0807219C: .4byte 0x030006b0
-_080721A0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080721C0
- ldr r0, _080721BC
- ldrb r0, [r0, 0x7]
- cmp r0, 0
- beq _080721B4
- bl sub_8072DEC
-_080721B4:
- movs r0, 0x1
- negs r0, r0
- b _080721EC
- .align 2, 0
-_080721BC: .4byte 0x030006b0
-_080721C0:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080721D4
- movs r0, 0x5
- bl audio_play
- movs r0, 0x1
- negs r0, r0
- b _080721E4
-_080721D4:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080721E8
- movs r0, 0x5
- bl audio_play
- movs r0, 0x1
-_080721E4:
- bl MoveMenuCursor
-_080721E8:
- movs r0, 0x2
- negs r0, r0
-_080721EC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInput
-
- thumb_func_start ProcessMenuInputNoWrap
-ProcessMenuInputNoWrap: @ 80721F4
- push {r4-r6,lr}
- ldr r4, _08072220
- ldrb r5, [r4, 0x2]
- adds r6, r5, 0
- ldr r0, _08072224
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08072228
- movs r0, 0x5
- bl audio_play
- ldrb r0, [r4, 0x7]
- cmp r0, 0
- beq _08072218
- bl sub_8072DEC
-_08072218:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _08072288
- .align 2, 0
-_08072220: .4byte 0x030006b0
-_08072224: .4byte 0x03001770
-_08072228:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08072240
- ldrb r0, [r4, 0x7]
- cmp r0, 0
- beq _0807223A
- bl sub_8072DEC
-_0807223A:
- movs r0, 0x1
- negs r0, r0
- b _08072288
-_08072240:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08072260
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _08072284
- movs r0, 0x5
- bl audio_play
- b _08072284
-_08072260:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0807227E
- movs r0, 0x1
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _08072284
- movs r0, 0x5
- bl audio_play
- b _08072284
-_0807227E:
- movs r0, 0
- bl MoveMenuCursorNoWrapAround
-_08072284:
- movs r0, 0x2
- negs r0, r0
-_08072288:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInputNoWrap
-
- thumb_func_start MoveMenuCursor3
-MoveMenuCursor3: @ 8072290
- push {r4-r7,lr}
- ldr r2, _080722B8
- movs r4, 0x4
- ldrsb r4, [r2, r4]
- adds r1, r4, 0x1
- asrs r1, 1
- lsls r1, 24
- lsrs r7, r1, 24
- movs r1, 0x2
- ldrsb r1, [r2, r1]
- lsls r0, 24
- asrs r3, r0, 24
- adds r1, r3
- movs r0, 0x3
- ldrsb r0, [r2, r0]
- adds r6, r2, 0
- cmp r1, r0
- bge _080722BC
- ldrb r0, [r6, 0x4]
- b _080722C8
- .align 2, 0
-_080722B8: .4byte 0x030006b0
-_080722BC:
- cmp r1, r4
- ble _080722C4
- ldrb r0, [r6, 0x3]
- b _080722C8
-_080722C4:
- ldrb r0, [r6, 0x2]
- adds r0, r3, r0
-_080722C8:
- strb r0, [r6, 0x2]
- movs r5, 0x2
- ldrsb r5, [r6, r5]
- adds r0, r5, 0
- adds r1, r7, 0
- bl __divsi3
- lsls r4, r0, 1
- adds r4, r0
- lsls r4, 1
- ldrb r0, [r6]
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- adds r1, r7, 0
- bl __modsi3
- adds r1, r0, 0
- lsls r1, 1
- ldrb r0, [r6, 0x1]
- adds r1, r0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl RedrawMenuCursor
- ldrb r0, [r6, 0x2]
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end MoveMenuCursor3
-
- thumb_func_start MoveMenuCursor4
-MoveMenuCursor4: @ 8072308
- push {r4-r7,lr}
- ldr r6, _08072330
- movs r1, 0x2
- ldrsb r1, [r6, r1]
- lsls r0, 24
- asrs r4, r0, 24
- adds r1, r4
- movs r0, 0x4
- ldrsb r0, [r6, r0]
- cmp r1, r0
- bgt _08072334
- bl sub_80723D4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08072338
- ldrb r0, [r6, 0x2]
- b _080723C8
- .align 2, 0
-_08072330: .4byte 0x030006b0
-_08072334:
- ldrb r0, [r6, 0x2]
- b _080723C8
-_08072338:
- ldrb r0, [r6, 0x2]
- adds r0, r4, r0
- strb r0, [r6, 0x2]
- movs r0, 0x4
- ldrsb r0, [r6, r0]
- adds r0, 0x1
- ldrb r7, [r6, 0x5]
- adds r1, r7, 0
- bl __divsi3
- cmp r0, 0
- bne _0807238E
- movs r5, 0x2
- ldrsb r5, [r6, r5]
- adds r0, r5, 0
- adds r1, r7, 0
- bl __modsi3
- adds r1, r6, 0
- adds r1, 0x8
- adds r0, r1
- ldrb r4, [r0]
- ldrb r0, [r6]
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- adds r1, r7, 0
- bl __divsi3
- ldrb r1, [r6, 0x6]
- bl __modsi3
- adds r1, r0, 0
- lsls r1, 1
- ldrb r6, [r6, 0x1]
- adds r1, r6
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl RedrawMenuCursor
- b _080723C4
-_0807238E:
- movs r5, 0x2
- ldrsb r5, [r6, r5]
- adds r0, r5, 0
- adds r1, r7, 0
- bl __modsi3
- adds r1, r6, 0
- adds r1, 0x8
- adds r0, r1
- ldrb r4, [r0]
- ldrb r0, [r6]
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- adds r1, r7, 0
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 1
- ldrb r6, [r6, 0x1]
- adds r1, r6
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl RedrawMenuCursor
-_080723C4:
- ldr r0, _080723D0
- ldrb r0, [r0, 0x2]
-_080723C8:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080723D0: .4byte 0x030006b0
- thumb_func_end MoveMenuCursor4
-
- thumb_func_start sub_80723D4
-sub_80723D4: @ 80723D4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r2, _08072470
- ldrh r1, [r2, 0x2E]
- movs r0, 0x40
- ands r0, r1
- mov r8, r2
- cmp r0, 0
- beq _080723F4
- ldr r1, _08072474
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- ldrb r1, [r1, 0x5]
- cmp r0, r1
- blt _0807246C
-_080723F4:
- mov r0, r8
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08072414
- ldr r0, _08072474
- movs r2, 0x2
- ldrsb r2, [r0, r2]
- movs r1, 0x4
- ldrsb r1, [r0, r1]
- ldrb r0, [r0, 0x5]
- subs r0, 0x1
- subs r1, r0
- cmp r2, r1
- bge _0807246C
-_08072414:
- mov r0, r8
- ldrh r1, [r0, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0807244C
- ldr r6, _08072474
- movs r4, 0x2
- ldrsb r4, [r6, r4]
- ldrb r5, [r6, 0x5]
- adds r0, r4, 0
- adds r1, r5, 0
- bl __modsi3
- adds r7, r0, 0
- subs r4, r7
- adds r0, r4, 0
- adds r1, r5, 0
- bl __modsi3
- cmp r0, 0x1
- beq _0807246C
- movs r0, 0x2
- ldrsb r0, [r6, r0]
- cmp r0, 0
- beq _0807246C
- cmp r7, 0
- beq _0807246C
-_0807244C:
- mov r0, r8
- ldrh r1, [r0, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08072478
- ldr r1, _08072474
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- ldrb r4, [r1, 0x5]
- adds r1, r4, 0
- bl __modsi3
- subs r4, 0x1
- cmp r0, r4
- bne _08072478
-_0807246C:
- movs r0, 0x1
- b _0807247A
- .align 2, 0
-_08072470: .4byte 0x03001770
-_08072474: .4byte 0x030006b0
-_08072478:
- movs r0, 0
-_0807247A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80723D4
-
- thumb_func_start sub_8072484
-sub_8072484: @ 8072484
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r6, r0, 0
- mov r8, r1
- adds r5, r2, 0
- ldr r1, [sp, 0x24]
- ldr r4, [sp, 0x28]
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r5, 24
- lsrs r5, 24
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- lsls r1, 24
- lsrs r1, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r7, _080724F0
- strb r1, [r7, 0x5]
- adds r0, r5, 0
- bl __udivsi3
- strb r0, [r7, 0x6]
- mov r1, r9
- str r1, [sp]
- str r4, [sp, 0x4]
- movs r0, 0
- adds r1, r6, 0
- mov r2, r8
- adds r3, r5, 0
- bl InitMenu
- movs r0, 0
- ldr r1, [sp, 0x2C]
- cmp r1, 0
- beq _080724DE
- movs r0, 0xFF
-_080724DE:
- strb r0, [r7, 0x7]
- mov r0, r9
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080724F0: .4byte 0x030006b0
- thumb_func_end sub_8072484
-
- thumb_func_start sub_80724F4
-sub_80724F4: @ 80724F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r8, r3
- ldr r3, [sp, 0x2C]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x4]
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r5, r3, 24
- movs r4, 0
- ldr r0, _080725D4
- mov r9, r0
- mov r1, r9
- adds r1, 0x8
- movs r2, 0
-_08072524:
- adds r0, r4, r1
- strb r2, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bls _08072524
- movs r7, 0
- movs r4, 0
- lsrs r2, r6, 1
- mov r10, r2
- ldr r0, [sp, 0x4]
- lsls r0, 24
- str r0, [sp, 0x8]
- cmp r7, r6
- bcs _08072566
-_08072544:
- lsls r0, r4, 3
- add r0, r8
- ldr r0, [r0]
- bl sub_8072CA4
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0x7
- lsrs r0, r1, 3
- cmp r0, r7
- bls _0807255C
- adds r7, r0, 0
-_0807255C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _08072544
-_08072566:
- movs r4, 0x1
- ldr r2, _080725D4
- mov r9, r2
- cmp r4, r5
- bhi _08072582
- mov r1, r9
- adds r1, 0x8
-_08072574:
- adds r0, r4, r1
- strb r7, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bls _08072574
-_08072582:
- movs r4, 0x1
- cmp r4, r5
- bhi _080725A4
- ldr r3, _080725D8
-_0807258A:
- adds r2, r4, r3
- ldrb r1, [r2]
- subs r0, r4, 0x1
- adds r0, r3
- adds r1, 0x1
- ldrb r0, [r0]
- adds r1, r0
- strb r1, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bls _0807258A
-_080725A4:
- mov r1, r9
- adds r1, 0x8
- adds r1, r5, r1
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- cmp r10, r5
- bcc _080725BC
- movs r0, 0x1
- ands r0, r6
- cmp r0, 0
- beq _080725C4
-_080725BC:
- cmp r5, 0x1
- beq _080725C4
- cmp r5, r6
- bne _080725DC
-_080725C4:
- adds r0, r6, 0
- adds r1, r5, 0
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x1
- b _080725EA
- .align 2, 0
-_080725D4: .4byte 0x030006b0
-_080725D8: .4byte 0x030006b8
-_080725DC:
- adds r0, r6, 0
- adds r1, r5, 0
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x3
-_080725EA:
- ldr r2, [sp, 0x8]
- asrs r1, r2, 24
- adds r1, r0
- lsls r1, 24
- lsrs r3, r1, 24
- mov r0, r9
- adds r0, 0x8
- adds r0, r5, r0
- ldrb r2, [r0]
- adds r2, 0x1
- ldr r0, [sp]
- adds r2, r0, r2
- lsls r2, 24
- lsrs r2, 24
- ldr r1, [sp, 0x4]
- bl DrawDefaultWindow
- adds r0, r7, 0
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80724F4
-
- thumb_func_start sub_8072620
-sub_8072620: @ 8072620
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- mov r10, r3
- ldr r3, [sp, 0x30]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x4]
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r6, r3, 24
- movs r4, 0
- ldr r7, _08072744
- adds r1, r7, 0
- adds r1, 0x8
- movs r2, 0
-_08072650:
- adds r0, r4, r1
- strb r2, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bls _08072650
- movs r5, 0
- movs r4, 0
- cmp r4, r8
- bcs _08072688
-_08072666:
- lsls r0, r4, 3
- add r0, r10
- ldr r0, [r0]
- bl sub_8072CA4
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0x7
- lsrs r0, r1, 3
- cmp r0, r5
- bls _0807267E
- adds r5, r0, 0
-_0807267E:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r8
- bcc _08072666
-_08072688:
- movs r4, 0x1
- ldr r7, _08072744
- cmp r4, r6
- bhi _080726A2
- adds r1, r7, 0
- adds r1, 0x8
-_08072694:
- adds r0, r4, r1
- strb r5, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bls _08072694
-_080726A2:
- movs r4, 0x1
- cmp r4, r6
- bhi _080726C4
- ldr r3, _08072748
-_080726AA:
- adds r2, r4, r3
- ldrb r1, [r2]
- subs r0, r4, 0x1
- adds r0, r3
- adds r1, 0x1
- ldrb r0, [r0]
- adds r1, r0
- strb r1, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bls _080726AA
-_080726C4:
- adds r1, r7, 0
- adds r1, 0x8
- adds r1, r6, r1
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- movs r4, 0
- cmp r4, r6
- bcs _08072732
-_080726D6:
- movs r7, 0
- movs r5, 0
- adds r0, r4, 0x1
- mov r9, r0
- cmp r4, r8
- bge _08072728
- adds r0, r4, 0
- adds r1, r6, 0
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08072748
- adds r0, r1
- str r0, [sp, 0xC]
-_080726F4:
- adds r0, r4, r5
- lsls r0, 3
- add r0, r10
- ldr r0, [r0]
- ldr r2, [sp, 0xC]
- ldrb r1, [r2]
- ldr r3, [sp]
- adds r1, r3, r1
- lsls r1, 24
- lsrs r1, 24
- lsls r2, r7, 1
- ldr r3, [sp, 0x4]
- adds r2, r3, r2
- lsls r2, 24
- lsrs r2, 24
- bl Print
- adds r0, r5, r6
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r4, r5
- cmp r0, r8
- blt _080726F4
-_08072728:
- mov r1, r9
- lsls r0, r1, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _080726D6
-_08072732:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08072744: .4byte 0x030006b0
-_08072748: .4byte 0x030006b8
- thumb_func_end sub_8072620
-
- thumb_func_start sub_807274C
-sub_807274C: @ 807274C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- adds r4, r0, 0
- adds r5, r1, 0
- mov r8, r2
- mov r9, r3
- ldr r7, [sp, 0x28]
- ldr r6, [sp, 0x2C]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r6, 24
- lsrs r6, 24
- str r6, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, r8
- adds r3, r7, 0
- bl sub_80724F4
- lsls r0, 24
- lsrs r0, 24
- adds r4, 0x1
- lsls r4, 24
- lsrs r4, 24
- adds r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- str r6, [sp]
- str r0, [sp, 0x4]
- ldr r0, [sp, 0x30]
- str r0, [sp, 0x8]
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, r8
- mov r3, r9
- bl sub_8072484
- str r6, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, r8
- adds r3, r7, 0
- bl sub_8072620
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_807274C
-
- thumb_func_start sub_80727CC
-sub_80727CC: @ 80727CC
- push {lr}
- ldr r0, _080727F8
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08072800
- ldr r0, _080727FC
- ldrb r0, [r0, 0x7]
- cmp r0, 0
- beq _080727E6
- bl sub_8072DEC
-_080727E6:
- movs r0, 0x5
- bl audio_play
- bl GetMenuCursorPos
- lsls r0, 24
- asrs r0, 24
- b _08072888
- .align 2, 0
-_080727F8: .4byte 0x03001770
-_080727FC: .4byte 0x030006b0
-_08072800:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08072820
- ldr r0, _0807281C
- ldrb r0, [r0, 0x7]
- cmp r0, 0
- beq _08072814
- bl sub_8072DEC
-_08072814:
- movs r0, 0x1
- negs r0, r0
- b _08072888
- .align 2, 0
-_0807281C: .4byte 0x030006b0
-_08072820:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08072840
- movs r0, 0x5
- bl audio_play
- ldr r0, _0807283C
- ldrb r0, [r0, 0x5]
- negs r0, r0
- lsls r0, 24
- asrs r0, 24
- b _08072880
- .align 2, 0
-_0807283C: .4byte 0x030006b0
-_08072840:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0807285C
- movs r0, 0x5
- bl audio_play
- ldr r0, _08072858
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- b _08072880
- .align 2, 0
-_08072858: .4byte 0x030006b0
-_0807285C:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08072870
- movs r0, 0x5
- bl audio_play
- movs r0, 0x1
- negs r0, r0
- b _08072880
-_08072870:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08072884
- movs r0, 0x5
- bl audio_play
- movs r0, 0x1
-_08072880:
- bl MoveMenuCursor4
-_08072884:
- movs r0, 0x2
- negs r0, r0
-_08072888:
- pop {r1}
- bx r1
- thumb_func_end sub_80727CC
-
- thumb_func_start sub_807288C
-sub_807288C: @ 807288C
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0807289C
- adds r1, 0x8
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0807289C: .4byte 0x030006b0
- thumb_func_end sub_807288C
-
- thumb_func_start PrintStringArray
-PrintStringArray: @ 80728A0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r3
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- movs r4, 0
- cmp r4, r5
- bcs _080728D8
-_080728BA:
- lsls r0, r4, 3
- add r0, r8
- ldr r0, [r0]
- lsls r2, r4, 1
- adds r2, r6, r2
- lsls r2, 24
- lsrs r2, 24
- adds r1, r7, 0
- bl Print
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _080728BA
-_080728D8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end PrintStringArray
-
- thumb_func_start sub_80728E4
-sub_80728E4: @ 80728E4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r3
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- movs r4, 0
- cmp r4, r5
- bcs _08072922
-_080728FE:
- ldr r1, [sp, 0x18]
- adds r0, r1, r4
- ldrb r0, [r0]
- lsls r0, 3
- add r0, r8
- ldr r0, [r0]
- lsls r2, r4, 1
- adds r2, r6, r2
- lsls r2, 24
- lsrs r2, 24
- adds r1, r7, 0
- bl Print
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _080728FE
-_08072922:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80728E4
-
- thumb_func_start sub_807292C
-sub_807292C: @ 807292C
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsls r5, 24
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0x80
- lsls r0, 17
- adds r4, r0
- lsrs r4, 24
- adds r5, r0
- lsrs r5, 24
- ldr r3, _08072970
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x2
- bl PrintStringArray
- movs r0, 0
- str r0, [sp]
- str r6, [sp, 0x4]
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x2
- bl InitMenu
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08072970: .4byte gUnknown_08376D74
- thumb_func_end sub_807292C
-
- thumb_func_start sub_8072974
-sub_8072974: @ 8072974
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- adds r3, r1, 0
- mov r8, r2
- lsls r4, 24
- lsls r3, 24
- lsrs r6, r4, 24
- movs r0, 0xC0
- lsls r0, 19
- adds r4, r0
- lsrs r4, 24
- lsrs r5, r3, 24
- movs r2, 0xA0
- lsls r2, 19
- adds r3, r2
- lsrs r3, 24
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl DrawDefaultWindow
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x5
- bl sub_807292C
- ldr r1, _080729C4
- movs r0, 0
- mov r2, r8
- cmp r2, 0
- beq _080729B8
- movs r0, 0xFF
-_080729B8:
- strb r0, [r1, 0x7]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080729C4: .4byte 0x030006b0
- thumb_func_end sub_8072974
-
- thumb_func_start FillWindowPixelBuffer
-FillWindowPixelBuffer: @ 80729C8
- push {lr}
- bl ProcessMenuInputNoWrap
- lsls r0, 24
- asrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end FillWindowPixelBuffer
-
- thumb_func_start sub_80729D8
-sub_80729D8: @ 80729D8
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _08072A10
- ldr r0, [r0]
- ldr r1, _08072A14
- ldrh r5, [r1]
- str r2, [sp]
- str r3, [sp, 0x4]
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_8004D04
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08072A10: .4byte 0x0202e9c8
-_08072A14: .4byte 0x0202e9ce
- thumb_func_end sub_80729D8
-
- thumb_func_start sub_8072A18
-sub_8072A18: @ 8072A18
- push {r4-r6,lr}
- sub sp, 0x10
- adds r6, r0, 0
- ldr r5, [sp, 0x20]
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _08072A54
- ldr r0, [r0]
- ldr r4, _08072A58
- ldrh r4, [r4]
- str r1, [sp]
- str r2, [sp, 0x4]
- str r3, [sp, 0x8]
- str r5, [sp, 0xC]
- movs r1, 0
- adds r2, r6, 0
- adds r3, r4, 0
- bl sub_8004FD0
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08072A54: .4byte 0x0202e9c8
-_08072A58: .4byte 0x0202e9ce
- thumb_func_end sub_8072A18
-
- thumb_func_start unref_sub_8072A5C
-unref_sub_8072A5C: @ 8072A5C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x10
- mov r8, r0
- mov r9, r1
- ldr r4, [sp, 0x28]
- ldr r6, [sp, 0x2C]
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 16
- lsrs r3, 16
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08072AA8
- ldr r0, [r0]
- ldr r1, _08072AAC
- ldrh r5, [r1]
- str r2, [sp]
- str r3, [sp, 0x4]
- str r4, [sp, 0x8]
- str r6, [sp, 0xC]
- mov r1, r8
- mov r2, r9
- adds r3, r5, 0
- bl sub_8004FD0
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08072AA8: .4byte 0x0202e9c8
-_08072AAC: .4byte 0x0202e9ce
- thumb_func_end unref_sub_8072A5C
-
- thumb_func_start sub_8072AB0
-sub_8072AB0: @ 8072AB0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- mov r9, r0
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r0, [sp, 0x2C]
- ldr r2, [sp, 0x30]
- lsls r4, 24
- lsrs r1, r4, 24
- mov r12, r1
- lsls r5, 16
- lsrs r7, r5, 16
- lsls r3, 24
- lsrs r6, r3, 24
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _08072B44
- ldr r0, [r0]
- ldr r1, _08072B48
- ldrh r3, [r1]
- mov r1, r12
- str r1, [sp]
- str r7, [sp, 0x4]
- str r6, [sp, 0x8]
- str r2, [sp, 0xC]
- movs r1, 0
- mov r2, r9
- bl sub_8004FD0
- adds r1, r0, 0
- lsls r1, 24
- lsrs r2, r1, 24
- lsrs r4, 27
- mov r12, r4
- lsrs r7, r5, 19
- adds r1, r6, 0x7
- lsrs r6, r1, 3
- mov r1, r8
- adds r1, 0x7
- asrs r1, 3
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- cmp r2, r8
- bcs _08072B34
- lsls r1, r2, 1
- adds r1, r7, r1
- lsls r1, 24
- lsrs r1, 24
- mov r0, r12
- adds r2, r0, r6
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- mov r0, r8
- adds r3, r0, r7
- subs r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- mov r0, r12
- bl sub_8071EBC
-_08072B34:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08072B44: .4byte 0x0202e9c8
-_08072B48: .4byte 0x0202e9ce
- thumb_func_end sub_8072AB0
-
- thumb_func_start PrintCoinsString
-PrintCoinsString: @ 8072B4C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r3, r1, 0
- lsls r3, 24
- lsrs r3, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _08072B78
- ldr r0, [r0]
- ldr r1, _08072B7C
- ldrh r4, [r1]
- str r2, [sp]
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_8004D38
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08072B78: .4byte 0x0202e9c8
-_08072B7C: .4byte 0x0202e9ce
- thumb_func_end PrintCoinsString
-
- thumb_func_start sub_8072B80
-sub_8072B80: @ 8072B80
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x44
- mov r8, r0
- adds r6, r1, 0
- adds r5, r2, 0
- adds r1, r3, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _08072BD0
- ldr r0, [r4]
- bl GetStringWidth
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- ldr r0, [r4]
- movs r1, 0x1
- str r1, [sp]
- add r1, sp, 0x4
- mov r2, r8
- bl AlignString
- ldr r0, [r4]
- ldr r1, _08072BD4
- ldrh r2, [r1]
- str r5, [sp]
- add r1, sp, 0x4
- adds r3, r6, 0
- bl sub_8003460
- add sp, 0x44
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08072BD0: .4byte 0x0202e9c8
-_08072BD4: .4byte 0x0202e9ce
- thumb_func_end sub_8072B80
-
- thumb_func_start Free
-Free: @ 8072BD8
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 16
- lsrs r3, 16
- ldr r0, _08072C0C
- ldr r0, [r0]
- ldr r1, _08072C10
- ldrh r5, [r1]
- str r2, [sp]
- str r3, [sp, 0x4]
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_8004DB0
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08072C0C: .4byte 0x0202e9c8
-_08072C10: .4byte 0x0202e9ce
- thumb_func_end Free
-
- thumb_func_start sub_8072C14
-sub_8072C14: @ 8072C14
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- adds r4, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _08072C40
- ldr r0, [r0]
- str r3, [sp]
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r4, 0
- bl AlignInt1
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08072C40: .4byte 0x0202e9c8
- thumb_func_end sub_8072C14
-
- thumb_func_start sub_8072C44
-sub_8072C44: @ 8072C44
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- adds r4, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _08072C70
- ldr r0, [r0]
- str r3, [sp]
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r4, 0
- bl AlignInt2
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08072C70: .4byte 0x0202e9c8
- thumb_func_end sub_8072C44
-
- thumb_func_start sub_8072C74
-sub_8072C74: @ 8072C74
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- adds r4, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _08072CA0
- ldr r0, [r0]
- str r3, [sp]
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r4, 0
- bl AlignString
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08072CA0: .4byte 0x0202e9c8
- thumb_func_end sub_8072C74
-
- thumb_func_start sub_8072CA4
-sub_8072CA4: @ 8072CA4
- push {lr}
- adds r1, r0, 0
- ldr r0, _08072CB8
- ldr r0, [r0]
- bl GetStringWidth
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08072CB8: .4byte 0x0202e9c8
- thumb_func_end sub_8072CA4
-
- thumb_func_start sub_8072CBC
-sub_8072CBC: @ 8072CBC
- push {lr}
- ldr r0, _08072CD0
- ldr r0, [r0]
- bl sub_8004E24
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08072CD0: .4byte 0x0202e9c8
- thumb_func_end sub_8072CBC
-
- thumb_func_start sub_8072CD4
-sub_8072CD4: @ 8072CD4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r3, r2, 0
- ldr r0, _08072CF0
- ldr r0, [r0]
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_8004E28
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08072CF0: .4byte 0x0202e9c8
- thumb_func_end sub_8072CD4
-
- thumb_func_start sub_8072CF4
-sub_8072CF4: @ 8072CF4
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08072D08
- ldr r0, [r0]
- bl sub_80037C8
- pop {r1}
- bx r1
- .align 2, 0
-_08072D08: .4byte 0x0202e9c8
- thumb_func_end sub_8072CF4
-
- thumb_func_start unref_sub_8072D0C
-unref_sub_8072D0C: @ 8072D0C
- ldr r0, _08072D14
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_08072D14: .4byte 0x0202e9c8
- thumb_func_end unref_sub_8072D0C
-
- thumb_func_start sub_8072D18
-sub_8072D18: @ 8072D18
- push {lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08072D38
- ldr r3, _08072D3C
- lsls r1, 27
- lsrs r1, 24
- str r1, [sp]
- adds r1, r2, 0
- movs r2, 0xC
- bl sub_814A5C0
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08072D38: .4byte 0x0000ffff
-_08072D3C: .4byte 0x00002d9f
- thumb_func_end sub_8072D18
-
- thumb_func_start InitMenu
-InitMenu: @ 8072D40
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, [sp, 0x18]
- ldr r5, [sp, 0x1C]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r6, r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r1, r5, 24
- cmp r1, 0
- beq _08072D6C
- bl sub_8072D18
-_08072D6C:
- ldr r1, _08072DA4
- subs r0, r7, 0x1
- movs r2, 0
- strb r0, [r1]
- mov r0, r8
- strb r0, [r1, 0x1]
- strb r2, [r1, 0x3]
- subs r0, r6, 0x1
- strb r0, [r1, 0x4]
- strb r2, [r1, 0x7]
- cmp r4, 0
- blt _08072D8C
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r4, r0
- ble _08072D8E
-_08072D8C:
- movs r4, 0
-_08072D8E:
- strb r4, [r1, 0x2]
- movs r0, 0
- bl MoveMenuCursor
- adds r0, r4, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08072DA4: .4byte 0x030006b0
- thumb_func_end InitMenu
-
- thumb_func_start RedrawMenuCursor
-RedrawMenuCursor: @ 8072DA8
- push {lr}
- lsls r0, 27
- movs r2, 0x80
- lsls r2, 20
- adds r0, r2
- lsrs r0, 24
- lsls r1, 27
- lsrs r1, 24
- bl sub_814A880
- pop {r0}
- bx r0
- thumb_func_end RedrawMenuCursor
-
- thumb_func_start unref_sub_8072DC0
-unref_sub_8072DC0: @ 8072DC0
- push {lr}
- bl sub_814A904
- pop {r0}
- bx r0
- thumb_func_end unref_sub_8072DC0
-
- thumb_func_start sub_8072DCC
-sub_8072DCC: @ 8072DCC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_814A958
- pop {r0}
- bx r0
- thumb_func_end sub_8072DCC
-
- thumb_func_start sub_8072DDC
-sub_8072DDC: @ 8072DDC
- push {lr}
- lsls r0, 27
- lsrs r0, 24
- bl sub_8072DCC
- pop {r0}
- bx r0
- thumb_func_end sub_8072DDC
-
- thumb_func_start sub_8072DEC
-sub_8072DEC: @ 8072DEC
- push {lr}
- bl sub_814A7FC
- pop {r0}
- bx r0
- thumb_func_end sub_8072DEC
-
- thumb_func_start sub_8072DF8
-sub_8072DF8: @ 8072DF8
- push {lr}
- sub sp, 0x4
- ldr r1, _08072E18
- movs r0, 0
- strb r0, [r1]
- movs r0, 0
- str r0, [sp]
- ldr r1, _08072E1C
- ldr r2, _08072E20
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08072E18: .4byte 0x030006c0
-_08072E1C: .4byte 0x0202e9d8
-_08072E20: .4byte 0x0500003c
- thumb_func_end sub_8072DF8
-
- thumb_func_start sub_8072E24
-sub_8072E24: @ 8072E24
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 16
- lsrs r6, r2, 16
- ldr r3, _08072E6C
- ldrb r0, [r3]
- cmp r0, 0x13
- bhi _08072E64
- ldr r2, _08072E70
- adds r1, r0, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- str r4, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r1, r2, 0x4
- adds r0, r1
- str r5, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r6, [r0, 0x8]
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
-_08072E64:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08072E6C: .4byte 0x030006c0
-_08072E70: .4byte 0x0202e9d8
- thumb_func_end sub_8072E24
-
- thumb_func_start sub_8072E74
-sub_8072E74: @ 8072E74
- push {r4-r6,lr}
- movs r3, 0
- ldr r4, _08072EB0
- adds r6, r4, 0
- ldrb r0, [r4]
- cmp r3, r0
- bge _08072EA6
- ldr r2, _08072EB4
- ldr r1, _08072EB8
- movs r5, 0x80
- lsls r5, 24
-_08072E8A:
- ldr r0, [r1]
- str r0, [r2]
- ldr r0, [r1, 0x4]
- str r0, [r2, 0x4]
- ldrh r0, [r1, 0x8]
- lsrs r0, 1
- orrs r0, r5
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- adds r1, 0xC
- adds r3, 0x1
- ldrb r0, [r4]
- cmp r3, r0
- blt _08072E8A
-_08072EA6:
- movs r0, 0
- strb r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08072EB0: .4byte 0x030006c0
-_08072EB4: .4byte 0x040000d4
-_08072EB8: .4byte 0x0202e9d8
- thumb_func_end sub_8072E74
-
- thumb_func_start cur_mapheader_run_tileset_funcs_after_some_cpuset
-cur_mapheader_run_tileset_funcs_after_some_cpuset: @ 8072EBC
- push {lr}
- bl sub_8072DF8
- bl cur_mapheader_run_tileset1_func
- bl cur_mapheader_run_tileset2_func
- pop {r0}
- bx r0
- thumb_func_end cur_mapheader_run_tileset_funcs_after_some_cpuset
-
- thumb_func_start sub_8072ED0
-sub_8072ED0: @ 8072ED0
- push {lr}
- bl cur_mapheader_run_tileset2_func
- pop {r0}
- bx r0
- thumb_func_end sub_8072ED0
-
- thumb_func_start sub_8072EDC
-sub_8072EDC: @ 8072EDC
- push {r4,lr}
- bl sub_8072DF8
- ldr r2, _08072F34
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- ldr r1, _08072F38
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1]
- cmp r0, r1
- bcc _08072EFA
- movs r0, 0
- strh r0, [r2]
-_08072EFA:
- ldr r4, _08072F3C
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- ldr r1, _08072F40
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1]
- cmp r0, r1
- bcc _08072F12
- movs r0, 0
- strh r0, [r4]
-_08072F12:
- ldr r0, _08072F44
- ldr r1, [r0]
- cmp r1, 0
- beq _08072F20
- ldrh r0, [r2]
- bl _call_via_r1
-_08072F20:
- ldr r0, _08072F48
- ldr r1, [r0]
- cmp r1, 0
- beq _08072F2E
- ldrh r0, [r4]
- bl _call_via_r1
-_08072F2E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08072F34: .4byte 0x030006c2
-_08072F38: .4byte 0x030006c4
-_08072F3C: .4byte 0x030006c6
-_08072F40: .4byte 0x030006c8
-_08072F44: .4byte 0x030006cc
-_08072F48: .4byte 0x030006d0
- thumb_func_end sub_8072EDC
-
- thumb_func_start cur_mapheader_run_tileset1_func
-cur_mapheader_run_tileset1_func: @ 8072F4C
- push {lr}
- ldr r0, _08072F78
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08072F7C
- strh r1, [r0]
- ldr r1, _08072F80
- movs r0, 0
- str r0, [r1]
- ldr r0, _08072F84
- ldr r0, [r0]
- ldr r0, [r0, 0x10]
- cmp r0, 0
- beq _08072F72
- ldr r0, [r0, 0x14]
- cmp r0, 0
- beq _08072F72
- bl _call_via_r0
-_08072F72:
- pop {r0}
- bx r0
- .align 2, 0
-_08072F78: .4byte 0x030006c2
-_08072F7C: .4byte 0x030006c4
-_08072F80: .4byte 0x030006cc
-_08072F84: .4byte 0x0202e828
- thumb_func_end cur_mapheader_run_tileset1_func
-
- thumb_func_start cur_mapheader_run_tileset2_func
-cur_mapheader_run_tileset2_func: @ 8072F88
- push {lr}
- ldr r0, _08072FB4
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08072FB8
- strh r1, [r0]
- ldr r1, _08072FBC
- movs r0, 0
- str r0, [r1]
- ldr r0, _08072FC0
- ldr r0, [r0]
- ldr r0, [r0, 0x14]
- cmp r0, 0
- beq _08072FAE
- ldr r0, [r0, 0x14]
- cmp r0, 0
- beq _08072FAE
- bl _call_via_r0
-_08072FAE:
- pop {r0}
- bx r0
- .align 2, 0
-_08072FB4: .4byte 0x030006c6
-_08072FB8: .4byte 0x030006c8
-_08072FBC: .4byte 0x030006d0
-_08072FC0: .4byte 0x0202e828
- thumb_func_end cur_mapheader_run_tileset2_func
-
- thumb_func_start TilesetCB_General
-TilesetCB_General: @ 8072FC4
- ldr r1, _08072FDC
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08072FE0
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08072FE4
- ldr r0, _08072FE8
- str r0, [r1]
- bx lr
- .align 2, 0
-_08072FDC: .4byte 0x030006c2
-_08072FE0: .4byte 0x030006c4
-_08072FE4: .4byte 0x030006cc
-_08072FE8: .4byte sub_8073014
- thumb_func_end TilesetCB_General
-
- thumb_func_start TilesetCB_Building
-TilesetCB_Building: @ 8072FEC
- ldr r1, _08073004
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08073008
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _0807300C
- ldr r0, _08073010
- str r0, [r1]
- bx lr
- .align 2, 0
-_08073004: .4byte 0x030006c2
-_08073008: .4byte 0x030006c4
-_0807300C: .4byte 0x030006cc
-_08073010: .4byte sub_8073058
- thumb_func_end TilesetCB_Building
-
- thumb_func_start sub_8073014
-sub_8073014: @ 8073014
- push {r4,r5,lr}
- lsls r5, r0, 16
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r5
- lsrs r4, r0, 16
- cmp r4, 0
- bne _0807302A
- lsrs r0, r5, 20
- bl sub_8073070
-_0807302A:
- cmp r4, 0x1
- bne _08073034
- lsrs r0, r5, 20
- bl sub_8073098
-_08073034:
- cmp r4, 0x2
- bne _0807303E
- lsrs r0, r5, 20
- bl sub_80730C0
-_0807303E:
- cmp r4, 0x3
- bne _08073048
- lsrs r0, r5, 20
- bl sub_80730E8
-_08073048:
- cmp r4, 0x4
- bne _08073052
- lsrs r0, r5, 20
- bl sub_807361C
-_08073052:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8073014
-
- thumb_func_start sub_8073058
-sub_8073058: @ 8073058
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r1
- cmp r0, 0
- bne _0807306C
- lsrs r0, r1, 19
- bl sub_8073904
-_0807306C:
- pop {r0}
- bx r0
- thumb_func_end sub_8073058
-
- thumb_func_start sub_8073070
-sub_8073070: @ 8073070
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, _08073090
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, _08073094
- movs r2, 0x80
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_08073090: .4byte gTilesetAnimTable_General_0
-_08073094: .4byte 0x06003f80
- thumb_func_end sub_8073070
-
- thumb_func_start sub_8073098
-sub_8073098: @ 8073098
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x7
- ands r0, r1
- ldr r1, _080730B8
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080730BC
- movs r2, 0xF0
- lsls r2, 2
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_080730B8: .4byte gTilesetAnimTable_General_1
-_080730BC: .4byte 0x06003600
- thumb_func_end sub_8073098
-
- thumb_func_start sub_80730C0
-sub_80730C0: @ 80730C0
- push {lr}
- lsls r0, 16
- movs r1, 0xE0
- lsls r1, 11
- ands r1, r0
- ldr r0, _080730E0
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, _080730E4
- movs r2, 0xA0
- lsls r2, 1
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_080730E0: .4byte gTilesetAnimTable_General_2
-_080730E4: .4byte 0x06003a00
- thumb_func_end sub_80730C0
-
- thumb_func_start sub_80730E8
-sub_80730E8: @ 80730E8
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, _08073108
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, _0807310C
- movs r2, 0xC0
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_08073108: .4byte gTilesetAnimTable_General_3
-_0807310C: .4byte 0x06003e00
- thumb_func_end sub_80730E8
-
- thumb_func_start TilesetCB_Petalburg
-TilesetCB_Petalburg: @ 8073110
- ldr r1, _08073128
- movs r0, 0
- strh r0, [r1]
- ldr r1, _0807312C
- ldr r0, _08073130
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _08073134
- movs r0, 0
- str r0, [r1]
- bx lr
- .align 2, 0
-_08073128: .4byte 0x030006c6
-_0807312C: .4byte 0x030006c8
-_08073130: .4byte 0x030006c4
-_08073134: .4byte 0x030006d0
- thumb_func_end TilesetCB_Petalburg
-
- thumb_func_start TilesetCB_Rustboro
-TilesetCB_Rustboro: @ 8073138
- ldr r1, _08073150
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08073154
- ldr r0, _08073158
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _0807315C
- ldr r0, _08073160
- str r0, [r1]
- bx lr
- .align 2, 0
-_08073150: .4byte 0x030006c6
-_08073154: .4byte 0x030006c8
-_08073158: .4byte 0x030006c4
-_0807315C: .4byte 0x030006d0
-_08073160: .4byte sub_8073424
- thumb_func_end TilesetCB_Rustboro
-
- thumb_func_start TilesetCB_Dewford
-TilesetCB_Dewford: @ 8073164
- ldr r1, _0807317C
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08073180
- ldr r0, _08073184
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _08073188
- movs r0, 0
- str r0, [r1]
- bx lr
- .align 2, 0
-_0807317C: .4byte 0x030006c6
-_08073180: .4byte 0x030006c8
-_08073184: .4byte 0x030006c4
-_08073188: .4byte 0x030006d0
- thumb_func_end TilesetCB_Dewford
-
- thumb_func_start TilesetCB_Slateport
-TilesetCB_Slateport: @ 807318C
- ldr r1, _080731A4
- movs r0, 0
- strh r0, [r1]
- ldr r1, _080731A8
- ldr r0, _080731AC
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _080731B0
- movs r0, 0
- str r0, [r1]
- bx lr
- .align 2, 0
-_080731A4: .4byte 0x030006c6
-_080731A8: .4byte 0x030006c8
-_080731AC: .4byte 0x030006c4
-_080731B0: .4byte 0x030006d0
- thumb_func_end TilesetCB_Slateport
-
- thumb_func_start TilesetCB_Mauville
-TilesetCB_Mauville: @ 80731B4
- ldr r1, _080731CC
- ldr r0, _080731D0
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _080731D4
- ldr r0, _080731D8
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _080731DC
- ldr r0, _080731E0
- str r0, [r1]
- bx lr
- .align 2, 0
-_080731CC: .4byte 0x030006c6
-_080731D0: .4byte 0x030006c2
-_080731D4: .4byte 0x030006c8
-_080731D8: .4byte 0x030006c4
-_080731DC: .4byte 0x030006d0
-_080731E0: .4byte sub_80734A0
- thumb_func_end TilesetCB_Mauville
-
- thumb_func_start TilesetCB_Lavaridge
-TilesetCB_Lavaridge: @ 80731E4
- ldr r1, _080731FC
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08073200
- ldr r0, _08073204
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _08073208
- ldr r0, _0807320C
- str r0, [r1]
- bx lr
- .align 2, 0
-_080731FC: .4byte 0x030006c6
-_08073200: .4byte 0x030006c8
-_08073204: .4byte 0x030006c4
-_08073208: .4byte 0x030006d0
-_0807320C: .4byte sub_8073514
- thumb_func_end TilesetCB_Lavaridge
-
- thumb_func_start TilesetCB_Fallarbor
-TilesetCB_Fallarbor: @ 8073210
- ldr r1, _08073228
- movs r0, 0
- strh r0, [r1]
- ldr r1, _0807322C
- ldr r0, _08073230
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _08073234
- movs r0, 0
- str r0, [r1]
- bx lr
- .align 2, 0
-_08073228: .4byte 0x030006c6
-_0807322C: .4byte 0x030006c8
-_08073230: .4byte 0x030006c4
-_08073234: .4byte 0x030006d0
- thumb_func_end TilesetCB_Fallarbor
-
- thumb_func_start TilesetCB_Fortree
-TilesetCB_Fortree: @ 8073238
- ldr r1, _08073250
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08073254
- ldr r0, _08073258
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _0807325C
- movs r0, 0
- str r0, [r1]
- bx lr
- .align 2, 0
-_08073250: .4byte 0x030006c6
-_08073254: .4byte 0x030006c8
-_08073258: .4byte 0x030006c4
-_0807325C: .4byte 0x030006d0
- thumb_func_end TilesetCB_Fortree
-
- thumb_func_start TilesetCB_Lilycove
-TilesetCB_Lilycove: @ 8073260
- ldr r1, _08073278
- movs r0, 0
- strh r0, [r1]
- ldr r1, _0807327C
- ldr r0, _08073280
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _08073284
- movs r0, 0
- str r0, [r1]
- bx lr
- .align 2, 0
-_08073278: .4byte 0x030006c6
-_0807327C: .4byte 0x030006c8
-_08073280: .4byte 0x030006c4
-_08073284: .4byte 0x030006d0
- thumb_func_end TilesetCB_Lilycove
-
- thumb_func_start TilesetCB_Mossdeep
-TilesetCB_Mossdeep: @ 8073288
- ldr r1, _080732A0
- movs r0, 0
- strh r0, [r1]
- ldr r1, _080732A4
- ldr r0, _080732A8
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _080732AC
- movs r0, 0
- str r0, [r1]
- bx lr
- .align 2, 0
-_080732A0: .4byte 0x030006c6
-_080732A4: .4byte 0x030006c8
-_080732A8: .4byte 0x030006c4
-_080732AC: .4byte 0x030006d0
- thumb_func_end TilesetCB_Mossdeep
-
- thumb_func_start TilesetCB_EverGrande
-TilesetCB_EverGrande: @ 80732B0
- ldr r1, _080732C8
- movs r0, 0
- strh r0, [r1]
- ldr r1, _080732CC
- ldr r0, _080732D0
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _080732D4
- ldr r0, _080732D8
- str r0, [r1]
- bx lr
- .align 2, 0
-_080732C8: .4byte 0x030006c6
-_080732CC: .4byte 0x030006c8
-_080732D0: .4byte 0x030006c4
-_080732D4: .4byte 0x030006d0
-_080732D8: .4byte sub_8073540
- thumb_func_end TilesetCB_EverGrande
-
- thumb_func_start TilesetCB_Pacifidlog
-TilesetCB_Pacifidlog: @ 80732DC
- ldr r1, _080732F4
- ldr r0, _080732F8
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _080732FC
- ldr r0, _08073300
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _08073304
- ldr r0, _08073308
- str r0, [r1]
- bx lr
- .align 2, 0
-_080732F4: .4byte 0x030006c6
-_080732F8: .4byte 0x030006c2
-_080732FC: .4byte 0x030006c8
-_08073300: .4byte 0x030006c4
-_08073304: .4byte 0x030006d0
-_08073308: .4byte sub_80735B4
- thumb_func_end TilesetCB_Pacifidlog
-
- thumb_func_start TilesetCB_Sootopolis
-TilesetCB_Sootopolis: @ 807330C
- ldr r1, _08073324
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08073328
- ldr r0, _0807332C
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _08073330
- movs r0, 0
- str r0, [r1]
- bx lr
- .align 2, 0
-_08073324: .4byte 0x030006c6
-_08073328: .4byte 0x030006c8
-_0807332C: .4byte 0x030006c4
-_08073330: .4byte 0x030006d0
- thumb_func_end TilesetCB_Sootopolis
-
- thumb_func_start TilesetCB_Underwater
-TilesetCB_Underwater: @ 8073334
- ldr r1, _08073348
- movs r0, 0
- strh r0, [r1]
- ldr r1, _0807334C
- movs r0, 0x80
- strh r0, [r1]
- ldr r1, _08073350
- ldr r0, _08073354
- str r0, [r1]
- bx lr
- .align 2, 0
-_08073348: .4byte 0x030006c6
-_0807334C: .4byte 0x030006c8
-_08073350: .4byte 0x030006d0
-_08073354: .4byte sub_80735E4
- thumb_func_end TilesetCB_Underwater
-
- thumb_func_start TilesetCB_SootopolisGym
-TilesetCB_SootopolisGym: @ 8073358
- ldr r1, _0807336C
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08073370
- movs r0, 0xF0
- strh r0, [r1]
- ldr r1, _08073374
- ldr r0, _08073378
- str r0, [r1]
- bx lr
- .align 2, 0
-_0807336C: .4byte 0x030006c6
-_08073370: .4byte 0x030006c8
-_08073374: .4byte 0x030006d0
-_08073378: .4byte sub_80738A8
- thumb_func_end TilesetCB_SootopolisGym
-
- thumb_func_start TilesetCB_Cave
-TilesetCB_Cave: @ 807337C
- ldr r1, _08073394
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08073398
- ldr r0, _0807339C
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _080733A0
- ldr r0, _080733A4
- str r0, [r1]
- bx lr
- .align 2, 0
-_08073394: .4byte 0x030006c6
-_08073398: .4byte 0x030006c8
-_0807339C: .4byte 0x030006c4
-_080733A0: .4byte 0x030006d0
-_080733A4: .4byte sub_8073600
- thumb_func_end TilesetCB_Cave
-
- thumb_func_start TilesetCB_EliteFour
-TilesetCB_EliteFour: @ 80733A8
- ldr r1, _080733BC
- movs r0, 0
- strh r0, [r1]
- ldr r1, _080733C0
- movs r0, 0x80
- strh r0, [r1]
- ldr r1, _080733C4
- ldr r0, _080733C8
- str r0, [r1]
- bx lr
- .align 2, 0
-_080733BC: .4byte 0x030006c6
-_080733C0: .4byte 0x030006c8
-_080733C4: .4byte 0x030006d0
-_080733C8: .4byte sub_80738C0
- thumb_func_end TilesetCB_EliteFour
-
- thumb_func_start TilesetCB_MauvilleGym
-TilesetCB_MauvilleGym: @ 80733CC
- ldr r1, _080733E4
- movs r0, 0
- strh r0, [r1]
- ldr r1, _080733E8
- ldr r0, _080733EC
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _080733F0
- ldr r0, _080733F4
- str r0, [r1]
- bx lr
- .align 2, 0
-_080733E4: .4byte 0x030006c6
-_080733E8: .4byte 0x030006c8
-_080733EC: .4byte 0x030006c4
-_080733F0: .4byte 0x030006d0
-_080733F4: .4byte sub_8073890
- thumb_func_end TilesetCB_MauvilleGym
-
- thumb_func_start TilesetCB_BikeShop
-TilesetCB_BikeShop: @ 80733F8
- ldr r1, _08073410
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08073414
- ldr r0, _08073418
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, _0807341C
- ldr r0, _08073420
- str r0, [r1]
- bx lr
- .align 2, 0
-_08073410: .4byte 0x030006c6
-_08073414: .4byte 0x030006c8
-_08073418: .4byte 0x030006c4
-_0807341C: .4byte 0x030006d0
-_08073420: .4byte sub_80738EC
- thumb_func_end TilesetCB_BikeShop
-
- thumb_func_start sub_8073424
-sub_8073424: @ 8073424
- push {r4-r6,lr}
- lsls r5, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r5
- lsrs r6, r0, 16
- cmp r6, 0
- bne _08073444
- lsrs r4, r5, 19
- adds r0, r4, 0
- movs r1, 0
- bl sub_80737A4
- adds r0, r4, 0
- bl sub_80737E0
-_08073444:
- cmp r6, 0x1
- bne _08073450
- lsrs r0, r5, 19
- movs r1, 0x1
- bl sub_80737A4
-_08073450:
- cmp r6, 0x2
- bne _0807345C
- lsrs r0, r5, 19
- movs r1, 0x2
- bl sub_80737A4
-_0807345C:
- cmp r6, 0x3
- bne _08073468
- lsrs r0, r5, 19
- movs r1, 0x3
- bl sub_80737A4
-_08073468:
- cmp r6, 0x4
- bne _08073474
- lsrs r0, r5, 19
- movs r1, 0x4
- bl sub_80737A4
-_08073474:
- cmp r6, 0x5
- bne _08073480
- lsrs r0, r5, 19
- movs r1, 0x5
- bl sub_80737A4
-_08073480:
- cmp r6, 0x6
- bne _0807348C
- lsrs r0, r5, 19
- movs r1, 0x6
- bl sub_80737A4
-_0807348C:
- cmp r6, 0x7
- bne _08073498
- lsrs r0, r5, 19
- movs r1, 0x7
- bl sub_80737A4
-_08073498:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8073424
-
- thumb_func_start sub_80734A0
-sub_80734A0: @ 80734A0
- push {r4,r5,lr}
- lsls r4, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r4
- lsrs r5, r0, 16
- cmp r5, 0
- bne _080734B8
- lsrs r0, r4, 19
- movs r1, 0
- bl sub_8073704
-_080734B8:
- cmp r5, 0x1
- bne _080734C4
- lsrs r0, r4, 19
- movs r1, 0x1
- bl sub_8073704
-_080734C4:
- cmp r5, 0x2
- bne _080734D0
- lsrs r0, r4, 19
- movs r1, 0x2
- bl sub_8073704
-_080734D0:
- cmp r5, 0x3
- bne _080734DC
- lsrs r0, r4, 19
- movs r1, 0x3
- bl sub_8073704
-_080734DC:
- cmp r5, 0x4
- bne _080734E8
- lsrs r0, r4, 19
- movs r1, 0x4
- bl sub_8073704
-_080734E8:
- cmp r5, 0x5
- bne _080734F4
- lsrs r0, r4, 19
- movs r1, 0x5
- bl sub_8073704
-_080734F4:
- cmp r5, 0x6
- bne _08073500
- lsrs r0, r4, 19
- movs r1, 0x6
- bl sub_8073704
-_08073500:
- cmp r5, 0x7
- bne _0807350C
- lsrs r0, r4, 19
- movs r1, 0x7
- bl sub_8073704
-_0807350C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80734A0
-
- thumb_func_start sub_8073514
-sub_8073514: @ 8073514
- push {r4,r5,lr}
- lsls r4, r0, 16
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r4
- lsrs r5, r0, 16
- cmp r5, 0
- bne _0807352E
- lsrs r0, r4, 20
- lsls r0, 24
- lsrs r0, 24
- bl sub_8073644
-_0807352E:
- cmp r5, 0x1
- bne _08073538
- lsrs r0, r4, 20
- bl sub_8073808
-_08073538:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8073514
-
- thumb_func_start sub_8073540
-sub_8073540: @ 8073540
- push {r4,r5,lr}
- lsls r4, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r4
- lsrs r5, r0, 16
- cmp r5, 0
- bne _08073558
- lsrs r0, r4, 19
- movs r1, 0
- bl sub_8073830
-_08073558:
- cmp r5, 0x1
- bne _08073564
- lsrs r0, r4, 19
- movs r1, 0x1
- bl sub_8073830
-_08073564:
- cmp r5, 0x2
- bne _08073570
- lsrs r0, r4, 19
- movs r1, 0x2
- bl sub_8073830
-_08073570:
- cmp r5, 0x3
- bne _0807357C
- lsrs r0, r4, 19
- movs r1, 0x3
- bl sub_8073830
-_0807357C:
- cmp r5, 0x4
- bne _08073588
- lsrs r0, r4, 19
- movs r1, 0x4
- bl sub_8073830
-_08073588:
- cmp r5, 0x5
- bne _08073594
- lsrs r0, r4, 19
- movs r1, 0x5
- bl sub_8073830
-_08073594:
- cmp r5, 0x6
- bne _080735A0
- lsrs r0, r4, 19
- movs r1, 0x6
- bl sub_8073830
-_080735A0:
- cmp r5, 0x7
- bne _080735AC
- lsrs r0, r4, 19
- movs r1, 0x7
- bl sub_8073830
-_080735AC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8073540
-
- thumb_func_start sub_80735B4
-sub_80735B4: @ 80735B4
- push {r4,r5,lr}
- lsls r4, r0, 16
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r4
- lsrs r5, r0, 16
- cmp r5, 0
- bne _080735CE
- lsrs r0, r4, 20
- lsls r0, 24
- lsrs r0, 24
- bl sub_807368C
-_080735CE:
- cmp r5, 0x1
- bne _080735DC
- lsrs r0, r4, 20
- lsls r0, 24
- lsrs r0, 24
- bl sub_80736DC
-_080735DC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80735B4
-
- thumb_func_start sub_80735E4
-sub_80735E4: @ 80735E4
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r1
- cmp r0, 0
- bne _080735FC
- lsrs r0, r1, 20
- lsls r0, 24
- lsrs r0, 24
- bl sub_80736B4
-_080735FC:
- pop {r0}
- bx r0
- thumb_func_end sub_80735E4
-
- thumb_func_start sub_8073600
-sub_8073600: @ 8073600
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r1
- lsrs r0, 16
- cmp r0, 0x1
- bne _08073616
- lsrs r0, r1, 20
- bl sub_8073868
-_08073616:
- pop {r0}
- bx r0
- thumb_func_end sub_8073600
-
- thumb_func_start sub_807361C
-sub_807361C: @ 807361C
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, _0807363C
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, _08073640
- movs r2, 0xA0
- lsls r2, 1
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_0807363C: .4byte gTilesetAnimTable_General_4
-_08073640: .4byte 0x06003c00
- thumb_func_end sub_807361C
-
- thumb_func_start sub_8073644
-sub_8073644: @ 8073644
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x3
- ands r0, r4
- ldr r5, _08073680
- lsls r0, 2
- adds r0, r5
- ldr r0, [r0]
- ldr r1, _08073684
- movs r2, 0x80
- bl sub_8072E24
- adds r1, r4, 0x2
- adds r0, r1, 0
- asrs r0, 2
- lsls r0, 2
- subs r0, r1, r0
- lsls r0, 24
- lsrs r0, 22
- adds r0, r5
- ldr r0, [r0]
- ldr r1, _08073688
- movs r2, 0x80
- bl sub_8072E24
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08073680: .4byte gTilesetAnimTable_Lavaridge
-_08073684: .4byte 0x06006400
-_08073688: .4byte 0x06006480
- thumb_func_end sub_8073644
-
- thumb_func_start sub_807368C
-sub_807368C: @ 807368C
- push {lr}
- lsls r0, 24
- movs r1, 0xC0
- lsls r1, 18
- ands r1, r0
- ldr r0, _080736AC
- lsrs r1, 22
- adds r1, r0
- ldr r0, [r1]
- ldr r1, _080736B0
- movs r2, 0xF0
- lsls r2, 2
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_080736AC: .4byte gTilesetAnimTable_Pacifidlog_0
-_080736B0: .4byte 0x06007a00
- thumb_func_end sub_807368C
-
- thumb_func_start sub_80736B4
-sub_80736B4: @ 80736B4
- push {lr}
- lsls r0, 24
- movs r1, 0xC0
- lsls r1, 18
- ands r1, r0
- ldr r0, _080736D4
- lsrs r1, 22
- adds r1, r0
- ldr r0, [r1]
- ldr r1, _080736D8
- movs r2, 0x80
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_080736D4: .4byte gTilesetAnimTable_Underwater
-_080736D8: .4byte 0x06007e00
- thumb_func_end sub_80736B4
-
- thumb_func_start sub_80736DC
-sub_80736DC: @ 80736DC
- push {lr}
- lsls r0, 24
- movs r1, 0xE0
- lsls r1, 19
- ands r1, r0
- ldr r0, _080736FC
- lsrs r1, 22
- adds r1, r0
- ldr r0, [r1]
- ldr r1, _08073700
- movs r2, 0x80
- lsls r2, 1
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_080736FC: .4byte gTilesetAnimTable_Pacifidlog_1
-_08073700: .4byte 0x06007e00
- thumb_func_end sub_80736DC
-
- thumb_func_start sub_8073704
-sub_8073704: @ 8073704
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r6, r1, 24
- subs r0, r5, r6
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xB
- bhi _08073760
- adds r0, r5, 0
- movs r1, 0xC
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- ldr r0, _08073750
- lsrs r4, 14
- adds r0, r4, r0
- ldr r0, [r0]
- ldr r1, _08073754
- lsls r5, r6, 2
- adds r1, r5, r1
- ldr r1, [r1]
- movs r2, 0x80
- bl sub_8072E24
- ldr r0, _08073758
- adds r4, r0
- ldr r0, [r4]
- ldr r1, _0807375C
- adds r5, r1
- ldr r1, [r5]
- movs r2, 0x80
- bl sub_8072E24
- b _0807378C
- .align 2, 0
-_08073750: .4byte gTilesetAnimTable_Mauville_0A
-_08073754: .4byte gUnknown_0837BAE4
-_08073758: .4byte gTilesetAnimTable_Mauville_1A
-_0807375C: .4byte gUnknown_0837BB04
-_08073760:
- movs r0, 0x3
- ands r5, r0
- ldr r0, _08073794
- lsls r5, 2
- adds r0, r5, r0
- ldr r0, [r0]
- ldr r1, _08073798
- lsls r4, r6, 2
- adds r1, r4, r1
- ldr r1, [r1]
- movs r2, 0x80
- bl sub_8072E24
- ldr r0, _0807379C
- adds r5, r0
- ldr r0, [r5]
- ldr r1, _080737A0
- adds r4, r1
- ldr r1, [r4]
- movs r2, 0x80
- bl sub_8072E24
-_0807378C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08073794: .4byte gTilesetAnimTable_Mauville_0B
-_08073798: .4byte gUnknown_0837BAE4
-_0807379C: .4byte gTilesetAnimTable_Mauville_1B
-_080737A0: .4byte gUnknown_0837BB04
- thumb_func_end sub_8073704
-
- thumb_func_start sub_80737A4
-sub_80737A4: @ 80737A4
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r3, r1, 24
- subs r0, r3
- lsls r0, 16
- movs r1, 0xE0
- lsls r1, 11
- ands r1, r0
- ldr r0, _080737D8
- lsrs r1, 14
- adds r1, r0
- ldr r2, [r1]
- cmp r2, 0
- beq _080737D4
- ldr r0, _080737DC
- lsls r1, r3, 2
- adds r1, r0
- ldr r1, [r1]
- adds r0, r2, 0
- movs r2, 0x80
- bl sub_8072E24
-_080737D4:
- pop {r0}
- bx r0
- .align 2, 0
-_080737D8: .4byte gTilesetAnimTable_Rustboro_0
-_080737DC: .4byte gUnknown_0837BFA4
- thumb_func_end sub_80737A4
-
- thumb_func_start sub_80737E0
-sub_80737E0: @ 80737E0
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- ldr r1, _08073800
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08073804
- movs r2, 0x80
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_08073800: .4byte gTilesetAnimTable_Rustboro_1
-_08073804: .4byte 0x06007800
- thumb_func_end sub_80737E0
-
- thumb_func_start sub_8073808
-sub_8073808: @ 8073808
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, _08073828
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, _0807382C
- movs r2, 0x80
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_08073828: .4byte gTilesetAnimTable_Cave
-_0807382C: .4byte 0x06005400
- thumb_func_end sub_8073808
-
- thumb_func_start sub_8073830
-sub_8073830: @ 8073830
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r1, 24
- subs r0, r1
- lsls r0, 16
- movs r2, 0xE0
- lsls r2, 11
- ands r2, r0
- ldr r0, _08073860
- lsrs r2, 14
- adds r2, r0
- ldr r0, [r2]
- ldr r2, _08073864
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- movs r2, 0x80
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_08073860: .4byte gTilesetAnimTable_EverGrande
-_08073864: .4byte gUnknown_0837C93C
- thumb_func_end sub_8073830
-
- thumb_func_start sub_8073868
-sub_8073868: @ 8073868
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, _08073888
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, _0807388C
- movs r2, 0x80
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_08073888: .4byte gTilesetAnimTable_Cave
-_0807388C: .4byte 0x06007400
- thumb_func_end sub_8073868
-
- thumb_func_start sub_8073890
-sub_8073890: @ 8073890
- push {lr}
- lsls r2, r0, 16
- lsrs r0, r2, 16
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080738A4
- lsrs r0, r2, 17
- bl sub_80739C4
-_080738A4:
- pop {r0}
- bx r0
- thumb_func_end sub_8073890
-
- thumb_func_start sub_80738A8
-sub_80738A8: @ 80738A8
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r1
- cmp r0, 0
- bne _080738BC
- lsrs r0, r1, 19
- bl sub_807392C
-_080738BC:
- pop {r0}
- bx r0
- thumb_func_end sub_80738A8
-
- thumb_func_start sub_80738C0
-sub_80738C0: @ 80738C0
- push {r4,r5,lr}
- lsls r4, r0, 16
- lsrs r0, r4, 16
- adds r5, r0, 0
- movs r0, 0x3F
- ands r0, r5
- cmp r0, 0
- bne _080738D6
- lsrs r0, r4, 22
- bl sub_807399C
-_080738D6:
- movs r0, 0x7
- ands r0, r5
- cmp r0, 0x1
- bne _080738E4
- lsrs r0, r4, 19
- bl sub_8073974
-_080738E4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80738C0
-
- thumb_func_start sub_80738EC
-sub_80738EC: @ 80738EC
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xC0
- lsls r0, 10
- ands r0, r1
- cmp r0, 0
- bne _08073900
- lsrs r0, r1, 18
- bl sub_80739EC
-_08073900:
- pop {r0}
- bx r0
- thumb_func_end sub_80738EC
-
- thumb_func_start sub_8073904
-sub_8073904: @ 8073904
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- ldr r1, _08073924
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08073928
- movs r2, 0x80
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_08073924: .4byte gTilesetAnimTable_Building
-_08073928: .4byte 0x06003e00
- thumb_func_end sub_8073904
-
- thumb_func_start sub_807392C
-sub_807392C: @ 807392C
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- ldr r0, _08073964
- lsrs r4, 14
- adds r0, r4, r0
- ldr r0, [r0]
- ldr r1, _08073968
- movs r2, 0xC0
- lsls r2, 1
- bl sub_8072E24
- ldr r0, _0807396C
- adds r4, r0
- ldr r0, [r4]
- ldr r1, _08073970
- movs r2, 0xA0
- lsls r2, 2
- bl sub_8072E24
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08073964: .4byte gTilesetAnimTable_SootopolisGym_0
-_08073968: .4byte 0x06007e00
-_0807396C: .4byte gTilesetAnimTable_SootopolisGym_1
-_08073970: .4byte 0x06007a00
- thumb_func_end sub_807392C
-
- thumb_func_start sub_8073974
-sub_8073974: @ 8073974
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, _08073994
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, _08073998
- movs r2, 0x20
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_08073994: .4byte gTilesetAnimTable_EliteFour_0
-_08073998: .4byte 0x06007f00
- thumb_func_end sub_8073974
-
- thumb_func_start sub_807399C
-sub_807399C: @ 807399C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- ldr r1, _080739BC
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080739C0
- movs r2, 0x80
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_080739BC: .4byte gTilesetAnimTable_EliteFour_1
-_080739C0: .4byte 0x06007c00
- thumb_func_end sub_807399C
-
- thumb_func_start sub_80739C4
-sub_80739C4: @ 80739C4
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- ldr r1, _080739E4
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080739E8
- movs r2, 0x80
- lsls r2, 2
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_080739E4: .4byte gTilesetAnimTable_MauvilleGym
-_080739E8: .4byte 0x06005200
- thumb_func_end sub_80739C4
-
- thumb_func_start sub_80739EC
-sub_80739EC: @ 80739EC
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- ldr r1, _08073A0C
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08073A10
- movs r2, 0x90
- lsls r2, 1
- bl sub_8072E24
- pop {r0}
- bx r0
- .align 2, 0
-_08073A0C: .4byte gTilesetAnimTable_BikeShop
-_08073A10: .4byte 0x06007e00
- thumb_func_end sub_80739EC
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom_8072DF8.s b/asm/rom_8072DF8.s
new file mode 100644
index 000000000..0cbb0a207
--- /dev/null
+++ b/asm/rom_8072DF8.s
@@ -0,0 +1,1625 @@
+ .include "constants/gba_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8072DF8
+sub_8072DF8: @ 8072DF8
+ push {lr}
+ sub sp, 0x4
+ ldr r1, _08072E18
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0
+ str r0, [sp]
+ ldr r1, _08072E1C
+ ldr r2, _08072E20
+ mov r0, sp
+ bl CpuSet
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08072E18: .4byte 0x030006c0
+_08072E1C: .4byte 0x0202e9d8
+_08072E20: .4byte 0x0500003c
+ thumb_func_end sub_8072DF8
+
+ thumb_func_start sub_8072E24
+sub_8072E24: @ 8072E24
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 16
+ lsrs r6, r2, 16
+ ldr r3, _08072E6C
+ ldrb r0, [r3]
+ cmp r0, 0x13
+ bhi _08072E64
+ ldr r2, _08072E70
+ adds r1, r0, 0
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ str r4, [r0]
+ ldrb r1, [r3]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r2, 0x4
+ adds r0, r1
+ str r5, [r0]
+ ldrb r1, [r3]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r6, [r0, 0x8]
+ ldrb r0, [r3]
+ adds r0, 0x1
+ strb r0, [r3]
+_08072E64:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08072E6C: .4byte 0x030006c0
+_08072E70: .4byte 0x0202e9d8
+ thumb_func_end sub_8072E24
+
+ thumb_func_start sub_8072E74
+sub_8072E74: @ 8072E74
+ push {r4-r6,lr}
+ movs r3, 0
+ ldr r4, _08072EB0
+ adds r6, r4, 0
+ ldrb r0, [r4]
+ cmp r3, r0
+ bge _08072EA6
+ ldr r2, _08072EB4
+ ldr r1, _08072EB8
+ movs r5, 0x80
+ lsls r5, 24
+_08072E8A:
+ ldr r0, [r1]
+ str r0, [r2]
+ ldr r0, [r1, 0x4]
+ str r0, [r2, 0x4]
+ ldrh r0, [r1, 0x8]
+ lsrs r0, 1
+ orrs r0, r5
+ str r0, [r2, 0x8]
+ ldr r0, [r2, 0x8]
+ adds r1, 0xC
+ adds r3, 0x1
+ ldrb r0, [r4]
+ cmp r3, r0
+ blt _08072E8A
+_08072EA6:
+ movs r0, 0
+ strb r0, [r6]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08072EB0: .4byte 0x030006c0
+_08072EB4: .4byte 0x040000d4
+_08072EB8: .4byte 0x0202e9d8
+ thumb_func_end sub_8072E74
+
+ thumb_func_start cur_mapheader_run_tileset_funcs_after_some_cpuset
+cur_mapheader_run_tileset_funcs_after_some_cpuset: @ 8072EBC
+ push {lr}
+ bl sub_8072DF8
+ bl cur_mapheader_run_tileset1_func
+ bl cur_mapheader_run_tileset2_func
+ pop {r0}
+ bx r0
+ thumb_func_end cur_mapheader_run_tileset_funcs_after_some_cpuset
+
+ thumb_func_start sub_8072ED0
+sub_8072ED0: @ 8072ED0
+ push {lr}
+ bl cur_mapheader_run_tileset2_func
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8072ED0
+
+ thumb_func_start sub_8072EDC
+sub_8072EDC: @ 8072EDC
+ push {r4,lr}
+ bl sub_8072DF8
+ ldr r2, _08072F34
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ ldr r1, _08072F38
+ lsls r0, 16
+ lsrs r0, 16
+ ldrh r1, [r1]
+ cmp r0, r1
+ bcc _08072EFA
+ movs r0, 0
+ strh r0, [r2]
+_08072EFA:
+ ldr r4, _08072F3C
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ ldr r1, _08072F40
+ lsls r0, 16
+ lsrs r0, 16
+ ldrh r1, [r1]
+ cmp r0, r1
+ bcc _08072F12
+ movs r0, 0
+ strh r0, [r4]
+_08072F12:
+ ldr r0, _08072F44
+ ldr r1, [r0]
+ cmp r1, 0
+ beq _08072F20
+ ldrh r0, [r2]
+ bl _call_via_r1
+_08072F20:
+ ldr r0, _08072F48
+ ldr r1, [r0]
+ cmp r1, 0
+ beq _08072F2E
+ ldrh r0, [r4]
+ bl _call_via_r1
+_08072F2E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08072F34: .4byte 0x030006c2
+_08072F38: .4byte 0x030006c4
+_08072F3C: .4byte 0x030006c6
+_08072F40: .4byte 0x030006c8
+_08072F44: .4byte 0x030006cc
+_08072F48: .4byte 0x030006d0
+ thumb_func_end sub_8072EDC
+
+ thumb_func_start cur_mapheader_run_tileset1_func
+cur_mapheader_run_tileset1_func: @ 8072F4C
+ push {lr}
+ ldr r0, _08072F78
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _08072F7C
+ strh r1, [r0]
+ ldr r1, _08072F80
+ movs r0, 0
+ str r0, [r1]
+ ldr r0, _08072F84
+ ldr r0, [r0]
+ ldr r0, [r0, 0x10]
+ cmp r0, 0
+ beq _08072F72
+ ldr r0, [r0, 0x14]
+ cmp r0, 0
+ beq _08072F72
+ bl _call_via_r0
+_08072F72:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08072F78: .4byte 0x030006c2
+_08072F7C: .4byte 0x030006c4
+_08072F80: .4byte 0x030006cc
+_08072F84: .4byte 0x0202e828
+ thumb_func_end cur_mapheader_run_tileset1_func
+
+ thumb_func_start cur_mapheader_run_tileset2_func
+cur_mapheader_run_tileset2_func: @ 8072F88
+ push {lr}
+ ldr r0, _08072FB4
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _08072FB8
+ strh r1, [r0]
+ ldr r1, _08072FBC
+ movs r0, 0
+ str r0, [r1]
+ ldr r0, _08072FC0
+ ldr r0, [r0]
+ ldr r0, [r0, 0x14]
+ cmp r0, 0
+ beq _08072FAE
+ ldr r0, [r0, 0x14]
+ cmp r0, 0
+ beq _08072FAE
+ bl _call_via_r0
+_08072FAE:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08072FB4: .4byte 0x030006c6
+_08072FB8: .4byte 0x030006c8
+_08072FBC: .4byte 0x030006d0
+_08072FC0: .4byte 0x0202e828
+ thumb_func_end cur_mapheader_run_tileset2_func
+
+ thumb_func_start TilesetCB_General
+TilesetCB_General: @ 8072FC4
+ ldr r1, _08072FDC
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _08072FE0
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _08072FE4
+ ldr r0, _08072FE8
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08072FDC: .4byte 0x030006c2
+_08072FE0: .4byte 0x030006c4
+_08072FE4: .4byte 0x030006cc
+_08072FE8: .4byte sub_8073014
+ thumb_func_end TilesetCB_General
+
+ thumb_func_start TilesetCB_Building
+TilesetCB_Building: @ 8072FEC
+ ldr r1, _08073004
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _08073008
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _0807300C
+ ldr r0, _08073010
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08073004: .4byte 0x030006c2
+_08073008: .4byte 0x030006c4
+_0807300C: .4byte 0x030006cc
+_08073010: .4byte sub_8073058
+ thumb_func_end TilesetCB_Building
+
+ thumb_func_start sub_8073014
+sub_8073014: @ 8073014
+ push {r4,r5,lr}
+ lsls r5, r0, 16
+ movs r0, 0xF0
+ lsls r0, 12
+ ands r0, r5
+ lsrs r4, r0, 16
+ cmp r4, 0
+ bne _0807302A
+ lsrs r0, r5, 20
+ bl sub_8073070
+_0807302A:
+ cmp r4, 0x1
+ bne _08073034
+ lsrs r0, r5, 20
+ bl sub_8073098
+_08073034:
+ cmp r4, 0x2
+ bne _0807303E
+ lsrs r0, r5, 20
+ bl sub_80730C0
+_0807303E:
+ cmp r4, 0x3
+ bne _08073048
+ lsrs r0, r5, 20
+ bl sub_80730E8
+_08073048:
+ cmp r4, 0x4
+ bne _08073052
+ lsrs r0, r5, 20
+ bl sub_807361C
+_08073052:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8073014
+
+ thumb_func_start sub_8073058
+sub_8073058: @ 8073058
+ push {lr}
+ lsls r1, r0, 16
+ movs r0, 0xE0
+ lsls r0, 11
+ ands r0, r1
+ cmp r0, 0
+ bne _0807306C
+ lsrs r0, r1, 19
+ bl sub_8073904
+_0807306C:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8073058
+
+ thumb_func_start sub_8073070
+sub_8073070: @ 8073070
+ push {lr}
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r0
+ ldr r0, _08073090
+ lsrs r1, 14
+ adds r1, r0
+ ldr r0, [r1]
+ ldr r1, _08073094
+ movs r2, 0x80
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08073090: .4byte gTilesetAnimTable_General_0
+_08073094: .4byte 0x06003f80
+ thumb_func_end sub_8073070
+
+ thumb_func_start sub_8073098
+sub_8073098: @ 8073098
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x7
+ ands r0, r1
+ ldr r1, _080730B8
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, _080730BC
+ movs r2, 0xF0
+ lsls r2, 2
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080730B8: .4byte gTilesetAnimTable_General_1
+_080730BC: .4byte 0x06003600
+ thumb_func_end sub_8073098
+
+ thumb_func_start sub_80730C0
+sub_80730C0: @ 80730C0
+ push {lr}
+ lsls r0, 16
+ movs r1, 0xE0
+ lsls r1, 11
+ ands r1, r0
+ ldr r0, _080730E0
+ lsrs r1, 14
+ adds r1, r0
+ ldr r0, [r1]
+ ldr r1, _080730E4
+ movs r2, 0xA0
+ lsls r2, 1
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080730E0: .4byte gTilesetAnimTable_General_2
+_080730E4: .4byte 0x06003a00
+ thumb_func_end sub_80730C0
+
+ thumb_func_start sub_80730E8
+sub_80730E8: @ 80730E8
+ push {lr}
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r0
+ ldr r0, _08073108
+ lsrs r1, 14
+ adds r1, r0
+ ldr r0, [r1]
+ ldr r1, _0807310C
+ movs r2, 0xC0
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08073108: .4byte gTilesetAnimTable_General_3
+_0807310C: .4byte 0x06003e00
+ thumb_func_end sub_80730E8
+
+ thumb_func_start TilesetCB_Petalburg
+TilesetCB_Petalburg: @ 8073110
+ ldr r1, _08073128
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _0807312C
+ ldr r0, _08073130
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _08073134
+ movs r0, 0
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08073128: .4byte 0x030006c6
+_0807312C: .4byte 0x030006c8
+_08073130: .4byte 0x030006c4
+_08073134: .4byte 0x030006d0
+ thumb_func_end TilesetCB_Petalburg
+
+ thumb_func_start TilesetCB_Rustboro
+TilesetCB_Rustboro: @ 8073138
+ ldr r1, _08073150
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _08073154
+ ldr r0, _08073158
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _0807315C
+ ldr r0, _08073160
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08073150: .4byte 0x030006c6
+_08073154: .4byte 0x030006c8
+_08073158: .4byte 0x030006c4
+_0807315C: .4byte 0x030006d0
+_08073160: .4byte sub_8073424
+ thumb_func_end TilesetCB_Rustboro
+
+ thumb_func_start TilesetCB_Dewford
+TilesetCB_Dewford: @ 8073164
+ ldr r1, _0807317C
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _08073180
+ ldr r0, _08073184
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _08073188
+ movs r0, 0
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_0807317C: .4byte 0x030006c6
+_08073180: .4byte 0x030006c8
+_08073184: .4byte 0x030006c4
+_08073188: .4byte 0x030006d0
+ thumb_func_end TilesetCB_Dewford
+
+ thumb_func_start TilesetCB_Slateport
+TilesetCB_Slateport: @ 807318C
+ ldr r1, _080731A4
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _080731A8
+ ldr r0, _080731AC
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _080731B0
+ movs r0, 0
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080731A4: .4byte 0x030006c6
+_080731A8: .4byte 0x030006c8
+_080731AC: .4byte 0x030006c4
+_080731B0: .4byte 0x030006d0
+ thumb_func_end TilesetCB_Slateport
+
+ thumb_func_start TilesetCB_Mauville
+TilesetCB_Mauville: @ 80731B4
+ ldr r1, _080731CC
+ ldr r0, _080731D0
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _080731D4
+ ldr r0, _080731D8
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _080731DC
+ ldr r0, _080731E0
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080731CC: .4byte 0x030006c6
+_080731D0: .4byte 0x030006c2
+_080731D4: .4byte 0x030006c8
+_080731D8: .4byte 0x030006c4
+_080731DC: .4byte 0x030006d0
+_080731E0: .4byte sub_80734A0
+ thumb_func_end TilesetCB_Mauville
+
+ thumb_func_start TilesetCB_Lavaridge
+TilesetCB_Lavaridge: @ 80731E4
+ ldr r1, _080731FC
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _08073200
+ ldr r0, _08073204
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _08073208
+ ldr r0, _0807320C
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080731FC: .4byte 0x030006c6
+_08073200: .4byte 0x030006c8
+_08073204: .4byte 0x030006c4
+_08073208: .4byte 0x030006d0
+_0807320C: .4byte sub_8073514
+ thumb_func_end TilesetCB_Lavaridge
+
+ thumb_func_start TilesetCB_Fallarbor
+TilesetCB_Fallarbor: @ 8073210
+ ldr r1, _08073228
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _0807322C
+ ldr r0, _08073230
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _08073234
+ movs r0, 0
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08073228: .4byte 0x030006c6
+_0807322C: .4byte 0x030006c8
+_08073230: .4byte 0x030006c4
+_08073234: .4byte 0x030006d0
+ thumb_func_end TilesetCB_Fallarbor
+
+ thumb_func_start TilesetCB_Fortree
+TilesetCB_Fortree: @ 8073238
+ ldr r1, _08073250
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _08073254
+ ldr r0, _08073258
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _0807325C
+ movs r0, 0
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08073250: .4byte 0x030006c6
+_08073254: .4byte 0x030006c8
+_08073258: .4byte 0x030006c4
+_0807325C: .4byte 0x030006d0
+ thumb_func_end TilesetCB_Fortree
+
+ thumb_func_start TilesetCB_Lilycove
+TilesetCB_Lilycove: @ 8073260
+ ldr r1, _08073278
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _0807327C
+ ldr r0, _08073280
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _08073284
+ movs r0, 0
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08073278: .4byte 0x030006c6
+_0807327C: .4byte 0x030006c8
+_08073280: .4byte 0x030006c4
+_08073284: .4byte 0x030006d0
+ thumb_func_end TilesetCB_Lilycove
+
+ thumb_func_start TilesetCB_Mossdeep
+TilesetCB_Mossdeep: @ 8073288
+ ldr r1, _080732A0
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _080732A4
+ ldr r0, _080732A8
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _080732AC
+ movs r0, 0
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080732A0: .4byte 0x030006c6
+_080732A4: .4byte 0x030006c8
+_080732A8: .4byte 0x030006c4
+_080732AC: .4byte 0x030006d0
+ thumb_func_end TilesetCB_Mossdeep
+
+ thumb_func_start TilesetCB_EverGrande
+TilesetCB_EverGrande: @ 80732B0
+ ldr r1, _080732C8
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _080732CC
+ ldr r0, _080732D0
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _080732D4
+ ldr r0, _080732D8
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080732C8: .4byte 0x030006c6
+_080732CC: .4byte 0x030006c8
+_080732D0: .4byte 0x030006c4
+_080732D4: .4byte 0x030006d0
+_080732D8: .4byte sub_8073540
+ thumb_func_end TilesetCB_EverGrande
+
+ thumb_func_start TilesetCB_Pacifidlog
+TilesetCB_Pacifidlog: @ 80732DC
+ ldr r1, _080732F4
+ ldr r0, _080732F8
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _080732FC
+ ldr r0, _08073300
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _08073304
+ ldr r0, _08073308
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080732F4: .4byte 0x030006c6
+_080732F8: .4byte 0x030006c2
+_080732FC: .4byte 0x030006c8
+_08073300: .4byte 0x030006c4
+_08073304: .4byte 0x030006d0
+_08073308: .4byte sub_80735B4
+ thumb_func_end TilesetCB_Pacifidlog
+
+ thumb_func_start TilesetCB_Sootopolis
+TilesetCB_Sootopolis: @ 807330C
+ ldr r1, _08073324
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _08073328
+ ldr r0, _0807332C
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _08073330
+ movs r0, 0
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08073324: .4byte 0x030006c6
+_08073328: .4byte 0x030006c8
+_0807332C: .4byte 0x030006c4
+_08073330: .4byte 0x030006d0
+ thumb_func_end TilesetCB_Sootopolis
+
+ thumb_func_start TilesetCB_Underwater
+TilesetCB_Underwater: @ 8073334
+ ldr r1, _08073348
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _0807334C
+ movs r0, 0x80
+ strh r0, [r1]
+ ldr r1, _08073350
+ ldr r0, _08073354
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08073348: .4byte 0x030006c6
+_0807334C: .4byte 0x030006c8
+_08073350: .4byte 0x030006d0
+_08073354: .4byte sub_80735E4
+ thumb_func_end TilesetCB_Underwater
+
+ thumb_func_start TilesetCB_SootopolisGym
+TilesetCB_SootopolisGym: @ 8073358
+ ldr r1, _0807336C
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _08073370
+ movs r0, 0xF0
+ strh r0, [r1]
+ ldr r1, _08073374
+ ldr r0, _08073378
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_0807336C: .4byte 0x030006c6
+_08073370: .4byte 0x030006c8
+_08073374: .4byte 0x030006d0
+_08073378: .4byte sub_80738A8
+ thumb_func_end TilesetCB_SootopolisGym
+
+ thumb_func_start TilesetCB_Cave
+TilesetCB_Cave: @ 807337C
+ ldr r1, _08073394
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _08073398
+ ldr r0, _0807339C
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _080733A0
+ ldr r0, _080733A4
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08073394: .4byte 0x030006c6
+_08073398: .4byte 0x030006c8
+_0807339C: .4byte 0x030006c4
+_080733A0: .4byte 0x030006d0
+_080733A4: .4byte sub_8073600
+ thumb_func_end TilesetCB_Cave
+
+ thumb_func_start TilesetCB_EliteFour
+TilesetCB_EliteFour: @ 80733A8
+ ldr r1, _080733BC
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _080733C0
+ movs r0, 0x80
+ strh r0, [r1]
+ ldr r1, _080733C4
+ ldr r0, _080733C8
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080733BC: .4byte 0x030006c6
+_080733C0: .4byte 0x030006c8
+_080733C4: .4byte 0x030006d0
+_080733C8: .4byte sub_80738C0
+ thumb_func_end TilesetCB_EliteFour
+
+ thumb_func_start TilesetCB_MauvilleGym
+TilesetCB_MauvilleGym: @ 80733CC
+ ldr r1, _080733E4
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _080733E8
+ ldr r0, _080733EC
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _080733F0
+ ldr r0, _080733F4
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_080733E4: .4byte 0x030006c6
+_080733E8: .4byte 0x030006c8
+_080733EC: .4byte 0x030006c4
+_080733F0: .4byte 0x030006d0
+_080733F4: .4byte sub_8073890
+ thumb_func_end TilesetCB_MauvilleGym
+
+ thumb_func_start TilesetCB_BikeShop
+TilesetCB_BikeShop: @ 80733F8
+ ldr r1, _08073410
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _08073414
+ ldr r0, _08073418
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r1, _0807341C
+ ldr r0, _08073420
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08073410: .4byte 0x030006c6
+_08073414: .4byte 0x030006c8
+_08073418: .4byte 0x030006c4
+_0807341C: .4byte 0x030006d0
+_08073420: .4byte sub_80738EC
+ thumb_func_end TilesetCB_BikeShop
+
+ thumb_func_start sub_8073424
+sub_8073424: @ 8073424
+ push {r4-r6,lr}
+ lsls r5, r0, 16
+ movs r0, 0xE0
+ lsls r0, 11
+ ands r0, r5
+ lsrs r6, r0, 16
+ cmp r6, 0
+ bne _08073444
+ lsrs r4, r5, 19
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_80737A4
+ adds r0, r4, 0
+ bl sub_80737E0
+_08073444:
+ cmp r6, 0x1
+ bne _08073450
+ lsrs r0, r5, 19
+ movs r1, 0x1
+ bl sub_80737A4
+_08073450:
+ cmp r6, 0x2
+ bne _0807345C
+ lsrs r0, r5, 19
+ movs r1, 0x2
+ bl sub_80737A4
+_0807345C:
+ cmp r6, 0x3
+ bne _08073468
+ lsrs r0, r5, 19
+ movs r1, 0x3
+ bl sub_80737A4
+_08073468:
+ cmp r6, 0x4
+ bne _08073474
+ lsrs r0, r5, 19
+ movs r1, 0x4
+ bl sub_80737A4
+_08073474:
+ cmp r6, 0x5
+ bne _08073480
+ lsrs r0, r5, 19
+ movs r1, 0x5
+ bl sub_80737A4
+_08073480:
+ cmp r6, 0x6
+ bne _0807348C
+ lsrs r0, r5, 19
+ movs r1, 0x6
+ bl sub_80737A4
+_0807348C:
+ cmp r6, 0x7
+ bne _08073498
+ lsrs r0, r5, 19
+ movs r1, 0x7
+ bl sub_80737A4
+_08073498:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8073424
+
+ thumb_func_start sub_80734A0
+sub_80734A0: @ 80734A0
+ push {r4,r5,lr}
+ lsls r4, r0, 16
+ movs r0, 0xE0
+ lsls r0, 11
+ ands r0, r4
+ lsrs r5, r0, 16
+ cmp r5, 0
+ bne _080734B8
+ lsrs r0, r4, 19
+ movs r1, 0
+ bl sub_8073704
+_080734B8:
+ cmp r5, 0x1
+ bne _080734C4
+ lsrs r0, r4, 19
+ movs r1, 0x1
+ bl sub_8073704
+_080734C4:
+ cmp r5, 0x2
+ bne _080734D0
+ lsrs r0, r4, 19
+ movs r1, 0x2
+ bl sub_8073704
+_080734D0:
+ cmp r5, 0x3
+ bne _080734DC
+ lsrs r0, r4, 19
+ movs r1, 0x3
+ bl sub_8073704
+_080734DC:
+ cmp r5, 0x4
+ bne _080734E8
+ lsrs r0, r4, 19
+ movs r1, 0x4
+ bl sub_8073704
+_080734E8:
+ cmp r5, 0x5
+ bne _080734F4
+ lsrs r0, r4, 19
+ movs r1, 0x5
+ bl sub_8073704
+_080734F4:
+ cmp r5, 0x6
+ bne _08073500
+ lsrs r0, r4, 19
+ movs r1, 0x6
+ bl sub_8073704
+_08073500:
+ cmp r5, 0x7
+ bne _0807350C
+ lsrs r0, r4, 19
+ movs r1, 0x7
+ bl sub_8073704
+_0807350C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80734A0
+
+ thumb_func_start sub_8073514
+sub_8073514: @ 8073514
+ push {r4,r5,lr}
+ lsls r4, r0, 16
+ movs r0, 0xF0
+ lsls r0, 12
+ ands r0, r4
+ lsrs r5, r0, 16
+ cmp r5, 0
+ bne _0807352E
+ lsrs r0, r4, 20
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8073644
+_0807352E:
+ cmp r5, 0x1
+ bne _08073538
+ lsrs r0, r4, 20
+ bl sub_8073808
+_08073538:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8073514
+
+ thumb_func_start sub_8073540
+sub_8073540: @ 8073540
+ push {r4,r5,lr}
+ lsls r4, r0, 16
+ movs r0, 0xE0
+ lsls r0, 11
+ ands r0, r4
+ lsrs r5, r0, 16
+ cmp r5, 0
+ bne _08073558
+ lsrs r0, r4, 19
+ movs r1, 0
+ bl sub_8073830
+_08073558:
+ cmp r5, 0x1
+ bne _08073564
+ lsrs r0, r4, 19
+ movs r1, 0x1
+ bl sub_8073830
+_08073564:
+ cmp r5, 0x2
+ bne _08073570
+ lsrs r0, r4, 19
+ movs r1, 0x2
+ bl sub_8073830
+_08073570:
+ cmp r5, 0x3
+ bne _0807357C
+ lsrs r0, r4, 19
+ movs r1, 0x3
+ bl sub_8073830
+_0807357C:
+ cmp r5, 0x4
+ bne _08073588
+ lsrs r0, r4, 19
+ movs r1, 0x4
+ bl sub_8073830
+_08073588:
+ cmp r5, 0x5
+ bne _08073594
+ lsrs r0, r4, 19
+ movs r1, 0x5
+ bl sub_8073830
+_08073594:
+ cmp r5, 0x6
+ bne _080735A0
+ lsrs r0, r4, 19
+ movs r1, 0x6
+ bl sub_8073830
+_080735A0:
+ cmp r5, 0x7
+ bne _080735AC
+ lsrs r0, r4, 19
+ movs r1, 0x7
+ bl sub_8073830
+_080735AC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8073540
+
+ thumb_func_start sub_80735B4
+sub_80735B4: @ 80735B4
+ push {r4,r5,lr}
+ lsls r4, r0, 16
+ movs r0, 0xF0
+ lsls r0, 12
+ ands r0, r4
+ lsrs r5, r0, 16
+ cmp r5, 0
+ bne _080735CE
+ lsrs r0, r4, 20
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_807368C
+_080735CE:
+ cmp r5, 0x1
+ bne _080735DC
+ lsrs r0, r4, 20
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80736DC
+_080735DC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80735B4
+
+ thumb_func_start sub_80735E4
+sub_80735E4: @ 80735E4
+ push {lr}
+ lsls r1, r0, 16
+ movs r0, 0xF0
+ lsls r0, 12
+ ands r0, r1
+ cmp r0, 0
+ bne _080735FC
+ lsrs r0, r1, 20
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80736B4
+_080735FC:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80735E4
+
+ thumb_func_start sub_8073600
+sub_8073600: @ 8073600
+ push {lr}
+ lsls r1, r0, 16
+ movs r0, 0xF0
+ lsls r0, 12
+ ands r0, r1
+ lsrs r0, 16
+ cmp r0, 0x1
+ bne _08073616
+ lsrs r0, r1, 20
+ bl sub_8073868
+_08073616:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8073600
+
+ thumb_func_start sub_807361C
+sub_807361C: @ 807361C
+ push {lr}
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r0
+ ldr r0, _0807363C
+ lsrs r1, 14
+ adds r1, r0
+ ldr r0, [r1]
+ ldr r1, _08073640
+ movs r2, 0xA0
+ lsls r2, 1
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807363C: .4byte gTilesetAnimTable_General_4
+_08073640: .4byte 0x06003c00
+ thumb_func_end sub_807361C
+
+ thumb_func_start sub_8073644
+sub_8073644: @ 8073644
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r0, 0x3
+ ands r0, r4
+ ldr r5, _08073680
+ lsls r0, 2
+ adds r0, r5
+ ldr r0, [r0]
+ ldr r1, _08073684
+ movs r2, 0x80
+ bl sub_8072E24
+ adds r1, r4, 0x2
+ adds r0, r1, 0
+ asrs r0, 2
+ lsls r0, 2
+ subs r0, r1, r0
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r5
+ ldr r0, [r0]
+ ldr r1, _08073688
+ movs r2, 0x80
+ bl sub_8072E24
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08073680: .4byte gTilesetAnimTable_Lavaridge
+_08073684: .4byte 0x06006400
+_08073688: .4byte 0x06006480
+ thumb_func_end sub_8073644
+
+ thumb_func_start sub_807368C
+sub_807368C: @ 807368C
+ push {lr}
+ lsls r0, 24
+ movs r1, 0xC0
+ lsls r1, 18
+ ands r1, r0
+ ldr r0, _080736AC
+ lsrs r1, 22
+ adds r1, r0
+ ldr r0, [r1]
+ ldr r1, _080736B0
+ movs r2, 0xF0
+ lsls r2, 2
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080736AC: .4byte gTilesetAnimTable_Pacifidlog_0
+_080736B0: .4byte 0x06007a00
+ thumb_func_end sub_807368C
+
+ thumb_func_start sub_80736B4
+sub_80736B4: @ 80736B4
+ push {lr}
+ lsls r0, 24
+ movs r1, 0xC0
+ lsls r1, 18
+ ands r1, r0
+ ldr r0, _080736D4
+ lsrs r1, 22
+ adds r1, r0
+ ldr r0, [r1]
+ ldr r1, _080736D8
+ movs r2, 0x80
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080736D4: .4byte gTilesetAnimTable_Underwater
+_080736D8: .4byte 0x06007e00
+ thumb_func_end sub_80736B4
+
+ thumb_func_start sub_80736DC
+sub_80736DC: @ 80736DC
+ push {lr}
+ lsls r0, 24
+ movs r1, 0xE0
+ lsls r1, 19
+ ands r1, r0
+ ldr r0, _080736FC
+ lsrs r1, 22
+ adds r1, r0
+ ldr r0, [r1]
+ ldr r1, _08073700
+ movs r2, 0x80
+ lsls r2, 1
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080736FC: .4byte gTilesetAnimTable_Pacifidlog_1
+_08073700: .4byte 0x06007e00
+ thumb_func_end sub_80736DC
+
+ thumb_func_start sub_8073704
+sub_8073704: @ 8073704
+ push {r4-r6,lr}
+ lsls r0, 16
+ lsrs r5, r0, 16
+ lsls r1, 24
+ lsrs r6, r1, 24
+ subs r0, r5, r6
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0xB
+ bhi _08073760
+ adds r0, r5, 0
+ movs r1, 0xC
+ bl __umodsi3
+ adds r4, r0, 0
+ lsls r4, 16
+ ldr r0, _08073750
+ lsrs r4, 14
+ adds r0, r4, r0
+ ldr r0, [r0]
+ ldr r1, _08073754
+ lsls r5, r6, 2
+ adds r1, r5, r1
+ ldr r1, [r1]
+ movs r2, 0x80
+ bl sub_8072E24
+ ldr r0, _08073758
+ adds r4, r0
+ ldr r0, [r4]
+ ldr r1, _0807375C
+ adds r5, r1
+ ldr r1, [r5]
+ movs r2, 0x80
+ bl sub_8072E24
+ b _0807378C
+ .align 2, 0
+_08073750: .4byte gTilesetAnimTable_Mauville_0A
+_08073754: .4byte gUnknown_0837BAE4
+_08073758: .4byte gTilesetAnimTable_Mauville_1A
+_0807375C: .4byte gUnknown_0837BB04
+_08073760:
+ movs r0, 0x3
+ ands r5, r0
+ ldr r0, _08073794
+ lsls r5, 2
+ adds r0, r5, r0
+ ldr r0, [r0]
+ ldr r1, _08073798
+ lsls r4, r6, 2
+ adds r1, r4, r1
+ ldr r1, [r1]
+ movs r2, 0x80
+ bl sub_8072E24
+ ldr r0, _0807379C
+ adds r5, r0
+ ldr r0, [r5]
+ ldr r1, _080737A0
+ adds r4, r1
+ ldr r1, [r4]
+ movs r2, 0x80
+ bl sub_8072E24
+_0807378C:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08073794: .4byte gTilesetAnimTable_Mauville_0B
+_08073798: .4byte gUnknown_0837BAE4
+_0807379C: .4byte gTilesetAnimTable_Mauville_1B
+_080737A0: .4byte gUnknown_0837BB04
+ thumb_func_end sub_8073704
+
+ thumb_func_start sub_80737A4
+sub_80737A4: @ 80737A4
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 24
+ lsrs r3, r1, 24
+ subs r0, r3
+ lsls r0, 16
+ movs r1, 0xE0
+ lsls r1, 11
+ ands r1, r0
+ ldr r0, _080737D8
+ lsrs r1, 14
+ adds r1, r0
+ ldr r2, [r1]
+ cmp r2, 0
+ beq _080737D4
+ ldr r0, _080737DC
+ lsls r1, r3, 2
+ adds r1, r0
+ ldr r1, [r1]
+ adds r0, r2, 0
+ movs r2, 0x80
+ bl sub_8072E24
+_080737D4:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080737D8: .4byte gTilesetAnimTable_Rustboro_0
+_080737DC: .4byte gUnknown_0837BFA4
+ thumb_func_end sub_80737A4
+
+ thumb_func_start sub_80737E0
+sub_80737E0: @ 80737E0
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x1
+ ands r0, r1
+ ldr r1, _08073800
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, _08073804
+ movs r2, 0x80
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08073800: .4byte gTilesetAnimTable_Rustboro_1
+_08073804: .4byte 0x06007800
+ thumb_func_end sub_80737E0
+
+ thumb_func_start sub_8073808
+sub_8073808: @ 8073808
+ push {lr}
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r0
+ ldr r0, _08073828
+ lsrs r1, 14
+ adds r1, r0
+ ldr r0, [r1]
+ ldr r1, _0807382C
+ movs r2, 0x80
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08073828: .4byte gTilesetAnimTable_Cave
+_0807382C: .4byte 0x06005400
+ thumb_func_end sub_8073808
+
+ thumb_func_start sub_8073830
+sub_8073830: @ 8073830
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 24
+ lsrs r1, 24
+ subs r0, r1
+ lsls r0, 16
+ movs r2, 0xE0
+ lsls r2, 11
+ ands r2, r0
+ ldr r0, _08073860
+ lsrs r2, 14
+ adds r2, r0
+ ldr r0, [r2]
+ ldr r2, _08073864
+ lsls r1, 2
+ adds r1, r2
+ ldr r1, [r1]
+ movs r2, 0x80
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08073860: .4byte gTilesetAnimTable_EverGrande
+_08073864: .4byte gUnknown_0837C93C
+ thumb_func_end sub_8073830
+
+ thumb_func_start sub_8073868
+sub_8073868: @ 8073868
+ push {lr}
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r0
+ ldr r0, _08073888
+ lsrs r1, 14
+ adds r1, r0
+ ldr r0, [r1]
+ ldr r1, _0807388C
+ movs r2, 0x80
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08073888: .4byte gTilesetAnimTable_Cave
+_0807388C: .4byte 0x06007400
+ thumb_func_end sub_8073868
+
+ thumb_func_start sub_8073890
+sub_8073890: @ 8073890
+ push {lr}
+ lsls r2, r0, 16
+ lsrs r0, r2, 16
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080738A4
+ lsrs r0, r2, 17
+ bl sub_80739C4
+_080738A4:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8073890
+
+ thumb_func_start sub_80738A8
+sub_80738A8: @ 80738A8
+ push {lr}
+ lsls r1, r0, 16
+ movs r0, 0xE0
+ lsls r0, 11
+ ands r0, r1
+ cmp r0, 0
+ bne _080738BC
+ lsrs r0, r1, 19
+ bl sub_807392C
+_080738BC:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80738A8
+
+ thumb_func_start sub_80738C0
+sub_80738C0: @ 80738C0
+ push {r4,r5,lr}
+ lsls r4, r0, 16
+ lsrs r0, r4, 16
+ adds r5, r0, 0
+ movs r0, 0x3F
+ ands r0, r5
+ cmp r0, 0
+ bne _080738D6
+ lsrs r0, r4, 22
+ bl sub_807399C
+_080738D6:
+ movs r0, 0x7
+ ands r0, r5
+ cmp r0, 0x1
+ bne _080738E4
+ lsrs r0, r4, 19
+ bl sub_8073974
+_080738E4:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80738C0
+
+ thumb_func_start sub_80738EC
+sub_80738EC: @ 80738EC
+ push {lr}
+ lsls r1, r0, 16
+ movs r0, 0xC0
+ lsls r0, 10
+ ands r0, r1
+ cmp r0, 0
+ bne _08073900
+ lsrs r0, r1, 18
+ bl sub_80739EC
+_08073900:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80738EC
+
+ thumb_func_start sub_8073904
+sub_8073904: @ 8073904
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x1
+ ands r0, r1
+ ldr r1, _08073924
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, _08073928
+ movs r2, 0x80
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08073924: .4byte gTilesetAnimTable_Building
+_08073928: .4byte 0x06003e00
+ thumb_func_end sub_8073904
+
+ thumb_func_start sub_807392C
+sub_807392C: @ 807392C
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x3
+ bl __umodsi3
+ adds r4, r0, 0
+ lsls r4, 16
+ ldr r0, _08073964
+ lsrs r4, 14
+ adds r0, r4, r0
+ ldr r0, [r0]
+ ldr r1, _08073968
+ movs r2, 0xC0
+ lsls r2, 1
+ bl sub_8072E24
+ ldr r0, _0807396C
+ adds r4, r0
+ ldr r0, [r4]
+ ldr r1, _08073970
+ movs r2, 0xA0
+ lsls r2, 2
+ bl sub_8072E24
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08073964: .4byte gTilesetAnimTable_SootopolisGym_0
+_08073968: .4byte 0x06007e00
+_0807396C: .4byte gTilesetAnimTable_SootopolisGym_1
+_08073970: .4byte 0x06007a00
+ thumb_func_end sub_807392C
+
+ thumb_func_start sub_8073974
+sub_8073974: @ 8073974
+ push {lr}
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r0
+ ldr r0, _08073994
+ lsrs r1, 14
+ adds r1, r0
+ ldr r0, [r1]
+ ldr r1, _08073998
+ movs r2, 0x20
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08073994: .4byte gTilesetAnimTable_EliteFour_0
+_08073998: .4byte 0x06007f00
+ thumb_func_end sub_8073974
+
+ thumb_func_start sub_807399C
+sub_807399C: @ 807399C
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x1
+ ands r0, r1
+ ldr r1, _080739BC
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, _080739C0
+ movs r2, 0x80
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080739BC: .4byte gTilesetAnimTable_EliteFour_1
+_080739C0: .4byte 0x06007c00
+ thumb_func_end sub_807399C
+
+ thumb_func_start sub_80739C4
+sub_80739C4: @ 80739C4
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x1
+ ands r0, r1
+ ldr r1, _080739E4
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, _080739E8
+ movs r2, 0x80
+ lsls r2, 2
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080739E4: .4byte gTilesetAnimTable_MauvilleGym
+_080739E8: .4byte 0x06005200
+ thumb_func_end sub_80739C4
+
+ thumb_func_start sub_80739EC
+sub_80739EC: @ 80739EC
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x1
+ ands r0, r1
+ ldr r1, _08073A0C
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, _08073A10
+ movs r2, 0x90
+ lsls r2, 1
+ bl sub_8072E24
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08073A0C: .4byte gTilesetAnimTable_BikeShop
+_08073A10: .4byte 0x06007e00
+ thumb_func_end sub_80739EC
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/ewram_syms.txt b/ewram_syms.txt
index 5ccfe75e4..0f363dee0 100644
--- a/ewram_syms.txt
+++ b/ewram_syms.txt
@@ -5,6 +5,14 @@ gUnknown_020239F8 = 0x20239F8;
gSaveBlock2 = 0x2024EA4;
+stru_202E908 = 0x202E908;
+dword_202E9C8 = 0x202E9C8;
+byte_202E9CC = 0x202E9CC;
+word_202E9CE = 0x202E9CE;
+word_202E9D0 = 0x202E9D0;
+word_202E9D2 = 0x202E9D2;
+word_202E9D4 = 0x202E9D4;
+
gPlttBufferUnfaded = 0x202EAC8;
gPlttBufferFaded = 0x202EEC8;
gPlttBufferTransferPending = 0x202F398;
diff --git a/include/text.h b/include/text.h
index 527a8939d..19c9b3040 100644
--- a/include/text.h
+++ b/include/text.h
@@ -152,7 +152,7 @@ u8 sub_80035AC(struct Window *win);
u8 sub_800374C(struct Window *win);
u8 sub_8003778(struct Window *win);
u8 sub_80037A0(struct Window *win);
-u8 sub_80037C8(struct Window *win, u8 lineLength);
+u32 sub_80037C8(struct Window *win, u8 lineLength);
void ClearWindowTextLines(struct Window *win);
u16 GetWindowTilemapEntry(struct Window *win, u8 x, u8 y);
void DrawWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom);
diff --git a/ld_script.txt b/ld_script.txt
index 7d6dc3562..fbd9bafbb 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -31,6 +31,9 @@ SECTIONS {
src/link.o(.bss);
src/rtc.o(.bss);
+ . = 0x6B0;
+ src/menu.o(.bss);
+
. = 0xF28;
src/agb_flash.o(.bss);
. = 0xF36;
@@ -71,6 +74,8 @@ SECTIONS {
asm/rom_8040EB4.o(.text);
src/play_time.o(.text);
asm/rom4.o(.text);
+ src/menu.o(.text);
+ asm/rom_8072DF8.o(.text);
src/palette.o(.text);
asm/rom_8074BAC.o(.text);
src/task.o(.text);
diff --git a/src/menu.c b/src/menu.c
new file mode 100644
index 000000000..aff3655da
--- /dev/null
+++ b/src/menu.c
@@ -0,0 +1,1008 @@
+#include "global.h"
+#include "main.h"
+#include "text.h"
+#include "songs.h"
+
+struct Menu
+{
+ u8 left;
+ u8 top;
+ s8 cursorPos;
+ s8 minCursorPos;
+ s8 maxCursorPos;
+ u8 width;
+ u8 height;
+ u8 menu_field_7;
+ u8 columnXCoords[8];
+};
+
+void sub_8071C4C(struct WindowConfig *);
+void sub_8071C58(struct WindowConfig *);
+void sub_8071C64(struct WindowConfig *, u16);
+bool32 sub_8071C94(void);
+void sub_8071D48(struct WindowConfig *, u16);
+void unref_sub_8071DA4(struct WindowConfig *, u16);
+void sub_8071E00(u8);
+void GetMapNamePopUpWindowId(void);
+void sub_8071E2C(struct WindowConfig *);
+void Print(u8 *, u8, u8);
+void Reset(u8, u8, u8, u8);
+void sub_8071EBC(u8, u8, u8, u8);
+void sub_8071EF4(void);
+void DrawDefaultWindow(u8, u8, u8, u8);
+void sub_8071F40(u8 *);
+void sub_8071F60(u8, u8, u8, u8);
+u16 unref_sub_8071F98(u8, u8);
+void unref_sub_8071FBC(u16, u8, u8, u8, u8);
+void sub_8071FFC(void);
+void AddTextPrinterWithCallbackForMessage(u8 *, u8, u8);
+void sub_8072044(u8 *);
+void sub_807206C(u8 *);
+u8 sub_8072080(void);
+u8 unref_sub_8072098(void);
+void sub_80720B0(void);
+u8 MoveMenuCursor(s8);
+u8 MoveMenuCursorNoWrapAround(s8);
+u8 GetMenuCursorPos(void);
+s8 ProcessMenuInput(void);
+s8 ProcessMenuInputNoWrap(void);
+u8 MoveMenuCursor3(s8);
+u8 MoveMenuCursor4(s8);
+bool8 sub_80723D4(void);
+u8 sub_8072484(u8, u8, u8, u8, u8, u8, u32);
+u8 sub_80724F4(u8, u8, u8, u8*[][2], u8);
+void sub_8072620(u8, u8, u8, u8*[][2], u8);
+void sub_807274C(u8, u8, u8, u8, u8*[][2], u8, u32);
+s8 sub_80727CC(void);
+u8 sub_807288C(u8);
+void PrintStringArray(u8, u8, u8, u8*[][2]);
+void sub_80728E4(u8, u8, u8, u8*[][2], u8*);
+void sub_807292C(u8, u8, u8);
+void sub_8072974(u8, u8, u32);
+s8 FillWindowPixelBuffer(void);
+u8 sub_80729D8(u8 *, u8, u16, u8);
+u8 sub_8072A18(u8 *, u8, u16, u8, u32);
+u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32);
+int sub_8072AB0(u8 *, u8, u16, u8, u8, u32);
+void PrintCoinsString(u8 *, u8, u8);
+void sub_8072B80(u8 *, u8, u8, u8 *);
+void Free(u8 *, u8, u8, u16);
+u8 *sub_8072C14(u8 *, s32, u8, u8);
+u8 *sub_8072C44(u8 *, s32, u8, u8);
+u8 *sub_8072C74(u8 *, u8 *, u8, u8);
+u8 sub_8072CA4(u8 *s);
+u8 sub_8072CBC(void);
+void sub_8072CD4(u8 *, u8 *, u8 *);
+u32 sub_8072CF4(u8);
+struct Window * unref_sub_8072D0C(void);
+void sub_8072D18(u8, u8);
+u8 InitMenu(u8, u8, u8, u8, u8, u8);
+void RedrawMenuCursor(u8, u8);
+void unref_sub_8072DC0(void);
+void sub_8072DCC(u8);
+void sub_8072DDC(u8);
+void sub_8072DEC(void);
+
+extern u16 sub_8064EF4(u16);
+extern void sub_8064F08(struct Window *);
+extern void sub_8064F6C(struct Window *, u8);
+extern u16 sub_80651C8(u16);
+extern void AddTextPrinterParametrized(struct Window *win, u8 left, u8 top, u8 right, u8 bottom);
+extern void copy_textbox_border_tile_patterns_to_vram(struct Window *);
+extern void sub_814A5C0(u8, u16, u8, u16, u8);
+extern void sub_814A880(u8, u8);
+extern void sub_814A904(void);
+extern void sub_814A958(u8);
+extern void sub_814A7FC(void);
+
+static struct Menu gMenu;
+
+extern struct Window stru_202E908;
+extern struct Window *dword_202E9C8;
+extern u8 byte_202E9CC;
+extern u16 word_202E9CE;
+extern u16 word_202E9D0;
+extern u16 word_202E9D2;
+extern u16 word_202E9D4;
+
+extern const u8 *gUnknown_08376D74[][2];
+
+void sub_8071C4C(struct WindowConfig *a1)
+{
+ sub_8071D48(a1, 1);
+}
+
+void sub_8071C58(struct WindowConfig *a1)
+{
+ sub_8071C64(a1, 1);
+}
+
+void sub_8071C64(struct WindowConfig *a1, u16 a2)
+{
+ byte_202E9CC = 0;
+ word_202E9CE = a2;
+ dword_202E9C8 = &stru_202E908;
+ InitWindowFromConfig(&stru_202E908, a1);
+}
+
+bool32 sub_8071C94(void)
+{
+ switch (byte_202E9CC)
+ {
+ case 0:
+ byte_202E9CC++;
+ return 0;
+ case 1:
+ word_202E9D0 = MultistepInitWindowTileData(dword_202E9C8, word_202E9CE);
+ goto next;
+ case 2:
+ if (!MultistepLoadFont())
+ goto fail;
+ goto next;
+ case 3:
+ word_202E9D2 = sub_8064EF4(word_202E9D0);
+ next:
+ byte_202E9CC++;
+ return 0;
+ case 4:
+ sub_8064F08(dword_202E9C8);
+ word_202E9D4 = sub_80651C8(word_202E9D2);
+ return 1;
+ default:
+ fail:
+ return 0;
+ }
+}
+
+void sub_8071D48(struct WindowConfig *a1, u16 a2)
+{
+ dword_202E9C8 = &stru_202E908;
+ InitWindowFromConfig(&stru_202E908, a1);
+ word_202E9CE = a2;
+ word_202E9D0 = InitWindowTileData(dword_202E9C8, word_202E9CE);
+ word_202E9D2 = sub_8064EF4(word_202E9D0);
+ sub_8064F08(dword_202E9C8);
+ word_202E9D4 = sub_80651C8(word_202E9D2);
+}
+
+void unref_sub_8071DA4(struct WindowConfig *a1, u16 a2)
+{
+ dword_202E9C8 = &stru_202E908;
+ InitWindowFromConfig(&stru_202E908, a1);
+ word_202E9D0 = a2;
+ word_202E9D2 = sub_8064EF4(word_202E9D0);
+ sub_8064F08(dword_202E9C8);
+ word_202E9CE = sub_80651C8(word_202E9D2);
+ word_202E9D4 = InitWindowTileData(dword_202E9C8, word_202E9CE);
+}
+
+void sub_8071E00(u8 a1)
+{
+ sub_8064F6C(dword_202E9C8, a1);
+}
+
+void GetMapNamePopUpWindowId(void)
+{
+ sub_8064F08(dword_202E9C8);
+}
+
+void sub_8071E2C(struct WindowConfig *a1)
+{
+ InitWindowFromConfig(dword_202E9C8, a1);
+ dword_202E9C8->tileDataStartOffset = word_202E9CE;
+}
+
+void Print(u8 *str, u8 left, u8 top)
+{
+ sub_8003460(dword_202E9C8, str, word_202E9CE, left, top);
+}
+
+void Reset(u8 a1, u8 a2, u8 a3, u8 a4)
+{
+ ZeroFillWindowRect(dword_202E9C8, a1, a2, a3, a4);
+}
+
+void sub_8071EBC(u8 left, u8 top, u8 right, u8 bottom)
+{
+ FillWindowRectWithBlankTile(dword_202E9C8, left, top, right, bottom);
+}
+
+void sub_8071EF4(void)
+{
+ Reset(0, 0, 29, 19);
+}
+
+void DrawDefaultWindow(u8 left, u8 top, u8 right, u8 bottom)
+{
+ AddTextPrinterParametrized(dword_202E9C8, left, top, right, bottom);
+}
+
+void sub_8071F40(u8 *str)
+{
+ DrawDefaultWindow(2, 14, 28, 19);
+ Print(str, 3, 15);
+}
+
+void sub_8071F60(u8 a1, u8 a2, u8 a3, u8 a4)
+{
+ sub_8003490(dword_202E9C8, a1, word_202E9CE, a2, a3);
+}
+
+u16 unref_sub_8071F98(u8 x, u8 y)
+{
+ return GetWindowTilemapEntry(dword_202E9C8, x, y);
+}
+
+void unref_sub_8071FBC(u16 a1, u8 a2, u8 a3, u8 a4, u8 a5)
+{
+ DrawWindowRect(dword_202E9C8, a1, a2, a3, a4, a5);
+}
+
+void sub_8071FFC(void)
+{
+ copy_textbox_border_tile_patterns_to_vram(dword_202E9C8);
+}
+
+void AddTextPrinterWithCallbackForMessage(u8 *str, u8 a2, u8 a3)
+{
+ sub_8002EB0(dword_202E9C8, str, word_202E9CE, a2, a3);
+}
+
+void sub_8072044(u8 *str)
+{
+ sub_8002EB0(dword_202E9C8, str, word_202E9CE, 2, 15);
+}
+
+void sub_807206C(u8 *str)
+{
+ sub_8002E90(dword_202E9C8, str);
+}
+
+u8 sub_8072080(void)
+{
+ return sub_80035AC(dword_202E9C8);
+}
+
+u8 unref_sub_8072098(void)
+{
+ return sub_8003418(dword_202E9C8);
+}
+
+void sub_80720B0(void)
+{
+ ClearWindowTextLines(dword_202E9C8);
+}
+
+u8 MoveMenuCursor(s8 delta)
+{
+ s32 newPos = gMenu.cursorPos + delta;
+
+ if (newPos < gMenu.minCursorPos)
+ gMenu.cursorPos = gMenu.maxCursorPos;
+ else if (newPos > gMenu.maxCursorPos)
+ gMenu.cursorPos = gMenu.minCursorPos;
+ else
+ gMenu.cursorPos += delta;
+
+ RedrawMenuCursor(gMenu.left, 2 * gMenu.cursorPos + gMenu.top);
+ return gMenu.cursorPos;
+}
+
+u8 MoveMenuCursorNoWrapAround(s8 delta)
+{
+ s32 newPos = gMenu.cursorPos + delta;
+
+ if (newPos < gMenu.minCursorPos)
+ gMenu.cursorPos = gMenu.minCursorPos;
+ else if (newPos > gMenu.maxCursorPos)
+ gMenu.cursorPos = gMenu.maxCursorPos;
+ else
+ gMenu.cursorPos += delta;
+
+ RedrawMenuCursor(gMenu.left, 2 * gMenu.cursorPos + gMenu.top);
+ return gMenu.cursorPos;
+}
+
+u8 GetMenuCursorPos(void)
+{
+ return gMenu.cursorPos;
+}
+
+s8 ProcessMenuInput(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ audio_play(SE_SELECT);
+ if (gMenu.menu_field_7)
+ sub_8072DEC();
+ return gMenu.cursorPos;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ if (gMenu.menu_field_7)
+ sub_8072DEC();
+ return -1;
+ }
+
+ if (gMain.newKeys & DPAD_UP)
+ {
+ audio_play(SE_SELECT);
+ MoveMenuCursor(-1);
+ return -2;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ audio_play(SE_SELECT);
+ MoveMenuCursor(1);
+ return -2;
+ }
+
+ return -2;
+}
+
+s8 ProcessMenuInputNoWrap(void)
+{
+ u8 cursorPos = gMenu.cursorPos;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ audio_play(SE_SELECT);
+ if (gMenu.menu_field_7)
+ sub_8072DEC();
+ return gMenu.cursorPos;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ if (gMenu.menu_field_7)
+ sub_8072DEC();
+ return -1;
+ }
+
+ if (gMain.newKeys & DPAD_UP)
+ {
+ if (cursorPos != MoveMenuCursorNoWrapAround(-1))
+ audio_play(SE_SELECT);
+ return -2;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (cursorPos != MoveMenuCursorNoWrapAround(1))
+ audio_play(SE_SELECT);
+ return -2;
+ }
+
+ MoveMenuCursorNoWrapAround(0);
+ return -2;
+}
+
+u8 MoveMenuCursor3(s8 delta)
+{
+ u8 menuHeight = (gMenu.maxCursorPos + 1) >> 1;
+ s32 newPos = gMenu.cursorPos + delta;
+
+ if (newPos < gMenu.minCursorPos)
+ gMenu.cursorPos = gMenu.maxCursorPos;
+ else if (newPos > gMenu.maxCursorPos)
+ gMenu.cursorPos = gMenu.minCursorPos;
+ else
+ gMenu.cursorPos += delta;
+
+ RedrawMenuCursor(
+ 6 * (gMenu.cursorPos / menuHeight) + gMenu.left,
+ 2 * (gMenu.cursorPos % menuHeight) + gMenu.top);
+
+ return gMenu.cursorPos;
+}
+
+u8 MoveMenuCursor4(s8 delta)
+{
+ if (gMenu.cursorPos + delta <= gMenu.maxCursorPos)
+ {
+ if (sub_80723D4() == TRUE)
+ return gMenu.cursorPos;
+ }
+ else
+ {
+ return gMenu.cursorPos;
+ }
+
+ gMenu.cursorPos += delta;
+
+ if ((gMenu.maxCursorPos + 1) / gMenu.width == 0)
+ RedrawMenuCursor(
+ gMenu.left + gMenu.columnXCoords[gMenu.cursorPos % gMenu.width],
+ 2 * ((gMenu.cursorPos / gMenu.width) % gMenu.height) + gMenu.top);
+ else
+ RedrawMenuCursor(
+ gMenu.left + gMenu.columnXCoords[gMenu.cursorPos % gMenu.width],
+ 2 * (gMenu.cursorPos / gMenu.width) + gMenu.top);
+
+ return gMenu.cursorPos;
+}
+
+bool8 sub_80723D4(void)
+{
+ if ((gMain.newKeys & DPAD_UP) && gMenu.cursorPos < gMenu.width)
+ return TRUE;
+
+ if ((gMain.newKeys & DPAD_DOWN) && gMenu.cursorPos >= (gMenu.maxCursorPos + 1) - gMenu.width)
+ return TRUE;
+
+ if ((gMain.newKeys & DPAD_LEFT)
+ && ((gMenu.cursorPos - (gMenu.cursorPos % gMenu.width)) % gMenu.width == 1 // always false
+ || gMenu.cursorPos == 0
+ || gMenu.cursorPos % gMenu.width == 0))
+ return TRUE;
+
+ if ((gMain.newKeys & DPAD_RIGHT) && gMenu.cursorPos % gMenu.width == gMenu.width - 1)
+ return TRUE;
+
+ return FALSE;
+}
+
+u8 sub_8072484(u8 a1, u8 a2, u8 menuItemCount, u8 a4, u8 width, u8 a6, u32 a7)
+{
+ u8 v7;
+
+ gMenu.width = width;
+ gMenu.height = menuItemCount / width;
+ InitMenu(0, a1, a2, menuItemCount, a4, a6);
+ v7 = 0;
+ if (a7)
+ v7 = -1;
+ gMenu.menu_field_7 = v7;
+ return a4;
+}
+
+#ifdef NONMATCHING
+u8 sub_80724F4(u8 left, u8 top, u8 menuItemCount, u8 *menuItems[][2], u8 columnCount)
+{
+ u8 i;
+ u8 maxWidth;
+ s32 height;
+
+ for (i = 0; i < 7; i++)
+ gMenu.columnXCoords[i] = 0;
+
+ maxWidth = 0;
+ for (i = 0; i < menuItemCount; i++)
+ {
+ u8 width = (sub_8072CA4(menuItems[i][0]) + 7) / 8;
+
+ if (width > maxWidth)
+ maxWidth = width;
+ }
+
+ for (i = 1; i <= columnCount; i++)
+ gMenu.columnXCoords[i] = maxWidth;
+
+ for (i = 1; i <= columnCount; i++)
+ gMenu.columnXCoords[i] += 1 + gMenu.columnXCoords[i - 1];
+
+ gMenu.columnXCoords[columnCount]--;
+
+ if (!((menuItemCount / 2) < columnCount || (menuItemCount % 2 != 0))
+ || columnCount == 1
+ || columnCount == menuItemCount)
+ {
+ height = 2 * (menuItemCount / columnCount) + 1;
+ }
+ else
+ {
+ height = 2 * ((menuItemCount / columnCount) + 1) + 1;
+ }
+
+ {
+ u8 right;
+ u8 bottom;
+ u32 totalWidth;
+ register s32 val asm("r1");
+
+ val = (s8)top + height;
+ bottom = val;
+
+ totalWidth = (gMenu.columnXCoords[columnCount] + 1);
+ right = left + totalWidth;
+
+ DrawDefaultWindow(left, top, right, bottom);
+ }
+
+ return maxWidth;
+}
+#else
+__attribute__((naked))
+u8 sub_80724F4(u8 left, u8 top, u8 menuItemCount, u8 *menuItems[][2], u8 columnCount)
+{
+ asm("push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, #0xC\n\
+ mov r8, r3\n\
+ ldr r3, [sp, #0x2C]\n\
+ lsl r0, #24\n\
+ lsr r0, #24\n\
+ str r0, [sp]\n\
+ lsl r1, #24\n\
+ lsr r1, #24\n\
+ str r1, [sp, #0x4]\n\
+ lsl r2, #24\n\
+ lsr r6, r2, #24\n\
+ lsl r3, #24\n\
+ lsr r5, r3, #24\n\
+ movs r4, #0\n\
+ ldr r0, _080725D4\n\
+ mov r9, r0\n\
+ mov r1, r9\n\
+ add r1, #0x8\n\
+ movs r2, #0\n\
+_08072524:\n\
+ add r0, r4, r1\n\
+ strb r2, [r0]\n\
+ add r0, r4, #0x1\n\
+ lsl r0, #24\n\
+ lsr r4, r0, #24\n\
+ cmp r4, #0x6\n\
+ bls _08072524\n\
+ movs r7, #0\n\
+ movs r4, #0\n\
+ lsr r2, r6, #1\n\
+ mov r10, r2\n\
+ ldr r0, [sp, #0x4]\n\
+ lsl r0, #24\n\
+ str r0, [sp, #0x8]\n\
+ cmp r7, r6\n\
+ bcs _08072566\n\
+_08072544:\n\
+ lsl r0, r4, #3\n\
+ add r0, r8\n\
+ ldr r0, [r0]\n\
+ bl sub_8072CA4\n\
+ lsl r0, #24\n\
+ lsr r0, #24\n\
+ add r1, r0, #0x7\n\
+ lsr r0, r1, #3\n\
+ cmp r0, r7\n\
+ bls _0807255C\n\
+ add r7, r0, #0\n\
+_0807255C:\n\
+ add r0, r4, #0x1\n\
+ lsl r0, #24\n\
+ lsr r4, r0, #24\n\
+ cmp r4, r6\n\
+ bcc _08072544\n\
+_08072566:\n\
+ movs r4, #0x1\n\
+ ldr r2, _080725D4\n\
+ mov r9, r2\n\
+ cmp r4, r5\n\
+ bhi _08072582\n\
+ mov r1, r9\n\
+ add r1, #0x8\n\
+_08072574:\n\
+ add r0, r4, r1\n\
+ strb r7, [r0]\n\
+ add r0, r4, #0x1\n\
+ lsl r0, #24\n\
+ lsr r4, r0, #24\n\
+ cmp r4, r5\n\
+ bls _08072574\n\
+_08072582:\n\
+ movs r4, #0x1\n\
+ cmp r4, r5\n\
+ bhi _080725A4\n\
+ ldr r3, _080725D8\n\
+_0807258A:\n\
+ add r2, r4, r3\n\
+ ldrb r1, [r2]\n\
+ sub r0, r4, #0x1\n\
+ add r0, r3\n\
+ add r1, #0x1\n\
+ ldrb r0, [r0]\n\
+ add r1, r0\n\
+ strb r1, [r2]\n\
+ add r0, r4, #0x1\n\
+ lsl r0, #24\n\
+ lsr r4, r0, #24\n\
+ cmp r4, r5\n\
+ bls _0807258A\n\
+_080725A4:\n\
+ mov r1, r9\n\
+ add r1, #0x8\n\
+ add r1, r5, r1\n\
+ ldrb r0, [r1]\n\
+ sub r0, #0x1\n\
+ strb r0, [r1]\n\
+ cmp r10, r5\n\
+ bcc _080725BC\n\
+ movs r0, #0x1\n\
+ and r0, r6\n\
+ cmp r0, #0\n\
+ beq _080725C4\n\
+_080725BC:\n\
+ cmp r5, #0x1\n\
+ beq _080725C4\n\
+ cmp r5, r6\n\
+ bne _080725DC\n\
+_080725C4:\n\
+ add r0, r6, #0\n\
+ add r1, r5, #0\n\
+ bl __udivsi3\n\
+ lsl r0, #24\n\
+ lsr r0, #23\n\
+ add r0, #0x1\n\
+ b _080725EA\n\
+ .align 2, 0\n\
+_080725D4: .4byte 0x030006b0\n\
+_080725D8: .4byte 0x030006b8\n\
+_080725DC:\n\
+ add r0, r6, #0\n\
+ add r1, r5, #0\n\
+ bl __udivsi3\n\
+ lsl r0, #24\n\
+ lsr r0, #23\n\
+ add r0, #0x3\n\
+_080725EA:\n\
+ ldr r2, [sp, #0x8]\n\
+ asr r1, r2, #24\n\
+ add r1, r0\n\
+ lsl r1, #24\n\
+ lsr r3, r1, #24\n\
+ mov r0, r9\n\
+ add r0, #0x8\n\
+ add r0, r5, r0\n\
+ ldrb r2, [r0]\n\
+ add r2, #0x1\n\
+ ldr r0, [sp]\n\
+ add r2, r0, r2\n\
+ lsl r2, #24\n\
+ lsr r2, #24\n\
+ ldr r1, [sp, #0x4]\n\
+ bl DrawDefaultWindow\n\
+ add r0, r7, #0\n\
+ add sp, #0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n");
+}
+#endif // NONMATCHING
+
+void sub_8072620(u8 left, u8 top, u8 menuItemCount, u8 *menuItems[][2], u8 columnCount)
+{
+ u8 i;
+ u8 maxWidth;
+
+ for (i = 0; i < 7; i++)
+ gMenu.columnXCoords[i] = 0;
+
+ maxWidth = 0;
+ for (i = 0; i < menuItemCount; i++)
+ {
+ u8 width = (sub_8072CA4(menuItems[i][0]) + 7) / 8;
+
+ if (width > maxWidth)
+ maxWidth = width;
+ }
+
+ for (i = 1; i <= columnCount; i++)
+ gMenu.columnXCoords[i] = maxWidth;
+
+ for (i = 1; i <= columnCount; i++)
+ gMenu.columnXCoords[i] += 1 + gMenu.columnXCoords[i - 1];
+
+ gMenu.columnXCoords[columnCount]--;
+
+ for (i = 0; i < columnCount; i++)
+ {
+ u8 row = 0;
+ u8 j;
+ for (j = 0; i + j < menuItemCount; j += columnCount, row++)
+ Print(menuItems[i + j][0], left + gMenu.columnXCoords[i % columnCount], top + 2 * row);
+ }
+}
+
+void sub_807274C(u8 left, u8 top, u8 menuItemCount, u8 a4, u8 *menuItems[][2], u8 columnCount, u32 a7)
+{
+ u8 maxWidth = sub_80724F4(left, top, menuItemCount, menuItems, columnCount);
+
+ sub_8072484(left + 1, top + 1, menuItemCount, a4, columnCount, maxWidth, a7);
+ sub_8072620(left + 1, top + 1, menuItemCount, menuItems, columnCount);
+}
+
+s8 sub_80727CC(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (gMenu.menu_field_7)
+ sub_8072DEC();
+ audio_play(SE_SELECT);
+ return GetMenuCursorPos();
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ if (gMenu.menu_field_7)
+ sub_8072DEC();
+ return -1;
+ }
+
+ if (gMain.newKeys & DPAD_UP)
+ {
+ audio_play(SE_SELECT);
+ MoveMenuCursor4(-gMenu.width);
+ return -2;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ audio_play(SE_SELECT);
+ MoveMenuCursor4(gMenu.width);
+ return -2;
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ audio_play(SE_SELECT);
+ MoveMenuCursor4(-1);
+ return -2;
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ audio_play(SE_SELECT);
+ MoveMenuCursor4(1);
+ return -2;
+ }
+
+ return -2;
+}
+
+u8 sub_807288C(u8 column)
+{
+ return gMenu.columnXCoords[column];
+}
+
+void PrintStringArray(u8 left, u8 top, u8 menuItemCount, u8 *menuItems[][2])
+{
+ u8 i;
+
+ for (i = 0; i < menuItemCount; i++)
+ Print(menuItems[i][0], left, top + 2 * i);
+}
+
+void sub_80728E4(u8 left, u8 top, u8 menuItemCount, u8 *menuItems[][2], u8 *order)
+{
+ u8 i;
+
+ for (i = 0; i < menuItemCount; i++)
+ Print(menuItems[order[i]][0], left, top + 2 * i);
+}
+
+void sub_807292C(u8 left, u8 top, u8 a3)
+{
+ PrintStringArray(left + 1, top + 1, 2, (void *)gUnknown_08376D74);
+ InitMenu(0, left + 1, top + 1, 2, 0, a3);
+}
+
+void sub_8072974(u8 left, u8 top, u32 a3)
+{
+ DrawDefaultWindow(left, top, left + 6, top + 5);
+ sub_807292C(left, top, 5);
+ gMenu.menu_field_7 = a3 ? -1 : 0;
+}
+
+s8 FillWindowPixelBuffer(void)
+{
+ return ProcessMenuInputNoWrap();
+}
+
+u8 sub_80729D8(u8 *a1, u8 a2, u16 a3, u8 a4)
+{
+ return sub_8004D04(dword_202E9C8, a1, word_202E9CE, a2, a3, a4);
+}
+
+u8 sub_8072A18(u8 *a1, u8 a2, u16 a3, u8 a4, u32 a5)
+{
+ return sub_8004FD0(dword_202E9C8, 0, a1, word_202E9CE, a2, a3, a4, a5);
+}
+
+u8 unref_sub_8072A5C(u8 *a1, u8 *a2, u8 a3, u16 a4, u8 a5, u32 a6)
+{
+ return sub_8004FD0(dword_202E9C8, a1, a2, word_202E9CE, a3, a4, a5, a6);
+}
+
+__attribute__((naked))
+int sub_8072AB0(u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6)
+{
+ asm("push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ sub sp, #0x10\n\
+ mov r9, r0\n\
+ add r4, r1, #0\n\
+ add r5, r2, #0\n\
+ ldr r0, [sp, #0x2C]\n\
+ ldr r2, [sp, #0x30]\n\
+ lsl r4, #24\n\
+ lsr r1, r4, #24\n\
+ mov r12, r1\n\
+ lsl r5, #16\n\
+ lsr r7, r5, #16\n\
+ lsl r3, #24\n\
+ lsr r6, r3, #24\n\
+ lsl r0, #24\n\
+ lsr r0, #24\n\
+ mov r8, r0\n\
+ ldr r0, _08072B44\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08072B48\n\
+ ldrh r3, [r1]\n\
+ mov r1, r12\n\
+ str r1, [sp]\n\
+ str r7, [sp, #0x4]\n\
+ str r6, [sp, #0x8]\n\
+ str r2, [sp, #0xC]\n\
+ movs r1, #0\n\
+ mov r2, r9\n\
+ bl sub_8004FD0\n\
+ add r1, r0, #0\n\
+ lsl r1, #24\n\
+ lsr r2, r1, #24\n\
+ lsr r4, #27\n\
+ mov r12, r4\n\
+ lsr r7, r5, #19\n\
+ add r1, r6, #0x7\n\
+ lsr r6, r1, #3\n\
+ mov r1, r8\n\
+ add r1, #0x7\n\
+ asr r1, #3\n\
+ lsl r1, #24\n\
+ lsr r1, #24\n\
+ mov r8, r1\n\
+ cmp r2, r8\n\
+ bcs _08072B34\n\
+ lsl r1, r2, #1\n\
+ add r1, r7, r1\n\
+ lsl r1, #24\n\
+ lsr r1, #24\n\
+ mov r0, r12\n\
+ add r2, r0, r6\n\
+ sub r2, #0x1\n\
+ lsl r2, #24\n\
+ lsr r2, #24\n\
+ mov r0, r8\n\
+ add r3, r0, r7\n\
+ sub r3, #0x1\n\
+ lsl r3, #24\n\
+ lsr r3, #24\n\
+ mov r0, r12\n\
+ bl sub_8071EBC\n\
+_08072B34:\n\
+ add sp, #0x10\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_08072B44: .4byte 0x0202e9c8\n\
+_08072B48: .4byte 0x0202e9ce\n");
+}
+
+void PrintCoinsString(u8 *str, u8 left, u8 top)
+{
+ sub_8004D38(dword_202E9C8, str, word_202E9CE, left, top);
+}
+
+void sub_8072B80(u8 *a1, u8 a2, u8 a3, u8 *a4)
+{
+ u8 buffer[64];
+ u8 width = GetStringWidth(dword_202E9C8, a4);
+ AlignString(dword_202E9C8, buffer, a1, width, 1);
+ sub_8003460(dword_202E9C8, buffer, word_202E9CE, a2, a3);
+}
+
+void Free(u8 *a1, u8 a2, u8 a3, u16 a4)
+{
+ sub_8004DB0(dword_202E9C8, a1, word_202E9CE, a2, a3, a4);
+}
+
+u8 *sub_8072C14(u8 *a1, s32 a2, u8 a3, u8 a4)
+{
+ return AlignInt1(dword_202E9C8, a1, a2, a3, a4);
+}
+
+u8 *sub_8072C44(u8 *a1, s32 a2, u8 a3, u8 a4)
+{
+ return AlignInt2(dword_202E9C8, a1, a2, a3, a4);
+}
+
+u8 *sub_8072C74(u8 *a1, u8 *a2, u8 a3, u8 a4)
+{
+ return AlignString(dword_202E9C8, a1, a2, a3, a4);
+}
+
+u8 sub_8072CA4(u8 *str)
+{
+ return GetStringWidth(dword_202E9C8, str);
+}
+
+u8 sub_8072CBC()
+{
+ return sub_8004E24(dword_202E9C8);
+}
+
+void sub_8072CD4(u8 *a1, u8 *a2, u8 *a3)
+{
+ sub_8004E28(dword_202E9C8, a1, a2, a3);
+}
+
+u32 sub_8072CF4(u8 a1)
+{
+ return sub_80037C8(dword_202E9C8, a1);
+}
+
+struct Window *unref_sub_8072D0C(void)
+{
+ return dword_202E9C8;
+}
+
+void sub_8072D18(u8 a1, u8 a2)
+{
+ sub_814A5C0(a1, 0xFFFF, 12, 11679, 8 * a2);
+}
+
+u8 InitMenu(u8 a1, u8 left, u8 top, u8 numChoices, u8 cursorPos, u8 a6)
+{
+ s32 pos;
+
+ if (a6)
+ sub_8072D18(a1, a6);
+
+ gMenu.left = left - 1;
+ gMenu.top = top;
+ gMenu.minCursorPos = 0;
+ gMenu.maxCursorPos = numChoices - 1;
+ gMenu.menu_field_7 = 0;
+
+ pos = cursorPos;
+
+ if (pos < 0 || pos > gMenu.maxCursorPos)
+ pos = 0;
+
+ gMenu.cursorPos = pos;
+ MoveMenuCursor(0);
+
+ return pos;
+}
+
+void RedrawMenuCursor(u8 a1, u8 a2)
+{
+ sub_814A880((a1 + 1) * 8, 8 * a2);
+}
+
+void unref_sub_8072DC0()
+{
+ sub_814A904();
+}
+
+void sub_8072DCC(u8 a1)
+{
+ sub_814A958(a1);
+}
+
+void sub_8072DDC(u8 a1)
+{
+ sub_8072DCC(8 * a1);
+}
+
+void sub_8072DEC(void)
+{
+ sub_814A7FC();
+}
diff --git a/src/text.c b/src/text.c
index 372d3e7e2..64a302fed 100644
--- a/src/text.c
+++ b/src/text.c
@@ -2523,7 +2523,7 @@ u8 sub_80037A0(struct Window *win)
return retVal;
}
-u8 sub_80037C8(struct Window *win, u8 lineLength)
+u32 sub_80037C8(struct Window *win, u8 lineLength)
{
u8 retVal;