diff options
author | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-12-11 04:04:42 -0800 |
---|---|---|
committer | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-12-11 04:04:42 -0800 |
commit | b0ef8f839bebb39c1806352cc8f87274927063b6 (patch) | |
tree | 173d2f08deb90d2846e2c93bd3c91c3856147332 | |
parent | 9ad5d4888f98d78a09f67db795e5560c0d6b516d (diff) |
split files
-rw-r--r-- | asm/bg_palette_buffer.s | 263 | ||||
-rw-r--r-- | asm/code_80035F0.s | 3975 | ||||
-rw-r--r-- | asm/code_80047E8.s | 3540 | ||||
-rw-r--r-- | asm/other_random.s | 48 | ||||
-rw-r--r-- | asm/util.s | 156 | ||||
-rw-r--r-- | ld_script.txt | 4 |
6 files changed, 4011 insertions, 3975 deletions
diff --git a/asm/bg_palette_buffer.s b/asm/bg_palette_buffer.s new file mode 100644 index 0000000..9b42ee5 --- /dev/null +++ b/asm/bg_palette_buffer.s @@ -0,0 +1,263 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start InitBGPaletteBuffer +InitBGPaletteBuffer: + push {lr} + movs r2, 0 + ldr r1, _0800465C + movs r0, 0x80 + lsls r0, 2 +_0800463E: + strh r2, [r1] + adds r1, 0x2 + subs r0, 0x1 + cmp r0, 0 + bne _0800463E + ldr r1, _08004660 + movs r2, 0x1 + adds r0, r1, 0 + adds r0, 0x1F +_08004650: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _08004650 + pop {r0} + bx r0 + .align 2, 0 +_0800465C: .4byte gUnknown_20251F0 +_08004660: .4byte gUnknown_20251D0 + thumb_func_end InitBGPaletteBuffer + + thumb_func_start SetBGPaletteBufferColorRGB +SetBGPaletteBufferColorRGB: + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + cmp r2, 0 + bge _08004670 + movs r2, 0 +_08004670: + cmp r2, 0x1F + ble _08004676 + movs r2, 0x1F +_08004676: + ldr r1, _080046CC + adds r0, r4, 0 + cmp r4, 0 + bge _08004680 + adds r0, 0xF +_08004680: + asrs r0, 4 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + cmp r3, 0 + bne _080046D4 + ldr r0, _080046D0 + lsls r1, r4, 1 + adds r6, r1, r0 + ldrb r0, [r5, 0x2] + muls r0, r2 + cmp r0, 0 + bge _0800469C + adds r0, 0xFF +_0800469C: + asrs r0, 8 + movs r3, 0x1F + ands r0, r3 + lsls r4, r0, 10 + ldrb r0, [r5, 0x1] + muls r0, r2 + cmp r0, 0 + bge _080046AE + adds r0, 0xFF +_080046AE: + asrs r0, 8 + ands r0, r3 + lsls r1, r0, 5 + orrs r1, r4 + ldrb r0, [r5] + muls r0, r2 + cmp r0, 0 + bge _080046C0 + adds r0, 0xFF +_080046C0: + asrs r0, 8 + ands r0, r3 + orrs r1, r0 + strh r1, [r6] + b _08004722 + .align 2, 0 +_080046CC: .4byte gUnknown_20251D0 +_080046D0: .4byte gUnknown_20251F0 +_080046D4: + ldr r1, _08004728 + lsls r0, r4, 1 + adds r7, r0, r1 + ldrb r0, [r5, 0x2] + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x2] + muls r0, r2 + cmp r0, 0 + bge _080046EA + adds r0, 0xFF +_080046EA: + asrs r0, 8 + movs r4, 0x1F + ands r0, r4 + lsls r6, r0, 10 + ldrb r0, [r5, 0x1] + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x1] + muls r0, r2 + cmp r0, 0 + bge _08004702 + adds r0, 0xFF +_08004702: + asrs r0, 8 + ands r0, r4 + lsls r1, r0, 5 + orrs r1, r6 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0] + muls r0, r2 + cmp r0, 0 + bge _0800471A + adds r0, 0xFF +_0800471A: + asrs r0, 8 + ands r0, r4 + orrs r1, r0 + strh r1, [r7] +_08004722: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08004728: .4byte gUnknown_20251F0 + thumb_func_end SetBGPaletteBufferColorRGB + + thumb_func_start SetBGPaletteBufferColorArray +SetBGPaletteBufferColorArray: + push {lr} + adds r2, r0, 0 + adds r3, r1, 0 + ldr r1, _08004764 + cmp r2, 0 + bge _0800473A + adds r0, 0xF +_0800473A: + asrs r0, 4 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + ldr r0, _08004768 + lsls r2, 1 + adds r2, r0 + ldrb r1, [r3, 0x2] + lsrs r1, 3 + lsls r1, 10 + ldrb r0, [r3, 0x1] + lsrs r0, 3 + lsls r0, 5 + orrs r1, r0 + ldrb r0, [r3] + lsrs r0, 3 + orrs r0, r1 + strh r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_08004764: .4byte gUnknown_20251D0 +_08004768: .4byte gUnknown_20251F0 + thumb_func_end SetBGPaletteBufferColorArray + + thumb_func_start SetBGPaletteBufferColor +SetBGPaletteBufferColor: + push {lr} + adds r2, r0, 0 + adds r3, r1, 0 + ldr r1, _08004790 + cmp r2, 0 + bge _0800477A + adds r0, 0xF +_0800477A: + asrs r0, 4 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + ldr r1, _08004794 + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r3] + strh r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08004790: .4byte gUnknown_20251D0 +_08004794: .4byte gUnknown_20251F0 + thumb_func_end SetBGPaletteBufferColor + + thumb_func_start nullsub_4 +nullsub_4: + bx lr + thumb_func_end nullsub_4 + + thumb_func_start nullsub_5 +nullsub_5: + bx lr + thumb_func_end nullsub_5 + + thumb_func_start nullsub_143 +nullsub_143: + bx lr + thumb_func_end nullsub_143 + + thumb_func_start TransferBGPaletteBuffer +TransferBGPaletteBuffer: + push {r4-r6,lr} + movs r6, 0 + movs r4, 0 + movs r5, 0xA0 + lsls r5, 19 +_080047AE: + ldr r0, _080047DC + adds r1, r6, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _080047CA + movs r0, 0 + strb r0, [r1] + lsls r1, r4, 1 + ldr r0, _080047E0 + adds r1, r0 + adds r0, r5, 0 + movs r2, 0x20 + bl CpuCopy +_080047CA: + adds r6, 0x1 + adds r5, 0x20 + adds r4, 0x10 + ldr r0, _080047E4 + cmp r4, r0 + ble _080047AE + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080047DC: .4byte gUnknown_20251D0 +_080047E0: .4byte gUnknown_20251F0 +_080047E4: .4byte 0x000001ff + thumb_func_end TransferBGPaletteBuffer + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/code_80035F0.s b/asm/code_80035F0.s index 390c54d..93d3646 100644 --- a/asm/code_80035F0.s +++ b/asm/code_80035F0.s @@ -2026,3979 +2026,4 @@ _080044F8: .4byte gUnknown_3000C00 _080044FC: .4byte gUnknown_3000400 thumb_func_end sub_8004434 - thumb_func_start OtherRandom -OtherRandom: - ldr r1, _08004514 - ldrh r2, [r1] - movs r0, 0x6D - muls r0, r2 - ldr r2, _08004518 - adds r0, r2 - strh r0, [r1] - ldrh r0, [r1] - bx lr - .align 2, 0 -_08004514: .4byte gUnknown_203B070 -_08004518: .4byte 0x000003fd - thumb_func_end OtherRandom - - thumb_func_start OtherRandomCapped -OtherRandomCapped: - push {r4,lr} - adds r4, r0, 0 - bl OtherRandom - muls r0, r4 - asrs r0, 16 - pop {r4} - pop {r1} - bx r1 - thumb_func_end OtherRandomCapped - - thumb_func_start OtherRandomRange -OtherRandomRange: - push {r4,lr} - adds r4, r0, 0 - subs r0, r1, r4 - bl OtherRandomCapped - adds r0, r4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end OtherRandomRange - - thumb_func_start ReverseString -ReverseString: - push {r4,r5,lr} - adds r3, r0, 0 - subs r4, r1, 0x1 - adds r2, r3, r4 - movs r5, 0 - cmp r5, r4 - bge _08004566 -_08004552: - ldrb r1, [r3] - ldrb r0, [r2] - strb r0, [r3] - adds r3, 0x1 - strb r1, [r2] - subs r2, 0x1 - adds r5, 0x1 - subs r4, 0x1 - cmp r5, r4 - blt _08004552 -_08004566: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end ReverseString - - thumb_func_start ConvertToDecimal -ConvertToDecimal: - push {r4-r7,lr} - adds r4, r1, 0 - cmp r4, 0 - ble _08004578 - movs r7, 0x1 - b _0800457E -_08004578: - negs r4, r4 - movs r7, 0x1 - negs r7, r7 -_0800457E: - cmp r2, 0 - ble _080045A0 - adds r6, r0, 0 - adds r5, r2, 0 -_08004586: - adds r0, r4, 0 - movs r1, 0xA - bl __modsi3 - stm r6!, {r0} - adds r0, r4, 0 - movs r1, 0xA - bl __divsi3 - adds r4, r0, 0 - subs r5, 0x1 - cmp r5, 0 - bne _08004586 -_080045A0: - adds r0, r7, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end ConvertToDecimal - - thumb_func_start ConvertFromDecimal -ConvertFromDecimal: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldm r4!, {r1} - movs r3, 0xA - cmp r2, 0x1 - ble _080045CA - subs r2, 0x1 -_080045B8: - ldm r4!, {r0} - muls r0, r3 - adds r1, r0 - subs r2, 0x1 - lsls r0, r3, 2 - adds r0, r3 - lsls r3, r0, 1 - cmp r2, 0 - bne _080045B8 -_080045CA: - adds r0, r1, 0 - cmp r5, 0 - bge _080045D2 - negs r0, r0 -_080045D2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ConvertFromDecimal - - thumb_func_start ConvertFromBCD -ConvertFromBCD: - push {r4,lr} - adds r1, r0, 0 - movs r2, 0x1 - movs r3, 0 - cmp r1, 0 - ble _080045FA - movs r4, 0xF -_080045E6: - adds r0, r1, 0 - ands r0, r4 - muls r0, r2 - adds r3, r0 - lsls r0, r2, 2 - adds r0, r2 - lsls r2, r0, 1 - asrs r1, 4 - cmp r1, 0 - bgt _080045E6 -_080045FA: - adds r0, r3, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ConvertFromBCD - - thumb_func_start ConvertToBCD -ConvertToBCD: - push {r4-r6,lr} - adds r4, r0, 0 - movs r5, 0 - movs r6, 0 - cmp r4, 0 - ble _0800462C -_08004610: - adds r0, r4, 0 - movs r1, 0xA - bl __modsi3 - lsls r0, r5 - adds r6, r0 - adds r5, 0x4 - adds r0, r4, 0 - movs r1, 0xA - bl __divsi3 - adds r4, r0, 0 - cmp r4, 0 - bgt _08004610 -_0800462C: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ConvertToBCD - - thumb_func_start InitBGPaletteBuffer -InitBGPaletteBuffer: - push {lr} - movs r2, 0 - ldr r1, _0800465C - movs r0, 0x80 - lsls r0, 2 -_0800463E: - strh r2, [r1] - adds r1, 0x2 - subs r0, 0x1 - cmp r0, 0 - bne _0800463E - ldr r1, _08004660 - movs r2, 0x1 - adds r0, r1, 0 - adds r0, 0x1F -_08004650: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _08004650 - pop {r0} - bx r0 - .align 2, 0 -_0800465C: .4byte gUnknown_20251F0 -_08004660: .4byte gUnknown_20251D0 - thumb_func_end InitBGPaletteBuffer - - thumb_func_start SetBGPaletteBufferColorRGB -SetBGPaletteBufferColorRGB: - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - cmp r2, 0 - bge _08004670 - movs r2, 0 -_08004670: - cmp r2, 0x1F - ble _08004676 - movs r2, 0x1F -_08004676: - ldr r1, _080046CC - adds r0, r4, 0 - cmp r4, 0 - bge _08004680 - adds r0, 0xF -_08004680: - asrs r0, 4 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - cmp r3, 0 - bne _080046D4 - ldr r0, _080046D0 - lsls r1, r4, 1 - adds r6, r1, r0 - ldrb r0, [r5, 0x2] - muls r0, r2 - cmp r0, 0 - bge _0800469C - adds r0, 0xFF -_0800469C: - asrs r0, 8 - movs r3, 0x1F - ands r0, r3 - lsls r4, r0, 10 - ldrb r0, [r5, 0x1] - muls r0, r2 - cmp r0, 0 - bge _080046AE - adds r0, 0xFF -_080046AE: - asrs r0, 8 - ands r0, r3 - lsls r1, r0, 5 - orrs r1, r4 - ldrb r0, [r5] - muls r0, r2 - cmp r0, 0 - bge _080046C0 - adds r0, 0xFF -_080046C0: - asrs r0, 8 - ands r0, r3 - orrs r1, r0 - strh r1, [r6] - b _08004722 - .align 2, 0 -_080046CC: .4byte gUnknown_20251D0 -_080046D0: .4byte gUnknown_20251F0 -_080046D4: - ldr r1, _08004728 - lsls r0, r4, 1 - adds r7, r0, r1 - ldrb r0, [r5, 0x2] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x2] - muls r0, r2 - cmp r0, 0 - bge _080046EA - adds r0, 0xFF -_080046EA: - asrs r0, 8 - movs r4, 0x1F - ands r0, r4 - lsls r6, r0, 10 - ldrb r0, [r5, 0x1] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x1] - muls r0, r2 - cmp r0, 0 - bge _08004702 - adds r0, 0xFF -_08004702: - asrs r0, 8 - ands r0, r4 - lsls r1, r0, 5 - orrs r1, r6 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0] - muls r0, r2 - cmp r0, 0 - bge _0800471A - adds r0, 0xFF -_0800471A: - asrs r0, 8 - ands r0, r4 - orrs r1, r0 - strh r1, [r7] -_08004722: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08004728: .4byte gUnknown_20251F0 - thumb_func_end SetBGPaletteBufferColorRGB - - thumb_func_start SetBGPaletteBufferColorArray -SetBGPaletteBufferColorArray: - push {lr} - adds r2, r0, 0 - adds r3, r1, 0 - ldr r1, _08004764 - cmp r2, 0 - bge _0800473A - adds r0, 0xF -_0800473A: - asrs r0, 4 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08004768 - lsls r2, 1 - adds r2, r0 - ldrb r1, [r3, 0x2] - lsrs r1, 3 - lsls r1, 10 - ldrb r0, [r3, 0x1] - lsrs r0, 3 - lsls r0, 5 - orrs r1, r0 - ldrb r0, [r3] - lsrs r0, 3 - orrs r0, r1 - strh r0, [r2] - pop {r0} - bx r0 - .align 2, 0 -_08004764: .4byte gUnknown_20251D0 -_08004768: .4byte gUnknown_20251F0 - thumb_func_end SetBGPaletteBufferColorArray - - thumb_func_start SetBGPaletteBufferColor -SetBGPaletteBufferColor: - push {lr} - adds r2, r0, 0 - adds r3, r1, 0 - ldr r1, _08004790 - cmp r2, 0 - bge _0800477A - adds r0, 0xF -_0800477A: - asrs r0, 4 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r1, _08004794 - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r3] - strh r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_08004790: .4byte gUnknown_20251D0 -_08004794: .4byte gUnknown_20251F0 - thumb_func_end SetBGPaletteBufferColor - - thumb_func_start nullsub_4 -nullsub_4: - bx lr - thumb_func_end nullsub_4 - - thumb_func_start nullsub_5 -nullsub_5: - bx lr - thumb_func_end nullsub_5 - - thumb_func_start nullsub_143 -nullsub_143: - bx lr - thumb_func_end nullsub_143 - - thumb_func_start TransferBGPaletteBuffer -TransferBGPaletteBuffer: - push {r4-r6,lr} - movs r6, 0 - movs r4, 0 - movs r5, 0xA0 - lsls r5, 19 -_080047AE: - ldr r0, _080047DC - adds r1, r6, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080047CA - movs r0, 0 - strb r0, [r1] - lsls r1, r4, 1 - ldr r0, _080047E0 - adds r1, r0 - adds r0, r5, 0 - movs r2, 0x20 - bl CpuCopy -_080047CA: - adds r6, 0x1 - adds r5, 0x20 - adds r4, 0x10 - ldr r0, _080047E4 - cmp r4, r0 - ble _080047AE - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080047DC: .4byte gUnknown_20251D0 -_080047E0: .4byte gUnknown_20251F0 -_080047E4: .4byte 0x000001ff - thumb_func_end TransferBGPaletteBuffer - - thumb_func_start sub_80047E8 -sub_80047E8: - ldr r0, _08004840 - movs r3, 0 - movs r2, 0 - strh r2, [r0] - strh r2, [r0, 0x2] - strh r2, [r0, 0x4] - strh r2, [r0, 0x6] - ldr r0, _08004844 - strh r2, [r0] - strh r2, [r0, 0x2] - strh r2, [r0, 0x4] - strh r2, [r0, 0x6] - ldr r1, _08004848 - ldr r0, _0800484C - str r0, [r1] - ldr r0, _08004850 - str r2, [r0, 0x20] - ldr r1, _08004854 - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r1, [r0, 0x1C] - strh r1, [r0, 0x1E] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - strh r1, [r0, 0x14] - strh r1, [r0, 0x16] - adds r1, r0, 0 - adds r1, 0x28 - strb r3, [r1] - adds r0, 0x29 - strb r3, [r0] - ldr r0, _08004858 - strh r2, [r0] - strh r2, [r0, 0x2] - bx lr - .align 2, 0 -_08004840: .4byte gUnknown_20255F0 -_08004844: .4byte gUnknown_2025638 -_08004848: .4byte gUnknown_202562C -_0800484C: .4byte 0x004a14c1 -_08004850: .4byte gUnknown_2025600 -_08004854: .4byte 0x0000ffff -_08004858: .4byte gUnknown_2025668 - thumb_func_end sub_80047E8 - - thumb_func_start sub_800485C -sub_800485C: - push {r4,r5,lr} - ldr r2, _080048A8 - ldr r1, _080048AC - adds r0, r2, 0 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldr r0, [r0] - str r0, [r1] - movs r3, 0 - movs r0, 0 - strh r0, [r2] - strh r0, [r2, 0x2] - strh r0, [r2, 0x4] - strh r0, [r2, 0x6] - ldr r0, _080048B0 - ldr r1, _080048B4 - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - strh r1, [r0, 0x14] - strh r1, [r0, 0x16] - adds r1, r0, 0 - adds r1, 0x28 - strb r3, [r1] - adds r0, 0x29 - strb r3, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080048A8: .4byte gUnknown_2025638 -_080048AC: .4byte gUnknown_20255F0 -_080048B0: .4byte gUnknown_2025600 -_080048B4: .4byte 0x0000ffff - thumb_func_end sub_800485C - - thumb_func_start sub_80048B8 -sub_80048B8: - movs r0, 0 - bx lr - thumb_func_end sub_80048B8 - - thumb_func_start sub_80048BC -sub_80048BC: - movs r0, 0 - bx lr - thumb_func_end sub_80048BC - - thumb_func_start sub_80048C0 -sub_80048C0: - movs r0, 0 - bx lr - thumb_func_end sub_80048C0 - - thumb_func_start sub_80048C4 -sub_80048C4: - movs r0, 0 - bx lr - thumb_func_end sub_80048C4 - - thumb_func_start sub_80048C8 -sub_80048C8: - movs r0, 0 - bx lr - thumb_func_end sub_80048C8 - - thumb_func_start sub_80048CC -sub_80048CC: - movs r0, 0 - bx lr - thumb_func_end sub_80048CC - - thumb_func_start sub_80048D0 -sub_80048D0: - ldr r1, _080048E8 - movs r0, 0 - strh r0, [r1, 0x4] - ldr r1, _080048EC - str r0, [r1, 0xC] - strh r0, [r1, 0x8] - ldr r1, _080048F0 - ldr r0, _080048F4 - strh r0, [r1] - strh r0, [r1, 0x2] - bx lr - .align 2, 0 -_080048E8: .4byte gUnknown_20255F0 -_080048EC: .4byte gUnknown_2025648 -_080048F0: .4byte gUnknown_2025668 -_080048F4: .4byte 0x000003e7 - thumb_func_end sub_80048D0 - - thumb_func_start sub_80048F8 -sub_80048F8: - ldr r0, _08004908 - movs r1, 0 - strh r1, [r0, 0x2] - ldr r0, _0800490C - strh r1, [r0, 0x2] - ldr r0, _08004910 - strh r1, [r0, 0x2] - bx lr - .align 2, 0 -_08004908: .4byte gUnknown_20255F0 -_0800490C: .4byte gUnknown_2025638 -_08004910: .4byte gUnknown_2025648 - thumb_func_end sub_80048F8 - - thumb_func_start sub_8004914 -sub_8004914: - ldr r0, _0800494C - movs r1, 0x5 - str r1, [r0, 0x20] - movs r2, 0 - movs r1, 0 - strh r1, [r0, 0x24] - ldr r1, _08004950 - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - strh r1, [r0, 0x14] - strh r1, [r0, 0x16] - adds r1, r0, 0 - adds r1, 0x28 - strb r2, [r1] - adds r0, 0x29 - strb r2, [r0] - bx lr - .align 2, 0 -_0800494C: .4byte gUnknown_2025600 -_08004950: .4byte 0x0000ffff - thumb_func_end sub_8004914 - - thumb_func_start UpdateInput -UpdateInput: - push {r4-r6,lr} - ldr r4, _08004998 - ldr r5, _0800499C - adds r1, r4, 0 - adds r0, r5, 0 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldr r0, [r0] - str r0, [r1] - adds r0, r5, 0 - bl ReadKeyInput - ldrh r0, [r4] - ldrh r3, [r5] - eors r0, r3 - ands r0, r3 - strh r0, [r5, 0x2] - lsls r0, r3, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080049A8 - ldrh r1, [r5, 0x8] - movs r0, 0xF0 - adds r2, r0, 0 - ands r2, r3 - ands r0, r1 - cmp r0, r2 - bne _080049A0 - ldr r0, [r5, 0xC] - cmp r0, 0x31 - bgt _080049AC - adds r0, 0x1 - str r0, [r5, 0xC] - b _080049AC - .align 2, 0 -_08004998: .4byte gUnknown_2025658 -_0800499C: .4byte gUnknown_2025648 -_080049A0: - strh r2, [r5, 0x8] - movs r0, 0x1 - str r0, [r5, 0xC] - b _080049AC -_080049A8: - str r0, [r5, 0xC] - strh r0, [r5, 0x8] -_080049AC: - ldr r0, _080049C4 - ldr r2, [r0, 0xC] - adds r3, r0, 0 - cmp r2, 0x1 - bne _080049C8 - ldrh r0, [r3, 0x8] - movs r1, 0xF0 - ands r1, r0 - ldrh r0, [r3, 0x2] - orrs r1, r0 - strh r1, [r3, 0x4] - b _080049E0 - .align 2, 0 -_080049C4: .4byte gUnknown_2025648 -_080049C8: - cmp r2, 0x30 - bne _080049DC - movs r0, 0x2B - str r0, [r3, 0xC] - ldrh r1, [r3, 0x8] - movs r0, 0xF0 - ands r0, r1 - ldrh r1, [r3, 0x2] - orrs r0, r1 - b _080049DE -_080049DC: - movs r0, 0 -_080049DE: - strh r0, [r3, 0x4] -_080049E0: - movs r0, 0 - strh r0, [r3, 0x6] - ldrh r1, [r3] - movs r5, 0x2 - adds r0, r5, 0 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08004A0C - ldr r0, _08004A08 - ldrh r2, [r0] - movs r4, 0 - ldrsh r1, [r0, r4] - adds r4, r0, 0 - cmp r1, 0x63 - bgt _08004A20 - adds r0, r2, 0x1 - strh r0, [r4] - b _08004A20 - .align 2, 0 -_08004A08: .4byte gUnknown_2025668 -_08004A0C: - ldr r1, _08004A44 - ldrh r0, [r1] - subs r0, 0x2 - lsls r0, 16 - lsrs r0, 16 - adds r4, r1, 0 - cmp r0, 0x9 - bhi _08004A1E - strh r5, [r3, 0x6] -_08004A1E: - strh r2, [r4] -_08004A20: - ldrh r1, [r3] - movs r5, 0x80 - lsls r5, 1 - adds r0, r5, 0 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08004A48 - ldrh r1, [r4, 0x2] - movs r6, 0x2 - ldrsh r0, [r4, r6] - cmp r0, 0x63 - bgt _08004A5E - adds r0, r1, 0x1 - strh r0, [r4, 0x2] - b _08004A5E - .align 2, 0 -_08004A44: .4byte gUnknown_2025668 -_08004A48: - ldrh r0, [r4, 0x2] - subs r0, 0x2 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x9 - bhi _08004A5C - ldrh r1, [r3, 0x6] - adds r0, r5, 0 - orrs r0, r1 - strh r0, [r3, 0x6] -_08004A5C: - strh r2, [r4, 0x2] -_08004A5E: - ldr r2, _08004A94 - ldrh r0, [r2] - ldrh r1, [r3] - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r2, 0x2] - ldrh r1, [r3, 0x2] - orrs r0, r1 - strh r0, [r2, 0x2] - ldrh r0, [r2, 0x4] - ldrh r1, [r3, 0x4] - orrs r0, r1 - strh r0, [r2, 0x4] - ldrh r0, [r2, 0x6] - ldrh r1, [r3, 0x6] - orrs r0, r1 - strh r0, [r2, 0x6] - ldr r2, _08004A98 - ldrh r0, [r3] - ldr r1, _08004A9C - orrs r0, r1 - ldr r1, [r2] - muls r0, r1 - str r0, [r2] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08004A94: .4byte gUnknown_2025638 -_08004A98: .4byte gUnknown_202562C -_08004A9C: .4byte 0x054a1c41 - thumb_func_end UpdateInput - - thumb_func_start nullsub_6 -nullsub_6: - bx lr - thumb_func_end nullsub_6 - - thumb_func_start sub_8004AA4 -sub_8004AA4: - push {r4,r5,lr} - adds r3, r0, 0 - ldr r4, [r1, 0x4] - cmp r2, 0 - ble _08004AE8 -_08004AAE: - ldm r4!, {r1} - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, 0 - beq _08004ADE - movs r0, 0x80 - lsls r0, 24 - str r0, [r3] - ldrh r0, [r1, 0x2] - strh r0, [r3, 0x6] - ldrh r0, [r1, 0x2] - strh r0, [r3, 0x4] - adds r0, r1, 0x4 - str r0, [r3, 0x8] - str r0, [r3, 0xC] - movs r5, 0 - ldrsh r0, [r1, r5] - lsls r0, 2 - adds r0, 0x4 - adds r0, r1, r0 - str r0, [r3, 0x10] - ldr r0, [r1, 0x4] - str r0, [r3, 0x14] - b _08004AE0 -_08004ADE: - str r0, [r3] -_08004AE0: - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bne _08004AAE -_08004AE8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8004AA4 - - thumb_func_start sub_8004AF0 -sub_8004AF0: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r1, 0 - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - cmp r7, r3 - bge _08004B6A - adds r5, r3, 0 -_08004B08: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D14 - lsls r0, 24 - cmp r0, 0 - beq _08004B60 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D40 - lsls r0, 24 - cmp r0, 0 - bne _08004B60 - mov r1, r8 - ldrh r0, [r4, 0x6] - subs r0, 0x1 - strh r0, [r4, 0x6] - lsls r0, 16 - cmp r0, 0 - bgt _08004B4E - ldrh r0, [r4, 0x4] - strh r0, [r4, 0x6] - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bcc _08004B42 - ldr r0, [r4, 0x8] - str r0, [r4, 0xC] -_08004B42: - ldr r1, [r4, 0xC] - ldm r1!, {r0} - str r0, [r4, 0x14] - str r1, [r4, 0xC] - movs r1, 0x1 - movs r7, 0x1 -_08004B4E: - cmp r1, 0 - beq _08004B60 - adds r1, r4, 0 - adds r1, 0x14 - adds r0, r6, 0 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - bl SetBGPaletteBufferColorRGB -_08004B60: - subs r5, 0x1 - adds r4, 0x18 - adds r6, 0x1 - cmp r5, 0 - bne _08004B08 -_08004B6A: - adds r0, r7, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8004AF0 - - thumb_func_start sub_8004B78 -sub_8004B78: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r1, 0 - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - cmp r7, r3 - bge _08004BF2 - adds r5, r3, 0 -_08004B90: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D14 - lsls r0, 24 - cmp r0, 0 - beq _08004BE8 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D40 - lsls r0, 24 - cmp r0, 0 - bne _08004BE8 - mov r1, r8 - ldrh r0, [r4, 0x6] - subs r0, 0x1 - strh r0, [r4, 0x6] - lsls r0, 16 - cmp r0, 0 - bgt _08004BD6 - ldrh r0, [r4, 0x4] - strh r0, [r4, 0x6] - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bcc _08004BCA - ldr r0, [r4, 0x8] - str r0, [r4, 0xC] -_08004BCA: - ldr r1, [r4, 0xC] - ldm r1!, {r0} - str r0, [r4, 0x14] - str r1, [r4, 0xC] - movs r1, 0x1 - movs r7, 0x1 -_08004BD6: - cmp r1, 0 - beq _08004BE8 - adds r1, r4, 0 - adds r1, 0x14 - adds r0, r6, 0 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - bl nullsub_4 -_08004BE8: - subs r5, 0x1 - adds r4, 0x18 - adds r6, 0x1 - cmp r5, 0 - bne _08004B90 -_08004BF2: - adds r0, r7, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8004B78 - - thumb_func_start sub_8004C00 -sub_8004C00: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r10, r3 - ldr r0, [sp, 0x28] - mov r8, r0 - movs r1, 0 - mov r9, r1 - cmp r9, r2 - bge _08004CDC - adds r6, r2, 0 -_08004C20: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D14 - lsls r0, 24 - cmp r0, 0 - beq _08004CD2 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D40 - lsls r0, 24 - cmp r0, 0 - bne _08004CD2 - ldrh r0, [r4, 0x6] - subs r0, 0x1 - strh r0, [r4, 0x6] - lsls r0, 16 - cmp r0, 0 - bgt _08004C64 - ldrh r0, [r4, 0x4] - strh r0, [r4, 0x6] - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bcc _08004C58 - ldr r0, [r4, 0x8] - str r0, [r4, 0xC] -_08004C58: - ldr r1, [r4, 0xC] - ldm r1!, {r0} - str r0, [r4, 0x14] - str r1, [r4, 0xC] - movs r2, 0x1 - mov r9, r2 -_08004C64: - mov r3, r8 - movs r5, 0 - ldrsh r0, [r3, r5] - ldrb r2, [r4, 0x14] - adds r1, r0, r2 - movs r5, 0x2 - ldrsh r0, [r3, r5] - ldrb r2, [r4, 0x15] - adds r3, r0, r2 - mov r5, r8 - movs r2, 0x4 - ldrsh r0, [r5, r2] - ldrb r2, [r4, 0x16] - adds r5, r0, r2 - cmp r1, 0xFF - ble _08004C86 - movs r1, 0xFF -_08004C86: - cmp r3, 0xFF - ble _08004C8C - movs r3, 0xFF -_08004C8C: - cmp r5, 0xFF - ble _08004C92 - movs r5, 0xFF -_08004C92: - cmp r1, 0 - bge _08004C98 - movs r1, 0 -_08004C98: - cmp r3, 0 - bge _08004C9E - movs r3, 0 -_08004C9E: - cmp r5, 0 - bge _08004CA4 - movs r5, 0 -_08004CA4: - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08004CF0 - ldr r0, [sp] - ands r0, r2 - orrs r0, r1 - lsls r2, r3, 24 - lsrs r2, 16 - ldr r1, _08004CF4 - ands r0, r1 - orrs r0, r2 - lsls r2, r5, 24 - lsrs r2, 8 - ldr r1, _08004CF8 - ands r0, r1 - orrs r0, r2 - str r0, [sp] - adds r0, r7, 0 - mov r1, sp - mov r2, r10 - ldr r3, [sp, 0x24] - bl SetBGPaletteBufferColorRGB -_08004CD2: - subs r6, 0x1 - adds r4, 0x18 - adds r7, 0x1 - cmp r6, 0 - bne _08004C20 -_08004CDC: - mov r0, r9 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08004CF0: .4byte 0xffffff00 -_08004CF4: .4byte 0xffff00ff -_08004CF8: .4byte 0xff00ffff - thumb_func_end sub_8004C00 - - thumb_func_start sub_8004CFC -sub_8004CFC: - push {lr} - cmp r1, 0 - ble _08004D0E - movs r2, 0 -_08004D04: - str r2, [r0] - adds r0, 0x18 - subs r1, 0x1 - cmp r1, 0 - bne _08004D04 -_08004D0E: - pop {r0} - bx r0 - thumb_func_end sub_8004CFC - - thumb_func_start sub_8004D14 -sub_8004D14: - push {r4,lr} - adds r2, r0, 0 - movs r3, 0 - cmp r3, r1 - bge _08004D36 - movs r4, 0x80 - lsls r4, 24 -_08004D22: - ldr r0, [r2] - ands r0, r4 - cmp r0, 0 - beq _08004D2E - movs r0, 0x1 - b _08004D38 -_08004D2E: - adds r2, 0x18 - adds r3, 0x1 - cmp r3, r1 - blt _08004D22 -_08004D36: - movs r0, 0 -_08004D38: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8004D14 - - thumb_func_start sub_8004D40 -sub_8004D40: - push {r4-r6,lr} - adds r3, r0, 0 - adds r4, r1, 0 - movs r1, 0 - cmp r1, r4 - bge _08004D70 - movs r6, 0x80 - lsls r6, 24 - movs r5, 0x80 - lsls r5, 22 -_08004D54: - ldr r2, [r3] - adds r0, r2, 0 - ands r0, r6 - cmp r0, 0 - beq _08004D6A - ands r2, r5 - cmp r2, 0 - bne _08004D68 - movs r0, 0 - b _08004D72 -_08004D68: - adds r3, 0x18 -_08004D6A: - adds r1, 0x1 - cmp r1, r4 - blt _08004D54 -_08004D70: - movs r0, 0x1 -_08004D72: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8004D40 - - thumb_func_start sub_8004D78 -sub_8004D78: - push {lr} - movs r0, 0x1 - bl sub_8004D8C - movs r0, 0 - bl SetSavingIconCoords - pop {r0} - bx r0 - thumb_func_end sub_8004D78 - - thumb_func_start sub_8004D8C -sub_8004D8C: - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08004E68 - movs r0, 0 - str r0, [r1] - ldr r1, _08004E6C - ldr r0, _08004E70 - str r0, [r1] - ldr r1, _08004E74 - ldr r0, _08004E78 - str r0, [r1] - ldr r0, _08004E7C - adds r1, r0, 0 - adds r1, 0x8 - adds r5, r0, 0 - movs r2, 0 - movs r3, 0xF0 -_08004DB0: - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - subs r3, 0x10 - cmp r3, 0 - bge _08004DB0 - cmp r4, 0 - beq _08004E50 - movs r2, 0 - ldr r1, _08004E80 - ldr r0, _08004E84 - movs r3, 0x7F -_08004E42: - str r2, [r0] - str r1, [r0, 0x4] - adds r1, 0x8 - adds r0, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _08004E42 -_08004E50: - movs r1, 0x80 - lsls r1, 4 - adds r0, r5, r1 - movs r1, 0 - str r1, [r0] - ldr r2, _08004E88 - adds r0, r5, r2 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08004E68: .4byte gUnknown_20266A8 -_08004E6C: .4byte gUnknown_2026E30 -_08004E70: .4byte 0x06010000 -_08004E74: .4byte gUnknown_203B074 -_08004E78: .4byte gUnknown_20266B0 -_08004E7C: .4byte gUnknown_20256A0 -_08004E80: .4byte gUnknown_20262A8 -_08004E84: .4byte gUnknown_2025EA8 -_08004E88: .4byte 0x00000804 - thumb_func_end sub_8004D8C - - thumb_func_start sub_8004E8C -sub_8004E8C: - ldr r1, _08004EA4 - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - movs r1, 0 - strh r1, [r0, 0x6] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - bx lr - .align 2, 0 -_08004EA4: .4byte 0x0000ffff - thumb_func_end sub_8004E8C - - thumb_func_start sub_8004EA8 -sub_8004EA8: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - adds r5, r0, 0 - mov r8, r1 - adds r0, r2, 0 - adds r6, r3, 0 - cmp r0, 0 - beq _08004EC2 - bl sub_80052BC -_08004EC2: - ldr r0, _08004F40 - ldr r7, [r0] - mov r12, r0 - cmp r7, 0x7F - ble _08004ECE - b _08005082 -_08004ECE: - mov r2, sp - ldrh r0, [r5] - strh r0, [r2] - ldrh r0, [r5, 0x2] - strh r0, [r2, 0x2] - ldrh r4, [r5, 0x4] - ldr r0, _08004F44 - ands r0, r4 - strh r0, [r2, 0x4] - ldrh r3, [r5, 0x6] - ldr r0, _08004F48 - ands r0, r3 - strh r0, [r2, 0x6] - ldrh r0, [r5, 0x8] - strh r0, [r2, 0x8] - movs r1, 0xE0 - lsls r1, 4 - ands r1, r3 - lsrs r1, 9 - ldr r0, _08004F4C - ands r0, r4 - lsls r0, 4 - orrs r1, r0 - strh r1, [r2, 0xA] - lsls r1, r7, 3 - ldr r0, _08004F50 - adds r3, r1, r0 - mov r0, r8 - movs r2, 0x16 - ldrsh r1, [r0, r2] - mov r0, sp - ldrb r0, [r0, 0x3] - lsls r0, 24 - asrs r0, 24 - adds r7, r1, r0 - cmp r7, 0 - bge _08004F1A - movs r7, 0 -_08004F1A: - cmp r7, 0xFF - ble _08004F20 - movs r7, 0xFF -_08004F20: - cmp r6, 0 - bne _08004F54 - add r2, sp, 0x4 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - ldrh r0, [r2] - strh r0, [r3, 0x2] - adds r2, 0x2 - adds r1, r3, 0x4 - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - ldrh r0, [r2] - strh r0, [r1, 0x2] - b _08004F86 - .align 2, 0 -_08004F40: .4byte gUnknown_20266A8 -_08004F44: .4byte 0x0000fcff -_08004F48: .4byte 0x0000f1ff -_08004F4C: .4byte 0x000003ff -_08004F50: .4byte gUnknown_20262A8 -_08004F54: - add r4, sp, 0x4 - ldrh r1, [r4] - ldrh r0, [r6] - ands r0, r1 - ldrh r1, [r6, 0x6] - orrs r0, r1 - strh r0, [r3] - adds r4, 0x2 - ldrh r1, [r4] - ldrh r0, [r6, 0x2] - ands r0, r1 - ldrh r1, [r6, 0x8] - orrs r0, r1 - strh r0, [r3, 0x2] - adds r4, 0x2 - adds r2, r3, 0x4 - ldrh r1, [r4] - ldrh r0, [r6, 0x4] - ands r0, r1 - ldrh r1, [r6, 0xA] - orrs r0, r1 - strh r0, [r2] - adds r4, 0x2 - ldrh r0, [r4] - strh r0, [r2, 0x2] -_08004F86: - mov r0, sp - ldrb r0, [r0, 0x2] - cmp r0, 0 - beq _08004FB0 - ldr r1, _08004FA8 - mov r0, sp - ldrb r0, [r0, 0x2] - lsls r0, 1 - adds r1, r0, r1 - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0 - beq _08004FB0 - adds r1, r0, 0 - ldr r0, _08004FAC - ands r1, r0 - b _08004FC0 - .align 2, 0 -_08004FA8: .4byte gUnknown_2025672 -_08004FAC: .4byte 0x000003ff -_08004FB0: - ldrh r1, [r3, 0x4] - ldr r2, _08005090 - ands r1, r2 - mov r6, r8 - movs r4, 0x14 - ldrsh r0, [r6, r4] - adds r1, r0 - ands r1, r2 -_08004FC0: - ldrh r2, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r4, [r3, 0x2] - ldr r5, _08005094 - adds r2, r5, 0 - ands r2, r4 - ldr r6, _08005098 - adds r1, r2, r6 - mov r2, r8 - movs r6, 0 - ldrsh r0, [r2, r6] - adds r2, r1, r0 - movs r0, 0x40 - negs r0, r0 - mov r9, r0 - cmp r2, r9 - blt _08005082 - cmp r2, 0xEF - bgt _08005082 - ands r2, r5 - movs r0, 0xFE - lsls r0, 8 - ands r0, r4 - orrs r0, r2 - strh r0, [r3, 0x2] - ldrh r0, [r3, 0x6] - lsls r4, r0, 16 - ldr r1, _0800509C - adds r5, r1, 0 - lsrs r2, r4, 20 - ldr r6, _080050A0 - adds r1, r2, r6 - mov r2, r8 - movs r6, 0x2 - ldrsh r0, [r2, r6] - adds r2, r1, r0 - cmp r2, r9 - blt _08005082 - cmp r2, 0x9F - bgt _08005082 - movs r0, 0xFF - ands r2, r0 - ldrh r1, [r3] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - strh r0, [r3] - lsrs r0, r4, 17 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08005044 - mov r0, r8 - ldrb r1, [r0, 0x1E] - movs r0, 0xF - ands r1, r0 - lsls r1, 12 - ldrh r0, [r3, 0x4] - ands r0, r5 - orrs r0, r1 - strh r0, [r3, 0x4] -_08005044: - mov r0, sp - ldrb r0, [r0, 0x2] - cmp r0, 0 - beq _08005068 - ldr r1, _080050A4 - mov r0, sp - ldrb r0, [r0, 0x2] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0xF - ands r1, r0 - lsls r1, 12 - ldrh r0, [r3, 0x4] - ands r0, r5 - orrs r0, r1 - strh r0, [r3, 0x4] -_08005068: - ldr r0, _080050A8 - mov r4, r12 - ldr r3, [r4] - lsls r2, r3, 3 - adds r2, r0 - ldr r1, _080050AC - lsls r0, r7, 3 - adds r0, r1 - ldr r1, [r0] - str r1, [r2] - str r2, [r0] - adds r3, 0x1 - str r3, [r4] -_08005082: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08005090: .4byte 0x000003ff -_08005094: .4byte 0x000001ff -_08005098: .4byte 0xffffff00 -_0800509C: .4byte 0x00000fff -_080050A0: .4byte 0xfffffe00 -_080050A4: .4byte gUnknown_2025682 -_080050A8: .4byte gUnknown_2025EA8 -_080050AC: .4byte gUnknown_20256A0 - thumb_func_end sub_8004EA8 - - thumb_func_start AddSprite -AddSprite: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r7, r1, 0 - mov r8, r2 - adds r4, r3, 0 - ldr r0, _080050F4 - ldr r0, [r0] - cmp r0, 0x7F - bgt _08005168 - lsls r1, r0, 3 - ldr r0, _080050F8 - adds r5, r1, r0 - cmp r7, 0 - bge _080050D2 - movs r7, 0 -_080050D2: - cmp r7, 0xFF - ble _080050D8 - movs r7, 0xFF -_080050D8: - cmp r4, 0 - bne _080050FC - ldrh r0, [r6] - strh r0, [r5] - ldrh r0, [r6, 0x2] - strh r0, [r5, 0x2] - adds r1, r6, 0x4 - adds r2, r5, 0x4 - ldrh r0, [r1] - strh r0, [r2] - ldrh r0, [r1, 0x2] - strh r0, [r2, 0x2] - b _08005128 - .align 2, 0 -_080050F4: .4byte gUnknown_20266A8 -_080050F8: .4byte gUnknown_20262A8 -_080050FC: - ldrh r1, [r6] - ldrh r0, [r4] - ands r0, r1 - ldrh r1, [r4, 0x6] - orrs r0, r1 - strh r0, [r5] - ldrh r1, [r6, 0x2] - ldrh r0, [r4, 0x2] - ands r0, r1 - ldrh r1, [r4, 0x8] - orrs r0, r1 - strh r0, [r5, 0x2] - adds r2, r6, 0x4 - adds r3, r5, 0x4 - ldrh r1, [r2] - ldrh r0, [r4, 0x4] - ands r0, r1 - ldrh r1, [r4, 0xA] - orrs r0, r1 - strh r0, [r3] - ldrh r0, [r2, 0x2] - strh r0, [r3, 0x2] -_08005128: - ldrh r4, [r5, 0x6] - lsrs r4, 4 - adds r0, r4, 0 - movs r1, 0 - bl nullsub_3 - movs r0, 0xFF - ands r4, r0 - ldrh r1, [r5] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - orrs r0, r4 - strh r0, [r5] - mov r0, r8 - cmp r0, 0 - beq _0800514E - bl sub_80052BC -_0800514E: - ldr r0, _08005174 - ldr r4, _08005178 - ldr r3, [r4] - lsls r2, r3, 3 - adds r2, r0 - ldr r1, _0800517C - lsls r0, r7, 3 - adds r0, r1 - ldr r1, [r0] - str r1, [r2] - str r2, [r0] - adds r3, 0x1 - str r3, [r4] -_08005168: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08005174: .4byte gUnknown_2025EA8 -_08005178: .4byte gUnknown_20266A8 -_0800517C: .4byte gUnknown_20256A0 - thumb_func_end AddSprite - - thumb_func_start sub_8005180 -sub_8005180: - push {lr} - ldr r2, _080051A8 - adds r1, r2, 0 - cmp r2, 0 - beq _0800519E -_0800518A: - ldr r0, [r1, 0x4] - cmp r0, 0 - beq _08005198 - cmp r2, 0 - beq _08005196 - str r1, [r2] -_08005196: - adds r2, r1, 0 -_08005198: - ldr r1, [r1] - cmp r1, 0 - bne _0800518A -_0800519E: - movs r0, 0 - str r0, [r2] - pop {r0} - bx r0 - .align 2, 0 -_080051A8: .4byte gUnknown_20256A0 - thumb_func_end sub_8005180 - - thumb_func_start CopySpritesToOam -CopySpritesToOam: - push {r4-r6,lr} - ldr r3, _08005204 - ldr r2, _08005208 - movs r4, 0 - ldr r6, _0800520C - cmp r3, 0 - beq _080051E0 - ldr r5, _08005210 -_080051BC: - ldr r1, [r3, 0x4] - cmp r1, 0 - beq _080051D6 - subs r2, 0x4 - ldrh r0, [r1, 0x4] - strh r0, [r2] - subs r2, 0x2 - ldrh r0, [r1, 0x2] - strh r0, [r2] - subs r2, 0x2 - ldrh r0, [r1] - strh r0, [r2] - adds r4, 0x1 -_080051D6: - ldr r3, [r3] - cmp r3, 0 - beq _080051E0 - cmp r2, r5 - bhi _080051BC -_080051E0: - ldr r1, _08005210 - cmp r2, r1 - bls _080051FA - movs r0, 0 - movs r3, 0xA0 -_080051EA: - subs r2, 0x4 - strh r0, [r2] - subs r2, 0x2 - strh r0, [r2] - subs r2, 0x2 - strh r3, [r2] - cmp r2, r1 - bhi _080051EA -_080051FA: - strh r4, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08005204: .4byte gUnknown_20256A0 -_08005208: .4byte 0x07000400 -_0800520C: .4byte gUnknown_2025670 -_08005210: .4byte 0x07000008 - thumb_func_end CopySpritesToOam - - thumb_func_start SetSavingIconCoords -SetSavingIconCoords: - push {lr} - adds r3, r0, 0 - cmp r3, 0 - bne _0800522C - ldr r1, _08005228 - strh r3, [r1] - movs r0, 0xA0 - strh r0, [r1, 0x2] - b _0800523C - .align 2, 0 -_08005228: .4byte gUnknown_2025694 -_0800522C: - ldr r1, _08005240 - ldrh r0, [r3] - movs r2, 0 - strh r0, [r1] - ldrh r0, [r3, 0x2] - strh r0, [r1, 0x2] - ldr r0, _08005244 - str r2, [r0] -_0800523C: - pop {r0} - bx r0 - .align 2, 0 -_08005240: .4byte gUnknown_2025694 -_08005244: .4byte gUnknown_2025698 - thumb_func_end SetSavingIconCoords - - thumb_func_start BlinkSavingIcon -BlinkSavingIcon: - push {r4,lr} - movs r2, 0xE0 - lsls r2, 19 - ldr r0, _08005280 - ldr r1, [r0] - adds r3, r1, 0 - adds r1, 0x1 - str r1, [r0] - movs r0, 0x10 - ands r3, r0 - cmp r3, 0 - beq _08005288 - movs r0, 0xA0 - strh r0, [r2] - adds r2, 0x2 - movs r1, 0x80 - lsls r1, 7 - adds r0, r1, 0 - strh r0, [r2] - adds r2, 0x2 - ldr r4, _08005284 - adds r0, r4, 0 - strh r0, [r2] - adds r2, 0x2 - movs r0, 0 - strh r0, [r2] - b _080052A8 - .align 2, 0 -_08005280: .4byte gUnknown_2025698 -_08005284: .4byte 0x0000f3fc -_08005288: - ldr r1, _080052B0 - ldrh r0, [r1, 0x2] - strh r0, [r2] - ldr r2, _080052B4 - movs r4, 0x80 - lsls r4, 7 - adds r0, r4, 0 - ldrh r1, [r1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - ldr r1, _080052B8 - adds r0, r1, 0 - strh r0, [r2] - adds r2, 0x2 - strh r3, [r2] -_080052A8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080052B0: .4byte gUnknown_2025694 -_080052B4: .4byte 0x07000002 -_080052B8: .4byte 0x0000f3fc - thumb_func_end BlinkSavingIcon - - thumb_func_start sub_80052BC -sub_80052BC: - push {r4-r6,lr} - adds r3, r0, 0 - ldr r0, [r3, 0x4] - cmp r0, 0 - beq _080052F2 - ldr r5, _080052F8 - ldr r6, _080052FC - ldr r4, _08005300 -_080052CC: - ldr r2, [r5] - cmp r2, r6 - bcs _080052F2 - ldr r0, [r3, 0x4] - str r0, [r2] - ldr r0, [r3] - str r0, [r2, 0x4] - ldr r1, [r4] - str r1, [r2, 0x8] - ldr r0, [r3, 0x4] - adds r1, r0 - str r1, [r4] - adds r0, r2, 0 - adds r0, 0xC - str r0, [r5] - adds r3, 0x8 - ldr r0, [r3, 0x4] - cmp r0, 0 - bne _080052CC -_080052F2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080052F8: .4byte gUnknown_203B074 -_080052FC: .4byte gUnknown_2026E30 -_08005300: .4byte gUnknown_2026E30 - thumb_func_end sub_80052BC - - thumb_func_start sub_8005304 -sub_8005304: - push {r4,lr} - ldr r4, _0800530C - b _0800532A - .align 2, 0 -_0800530C: .4byte gUnknown_20266B0 -_08005310: - ldr r1, [r4, 0x4] - cmp r1, 0 - beq _08005320 - ldr r0, [r4, 0x8] - ldr r2, [r4] - bl CpuCopy - b _08005328 -_08005320: - ldr r0, [r4, 0x8] - ldr r1, [r4] - bl CpuClear -_08005328: - adds r4, 0xC -_0800532A: - ldr r0, _08005338 - ldr r0, [r0] - cmp r4, r0 - bcc _08005310 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08005338: .4byte gUnknown_203B074 - thumb_func_end sub_8005304 - - thumb_func_start sub_800533C -sub_800533C: - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r1 - adds r5, r2, 0 - adds r7, r3, 0 - ldr r1, [sp, 0x18] - lsls r1, 24 - lsrs r6, r1, 24 - movs r2, 0x18 - ldrsh r1, [r5, r2] - lsls r1, 2 - adds r1, r0 - ldr r4, [r1] - ldr r1, _08005368 - movs r2, 0x14 - ldrsh r0, [r5, r2] - lsls r0, 5 - ldr r2, _0800536C - adds r0, r2 - str r0, [r1] - b _0800538E - .align 2, 0 -_08005368: .4byte gUnknown_2026E30 -_0800536C: .4byte 0x06010000 -_08005370: - cmp r6, 0 - beq _08005382 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - blt _08005382 - lsls r0, 2 - add r0, r8 - ldr r2, [r0] -_08005382: - adds r0, r4, 0 - adds r1, r5, 0 - adds r3, r7, 0 - bl sub_8004EA8 - adds r4, 0xA -_0800538E: - movs r2, 0 - ldrh r1, [r4] - ldr r0, _080053A8 - cmp r1, r0 - bne _08005370 - ldrh r0, [r4, 0x2] - cmp r0, r1 - bne _08005370 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080053A8: .4byte 0x0000ffff - thumb_func_end sub_800533C - - thumb_func_start sub_80053AC -sub_80053AC: - push {r4-r6,lr} - sub sp, 0xC - ldr r5, [sp, 0x1C] - ldr r6, [sp, 0x20] - ldr r4, [sp, 0x24] - lsls r4, 24 - lsrs r4, 24 - ldr r1, [r1, 0x4] - str r5, [sp] - str r6, [sp, 0x4] - str r4, [sp, 0x8] - bl sub_80053D0 - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80053AC - - thumb_func_start sub_80053D0 -sub_80053D0: - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - adds r7, r3, 0 - ldr r0, [sp, 0x1C] - lsls r0, 24 - movs r2, 0 - movs r3, 0x80 - lsls r3, 8 - strh r3, [r4] - cmp r0, 0 - beq _080053F6 - movs r0, 0x80 - lsls r0, 5 - adds r1, r0, 0 - adds r0, r3, 0 - orrs r0, r1 - strh r0, [r4] -_080053F6: - strh r2, [r4, 0x2] - ldr r0, [sp, 0x18] - strh r0, [r4, 0x4] - strh r2, [r4, 0xC] - strh r2, [r4, 0xE] - ldr r0, [sp, 0x14] - strh r0, [r4, 0x1C] - ldr r0, _08005438 - strh r0, [r4, 0x20] - movs r0, 0x1 - negs r0, r0 - strh r0, [r4, 0x22] - str r2, [r4, 0x14] - str r2, [r4, 0x18] - strh r2, [r4, 0x6] - ldr r1, [r5, 0x4] - lsls r0, r6, 2 - adds r0, r1 - ldr r1, [r0] - lsls r0, r7, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r4, 0x28] - str r0, [r4, 0x2C] - ldr r0, [r5] - str r0, [r4, 0x34] - ldr r0, [r5, 0xC] - str r0, [r4, 0x38] - ldr r0, [r5, 0x10] - str r0, [r4, 0x30] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08005438: .4byte 0x0000ffff - thumb_func_end sub_80053D0 - - thumb_func_start sub_800543C -sub_800543C: - push {r4,r5,lr} - sub sp, 0x8 - ldr r5, [sp, 0x14] - ldr r4, [sp, 0x18] - lsls r4, 24 - lsrs r4, 24 - ldr r1, [r1, 0x4] - str r5, [sp] - str r4, [sp, 0x4] - bl sub_800545C - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_800543C - - thumb_func_start sub_800545C -sub_800545C: - push {r4-r7,lr} - adds r4, r0, 0 - adds r6, r1, 0 - adds r7, r2, 0 - adds r5, r3, 0 - ldr r0, [sp, 0x18] - lsls r0, 24 - movs r2, 0 - movs r3, 0x80 - lsls r3, 8 - strh r3, [r4] - cmp r0, 0 - beq _08005482 - movs r0, 0x80 - lsls r0, 5 - adds r1, r0, 0 - adds r0, r3, 0 - orrs r0, r1 - strh r0, [r4] -_08005482: - strh r2, [r4, 0x2] - ldr r0, [sp, 0x14] - strh r0, [r4, 0x4] - strh r2, [r4, 0xC] - strh r2, [r4, 0xE] - strh r5, [r4, 0x1C] - ldr r0, _080054B8 - strh r0, [r4, 0x20] - movs r0, 0x1 - negs r0, r0 - strh r0, [r4, 0x22] - str r2, [r4, 0x14] - str r2, [r4, 0x18] - strh r2, [r4, 0x6] - ldr r1, [r6, 0x4] - lsls r0, r7, 2 - adds r0, r1 - ldr r0, [r0] - ldr r0, [r0] - str r0, [r4, 0x28] - str r0, [r4, 0x2C] - ldr r0, [r6] - str r0, [r4, 0x34] - str r2, [r4, 0x30] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080054B8: .4byte 0x0000ffff - thumb_func_end sub_800545C - - thumb_func_start sub_80054BC -sub_80054BC: - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _080054D0 - movs r0, 0 - b _080054D2 -_080054D0: - lsrs r0, r1, 15 -_080054D2: - cmp r0, 0 - beq _08005586 - movs r1, 0x20 - ldrsh r0, [r4, r1] - ldrh r3, [r4] - cmp r0, 0 - blt _08005524 - movs r0, 0x80 - lsls r0, 7 - ands r0, r3 - cmp r0, 0 - bne _08005586 - ldrh r2, [r4, 0x6] - movs r0, 0x6 - ldrsh r1, [r4, r0] - ldr r0, _0800550C - cmp r1, r0 - bgt _080054FA - adds r0, r2, 0x1 - strh r0, [r4, 0x6] -_080054FA: - ldrh r1, [r4, 0x4] - movs r2, 0x4 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08005510 - subs r0, r1, 0x1 - strh r0, [r4, 0x4] - b _08005586 - .align 2, 0 -_0800550C: .4byte 0x0000752f -_08005510: - ldrh r1, [r4, 0x2] - movs r2, 0x2 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08005524 - subs r0, r1, 0x1 - strh r0, [r4, 0x2] - lsls r0, 16 - cmp r0, 0 - bgt _08005586 -_08005524: - ldr r0, [r4, 0x2C] - ldrb r0, [r0] - cmp r0, 0 - bne _08005550 - movs r0, 0x80 - lsls r0, 5 - ands r0, r3 - cmp r0, 0 - bne _08005542 - movs r1, 0x80 - lsls r1, 6 - adds r0, r1, 0 - orrs r0, r3 - strh r0, [r4] - b _08005586 -_08005542: - ldr r0, [r4, 0x28] - str r0, [r4, 0x2C] - bl Random - movs r1, 0x1 - ands r0, r1 - strh r0, [r4, 0x4] -_08005550: - ldrh r1, [r4] - movs r2, 0x80 - lsls r2, 4 - adds r0, r2, 0 - orrs r0, r1 - strh r0, [r4] - ldr r1, [r4, 0x2C] - ldrb r0, [r1] - strh r0, [r4, 0x2] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0xC] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0xE] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x10] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x12] - ldrb r0, [r1, 0x1] - str r0, [r4, 0x14] - ldrb r2, [r1, 0x1] - ldr r0, [r4, 0x18] - orrs r0, r2 - str r0, [r4, 0x18] - adds r1, 0xC - str r1, [r4, 0x2C] -_08005586: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80054BC - - thumb_func_start sub_800558C -sub_800558C: - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - adds r7, r3, 0 - ldrh r0, [r5] - lsrs r0, 15 - cmp r0, 0 - beq _08005602 - movs r1, 0x20 - ldrsh r0, [r5, r1] - cmp r0, 0 - bge _080055AE - adds r0, r5, 0 - bl sub_80054BC -_080055AE: - ldrh r0, [r5] - lsrs r0, 15 - cmp r0, 0 - beq _08005602 - ldrh r0, [r5, 0xC] - adds r0, r4 - strh r0, [r5, 0x8] - ldrh r0, [r5, 0xE] - adds r0, r6 - strh r0, [r5, 0xA] - adds r1, r5, 0 - adds r1, 0x26 - ldr r0, [sp, 0x18] - strb r0, [r1] - strh r7, [r5, 0x1E] - ldr r0, [r5, 0x34] - ldr r1, [r5, 0x38] - adds r2, r5, 0 - adds r2, 0x8 - movs r3, 0x22 - ldrsh r4, [r5, r3] - movs r6, 0x20 - ldrsh r3, [r5, r6] - eors r4, r3 - negs r3, r4 - orrs r3, r4 - lsrs r3, 31 - str r3, [sp] - ldr r3, [sp, 0x1C] - bl sub_800533C - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x22] - ldrh r1, [r5] - movs r0, 0x80 - lsls r0, 4 - ands r0, r1 - cmp r0, 0 - beq _08005602 - ldr r0, _0800560C - ands r0, r1 - strh r0, [r5] -_08005602: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800560C: .4byte 0x0000f7ff - thumb_func_end sub_800558C - - thumb_func_start sub_8005610 -sub_8005610: - push {lr} - ldr r0, [r0, 0x4] - bl sub_800561C - pop {r0} - bx r0 - thumb_func_end sub_8005610 - - thumb_func_start sub_800561C -sub_800561C: - push {r4-r7,lr} - adds r5, r0, 0 - adds r0, r1, 0 - adds r7, r2, 0 - adds r6, r3, 0 - ldr r1, [r5, 0x14] - cmp r1, 0 - beq _0800563A - lsls r0, 5 - ldr r2, _08005664 - adds r0, r2 - ldr r2, [r5, 0x1C] - lsls r2, 5 - bl CpuCopy -_0800563A: - ldr r0, [r5, 0x18] - cmp r0, 0 - beq _0800565C - movs r4, 0 -_08005642: - movs r1, 0xF0 - lsls r1, 1 - adds r0, r4, r1 - lsls r2, r4, 2 - ldr r1, [r5, 0x18] - adds r1, r2 - adds r2, r7, 0 - adds r3, r6, 0 - bl SetBGPaletteBufferColorRGB - adds r4, 0x1 - cmp r4, 0xF - ble _08005642 -_0800565C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08005664: .4byte 0x06010000 - thumb_func_end sub_800561C - - thumb_func_start sub_8005668 -sub_8005668: - push {lr} - ldr r0, [r0, 0x4] - bl sub_8005674 - pop {r1} - bx r1 - thumb_func_end sub_8005668 - - thumb_func_start sub_8005674 -sub_8005674: - push {r4,lr} - adds r4, r0, 0 - ldr r3, [r4, 0x14] - cmp r3, 0 - beq _0800568E - lsls r0, r1, 5 - ldr r1, _08005698 - adds r0, r1 - ldr r2, [r4, 0x1C] - lsls r2, 5 - adds r1, r3, 0 - bl CpuCopy -_0800568E: - ldr r0, [r4, 0x18] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08005698: .4byte 0x06010000 - thumb_func_end sub_8005674 - - thumb_func_start sub_800569C -sub_800569C: - push {r4-r6,lr} - adds r3, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0 - strh r0, [r3] - strh r0, [r3, 0x2] - ldrh r0, [r4] - lsrs r0, 15 - cmp r0, 0 - beq _080056F8 - cmp r2, 0x3 - bhi _080056F8 - ldr r1, [r4, 0x30] - cmp r1, 0 - beq _080056F2 - movs r5, 0x20 - ldrsh r0, [r4, r5] - lsls r0, 4 - adds r5, r1, r0 - lsls r0, r2, 2 - adds r2, r5, r0 - movs r6, 0 - ldrsh r1, [r2, r6] - cmp r1, 0x63 - bne _080056E0 - movs r6, 0x2 - ldrsh r1, [r2, r6] - cmp r1, 0x63 - bne _080056E0 - strh r1, [r3] - strh r1, [r3, 0x2] - b _080056F8 -_080056E0: - adds r0, r5, r0 - ldrh r1, [r0] - ldrh r2, [r4, 0xC] - adds r1, r2 - strh r1, [r3] - ldrh r0, [r0, 0x2] - ldrh r4, [r4, 0xE] - adds r0, r4 - b _080056F6 -_080056F2: - movs r0, 0x63 - strh r0, [r3] -_080056F6: - strh r0, [r3, 0x2] -_080056F8: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_800569C - - thumb_func_start sub_8005700 -sub_8005700: - push {r4,r5,lr} - adds r3, r0, 0 - ldrh r0, [r1] - lsrs r0, 15 - cmp r0, 0 - beq _0800575C - ldr r2, [r1, 0x30] - cmp r2, 0 - beq _0800574C - movs r4, 0x20 - ldrsh r0, [r1, r4] - lsls r0, 4 - adds r2, r0 - adds r4, r2, 0 - adds r4, 0xC -_0800571E: - movs r5, 0 - ldrsh r0, [r2, r5] - cmp r0, 0x63 - bne _08005732 - movs r5, 0x2 - ldrsh r0, [r2, r5] - cmp r0, 0x63 - bne _08005732 - strh r0, [r3] - b _08005740 -_08005732: - ldrh r0, [r2] - ldrh r5, [r1, 0xC] - adds r0, r5 - strh r0, [r3] - ldrh r0, [r2, 0x2] - ldrh r5, [r1, 0xE] - adds r0, r5 -_08005740: - strh r0, [r3, 0x2] - adds r3, 0x4 - adds r2, 0x4 - cmp r2, r4 - ble _0800571E - b _0800575C -_0800574C: - movs r1, 0x63 - movs r0, 0x3 -_08005750: - strh r1, [r3] - strh r1, [r3, 0x2] - adds r3, 0x4 - subs r0, 0x1 - cmp r0, 0 - bge _08005750 -_0800575C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8005700 - - thumb_func_start sub_8005764 -sub_8005764: - push {lr} - ldr r1, [r1, 0x4] - bl sub_8005770 - pop {r0} - bx r0 - thumb_func_end sub_8005764 - - thumb_func_start sub_8005770 -sub_8005770: - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r2 - adds r7, r3, 0 - movs r5, 0 - adds r0, 0x10 - lsls r6, r0, 4 - adds r4, r1, 0 -_08005782: - adds r0, r6, r5 - adds r1, r4, 0 - mov r2, r8 - adds r3, r7, 0 - bl SetBGPaletteBufferColorRGB - adds r4, 0x4 - adds r5, 0x1 - cmp r5, 0xF - ble _08005782 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8005770 - - thumb_func_start nullsub_7 -nullsub_7: - bx lr - thumb_func_end nullsub_7 - - thumb_func_start nullsub_8 -nullsub_8: - bx lr - thumb_func_end nullsub_8 - - thumb_func_start nullsub_9 -nullsub_9: - bx lr - thumb_func_end nullsub_9 - - thumb_func_start nullsub_10 -nullsub_10: - bx lr - thumb_func_end nullsub_10 - - thumb_func_start nullsub_144 -nullsub_144: - bx lr - thumb_func_end nullsub_144 - - thumb_func_start nullsub_11 -nullsub_11: - bx lr - thumb_func_end nullsub_11 - - thumb_func_start nullsub_12 -nullsub_12: - bx lr - thumb_func_end nullsub_12 - - thumb_func_start nullsub_13 -nullsub_13: - bx lr - thumb_func_end nullsub_13 - - thumb_func_start nullsub_145 -nullsub_145: - bx lr - thumb_func_end nullsub_145 - - thumb_func_start nullsub_14 -nullsub_14: - bx lr - thumb_func_end nullsub_14 - - thumb_func_start nullsub_146 -nullsub_146: - bx lr - thumb_func_end nullsub_146 - - thumb_func_start nullsub_147 -nullsub_147: - bx lr - thumb_func_end nullsub_147 - - thumb_func_start nullsub_148 -nullsub_148: - bx lr - thumb_func_end nullsub_148 - - thumb_func_start nullsub_149 -nullsub_149: - bx lr - thumb_func_end nullsub_149 - - thumb_func_start sub_80057D8 -sub_80057D8: - movs r0, 0 - bx lr - thumb_func_end sub_80057D8 - - thumb_func_start sub_80057DC -sub_80057DC: - movs r0, 0 - bx lr - thumb_func_end sub_80057DC - - thumb_func_start nullsub_150 -nullsub_150: - bx lr - thumb_func_end nullsub_150 - - thumb_func_start nullsub_151 -nullsub_151: - bx lr - thumb_func_end nullsub_151 - - thumb_func_start sub_80057E8 -sub_80057E8: - ldr r1, _08005814 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _08005818 - movs r2, 0 - str r2, [r0] - ldr r1, _0800581C - movs r0, 0x1 - str r0, [r1] - ldr r0, _08005820 - str r2, [r0] - ldr r0, _08005824 - str r2, [r0] - ldr r0, _08005828 - strb r2, [r0] - ldr r1, _0800582C - ldr r3, _08005830 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _08005834 - str r2, [r0] - bx lr - .align 2, 0 -_08005814: .4byte gUnknown_2026E4C -_08005818: .4byte gUnknown_2026E54 -_0800581C: .4byte gUnknown_2026E50 -_08005820: .4byte gUnknown_2026E58 -_08005824: .4byte gUnknown_2026E3C -_08005828: .4byte gUnknown_2026E38 -_0800582C: .4byte gUnknown_2026E4E -_08005830: .4byte 0x0000060c -_08005834: .4byte gUnknown_203B078 - thumb_func_end sub_80057E8 - - thumb_func_start sub_8005838 -sub_8005838: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - adds r5, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08005880 - ldrb r0, [r0] - cmp r0, 0 - bne _08005854 - movs r1, 0 -_08005854: - ldr r0, _08005884 - ldr r0, [r0] - ldr r3, _08005888 - cmp r0, 0 - bne _08005860 - ldr r3, _0800588C -_08005860: - ldr r0, _08005890 - ldr r2, [r0] - cmp r2, 0 - bne _0800586A - ldr r2, _08005894 -_0800586A: - ldr r0, _08005898 - str r3, [r0] - cmp r1, 0x5 - bls _08005876 - bl _08006094 -_08005876: - lsls r0, r1, 2 - ldr r1, _0800589C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08005880: .4byte gUnknown_2026E4C -_08005884: .4byte gUnknown_2026E54 -_08005888: .4byte gUnknown_20270E8 -_0800588C: .4byte gUnknown_2026E60 -_08005890: .4byte gUnknown_203B078 -_08005894: .4byte gUnknown_80B83EA -_08005898: .4byte gUnknown_2026E58 -_0800589C: .4byte _080058A0 - .align 2, 0 -_080058A0: - .4byte _080058B8 - .4byte _08005984 - .4byte _08005A98 - .4byte _08005BAC - .4byte _08005D46 - .4byte _08005E58 -_080058B8: - movs r1, 0 - movs r7, 0x9 -_080058BC: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - bge _080058BC - b _08006094 -_08005984: - ldr r1, _08005A94 - movs r7, 0x9 -_08005988: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - blt _08005A90 - b _08005988 -_08005A90: - b _08006094 - .align 2, 0 -_08005A94: .4byte gUnknown_80B816A -_08005A98: - ldr r1, _08005BA8 - movs r7, 0x9 -_08005A9C: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - blt _08005BA4 - b _08005A9C -_08005BA4: - b _08006094 - .align 2, 0 -_08005BA8: .4byte gUnknown_80B802A -_08005BAC: - ldr r0, [r5] - mov r10, r0 - cmp r0, 0 - bge _08005BBA - ldr r0, [r5, 0x8] - cmp r0, 0 - blt _08005BDC -_08005BBA: - ldr r1, [r5, 0x4] - cmp r1, 0 - bge _08005BC6 - ldr r0, [r5, 0xC] - cmp r0, 0 - blt _08005BDC -_08005BC6: - mov r4, r10 - cmp r4, 0xEF - ble _08005BD2 - ldr r0, [r5, 0x8] - cmp r0, 0xEF - bgt _08005BDC -_08005BD2: - cmp r1, 0x9F - ble _08005CA8 - ldr r0, [r5, 0xC] - cmp r0, 0x9F - ble _08005CA8 -_08005BDC: - movs r1, 0xF0 - movs r7, 0x9 -_08005BE0: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - bge _08005BE0 - b _08006094 -_08005CA8: - movs r7, 0 - mov r8, r1 - movs r6, 0x80 - lsls r6, 1 - mov r12, r6 - lsls r0, r1, 1 - ldr r1, _08005CCC - subs r6, r1, r0 - mov r9, r10 -_08005CBA: - cmp r8, r7 - ble _08005CD0 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - mov r4, r12 - strh r4, [r3] - b _08005D3A - .align 2, 0 -_08005CCC: .4byte gUnknown_80B8008 -_08005CD0: - ldr r1, [r5, 0xC] - cmp r1, r7 - bgt _08005CE2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - mov r0, r12 - b _08005D38 -_08005CE2: - mov r4, r8 - subs r0, r7, r4 - cmp r0, 0xF - bgt _08005CF0 - movs r0, 0 - ldrsh r1, [r6, r0] - b _08005D00 -_08005CF0: - subs r0, r1, r7 - cmp r0, 0xF - bgt _08005D10 - lsls r0, 1 - ldr r1, _08005D0C - adds r0, r1 - movs r4, 0 - ldrsh r1, [r0, r4] -_08005D00: - mov r0, r9 - adds r4, r0, r1 - ldr r0, [r5, 0x8] - subs r1, r0, r1 - b _08005D14 - .align 2, 0 -_08005D0C: .4byte gUnknown_80B8008 -_08005D10: - mov r4, r10 - ldr r1, [r5, 0x8] -_08005D14: - cmp r4, 0 - bge _08005D1A - movs r4, 0 -_08005D1A: - cmp r4, 0xEF - ble _08005D20 - movs r4, 0xEF -_08005D20: - cmp r1, 0 - bgt _08005D26 - movs r1, 0x1 -_08005D26: - cmp r1, 0xF0 - ble _08005D2C - movs r1, 0xF0 -_08005D2C: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - lsls r0, r1, 8 - orrs r0, r4 -_08005D38: - strh r0, [r3] -_08005D3A: - adds r3, 0x2 - adds r6, 0x2 - adds r7, 0x1 - cmp r7, 0x9F - ble _08005CBA - b _08006094 -_08005D46: - ldr r1, _08005E54 - movs r7, 0xE -_08005D4A: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - blt _08005E52 - b _08005D4A -_08005E52: - b _08006094 - .align 2, 0 -_08005E54: .4byte gUnknown_80B82AA -_08005E58: - ldr r4, _08005FF4 - ldr r5, _08005FF8 - ldr r6, _08005FFC - movs r0, 0x80 - lsls r0, 1 - adds r1, r0, 0 - movs r7, 0xE -_08005E66: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - bge _08005E66 - ldr r4, [r4] - str r4, [sp] - ldr r5, [r5] - str r5, [sp, 0x4] - ldr r6, [r6] - str r6, [sp, 0x8] - adds r1, r6, 0 - cmp r6, 0 - bge _08005F40 - adds r1, 0xFF -_08005F40: - asrs r1, 8 - adds r1, 0x1 - movs r0, 0x80 - lsls r0, 3 - bl __divsi3 - str r0, [sp, 0xC] - ldr r0, [sp, 0x4] - cmp r0, 0 - bge _08005F56 - adds r0, 0xFF -_08005F56: - asrs r4, r0, 8 - adds r5, r4, 0 - movs r3, 0 - lsls r0, r4, 2 - adds r7, r0, 0x2 - mov r9, r7 -_08005F62: - adds r0, r3, 0 - str r3, [sp, 0x10] - bl sub_8009C7C - ldr r1, [sp, 0x8] - muls r0, r1 - ldr r3, [sp, 0x10] - cmp r0, 0 - bge _08005F76 - adds r0, 0xFF -_08005F76: - asrs r0, 8 - ldr r2, [sp, 0x4] - adds r1, r2, r0 - cmp r1, 0 - bge _08005F82 - adds r1, 0xFF -_08005F82: - asrs r1, 8 - str r1, [sp, 0x14] - ldr r6, [sp, 0x4] - subs r0, r6, r0 - cmp r0, 0 - bge _08005F90 - adds r0, 0xFF -_08005F90: - asrs r0, 8 - mov r8, r0 - ldr r0, [sp, 0x14] - cmp r5, r0 - blt _08005FA4 - ldr r1, [sp, 0xC] - adds r1, r3 - mov r10, r1 - cmp r4, r8 - ble _0800608A -_08005FA4: - adds r0, r3, 0 - str r3, [sp, 0x10] - bl sub_8009D04 - ldr r2, [sp, 0x8] - muls r0, r2 - ldr r3, [sp, 0x10] - cmp r0, 0 - bge _08005FB8 - adds r0, 0xFF -_08005FB8: - asrs r0, 8 - ldr r6, [sp] - subs r1, r6, r0 - cmp r1, 0 - bge _08005FC4 - adds r1, 0xFF -_08005FC4: - asrs r1, 8 - ldr r2, [sp] - adds r0, r2, r0 - cmp r0, 0 - bge _08005FD0 - adds r0, 0xFF -_08005FD0: - asrs r0, 8 - cmp r1, 0 - bge _08005FD8 - movs r1, 0 -_08005FD8: - cmp r0, 0 - bge _08005FDE - movs r0, 0 -_08005FDE: - cmp r1, 0xEF - ble _08005FE4 - movs r1, 0x9F -_08005FE4: - cmp r0, 0xEF - ble _08005FEA - movs r0, 0x9F -_08005FEA: - cmp r1, r0 - ble _08006000 - lsls r2, r1, 8 - orrs r2, r0 - b _08006004 - .align 2, 0 -_08005FF4: .4byte gUnknown_2026E40 -_08005FF8: .4byte gUnknown_2026E44 -_08005FFC: .4byte gUnknown_2026E48 -_08006000: - lsls r2, r0, 8 - orrs r2, r1 -_08006004: - ldr r6, [sp, 0xC] - adds r3, r6 - mov r10, r3 - ldr r0, [sp, 0x14] - cmp r5, r0 - bge _0800604E - ldr r1, _08006030 - mov r12, r1 - ldr r3, _08006034 - add r3, r9 - ldr r1, _08006038 - add r1, r9 -_0800601C: - cmp r5, 0 - blt _0800603E - cmp r5, 0x9F - bgt _0800603E - mov r6, r12 - ldr r0, [r6] - cmp r0, 0 - bne _0800603C - strh r2, [r1] - b _0800603E - .align 2, 0 -_08006030: .4byte gUnknown_2026E54 -_08006034: .4byte gUnknown_20270E8 -_08006038: .4byte gUnknown_2026E60 -_0800603C: - strh r2, [r3] -_0800603E: - adds r3, 0x4 - adds r1, 0x4 - movs r0, 0x4 - add r9, r0 - adds r5, 0x1 - ldr r6, [sp, 0x14] - cmp r5, r6 - blt _0800601C -_0800604E: - cmp r4, r8 - ble _0800608A - ldr r6, _08006070 - ldr r0, _08006074 - adds r3, r7, r0 - ldr r0, _08006078 - adds r1, r7, r0 -_0800605C: - cmp r4, 0 - blt _0800607E - cmp r4, 0x9F - bgt _0800607E - ldr r0, [r6] - cmp r0, 0 - bne _0800607C - strh r2, [r1] - b _0800607E - .align 2, 0 -_08006070: .4byte gUnknown_2026E54 -_08006074: .4byte gUnknown_20270E8 -_08006078: .4byte gUnknown_2026E60 -_0800607C: - strh r2, [r3] -_0800607E: - subs r3, 0x4 - subs r1, 0x4 - subs r7, 0x4 - subs r4, 0x1 - cmp r4, r8 - bgt _0800605C -_0800608A: - mov r3, r10 - ldr r0, _080060A4 - cmp r3, r0 - bgt _08006094 - b _08005F62 -_08006094: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080060A4: .4byte 0x000003ff - thumb_func_end sub_8005838 - - thumb_func_start sub_80060A8 -sub_80060A8: - push {lr} - ldr r1, _080060D8 - ldr r0, _080060DC - ldr r0, [r0] - str r0, [r1] - ldr r2, _080060E0 - movs r1, 0 - ldr r0, [r2] - cmp r0, 0 - bne _080060BE - movs r1, 0x1 -_080060BE: - str r1, [r2] - ldr r2, _080060E4 - movs r1, 0 - ldr r0, [r2] - cmp r0, 0 - bne _080060CC - movs r1, 0x1 -_080060CC: - str r1, [r2] - ldr r1, _080060E8 - movs r0, 0 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080060D8: .4byte gUnknown_2026E3C -_080060DC: .4byte gUnknown_2026E58 -_080060E0: .4byte gUnknown_2026E54 -_080060E4: .4byte gUnknown_2026E50 -_080060E8: .4byte gUnknown_2026E38 - thumb_func_end sub_80060A8 - - thumb_func_start sub_80060EC -sub_80060EC: - push {lr} - ldr r1, _08006130 - ldr r0, _08006134 - ldr r0, [r0] - str r0, [r1] - ldr r2, _08006138 - movs r1, 0 - ldr r0, [r2] - cmp r0, 0 - bne _08006102 - movs r1, 0x1 -_08006102: - str r1, [r2] - ldr r2, _0800613C - movs r1, 0 - ldr r0, [r2] - cmp r0, 0 - bne _08006110 - movs r1, 0x1 -_08006110: - str r1, [r2] - ldr r0, _08006140 - ldrh r2, [r0] - movs r0, 0xF8 - lsls r0, 5 - ands r0, r2 - lsrs r0, 8 - movs r1, 0x1F - ands r1, r2 - bl sub_800CC44 - ldr r1, _08006144 - movs r0, 0x1 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08006130: .4byte gUnknown_2026E3C -_08006134: .4byte gUnknown_2026E58 -_08006138: .4byte gUnknown_2026E54 -_0800613C: .4byte gUnknown_2026E50 -_08006140: .4byte gUnknown_2026E4E -_08006144: .4byte gUnknown_2026E38 - thumb_func_end sub_80060EC - .align 2, 0 @ Don't pad with nop. diff --git a/asm/code_80047E8.s b/asm/code_80047E8.s new file mode 100644 index 0000000..3128ea8 --- /dev/null +++ b/asm/code_80047E8.s @@ -0,0 +1,3540 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80047E8 +sub_80047E8: + ldr r0, _08004840 + movs r3, 0 + movs r2, 0 + strh r2, [r0] + strh r2, [r0, 0x2] + strh r2, [r0, 0x4] + strh r2, [r0, 0x6] + ldr r0, _08004844 + strh r2, [r0] + strh r2, [r0, 0x2] + strh r2, [r0, 0x4] + strh r2, [r0, 0x6] + ldr r1, _08004848 + ldr r0, _0800484C + str r0, [r1] + ldr r0, _08004850 + str r2, [r0, 0x20] + ldr r1, _08004854 + strh r1, [r0] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + strh r1, [r0, 0x1C] + strh r1, [r0, 0x1E] + strh r1, [r0, 0x8] + strh r1, [r0, 0xA] + strh r1, [r0, 0xC] + strh r1, [r0, 0xE] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + strh r1, [r0, 0x14] + strh r1, [r0, 0x16] + adds r1, r0, 0 + adds r1, 0x28 + strb r3, [r1] + adds r0, 0x29 + strb r3, [r0] + ldr r0, _08004858 + strh r2, [r0] + strh r2, [r0, 0x2] + bx lr + .align 2, 0 +_08004840: .4byte gUnknown_20255F0 +_08004844: .4byte gUnknown_2025638 +_08004848: .4byte gUnknown_202562C +_0800484C: .4byte 0x004a14c1 +_08004850: .4byte gUnknown_2025600 +_08004854: .4byte 0x0000ffff +_08004858: .4byte gUnknown_2025668 + thumb_func_end sub_80047E8 + + thumb_func_start sub_800485C +sub_800485C: + push {r4,r5,lr} + ldr r2, _080048A8 + ldr r1, _080048AC + adds r0, r2, 0 + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldr r0, [r0] + str r0, [r1] + movs r3, 0 + movs r0, 0 + strh r0, [r2] + strh r0, [r2, 0x2] + strh r0, [r2, 0x4] + strh r0, [r2, 0x6] + ldr r0, _080048B0 + ldr r1, _080048B4 + strh r1, [r0] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + strh r1, [r0, 0x8] + strh r1, [r0, 0xA] + strh r1, [r0, 0xC] + strh r1, [r0, 0xE] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + strh r1, [r0, 0x14] + strh r1, [r0, 0x16] + adds r1, r0, 0 + adds r1, 0x28 + strb r3, [r1] + adds r0, 0x29 + strb r3, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080048A8: .4byte gUnknown_2025638 +_080048AC: .4byte gUnknown_20255F0 +_080048B0: .4byte gUnknown_2025600 +_080048B4: .4byte 0x0000ffff + thumb_func_end sub_800485C + + thumb_func_start sub_80048B8 +sub_80048B8: + movs r0, 0 + bx lr + thumb_func_end sub_80048B8 + + thumb_func_start sub_80048BC +sub_80048BC: + movs r0, 0 + bx lr + thumb_func_end sub_80048BC + + thumb_func_start sub_80048C0 +sub_80048C0: + movs r0, 0 + bx lr + thumb_func_end sub_80048C0 + + thumb_func_start sub_80048C4 +sub_80048C4: + movs r0, 0 + bx lr + thumb_func_end sub_80048C4 + + thumb_func_start sub_80048C8 +sub_80048C8: + movs r0, 0 + bx lr + thumb_func_end sub_80048C8 + + thumb_func_start sub_80048CC +sub_80048CC: + movs r0, 0 + bx lr + thumb_func_end sub_80048CC + + thumb_func_start sub_80048D0 +sub_80048D0: + ldr r1, _080048E8 + movs r0, 0 + strh r0, [r1, 0x4] + ldr r1, _080048EC + str r0, [r1, 0xC] + strh r0, [r1, 0x8] + ldr r1, _080048F0 + ldr r0, _080048F4 + strh r0, [r1] + strh r0, [r1, 0x2] + bx lr + .align 2, 0 +_080048E8: .4byte gUnknown_20255F0 +_080048EC: .4byte gUnknown_2025648 +_080048F0: .4byte gUnknown_2025668 +_080048F4: .4byte 0x000003e7 + thumb_func_end sub_80048D0 + + thumb_func_start sub_80048F8 +sub_80048F8: + ldr r0, _08004908 + movs r1, 0 + strh r1, [r0, 0x2] + ldr r0, _0800490C + strh r1, [r0, 0x2] + ldr r0, _08004910 + strh r1, [r0, 0x2] + bx lr + .align 2, 0 +_08004908: .4byte gUnknown_20255F0 +_0800490C: .4byte gUnknown_2025638 +_08004910: .4byte gUnknown_2025648 + thumb_func_end sub_80048F8 + + thumb_func_start sub_8004914 +sub_8004914: + ldr r0, _0800494C + movs r1, 0x5 + str r1, [r0, 0x20] + movs r2, 0 + movs r1, 0 + strh r1, [r0, 0x24] + ldr r1, _08004950 + strh r1, [r0] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + strh r1, [r0, 0x8] + strh r1, [r0, 0xA] + strh r1, [r0, 0xC] + strh r1, [r0, 0xE] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + strh r1, [r0, 0x14] + strh r1, [r0, 0x16] + adds r1, r0, 0 + adds r1, 0x28 + strb r2, [r1] + adds r0, 0x29 + strb r2, [r0] + bx lr + .align 2, 0 +_0800494C: .4byte gUnknown_2025600 +_08004950: .4byte 0x0000ffff + thumb_func_end sub_8004914 + + thumb_func_start UpdateInput +UpdateInput: + push {r4-r6,lr} + ldr r4, _08004998 + ldr r5, _0800499C + adds r1, r4, 0 + adds r0, r5, 0 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldr r0, [r0] + str r0, [r1] + adds r0, r5, 0 + bl ReadKeyInput + ldrh r0, [r4] + ldrh r3, [r5] + eors r0, r3 + ands r0, r3 + strh r0, [r5, 0x2] + lsls r0, r3, 16 + lsrs r0, 16 + cmp r0, 0 + beq _080049A8 + ldrh r1, [r5, 0x8] + movs r0, 0xF0 + adds r2, r0, 0 + ands r2, r3 + ands r0, r1 + cmp r0, r2 + bne _080049A0 + ldr r0, [r5, 0xC] + cmp r0, 0x31 + bgt _080049AC + adds r0, 0x1 + str r0, [r5, 0xC] + b _080049AC + .align 2, 0 +_08004998: .4byte gUnknown_2025658 +_0800499C: .4byte gUnknown_2025648 +_080049A0: + strh r2, [r5, 0x8] + movs r0, 0x1 + str r0, [r5, 0xC] + b _080049AC +_080049A8: + str r0, [r5, 0xC] + strh r0, [r5, 0x8] +_080049AC: + ldr r0, _080049C4 + ldr r2, [r0, 0xC] + adds r3, r0, 0 + cmp r2, 0x1 + bne _080049C8 + ldrh r0, [r3, 0x8] + movs r1, 0xF0 + ands r1, r0 + ldrh r0, [r3, 0x2] + orrs r1, r0 + strh r1, [r3, 0x4] + b _080049E0 + .align 2, 0 +_080049C4: .4byte gUnknown_2025648 +_080049C8: + cmp r2, 0x30 + bne _080049DC + movs r0, 0x2B + str r0, [r3, 0xC] + ldrh r1, [r3, 0x8] + movs r0, 0xF0 + ands r0, r1 + ldrh r1, [r3, 0x2] + orrs r0, r1 + b _080049DE +_080049DC: + movs r0, 0 +_080049DE: + strh r0, [r3, 0x4] +_080049E0: + movs r0, 0 + strh r0, [r3, 0x6] + ldrh r1, [r3] + movs r5, 0x2 + adds r0, r5, 0 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _08004A0C + ldr r0, _08004A08 + ldrh r2, [r0] + movs r4, 0 + ldrsh r1, [r0, r4] + adds r4, r0, 0 + cmp r1, 0x63 + bgt _08004A20 + adds r0, r2, 0x1 + strh r0, [r4] + b _08004A20 + .align 2, 0 +_08004A08: .4byte gUnknown_2025668 +_08004A0C: + ldr r1, _08004A44 + ldrh r0, [r1] + subs r0, 0x2 + lsls r0, 16 + lsrs r0, 16 + adds r4, r1, 0 + cmp r0, 0x9 + bhi _08004A1E + strh r5, [r3, 0x6] +_08004A1E: + strh r2, [r4] +_08004A20: + ldrh r1, [r3] + movs r5, 0x80 + lsls r5, 1 + adds r0, r5, 0 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _08004A48 + ldrh r1, [r4, 0x2] + movs r6, 0x2 + ldrsh r0, [r4, r6] + cmp r0, 0x63 + bgt _08004A5E + adds r0, r1, 0x1 + strh r0, [r4, 0x2] + b _08004A5E + .align 2, 0 +_08004A44: .4byte gUnknown_2025668 +_08004A48: + ldrh r0, [r4, 0x2] + subs r0, 0x2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x9 + bhi _08004A5C + ldrh r1, [r3, 0x6] + adds r0, r5, 0 + orrs r0, r1 + strh r0, [r3, 0x6] +_08004A5C: + strh r2, [r4, 0x2] +_08004A5E: + ldr r2, _08004A94 + ldrh r0, [r2] + ldrh r1, [r3] + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r2, 0x2] + ldrh r1, [r3, 0x2] + orrs r0, r1 + strh r0, [r2, 0x2] + ldrh r0, [r2, 0x4] + ldrh r1, [r3, 0x4] + orrs r0, r1 + strh r0, [r2, 0x4] + ldrh r0, [r2, 0x6] + ldrh r1, [r3, 0x6] + orrs r0, r1 + strh r0, [r2, 0x6] + ldr r2, _08004A98 + ldrh r0, [r3] + ldr r1, _08004A9C + orrs r0, r1 + ldr r1, [r2] + muls r0, r1 + str r0, [r2] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08004A94: .4byte gUnknown_2025638 +_08004A98: .4byte gUnknown_202562C +_08004A9C: .4byte 0x054a1c41 + thumb_func_end UpdateInput + + thumb_func_start nullsub_6 +nullsub_6: + bx lr + thumb_func_end nullsub_6 + + thumb_func_start sub_8004AA4 +sub_8004AA4: + push {r4,r5,lr} + adds r3, r0, 0 + ldr r4, [r1, 0x4] + cmp r2, 0 + ble _08004AE8 +_08004AAE: + ldm r4!, {r1} + movs r5, 0 + ldrsh r0, [r1, r5] + cmp r0, 0 + beq _08004ADE + movs r0, 0x80 + lsls r0, 24 + str r0, [r3] + ldrh r0, [r1, 0x2] + strh r0, [r3, 0x6] + ldrh r0, [r1, 0x2] + strh r0, [r3, 0x4] + adds r0, r1, 0x4 + str r0, [r3, 0x8] + str r0, [r3, 0xC] + movs r5, 0 + ldrsh r0, [r1, r5] + lsls r0, 2 + adds r0, 0x4 + adds r0, r1, r0 + str r0, [r3, 0x10] + ldr r0, [r1, 0x4] + str r0, [r3, 0x14] + b _08004AE0 +_08004ADE: + str r0, [r3] +_08004AE0: + adds r3, 0x18 + subs r2, 0x1 + cmp r2, 0 + bne _08004AAE +_08004AE8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8004AA4 + + thumb_func_start sub_8004AF0 +sub_8004AF0: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r1, 0 + adds r6, r2, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r7, 0 + cmp r7, r3 + bge _08004B6A + adds r5, r3, 0 +_08004B08: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D14 + lsls r0, 24 + cmp r0, 0 + beq _08004B60 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D40 + lsls r0, 24 + cmp r0, 0 + bne _08004B60 + mov r1, r8 + ldrh r0, [r4, 0x6] + subs r0, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + cmp r0, 0 + bgt _08004B4E + ldrh r0, [r4, 0x4] + strh r0, [r4, 0x6] + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bcc _08004B42 + ldr r0, [r4, 0x8] + str r0, [r4, 0xC] +_08004B42: + ldr r1, [r4, 0xC] + ldm r1!, {r0} + str r0, [r4, 0x14] + str r1, [r4, 0xC] + movs r1, 0x1 + movs r7, 0x1 +_08004B4E: + cmp r1, 0 + beq _08004B60 + adds r1, r4, 0 + adds r1, 0x14 + adds r0, r6, 0 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl SetBGPaletteBufferColorRGB +_08004B60: + subs r5, 0x1 + adds r4, 0x18 + adds r6, 0x1 + cmp r5, 0 + bne _08004B08 +_08004B6A: + adds r0, r7, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8004AF0 + + thumb_func_start sub_8004B78 +sub_8004B78: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r1, 0 + adds r6, r2, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r7, 0 + cmp r7, r3 + bge _08004BF2 + adds r5, r3, 0 +_08004B90: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D14 + lsls r0, 24 + cmp r0, 0 + beq _08004BE8 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D40 + lsls r0, 24 + cmp r0, 0 + bne _08004BE8 + mov r1, r8 + ldrh r0, [r4, 0x6] + subs r0, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + cmp r0, 0 + bgt _08004BD6 + ldrh r0, [r4, 0x4] + strh r0, [r4, 0x6] + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bcc _08004BCA + ldr r0, [r4, 0x8] + str r0, [r4, 0xC] +_08004BCA: + ldr r1, [r4, 0xC] + ldm r1!, {r0} + str r0, [r4, 0x14] + str r1, [r4, 0xC] + movs r1, 0x1 + movs r7, 0x1 +_08004BD6: + cmp r1, 0 + beq _08004BE8 + adds r1, r4, 0 + adds r1, 0x14 + adds r0, r6, 0 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl nullsub_4 +_08004BE8: + subs r5, 0x1 + adds r4, 0x18 + adds r6, 0x1 + cmp r5, 0 + bne _08004B90 +_08004BF2: + adds r0, r7, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8004B78 + + thumb_func_start sub_8004C00 +sub_8004C00: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r10, r3 + ldr r0, [sp, 0x28] + mov r8, r0 + movs r1, 0 + mov r9, r1 + cmp r9, r2 + bge _08004CDC + adds r6, r2, 0 +_08004C20: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D14 + lsls r0, 24 + cmp r0, 0 + beq _08004CD2 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D40 + lsls r0, 24 + cmp r0, 0 + bne _08004CD2 + ldrh r0, [r4, 0x6] + subs r0, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + cmp r0, 0 + bgt _08004C64 + ldrh r0, [r4, 0x4] + strh r0, [r4, 0x6] + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bcc _08004C58 + ldr r0, [r4, 0x8] + str r0, [r4, 0xC] +_08004C58: + ldr r1, [r4, 0xC] + ldm r1!, {r0} + str r0, [r4, 0x14] + str r1, [r4, 0xC] + movs r2, 0x1 + mov r9, r2 +_08004C64: + mov r3, r8 + movs r5, 0 + ldrsh r0, [r3, r5] + ldrb r2, [r4, 0x14] + adds r1, r0, r2 + movs r5, 0x2 + ldrsh r0, [r3, r5] + ldrb r2, [r4, 0x15] + adds r3, r0, r2 + mov r5, r8 + movs r2, 0x4 + ldrsh r0, [r5, r2] + ldrb r2, [r4, 0x16] + adds r5, r0, r2 + cmp r1, 0xFF + ble _08004C86 + movs r1, 0xFF +_08004C86: + cmp r3, 0xFF + ble _08004C8C + movs r3, 0xFF +_08004C8C: + cmp r5, 0xFF + ble _08004C92 + movs r5, 0xFF +_08004C92: + cmp r1, 0 + bge _08004C98 + movs r1, 0 +_08004C98: + cmp r3, 0 + bge _08004C9E + movs r3, 0 +_08004C9E: + cmp r5, 0 + bge _08004CA4 + movs r5, 0 +_08004CA4: + lsls r1, 24 + lsrs r1, 24 + ldr r2, _08004CF0 + ldr r0, [sp] + ands r0, r2 + orrs r0, r1 + lsls r2, r3, 24 + lsrs r2, 16 + ldr r1, _08004CF4 + ands r0, r1 + orrs r0, r2 + lsls r2, r5, 24 + lsrs r2, 8 + ldr r1, _08004CF8 + ands r0, r1 + orrs r0, r2 + str r0, [sp] + adds r0, r7, 0 + mov r1, sp + mov r2, r10 + ldr r3, [sp, 0x24] + bl SetBGPaletteBufferColorRGB +_08004CD2: + subs r6, 0x1 + adds r4, 0x18 + adds r7, 0x1 + cmp r6, 0 + bne _08004C20 +_08004CDC: + mov r0, r9 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08004CF0: .4byte 0xffffff00 +_08004CF4: .4byte 0xffff00ff +_08004CF8: .4byte 0xff00ffff + thumb_func_end sub_8004C00 + + thumb_func_start sub_8004CFC +sub_8004CFC: + push {lr} + cmp r1, 0 + ble _08004D0E + movs r2, 0 +_08004D04: + str r2, [r0] + adds r0, 0x18 + subs r1, 0x1 + cmp r1, 0 + bne _08004D04 +_08004D0E: + pop {r0} + bx r0 + thumb_func_end sub_8004CFC + + thumb_func_start sub_8004D14 +sub_8004D14: + push {r4,lr} + adds r2, r0, 0 + movs r3, 0 + cmp r3, r1 + bge _08004D36 + movs r4, 0x80 + lsls r4, 24 +_08004D22: + ldr r0, [r2] + ands r0, r4 + cmp r0, 0 + beq _08004D2E + movs r0, 0x1 + b _08004D38 +_08004D2E: + adds r2, 0x18 + adds r3, 0x1 + cmp r3, r1 + blt _08004D22 +_08004D36: + movs r0, 0 +_08004D38: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8004D14 + + thumb_func_start sub_8004D40 +sub_8004D40: + push {r4-r6,lr} + adds r3, r0, 0 + adds r4, r1, 0 + movs r1, 0 + cmp r1, r4 + bge _08004D70 + movs r6, 0x80 + lsls r6, 24 + movs r5, 0x80 + lsls r5, 22 +_08004D54: + ldr r2, [r3] + adds r0, r2, 0 + ands r0, r6 + cmp r0, 0 + beq _08004D6A + ands r2, r5 + cmp r2, 0 + bne _08004D68 + movs r0, 0 + b _08004D72 +_08004D68: + adds r3, 0x18 +_08004D6A: + adds r1, 0x1 + cmp r1, r4 + blt _08004D54 +_08004D70: + movs r0, 0x1 +_08004D72: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8004D40 + + thumb_func_start sub_8004D78 +sub_8004D78: + push {lr} + movs r0, 0x1 + bl sub_8004D8C + movs r0, 0 + bl SetSavingIconCoords + pop {r0} + bx r0 + thumb_func_end sub_8004D78 + + thumb_func_start sub_8004D8C +sub_8004D8C: + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08004E68 + movs r0, 0 + str r0, [r1] + ldr r1, _08004E6C + ldr r0, _08004E70 + str r0, [r1] + ldr r1, _08004E74 + ldr r0, _08004E78 + str r0, [r1] + ldr r0, _08004E7C + adds r1, r0, 0 + adds r1, 0x8 + adds r5, r0, 0 + movs r2, 0 + movs r3, 0xF0 +_08004DB0: + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + subs r3, 0x10 + cmp r3, 0 + bge _08004DB0 + cmp r4, 0 + beq _08004E50 + movs r2, 0 + ldr r1, _08004E80 + ldr r0, _08004E84 + movs r3, 0x7F +_08004E42: + str r2, [r0] + str r1, [r0, 0x4] + adds r1, 0x8 + adds r0, 0x8 + subs r3, 0x1 + cmp r3, 0 + bge _08004E42 +_08004E50: + movs r1, 0x80 + lsls r1, 4 + adds r0, r5, r1 + movs r1, 0 + str r1, [r0] + ldr r2, _08004E88 + adds r0, r5, r2 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08004E68: .4byte gUnknown_20266A8 +_08004E6C: .4byte gUnknown_2026E30 +_08004E70: .4byte 0x06010000 +_08004E74: .4byte gUnknown_203B074 +_08004E78: .4byte gUnknown_20266B0 +_08004E7C: .4byte gUnknown_20256A0 +_08004E80: .4byte gUnknown_20262A8 +_08004E84: .4byte gUnknown_2025EA8 +_08004E88: .4byte 0x00000804 + thumb_func_end sub_8004D8C + + thumb_func_start sub_8004E8C +sub_8004E8C: + ldr r1, _08004EA4 + strh r1, [r0] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + movs r1, 0 + strh r1, [r0, 0x6] + strh r1, [r0, 0x8] + strh r1, [r0, 0xA] + bx lr + .align 2, 0 +_08004EA4: .4byte 0x0000ffff + thumb_func_end sub_8004E8C + + thumb_func_start sub_8004EA8 +sub_8004EA8: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + adds r5, r0, 0 + mov r8, r1 + adds r0, r2, 0 + adds r6, r3, 0 + cmp r0, 0 + beq _08004EC2 + bl sub_80052BC +_08004EC2: + ldr r0, _08004F40 + ldr r7, [r0] + mov r12, r0 + cmp r7, 0x7F + ble _08004ECE + b _08005082 +_08004ECE: + mov r2, sp + ldrh r0, [r5] + strh r0, [r2] + ldrh r0, [r5, 0x2] + strh r0, [r2, 0x2] + ldrh r4, [r5, 0x4] + ldr r0, _08004F44 + ands r0, r4 + strh r0, [r2, 0x4] + ldrh r3, [r5, 0x6] + ldr r0, _08004F48 + ands r0, r3 + strh r0, [r2, 0x6] + ldrh r0, [r5, 0x8] + strh r0, [r2, 0x8] + movs r1, 0xE0 + lsls r1, 4 + ands r1, r3 + lsrs r1, 9 + ldr r0, _08004F4C + ands r0, r4 + lsls r0, 4 + orrs r1, r0 + strh r1, [r2, 0xA] + lsls r1, r7, 3 + ldr r0, _08004F50 + adds r3, r1, r0 + mov r0, r8 + movs r2, 0x16 + ldrsh r1, [r0, r2] + mov r0, sp + ldrb r0, [r0, 0x3] + lsls r0, 24 + asrs r0, 24 + adds r7, r1, r0 + cmp r7, 0 + bge _08004F1A + movs r7, 0 +_08004F1A: + cmp r7, 0xFF + ble _08004F20 + movs r7, 0xFF +_08004F20: + cmp r6, 0 + bne _08004F54 + add r2, sp, 0x4 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + ldrh r0, [r2] + strh r0, [r3, 0x2] + adds r2, 0x2 + adds r1, r3, 0x4 + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + ldrh r0, [r2] + strh r0, [r1, 0x2] + b _08004F86 + .align 2, 0 +_08004F40: .4byte gUnknown_20266A8 +_08004F44: .4byte 0x0000fcff +_08004F48: .4byte 0x0000f1ff +_08004F4C: .4byte 0x000003ff +_08004F50: .4byte gUnknown_20262A8 +_08004F54: + add r4, sp, 0x4 + ldrh r1, [r4] + ldrh r0, [r6] + ands r0, r1 + ldrh r1, [r6, 0x6] + orrs r0, r1 + strh r0, [r3] + adds r4, 0x2 + ldrh r1, [r4] + ldrh r0, [r6, 0x2] + ands r0, r1 + ldrh r1, [r6, 0x8] + orrs r0, r1 + strh r0, [r3, 0x2] + adds r4, 0x2 + adds r2, r3, 0x4 + ldrh r1, [r4] + ldrh r0, [r6, 0x4] + ands r0, r1 + ldrh r1, [r6, 0xA] + orrs r0, r1 + strh r0, [r2] + adds r4, 0x2 + ldrh r0, [r4] + strh r0, [r2, 0x2] +_08004F86: + mov r0, sp + ldrb r0, [r0, 0x2] + cmp r0, 0 + beq _08004FB0 + ldr r1, _08004FA8 + mov r0, sp + ldrb r0, [r0, 0x2] + lsls r0, 1 + adds r1, r0, r1 + movs r4, 0 + ldrsh r0, [r1, r4] + cmp r0, 0 + beq _08004FB0 + adds r1, r0, 0 + ldr r0, _08004FAC + ands r1, r0 + b _08004FC0 + .align 2, 0 +_08004FA8: .4byte gUnknown_2025672 +_08004FAC: .4byte 0x000003ff +_08004FB0: + ldrh r1, [r3, 0x4] + ldr r2, _08005090 + ands r1, r2 + mov r6, r8 + movs r4, 0x14 + ldrsh r0, [r6, r4] + adds r1, r0 + ands r1, r2 +_08004FC0: + ldrh r2, [r3, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r4, [r3, 0x2] + ldr r5, _08005094 + adds r2, r5, 0 + ands r2, r4 + ldr r6, _08005098 + adds r1, r2, r6 + mov r2, r8 + movs r6, 0 + ldrsh r0, [r2, r6] + adds r2, r1, r0 + movs r0, 0x40 + negs r0, r0 + mov r9, r0 + cmp r2, r9 + blt _08005082 + cmp r2, 0xEF + bgt _08005082 + ands r2, r5 + movs r0, 0xFE + lsls r0, 8 + ands r0, r4 + orrs r0, r2 + strh r0, [r3, 0x2] + ldrh r0, [r3, 0x6] + lsls r4, r0, 16 + ldr r1, _0800509C + adds r5, r1, 0 + lsrs r2, r4, 20 + ldr r6, _080050A0 + adds r1, r2, r6 + mov r2, r8 + movs r6, 0x2 + ldrsh r0, [r2, r6] + adds r2, r1, r0 + cmp r2, r9 + blt _08005082 + cmp r2, 0x9F + bgt _08005082 + movs r0, 0xFF + ands r2, r0 + ldrh r1, [r3] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + strh r0, [r3] + lsrs r0, r4, 17 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08005044 + mov r0, r8 + ldrb r1, [r0, 0x1E] + movs r0, 0xF + ands r1, r0 + lsls r1, 12 + ldrh r0, [r3, 0x4] + ands r0, r5 + orrs r0, r1 + strh r0, [r3, 0x4] +_08005044: + mov r0, sp + ldrb r0, [r0, 0x2] + cmp r0, 0 + beq _08005068 + ldr r1, _080050A4 + mov r0, sp + ldrb r0, [r0, 0x2] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0xF + ands r1, r0 + lsls r1, 12 + ldrh r0, [r3, 0x4] + ands r0, r5 + orrs r0, r1 + strh r0, [r3, 0x4] +_08005068: + ldr r0, _080050A8 + mov r4, r12 + ldr r3, [r4] + lsls r2, r3, 3 + adds r2, r0 + ldr r1, _080050AC + lsls r0, r7, 3 + adds r0, r1 + ldr r1, [r0] + str r1, [r2] + str r2, [r0] + adds r3, 0x1 + str r3, [r4] +_08005082: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08005090: .4byte 0x000003ff +_08005094: .4byte 0x000001ff +_08005098: .4byte 0xffffff00 +_0800509C: .4byte 0x00000fff +_080050A0: .4byte 0xfffffe00 +_080050A4: .4byte gUnknown_2025682 +_080050A8: .4byte gUnknown_2025EA8 +_080050AC: .4byte gUnknown_20256A0 + thumb_func_end sub_8004EA8 + + thumb_func_start AddSprite +AddSprite: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r7, r1, 0 + mov r8, r2 + adds r4, r3, 0 + ldr r0, _080050F4 + ldr r0, [r0] + cmp r0, 0x7F + bgt _08005168 + lsls r1, r0, 3 + ldr r0, _080050F8 + adds r5, r1, r0 + cmp r7, 0 + bge _080050D2 + movs r7, 0 +_080050D2: + cmp r7, 0xFF + ble _080050D8 + movs r7, 0xFF +_080050D8: + cmp r4, 0 + bne _080050FC + ldrh r0, [r6] + strh r0, [r5] + ldrh r0, [r6, 0x2] + strh r0, [r5, 0x2] + adds r1, r6, 0x4 + adds r2, r5, 0x4 + ldrh r0, [r1] + strh r0, [r2] + ldrh r0, [r1, 0x2] + strh r0, [r2, 0x2] + b _08005128 + .align 2, 0 +_080050F4: .4byte gUnknown_20266A8 +_080050F8: .4byte gUnknown_20262A8 +_080050FC: + ldrh r1, [r6] + ldrh r0, [r4] + ands r0, r1 + ldrh r1, [r4, 0x6] + orrs r0, r1 + strh r0, [r5] + ldrh r1, [r6, 0x2] + ldrh r0, [r4, 0x2] + ands r0, r1 + ldrh r1, [r4, 0x8] + orrs r0, r1 + strh r0, [r5, 0x2] + adds r2, r6, 0x4 + adds r3, r5, 0x4 + ldrh r1, [r2] + ldrh r0, [r4, 0x4] + ands r0, r1 + ldrh r1, [r4, 0xA] + orrs r0, r1 + strh r0, [r3] + ldrh r0, [r2, 0x2] + strh r0, [r3, 0x2] +_08005128: + ldrh r4, [r5, 0x6] + lsrs r4, 4 + adds r0, r4, 0 + movs r1, 0 + bl nullsub_3 + movs r0, 0xFF + ands r4, r0 + ldrh r1, [r5] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + orrs r0, r4 + strh r0, [r5] + mov r0, r8 + cmp r0, 0 + beq _0800514E + bl sub_80052BC +_0800514E: + ldr r0, _08005174 + ldr r4, _08005178 + ldr r3, [r4] + lsls r2, r3, 3 + adds r2, r0 + ldr r1, _0800517C + lsls r0, r7, 3 + adds r0, r1 + ldr r1, [r0] + str r1, [r2] + str r2, [r0] + adds r3, 0x1 + str r3, [r4] +_08005168: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08005174: .4byte gUnknown_2025EA8 +_08005178: .4byte gUnknown_20266A8 +_0800517C: .4byte gUnknown_20256A0 + thumb_func_end AddSprite + + thumb_func_start sub_8005180 +sub_8005180: + push {lr} + ldr r2, _080051A8 + adds r1, r2, 0 + cmp r2, 0 + beq _0800519E +_0800518A: + ldr r0, [r1, 0x4] + cmp r0, 0 + beq _08005198 + cmp r2, 0 + beq _08005196 + str r1, [r2] +_08005196: + adds r2, r1, 0 +_08005198: + ldr r1, [r1] + cmp r1, 0 + bne _0800518A +_0800519E: + movs r0, 0 + str r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_080051A8: .4byte gUnknown_20256A0 + thumb_func_end sub_8005180 + + thumb_func_start CopySpritesToOam +CopySpritesToOam: + push {r4-r6,lr} + ldr r3, _08005204 + ldr r2, _08005208 + movs r4, 0 + ldr r6, _0800520C + cmp r3, 0 + beq _080051E0 + ldr r5, _08005210 +_080051BC: + ldr r1, [r3, 0x4] + cmp r1, 0 + beq _080051D6 + subs r2, 0x4 + ldrh r0, [r1, 0x4] + strh r0, [r2] + subs r2, 0x2 + ldrh r0, [r1, 0x2] + strh r0, [r2] + subs r2, 0x2 + ldrh r0, [r1] + strh r0, [r2] + adds r4, 0x1 +_080051D6: + ldr r3, [r3] + cmp r3, 0 + beq _080051E0 + cmp r2, r5 + bhi _080051BC +_080051E0: + ldr r1, _08005210 + cmp r2, r1 + bls _080051FA + movs r0, 0 + movs r3, 0xA0 +_080051EA: + subs r2, 0x4 + strh r0, [r2] + subs r2, 0x2 + strh r0, [r2] + subs r2, 0x2 + strh r3, [r2] + cmp r2, r1 + bhi _080051EA +_080051FA: + strh r4, [r6] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08005204: .4byte gUnknown_20256A0 +_08005208: .4byte 0x07000400 +_0800520C: .4byte gUnknown_2025670 +_08005210: .4byte 0x07000008 + thumb_func_end CopySpritesToOam + + thumb_func_start SetSavingIconCoords +SetSavingIconCoords: + push {lr} + adds r3, r0, 0 + cmp r3, 0 + bne _0800522C + ldr r1, _08005228 + strh r3, [r1] + movs r0, 0xA0 + strh r0, [r1, 0x2] + b _0800523C + .align 2, 0 +_08005228: .4byte gUnknown_2025694 +_0800522C: + ldr r1, _08005240 + ldrh r0, [r3] + movs r2, 0 + strh r0, [r1] + ldrh r0, [r3, 0x2] + strh r0, [r1, 0x2] + ldr r0, _08005244 + str r2, [r0] +_0800523C: + pop {r0} + bx r0 + .align 2, 0 +_08005240: .4byte gUnknown_2025694 +_08005244: .4byte gUnknown_2025698 + thumb_func_end SetSavingIconCoords + + thumb_func_start BlinkSavingIcon +BlinkSavingIcon: + push {r4,lr} + movs r2, 0xE0 + lsls r2, 19 + ldr r0, _08005280 + ldr r1, [r0] + adds r3, r1, 0 + adds r1, 0x1 + str r1, [r0] + movs r0, 0x10 + ands r3, r0 + cmp r3, 0 + beq _08005288 + movs r0, 0xA0 + strh r0, [r2] + adds r2, 0x2 + movs r1, 0x80 + lsls r1, 7 + adds r0, r1, 0 + strh r0, [r2] + adds r2, 0x2 + ldr r4, _08005284 + adds r0, r4, 0 + strh r0, [r2] + adds r2, 0x2 + movs r0, 0 + strh r0, [r2] + b _080052A8 + .align 2, 0 +_08005280: .4byte gUnknown_2025698 +_08005284: .4byte 0x0000f3fc +_08005288: + ldr r1, _080052B0 + ldrh r0, [r1, 0x2] + strh r0, [r2] + ldr r2, _080052B4 + movs r4, 0x80 + lsls r4, 7 + adds r0, r4, 0 + ldrh r1, [r1] + adds r0, r1 + strh r0, [r2] + adds r2, 0x2 + ldr r1, _080052B8 + adds r0, r1, 0 + strh r0, [r2] + adds r2, 0x2 + strh r3, [r2] +_080052A8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080052B0: .4byte gUnknown_2025694 +_080052B4: .4byte 0x07000002 +_080052B8: .4byte 0x0000f3fc + thumb_func_end BlinkSavingIcon + + thumb_func_start sub_80052BC +sub_80052BC: + push {r4-r6,lr} + adds r3, r0, 0 + ldr r0, [r3, 0x4] + cmp r0, 0 + beq _080052F2 + ldr r5, _080052F8 + ldr r6, _080052FC + ldr r4, _08005300 +_080052CC: + ldr r2, [r5] + cmp r2, r6 + bcs _080052F2 + ldr r0, [r3, 0x4] + str r0, [r2] + ldr r0, [r3] + str r0, [r2, 0x4] + ldr r1, [r4] + str r1, [r2, 0x8] + ldr r0, [r3, 0x4] + adds r1, r0 + str r1, [r4] + adds r0, r2, 0 + adds r0, 0xC + str r0, [r5] + adds r3, 0x8 + ldr r0, [r3, 0x4] + cmp r0, 0 + bne _080052CC +_080052F2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080052F8: .4byte gUnknown_203B074 +_080052FC: .4byte gUnknown_2026E30 +_08005300: .4byte gUnknown_2026E30 + thumb_func_end sub_80052BC + + thumb_func_start sub_8005304 +sub_8005304: + push {r4,lr} + ldr r4, _0800530C + b _0800532A + .align 2, 0 +_0800530C: .4byte gUnknown_20266B0 +_08005310: + ldr r1, [r4, 0x4] + cmp r1, 0 + beq _08005320 + ldr r0, [r4, 0x8] + ldr r2, [r4] + bl CpuCopy + b _08005328 +_08005320: + ldr r0, [r4, 0x8] + ldr r1, [r4] + bl CpuClear +_08005328: + adds r4, 0xC +_0800532A: + ldr r0, _08005338 + ldr r0, [r0] + cmp r4, r0 + bcc _08005310 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08005338: .4byte gUnknown_203B074 + thumb_func_end sub_8005304 + + thumb_func_start sub_800533C +sub_800533C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r1 + adds r5, r2, 0 + adds r7, r3, 0 + ldr r1, [sp, 0x18] + lsls r1, 24 + lsrs r6, r1, 24 + movs r2, 0x18 + ldrsh r1, [r5, r2] + lsls r1, 2 + adds r1, r0 + ldr r4, [r1] + ldr r1, _08005368 + movs r2, 0x14 + ldrsh r0, [r5, r2] + lsls r0, 5 + ldr r2, _0800536C + adds r0, r2 + str r0, [r1] + b _0800538E + .align 2, 0 +_08005368: .4byte gUnknown_2026E30 +_0800536C: .4byte 0x06010000 +_08005370: + cmp r6, 0 + beq _08005382 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + blt _08005382 + lsls r0, 2 + add r0, r8 + ldr r2, [r0] +_08005382: + adds r0, r4, 0 + adds r1, r5, 0 + adds r3, r7, 0 + bl sub_8004EA8 + adds r4, 0xA +_0800538E: + movs r2, 0 + ldrh r1, [r4] + ldr r0, _080053A8 + cmp r1, r0 + bne _08005370 + ldrh r0, [r4, 0x2] + cmp r0, r1 + bne _08005370 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080053A8: .4byte 0x0000ffff + thumb_func_end sub_800533C + + thumb_func_start sub_80053AC +sub_80053AC: + push {r4-r6,lr} + sub sp, 0xC + ldr r5, [sp, 0x1C] + ldr r6, [sp, 0x20] + ldr r4, [sp, 0x24] + lsls r4, 24 + lsrs r4, 24 + ldr r1, [r1, 0x4] + str r5, [sp] + str r6, [sp, 0x4] + str r4, [sp, 0x8] + bl sub_80053D0 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80053AC + + thumb_func_start sub_80053D0 +sub_80053D0: + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + adds r7, r3, 0 + ldr r0, [sp, 0x1C] + lsls r0, 24 + movs r2, 0 + movs r3, 0x80 + lsls r3, 8 + strh r3, [r4] + cmp r0, 0 + beq _080053F6 + movs r0, 0x80 + lsls r0, 5 + adds r1, r0, 0 + adds r0, r3, 0 + orrs r0, r1 + strh r0, [r4] +_080053F6: + strh r2, [r4, 0x2] + ldr r0, [sp, 0x18] + strh r0, [r4, 0x4] + strh r2, [r4, 0xC] + strh r2, [r4, 0xE] + ldr r0, [sp, 0x14] + strh r0, [r4, 0x1C] + ldr r0, _08005438 + strh r0, [r4, 0x20] + movs r0, 0x1 + negs r0, r0 + strh r0, [r4, 0x22] + str r2, [r4, 0x14] + str r2, [r4, 0x18] + strh r2, [r4, 0x6] + ldr r1, [r5, 0x4] + lsls r0, r6, 2 + adds r0, r1 + ldr r1, [r0] + lsls r0, r7, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [r4, 0x28] + str r0, [r4, 0x2C] + ldr r0, [r5] + str r0, [r4, 0x34] + ldr r0, [r5, 0xC] + str r0, [r4, 0x38] + ldr r0, [r5, 0x10] + str r0, [r4, 0x30] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08005438: .4byte 0x0000ffff + thumb_func_end sub_80053D0 + + thumb_func_start sub_800543C +sub_800543C: + push {r4,r5,lr} + sub sp, 0x8 + ldr r5, [sp, 0x14] + ldr r4, [sp, 0x18] + lsls r4, 24 + lsrs r4, 24 + ldr r1, [r1, 0x4] + str r5, [sp] + str r4, [sp, 0x4] + bl sub_800545C + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_800543C + + thumb_func_start sub_800545C +sub_800545C: + push {r4-r7,lr} + adds r4, r0, 0 + adds r6, r1, 0 + adds r7, r2, 0 + adds r5, r3, 0 + ldr r0, [sp, 0x18] + lsls r0, 24 + movs r2, 0 + movs r3, 0x80 + lsls r3, 8 + strh r3, [r4] + cmp r0, 0 + beq _08005482 + movs r0, 0x80 + lsls r0, 5 + adds r1, r0, 0 + adds r0, r3, 0 + orrs r0, r1 + strh r0, [r4] +_08005482: + strh r2, [r4, 0x2] + ldr r0, [sp, 0x14] + strh r0, [r4, 0x4] + strh r2, [r4, 0xC] + strh r2, [r4, 0xE] + strh r5, [r4, 0x1C] + ldr r0, _080054B8 + strh r0, [r4, 0x20] + movs r0, 0x1 + negs r0, r0 + strh r0, [r4, 0x22] + str r2, [r4, 0x14] + str r2, [r4, 0x18] + strh r2, [r4, 0x6] + ldr r1, [r6, 0x4] + lsls r0, r7, 2 + adds r0, r1 + ldr r0, [r0] + ldr r0, [r0] + str r0, [r4, 0x28] + str r0, [r4, 0x2C] + ldr r0, [r6] + str r0, [r4, 0x34] + str r2, [r4, 0x30] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080054B8: .4byte 0x0000ffff + thumb_func_end sub_800545C + + thumb_func_start sub_80054BC +sub_80054BC: + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4] + movs r0, 0x80 + lsls r0, 6 + ands r0, r1 + cmp r0, 0 + beq _080054D0 + movs r0, 0 + b _080054D2 +_080054D0: + lsrs r0, r1, 15 +_080054D2: + cmp r0, 0 + beq _08005586 + movs r1, 0x20 + ldrsh r0, [r4, r1] + ldrh r3, [r4] + cmp r0, 0 + blt _08005524 + movs r0, 0x80 + lsls r0, 7 + ands r0, r3 + cmp r0, 0 + bne _08005586 + ldrh r2, [r4, 0x6] + movs r0, 0x6 + ldrsh r1, [r4, r0] + ldr r0, _0800550C + cmp r1, r0 + bgt _080054FA + adds r0, r2, 0x1 + strh r0, [r4, 0x6] +_080054FA: + ldrh r1, [r4, 0x4] + movs r2, 0x4 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08005510 + subs r0, r1, 0x1 + strh r0, [r4, 0x4] + b _08005586 + .align 2, 0 +_0800550C: .4byte 0x0000752f +_08005510: + ldrh r1, [r4, 0x2] + movs r2, 0x2 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08005524 + subs r0, r1, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + cmp r0, 0 + bgt _08005586 +_08005524: + ldr r0, [r4, 0x2C] + ldrb r0, [r0] + cmp r0, 0 + bne _08005550 + movs r0, 0x80 + lsls r0, 5 + ands r0, r3 + cmp r0, 0 + bne _08005542 + movs r1, 0x80 + lsls r1, 6 + adds r0, r1, 0 + orrs r0, r3 + strh r0, [r4] + b _08005586 +_08005542: + ldr r0, [r4, 0x28] + str r0, [r4, 0x2C] + bl Random + movs r1, 0x1 + ands r0, r1 + strh r0, [r4, 0x4] +_08005550: + ldrh r1, [r4] + movs r2, 0x80 + lsls r2, 4 + adds r0, r2, 0 + orrs r0, r1 + strh r0, [r4] + ldr r1, [r4, 0x2C] + ldrb r0, [r1] + strh r0, [r4, 0x2] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0xC] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0xE] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x10] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x12] + ldrb r0, [r1, 0x1] + str r0, [r4, 0x14] + ldrb r2, [r1, 0x1] + ldr r0, [r4, 0x18] + orrs r0, r2 + str r0, [r4, 0x18] + adds r1, 0xC + str r1, [r4, 0x2C] +_08005586: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80054BC + + thumb_func_start sub_800558C +sub_800558C: + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + adds r7, r3, 0 + ldrh r0, [r5] + lsrs r0, 15 + cmp r0, 0 + beq _08005602 + movs r1, 0x20 + ldrsh r0, [r5, r1] + cmp r0, 0 + bge _080055AE + adds r0, r5, 0 + bl sub_80054BC +_080055AE: + ldrh r0, [r5] + lsrs r0, 15 + cmp r0, 0 + beq _08005602 + ldrh r0, [r5, 0xC] + adds r0, r4 + strh r0, [r5, 0x8] + ldrh r0, [r5, 0xE] + adds r0, r6 + strh r0, [r5, 0xA] + adds r1, r5, 0 + adds r1, 0x26 + ldr r0, [sp, 0x18] + strb r0, [r1] + strh r7, [r5, 0x1E] + ldr r0, [r5, 0x34] + ldr r1, [r5, 0x38] + adds r2, r5, 0 + adds r2, 0x8 + movs r3, 0x22 + ldrsh r4, [r5, r3] + movs r6, 0x20 + ldrsh r3, [r5, r6] + eors r4, r3 + negs r3, r4 + orrs r3, r4 + lsrs r3, 31 + str r3, [sp] + ldr r3, [sp, 0x1C] + bl sub_800533C + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x22] + ldrh r1, [r5] + movs r0, 0x80 + lsls r0, 4 + ands r0, r1 + cmp r0, 0 + beq _08005602 + ldr r0, _0800560C + ands r0, r1 + strh r0, [r5] +_08005602: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800560C: .4byte 0x0000f7ff + thumb_func_end sub_800558C + + thumb_func_start sub_8005610 +sub_8005610: + push {lr} + ldr r0, [r0, 0x4] + bl sub_800561C + pop {r0} + bx r0 + thumb_func_end sub_8005610 + + thumb_func_start sub_800561C +sub_800561C: + push {r4-r7,lr} + adds r5, r0, 0 + adds r0, r1, 0 + adds r7, r2, 0 + adds r6, r3, 0 + ldr r1, [r5, 0x14] + cmp r1, 0 + beq _0800563A + lsls r0, 5 + ldr r2, _08005664 + adds r0, r2 + ldr r2, [r5, 0x1C] + lsls r2, 5 + bl CpuCopy +_0800563A: + ldr r0, [r5, 0x18] + cmp r0, 0 + beq _0800565C + movs r4, 0 +_08005642: + movs r1, 0xF0 + lsls r1, 1 + adds r0, r4, r1 + lsls r2, r4, 2 + ldr r1, [r5, 0x18] + adds r1, r2 + adds r2, r7, 0 + adds r3, r6, 0 + bl SetBGPaletteBufferColorRGB + adds r4, 0x1 + cmp r4, 0xF + ble _08005642 +_0800565C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08005664: .4byte 0x06010000 + thumb_func_end sub_800561C + + thumb_func_start sub_8005668 +sub_8005668: + push {lr} + ldr r0, [r0, 0x4] + bl sub_8005674 + pop {r1} + bx r1 + thumb_func_end sub_8005668 + + thumb_func_start sub_8005674 +sub_8005674: + push {r4,lr} + adds r4, r0, 0 + ldr r3, [r4, 0x14] + cmp r3, 0 + beq _0800568E + lsls r0, r1, 5 + ldr r1, _08005698 + adds r0, r1 + ldr r2, [r4, 0x1C] + lsls r2, 5 + adds r1, r3, 0 + bl CpuCopy +_0800568E: + ldr r0, [r4, 0x18] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08005698: .4byte 0x06010000 + thumb_func_end sub_8005674 + + thumb_func_start sub_800569C +sub_800569C: + push {r4-r6,lr} + adds r3, r0, 0 + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0 + strh r0, [r3] + strh r0, [r3, 0x2] + ldrh r0, [r4] + lsrs r0, 15 + cmp r0, 0 + beq _080056F8 + cmp r2, 0x3 + bhi _080056F8 + ldr r1, [r4, 0x30] + cmp r1, 0 + beq _080056F2 + movs r5, 0x20 + ldrsh r0, [r4, r5] + lsls r0, 4 + adds r5, r1, r0 + lsls r0, r2, 2 + adds r2, r5, r0 + movs r6, 0 + ldrsh r1, [r2, r6] + cmp r1, 0x63 + bne _080056E0 + movs r6, 0x2 + ldrsh r1, [r2, r6] + cmp r1, 0x63 + bne _080056E0 + strh r1, [r3] + strh r1, [r3, 0x2] + b _080056F8 +_080056E0: + adds r0, r5, r0 + ldrh r1, [r0] + ldrh r2, [r4, 0xC] + adds r1, r2 + strh r1, [r3] + ldrh r0, [r0, 0x2] + ldrh r4, [r4, 0xE] + adds r0, r4 + b _080056F6 +_080056F2: + movs r0, 0x63 + strh r0, [r3] +_080056F6: + strh r0, [r3, 0x2] +_080056F8: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_800569C + + thumb_func_start sub_8005700 +sub_8005700: + push {r4,r5,lr} + adds r3, r0, 0 + ldrh r0, [r1] + lsrs r0, 15 + cmp r0, 0 + beq _0800575C + ldr r2, [r1, 0x30] + cmp r2, 0 + beq _0800574C + movs r4, 0x20 + ldrsh r0, [r1, r4] + lsls r0, 4 + adds r2, r0 + adds r4, r2, 0 + adds r4, 0xC +_0800571E: + movs r5, 0 + ldrsh r0, [r2, r5] + cmp r0, 0x63 + bne _08005732 + movs r5, 0x2 + ldrsh r0, [r2, r5] + cmp r0, 0x63 + bne _08005732 + strh r0, [r3] + b _08005740 +_08005732: + ldrh r0, [r2] + ldrh r5, [r1, 0xC] + adds r0, r5 + strh r0, [r3] + ldrh r0, [r2, 0x2] + ldrh r5, [r1, 0xE] + adds r0, r5 +_08005740: + strh r0, [r3, 0x2] + adds r3, 0x4 + adds r2, 0x4 + cmp r2, r4 + ble _0800571E + b _0800575C +_0800574C: + movs r1, 0x63 + movs r0, 0x3 +_08005750: + strh r1, [r3] + strh r1, [r3, 0x2] + adds r3, 0x4 + subs r0, 0x1 + cmp r0, 0 + bge _08005750 +_0800575C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8005700 + + thumb_func_start sub_8005764 +sub_8005764: + push {lr} + ldr r1, [r1, 0x4] + bl sub_8005770 + pop {r0} + bx r0 + thumb_func_end sub_8005764 + + thumb_func_start sub_8005770 +sub_8005770: + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r2 + adds r7, r3, 0 + movs r5, 0 + adds r0, 0x10 + lsls r6, r0, 4 + adds r4, r1, 0 +_08005782: + adds r0, r6, r5 + adds r1, r4, 0 + mov r2, r8 + adds r3, r7, 0 + bl SetBGPaletteBufferColorRGB + adds r4, 0x4 + adds r5, 0x1 + cmp r5, 0xF + ble _08005782 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8005770 + + thumb_func_start nullsub_7 +nullsub_7: + bx lr + thumb_func_end nullsub_7 + + thumb_func_start nullsub_8 +nullsub_8: + bx lr + thumb_func_end nullsub_8 + + thumb_func_start nullsub_9 +nullsub_9: + bx lr + thumb_func_end nullsub_9 + + thumb_func_start nullsub_10 +nullsub_10: + bx lr + thumb_func_end nullsub_10 + + thumb_func_start nullsub_144 +nullsub_144: + bx lr + thumb_func_end nullsub_144 + + thumb_func_start nullsub_11 +nullsub_11: + bx lr + thumb_func_end nullsub_11 + + thumb_func_start nullsub_12 +nullsub_12: + bx lr + thumb_func_end nullsub_12 + + thumb_func_start nullsub_13 +nullsub_13: + bx lr + thumb_func_end nullsub_13 + + thumb_func_start nullsub_145 +nullsub_145: + bx lr + thumb_func_end nullsub_145 + + thumb_func_start nullsub_14 +nullsub_14: + bx lr + thumb_func_end nullsub_14 + + thumb_func_start nullsub_146 +nullsub_146: + bx lr + thumb_func_end nullsub_146 + + thumb_func_start nullsub_147 +nullsub_147: + bx lr + thumb_func_end nullsub_147 + + thumb_func_start nullsub_148 +nullsub_148: + bx lr + thumb_func_end nullsub_148 + + thumb_func_start nullsub_149 +nullsub_149: + bx lr + thumb_func_end nullsub_149 + + thumb_func_start sub_80057D8 +sub_80057D8: + movs r0, 0 + bx lr + thumb_func_end sub_80057D8 + + thumb_func_start sub_80057DC +sub_80057DC: + movs r0, 0 + bx lr + thumb_func_end sub_80057DC + + thumb_func_start nullsub_150 +nullsub_150: + bx lr + thumb_func_end nullsub_150 + + thumb_func_start nullsub_151 +nullsub_151: + bx lr + thumb_func_end nullsub_151 + + thumb_func_start sub_80057E8 +sub_80057E8: + ldr r1, _08005814 + movs r0, 0x1 + strb r0, [r1] + ldr r0, _08005818 + movs r2, 0 + str r2, [r0] + ldr r1, _0800581C + movs r0, 0x1 + str r0, [r1] + ldr r0, _08005820 + str r2, [r0] + ldr r0, _08005824 + str r2, [r0] + ldr r0, _08005828 + strb r2, [r0] + ldr r1, _0800582C + ldr r3, _08005830 + adds r0, r3, 0 + strh r0, [r1] + ldr r0, _08005834 + str r2, [r0] + bx lr + .align 2, 0 +_08005814: .4byte gUnknown_2026E4C +_08005818: .4byte gUnknown_2026E54 +_0800581C: .4byte gUnknown_2026E50 +_08005820: .4byte gUnknown_2026E58 +_08005824: .4byte gUnknown_2026E3C +_08005828: .4byte gUnknown_2026E38 +_0800582C: .4byte gUnknown_2026E4E +_08005830: .4byte 0x0000060c +_08005834: .4byte gUnknown_203B078 + thumb_func_end sub_80057E8 + + thumb_func_start sub_8005838 +sub_8005838: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + adds r5, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08005880 + ldrb r0, [r0] + cmp r0, 0 + bne _08005854 + movs r1, 0 +_08005854: + ldr r0, _08005884 + ldr r0, [r0] + ldr r3, _08005888 + cmp r0, 0 + bne _08005860 + ldr r3, _0800588C +_08005860: + ldr r0, _08005890 + ldr r2, [r0] + cmp r2, 0 + bne _0800586A + ldr r2, _08005894 +_0800586A: + ldr r0, _08005898 + str r3, [r0] + cmp r1, 0x5 + bls _08005876 + bl _08006094 +_08005876: + lsls r0, r1, 2 + ldr r1, _0800589C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005880: .4byte gUnknown_2026E4C +_08005884: .4byte gUnknown_2026E54 +_08005888: .4byte gUnknown_20270E8 +_0800588C: .4byte gUnknown_2026E60 +_08005890: .4byte gUnknown_203B078 +_08005894: .4byte gUnknown_80B83EA +_08005898: .4byte gUnknown_2026E58 +_0800589C: .4byte _080058A0 + .align 2, 0 +_080058A0: + .4byte _080058B8 + .4byte _08005984 + .4byte _08005A98 + .4byte _08005BAC + .4byte _08005D46 + .4byte _08005E58 +_080058B8: + movs r1, 0 + movs r7, 0x9 +_080058BC: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + subs r7, 0x1 + cmp r7, 0 + bge _080058BC + b _08006094 +_08005984: + ldr r1, _08005A94 + movs r7, 0x9 +_08005988: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + subs r7, 0x1 + cmp r7, 0 + blt _08005A90 + b _08005988 +_08005A90: + b _08006094 + .align 2, 0 +_08005A94: .4byte gUnknown_80B816A +_08005A98: + ldr r1, _08005BA8 + movs r7, 0x9 +_08005A9C: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + subs r7, 0x1 + cmp r7, 0 + blt _08005BA4 + b _08005A9C +_08005BA4: + b _08006094 + .align 2, 0 +_08005BA8: .4byte gUnknown_80B802A +_08005BAC: + ldr r0, [r5] + mov r10, r0 + cmp r0, 0 + bge _08005BBA + ldr r0, [r5, 0x8] + cmp r0, 0 + blt _08005BDC +_08005BBA: + ldr r1, [r5, 0x4] + cmp r1, 0 + bge _08005BC6 + ldr r0, [r5, 0xC] + cmp r0, 0 + blt _08005BDC +_08005BC6: + mov r4, r10 + cmp r4, 0xEF + ble _08005BD2 + ldr r0, [r5, 0x8] + cmp r0, 0xEF + bgt _08005BDC +_08005BD2: + cmp r1, 0x9F + ble _08005CA8 + ldr r0, [r5, 0xC] + cmp r0, 0x9F + ble _08005CA8 +_08005BDC: + movs r1, 0xF0 + movs r7, 0x9 +_08005BE0: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + subs r7, 0x1 + cmp r7, 0 + bge _08005BE0 + b _08006094 +_08005CA8: + movs r7, 0 + mov r8, r1 + movs r6, 0x80 + lsls r6, 1 + mov r12, r6 + lsls r0, r1, 1 + ldr r1, _08005CCC + subs r6, r1, r0 + mov r9, r10 +_08005CBA: + cmp r8, r7 + ble _08005CD0 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + mov r4, r12 + strh r4, [r3] + b _08005D3A + .align 2, 0 +_08005CCC: .4byte gUnknown_80B8008 +_08005CD0: + ldr r1, [r5, 0xC] + cmp r1, r7 + bgt _08005CE2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + mov r0, r12 + b _08005D38 +_08005CE2: + mov r4, r8 + subs r0, r7, r4 + cmp r0, 0xF + bgt _08005CF0 + movs r0, 0 + ldrsh r1, [r6, r0] + b _08005D00 +_08005CF0: + subs r0, r1, r7 + cmp r0, 0xF + bgt _08005D10 + lsls r0, 1 + ldr r1, _08005D0C + adds r0, r1 + movs r4, 0 + ldrsh r1, [r0, r4] +_08005D00: + mov r0, r9 + adds r4, r0, r1 + ldr r0, [r5, 0x8] + subs r1, r0, r1 + b _08005D14 + .align 2, 0 +_08005D0C: .4byte gUnknown_80B8008 +_08005D10: + mov r4, r10 + ldr r1, [r5, 0x8] +_08005D14: + cmp r4, 0 + bge _08005D1A + movs r4, 0 +_08005D1A: + cmp r4, 0xEF + ble _08005D20 + movs r4, 0xEF +_08005D20: + cmp r1, 0 + bgt _08005D26 + movs r1, 0x1 +_08005D26: + cmp r1, 0xF0 + ble _08005D2C + movs r1, 0xF0 +_08005D2C: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + lsls r0, r1, 8 + orrs r0, r4 +_08005D38: + strh r0, [r3] +_08005D3A: + adds r3, 0x2 + adds r6, 0x2 + adds r7, 0x1 + cmp r7, 0x9F + ble _08005CBA + b _08006094 +_08005D46: + ldr r1, _08005E54 + movs r7, 0xE +_08005D4A: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + subs r7, 0x1 + cmp r7, 0 + blt _08005E52 + b _08005D4A +_08005E52: + b _08006094 + .align 2, 0 +_08005E54: .4byte gUnknown_80B82AA +_08005E58: + ldr r4, _08005FF4 + ldr r5, _08005FF8 + ldr r6, _08005FFC + movs r0, 0x80 + lsls r0, 1 + adds r1, r0, 0 + movs r7, 0xE +_08005E66: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + subs r7, 0x1 + cmp r7, 0 + bge _08005E66 + ldr r4, [r4] + str r4, [sp] + ldr r5, [r5] + str r5, [sp, 0x4] + ldr r6, [r6] + str r6, [sp, 0x8] + adds r1, r6, 0 + cmp r6, 0 + bge _08005F40 + adds r1, 0xFF +_08005F40: + asrs r1, 8 + adds r1, 0x1 + movs r0, 0x80 + lsls r0, 3 + bl __divsi3 + str r0, [sp, 0xC] + ldr r0, [sp, 0x4] + cmp r0, 0 + bge _08005F56 + adds r0, 0xFF +_08005F56: + asrs r4, r0, 8 + adds r5, r4, 0 + movs r3, 0 + lsls r0, r4, 2 + adds r7, r0, 0x2 + mov r9, r7 +_08005F62: + adds r0, r3, 0 + str r3, [sp, 0x10] + bl sub_8009C7C + ldr r1, [sp, 0x8] + muls r0, r1 + ldr r3, [sp, 0x10] + cmp r0, 0 + bge _08005F76 + adds r0, 0xFF +_08005F76: + asrs r0, 8 + ldr r2, [sp, 0x4] + adds r1, r2, r0 + cmp r1, 0 + bge _08005F82 + adds r1, 0xFF +_08005F82: + asrs r1, 8 + str r1, [sp, 0x14] + ldr r6, [sp, 0x4] + subs r0, r6, r0 + cmp r0, 0 + bge _08005F90 + adds r0, 0xFF +_08005F90: + asrs r0, 8 + mov r8, r0 + ldr r0, [sp, 0x14] + cmp r5, r0 + blt _08005FA4 + ldr r1, [sp, 0xC] + adds r1, r3 + mov r10, r1 + cmp r4, r8 + ble _0800608A +_08005FA4: + adds r0, r3, 0 + str r3, [sp, 0x10] + bl sub_8009D04 + ldr r2, [sp, 0x8] + muls r0, r2 + ldr r3, [sp, 0x10] + cmp r0, 0 + bge _08005FB8 + adds r0, 0xFF +_08005FB8: + asrs r0, 8 + ldr r6, [sp] + subs r1, r6, r0 + cmp r1, 0 + bge _08005FC4 + adds r1, 0xFF +_08005FC4: + asrs r1, 8 + ldr r2, [sp] + adds r0, r2, r0 + cmp r0, 0 + bge _08005FD0 + adds r0, 0xFF +_08005FD0: + asrs r0, 8 + cmp r1, 0 + bge _08005FD8 + movs r1, 0 +_08005FD8: + cmp r0, 0 + bge _08005FDE + movs r0, 0 +_08005FDE: + cmp r1, 0xEF + ble _08005FE4 + movs r1, 0x9F +_08005FE4: + cmp r0, 0xEF + ble _08005FEA + movs r0, 0x9F +_08005FEA: + cmp r1, r0 + ble _08006000 + lsls r2, r1, 8 + orrs r2, r0 + b _08006004 + .align 2, 0 +_08005FF4: .4byte gUnknown_2026E40 +_08005FF8: .4byte gUnknown_2026E44 +_08005FFC: .4byte gUnknown_2026E48 +_08006000: + lsls r2, r0, 8 + orrs r2, r1 +_08006004: + ldr r6, [sp, 0xC] + adds r3, r6 + mov r10, r3 + ldr r0, [sp, 0x14] + cmp r5, r0 + bge _0800604E + ldr r1, _08006030 + mov r12, r1 + ldr r3, _08006034 + add r3, r9 + ldr r1, _08006038 + add r1, r9 +_0800601C: + cmp r5, 0 + blt _0800603E + cmp r5, 0x9F + bgt _0800603E + mov r6, r12 + ldr r0, [r6] + cmp r0, 0 + bne _0800603C + strh r2, [r1] + b _0800603E + .align 2, 0 +_08006030: .4byte gUnknown_2026E54 +_08006034: .4byte gUnknown_20270E8 +_08006038: .4byte gUnknown_2026E60 +_0800603C: + strh r2, [r3] +_0800603E: + adds r3, 0x4 + adds r1, 0x4 + movs r0, 0x4 + add r9, r0 + adds r5, 0x1 + ldr r6, [sp, 0x14] + cmp r5, r6 + blt _0800601C +_0800604E: + cmp r4, r8 + ble _0800608A + ldr r6, _08006070 + ldr r0, _08006074 + adds r3, r7, r0 + ldr r0, _08006078 + adds r1, r7, r0 +_0800605C: + cmp r4, 0 + blt _0800607E + cmp r4, 0x9F + bgt _0800607E + ldr r0, [r6] + cmp r0, 0 + bne _0800607C + strh r2, [r1] + b _0800607E + .align 2, 0 +_08006070: .4byte gUnknown_2026E54 +_08006074: .4byte gUnknown_20270E8 +_08006078: .4byte gUnknown_2026E60 +_0800607C: + strh r2, [r3] +_0800607E: + subs r3, 0x4 + subs r1, 0x4 + subs r7, 0x4 + subs r4, 0x1 + cmp r4, r8 + bgt _0800605C +_0800608A: + mov r3, r10 + ldr r0, _080060A4 + cmp r3, r0 + bgt _08006094 + b _08005F62 +_08006094: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080060A4: .4byte 0x000003ff + thumb_func_end sub_8005838 + + thumb_func_start sub_80060A8 +sub_80060A8: + push {lr} + ldr r1, _080060D8 + ldr r0, _080060DC + ldr r0, [r0] + str r0, [r1] + ldr r2, _080060E0 + movs r1, 0 + ldr r0, [r2] + cmp r0, 0 + bne _080060BE + movs r1, 0x1 +_080060BE: + str r1, [r2] + ldr r2, _080060E4 + movs r1, 0 + ldr r0, [r2] + cmp r0, 0 + bne _080060CC + movs r1, 0x1 +_080060CC: + str r1, [r2] + ldr r1, _080060E8 + movs r0, 0 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080060D8: .4byte gUnknown_2026E3C +_080060DC: .4byte gUnknown_2026E58 +_080060E0: .4byte gUnknown_2026E54 +_080060E4: .4byte gUnknown_2026E50 +_080060E8: .4byte gUnknown_2026E38 + thumb_func_end sub_80060A8 + + thumb_func_start sub_80060EC +sub_80060EC: + push {lr} + ldr r1, _08006130 + ldr r0, _08006134 + ldr r0, [r0] + str r0, [r1] + ldr r2, _08006138 + movs r1, 0 + ldr r0, [r2] + cmp r0, 0 + bne _08006102 + movs r1, 0x1 +_08006102: + str r1, [r2] + ldr r2, _0800613C + movs r1, 0 + ldr r0, [r2] + cmp r0, 0 + bne _08006110 + movs r1, 0x1 +_08006110: + str r1, [r2] + ldr r0, _08006140 + ldrh r2, [r0] + movs r0, 0xF8 + lsls r0, 5 + ands r0, r2 + lsrs r0, 8 + movs r1, 0x1F + ands r1, r2 + bl sub_800CC44 + ldr r1, _08006144 + movs r0, 0x1 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08006130: .4byte gUnknown_2026E3C +_08006134: .4byte gUnknown_2026E58 +_08006138: .4byte gUnknown_2026E54 +_0800613C: .4byte gUnknown_2026E50 +_08006140: .4byte gUnknown_2026E4E +_08006144: .4byte gUnknown_2026E38 + thumb_func_end sub_80060EC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/other_random.s b/asm/other_random.s new file mode 100644 index 0000000..751fc20 --- /dev/null +++ b/asm/other_random.s @@ -0,0 +1,48 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start OtherRandom +OtherRandom: + ldr r1, _08004514 + ldrh r2, [r1] + movs r0, 0x6D + muls r0, r2 + ldr r2, _08004518 + adds r0, r2 + strh r0, [r1] + ldrh r0, [r1] + bx lr + .align 2, 0 +_08004514: .4byte gUnknown_203B070 +_08004518: .4byte 0x000003fd + thumb_func_end OtherRandom + + thumb_func_start OtherRandomCapped +OtherRandomCapped: + push {r4,lr} + adds r4, r0, 0 + bl OtherRandom + muls r0, r4 + asrs r0, 16 + pop {r4} + pop {r1} + bx r1 + thumb_func_end OtherRandomCapped + + thumb_func_start OtherRandomRange +OtherRandomRange: + push {r4,lr} + adds r4, r0, 0 + subs r0, r1, r4 + bl OtherRandomCapped + adds r0, r4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end OtherRandomRange + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/util.s b/asm/util.s new file mode 100644 index 0000000..3b3f95a --- /dev/null +++ b/asm/util.s @@ -0,0 +1,156 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start ReverseString +ReverseString: + push {r4,r5,lr} + adds r3, r0, 0 + subs r4, r1, 0x1 + adds r2, r3, r4 + movs r5, 0 + cmp r5, r4 + bge _08004566 +_08004552: + ldrb r1, [r3] + ldrb r0, [r2] + strb r0, [r3] + adds r3, 0x1 + strb r1, [r2] + subs r2, 0x1 + adds r5, 0x1 + subs r4, 0x1 + cmp r5, r4 + blt _08004552 +_08004566: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end ReverseString + + thumb_func_start ConvertToDecimal +ConvertToDecimal: + push {r4-r7,lr} + adds r4, r1, 0 + cmp r4, 0 + ble _08004578 + movs r7, 0x1 + b _0800457E +_08004578: + negs r4, r4 + movs r7, 0x1 + negs r7, r7 +_0800457E: + cmp r2, 0 + ble _080045A0 + adds r6, r0, 0 + adds r5, r2, 0 +_08004586: + adds r0, r4, 0 + movs r1, 0xA + bl __modsi3 + stm r6!, {r0} + adds r0, r4, 0 + movs r1, 0xA + bl __divsi3 + adds r4, r0, 0 + subs r5, 0x1 + cmp r5, 0 + bne _08004586 +_080045A0: + adds r0, r7, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end ConvertToDecimal + + thumb_func_start ConvertFromDecimal +ConvertFromDecimal: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldm r4!, {r1} + movs r3, 0xA + cmp r2, 0x1 + ble _080045CA + subs r2, 0x1 +_080045B8: + ldm r4!, {r0} + muls r0, r3 + adds r1, r0 + subs r2, 0x1 + lsls r0, r3, 2 + adds r0, r3 + lsls r3, r0, 1 + cmp r2, 0 + bne _080045B8 +_080045CA: + adds r0, r1, 0 + cmp r5, 0 + bge _080045D2 + negs r0, r0 +_080045D2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end ConvertFromDecimal + + thumb_func_start ConvertFromBCD +ConvertFromBCD: + push {r4,lr} + adds r1, r0, 0 + movs r2, 0x1 + movs r3, 0 + cmp r1, 0 + ble _080045FA + movs r4, 0xF +_080045E6: + adds r0, r1, 0 + ands r0, r4 + muls r0, r2 + adds r3, r0 + lsls r0, r2, 2 + adds r0, r2 + lsls r2, r0, 1 + asrs r1, 4 + cmp r1, 0 + bgt _080045E6 +_080045FA: + adds r0, r3, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end ConvertFromBCD + + thumb_func_start ConvertToBCD +ConvertToBCD: + push {r4-r6,lr} + adds r4, r0, 0 + movs r5, 0 + movs r6, 0 + cmp r4, 0 + ble _0800462C +_08004610: + adds r0, r4, 0 + movs r1, 0xA + bl __modsi3 + lsls r0, r5 + adds r6, r0 + adds r5, 0x4 + adds r0, r4, 0 + movs r1, 0xA + bl __divsi3 + adds r4, r0, 0 + cmp r4, 0 + bgt _08004610 +_0800462C: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end ConvertToBCD + + .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 7869f1b..1eb1602 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -37,6 +37,10 @@ SECTIONS { asm/code.o(.text); asm/memory.o(.text); asm/code_80035F0.o(.text); + asm/other_random.o(.text); + asm/util.o(.text); + asm/bg_palette_buffer.o(.text); + asm/code_80047E8.o(.text); src/random.o(.text); asm/code_8006218.o(.text); src/main.o(.text); |