diff options
author | YamaArashi <shadow962@live.com> | 2016-09-03 23:39:12 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-09-03 23:39:12 -0700 |
commit | 4d518e8ea5c93c669eb14de89b5baf6eba1ac9b0 (patch) | |
tree | dc1798b5fe56c699edb76d24d2ee708be36bee6d | |
parent | dbaf6e125020cac5d897983dc9dfbf8d3d74e589 (diff) |
WIP menu.c
-rw-r--r-- | .gitignore | 5 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | asm/rom4.s | 4012 | ||||
-rw-r--r-- | asm/rom_8072DF8.s | 1625 | ||||
-rw-r--r-- | ewram_syms.txt | 8 | ||||
-rw-r--r-- | include/text.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 5 | ||||
-rw-r--r-- | src/menu.c | 1008 | ||||
-rw-r--r-- | src/text.c | 2 |
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 @@ -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; |