summaryrefslogtreecommitdiff
path: root/asm/menu_helpers.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/menu_helpers.s')
-rw-r--r--asm/menu_helpers.s986
1 files changed, 986 insertions, 0 deletions
diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s
new file mode 100644
index 000000000..aaa9c2e24
--- /dev/null
+++ b/asm/menu_helpers.s
@@ -0,0 +1,986 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8121DA0
+sub_8121DA0: @ 8121DA0
+ push {r4,lr}
+ sub sp, 0xC
+ movs r0, 0
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0xE
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0xC
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0xA
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x8
+ movs r1, 0
+ bl SetGpuReg
+ mov r1, sp
+ movs r0, 0
+ strh r0, [r1]
+ movs r1, 0xC0
+ lsls r1, 19
+ ldr r2, =0x0100c000
+ mov r0, sp
+ bl CpuSet
+ movs r4, 0
+ str r4, [sp, 0x4]
+ add r0, sp, 0x4
+ movs r1, 0xE0
+ lsls r1, 19
+ ldr r2, =0x05000100
+ bl CpuSet
+ add r0, sp, 0x8
+ strh r4, [r0]
+ movs r1, 0xA0
+ lsls r1, 19
+ ldr r2, =0x01000200
+ bl CpuSet
+ add sp, 0xC
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8121DA0
+
+ thumb_func_start sub_8121E10
+sub_8121E10: @ 8121E10
+ push {lr}
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8121E10
+
+ thumb_func_start SetVBlankHBlankCallbacksToNull
+@ void SetVBlankHBlankCallbacksToNull()
+SetVBlankHBlankCallbacksToNull: @ 8121E68
+ push {lr}
+ movs r0, 0
+ bl SetVBlankCallback
+ movs r0, 0
+ bl SetHBlankCallback
+ pop {r0}
+ bx r0
+ thumb_func_end SetVBlankHBlankCallbacksToNull
+
+ thumb_func_start DisplayMessageAndContinueTask
+@ void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 windowBorderFirstTileNum, u8 windowBorderPalette, u8 fontId, u8 speed, u8 *str, void ( *callback)(u8 taskId))
+DisplayMessageAndContinueTask: @ 8121E7C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x10
+ ldr r4, [sp, 0x28]
+ ldr r5, [sp, 0x2C]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r6, r1, 0
+ lsls r2, 16
+ lsrs r2, 16
+ lsls r3, 24
+ lsrs r3, 24
+ lsls r4, 24
+ lsrs r7, r4, 24
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r0, =0x0203a140
+ strb r6, [r0]
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl sub_8197B1C
+ ldr r4, =0x02021fc4
+ ldr r0, [sp, 0x30]
+ cmp r0, r4
+ beq _08121EC0
+ adds r0, r4, 0
+ ldr r1, [sp, 0x30]
+ bl ExpandStringRefs
+_08121EC0:
+ ldr r2, =0x03003014
+ ldrb r0, [r2]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ str r0, [sp, 0x8]
+ movs r0, 0x3
+ str r0, [sp, 0xC]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ adds r2, r4, 0
+ adds r3, r5, 0
+ bl AddTextPrinterParametrized
+ ldr r1, =0x0300117c
+ ldr r0, [sp, 0x34]
+ str r0, [r1]
+ ldr r1, =0x03005e00
+ mov r2, r8
+ lsls r0, r2, 2
+ add r0, r8
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, =Task_ContinueTaskAfterMessagePrints
+ str r1, [r0]
+ add sp, 0x10
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end DisplayMessageAndContinueTask
+
+ thumb_func_start sub_8121F20
+sub_8121F20: @ 8121F20
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl RunTextPrinters
+ adds r0, r4, 0
+ bl IsTextPrinterActive
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8121F20
+
+ thumb_func_start Task_ContinueTaskAfterMessagePrints
+@ void Task_ContinueTaskAfterMessagePrints(u8 taskId)
+Task_ContinueTaskAfterMessagePrints: @ 8121F3C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, =0x0203a140
+ ldrb r0, [r0]
+ bl sub_8121F20
+ lsls r0, 16
+ cmp r0, 0
+ bne _08121F5A
+ ldr r0, =0x0300117c
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl _call_via_r1
+_08121F5A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end Task_ContinueTaskAfterMessagePrints
+
+ thumb_func_start sub_8121F68
+sub_8121F68: @ 8121F68
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, =0x0203a138
+ ldr r2, [r1, 0x4]
+ ldr r1, [r1]
+ str r1, [r3]
+ str r2, [r3, 0x4]
+ ldr r2, =0x03005e00
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r0, =Task_CallYesOrNoCallback
+ str r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end sub_8121F68
+
+ thumb_func_start CreateYesNoMenuWithCallbacks
+@ void CreateYesNoMenuWithCallbacks(u8 taskId, struct WindowTemplate *windowTemplate, int a3, int a4, int a5, u16 borderFirstTileNum, u8 borderPalette, void ( **callbacks)(u8 taskId))
+CreateYesNoMenuWithCallbacks: @ 8121F94
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r0, r1, 0
+ ldr r1, [sp, 0x10]
+ ldr r2, [sp, 0x14]
+ ldr r5, [sp, 0x18]
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 24
+ lsrs r2, 24
+ movs r3, 0
+ bl CreateYesNoMenu
+ ldr r2, =0x0203a138
+ ldr r0, [r5]
+ ldr r1, [r5, 0x4]
+ str r0, [r2]
+ str r1, [r2, 0x4]
+ ldr r1, =0x03005e00
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, =Task_CallYesOrNoCallback
+ str r1, [r0]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end CreateYesNoMenuWithCallbacks
+
+ thumb_func_start Task_CallYesOrNoCallback
+@ void Task_CallYesOrNoCallback(u8 taskId)
+Task_CallYesOrNoCallback: @ 8121FDC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_8198C58
+ lsls r0, 24
+ asrs r1, r0, 24
+ cmp r1, 0
+ beq _08122002
+ cmp r1, 0
+ bgt _08121FFC
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ beq _08122018
+ b _08122028
+_08121FFC:
+ cmp r1, 0x1
+ beq _08122018
+ b _08122028
+_08122002:
+ movs r0, 0x5
+ bl audio_play
+ ldr r0, =0x0203a138
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl _call_via_r1
+ b _08122028
+ .pool
+_08122018:
+ movs r0, 0x5
+ bl audio_play
+ ldr r0, =0x0203a138
+ ldr r1, [r0, 0x4]
+ adds r0, r4, 0
+ bl _call_via_r1
+_08122028:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end Task_CallYesOrNoCallback
+
+ thumb_func_start AdjustQuantityAccordingToDPadInput
+@ bool8 AdjustQuantityAccordingToDPadInput(u16 *quantity, u16 maxQuantity)
+AdjustQuantityAccordingToDPadInput: @ 8122034
+ push {r4-r6,lr}
+ adds r2, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r5, r1, 0
+ ldrh r4, [r2]
+ adds r6, r4, 0
+ ldr r0, =0x030022c0
+ ldrh r0, [r0, 0x30]
+ movs r3, 0xF0
+ ands r3, r0
+ cmp r3, 0x40
+ bne _0812206C
+ adds r0, r4, 0x1
+ strh r0, [r2]
+ movs r3, 0
+ ldrsh r0, [r2, r3]
+ cmp r0, r1
+ ble _0812205E
+ movs r0, 0x1
+ strh r0, [r2]
+_0812205E:
+ movs r0, 0
+ ldrsh r1, [r2, r0]
+_08122062:
+ lsls r0, r4, 16
+ b _081220B6
+ .pool
+_0812206C:
+ cmp r3, 0x80
+ bne _08122082
+ subs r0, r4, 0x1
+ strh r0, [r2]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _0812207C
+ strh r1, [r2]
+_0812207C:
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ b _08122062
+_08122082:
+ cmp r3, 0x10
+ bne _0812209C
+ adds r0, r4, 0
+ adds r0, 0xA
+ strh r0, [r2]
+ movs r1, 0
+ ldrsh r0, [r2, r1]
+ cmp r0, r5
+ ble _08122096
+ strh r5, [r2]
+_08122096:
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ b _08122062
+_0812209C:
+ cmp r3, 0x20
+ bne _081220C6
+ adds r0, r4, 0
+ subs r0, 0xA
+ strh r0, [r2]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _081220B0
+ movs r0, 0x1
+ strh r0, [r2]
+_081220B0:
+ movs r0, 0
+ ldrsh r1, [r2, r0]
+ lsls r0, r6, 16
+_081220B6:
+ asrs r0, 16
+ cmp r1, r0
+ beq _081220C6
+ movs r0, 0x5
+ bl audio_play
+ movs r0, 0x1
+ b _081220C8
+_081220C6:
+ movs r0, 0
+_081220C8:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end AdjustQuantityAccordingToDPadInput
+
+ thumb_func_start GetLRKeysState
+GetLRKeysState: @ 81220D0
+ push {lr}
+ ldr r0, =0x03005d90
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x13]
+ cmp r0, 0x1
+ bne _08122106
+ ldr r0, =0x030022c0
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _081220F8
+ movs r0, 0x1
+ b _08122108
+ .pool
+_081220F8:
+ movs r0, 0x80
+ lsls r0, 1
+ ands r0, r1
+ cmp r0, 0
+ beq _08122106
+ movs r0, 0x2
+ b _08122108
+_08122106:
+ movs r0, 0
+_08122108:
+ pop {r1}
+ bx r1
+ thumb_func_end GetLRKeysState
+
+ thumb_func_start sub_812210C
+sub_812210C: @ 812210C
+ push {lr}
+ ldr r0, =0x03005d90
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x13]
+ cmp r0, 0x1
+ bne _08122142
+ ldr r0, =0x030022c0
+ ldrh r1, [r0, 0x30]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _08122134
+ movs r0, 0x1
+ b _08122144
+ .pool
+_08122134:
+ movs r0, 0x80
+ lsls r0, 1
+ ands r0, r1
+ cmp r0, 0
+ beq _08122142
+ movs r0, 0x2
+ b _08122144
+_08122142:
+ movs r0, 0
+_08122144:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_812210C
+
+ thumb_func_start sub_8122148
+sub_8122148: @ 8122148
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xAF
+ bne _08122174
+ ldr r0, =0x03005d8c
+ ldr r0, [r0]
+ ldrh r1, [r0, 0x4]
+ ldr r0, =0x00001919
+ cmp r1, r0
+ beq _08122166
+ bl InUnionRoom
+ cmp r0, 0x1
+ bne _08122174
+_08122166:
+ movs r0, 0
+ b _08122176
+ .pool
+_08122174:
+ movs r0, 0x1
+_08122176:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8122148
+
+ thumb_func_start itemid_80BF6D8_mail_related
+itemid_80BF6D8_mail_related: @ 812217C
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ bl is_c1_link_related_active
+ cmp r0, 0x1
+ beq _08122192
+ bl InUnionRoom
+ cmp r0, 0x1
+ bne _081221A4
+_08122192:
+ adds r0, r4, 0
+ bl itemid_is_mail
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _081221A4
+ movs r0, 0
+ b _081221A6
+_081221A4:
+ movs r0, 0x1
+_081221A6:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end itemid_80BF6D8_mail_related
+
+ thumb_func_start sub_81221AC
+sub_81221AC: @ 81221AC
+ push {lr}
+ bl is_c1_link_related_active
+ cmp r0, 0x1
+ beq _081221BE
+ ldr r0, =0x03003124
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _081221C8
+_081221BE:
+ movs r0, 0x1
+ b _081221CA
+ .pool
+_081221C8:
+ movs r0, 0
+_081221CA:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81221AC
+
+ thumb_func_start sub_81221D0
+sub_81221D0: @ 81221D0
+ push {lr}
+ bl sub_81221AC
+ lsls r0, 24
+ cmp r0, 0
+ beq _081221E6
+ bl sub_8087598
+ lsls r0, 24
+ lsrs r0, 24
+ b _081221E8
+_081221E6:
+ movs r0, 0
+_081221E8:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81221D0
+
+ thumb_func_start sub_81221EC
+sub_81221EC: @ 81221EC
+ push {lr}
+ bl sub_81221D0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _08122202
+ bl sub_800B504
+ cmp r0, 0x1
+ bne _08122206
+_08122202:
+ movs r0, 0x1
+ b _08122208
+_08122206:
+ movs r0, 0
+_08122208:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81221EC
+
+ thumb_func_start atk2D_jumpifarraynotequal
+atk2D_jumpifarraynotequal: @ 812220C
+ push {r4-r6,lr}
+ adds r6, r2, 0
+ ldr r2, [sp, 0x10]
+ lsls r1, 24
+ lsls r2, 24
+ lsrs r5, r2, 24
+ adds r4, r0, 0
+ movs r0, 0
+ strb r0, [r3]
+ movs r2, 0
+ lsrs r1, 24
+ cmp r2, r1
+ bcs _08122240
+_08122226:
+ lsls r0, r2, 2
+ adds r0, r4
+ ldrh r0, [r0]
+ cmp r0, 0
+ beq _08122236
+ ldrb r0, [r3]
+ adds r0, 0x1
+ strb r0, [r3]
+_08122236:
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, r1
+ bcc _08122226
+_08122240:
+ ldrb r0, [r3]
+ adds r1, r0, 0x1
+ strb r1, [r3]
+ lsls r0, r1, 24
+ lsrs r0, 24
+ cmp r0, r5
+ bls _08122252
+ strb r5, [r6]
+ b _08122254
+_08122252:
+ strb r1, [r6]
+_08122254:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end atk2D_jumpifarraynotequal
+
+ thumb_func_start sub_812225C
+sub_812225C: @ 812225C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ ldrh r0, [r4]
+ cmp r0, 0
+ beq _0812227A
+ adds r0, r2
+ cmp r0, r3
+ ble _0812227A
+ subs r0, r3, r2
+ strh r0, [r4]
+_0812227A:
+ ldrh r0, [r4]
+ ldrh r1, [r5]
+ adds r0, r1
+ cmp r0, r3
+ blt _08122290
+ cmp r3, 0
+ bne _0812228C
+ strh r3, [r5]
+ b _08122290
+_0812228C:
+ subs r0, r3, 0x1
+ strh r0, [r5]
+_08122290:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812225C
+
+ thumb_func_start sub_8122298
+sub_8122298: @ 8122298
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldr r0, [sp, 0x14]
+ lsls r2, 24
+ lsrs r7, r2, 24
+ lsls r3, 24
+ lsrs r6, r3, 24
+ lsls r2, r0, 24
+ lsrs r0, r2, 24
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _081222F0
+ lsrs r2, 25
+ ldrh r0, [r4]
+ cmp r0, r2
+ bcc _08122322
+ movs r1, 0
+ subs r0, r2
+ cmp r1, r0
+ bge _08122322
+ ldrh r0, [r5]
+ adds r0, r7
+ cmp r0, r6
+ beq _08122322
+_081222CC:
+ ldrh r0, [r4]
+ subs r0, 0x1
+ strh r0, [r4]
+ ldrh r0, [r5]
+ adds r0, 0x1
+ strh r0, [r5]
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldrh r0, [r4]
+ subs r0, r2
+ cmp r1, r0
+ bge _08122322
+ ldrh r0, [r5]
+ adds r0, r7
+ cmp r0, r6
+ bne _081222CC
+ b _08122322
+_081222F0:
+ ldrh r3, [r4]
+ lsrs r2, 25
+ adds r0, r2, 0x1
+ cmp r3, r0
+ blt _08122322
+ movs r1, 0
+ subs r0, r3, r2
+ b _08122316
+_08122300:
+ ldrh r0, [r4]
+ subs r0, 0x1
+ strh r0, [r4]
+ ldrh r0, [r5]
+ adds r0, 0x1
+ strh r0, [r5]
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldrh r0, [r4]
+ subs r0, r2
+_08122316:
+ cmp r1, r0
+ bgt _08122322
+ ldrh r0, [r5]
+ adds r0, r7
+ cmp r0, r6
+ bne _08122300
+_08122322:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8122298
+
+ thumb_func_start sub_8122328
+sub_8122328: @ 8122328
+ push {lr}
+ ldr r0, =gUnknown_0859F514
+ bl LoadCompressedObjectPic
+ ldr r0, =gUnknown_0859F51C
+ bl LoadCompressedObjectPalette
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8122328
+
+ thumb_func_start sub_8122344
+sub_8122344: @ 8122344
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ mov r8, r0
+ lsls r1, 24
+ lsrs r6, r1, 24
+ movs r5, 0
+ cmp r5, r6
+ bcs _0812239C
+ ldr r7, =0x02020630
+_08122358:
+ lsls r1, r5, 4
+ ldr r0, =gUnknown_0859F524
+ movs r2, 0
+ movs r3, 0
+ bl AddObjectToFront
+ mov r1, r8
+ adds r4, r1, r5
+ strb r0, [r4]
+ cmp r5, 0
+ beq _0812237E
+ ldrb r1, [r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r7
+ movs r1, 0x1
+ bl StartObjectImageAnim
+_0812237E:
+ ldrb r1, [r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r7
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, r6
+ bcc _08122358
+_0812239C:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8122344
+
+ thumb_func_start sub_81223B0
+sub_81223B0: @ 81223B0
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ movs r4, 0
+ cmp r4, r5
+ bcs _081223F6
+ ldr r7, =0x02020630
+_081223C0:
+ subs r0, r5, 0x1
+ cmp r4, r0
+ bne _081223DC
+ adds r0, r6, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r7
+ bl RemoveObjectAndFreeResources
+ b _081223EC
+ .pool
+_081223DC:
+ adds r0, r6, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r7
+ bl RemoveObjectAndFreeTiles
+_081223EC:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, r5
+ bcc _081223C0
+_081223F6:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81223B0
+
+ thumb_func_start sub_81223FC
+sub_81223FC: @ 81223FC
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r4, r1, 24
+ lsls r2, 24
+ lsrs r0, r2, 24
+ movs r3, 0
+ cmp r3, r4
+ bcs _0812243E
+ ldr r1, =0x02020630
+ mov r12, r1
+ movs r1, 0x1
+ ands r0, r1
+ lsls r5, r0, 2
+ movs r7, 0x5
+ negs r7, r7
+_0812241C:
+ adds r0, r6, r3
+ ldrb r0, [r0]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ add r1, r12
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ adds r0, r7, 0
+ ands r0, r2
+ orrs r0, r5
+ strb r0, [r1]
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, r4
+ bcc _0812241C
+_0812243E:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81223FC
+
+ thumb_func_start sub_8122448
+@ void sub_8122448(int a1, u8 a2, u16 x, u16 y)
+sub_8122448: @ 8122448
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r6, r0, 0
+ lsls r1, 24
+ lsrs r4, r1, 24
+ lsls r2, 16
+ lsrs r7, r2, 16
+ lsls r3, 16
+ lsrs r3, 16
+ mov r9, r3
+ movs r0, 0x80
+ ands r0, r4
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ movs r0, 0x7F
+ ands r4, r0
+ movs r3, 0
+ cmp r3, r4
+ bcs _081224C8
+ ldr r5, =0x02020630
+ lsls r0, r7, 16
+ asrs r0, 16
+ subs r0, 0x8
+ mov r12, r0
+_0812247E:
+ subs r0, r4, 0x1
+ cmp r3, r0
+ bne _081224A0
+ mov r0, r8
+ cmp r0, 0
+ beq _081224A0
+ adds r2, r6, r3
+ ldrb r1, [r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ mov r1, r12
+ strh r1, [r0, 0x24]
+ b _081224AE
+ .pool
+_081224A0:
+ adds r2, r6, r3
+ ldrb r1, [r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ strh r7, [r0, 0x24]
+_081224AE:
+ ldrb r1, [r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ mov r1, r9
+ adds r1, 0x1
+ strh r1, [r0, 0x22]
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, r4
+ bcc _0812247E
+_081224C8:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8122448
+
+ .align 2, 0 @ Don't pad with nop.