diff options
Diffstat (limited to 'asm')
-rw-r--r-- | asm/bg_palette_buffer.s | 133 | ||||
-rw-r--r-- | asm/code.s | 4 | ||||
-rw-r--r-- | asm/code_800B540.s | 100 | ||||
-rw-r--r-- | asm/code_800D090.s | 4 | ||||
-rw-r--r-- | asm/code_8012A18.s | 272 | ||||
-rw-r--r-- | asm/input.s | 94 | ||||
-rw-r--r-- | asm/m4a.s | 4625 | ||||
-rw-r--r-- | asm/m4a_1.s | 1647 | ||||
-rw-r--r-- | asm/m4a_2.s | 70 | ||||
-rw-r--r-- | asm/m4a_3.s | 574 | ||||
-rw-r--r-- | asm/memory.s | 323 | ||||
-rw-r--r-- | asm/rom_header.inc | 33 | ||||
-rw-r--r-- | asm/save.s | 160 | ||||
-rw-r--r-- | asm/sprite.s | 33 |
14 files changed, 2596 insertions, 5476 deletions
diff --git a/asm/bg_palette_buffer.s b/asm/bg_palette_buffer.s index 9b42ee5..9cafb43 100644 --- a/asm/bg_palette_buffer.s +++ b/asm/bg_palette_buffer.s @@ -9,7 +9,7 @@ InitBGPaletteBuffer: push {lr} movs r2, 0 - ldr r1, _0800465C + ldr r1, =gBGPaletteBuffer movs r0, 0x80 lsls r0, 2 _0800463E: @@ -18,7 +18,7 @@ _0800463E: subs r0, 0x1 cmp r0, 0 bne _0800463E - ldr r1, _08004660 + ldr r1, =gBGPaletteUsed movs r2, 0x1 adds r0, r1, 0 adds r0, 0x1F @@ -30,8 +30,7 @@ _08004650: pop {r0} bx r0 .align 2, 0 -_0800465C: .4byte gUnknown_20251F0 -_08004660: .4byte gUnknown_20251D0 + .pool thumb_func_end InitBGPaletteBuffer thumb_func_start SetBGPaletteBufferColorRGB @@ -47,7 +46,7 @@ _08004670: ble _08004676 movs r2, 0x1F _08004676: - ldr r1, _080046CC + ldr r1, =gBGPaletteUsed adds r0, r4, 0 cmp r4, 0 bge _08004680 @@ -59,7 +58,7 @@ _08004680: strb r1, [r0] cmp r3, 0 bne _080046D4 - ldr r0, _080046D0 + ldr r0, =gBGPaletteBuffer lsls r1, r4, 1 adds r6, r1, r0 ldrb r0, [r5, 0x2] @@ -94,10 +93,9 @@ _080046C0: strh r1, [r6] b _08004722 .align 2, 0 -_080046CC: .4byte gUnknown_20251D0 -_080046D0: .4byte gUnknown_20251F0 + .pool _080046D4: - ldr r1, _08004728 + ldr r1, =gBGPaletteBuffer lsls r0, r4, 1 adds r7, r0, r1 ldrb r0, [r5, 0x2] @@ -144,120 +142,7 @@ _08004722: pop {r0} bx r0 .align 2, 0 -_08004728: .4byte gUnknown_20251F0 + .pool 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. +.align 2, 0 @ Don't pad with nop.
\ No newline at end of file @@ -198,7 +198,7 @@ _08000406: movs r0, 0x2 bl sub_800A8F8 movs r0, 0x1 - bl sub_8004D8C + bl ResetSprites movs r0, 0 bl xxx_update_some_bg_tiles bl sub_80097B0 @@ -431,7 +431,7 @@ xxx_update_stuff: bl sub_8009908 bl xxx_call_update_bg_sound_input movs r0, 0 - bl sub_8004D8C + bl ResetSprites pop {r0} bx r0 .align 2, 0 diff --git a/asm/code_800B540.s b/asm/code_800B540.s index 1f7afbc..85105f7 100644 --- a/asm/code_800B540.s +++ b/asm/code_800B540.s @@ -1062,7 +1062,7 @@ sub_800BD08: ands r3, r1 strh r3, [r0, 0xA] ldrh r0, [r0, 0xA] - bl sub_80AEF24 + bl m4aSoundInit ldr r0, _0800BDB8 movs r2, 0 strh r2, [r0] @@ -1184,7 +1184,7 @@ _0800BE4C: movs r0, 0x1 strh r0, [r1] adds r0, r6, 0 - bl sub_80AEFA8 + bl m4aSongNumStart _0800BE70: cmp r4, 0 beq _0800BE78 @@ -1258,19 +1258,19 @@ _0800BEE0: movs r1, 0x1 strh r1, [r0] adds r0, r6, 0 - bl sub_80AEFA8 + bl m4aSongNumStart ldr r4, _0800BF44 adds r0, r4, 0 - bl sub_80AF198 + bl m4aMPlayImmInit adds r0, r4, 0 movs r1, 0xFF movs r2, 0 - bl sub_80AFF50 + bl m4aMPlayVolumeControl adds r0, r6, 0 - bl sub_80AF074 + bl m4aSongNumStop adds r0, r4, 0 adds r1, r5, 0 - bl sub_80AF170 + bl m4aMPlayFadeIn _0800BF26: cmp r7, 0 beq _0800BF2E @@ -1333,7 +1333,7 @@ sub_800BF80: cmp r1, r0 beq _0800BFA2 ldr r0, _0800BFC8 - bl sub_80AF7C0 + bl m4aMPlayStop _0800BFA2: ldr r0, _0800BFC0 ldr r2, _0800BFC4 @@ -1392,7 +1392,7 @@ _0800BFE8: strh r0, [r1] ldr r0, _0800C028 adds r1, r4, 0 - bl sub_80AF140 + bl m4aMPlayFadeOut b _0800C044 .align 2, 0 _0800C018: .4byte gUnknown_202D690 @@ -1403,7 +1403,7 @@ _0800C028: .4byte gUnknown_20008F0 _0800C02C: strh r2, [r3] ldr r0, _0800C038 - bl sub_80AF7C0 + bl m4aMPlayStop b _0800C044 .align 2, 0 _0800C038: .4byte gUnknown_20008F0 @@ -1506,7 +1506,7 @@ _0800C0B4: strb r2, [r0] ldr r0, _0800C11C movs r1, 0x1 - bl sub_80AF150 + bl m4aMPlayFadeOutTemporarily b _0800C15E .align 2, 0 _0800C0FC: .4byte 0x000003e5 @@ -1529,9 +1529,9 @@ _0800C12C: movs r0, 0x3 strh r0, [r4] ldr r0, _0800C140 - bl sub_80AF7C0 + bl m4aMPlayStop ldrh r0, [r6] - bl sub_80AEFA8 + bl m4aSongNumStart b _0800C15E .align 2, 0 _0800C140: .4byte gUnknown_20008F0 @@ -1542,9 +1542,9 @@ _0800C144: cmp r0, 0x1 bls _0800C15E ldr r0, _0800C17C - bl sub_80AF7C0 + bl m4aMPlayStop ldrh r0, [r6] - bl sub_80AEFA8 + bl m4aSongNumStart movs r0, 0x3 _0800C15C: strh r0, [r4] @@ -1618,7 +1618,7 @@ _0800C1DC: lsls r0, 24 lsrs r5, r0, 24 mov r0, r8 - bl sub_80AEFA8 + bl m4aSongNumStart movs r0, 0x1 strh r0, [r4] mov r0, r8 @@ -1693,7 +1693,7 @@ _0800C22C: mov r0, r8 movs r1, 0xF adds r2, r7, 0 - bl sub_80AFF50 + bl m4aMPlayVolumeControl _0800C27E: cmp r6, 0 beq _0800C286 @@ -1705,7 +1705,7 @@ _0800C286: pop {r0} bx r0 .align 2, 0 -_0800C290: .4byte gUnknown_9E8665C +_0800C290: .4byte gMPlayTable _0800C294: .4byte gUnknown_3000FD8 thumb_func_end sub_800C214 @@ -1736,7 +1736,7 @@ sub_800C298: movs r5, 0x4 _0800C2C8: ldr r0, [r6] - bl sub_80AF7C0 + bl m4aMPlayStop strh r7, [r4] mov r2, r8 strh r2, [r4, 0x2] @@ -1756,7 +1756,7 @@ _0800C2C8: .align 2, 0 _0800C2F0: .4byte 0x000003e5 _0800C2F4: .4byte gUnknown_3000FE8 -_0800C2F8: .4byte gUnknown_9E8665C +_0800C2F8: .4byte gMPlayTable _0800C2FC: adds r0, r5, 0 bl sub_800CAAC @@ -1782,7 +1782,7 @@ _0800C2FC: bl nullsub_21 b _0800C3DE .align 2, 0 -_0800C330: .4byte gUnknown_9E8665C +_0800C330: .4byte gMPlayTable _0800C334: .4byte gUnknown_3000FD8 _0800C338: bl sub_800B620 @@ -1792,7 +1792,7 @@ _0800C338: cmp r0, r5 bne _0800C35A adds r0, r7, 0 - bl sub_80AF7C0 + bl m4aMPlayStop movs r1, 0 movs r0, 0 strh r0, [r4] @@ -1823,7 +1823,7 @@ _0800C364: mov r0, r8 strh r0, [r1] ldr r0, _0800C3A4 - bl sub_80AF7C0 + bl m4aMPlayStop _0800C38C: cmp r4, 0 beq _0800C3DE @@ -1854,7 +1854,7 @@ _0800C3A8: mov r2, r8 strh r2, [r1] ldr r0, _0800C3F4 - bl sub_80AF7C0 + bl m4aMPlayStop _0800C3D6: cmp r4, 0 beq _0800C3DE @@ -1924,15 +1924,15 @@ _0800C43E: beq _0800C46C ldr r0, [r6] mov r1, r9 - bl sub_80AF140 + bl m4aMPlayFadeOut b _0800C47E .align 2, 0 _0800C460: .4byte 0x000003e5 _0800C464: .4byte gUnknown_3000FE8 -_0800C468: .4byte gUnknown_9E8665C +_0800C468: .4byte gMPlayTable _0800C46C: ldr r0, [r6] - bl sub_80AF7C0 + bl m4aMPlayStop strh r4, [r5] mov r1, r8 strh r1, [r5, 0x2] @@ -1985,14 +1985,14 @@ _0800C496: beq _0800C4EC adds r0, r6, 0 mov r1, r9 - bl sub_80AF140 + bl m4aMPlayFadeOut b _0800C4FE .align 2, 0 _0800C4E4: .4byte gUnknown_3000FD8 -_0800C4E8: .4byte gUnknown_9E8665C +_0800C4E8: .4byte gMPlayTable _0800C4EC: adds r0, r6, 0 - bl sub_80AF7C0 + bl m4aMPlayStop movs r0, 0 strh r4, [r5] mov r1, r8 @@ -2026,7 +2026,7 @@ _0800C508: beq _0800C54C ldr r0, _0800C548 mov r1, r9 - bl sub_80AF140 + bl m4aMPlayFadeOut b _0800C556 .align 2, 0 _0800C53C: .4byte 0x000003e6 @@ -2035,7 +2035,7 @@ _0800C544: .4byte gUnknown_202D68E _0800C548: .4byte gUnknown_2000970 _0800C54C: ldr r0, _0800C560 - bl sub_80AF7C0 + bl m4aMPlayStop mov r0, r8 strh r0, [r4] _0800C556: @@ -2069,7 +2069,7 @@ _0800C564: beq _0800C5AC ldr r0, _0800C5A8 mov r1, r9 - bl sub_80AF140 + bl m4aMPlayFadeOut b _0800C5B6 .align 2, 0 _0800C5A0: .4byte gUnknown_202D690 @@ -2077,7 +2077,7 @@ _0800C5A4: .4byte gUnknown_202D68E _0800C5A8: .4byte gUnknown_2000970 _0800C5AC: ldr r0, _0800C5CC - bl sub_80AF7C0 + bl m4aMPlayStop mov r1, r8 strh r1, [r5] _0800C5B6: @@ -2246,7 +2246,7 @@ _0800C6D8: beq _0800C718 ldrh r0, [r2] _0800C6E4: - bl sub_80AEFA8 + bl m4aSongNumStart movs r0, 0x3 strh r0, [r4] b _0800C8A2 @@ -2297,7 +2297,7 @@ _0800C74C: .4byte gUnknown_202D68E _0800C750: .4byte 0x000003e5 _0800C754: ldr r0, _0800C76C - bl sub_80AF7C0 + bl m4aMPlayStop _0800C75A: ldr r1, _0800C770 ldrh r0, [r1] @@ -2324,7 +2324,7 @@ _0800C774: cmp r0, 0 beq _0800C7A4 ldrh r0, [r3] - bl sub_80AEFA8 + bl m4aSongNumStart b _0800C7BE .align 2, 0 _0800C794: .4byte gUnknown_202D68A @@ -2334,7 +2334,7 @@ _0800C7A0: .4byte gUnknown_202D694 _0800C7A4: ldr r0, _0800C7B0 movs r1, 0x4 - bl sub_80AF170 + bl m4aMPlayFadeIn b _0800C7BE .align 2, 0 _0800C7B0: .4byte gUnknown_20008F0 @@ -2342,7 +2342,7 @@ _0800C7B4: ldr r0, _0800C7CC strh r2, [r0] ldr r0, _0800C7D0 - bl sub_80AF7C0 + bl m4aMPlayStop _0800C7BE: ldr r1, _0800C7D4 movs r0, 0 @@ -2402,7 +2402,7 @@ _0800C834: .4byte gUnknown_202D68A _0800C838: .4byte 0x000003e7 _0800C83C: ldr r0, _0800C854 - bl sub_80AF7C0 + bl m4aMPlayStop _0800C842: ldr r1, _0800C858 movs r0, 0 @@ -2436,7 +2436,7 @@ _0800C864: ldr r0, _0800C898 strh r2, [r0] adds r0, r1, 0 - bl sub_80AEFA8 + bl m4aSongNumStart strh r4, [r6] b _0800C8A2 .align 2, 0 @@ -2503,10 +2503,10 @@ _0800C8F0: ldr r0, [r0] ldrh r2, [r4, 0x4] movs r1, 0xFF - bl sub_80AFF50 + bl m4aMPlayVolumeControl b _0800C926 .align 2, 0 -_0800C918: .4byte gUnknown_9E8665C +_0800C918: .4byte gMPlayTable _0800C91C: strh r0, [r4] mov r1, r8 @@ -2579,8 +2579,8 @@ _0800C9A8: strh r0, [r4] _0800C9AC: ldr r0, _0800C9C8 - bl sub_80AF7C0 - bl sub_80AF5AC + bl m4aMPlayStop + bl m4aSoundVSyncOff cmp r5, 0 beq _0800C9BE bl sub_800B5F0 @@ -2599,7 +2599,7 @@ sub_800C9CC: bl sub_800B620 lsls r0, 24 lsrs r4, r0, 24 - bl sub_80AF628 + bl m4aSoundVSyncOn ldr r0, _0800CA08 ldrh r0, [r0] cmp r0, 0 @@ -2620,7 +2620,7 @@ sub_800C9CC: cmp r0, 0 beq _0800CA1C ldrh r0, [r2] - bl sub_80AEFA8 + bl m4aSongNumStart b _0800CA22 .align 2, 0 _0800CA08: .4byte gUnknown_202D690 @@ -2630,7 +2630,7 @@ _0800CA14: .4byte gUnknown_202D688 _0800CA18: .4byte gUnknown_202D694 _0800CA1C: ldr r0, _0800CA30 - bl sub_80AF108 + bl m4aMPlayContinue _0800CA22: cmp r4, 0 beq _0800CA2A @@ -2762,7 +2762,7 @@ sub_800CAE0: ldrh r0, [r0, 0x4] bx lr .align 2, 0 -_0800CAEC: .4byte gUnknown_9E866BC +_0800CAEC: .4byte gSongTable thumb_func_end sub_800CAE0 thumb_func_start sub_800CAF0 @@ -2782,7 +2782,7 @@ sub_800CAF0: movs r0, 0x1 b _0800CB12 .align 2, 0 -_0800CB0C: .4byte gUnknown_9E8665C +_0800CB0C: .4byte gMPlayTable _0800CB10: movs r0, 0 _0800CB12: diff --git a/asm/code_800D090.s b/asm/code_800D090.s index 583fe83..4f43b66 100644 --- a/asm/code_800D090.s +++ b/asm/code_800D090.s @@ -7661,7 +7661,7 @@ sub_8010960: bl xxx_call_update_bg_sound_input bl sub_8011860 movs r0, 0 - bl sub_8004D8C + bl ResetSprites pop {r4-r6} pop {r0} bx r0 @@ -9290,7 +9290,7 @@ sub_801169C: bl xxx_call_update_bg_sound_input bl sub_8011860 movs r0, 0 - bl sub_8004D8C + bl ResetSprites add sp, 0x8 pop {r4-r6} pop {r0} diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s index bf8e220..e462a67 100644 --- a/asm/code_8012A18.s +++ b/asm/code_8012A18.s @@ -25,7 +25,7 @@ sub_8012A18: bl sub_8009908 bl xxx_call_update_bg_sound_input movs r0, 0 - bl sub_8004D8C + bl ResetSprites pop {r0} bx r0 .align 2, 0 @@ -4698,7 +4698,7 @@ _08014E10: adds r4, r1, r0 b _08014F0C .align 2, 0 -_08014E20: .4byte gUnknown_202D3B8 +_08014E20: .4byte gFileCache + 0x110 _08014E24: adds r5, 0x1 movs r0, 0 @@ -17484,7 +17484,7 @@ sub_801B3C0: push {r4,r5,lr} adds r5, r0, 0 movs r0, 0x1 - bl sub_8004D8C + bl ResetSprites ldr r4, _0801B40C movs r0, 0x94 movs r1, 0x8 @@ -19806,7 +19806,7 @@ sub_801C620: lsls r4, 24 lsrs r4, 24 movs r0, 0x1 - bl sub_8004D8C + bl ResetSprites ldr r5, _0801C670 movs r0, 0x94 movs r1, 0x8 @@ -26163,7 +26163,7 @@ sub_801F808: push {r4,r5,lr} adds r4, r0, 0 movs r0, 0x1 - bl sub_8004D8C + bl ResetSprites ldr r5, _0801F88C movs r0, 0xD4 movs r1, 0x8 @@ -41273,7 +41273,7 @@ _0802706E: sub_8027074: push {r4,lr} movs r0, 0 - bl sub_8004D8C + bl ResetSprites ldr r4, _080270A0 movs r0, 0xF0 lsls r0, 1 @@ -73146,7 +73146,7 @@ sub_8036FDC: movs r2, 0x1 bl sub_800641C movs r0, 0 - bl sub_8004D8C + bl ResetSprites ldr r5, _080370C0 ldr r0, [r5] cmp r0, 0 @@ -73610,7 +73610,7 @@ sub_80373C4: bl sub_8009908 bl xxx_call_update_bg_sound_input movs r0, 0 - bl sub_8004D8C + bl ResetSprites pop {r0} bx r0 thumb_func_end sub_80373C4 @@ -76245,7 +76245,7 @@ sub_8038830: add r0, r12 str r5, [r0] movs r0, 0 - bl sub_8004D8C + bl ResetSprites pop {r4,r5} pop {r0} bx r0 @@ -86812,10 +86812,10 @@ _0803DB54: .align 2, 0 _0803DB84: .4byte gUnknown_80F60F8 _0803DB88: .4byte gUnknown_83B0000 -_0803DB8C: .4byte gUnknown_202EC88 +_0803DB8C: .4byte gDungeonNameBannerPalette _0803DB90: .4byte gUnknown_80F6100 -_0803DB94: .4byte gUnknown_202EC8C -_0803DB98: .4byte gUnknown_202EC90 +_0803DB94: .4byte gDungeonNameBannerFontFile +_0803DB98: .4byte gDungeonNameBannerFont _0803DB9C: .4byte 0x06000140 _0803DBA0: .4byte gUnknown_203B418 _0803DBA4: .4byte 0x00000645 @@ -86862,7 +86862,7 @@ _0803DBEA: .align 2, 0 _0803DC08: .4byte gUnknown_80F6118 _0803DC0C: .4byte gUnknown_20274A5 -_0803DC10: .4byte gUnknown_202EC8C +_0803DC10: .4byte gDungeonNameBannerFontFile thumb_func_end ShowDungeonNameBanner thumb_func_start sub_803DC14 @@ -87273,7 +87273,7 @@ sub_803DEC8: adds r1, r5, r0 b _0803DF56 .align 2, 0 -_0803DEFC: .4byte gUnknown_202EC8C +_0803DEFC: .4byte gDungeonNameBannerFontFile _0803DF00: .4byte 0xffff0800 _0803DF04: .4byte 0x000007fe _0803DF08: @@ -87287,7 +87287,7 @@ _0803DF08: adds r0, r2, r0 b _0803DF3A .align 2, 0 -_0803DF1C: .4byte gUnknown_202EC90 +_0803DF1C: .4byte gDungeonNameBannerFont _0803DF20: lsls r0, r1, 3 adds r0, r5 @@ -88114,7 +88114,7 @@ _0803E5A2: bl sub_8011860 bl sub_8040B60 movs r0, 0 - bl sub_8004D8C + bl ResetSprites movs r0, 0 bl nullsub_10 ldr r1, _0803E664 @@ -88186,7 +88186,7 @@ sub_803E668: strb r1, [r0] bl sub_8011860 movs r0, 0 - bl sub_8004D8C + bl ResetSprites movs r0, 0 bl nullsub_10 ldr r0, [r4] @@ -88555,7 +88555,7 @@ _0803E9B4: .4byte 0x00018215 _0803E9B8: .4byte 0x0001c06c _0803E9BC: .4byte gUnknown_202EE8C _0803E9C0: .4byte gUnknown_202ECA4 -_0803E9C4: .4byte gUnknown_202EC88 +_0803E9C4: .4byte gDungeonNameBannerPalette _0803E9C8: .4byte gUnknown_202D058 _0803E9CC: .4byte 0x000181e4 thumb_func_end sub_803E874 @@ -99078,7 +99078,7 @@ _08043984: .4byte 0xff00ffff _08043988: .4byte gUnknown_202EDC8 _0804398C: .4byte gUnknown_81006A4 _08043990: .4byte 0x00000222 -_08043994: .4byte gUnknown_202EC88 +_08043994: .4byte gDungeonNameBannerPalette _08043998: .4byte gUnknown_203B40C _0804399C: .4byte gUnknown_203B41C _080439A0: @@ -104471,7 +104471,7 @@ sub_8046298: ldrb r0, [r0, 0xD] bx lr .align 2, 0 -_080462A8: .4byte gUnknown_20389A4 +_080462A8: .4byte gItemParametersFile + 4 thumb_func_end sub_8046298 thumb_func_start sub_80462AC @@ -245668,8 +245668,8 @@ _0808CDE4: .4byte gUnknown_203B45C _0808CDE8: .4byte gUnknown_202F400 _0808CDEC: .4byte gUnknown_81075F4 _0808CDF0: .4byte gUnknown_8300500 -_0808CDF4: .4byte gUnknown_202F3E4 -_0808CDF8: .4byte gUnknown_202F3E0 +_0808CDF4: .4byte gMonsterParametersFile +_0808CDF8: .4byte gMonsterParameters _0808CDFC: .4byte gUnknown_20384E8 thumb_func_end LoadMonsterParameters @@ -245907,7 +245907,7 @@ _0808CFB8: pop {r0} bx r0 .align 2, 0 -_0808CFC8: .4byte gUnknown_202F3E0 +_0808CFC8: .4byte gMonsterParameters _0808CFCC: .4byte gUnknown_203B45C thumb_func_end sub_808CE74 @@ -246197,7 +246197,7 @@ sub_808D1DC: bne _0808D238 b _0808D268 .align 2, 0 -_0808D204: .4byte gUnknown_202F3E0 +_0808D204: .4byte gMonsterParameters _0808D208: .4byte gUnknown_203B468 _0808D20C: ldr r0, [r7] @@ -246278,7 +246278,7 @@ sub_808D278: bne _0808D2AA b _0808D2DA .align 2, 0 -_0808D29C: .4byte gUnknown_202F3E0 +_0808D29C: .4byte gMonsterParameters _0808D2A0: .4byte gUnknown_203B468 _0808D2A4: ldr r0, [r7] @@ -247194,7 +247194,7 @@ sub_808D8BC: pop {r0} bx r0 .align 2, 0 -_0808D8DC: .4byte gUnknown_202F3E0 +_0808D8DC: .4byte gMonsterParameters thumb_func_end sub_808D8BC thumb_func_start sub_808D8E0 @@ -247216,7 +247216,7 @@ sub_808D8E0: bx r0 .align 2, 0 _0808D900: .4byte gUnknown_8107600 -_0808D904: .4byte gUnknown_202F3E0 +_0808D904: .4byte gMonsterParameters thumb_func_end sub_808D8E0 thumb_func_start sub_808D908 @@ -247238,7 +247238,7 @@ sub_808D908: bx r0 .align 2, 0 _0808D928: .4byte gUnknown_8107608 -_0808D92C: .4byte gUnknown_202F3E0 +_0808D92C: .4byte gMonsterParameters thumb_func_end sub_808D908 thumb_func_start sub_808D930 @@ -247287,7 +247287,7 @@ _0808D986: bx r0 .align 2, 0 _0808D98C: .4byte gUnknown_8107638 -_0808D990: .4byte gUnknown_202F3E0 +_0808D990: .4byte gMonsterParameters thumb_func_end sub_808D930 thumb_func_start sub_808D994 @@ -247303,7 +247303,7 @@ sub_808D994: ldr r0, [r1] bx lr .align 2, 0 -_0808D9A8: .4byte gUnknown_202F3E0 +_0808D9A8: .4byte gMonsterParameters thumb_func_end sub_808D994 thumb_func_start sub_808D9AC @@ -247468,7 +247468,7 @@ sub_808DAB4: ldr r0, [r1, 0x4] bx lr .align 2, 0 -_0808DAC8: .4byte gUnknown_202F3E0 +_0808DAC8: .4byte gMonsterParameters thumb_func_end sub_808DAB4 thumb_func_start sub_808DACC @@ -247484,7 +247484,7 @@ sub_808DACC: ldrb r0, [r1, 0x9] bx lr .align 2, 0 -_0808DAE0: .4byte gUnknown_202F3E0 +_0808DAE0: .4byte gMonsterParameters thumb_func_end sub_808DACC thumb_func_start sub_808DAE4 @@ -247500,7 +247500,7 @@ sub_808DAE4: ldrb r0, [r1, 0x19] bx lr .align 2, 0 -_0808DAF8: .4byte gUnknown_202F3E0 +_0808DAF8: .4byte gMonsterParameters thumb_func_end sub_808DAE4 thumb_func_start sub_808DAFC @@ -247516,7 +247516,7 @@ sub_808DAFC: ldr r0, [r1, 0xC] bx lr .align 2, 0 -_0808DB10: .4byte gUnknown_202F3E0 +_0808DB10: .4byte gMonsterParameters thumb_func_end sub_808DAFC thumb_func_start sub_808DB14 @@ -247532,7 +247532,7 @@ sub_808DB14: ldrb r0, [r1, 0x15] bx lr .align 2, 0 -_0808DB28: .4byte gUnknown_202F3E0 +_0808DB28: .4byte gMonsterParameters thumb_func_end sub_808DB14 thumb_func_start sub_808DB2C @@ -247550,7 +247550,7 @@ sub_808DB2C: lsrs r0, 24 bx lr .align 2, 0 -_0808DB44: .4byte gUnknown_202F3E0 +_0808DB44: .4byte gMonsterParameters thumb_func_end sub_808DB2C thumb_func_start sub_808DB48 @@ -247566,7 +247566,7 @@ sub_808DB48: ldrb r0, [r1, 0x1C] bx lr .align 2, 0 -_0808DB5C: .4byte gUnknown_202F3E0 +_0808DB5C: .4byte gMonsterParameters thumb_func_end sub_808DB48 thumb_func_start sub_808DB60 @@ -247582,7 +247582,7 @@ sub_808DB60: ldrb r0, [r1, 0x1D] bx lr .align 2, 0 -_0808DB74: .4byte gUnknown_202F3E0 +_0808DB74: .4byte gMonsterParameters thumb_func_end sub_808DB60 thumb_func_start sub_808DB78 @@ -247598,7 +247598,7 @@ sub_808DB78: ldrh r0, [r1, 0x2C] bx lr .align 2, 0 -_0808DB8C: .4byte gUnknown_202F3E0 +_0808DB8C: .4byte gMonsterParameters thumb_func_end sub_808DB78 thumb_func_start sub_808DB90 @@ -247614,7 +247614,7 @@ sub_808DB90: ldrh r0, [r1, 0x2E] bx lr .align 2, 0 -_0808DBA4: .4byte gUnknown_202F3E0 +_0808DBA4: .4byte gMonsterParameters thumb_func_end sub_808DB90 thumb_func_start sub_808DBA8 @@ -247630,7 +247630,7 @@ sub_808DBA8: ldrb r0, [r1, 0x16] bx lr .align 2, 0 -_0808DBBC: .4byte gUnknown_202F3E0 +_0808DBBC: .4byte gMonsterParameters thumb_func_end sub_808DBA8 thumb_func_start sub_808DBC0 @@ -247646,7 +247646,7 @@ sub_808DBC0: ldrh r0, [r1, 0x1E] bx lr .align 2, 0 -_0808DBD4: .4byte gUnknown_202F3E0 +_0808DBD4: .4byte gMonsterParameters thumb_func_end sub_808DBC0 thumb_func_start sub_808DBD8 @@ -247663,7 +247663,7 @@ sub_808DBD8: ldrb r0, [r1] bx lr .align 2, 0 -_0808DBF0: .4byte gUnknown_202F3E0 +_0808DBF0: .4byte gMonsterParameters thumb_func_end sub_808DBD8 thumb_func_start sub_808DBF4 @@ -247679,7 +247679,7 @@ sub_808DBF4: ldrb r0, [r1, 0x12] bx lr .align 2, 0 -_0808DC08: .4byte gUnknown_202F3E0 +_0808DC08: .4byte gMonsterParameters thumb_func_end sub_808DBF4 thumb_func_start sub_808DC0C @@ -247696,7 +247696,7 @@ sub_808DC0C: ldrsh r0, [r1, r2] bx lr .align 2, 0 -_0808DC24: .4byte gUnknown_202F3E0 +_0808DC24: .4byte gMonsterParameters thumb_func_end sub_808DC0C thumb_func_start sub_808DC28 @@ -247715,7 +247715,7 @@ sub_808DC28: ldrh r0, [r2] bx lr .align 2, 0 -_0808DC44: .4byte gUnknown_202F3E0 +_0808DC44: .4byte gMonsterParameters thumb_func_end sub_808DC28 thumb_func_start sub_808DC48 @@ -247734,7 +247734,7 @@ sub_808DC48: ldrh r0, [r2] bx lr .align 2, 0 -_0808DC64: .4byte gUnknown_202F3E0 +_0808DC64: .4byte gMonsterParameters thumb_func_end sub_808DC48 thumb_func_start sub_808DC68 @@ -247752,7 +247752,7 @@ sub_808DC68: ldrb r0, [r2] bx lr .align 2, 0 -_0808DC80: .4byte gUnknown_202F3E0 +_0808DC80: .4byte gMonsterParameters thumb_func_end sub_808DC68 thumb_func_start sub_808DC84 @@ -247770,7 +247770,7 @@ sub_808DC84: ldrb r0, [r2] bx lr .align 2, 0 -_0808DC9C: .4byte gUnknown_202F3E0 +_0808DC9C: .4byte gMonsterParameters thumb_func_end sub_808DC84 thumb_func_start sub_808DCA0 @@ -247790,7 +247790,7 @@ sub_808DCA0: ldrsh r0, [r2, r1] bx lr .align 2, 0 -_0808DCBC: .4byte gUnknown_202F3E0 +_0808DCBC: .4byte gMonsterParameters thumb_func_end sub_808DCA0 thumb_func_start sub_808DCC0 @@ -247808,7 +247808,7 @@ sub_808DCC0: ldrsh r0, [r1, r2] bx lr .align 2, 0 -_0808DCD8: .4byte gUnknown_202F3E0 +_0808DCD8: .4byte gMonsterParameters thumb_func_end sub_808DCC0 thumb_func_start sub_808DCDC @@ -247828,7 +247828,7 @@ sub_808DCDC: ldrsh r0, [r2, r1] bx lr .align 2, 0 -_0808DCF8: .4byte gUnknown_202F3E0 +_0808DCF8: .4byte gMonsterParameters thumb_func_end sub_808DCDC thumb_func_start sub_808DCFC @@ -247845,7 +247845,7 @@ sub_808DCFC: ldrsh r0, [r1, r2] bx lr .align 2, 0 -_0808DD14: .4byte gUnknown_202F3E0 +_0808DD14: .4byte gMonsterParameters thumb_func_end sub_808DCFC thumb_func_start sub_808DD18 @@ -247871,7 +247871,7 @@ sub_808DD18: pop {r1} bx r1 .align 2, 0 -_0808DD44: .4byte gUnknown_202F3E0 +_0808DD44: .4byte gMonsterParameters thumb_func_end sub_808DD18 thumb_func_start sub_808DD48 @@ -247890,7 +247890,7 @@ sub_808DD48: str r3, [r1, 0x4] bx lr .align 2, 0 -_0808DD64: .4byte gUnknown_202F3E0 +_0808DD64: .4byte gMonsterParameters thumb_func_end sub_808DD48 thumb_func_start sub_808DD68 @@ -247909,7 +247909,7 @@ sub_808DD68: ldrb r0, [r0, 0x8] b _0808DD8A .align 2, 0 -_0808DD84: .4byte gUnknown_202F3E0 +_0808DD84: .4byte gMonsterParameters _0808DD88: movs r0, 0xA _0808DD8A: @@ -247940,7 +247940,7 @@ sub_808DD90: bl OpenFile b _0808DDCA .align 2, 0 -_0808DDBC: .4byte gUnknown_202F3E0 +_0808DDBC: .4byte gMonsterParameters _0808DDC0: .4byte gUnknown_8107684 _0808DDC4: .4byte gUnknown_8510000 _0808DDC8: @@ -247974,7 +247974,7 @@ sub_808DDD0: bl OpenFileAndGetFileDataPtr b _0808DE0A .align 2, 0 -_0808DDFC: .4byte gUnknown_202F3E0 +_0808DDFC: .4byte gMonsterParameters _0808DE00: .4byte gUnknown_8107684 _0808DE04: .4byte gUnknown_8510000 _0808DE08: @@ -248001,7 +248001,7 @@ sub_808DE10: ands r0, r1 bx lr .align 2, 0 -_0808DE2C: .4byte gUnknown_202F3E0 +_0808DE2C: .4byte gMonsterParameters thumb_func_end sub_808DE10 thumb_func_start sub_808DE30 @@ -253777,8 +253777,8 @@ _080909B8: .4byte gUnknown_203B460 _080909BC: .4byte gUnknown_20389A8 _080909C0: .4byte gUnknown_8109764 _080909C4: .4byte gUnknown_8300500 -_080909C8: .4byte gUnknown_20389A0 -_080909CC: .4byte gUnknown_20389A4 +_080909C8: .4byte gItemParametersFile +_080909CC: .4byte gItemParametersFile + 4 thumb_func_end sub_8090998 thumb_func_start sub_80909D0 @@ -254085,7 +254085,7 @@ sub_8090BD0: ldrb r0, [r0, 0xC] bx lr .align 2, 0 -_08090BE0: .4byte gUnknown_20389A4 +_08090BE0: .4byte gItemParametersFile + 4 thumb_func_end sub_8090BD0 thumb_func_start sub_8090BE4 @@ -254112,7 +254112,7 @@ _08090BF6: ldr r0, [r0, 0x4] b _08090C24 .align 2, 0 -_08090C10: .4byte gUnknown_20389A4 +_08090C10: .4byte gItemParametersFile + 4 _08090C14: ldrb r0, [r4, 0x2] ldr r1, _08090C2C @@ -254127,7 +254127,7 @@ _08090C24: pop {r1} bx r1 .align 2, 0 -_08090C2C: .4byte gUnknown_20389A4 +_08090C2C: .4byte gItemParametersFile + 4 thumb_func_end sub_8090BE4 thumb_func_start sub_8090C30 @@ -254154,7 +254154,7 @@ _08090C42: ldr r0, [r0, 0x8] b _08090C70 .align 2, 0 -_08090C5C: .4byte gUnknown_20389A4 +_08090C5C: .4byte gItemParametersFile + 4 _08090C60: ldrb r0, [r4, 0x2] ldr r1, _08090C78 @@ -254169,7 +254169,7 @@ _08090C70: pop {r1} bx r1 .align 2, 0 -_08090C78: .4byte gUnknown_20389A4 +_08090C78: .4byte gItemParametersFile + 4 thumb_func_end sub_8090C30 thumb_func_start sub_8090C7C @@ -254197,7 +254197,7 @@ _08090C90: ldr r0, [r0, 0x4] b _08090CC0 .align 2, 0 -_08090CAC: .4byte gUnknown_20389A4 +_08090CAC: .4byte gItemParametersFile + 4 _08090CB0: ldrb r0, [r4, 0x2] ldr r1, _08090CC8 @@ -254212,7 +254212,7 @@ _08090CC0: pop {r1} bx r1 .align 2, 0 -_08090CC8: .4byte gUnknown_20389A4 +_08090CC8: .4byte gItemParametersFile + 4 thumb_func_end sub_8090C7C thumb_func_start sub_8090CCC @@ -254240,7 +254240,7 @@ _08090CE0: ldr r0, [r0, 0x8] b _08090D10 .align 2, 0 -_08090CFC: .4byte gUnknown_20389A4 +_08090CFC: .4byte gItemParametersFile + 4 _08090D00: ldrb r0, [r4, 0x2] ldr r1, _08090D18 @@ -254255,7 +254255,7 @@ _08090D10: pop {r1} bx r1 .align 2, 0 -_08090D18: .4byte gUnknown_20389A4 +_08090D18: .4byte gItemParametersFile + 4 thumb_func_end sub_8090CCC thumb_func_start sub_8090D1C @@ -254268,7 +254268,7 @@ sub_8090D1C: ldr r0, [r0, 0x4] bx lr .align 2, 0 -_08090D2C: .4byte gUnknown_20389A4 +_08090D2C: .4byte gItemParametersFile + 4 thumb_func_end sub_8090D1C thumb_func_start sub_8090D30 @@ -254281,7 +254281,7 @@ sub_8090D30: ldr r0, [r0, 0x8] bx lr .align 2, 0 -_08090D40: .4byte gUnknown_20389A4 +_08090D40: .4byte gItemParametersFile + 4 thumb_func_end sub_8090D30 thumb_func_start sub_8090D44 @@ -254294,7 +254294,7 @@ sub_8090D44: ldrb r0, [r0, 0x1A] bx lr .align 2, 0 -_08090D54: .4byte gUnknown_20389A4 +_08090D54: .4byte gItemParametersFile + 4 thumb_func_end sub_8090D44 thumb_func_start sub_8090D58 @@ -254307,7 +254307,7 @@ sub_8090D58: ldrb r0, [r0, 0x1D] bx lr .align 2, 0 -_08090D68: .4byte gUnknown_20389A4 +_08090D68: .4byte gItemParametersFile + 4 thumb_func_end sub_8090D58 thumb_func_start sub_8090D6C @@ -254320,7 +254320,7 @@ sub_8090D6C: ldrb r0, [r0, 0x1E] bx lr .align 2, 0 -_08090D7C: .4byte gUnknown_20389A4 +_08090D7C: .4byte gItemParametersFile + 4 thumb_func_end sub_8090D6C thumb_func_start sub_8090D80 @@ -254335,7 +254335,7 @@ sub_8090D80: ldrb r0, [r0] bx lr .align 2, 0 -_08090D94: .4byte gUnknown_20389A4 +_08090D94: .4byte gItemParametersFile + 4 thumb_func_end sub_8090D80 thumb_func_start sub_8090D98 @@ -254348,7 +254348,7 @@ sub_8090D98: ldr r0, [r0, 0x10] bx lr .align 2, 0 -_08090DA8: .4byte gUnknown_20389A4 +_08090DA8: .4byte gItemParametersFile + 4 thumb_func_end sub_8090D98 thumb_func_start sub_8090DAC @@ -254363,7 +254363,7 @@ sub_8090DAC: ldrb r0, [r0] bx lr .align 2, 0 -_08090DC0: .4byte gUnknown_20389A4 +_08090DC0: .4byte gItemParametersFile + 4 thumb_func_end sub_8090DAC thumb_func_start sub_8090DC4 @@ -254404,7 +254404,7 @@ sub_8090DC4: pop {r0} bx r0 .align 2, 0 -_08090E10: .4byte gUnknown_20389A4 +_08090E10: .4byte gItemParametersFile + 4 thumb_func_end sub_8090DC4 thumb_func_start sub_8090E14 @@ -254453,7 +254453,7 @@ _08090E50: b _08090EC4 .align 2, 0 _08090E68: .4byte gUnknown_8109770 -_08090E6C: .4byte gUnknown_20389A4 +_08090E6C: .4byte gItemParametersFile + 4 _08090E70: ldr r1, _08090E88 ldrb r0, [r5, 0x2] @@ -254467,7 +254467,7 @@ _08090E70: b _08090EC4 .align 2, 0 _08090E88: .4byte gUnknown_8109778 -_08090E8C: .4byte gUnknown_20389A4 +_08090E8C: .4byte gItemParametersFile + 4 _08090E90: ldrb r0, [r5, 0x2] cmp r0, 0x69 @@ -254544,7 +254544,7 @@ _08090F14: bl sub_8090F58 b _08090F50 .align 2, 0 -_08090F2C: .4byte gUnknown_20389A4 +_08090F2C: .4byte gItemParametersFile + 4 _08090F30: .4byte gUnknown_8109784 _08090F34: .4byte gUnknown_810978C _08090F38: @@ -255209,7 +255209,7 @@ sub_80913CC: ldrh r0, [r0, 0x18] bx lr .align 2, 0 -_080913DC: .4byte gUnknown_20389A4 +_080913DC: .4byte gItemParametersFile + 4 thumb_func_end sub_80913CC thumb_func_start sub_80913E0 @@ -258154,7 +258154,7 @@ LoadWazaParameters: .align 2, 0 _08092868: .4byte gUnknown_81098D0 _0809286C: .4byte gUnknown_8300500 -_08092870: .4byte gUnknown_2038C64 +_08092870: .4byte gWazaParametersFile _08092874: .4byte gUnknown_2038C68 _08092878: .4byte gUnknown_2038C6C thumb_func_end LoadWazaParameters @@ -271490,7 +271490,7 @@ _080988F8: bl GroundEffect_Action bl nullsub_105 bl sub_809B474 - bl sub_80A2380 + bl GroundScript_Unlock bl sub_809D25C bl sub_80A59DC bl sub_809B614 @@ -271783,7 +271783,7 @@ _08098BD2: sub_8098BDC: push {lr} bl sub_809B57C - bl sub_80A2380 + bl GroundScript_Unlock bl sub_809D25C bl sub_80A59DC bl sub_809B614 @@ -273046,7 +273046,7 @@ _080995AE: _08099604: bl xxx_call_update_bg_sound_input movs r0, 0 - bl sub_8004D8C + bl ResetSprites mov r2, r9 cmp r2, 0 beq _08099524 @@ -279959,7 +279959,7 @@ sub_809CBBC: b _0809CC4A .align 2, 0 _0809CC0C: .4byte gUnknown_81163E4 -_0809CC10: .4byte gUnknown_20389A4 +_0809CC10: .4byte gItemParametersFile + 4 _0809CC14: .4byte gUnknown_203B460 _0809CC18: .4byte 0x0001869f _0809CC1C: @@ -284745,28 +284745,28 @@ _0809F3DC: .4byte gUnknown_2039A32 _0809F3E0: adds r0, r6, 0 adds r1, r5, 0 - bl sub_80A7988 + bl GroundLives_Cancel adds r0, r6, 0 adds r1, r5, 0 - bl sub_80ABC5C + bl GroundObject_Cancel adds r0, r6, 0 adds r1, r5, 0 - bl sub_80ACC98 + bl GroundEffect_Cancel b _0809F41E _0809F3FA: adds r0, r6, 0 adds r1, r5, 0 - bl sub_80A7988 + bl GroundLives_Cancel bl _0809EAE0 _0809F406: adds r0, r6, 0 adds r1, r5, 0 - bl sub_80ABC5C + bl GroundObject_Cancel bl _0809EAE0 _0809F412: adds r0, r6, 0 adds r1, r5, 0 - bl sub_80ACC98 + bl GroundEffect_Cancel bl _0809EAE0 _0809F41E: adds r0, r6, 0 @@ -284777,10 +284777,10 @@ _0809F42A: bl sub_80A79FC bl _0809EAE0 _0809F432: - bl sub_80ABCCC + bl GroundObject_CancelBlank bl _0809EAE0 _0809F43A: - bl sub_80ACD08 + bl GroundEffect_CancelBlank bl _0809EAE0 _0809F442: mov r2, r9 @@ -290448,7 +290448,7 @@ _080A233A: b _080A236A _080A2346: movs r0, 0 - bl sub_80A6C88 + bl GroundSprite_ExtendPaletteDelete b _080A236A _080A234E: movs r0, 0 @@ -290478,8 +290478,8 @@ _080A236C: bx r1 thumb_func_end sub_80A14E8 - thumb_func_start sub_80A2380 -sub_80A2380: + thumb_func_start GroundScript_Unlock +GroundScript_Unlock: push {r4-r7,lr} ldr r1, _080A241C ldrb r0, [r1] @@ -290557,7 +290557,7 @@ _080A241C: .4byte gUnknown_2039A36 _080A2420: .4byte gUnknown_2039A38 _080A2424: .4byte gUnknown_8116848 _080A2428: .4byte gUnknown_2039AC0 - thumb_func_end sub_80A2380 + thumb_func_end GroundScript_Unlock thumb_func_start sub_80A242C sub_80A242C: @@ -299178,7 +299178,7 @@ _080A6434: _080A6444: strh r0, [r5, 0xA] movs r0, 0x1 - bl sub_8004D8C + bl ResetSprites movs r0, 0x1 bl nullsub_10 pop {r3,r4} @@ -299342,7 +299342,7 @@ sub_80A658C: push {r4,lr} bl sub_800DB7C movs r0, 0 - bl sub_8004D8C + bl ResetSprites movs r0, 0 bl nullsub_10 bl sub_8005180 @@ -299986,7 +299986,7 @@ sub_80A69FC: cmp r4, 0 blt _080A6A7A adds r0, r6, 0 - bl sub_80A6C88 + bl GroundSprite_ExtendPaletteDelete movs r0, 0 str r0, [r5, 0x8] str r0, [r5] @@ -300303,8 +300303,8 @@ _080A6C78: bx r0 thumb_func_end GroundSprite_ExtendPaletteAdd - thumb_func_start sub_80A6C88 -sub_80A6C88: + thumb_func_start GroundSprite_ExtendPaletteDelete +GroundSprite_ExtendPaletteDelete: push {r4-r6,lr} adds r2, r0, 0 cmp r2, 0 @@ -300360,7 +300360,7 @@ _080A6CE6: .align 2, 0 _080A6CEC: .4byte gUnknown_3001B7C _080A6CF0: .4byte gUnknown_81178C0 - thumb_func_end sub_80A6C88 + thumb_func_end GroundSprite_ExtendPaletteDelete thumb_func_start sub_80A6CF4 sub_80A6CF4: @@ -300572,7 +300572,7 @@ _080A6E56: sub_80A6E68: push {lr} movs r0, 0 - bl sub_8004D8C + bl ResetSprites movs r0, 0 bl nullsub_10 bl sub_800E970 @@ -301931,7 +301931,7 @@ _080A787C: cmp r0, r6 beq _080A788A adds r0, r1, 0 - bl sub_80A8684 + bl GroundLives_Delete _080A788A: adds r0, r5, 0 movs r1, 0x80 @@ -302062,8 +302062,8 @@ _080A7980: .4byte gUnknown_811808C _080A7984: .4byte gUnknown_8118098 thumb_func_end GroundLives_Select - thumb_func_start sub_80A7988 -sub_80A7988: + thumb_func_start GroundLives_Cancel +GroundLives_Cancel: push {r4-r7,lr} mov r7, r8 push {r7} @@ -302101,7 +302101,7 @@ _080A79B2: bne _080A79D4 _080A79CE: adds r0, r1, 0 - bl sub_80A8684 + bl GroundLives_Delete _080A79D4: adds r0, r6, 0 movs r1, 0x80 @@ -302121,7 +302121,7 @@ _080A79D4: .align 2, 0 _080A79F4: .4byte gUnknown_81180BC _080A79F8: .4byte gUnknown_3001B84 - thumb_func_end sub_80A7988 + thumb_func_end GroundLives_Cancel thumb_func_start sub_80A79FC sub_80A79FC: @@ -302164,7 +302164,7 @@ _080A7A20: cmp r0, 0 bne _080A7A50 adds r0, r6, 0 - bl sub_80A8684 + bl GroundLives_Delete _080A7A50: adds r0, r6, 0x1 lsls r0, 16 @@ -303749,8 +303749,8 @@ _080A8674: bx r1 thumb_func_end GroundLives_Add - thumb_func_start sub_80A8684 -sub_80A8684: + thumb_func_start GroundLives_Delete +GroundLives_Delete: push {r4,lr} adds r2, r0, 0 lsls r2, 16 @@ -303780,7 +303780,7 @@ sub_80A8684: _080A86BC: .4byte gUnknown_3001B84 _080A86C0: .4byte gUnknown_8118194 _080A86C4: .4byte 0x0000ffff - thumb_func_end sub_80A8684 + thumb_func_end GroundLives_Delete thumb_func_start sub_80A86C8 sub_80A86C8: @@ -309318,7 +309318,7 @@ _080AB278: b _080AB44C _080AB292: mov r0, r9 - bl sub_80A8684 + bl GroundLives_Delete b _080AB47C .align 2, 0 _080AB29C: .4byte gUnknown_3001B84 @@ -310631,8 +310631,8 @@ _080ABC54: .4byte gUnknown_81183E4 _080ABC58: .4byte gUnknown_81183F0 thumb_func_end GroundObject_Select - thumb_func_start sub_80ABC5C -sub_80ABC5C: + thumb_func_start GroundObject_Cancel +GroundObject_Cancel: push {r4-r7,lr} mov r7, r8 push {r7} @@ -310689,10 +310689,10 @@ _080ABCA6: .align 2, 0 _080ABCC4: .4byte gUnknown_8118414 _080ABCC8: .4byte gUnknown_3001B88 - thumb_func_end sub_80ABC5C + thumb_func_end GroundObject_Cancel - thumb_func_start sub_80ABCCC -sub_80ABCCC: + thumb_func_start GroundObject_CancelBlank +GroundObject_CancelBlank: push {r4-r7,lr} mov r7, r8 push {r7} @@ -310752,7 +310752,7 @@ _080ABD20: .align 2, 0 _080ABD40: .4byte gUnknown_811842C _080ABD44: .4byte gUnknown_3001B88 - thumb_func_end sub_80ABCCC + thumb_func_end GroundObject_CancelBlank thumb_func_start sub_80ABD48 sub_80ABD48: @@ -312792,7 +312792,7 @@ _080ACBE4: cmp r0, r6 beq _080ACBF2 adds r0, r1, 0 - bl sub_80AD080 + bl GroundEffect_Delete _080ACBF2: adds r0, r5, 0 movs r1, 0x80 @@ -312882,8 +312882,8 @@ _080ACC90: .4byte gUnknown_8118610 _080ACC94: .4byte gUnknown_811861C thumb_func_end GroundEffect_Select - thumb_func_start sub_80ACC98 -sub_80ACC98: + thumb_func_start GroundEffect_Cancel +GroundEffect_Cancel: push {r4-r7,lr} mov r7, r8 push {r7} @@ -312920,7 +312920,7 @@ _080ACCC0: bne _080ACCE2 _080ACCDC: adds r0, r1, 0 - bl sub_80AD080 + bl GroundEffect_Delete _080ACCE2: adds r0, r6, 0 movs r1, 0x80 @@ -312940,10 +312940,10 @@ _080ACCE2: .align 2, 0 _080ACD00: .4byte gUnknown_8118640 _080ACD04: .4byte gUnknown_3001B8C - thumb_func_end sub_80ACC98 + thumb_func_end GroundEffect_Cancel - thumb_func_start sub_80ACD08 -sub_80ACD08: + thumb_func_start GroundEffect_CancelBlank +GroundEffect_CancelBlank: push {r4-r7,lr} mov r7, r8 push {r7} @@ -312983,7 +312983,7 @@ _080ACD2C: cmp r0, 0 bne _080ACD5C adds r0, r6, 0 - bl sub_80AD080 + bl GroundEffect_Delete _080ACD5C: adds r0, r6, 0x1 lsls r0, 16 @@ -313003,7 +313003,7 @@ _080ACD5C: .align 2, 0 _080ACD7C: .4byte gUnknown_8118658 _080ACD80: .4byte gUnknown_3001B8C - thumb_func_end sub_80ACD08 + thumb_func_end GroundEffect_CancelBlank thumb_func_start sub_80ACD84 sub_80ACD84: @@ -313399,8 +313399,8 @@ _080AD078: .4byte gUnknown_812F1F8 _080AD07C: .4byte gUnknown_81186CC thumb_func_end GroundEffect_Add - thumb_func_start sub_80AD080 -sub_80AD080: + thumb_func_start GroundEffect_Delete +GroundEffect_Delete: push {r4,lr} adds r2, r0, 0 lsls r2, 16 @@ -313432,7 +313432,7 @@ sub_80AD080: _080AD0BC: .4byte gUnknown_3001B8C _080AD0C0: .4byte gUnknown_81186D8 _080AD0C4: .4byte 0x0000ffff - thumb_func_end sub_80AD080 + thumb_func_end GroundEffect_Delete thumb_func_start sub_80AD0C8 sub_80AD0C8: @@ -314398,7 +314398,7 @@ _080AD72C: cmp r0, 0x4 bne _080AD768 adds r0, r7, 0 - bl sub_80AD080 + bl GroundEffect_Delete b _080AD78A .align 2, 0 _080AD754: .4byte gUnknown_3001B8C diff --git a/asm/input.s b/asm/input.s index 7516a30..d439867 100644 --- a/asm/input.s +++ b/asm/input.s @@ -7,24 +7,24 @@ thumb_func_start InitInput InitInput: - ldr r0, _08004840 + ldr r0, =gUnknown_20255F0 movs r3, 0 movs r2, 0 strh r2, [r0] strh r2, [r0, 0x2] strh r2, [r0, 0x4] strh r2, [r0, 0x6] - ldr r0, _08004844 + ldr r0, =gUnknown_2025638 strh r2, [r0] strh r2, [r0, 0x2] strh r2, [r0, 0x4] strh r2, [r0, 0x6] - ldr r1, _08004848 - ldr r0, _0800484C + ldr r1, =gUnknown_202562C + ldr r0, =0x4a14c1 str r0, [r1] - ldr r0, _08004850 + ldr r0, =gUnknown_2025600 str r2, [r0, 0x20] - ldr r1, _08004854 + ldr r1, =0xffff strh r1, [r0] movs r1, 0x1 negs r1, r1 @@ -46,25 +46,19 @@ InitInput: strb r3, [r1] adds r0, 0x29 strb r3, [r0] - ldr r0, _08004858 + ldr r0, =gUnknown_2025668 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 + .pool thumb_func_end InitInput thumb_func_start sub_800485C sub_800485C: push {r4,r5,lr} - ldr r2, _080048A8 - ldr r1, _080048AC + ldr r2, =gUnknown_2025638 + ldr r1, =gUnknown_20255F0 adds r0, r2, 0 ldm r0!, {r3-r5} stm r1!, {r3-r5} @@ -76,8 +70,8 @@ sub_800485C: strh r0, [r2, 0x2] strh r0, [r2, 0x4] strh r0, [r2, 0x6] - ldr r0, _080048B0 - ldr r1, _080048B4 + ldr r0, =gUnknown_2025600 + ldr r1, =0xffff strh r1, [r0] movs r1, 0x1 negs r1, r1 @@ -101,10 +95,7 @@ sub_800485C: pop {r0} bx r0 .align 2, 0 -_080048A8: .4byte gUnknown_2025638 -_080048AC: .4byte gUnknown_20255F0 -_080048B0: .4byte gUnknown_2025600 -_080048B4: .4byte 0x0000ffff + .pool thumb_func_end sub_800485C thumb_func_start sub_80048B8 @@ -145,49 +136,44 @@ sub_80048CC: thumb_func_start sub_80048D0 sub_80048D0: - ldr r1, _080048E8 + ldr r1, =gUnknown_20255F0 movs r0, 0 strh r0, [r1, 0x4] - ldr r1, _080048EC + ldr r1, =gUnknown_2025648 str r0, [r1, 0xC] strh r0, [r1, 0x8] - ldr r1, _080048F0 - ldr r0, _080048F4 + ldr r1, =gUnknown_2025668 + ldr r0, =0x3e7 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 + .pool thumb_func_end sub_80048D0 thumb_func_start sub_80048F8 sub_80048F8: - ldr r0, _08004908 + ldr r0, =gUnknown_20255F0 movs r1, 0 strh r1, [r0, 0x2] - ldr r0, _0800490C + ldr r0, =gUnknown_2025638 strh r1, [r0, 0x2] - ldr r0, _08004910 + ldr r0, =gUnknown_2025648 strh r1, [r0, 0x2] bx lr .align 2, 0 -_08004908: .4byte gUnknown_20255F0 -_0800490C: .4byte gUnknown_2025638 -_08004910: .4byte gUnknown_2025648 + .pool thumb_func_end sub_80048F8 thumb_func_start sub_8004914 sub_8004914: - ldr r0, _0800494C + ldr r0, =gUnknown_2025600 movs r1, 0x5 str r1, [r0, 0x20] movs r2, 0 movs r1, 0 strh r1, [r0, 0x24] - ldr r1, _08004950 + ldr r1, =0xffff strh r1, [r0] movs r1, 0x1 negs r1, r1 @@ -209,15 +195,14 @@ sub_8004914: strb r2, [r0] bx lr .align 2, 0 -_0800494C: .4byte gUnknown_2025600 -_08004950: .4byte 0x0000ffff + .pool thumb_func_end sub_8004914 thumb_func_start UpdateInput UpdateInput: push {r4-r6,lr} - ldr r4, _08004998 - ldr r5, _0800499C + ldr r4, =gUnknown_2025658 + ldr r5, =gUnknown_2025648 adds r1, r4, 0 adds r0, r5, 0 ldm r0!, {r2,r3,r6} @@ -249,8 +234,7 @@ UpdateInput: str r0, [r5, 0xC] b _080049AC .align 2, 0 -_08004998: .4byte gUnknown_2025658 -_0800499C: .4byte gUnknown_2025648 + .pool _080049A0: strh r2, [r5, 0x8] movs r0, 0x1 @@ -260,7 +244,7 @@ _080049A8: str r0, [r5, 0xC] strh r0, [r5, 0x8] _080049AC: - ldr r0, _080049C4 + ldr r0, =gUnknown_2025648 ldr r2, [r0, 0xC] adds r3, r0, 0 cmp r2, 0x1 @@ -273,7 +257,7 @@ _080049AC: strh r1, [r3, 0x4] b _080049E0 .align 2, 0 -_080049C4: .4byte gUnknown_2025648 + .pool _080049C8: cmp r2, 0x30 bne _080049DC @@ -300,7 +284,7 @@ _080049E0: lsrs r2, r0, 16 cmp r2, 0 beq _08004A0C - ldr r0, _08004A08 + ldr r0, =gUnknown_2025668 ldrh r2, [r0] movs r4, 0 ldrsh r1, [r0, r4] @@ -311,9 +295,9 @@ _080049E0: strh r0, [r4] b _08004A20 .align 2, 0 -_08004A08: .4byte gUnknown_2025668 + .pool _08004A0C: - ldr r1, _08004A44 + ldr r1, =gUnknown_2025668 ldrh r0, [r1] subs r0, 0x2 lsls r0, 16 @@ -343,7 +327,7 @@ _08004A20: strh r0, [r4, 0x2] b _08004A5E .align 2, 0 -_08004A44: .4byte gUnknown_2025668 + .pool _08004A48: ldrh r0, [r4, 0x2] subs r0, 0x2 @@ -358,7 +342,7 @@ _08004A48: _08004A5C: strh r2, [r4, 0x2] _08004A5E: - ldr r2, _08004A94 + ldr r2, =gUnknown_2025638 ldrh r0, [r2] ldrh r1, [r3] orrs r0, r1 @@ -375,9 +359,9 @@ _08004A5E: ldrh r1, [r3, 0x6] orrs r0, r1 strh r0, [r2, 0x6] - ldr r2, _08004A98 + ldr r2, =gUnknown_202562C ldrh r0, [r3] - ldr r1, _08004A9C + ldr r1, =0x054a1c41 orrs r0, r1 ldr r1, [r2] muls r0, r1 @@ -386,9 +370,7 @@ _08004A5E: pop {r0} bx r0 .align 2, 0 -_08004A94: .4byte gUnknown_2025638 -_08004A98: .4byte gUnknown_202562C -_08004A9C: .4byte 0x054a1c41 + .pool thumb_func_end UpdateInput .align 2, 0 @ Don't pad with nop. diff --git a/asm/m4a.s b/asm/m4a.s deleted file mode 100644 index 7133670..0000000 --- a/asm/m4a.s +++ /dev/null @@ -1,4625 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start umul3232H32 -umul3232H32: - adr r2, _080AE268 - bx r2 - .arm -_080AE268: - umull r2, r3, r0, r1 - add r0, r3, 0 - bx lr - thumb_func_end umul3232H32 - - thumb_func_start SoundMain -SoundMain: - ldr r0, _080AE2E0 - ldr r0, [r0] - ldr r2, _080AE2E4 - ldr r3, [r0] - cmp r2, r3 - beq _080AE282 - bx lr -_080AE282: - adds r3, 0x1 - str r3, [r0] - push {r4-r7,lr} - mov r1, r8 - mov r2, r9 - mov r3, r10 - mov r4, r11 - push {r0-r4} - sub sp, 0x18 - ldrb r1, [r0, 0xC] - cmp r1, 0 - beq _080AE2A6 - ldr r2, _080AE2EC - ldrb r2, [r2] - cmp r2, 0xA0 - bcs _080AE2A4 - adds r2, 0xE4 -_080AE2A4: - adds r1, r2 -_080AE2A6: - str r1, [sp, 0x14] - ldr r3, [r0, 0x20] - cmp r3, 0 - beq _080AE2B6 - ldr r0, [r0, 0x24] - bl call_r3 - ldr r0, [sp, 0x18] -_080AE2B6: - ldr r3, [r0, 0x28] - bl call_r3 - ldr r0, [sp, 0x18] - ldr r3, [r0, 0x10] - mov r8, r3 - ldr r5, _080AE2F0 - adds r5, r0 - ldrb r4, [r0, 0x4] - subs r7, r4, 0x1 - bls _080AE2D6 - ldrb r1, [r0, 0xB] - subs r1, r7 - mov r2, r8 - muls r2, r1 - adds r5, r2 -_080AE2D6: - str r5, [sp, 0x8] - ldr r6, _080AE2F4 - ldr r3, _080AE2E8 - bx r3 - .align 2, 0 -_080AE2E0: .4byte SOUND_INFO_PTR -_080AE2E4: .4byte 0x68736d53 -_080AE2E8: .4byte SoundMainRAM_Buffer + 1 -_080AE2EC: .4byte 0x04000006 -_080AE2F0: .4byte 0x00000350 -_080AE2F4: .4byte 0x00000630 - thumb_func_end SoundMain - - thumb_func_start sub_80AE2F8 -sub_80AE2F8: - ldrb r3, [r0, 0x5] - cmp r3, 0 - beq _080AE358 - adr r1, _080AE304 - bx r1 - .arm -_080AE304: - cmp r4, 0x2 - addeq r7, r0, 0x350 - addne r7, r5, r8 - mov r4, r8 -_080AE314: - ldrsb r0, [r5, r6] - ldrsb r1, [r5] - add r0, r0, r1 - ldrsb r1, [r7, r6] - add r0, r0, r1 - ldrsb r1, [r7], 0x1 - add r0, r0, r1 - mul r1, r0, r3 - mov r0, r1, asr 9 - tst r0, 0x80 - addne r0, r0, 0x1 - strb r0, [r5, r6] - strb r0, [r5], 0x1 - subs r4, r4, 0x1 - bgt _080AE314 - add r0, pc, 0x2F - bx r0 - .thumb -_080AE358: - movs r0, 0 - mov r1, r8 - adds r6, r5 - lsrs r1, 3 - bcc _080AE366 - stm r5!, {r0} - stm r6!, {r0} -_080AE366: - lsrs r1, 1 - bcc _080AE372 - stm r5!, {r0} - stm r6!, {r0} - stm r5!, {r0} - stm r6!, {r0} -_080AE372: - stm r5!, {r0} - stm r6!, {r0} - stm r5!, {r0} - stm r6!, {r0} - stm r5!, {r0} - stm r6!, {r0} - stm r5!, {r0} - stm r6!, {r0} - subs r1, 0x1 - bgt _080AE372 - ldr r4, [sp, 0x18] - ldr r0, [r4, 0x18] - mov r12, r0 - ldrb r0, [r4, 0x6] - adds r4, 0x50 -_080AE390: - str r0, [sp, 0x4] - ldr r3, [r4, 0x24] - ldr r0, [sp, 0x14] - cmp r0, 0 - beq _080AE3B0 - ldr r1, _080AE3AC - ldrb r1, [r1] - cmp r1, 0xA0 - bcs _080AE3A4 - adds r1, 0xE4 -_080AE3A4: - cmp r1, r0 - bcc _080AE3B0 - b _080AE682 - .align 2, 0 -_080AE3AC: .4byte 0x04000006 -_080AE3B0: - ldrb r6, [r4] - movs r0, 0xC7 - tst r0, r6 - bne _080AE3BA - b _080AE678 -_080AE3BA: - movs r0, 0x80 - tst r0, r6 - beq _080AE3EA - movs r0, 0x40 - tst r0, r6 - bne _080AE3FA - movs r6, 0x3 - strb r6, [r4] - adds r0, r3, 0 - adds r0, 0x10 - str r0, [r4, 0x28] - ldr r0, [r3, 0xC] - str r0, [r4, 0x18] - movs r5, 0 - strb r5, [r4, 0x9] - str r5, [r4, 0x1C] - ldrb r2, [r3, 0x3] - movs r0, 0xC0 - tst r0, r2 - beq _080AE442 - movs r0, 0x10 - orrs r6, r0 - strb r6, [r4] - b _080AE442 -_080AE3EA: - ldrb r5, [r4, 0x9] - movs r0, 0x4 - tst r0, r6 - beq _080AE400 - ldrb r0, [r4, 0xD] - subs r0, 0x1 - strb r0, [r4, 0xD] - bhi _080AE450 -_080AE3FA: - movs r0, 0 - strb r0, [r4] - b _080AE678 -_080AE400: - movs r0, 0x40 - tst r0, r6 - beq _080AE420 - ldrb r0, [r4, 0x7] - muls r5, r0 - lsrs r5, 8 - ldrb r0, [r4, 0xC] - cmp r5, r0 - bhi _080AE450 -_080AE412: - ldrb r5, [r4, 0xC] - cmp r5, 0 - beq _080AE3FA - movs r0, 0x4 - orrs r6, r0 - strb r6, [r4] - b _080AE450 -_080AE420: - movs r2, 0x3 - ands r2, r6 - cmp r2, 0x2 - bne _080AE43E - ldrb r0, [r4, 0x5] - muls r5, r0 - lsrs r5, 8 - ldrb r0, [r4, 0x6] - cmp r5, r0 - bhi _080AE450 - adds r5, r0, 0 - beq _080AE412 - subs r6, 0x1 - strb r6, [r4] - b _080AE450 -_080AE43E: - cmp r2, 0x3 - bne _080AE450 -_080AE442: - ldrb r0, [r4, 0x4] - adds r5, r0 - cmp r5, 0xFF - bcc _080AE450 - movs r5, 0xFF - subs r6, 0x1 - strb r6, [r4] -_080AE450: - strb r5, [r4, 0x9] - ldr r0, [sp, 0x18] - ldrb r0, [r0, 0x7] - adds r0, 0x1 - muls r0, r5 - lsrs r5, r0, 4 - ldrb r0, [r4, 0x2] - muls r0, r5 - lsrs r0, 8 - strb r0, [r4, 0xA] - ldrb r0, [r4, 0x3] - muls r0, r5 - lsrs r0, 8 - strb r0, [r4, 0xB] - movs r0, 0x10 - ands r0, r6 - str r0, [sp, 0x10] - beq _080AE484 - adds r0, r3, 0 - adds r0, 0x10 - ldr r1, [r3, 0x8] - adds r0, r1 - str r0, [sp, 0xC] - ldr r0, [r3, 0xC] - subs r0, r1 - str r0, [sp, 0x10] -_080AE484: - ldr r5, [sp, 0x8] - ldr r2, [r4, 0x18] - ldr r3, [r4, 0x28] - adr r0, _080AE490 - bx r0 - .arm -_080AE490: - str r8, [sp] - ldrb r10, [r4, 0xA] - ldrb r11, [r4, 0xB] - mov r10, r10, lsl 16 - mov r11, r11, lsl 16 - ldrb r0, [r4, 0x1] - tst r0, 0x8 - beq _080AE5D0 -_080AE4B0: - cmp r2, 0x4 - ble _080AE520 - subs r2, r2, r8 - movgt lr, 0 - bgt _080AE4DC - mov lr, r8 - add r2, r2, r8 - sub r8, r2, 0x4 - sub lr, lr, r8 - ands r2, r2, 0x3 - moveq r2, 0x4 -_080AE4DC: - ldr r6, [r5] - ldr r7, [r5, 0x630] -_080AE4E4: - ldrsb r0, [r3], 0x1 - mul r1, r10, r0 - bic r1, r1, 0xFF0000 - add r6, r1, r6, ror 8 - mul r1, r11, r0 - bic r1, r1, 0xFF0000 - add r7, r1, r7, ror 8 - adds r5, r5, 0x40000000 - bcc _080AE4E4 - str r7, [r5, 0x630] - str r6, [r5], 0x4 - subs r8, r8, 0x4 - bgt _080AE4DC - adds r8, r8, lr - beq _080AE664 -_080AE520: - ldr r6, [r5] - ldr r7, [r5, 0x630] -_080AE528: - ldrsb r0, [r3], 0x1 - mul r1, r10, r0 - bic r1, r1, 0xFF0000 - add r6, r1, r6, ror 8 - mul r1, r11, r0 - bic r1, r1, 0xFF0000 - add r7, r1, r7, ror 8 - subs r2, r2, 0x1 - beq _080AE598 -_080AE54C: - adds r5, r5, 0x40000000 - bcc _080AE528 - str r7, [r5, 0x630] - str r6, [r5], 0x4 - subs r8, r8, 0x4 - bgt _080AE4B0 - b _080AE664 -_080AE568: - ldr r0, [sp, 0x18] - cmp r0, 0 - beq _080AE58C - ldr r3, [sp, 0x14] - rsb r9, r2, 0 -_080AE57C: - adds r2, r0, r2 - bgt _080AE634 - sub r9, r9, r0 - b _080AE57C -_080AE58C: - ldmia sp!, {r4,r12} - mov r2, 0 - b _080AE5A8 -_080AE598: - ldr r2, [sp, 0x10] - cmp r2, 0 - ldrne r3, [sp, 0xC] - bne _080AE54C -_080AE5A8: - strb r2, [r4] - mov r0, r5, lsr 30 - bic r5, r5, 0xC0000000 - rsb r0, r0, 0x3 - mov r0, r0, lsl 3 - mov r6, r6, ror r0 - mov r7, r7, ror r0 - str r7, [r5, 0x630] - str r6, [r5], 0x4 - b _080AE66C -_080AE5D0: - stmdb sp!, {r4,r12} - ldr lr, [r4, 0x1C] - ldr r1, [r4, 0x20] - mul r4, r12, r1 - ldrsb r0, [r3] - ldrsb r1, [r3, 0x1]! - sub r1, r1, r0 -_080AE5EC: - ldr r6, [r5] - ldr r7, [r5, 0x630] -_080AE5F4: - mul r9, lr, r1 - add r9, r0, r9, asr 23 - mul r12, r10, r9 - bic r12, r12, 0xFF0000 - add r6, r12, r6, ror 8 - mul r12, r11, r9 - bic r12, r12, 0xFF0000 - add r7, r12, r7, ror 8 - add lr, lr, r4 - movs r9, lr, lsr 23 - beq _080AE640 - bic lr, lr, 0x3F800000 - subs r2, r2, r9 - ble _080AE568 - subs r9, r9, 0x1 - addeq r0, r0, r1 -_080AE634: - ldrsbne r0, [r3, r9]! - ldrsb r1, [r3, 0x1]! - sub r1, r1, r0 -_080AE640: - adds r5, r5, 0x40000000 - bcc _080AE5F4 - str r7, [r5, 0x630] - str r6, [r5], 0x4 - subs r8, r8, 0x4 - bgt _080AE5EC - sub r3, r3, 0x1 - ldmia sp!, {r4,r12} - str lr, [r4, 0x1C] -_080AE664: - str r2, [r4, 0x18] - str r3, [r4, 0x28] -_080AE66C: - ldr r8, [sp] - add r0, pc, 0x1 - bx r0 - .thumb -_080AE678: - ldr r0, [sp, 0x4] - subs r0, 0x1 - ble _080AE682 - adds r4, 0x40 - b _080AE390 -_080AE682: - ldr r0, [sp, 0x18] - ldr r3, _080AE698 - str r3, [r0] - add sp, 0x1C - pop {r0-r7} - mov r8, r0 - mov r9, r1 - mov r10, r2 - mov r11, r3 - pop {r3} - -call_r3: - bx r3 - - .align 2, 0 -_080AE698: .4byte 0x68736D53 - thumb_func_end sub_80AE2F8 - - thumb_func_start sub_80AE69C -sub_80AE69C: - mov r12, r4 - movs r1, 0 - movs r2, 0 - movs r3, 0 - movs r4, 0 - stm r0!, {r1-r4} - stm r0!, {r1-r4} - stm r0!, {r1-r4} - stm r0!, {r1-r4} - mov r4, r12 - bx lr - thumb_func_end sub_80AE69C - - thumb_func_start sub_80AE6B4 -sub_80AE6B4: - ldr r3, [r0, 0x2C] - cmp r3, 0 - beq _080AE6D2 - ldr r1, [r0, 0x34] - ldr r2, [r0, 0x30] - cmp r2, 0 - beq _080AE6C6 - str r1, [r2, 0x34] - b _080AE6C8 -_080AE6C6: - str r1, [r3, 0x20] -_080AE6C8: - cmp r1, 0 - beq _080AE6CE - str r2, [r1, 0x30] -_080AE6CE: - movs r1, 0 - str r1, [r0, 0x2C] -_080AE6D2: - bx lr - thumb_func_end sub_80AE6B4 - - thumb_func_start sub_80AE6D4 -sub_80AE6D4: - push {r4,r5,lr} - adds r5, r1, 0 - ldr r4, [r5, 0x20] - cmp r4, 0 - beq _080AE6F8 -_080AE6DE: - ldrb r1, [r4] - movs r0, 0xC7 - tst r0, r1 - beq _080AE6EC - movs r0, 0x40 - orrs r1, r0 - strb r1, [r4] -_080AE6EC: - adds r0, r4, 0 - bl sub_80AE6B4 - ldr r4, [r4, 0x34] - cmp r4, 0 - bne _080AE6DE -_080AE6F8: - movs r0, 0 - strb r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80AE6D4 - - thumb_func_start sub_80AE704 -sub_80AE704: - mov r12, lr - movs r1, 0x24 - ldr r2, _080AE734 -_080AE70A: - ldr r3, [r2] - bl _080AE71E - stm r0!, {r3} - adds r2, 0x4 - subs r1, 0x1 - bgt _080AE70A - bx r12 - thumb_func_end sub_80AE704 - - .align 2, 0 - .thumb_func -_080AE71C: - ldrb r3, [r2] - - .thumb_func -_080AE71E: - push {r0} - lsrs r0, r2, 25 - bne _080AE730 - ldr r0, _080AE734 - cmp r2, r0 - bcc _080AE72E - lsrs r0, r2, 14 - beq _080AE730 -_080AE72E: - movs r3, 0 -_080AE730: - pop {r0} - bx lr - .align 2, 0 -_080AE734: .4byte gUnknown_826F98C - - thumb_func_start sub_80AE738 -sub_80AE738: - ldr r2, [r1, 0x40] -_080AE73A: - adds r3, r2, 0x1 - str r3, [r1, 0x40] - ldrb r3, [r2] - b _080AE71E - thumb_func_end sub_80AE738 - - thumb_func_start sub_80AE744 -sub_80AE744: - push {lr} -_080AE746: - ldr r2, [r1, 0x40] - ldrb r0, [r2, 0x3] - lsls r0, 8 - ldrb r3, [r2, 0x2] - orrs r0, r3 - lsls r0, 8 - ldrb r3, [r2, 0x1] - orrs r0, r3 - lsls r0, 8 - bl _080AE71C - orrs r0, r3 - str r0, [r1, 0x40] - pop {r0} - bx r0 - thumb_func_end sub_80AE744 - - thumb_func_start sub_80AE764 -sub_80AE764: - ldrb r2, [r1, 0x2] - cmp r2, 0x3 - bcs _080AE77C - lsls r2, 2 - adds r3, r1, r2 - ldr r2, [r1, 0x40] - adds r2, 0x4 - str r2, [r3, 0x44] - ldrb r2, [r1, 0x2] - adds r2, 0x1 - strb r2, [r1, 0x2] - b sub_80AE744 -_080AE77C: - b sub_80AE6D4 - thumb_func_end sub_80AE764 - - thumb_func_start sub_80AE780 -sub_80AE780: - ldrb r2, [r1, 0x2] - cmp r2, 0 - beq _080AE792 - subs r2, 0x1 - strb r2, [r1, 0x2] - lsls r2, 2 - adds r3, r1, r2 - ldr r2, [r3, 0x44] - str r2, [r1, 0x40] -_080AE792: - bx lr - thumb_func_end sub_80AE780 - - thumb_func_start sub_80AE794 -sub_80AE794: - push {lr} - ldr r2, [r1, 0x40] - ldrb r3, [r2] - cmp r3, 0 - bne _080AE7A4 - adds r2, 0x1 - str r2, [r1, 0x40] - b _080AE746 -_080AE7A4: - ldrb r3, [r1, 0x3] - adds r3, 0x1 - strb r3, [r1, 0x3] - mov r12, r3 - bl sub_80AE738 - cmp r12, r3 - bcs _080AE7B6 - b _080AE746 -_080AE7B6: - movs r3, 0 - strb r3, [r1, 0x3] - adds r2, 0x5 - str r2, [r1, 0x40] - pop {r0} - bx r0 - thumb_func_end sub_80AE794 - - thumb_func_start sub_80AE7C4 -sub_80AE7C4: - mov r12, lr - bl sub_80AE738 - strb r3, [r1, 0x1D] - bx r12 - thumb_func_end sub_80AE7C4 - - thumb_func_start sub_80AE7D0 -sub_80AE7D0: - mov r12, lr - bl sub_80AE738 - lsls r3, 1 - strh r3, [r0, 0x1C] - ldrh r2, [r0, 0x1E] - muls r3, r2 - lsrs r3, 8 - strh r3, [r0, 0x20] - bx r12 - thumb_func_end sub_80AE7D0 - - thumb_func_start sub_80AE7E4 -sub_80AE7E4: - mov r12, lr - bl sub_80AE738 - strb r3, [r1, 0xA] - ldrb r3, [r1] - movs r2, 0xC - orrs r3, r2 - strb r3, [r1] - bx r12 - thumb_func_end sub_80AE7E4 - - thumb_func_start sub_80AE7F8 -sub_80AE7F8: - mov r12, lr - ldr r2, [r1, 0x40] - ldrb r3, [r2] - adds r2, 0x1 - str r2, [r1, 0x40] - lsls r2, r3, 1 - adds r2, r3 - lsls r2, 2 - ldr r3, [r0, 0x30] - adds r2, r3 - ldr r3, [r2] - bl _080AE71E - str r3, [r1, 0x24] - ldr r3, [r2, 0x4] - bl _080AE71E - str r3, [r1, 0x28] - ldr r3, [r2, 0x8] - bl _080AE71E - str r3, [r1, 0x2C] - bx r12 - thumb_func_end sub_80AE7F8 - - thumb_func_start sub_80AE828 -sub_80AE828: - mov r12, lr - bl sub_80AE738 - strb r3, [r1, 0x12] - ldrb r3, [r1] - movs r2, 0x3 - orrs r3, r2 - strb r3, [r1] - bx r12 - thumb_func_end sub_80AE828 - - thumb_func_start sub_80AE83C -sub_80AE83C: - mov r12, lr - bl sub_80AE738 - subs r3, 0x40 - strb r3, [r1, 0x14] - ldrb r3, [r1] - movs r2, 0x3 - orrs r3, r2 - strb r3, [r1] - bx r12 - thumb_func_end sub_80AE83C - - thumb_func_start sub_80AE850 -sub_80AE850: - mov r12, lr - bl sub_80AE738 - subs r3, 0x40 - strb r3, [r1, 0xE] - ldrb r3, [r1] - movs r2, 0xC - orrs r3, r2 - strb r3, [r1] - bx r12 - thumb_func_end sub_80AE850 - - thumb_func_start sub_80AE864 -sub_80AE864: - mov r12, lr - bl sub_80AE738 - strb r3, [r1, 0xF] - ldrb r3, [r1] - movs r2, 0xC - orrs r3, r2 - strb r3, [r1] - bx r12 - thumb_func_end sub_80AE864 - - thumb_func_start sub_80AE878 -sub_80AE878: - mov r12, lr - bl sub_80AE738 - strb r3, [r1, 0x1B] - bx r12 - thumb_func_end sub_80AE878 - - thumb_func_start sub_80AE884 -sub_80AE884: - mov r12, lr - bl sub_80AE738 - ldrb r0, [r1, 0x18] - cmp r0, r3 - beq _080AE89A - strb r3, [r1, 0x18] - ldrb r3, [r1] - movs r2, 0xF - orrs r3, r2 - strb r3, [r1] -_080AE89A: - bx r12 - thumb_func_end sub_80AE884 - - thumb_func_start sub_80AE89C -sub_80AE89C: - mov r12, lr - bl sub_80AE738 - subs r3, 0x40 - strb r3, [r1, 0xC] - ldrb r3, [r1] - movs r2, 0xC - orrs r3, r2 - strb r3, [r1] - bx r12 - thumb_func_end sub_80AE89C - - thumb_func_start sub_80AE8B0 -sub_80AE8B0: - mov r12, lr - ldr r2, [r1, 0x40] - ldrb r3, [r2] - adds r2, 0x1 - ldr r0, _080AE8C4 - adds r0, r3 - bl _080AE73A - strb r3, [r0] - bx r12 - .align 2, 0 -_080AE8C4: .4byte 0x04000060 - thumb_func_end sub_80AE8B0 - - thumb_func_start m4aSoundVSync -m4aSoundVSync: - ldr r0, _080AEB74 - ldr r0, [r0] - ldr r2, _080AEB78 - ldr r3, [r0] - subs r3, r2 - cmp r3, 0x1 - bhi _080AE908 - ldrb r1, [r0, 0x4] - subs r1, 0x1 - strb r1, [r0, 0x4] - bgt _080AE908 - ldrb r1, [r0, 0xB] - strb r1, [r0, 0x4] - ldr r2, _080AE90C - ldr r1, [r2, 0x8] - lsls r1, 7 - bcc _080AE8EE - ldr r1, _080AE910 - str r1, [r2, 0x8] -_080AE8EE: - ldr r1, [r2, 0x14] - lsls r1, 7 - bcc _080AE8F8 - ldr r1, _080AE910 - str r1, [r2, 0x14] -_080AE8F8: - movs r1, 0x4 - lsls r1, 8 - strh r1, [r2, 0xA] - strh r1, [r2, 0x16] - movs r1, 0xB6 - lsls r1, 8 - strh r1, [r2, 0xA] - strh r1, [r2, 0x16] -_080AE908: - bx lr - .align 2, 0 -_080AE90C: .4byte 0x040000bc -_080AE910: .4byte 0x84400004 - thumb_func_end m4aSoundVSync - - thumb_func_start sub_80AE914 -sub_80AE914: - ldr r2, _080AEB78 - ldr r3, [r0, 0x34] - cmp r2, r3 - beq _080AE91E - bx lr -_080AE91E: - adds r3, 0x1 - str r3, [r0, 0x34] - push {r0,lr} - ldr r3, [r0, 0x38] - cmp r3, 0 - beq _080AE930 - ldr r0, [r0, 0x3C] - bl _080AEB6C -_080AE930: - pop {r0} - push {r4-r7} - mov r4, r8 - mov r5, r9 - mov r6, r10 - mov r7, r11 - push {r4-r7} - adds r7, r0, 0 - ldr r0, [r7, 0x4] - cmp r0, 0 - bge _080AE948 - b _080AEB5C -_080AE948: - ldr r0, _080AEB74 - ldr r0, [r0] - mov r8, r0 - adds r0, r7, 0 - bl sub_80AF800 - ldr r0, [r7, 0x4] - cmp r0, 0 - bge _080AE95C - b _080AEB5C -_080AE95C: - ldrh r0, [r7, 0x22] - ldrh r1, [r7, 0x20] - adds r0, r1 - b _080AEAAC -_080AE964: - ldrb r6, [r7, 0x8] - ldr r5, [r7, 0x2C] - movs r3, 0x1 - movs r4, 0 -_080AE96C: - ldrb r0, [r5] - movs r1, 0x80 - tst r1, r0 - bne _080AE976 - b _080AEA88 -_080AE976: - mov r10, r3 - orrs r4, r3 - mov r11, r4 - ldr r4, [r5, 0x20] - cmp r4, 0 - beq _080AE9AA -_080AE982: - ldrb r1, [r4] - movs r0, 0xC7 - tst r0, r1 - beq _080AE99E - ldrb r0, [r4, 0x10] - cmp r0, 0 - beq _080AE9A4 - subs r0, 0x1 - strb r0, [r4, 0x10] - bne _080AE9A4 - movs r0, 0x40 - orrs r1, r0 - strb r1, [r4] - b _080AE9A4 -_080AE99E: - adds r0, r4, 0 - bl sub_80AF2FC -_080AE9A4: - ldr r4, [r4, 0x34] - cmp r4, 0 - bne _080AE982 -_080AE9AA: - ldrb r3, [r5] - movs r0, 0x40 - tst r0, r3 - beq _080AEA28 - adds r0, r5, 0 - bl sub_80AF310 - movs r0, 0x80 - strb r0, [r5] - movs r0, 0x2 - strb r0, [r5, 0xF] - movs r0, 0x40 - strb r0, [r5, 0x13] - movs r0, 0x16 - strb r0, [r5, 0x19] - movs r0, 0x1 - adds r1, r5, 0x6 - strb r0, [r1, 0x1E] - b _080AEA28 -_080AE9D0: - ldr r2, [r5, 0x40] - ldrb r1, [r2] - cmp r1, 0x80 - bcs _080AE9DC - ldrb r1, [r5, 0x7] - b _080AE9E6 -_080AE9DC: - adds r2, 0x1 - str r2, [r5, 0x40] - cmp r1, 0xBD - bcc _080AE9E6 - strb r1, [r5, 0x7] -_080AE9E6: - cmp r1, 0xCF - bcc _080AE9FC - mov r0, r8 - ldr r3, [r0, 0x38] - adds r0, r1, 0 - subs r0, 0xCF - adds r1, r7, 0 - adds r2, r5, 0 - bl _080AEB6C - b _080AEA28 -_080AE9FC: - cmp r1, 0xB0 - bls _080AEA1E - adds r0, r1, 0 - subs r0, 0xB1 - strb r0, [r7, 0xA] - mov r3, r8 - ldr r3, [r3, 0x34] - lsls r0, 2 - ldr r3, [r3, r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl _080AEB6C - ldrb r0, [r5] - cmp r0, 0 - beq _080AEA84 - b _080AEA28 -_080AEA1E: - ldr r0, _080AEB70 - subs r1, 0x80 - adds r1, r0 - ldrb r0, [r1] - strb r0, [r5, 0x1] -_080AEA28: - ldrb r0, [r5, 0x1] - cmp r0, 0 - beq _080AE9D0 - subs r0, 0x1 - strb r0, [r5, 0x1] - ldrb r1, [r5, 0x19] - cmp r1, 0 - beq _080AEA84 - ldrb r0, [r5, 0x17] - cmp r0, 0 - beq _080AEA84 - ldrb r0, [r5, 0x1C] - cmp r0, 0 - beq _080AEA4A - subs r0, 0x1 - strb r0, [r5, 0x1C] - b _080AEA84 -_080AEA4A: - ldrb r0, [r5, 0x1A] - adds r0, r1 - strb r0, [r5, 0x1A] - adds r1, r0, 0 - subs r0, 0x40 - lsls r0, 24 - bpl _080AEA5E - lsls r2, r1, 24 - asrs r2, 24 - b _080AEA62 -_080AEA5E: - movs r0, 0x80 - subs r2, r0, r1 -_080AEA62: - ldrb r0, [r5, 0x17] - muls r0, r2 - asrs r2, r0, 6 - ldrb r0, [r5, 0x16] - eors r0, r2 - lsls r0, 24 - beq _080AEA84 - strb r2, [r5, 0x16] - ldrb r0, [r5] - ldrb r1, [r5, 0x18] - cmp r1, 0 - bne _080AEA7E - movs r1, 0xC - b _080AEA80 -_080AEA7E: - movs r1, 0x3 -_080AEA80: - orrs r0, r1 - strb r0, [r5] -_080AEA84: - mov r3, r10 - mov r4, r11 -_080AEA88: - subs r6, 0x1 - ble _080AEA94 - movs r0, 0x50 - adds r5, r0 - lsls r3, 1 - b _080AE96C -_080AEA94: - ldr r0, [r7, 0xC] - adds r0, 0x1 - str r0, [r7, 0xC] - cmp r4, 0 - bne _080AEAA6 - movs r0, 0x80 - lsls r0, 24 - str r0, [r7, 0x4] - b _080AEB5C -_080AEAA6: - str r4, [r7, 0x4] - ldrh r0, [r7, 0x22] - subs r0, 0x96 -_080AEAAC: - strh r0, [r7, 0x22] - cmp r0, 0x96 - bcc _080AEAB4 - b _080AE964 -_080AEAB4: - ldrb r2, [r7, 0x8] - ldr r5, [r7, 0x2C] -_080AEAB8: - ldrb r0, [r5] - movs r1, 0x80 - tst r1, r0 - beq _080AEB52 - movs r1, 0xF - tst r1, r0 - beq _080AEB52 - mov r9, r2 - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80AF8C8 - ldr r4, [r5, 0x20] - cmp r4, 0 - beq _080AEB48 -_080AEAD6: - ldrb r1, [r4] - movs r0, 0xC7 - tst r0, r1 - bne _080AEAE6 - adds r0, r4, 0 - bl sub_80AF2FC - b _080AEB42 -_080AEAE6: - ldrb r0, [r4, 0x1] - movs r6, 0x7 - ands r6, r0 - ldrb r3, [r5] - movs r0, 0x3 - tst r0, r3 - beq _080AEB04 - bl sub_80AEBC0 - cmp r6, 0 - beq _080AEB04 - ldrb r0, [r4, 0x1D] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1D] -_080AEB04: - ldrb r3, [r5] - movs r0, 0xC - tst r0, r3 - beq _080AEB42 - ldrb r1, [r4, 0x8] - movs r0, 0x8 - ldrsb r0, [r5, r0] - adds r2, r1, r0 - bpl _080AEB18 - movs r2, 0 -_080AEB18: - cmp r6, 0 - beq _080AEB36 - mov r0, r8 - ldr r3, [r0, 0x30] - adds r1, r2, 0 - ldrb r2, [r5, 0x9] - adds r0, r6, 0 - bl _080AEB6C - str r0, [r4, 0x20] - ldrb r0, [r4, 0x1D] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4, 0x1D] - b _080AEB42 -_080AEB36: - adds r1, r2, 0 - ldrb r2, [r5, 0x9] - ldr r0, [r4, 0x24] - bl sub_80AEE80 - str r0, [r4, 0x20] -_080AEB42: - ldr r4, [r4, 0x34] - cmp r4, 0 - bne _080AEAD6 -_080AEB48: - ldrb r0, [r5] - movs r1, 0xF0 - ands r0, r1 - strb r0, [r5] - mov r2, r9 -_080AEB52: - subs r2, 0x1 - ble _080AEB5C - movs r0, 0x50 - adds r5, r0 - bgt _080AEAB8 -_080AEB5C: - ldr r0, _080AEB78 - str r0, [r7, 0x34] - pop {r0-r7} - mov r8, r0 - mov r9, r1 - mov r10, r2 - mov r11, r3 - pop {r3} -_080AEB6C: - bx r3 - .align 2, 0 -_080AEB70: .4byte gUnknown_826FC00 -_080AEB74: .4byte SOUND_INFO_PTR -_080AEB78: .4byte 0x68736d53 - thumb_func_end sub_80AE914 - - thumb_func_start sub_80AEB7C -sub_80AEB7C: - push {r4-r6,lr} - adds r5, r1, 0 - ldrb r1, [r5] - movs r0, 0x80 - tst r0, r1 - beq _080AEBB4 - ldr r4, [r5, 0x20] - cmp r4, 0 - beq _080AEBB2 - movs r6, 0 -_080AEB90: - ldrb r0, [r4] - cmp r0, 0 - beq _080AEBAA - ldrb r0, [r4, 0x1] - movs r3, 0x7 - ands r0, r3 - beq _080AEBA8 - ldr r3, _080AEBBC - ldr r3, [r3] - ldr r3, [r3, 0x2C] - bl _080AEB6C -_080AEBA8: - strb r6, [r4] -_080AEBAA: - str r6, [r4, 0x2C] - ldr r4, [r4, 0x34] - cmp r4, 0 - bne _080AEB90 -_080AEBB2: - str r4, [r5, 0x20] -_080AEBB4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AEBBC: .4byte SOUND_INFO_PTR - thumb_func_end sub_80AEB7C - - thumb_func_start sub_80AEBC0 -sub_80AEBC0: - ldrb r1, [r4, 0x12] - movs r0, 0x14 - ldrsb r2, [r4, r0] - movs r3, 0x80 - adds r3, r2 - muls r3, r1 - ldrb r0, [r5, 0x10] - muls r0, r3 - asrs r0, 14 - cmp r0, 0xFF - bls _080AEBD8 - movs r0, 0xFF -_080AEBD8: - strb r0, [r4, 0x2] - movs r3, 0x7F - subs r3, r2 - muls r3, r1 - ldrb r0, [r5, 0x11] - muls r0, r3 - asrs r0, 14 - cmp r0, 0xFF - bls _080AEBEC - movs r0, 0xFF -_080AEBEC: - strb r0, [r4, 0x3] - bx lr - thumb_func_end sub_80AEBC0 - - thumb_func_start sub_80AEBF0 -sub_80AEBF0: - push {r4-r7,lr} - mov r4, r8 - mov r5, r9 - mov r6, r10 - mov r7, r11 - push {r4-r7} - sub sp, 0x18 - str r1, [sp] - adds r5, r2, 0 - ldr r1, _080AEDE8 - ldr r1, [r1] - str r1, [sp, 0x4] - ldr r1, _080AEDEC - adds r0, r1 - ldrb r0, [r0] - strb r0, [r5, 0x4] - ldr r3, [r5, 0x40] - ldrb r0, [r3] - cmp r0, 0x80 - bcs _080AEC36 - strb r0, [r5, 0x5] - adds r3, 0x1 - ldrb r0, [r3] - cmp r0, 0x80 - bcs _080AEC34 - strb r0, [r5, 0x6] - adds r3, 0x1 - ldrb r0, [r3] - cmp r0, 0x80 - bcs _080AEC34 - ldrb r1, [r5, 0x4] - adds r1, r0 - strb r1, [r5, 0x4] - adds r3, 0x1 -_080AEC34: - str r3, [r5, 0x40] -_080AEC36: - movs r0, 0 - str r0, [sp, 0x14] - adds r4, r5, 0 - adds r4, 0x24 - ldrb r2, [r4] - movs r0, 0xC0 - tst r0, r2 - beq _080AEC88 - ldrb r3, [r5, 0x5] - movs r0, 0x40 - tst r0, r2 - beq _080AEC56 - ldr r1, [r5, 0x2C] - adds r1, r3 - ldrb r0, [r1] - b _080AEC58 -_080AEC56: - adds r0, r3, 0 -_080AEC58: - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, [r5, 0x28] - adds r1, r0 - mov r9, r1 - mov r6, r9 - ldrb r1, [r6] - movs r0, 0xC0 - tst r0, r1 - beq _080AEC70 - b _080AEDD6 -_080AEC70: - movs r0, 0x80 - tst r0, r2 - beq _080AEC8C - ldrb r1, [r6, 0x3] - movs r0, 0x80 - tst r0, r1 - beq _080AEC84 - subs r1, 0xC0 - lsls r1, 1 - str r1, [sp, 0x14] -_080AEC84: - ldrb r3, [r6, 0x1] - b _080AEC8C -_080AEC88: - mov r9, r4 - ldrb r3, [r5, 0x5] -_080AEC8C: - str r3, [sp, 0x8] - ldr r6, [sp] - ldrb r1, [r6, 0x9] - ldrb r0, [r5, 0x1D] - adds r0, r1 - cmp r0, 0xFF - bls _080AEC9C - movs r0, 0xFF -_080AEC9C: - str r0, [sp, 0x10] - mov r6, r9 - ldrb r0, [r6] - movs r6, 0x7 - ands r6, r0 - str r6, [sp, 0xC] - beq _080AECDC - ldr r0, [sp, 0x4] - ldr r4, [r0, 0x1C] - cmp r4, 0 - bne _080AECB4 - b _080AEDD6 -_080AECB4: - subs r6, 0x1 - lsls r0, r6, 6 - adds r4, r0 - ldrb r1, [r4] - movs r0, 0xC7 - tst r0, r1 - beq _080AED30 - movs r0, 0x40 - tst r0, r1 - bne _080AED30 - ldrb r1, [r4, 0x13] - ldr r0, [sp, 0x10] - cmp r1, r0 - bcc _080AED30 - beq _080AECD4 - b _080AEDD6 -_080AECD4: - ldr r0, [r4, 0x2C] - cmp r0, r5 - bcs _080AED30 - b _080AEDD6 -_080AECDC: - ldr r6, [sp, 0x10] - adds r7, r5, 0 - movs r2, 0 - mov r8, r2 - ldr r4, [sp, 0x4] - ldrb r3, [r4, 0x6] - adds r4, 0x50 -_080AECEA: - ldrb r1, [r4] - movs r0, 0xC7 - tst r0, r1 - beq _080AED30 - movs r0, 0x40 - tst r0, r1 - beq _080AED04 - cmp r2, 0 - bne _080AED08 - adds r2, 0x1 - ldrb r6, [r4, 0x13] - ldr r7, [r4, 0x2C] - b _080AED22 -_080AED04: - cmp r2, 0 - bne _080AED24 -_080AED08: - ldrb r0, [r4, 0x13] - cmp r0, r6 - bcs _080AED14 - adds r6, r0, 0 - ldr r7, [r4, 0x2C] - b _080AED22 -_080AED14: - bhi _080AED24 - ldr r0, [r4, 0x2C] - cmp r0, r7 - bls _080AED20 - adds r7, r0, 0 - b _080AED22 -_080AED20: - bcc _080AED24 -_080AED22: - mov r8, r4 -_080AED24: - adds r4, 0x40 - subs r3, 0x1 - bgt _080AECEA - mov r4, r8 - cmp r4, 0 - beq _080AEDD6 -_080AED30: - adds r0, r4, 0 - bl sub_80AF2FC - movs r1, 0 - str r1, [r4, 0x30] - ldr r3, [r5, 0x20] - str r3, [r4, 0x34] - cmp r3, 0 - beq _080AED44 - str r4, [r3, 0x30] -_080AED44: - str r4, [r5, 0x20] - str r5, [r4, 0x2C] - ldrb r0, [r5, 0x1B] - strb r0, [r5, 0x1C] - cmp r0, r1 - beq _080AED56 - adds r1, r5, 0 - bl sub_80AEE30 -_080AED56: - ldr r0, [sp] - adds r1, r5, 0 - bl sub_80AF8C8 - ldr r0, [r5, 0x4] - str r0, [r4, 0x10] - ldr r0, [sp, 0x10] - strb r0, [r4, 0x13] - ldr r0, [sp, 0x8] - strb r0, [r4, 0x8] - ldr r0, [sp, 0x14] - strb r0, [r4, 0x14] - mov r6, r9 - ldrb r0, [r6] - strb r0, [r4, 0x1] - ldr r7, [r6, 0x4] - str r7, [r4, 0x24] - ldr r0, [r6, 0x8] - str r0, [r4, 0x4] - ldrh r0, [r5, 0x1E] - strh r0, [r4, 0xC] - bl sub_80AEBC0 - ldrb r1, [r4, 0x8] - movs r0, 0x8 - ldrsb r0, [r5, r0] - adds r3, r1, r0 - bpl _080AED90 - movs r3, 0 -_080AED90: - ldr r6, [sp, 0xC] - cmp r6, 0 - beq _080AEDBE - mov r6, r9 - ldrb r0, [r6, 0x2] - strb r0, [r4, 0x1E] - ldrb r1, [r6, 0x3] - movs r0, 0x80 - tst r0, r1 - bne _080AEDAA - movs r0, 0x70 - tst r0, r1 - bne _080AEDAC -_080AEDAA: - movs r1, 0x8 -_080AEDAC: - strb r1, [r4, 0x1F] - ldrb r2, [r5, 0x9] - adds r1, r3, 0 - ldr r0, [sp, 0xC] - ldr r3, [sp, 0x4] - ldr r3, [r3, 0x30] - bl _080AEB6C - b _080AEDC8 -_080AEDBE: - ldrb r2, [r5, 0x9] - adds r1, r3, 0 - adds r0, r7, 0 - bl sub_80AEE80 -_080AEDC8: - str r0, [r4, 0x20] - movs r0, 0x80 - strb r0, [r4] - ldrb r1, [r5] - movs r0, 0xF0 - ands r0, r1 - strb r0, [r5] -_080AEDD6: - add sp, 0x18 - pop {r0-r7} - mov r8, r0 - mov r9, r1 - mov r10, r2 - mov r11, r3 - pop {r0} - bx r0 - .align 2, 0 -_080AEDE8: .4byte SOUND_INFO_PTR -_080AEDEC: .4byte gUnknown_826FC00 - thumb_func_end sub_80AEBF0 - - thumb_func_start sub_80AEDF0 -sub_80AEDF0: - push {r4,r5} - ldr r2, [r1, 0x40] - ldrb r3, [r2] - cmp r3, 0x80 - bcs _080AEE02 - strb r3, [r1, 0x5] - adds r2, 0x1 - str r2, [r1, 0x40] - b _080AEE04 -_080AEE02: - ldrb r3, [r1, 0x5] -_080AEE04: - ldr r1, [r1, 0x20] - cmp r1, 0 - beq _080AEE2C - movs r4, 0x83 - movs r5, 0x40 -_080AEE0E: - ldrb r2, [r1] - tst r2, r4 - beq _080AEE26 - tst r2, r5 - bne _080AEE26 - ldrb r0, [r1, 0x11] - cmp r0, r3 - bne _080AEE26 - movs r0, 0x40 - orrs r2, r0 - strb r2, [r1] - b _080AEE2C -_080AEE26: - ldr r1, [r1, 0x34] - cmp r1, 0 - bne _080AEE0E -_080AEE2C: - pop {r4,r5} - bx lr - thumb_func_end sub_80AEDF0 - - thumb_func_start sub_80AEE30 -sub_80AEE30: - movs r2, 0 - strb r2, [r1, 0x16] - strb r2, [r1, 0x1A] - ldrb r2, [r1, 0x18] - cmp r2, 0 - bne _080AEE40 - movs r2, 0xC - b _080AEE42 -_080AEE40: - movs r2, 0x3 -_080AEE42: - ldrb r3, [r1] - orrs r3, r2 - strb r3, [r1] - bx lr - thumb_func_end sub_80AEE30 - - thumb_func_start sub_80AEE4C -sub_80AEE4C: - ldr r2, [r1, 0x40] - adds r3, r2, 0x1 - str r3, [r1, 0x40] - ldrb r3, [r2] - bx lr - thumb_func_end sub_80AEE4C - - thumb_func_start sub_80AEE58 -sub_80AEE58: - mov r12, lr - bl sub_80AEE4C - strb r3, [r1, 0x19] - cmp r3, 0 - bne _080AEE68 - bl sub_80AEE30 -_080AEE68: - bx r12 - thumb_func_end sub_80AEE58 - - thumb_func_start sub_80AEE6C -sub_80AEE6C: - mov r12, lr - bl sub_80AEE4C - strb r3, [r1, 0x17] - cmp r3, 0 - bne _080AEE7C - bl sub_80AEE30 -_080AEE7C: - bx r12 - thumb_func_end sub_80AEE6C - - thumb_func_start sub_80AEE80 -sub_80AEE80: - push {r4-r7,lr} - mov r12, r0 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r7, r2, 24 - cmp r6, 0xB2 - bls _080AEE94 - movs r6, 0xB2 - movs r7, 0xFF - lsls r7, 24 -_080AEE94: - ldr r3, _080AEEDC - adds r0, r6, r3 - ldrb r5, [r0] - ldr r4, _080AEEE0 - movs r2, 0xF - adds r0, r5, 0 - ands r0, r2 - lsls r0, 2 - adds r0, r4 - lsrs r1, r5, 4 - ldr r5, [r0] - lsrs r5, r1 - adds r0, r6, 0x1 - adds r0, r3 - ldrb r1, [r0] - adds r0, r1, 0 - ands r0, r2 - lsls r0, 2 - adds r0, r4 - lsrs r1, 4 - ldr r0, [r0] - lsrs r0, r1 - mov r1, r12 - ldr r4, [r1, 0x4] - subs r0, r5 - adds r1, r7, 0 - bl umul3232H32 - adds r1, r0, 0 - adds r1, r5, r1 - adds r0, r4, 0 - bl umul3232H32 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080AEEDC: .4byte gUnknown_826FA1C -_080AEEE0: .4byte gUnknown_826FAD0 - thumb_func_end sub_80AEE80 - - thumb_func_start nullsub_212 -nullsub_212: - bx lr - thumb_func_end nullsub_212 - - thumb_func_start sub_80AEEE8 -sub_80AEEE8: - adds r2, r0, 0 - ldr r3, [r2, 0x34] - ldr r0, _080AEEFC - cmp r3, r0 - bne _080AEEFA - ldr r0, [r2, 0x4] - ldr r1, _080AEF00 - ands r0, r1 - str r0, [r2, 0x4] -_080AEEFA: - bx lr - .align 2, 0 -_080AEEFC: .4byte 0x68736d53 -_080AEF00: .4byte 0x7fffffff - thumb_func_end sub_80AEEE8 - - thumb_func_start sub_80AEF04 -sub_80AEF04: - adds r2, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r3, [r2, 0x34] - ldr r0, _080AEF20 - cmp r3, r0 - bne _080AEF1C - strh r1, [r2, 0x26] - strh r1, [r2, 0x24] - movs r0, 0x80 - lsls r0, 1 - strh r0, [r2, 0x28] -_080AEF1C: - bx lr - .align 2, 0 -_080AEF20: .4byte 0x68736d53 - thumb_func_end sub_80AEF04 - - thumb_func_start sub_80AEF24 -sub_80AEF24: - push {r4-r6,lr} - ldr r0, _080AEF78 - movs r1, 0x2 - negs r1, r1 - ands r0, r1 - ldr r1, _080AEF7C - ldr r2, _080AEF80 - bl CpuSet - ldr r0, _080AEF84 - bl sub_80AF324 - ldr r0, _080AEF88 - bl sub_80AF1E0 - ldr r0, _080AEF8C - bl sub_80AF4C0 - ldr r0, _080AEF90 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080AEF72 - ldr r5, _080AEF94 - adds r6, r0, 0 -_080AEF56: - ldr r4, [r5] - ldr r1, [r5, 0x4] - ldrb r2, [r5, 0x8] - adds r0, r4, 0 - bl sub_80AF664 - ldrh r0, [r5, 0xA] - strb r0, [r4, 0xB] - ldr r0, _080AEF98 - str r0, [r4, 0x18] - adds r5, 0xC - subs r6, 0x1 - cmp r6, 0 - bne _080AEF56 -_080AEF72: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AEF78: .4byte sub_80AE2F8 -_080AEF7C: .4byte SoundMainRAM_Buffer -_080AEF80: .4byte 0x04000100 -_080AEF84: .4byte gUnknown_2039ED0 -_080AEF88: .4byte gUnknown_203AF10 -_080AEF8C: .4byte 0x0096e500 -_080AEF90: .4byte 0x00000008 -_080AEF94: .4byte 0x09e8665c -_080AEF98: .4byte gUnknown_2000A30 - thumb_func_end sub_80AEF24 - - thumb_func_start m4aSoundMain -m4aSoundMain: - push {lr} - bl SoundMain - pop {r0} - bx r0 - thumb_func_end m4aSoundMain - - thumb_func_start sub_80AEFA8 -sub_80AEFA8: - push {lr} - lsls r0, 16 - ldr r2, _080AEFCC - ldr r1, _080AEFD0 - lsrs r0, 13 - adds r0, r1 - ldrh r3, [r0, 0x4] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r2 - ldr r2, [r1] - ldr r1, [r0] - adds r0, r2, 0 - bl sub_80AF6DC - pop {r0} - bx r0 - .align 2, 0 -_080AEFCC: .4byte 0x09e8665c -_080AEFD0: .4byte 0x09e866bc - thumb_func_end sub_80AEFA8 - - thumb_func_start sub_80AEFD4 -sub_80AEFD4: - push {lr} - lsls r0, 16 - ldr r2, _080AF000 - ldr r1, _080AF004 - lsrs r0, 13 - adds r0, r1 - ldrh r3, [r0, 0x4] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - ldr r3, [r1] - ldr r2, [r0] - cmp r3, r2 - beq _080AF008 - adds r0, r1, 0 - adds r1, r2, 0 - bl sub_80AF6DC - b _080AF01C - .align 2, 0 -_080AF000: .4byte 0x09e8665c -_080AF004: .4byte 0x09e866bc -_080AF008: - ldr r2, [r1, 0x4] - ldrh r0, [r1, 0x4] - cmp r0, 0 - beq _080AF014 - cmp r2, 0 - bge _080AF01C -_080AF014: - adds r0, r1, 0 - adds r1, r3, 0 - bl sub_80AF6DC -_080AF01C: - pop {r0} - bx r0 - thumb_func_end sub_80AEFD4 - - thumb_func_start sub_80AF020 -sub_80AF020: - push {lr} - lsls r0, 16 - ldr r2, _080AF04C - ldr r1, _080AF050 - lsrs r0, 13 - adds r0, r1 - ldrh r3, [r0, 0x4] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - ldr r3, [r1] - ldr r2, [r0] - cmp r3, r2 - beq _080AF054 - adds r0, r1, 0 - adds r1, r2, 0 - bl sub_80AF6DC - b _080AF070 - .align 2, 0 -_080AF04C: .4byte 0x09e8665c -_080AF050: .4byte 0x09e866bc -_080AF054: - ldr r2, [r1, 0x4] - ldrh r0, [r1, 0x4] - cmp r0, 0 - bne _080AF066 - adds r0, r1, 0 - adds r1, r3, 0 - bl sub_80AF6DC - b _080AF070 -_080AF066: - cmp r2, 0 - bge _080AF070 - adds r0, r1, 0 - bl sub_80AEEE8 -_080AF070: - pop {r0} - bx r0 - thumb_func_end sub_80AF020 - - thumb_func_start sub_80AF074 -sub_80AF074: - push {lr} - lsls r0, 16 - ldr r2, _080AF0A0 - ldr r1, _080AF0A4 - lsrs r0, 13 - adds r0, r1 - ldrh r3, [r0, 0x4] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r2 - ldr r2, [r1] - ldr r1, [r2] - ldr r0, [r0] - cmp r1, r0 - bne _080AF09A - adds r0, r2, 0 - bl sub_80AF7C0 -_080AF09A: - pop {r0} - bx r0 - .align 2, 0 -_080AF0A0: .4byte 0x09e8665c -_080AF0A4: .4byte 0x09e866bc - thumb_func_end sub_80AF074 - - thumb_func_start sub_80AF0A8 -sub_80AF0A8: - push {lr} - lsls r0, 16 - ldr r2, _080AF0D4 - ldr r1, _080AF0D8 - lsrs r0, 13 - adds r0, r1 - ldrh r3, [r0, 0x4] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r2 - ldr r2, [r1] - ldr r1, [r2] - ldr r0, [r0] - cmp r1, r0 - bne _080AF0CE - adds r0, r2, 0 - bl sub_80AEEE8 -_080AF0CE: - pop {r0} - bx r0 - .align 2, 0 -_080AF0D4: .4byte 0x09e8665c -_080AF0D8: .4byte 0x09e866bc - thumb_func_end sub_80AF0A8 - - thumb_func_start sub_80AF0DC -sub_80AF0DC: - push {r4,r5,lr} - ldr r0, _080AF100 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080AF0FA - ldr r5, _080AF104 - adds r4, r0, 0 -_080AF0EC: - ldr r0, [r5] - bl sub_80AF7C0 - adds r5, 0xC - subs r4, 0x1 - cmp r4, 0 - bne _080AF0EC -_080AF0FA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AF100: .4byte 0x00000008 -_080AF104: .4byte 0x09e8665c - thumb_func_end sub_80AF0DC - - thumb_func_start sub_80AF108 -sub_80AF108: - push {lr} - bl sub_80AEEE8 - pop {r0} - bx r0 - thumb_func_end sub_80AF108 - - thumb_func_start sub_80AF114 -sub_80AF114: - push {r4,r5,lr} - ldr r0, _080AF138 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080AF132 - ldr r5, _080AF13C - adds r4, r0, 0 -_080AF124: - ldr r0, [r5] - bl sub_80AEEE8 - adds r5, 0xC - subs r4, 0x1 - cmp r4, 0 - bne _080AF124 -_080AF132: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AF138: .4byte 0x00000008 -_080AF13C: .4byte 0x09e8665c - thumb_func_end sub_80AF114 - - thumb_func_start sub_80AF140 -sub_80AF140: - push {lr} - lsls r1, 16 - lsrs r1, 16 - bl sub_80AEF04 - pop {r0} - bx r0 - thumb_func_end sub_80AF140 - - thumb_func_start sub_80AF150 -sub_80AF150: - adds r2, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r3, [r2, 0x34] - ldr r0, _080AF168 - cmp r3, r0 - bne _080AF166 - strh r1, [r2, 0x26] - strh r1, [r2, 0x24] - ldr r0, _080AF16C - strh r0, [r2, 0x28] -_080AF166: - bx lr - .align 2, 0 -_080AF168: .4byte 0x68736d53 -_080AF16C: .4byte 0x00000101 - thumb_func_end sub_80AF150 - - thumb_func_start sub_80AF170 -sub_80AF170: - adds r2, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r3, [r2, 0x34] - ldr r0, _080AF190 - cmp r3, r0 - bne _080AF18E - strh r1, [r2, 0x26] - strh r1, [r2, 0x24] - movs r0, 0x2 - strh r0, [r2, 0x28] - ldr r0, [r2, 0x4] - ldr r1, _080AF194 - ands r0, r1 - str r0, [r2, 0x4] -_080AF18E: - bx lr - .align 2, 0 -_080AF190: .4byte 0x68736d53 -_080AF194: .4byte 0x7fffffff - thumb_func_end sub_80AF170 - - thumb_func_start sub_80AF198 -sub_80AF198: - push {r4-r7,lr} - ldrb r5, [r0, 0x8] - ldr r4, [r0, 0x2C] - cmp r5, 0 - ble _080AF1DA - movs r7, 0x80 -_080AF1A4: - ldrb r1, [r4] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _080AF1D2 - movs r6, 0x40 - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _080AF1D2 - adds r0, r4, 0 - bl sub_80AF310 - strb r7, [r4] - movs r0, 0x2 - strb r0, [r4, 0xF] - strb r6, [r4, 0x13] - movs r0, 0x16 - strb r0, [r4, 0x19] - adds r1, r4, 0 - adds r1, 0x24 - movs r0, 0x1 - strb r0, [r1] -_080AF1D2: - subs r5, 0x1 - adds r4, 0x50 - cmp r5, 0 - bgt _080AF1A4 -_080AF1DA: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80AF198 - - thumb_func_start sub_80AF1E0 -sub_80AF1E0: - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldr r1, _080AF2A8 - movs r0, 0x8F - strh r0, [r1] - ldr r3, _080AF2AC - movs r2, 0 - strh r2, [r3] - ldr r0, _080AF2B0 - movs r1, 0x8 - strb r1, [r0] - adds r0, 0x6 - strb r1, [r0] - adds r0, 0x10 - strb r1, [r0] - subs r0, 0x14 - movs r1, 0x80 - strb r1, [r0] - adds r0, 0x8 - strb r1, [r0] - adds r0, 0x10 - strb r1, [r0] - subs r0, 0xD - strb r2, [r0] - movs r0, 0x77 - strb r0, [r3] - ldr r0, _080AF2B4 - ldr r4, [r0] - ldr r6, [r4] - ldr r0, _080AF2B8 - cmp r6, r0 - bne _080AF2A0 - adds r0, r6, 0x1 - str r0, [r4] - ldr r1, _080AF2BC - ldr r0, _080AF2C0 - str r0, [r1, 0x20] - ldr r0, _080AF2C4 - str r0, [r1, 0x44] - ldr r0, _080AF2C8 - str r0, [r1, 0x4C] - ldr r0, _080AF2CC - str r0, [r1, 0x70] - ldr r0, _080AF2D0 - str r0, [r1, 0x74] - ldr r0, _080AF2D4 - str r0, [r1, 0x78] - ldr r0, _080AF2D8 - str r0, [r1, 0x7C] - adds r2, r1, 0 - adds r2, 0x80 - ldr r0, _080AF2DC - str r0, [r2] - adds r1, 0x84 - ldr r0, _080AF2E0 - str r0, [r1] - str r5, [r4, 0x1C] - ldr r0, _080AF2E4 - str r0, [r4, 0x28] - ldr r0, _080AF2E8 - str r0, [r4, 0x2C] - ldr r0, _080AF2EC - str r0, [r4, 0x30] - ldr r0, _080AF2F0 - movs r1, 0 - strb r0, [r4, 0xC] - str r1, [sp] - ldr r2, _080AF2F4 - mov r0, sp - adds r1, r5, 0 - bl CpuSet - movs r0, 0x1 - strb r0, [r5, 0x1] - movs r0, 0x11 - strb r0, [r5, 0x1C] - adds r1, r5, 0 - adds r1, 0x41 - movs r0, 0x2 - strb r0, [r1] - adds r1, 0x1B - movs r0, 0x22 - strb r0, [r1] - adds r1, 0x25 - movs r0, 0x3 - strb r0, [r1] - adds r1, 0x1B - movs r0, 0x44 - strb r0, [r1] - adds r1, 0x24 - movs r0, 0x4 - strb r0, [r1, 0x1] - movs r0, 0x88 - strb r0, [r1, 0x1C] - str r6, [r4] -_080AF2A0: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AF2A8: .4byte 0x04000084 -_080AF2AC: .4byte 0x04000080 -_080AF2B0: .4byte 0x04000063 -_080AF2B4: .4byte SOUND_INFO_PTR -_080AF2B8: .4byte 0x68736d53 -_080AF2BC: .4byte gUnknown_203AE80 -_080AF2C0: .4byte sub_80B019C -_080AF2C4: .4byte sub_80AEE58 -_080AF2C8: .4byte sub_80AEE6C -_080AF2CC: .4byte sub_80B02F4 -_080AF2D0: .4byte sub_80AEDF0 -_080AF2D4: .4byte sub_80AF41C -_080AF2D8: .4byte sub_80AEB7C -_080AF2DC: .4byte sub_80AF800 -_080AF2E0: .4byte sub_80AF8C8 -_080AF2E4: .4byte sub_80AFADC -_080AF2E8: .4byte sub_80AFA24 -_080AF2EC: .4byte sub_80AF97C -_080AF2F0: .4byte 0x00000000 -_080AF2F4: .4byte 0x05000040 - thumb_func_end sub_80AF1E0 - - thumb_func_start sub_80AF2F8 -sub_80AF2F8: - swi 0x2A - bx lr - thumb_func_end sub_80AF2F8 - - thumb_func_start sub_80AF2FC -sub_80AF2FC: - push {lr} - ldr r1, _080AF30C - ldr r1, [r1] - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_080AF30C: .4byte gUnknown_203AF08 - thumb_func_end sub_80AF2FC - - thumb_func_start sub_80AF310 -sub_80AF310: - push {lr} - ldr r1, _080AF320 - ldr r1, [r1] - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_080AF320: .4byte gUnknown_203AF0C - thumb_func_end sub_80AF310 - - thumb_func_start sub_80AF324 -sub_80AF324: - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r3, 0 - str r3, [r5] - ldr r1, _080AF3DC - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 18 - ands r0, r2 - cmp r0, 0 - beq _080AF340 - ldr r0, _080AF3E0 - str r0, [r1] -_080AF340: - ldr r1, _080AF3E4 - ldr r0, [r1] - ands r0, r2 - cmp r0, 0 - beq _080AF34E - ldr r0, _080AF3E0 - str r0, [r1] -_080AF34E: - ldr r0, _080AF3E8 - movs r2, 0x80 - lsls r2, 3 - adds r1, r2, 0 - strh r1, [r0] - adds r0, 0xC - strh r1, [r0] - ldr r1, _080AF3EC - movs r0, 0x8F - strh r0, [r1] - subs r1, 0x2 - ldr r2, _080AF3F0 - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _080AF3F4 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080AF3F8 - movs r2, 0xD4 - lsls r2, 2 - adds r0, r5, r2 - str r0, [r1] - adds r1, 0x4 - ldr r0, _080AF3FC - str r0, [r1] - adds r1, 0x8 - movs r2, 0x98 - lsls r2, 4 - adds r0, r5, r2 - str r0, [r1] - adds r1, 0x4 - ldr r0, _080AF400 - str r0, [r1] - ldr r0, _080AF404 - str r5, [r0] - str r3, [sp] - ldr r2, _080AF408 - mov r0, sp - adds r1, r5, 0 - bl CpuSet - movs r0, 0x8 - strb r0, [r5, 0x6] - movs r0, 0xF - strb r0, [r5, 0x7] - ldr r0, _080AF40C - str r0, [r5, 0x38] - ldr r0, _080AF410 - str r0, [r5, 0x28] - str r0, [r5, 0x2C] - str r0, [r5, 0x30] - str r0, [r5, 0x3C] - ldr r4, _080AF414 - adds r0, r4, 0 - bl sub_80AE704 - str r4, [r5, 0x34] - movs r0, 0x80 - lsls r0, 11 - bl sub_80AF41C - ldr r0, _080AF418 - str r0, [r5] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AF3DC: .4byte 0x040000c4 -_080AF3E0: .4byte 0x84400004 -_080AF3E4: .4byte 0x040000d0 -_080AF3E8: .4byte 0x040000c6 -_080AF3EC: .4byte 0x04000084 -_080AF3F0: .4byte 0x0000a90e -_080AF3F4: .4byte 0x04000089 -_080AF3F8: .4byte 0x040000bc -_080AF3FC: .4byte 0x040000a0 -_080AF400: .4byte 0x040000a4 -_080AF404: .4byte SOUND_INFO_PTR -_080AF408: .4byte 0x050003ec -_080AF40C: .4byte sub_80AEBF0 -_080AF410: .4byte nullsub_139 -_080AF414: .4byte gUnknown_203AE80 -_080AF418: .4byte 0x68736d53 - thumb_func_end sub_80AF324 - - thumb_func_start sub_80AF41C -sub_80AF41C: - push {r4-r6,lr} - adds r2, r0, 0 - ldr r0, _080AF49C - ldr r4, [r0] - movs r0, 0xF0 - lsls r0, 12 - ands r0, r2 - lsrs r2, r0, 16 - movs r6, 0 - strb r2, [r4, 0x8] - ldr r1, _080AF4A0 - subs r0, r2, 0x1 - lsls r0, 1 - adds r0, r1 - ldrh r5, [r0] - str r5, [r4, 0x10] - movs r0, 0xC6 - lsls r0, 3 - adds r1, r5, 0 - bl __divsi3 - strb r0, [r4, 0xB] - ldr r0, _080AF4A4 - muls r0, r5 - ldr r1, _080AF4A8 - adds r0, r1 - ldr r1, _080AF4AC - bl __divsi3 - adds r1, r0, 0 - str r1, [r4, 0x14] - movs r0, 0x80 - lsls r0, 17 - bl __divsi3 - adds r0, 0x1 - asrs r0, 1 - str r0, [r4, 0x18] - ldr r0, _080AF4B0 - strh r6, [r0] - ldr r4, _080AF4B4 - ldr r0, _080AF4B8 - adds r1, r5, 0 - bl __divsi3 - negs r0, r0 - strh r0, [r4] - bl sub_80AF628 - ldr r1, _080AF4BC -_080AF480: - ldrb r0, [r1] - cmp r0, 0x9F - beq _080AF480 - ldr r1, _080AF4BC -_080AF488: - ldrb r0, [r1] - cmp r0, 0x9F - bne _080AF488 - ldr r1, _080AF4B0 - movs r0, 0x80 - strh r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AF49C: .4byte SOUND_INFO_PTR -_080AF4A0: .4byte gUnknown_826FB00 -_080AF4A4: .4byte 0x00091d1b -_080AF4A8: .4byte 0x00001388 -_080AF4AC: .4byte 0x00002710 -_080AF4B0: .4byte 0x04000102 -_080AF4B4: .4byte 0x04000100 -_080AF4B8: .4byte 0x00044940 -_080AF4BC: .4byte 0x04000006 - thumb_func_end sub_80AF41C - - thumb_func_start sub_80AF4C0 -sub_80AF4C0: - push {r4,r5,lr} - adds r3, r0, 0 - ldr r0, _080AF54C - ldr r5, [r0] - ldr r1, [r5] - ldr r0, _080AF550 - cmp r1, r0 - bne _080AF546 - adds r0, r1, 0x1 - str r0, [r5] - movs r4, 0xFF - ands r4, r3 - cmp r4, 0 - beq _080AF4E2 - movs r0, 0x7F - ands r4, r0 - strb r4, [r5, 0x5] -_080AF4E2: - movs r4, 0xF0 - lsls r4, 4 - ands r4, r3 - cmp r4, 0 - beq _080AF502 - lsrs r0, r4, 8 - strb r0, [r5, 0x6] - movs r4, 0xC - adds r0, r5, 0 - adds r0, 0x50 - movs r1, 0 -_080AF4F8: - strb r1, [r0] - subs r4, 0x1 - adds r0, 0x40 - cmp r4, 0 - bne _080AF4F8 -_080AF502: - movs r4, 0xF0 - lsls r4, 8 - ands r4, r3 - cmp r4, 0 - beq _080AF510 - lsrs r0, r4, 12 - strb r0, [r5, 0x7] -_080AF510: - movs r4, 0xB0 - lsls r4, 16 - ands r4, r3 - cmp r4, 0 - beq _080AF52E - movs r0, 0xC0 - lsls r0, 14 - ands r0, r4 - lsrs r4, r0, 14 - ldr r2, _080AF554 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - orrs r0, r4 - strb r0, [r2] -_080AF52E: - movs r4, 0xF0 - lsls r4, 12 - ands r4, r3 - cmp r4, 0 - beq _080AF542 - bl sub_80AF5AC - adds r0, r4, 0 - bl sub_80AF41C -_080AF542: - ldr r0, _080AF550 - str r0, [r5] -_080AF546: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AF54C: .4byte SOUND_INFO_PTR -_080AF550: .4byte 0x68736d53 -_080AF554: .4byte 0x04000089 - thumb_func_end sub_80AF4C0 - - thumb_func_start sub_80AF558 -sub_80AF558: - push {r4-r7,lr} - ldr r0, _080AF5A4 - ldr r6, [r0] - ldr r1, [r6] - ldr r0, _080AF5A8 - cmp r1, r0 - bne _080AF59E - adds r0, r1, 0x1 - str r0, [r6] - movs r5, 0xC - adds r4, r6, 0 - adds r4, 0x50 - movs r0, 0 -_080AF572: - strb r0, [r4] - subs r5, 0x1 - adds r4, 0x40 - cmp r5, 0 - bgt _080AF572 - ldr r4, [r6, 0x1C] - cmp r4, 0 - beq _080AF59A - movs r5, 0x1 - movs r7, 0 -_080AF586: - lsls r0, r5, 24 - lsrs r0, 24 - ldr r1, [r6, 0x2C] - bl _call_via_r1 - strb r7, [r4] - adds r5, 0x1 - adds r4, 0x40 - cmp r5, 0x4 - ble _080AF586 -_080AF59A: - ldr r0, _080AF5A8 - str r0, [r6] -_080AF59E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AF5A4: .4byte SOUND_INFO_PTR -_080AF5A8: .4byte 0x68736d53 - thumb_func_end sub_80AF558 - - thumb_func_start sub_80AF5AC -sub_80AF5AC: - push {lr} - sub sp, 0x4 - ldr r0, _080AF60C - ldr r2, [r0] - ldr r1, [r2] - ldr r3, _080AF610 - adds r0, r1, r3 - cmp r0, 0x1 - bhi _080AF604 - adds r0, r1, 0 - adds r0, 0xA - str r0, [r2] - ldr r1, _080AF614 - ldr r0, [r1] - movs r3, 0x80 - lsls r3, 18 - ands r0, r3 - cmp r0, 0 - beq _080AF5D6 - ldr r0, _080AF618 - str r0, [r1] -_080AF5D6: - ldr r1, _080AF61C - ldr r0, [r1] - ands r0, r3 - cmp r0, 0 - beq _080AF5E4 - ldr r0, _080AF618 - str r0, [r1] -_080AF5E4: - ldr r0, _080AF620 - movs r3, 0x80 - lsls r3, 3 - adds r1, r3, 0 - strh r1, [r0] - adds r0, 0xC - strh r1, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0xD4 - lsls r0, 2 - adds r1, r2, r0 - ldr r2, _080AF624 - mov r0, sp - bl CpuSet -_080AF604: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080AF60C: .4byte SOUND_INFO_PTR -_080AF610: .4byte 0x978c92ad -_080AF614: .4byte 0x040000c4 -_080AF618: .4byte 0x84400004 -_080AF61C: .4byte 0x040000d0 -_080AF620: .4byte 0x040000c6 -_080AF624: .4byte 0x05000318 - thumb_func_end sub_80AF5AC - - thumb_func_start sub_80AF628 -sub_80AF628: - push {r4,lr} - ldr r0, _080AF658 - ldr r2, [r0] - ldr r3, [r2] - ldr r0, _080AF65C - cmp r3, r0 - beq _080AF650 - ldr r0, _080AF660 - movs r4, 0xB6 - lsls r4, 8 - adds r1, r4, 0 - strh r1, [r0] - adds r0, 0xC - strh r1, [r0] - ldrb r0, [r2, 0x4] - movs r0, 0 - strb r0, [r2, 0x4] - adds r0, r3, 0 - subs r0, 0xA - str r0, [r2] -_080AF650: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AF658: .4byte SOUND_INFO_PTR -_080AF65C: .4byte 0x68736d53 -_080AF660: .4byte 0x040000c6 - thumb_func_end sub_80AF628 - - thumb_func_start sub_80AF664 -sub_80AF664: - push {r4-r7,lr} - adds r7, r0, 0 - adds r6, r1, 0 - lsls r2, 24 - lsrs r4, r2, 24 - cmp r4, 0 - beq _080AF6C8 - cmp r4, 0x10 - bls _080AF678 - movs r4, 0x10 -_080AF678: - ldr r0, _080AF6D0 - ldr r5, [r0] - ldr r1, [r5] - ldr r0, _080AF6D4 - cmp r1, r0 - bne _080AF6C8 - adds r0, r1, 0x1 - str r0, [r5] - adds r0, r7, 0 - bl sub_80AF310 - str r6, [r7, 0x2C] - strb r4, [r7, 0x8] - movs r0, 0x80 - lsls r0, 24 - str r0, [r7, 0x4] - cmp r4, 0 - beq _080AF6AC - movs r1, 0 -_080AF69E: - strb r1, [r6] - subs r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, 0x50 - cmp r4, 0 - bne _080AF69E -_080AF6AC: - ldr r0, [r5, 0x20] - cmp r0, 0 - beq _080AF6BC - str r0, [r7, 0x38] - ldr r0, [r5, 0x24] - str r0, [r7, 0x3C] - movs r0, 0 - str r0, [r5, 0x20] -_080AF6BC: - str r7, [r5, 0x24] - ldr r0, _080AF6D8 - str r0, [r5, 0x20] - ldr r0, _080AF6D4 - str r0, [r5] - str r0, [r7, 0x34] -_080AF6C8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AF6D0: .4byte SOUND_INFO_PTR -_080AF6D4: .4byte 0x68736d53 -_080AF6D8: .4byte sub_80AE914 - thumb_func_end sub_80AF664 - - thumb_func_start sub_80AF6DC -sub_80AF6DC: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - adds r7, r1, 0 - ldr r1, [r5, 0x34] - ldr r0, _080AF7BC - cmp r1, r0 - bne _080AF7B2 - ldrb r0, [r5, 0xB] - ldrb r2, [r7, 0x2] - cmp r0, 0 - beq _080AF71E - ldr r0, [r5] - cmp r0, 0 - beq _080AF708 - ldr r1, [r5, 0x2C] - movs r0, 0x40 - ldrb r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _080AF714 -_080AF708: - ldr r1, [r5, 0x4] - ldrh r0, [r5, 0x4] - cmp r0, 0 - beq _080AF71E - cmp r1, 0 - blt _080AF71E -_080AF714: - ldrb r0, [r7, 0x2] - adds r2, r0, 0 - ldrb r0, [r5, 0x9] - cmp r0, r2 - bhi _080AF7B2 -_080AF71E: - ldr r0, [r5, 0x34] - adds r0, 0x1 - str r0, [r5, 0x34] - movs r1, 0 - str r1, [r5, 0x4] - str r7, [r5] - ldr r0, [r7, 0x4] - str r0, [r5, 0x30] - strb r2, [r5, 0x9] - str r1, [r5, 0xC] - movs r0, 0x96 - strh r0, [r5, 0x1C] - strh r0, [r5, 0x20] - adds r0, 0x6A - strh r0, [r5, 0x1E] - strh r1, [r5, 0x22] - strh r1, [r5, 0x24] - movs r6, 0 - ldr r4, [r5, 0x2C] - ldrb r1, [r7] - cmp r6, r1 - bge _080AF77E - ldrb r0, [r5, 0x8] - cmp r6, r0 - bge _080AF79E - mov r8, r6 -_080AF752: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80AEB7C - movs r0, 0xC0 - strb r0, [r4] - mov r1, r8 - str r1, [r4, 0x20] - lsls r1, r6, 2 - adds r0, r7, 0 - adds r0, 0x8 - adds r0, r1 - ldr r0, [r0] - str r0, [r4, 0x40] - adds r6, 0x1 - adds r4, 0x50 - ldrb r0, [r7] - cmp r6, r0 - bge _080AF77E - ldrb r1, [r5, 0x8] - cmp r6, r1 - blt _080AF752 -_080AF77E: - ldrb r0, [r5, 0x8] - cmp r6, r0 - bge _080AF79E - movs r1, 0 - mov r8, r1 -_080AF788: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80AEB7C - mov r0, r8 - strb r0, [r4] - adds r6, 0x1 - adds r4, 0x50 - ldrb r1, [r5, 0x8] - cmp r6, r1 - blt _080AF788 -_080AF79E: - movs r0, 0x80 - ldrb r1, [r7, 0x3] - ands r0, r1 - cmp r0, 0 - beq _080AF7AE - ldrb r0, [r7, 0x3] - bl sub_80AF4C0 -_080AF7AE: - ldr r0, _080AF7BC - str r0, [r5, 0x34] -_080AF7B2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AF7BC: .4byte 0x68736d53 - thumb_func_end sub_80AF6DC - - thumb_func_start sub_80AF7C0 -sub_80AF7C0: - push {r4-r6,lr} - adds r6, r0, 0 - ldr r1, [r6, 0x34] - ldr r0, _080AF7FC - cmp r1, r0 - bne _080AF7F6 - adds r0, r1, 0x1 - str r0, [r6, 0x34] - ldr r0, [r6, 0x4] - movs r1, 0x80 - lsls r1, 24 - orrs r0, r1 - str r0, [r6, 0x4] - ldrb r4, [r6, 0x8] - ldr r5, [r6, 0x2C] - cmp r4, 0 - ble _080AF7F2 -_080AF7E2: - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80AEB7C - subs r4, 0x1 - adds r5, 0x50 - cmp r4, 0 - bgt _080AF7E2 -_080AF7F2: - ldr r0, _080AF7FC - str r0, [r6, 0x34] -_080AF7F6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080AF7FC: .4byte 0x68736d53 - thumb_func_end sub_80AF7C0 - - thumb_func_start sub_80AF800 -sub_80AF800: - push {r4-r7,lr} - adds r6, r0, 0 - ldrh r1, [r6, 0x24] - cmp r1, 0 - beq _080AF8C2 - ldrh r0, [r6, 0x26] - subs r0, 0x1 - strh r0, [r6, 0x26] - ldr r3, _080AF840 - adds r2, r3, 0 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - bne _080AF8C2 - strh r1, [r6, 0x26] - ldrh r1, [r6, 0x28] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080AF844 - adds r0, r1, 0 - adds r0, 0x10 - strh r0, [r6, 0x28] - ands r0, r2 - cmp r0, 0xFF - bls _080AF896 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r6, 0x28] - strh r3, [r6, 0x24] - b _080AF896 - .align 2, 0 -_080AF840: .4byte 0x0000ffff -_080AF844: - adds r0, r1, 0 - subs r0, 0x10 - strh r0, [r6, 0x28] - ands r0, r2 - lsls r0, 16 - cmp r0, 0 - bgt _080AF896 - ldrb r5, [r6, 0x8] - ldr r4, [r6, 0x2C] - cmp r5, 0 - ble _080AF876 -_080AF85A: - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80AEB7C - movs r0, 0x1 - ldrh r7, [r6, 0x28] - ands r0, r7 - cmp r0, 0 - bne _080AF86E - strb r0, [r4] -_080AF86E: - subs r5, 0x1 - adds r4, 0x50 - cmp r5, 0 - bgt _080AF85A -_080AF876: - movs r0, 0x1 - ldrh r1, [r6, 0x28] - ands r0, r1 - cmp r0, 0 - beq _080AF88A - ldr r0, [r6, 0x4] - movs r1, 0x80 - lsls r1, 24 - orrs r0, r1 - b _080AF88E -_080AF88A: - movs r0, 0x80 - lsls r0, 24 -_080AF88E: - str r0, [r6, 0x4] - movs r0, 0 - strh r0, [r6, 0x24] - b _080AF8C2 -_080AF896: - ldrb r5, [r6, 0x8] - ldr r4, [r6, 0x2C] - cmp r5, 0 - ble _080AF8C2 - movs r3, 0x80 - movs r7, 0 - movs r2, 0x3 -_080AF8A4: - ldrb r1, [r4] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080AF8BA - ldrh r7, [r6, 0x28] - lsrs r0, r7, 2 - strb r0, [r4, 0x13] - adds r0, r1, 0 - orrs r0, r2 - strb r0, [r4] -_080AF8BA: - subs r5, 0x1 - adds r4, 0x50 - cmp r5, 0 - bgt _080AF8A4 -_080AF8C2: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80AF800 - - thumb_func_start sub_80AF8C8 -sub_80AF8C8: - push {r4,lr} - adds r2, r1, 0 - movs r0, 0x1 - ldrb r1, [r2] - ands r0, r1 - cmp r0, 0 - beq _080AF92C - ldrb r3, [r2, 0x13] - ldrb r1, [r2, 0x12] - adds r0, r3, 0 - muls r0, r1 - lsrs r3, r0, 5 - ldrb r4, [r2, 0x18] - cmp r4, 0x1 - bne _080AF8F0 - movs r0, 0x16 - ldrsb r0, [r2, r0] - adds r0, 0x80 - muls r0, r3 - lsrs r3, r0, 7 -_080AF8F0: - movs r0, 0x14 - ldrsb r0, [r2, r0] - lsls r0, 1 - movs r1, 0x15 - ldrsb r1, [r2, r1] - adds r1, r0, r1 - cmp r4, 0x2 - bne _080AF906 - movs r0, 0x16 - ldrsb r0, [r2, r0] - adds r1, r0 -_080AF906: - movs r0, 0x80 - negs r0, r0 - cmp r1, r0 - bge _080AF912 - adds r1, r0, 0 - b _080AF918 -_080AF912: - cmp r1, 0x7F - ble _080AF918 - movs r1, 0x7F -_080AF918: - adds r0, r1, 0 - adds r0, 0x80 - muls r0, r3 - lsrs r0, 8 - strb r0, [r2, 0x10] - movs r0, 0x7F - subs r0, r1 - muls r0, r3 - lsrs r0, 8 - strb r0, [r2, 0x11] -_080AF92C: - ldrb r1, [r2] - movs r0, 0x4 - ands r0, r1 - adds r3, r1, 0 - cmp r0, 0 - beq _080AF970 - movs r0, 0xE - ldrsb r0, [r2, r0] - ldrb r1, [r2, 0xF] - muls r0, r1 - movs r1, 0xC - ldrsb r1, [r2, r1] - adds r1, r0 - lsls r1, 2 - movs r0, 0xA - ldrsb r0, [r2, r0] - lsls r0, 8 - adds r1, r0 - movs r0, 0xB - ldrsb r0, [r2, r0] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0xD] - adds r1, r0, r1 - ldrb r0, [r2, 0x18] - cmp r0, 0 - bne _080AF96A - movs r0, 0x16 - ldrsb r0, [r2, r0] - lsls r0, 4 - adds r1, r0 -_080AF96A: - asrs r0, r1, 8 - strb r0, [r2, 0x8] - strb r1, [r2, 0x9] -_080AF970: - movs r0, 0xFA - ands r0, r3 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AF8C8 - - thumb_func_start sub_80AF97C -sub_80AF97C: - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r12, r2 - cmp r0, 0x4 - bne _080AF9B4 - cmp r5, 0x14 - bhi _080AF998 - movs r5, 0 - b _080AF9A6 -_080AF998: - adds r0, r5, 0 - subs r0, 0x15 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3B - bls _080AF9A6 - movs r5, 0x3B -_080AF9A6: - ldr r0, _080AF9B0 - adds r0, r5, r0 - ldrb r0, [r0] - b _080AFA16 - .align 2, 0 -_080AF9B0: .4byte gUnknown_826FBB4 -_080AF9B4: - cmp r5, 0x23 - bhi _080AF9C0 - movs r0, 0 - mov r12, r0 - movs r5, 0 - b _080AF9D2 -_080AF9C0: - adds r0, r5, 0 - subs r0, 0x24 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x82 - bls _080AF9D2 - movs r5, 0x82 - movs r1, 0xFF - mov r12, r1 -_080AF9D2: - ldr r3, _080AFA1C - adds r0, r5, r3 - ldrb r6, [r0] - ldr r4, _080AFA20 - movs r2, 0xF - adds r0, r6, 0 - ands r0, r2 - lsls r0, 1 - adds r0, r4 - movs r7, 0 - ldrsh r1, [r0, r7] - asrs r0, r6, 4 - adds r6, r1, 0 - asrs r6, r0 - adds r0, r5, 0x1 - adds r0, r3 - ldrb r1, [r0] - adds r0, r1, 0 - ands r0, r2 - lsls r0, 1 - adds r0, r4 - movs r2, 0 - ldrsh r0, [r0, r2] - asrs r1, 4 - asrs r0, r1 - subs r0, r6 - mov r7, r12 - muls r7, r0 - adds r0, r7, 0 - asrs r0, 8 - adds r0, r6, r0 - movs r1, 0x80 - lsls r1, 4 - adds r0, r1 -_080AFA16: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080AFA1C: .4byte gUnknown_826FB18 -_080AFA20: .4byte gUnknown_826FB9C - thumb_func_end sub_80AF97C - - thumb_func_start sub_80AFA24 -sub_80AFA24: - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x2 - beq _080AFA4C - cmp r0, 0x2 - bgt _080AFA38 - cmp r0, 0x1 - beq _080AFA3E - b _080AFA60 -_080AFA38: - cmp r1, 0x3 - beq _080AFA54 - b _080AFA60 -_080AFA3E: - ldr r1, _080AFA48 - movs r0, 0x8 - strb r0, [r1] - adds r1, 0x2 - b _080AFA68 - .align 2, 0 -_080AFA48: .4byte 0x04000063 -_080AFA4C: - ldr r1, _080AFA50 - b _080AFA62 - .align 2, 0 -_080AFA50: .4byte 0x04000069 -_080AFA54: - ldr r1, _080AFA5C - movs r0, 0 - b _080AFA6A - .align 2, 0 -_080AFA5C: .4byte 0x04000070 -_080AFA60: - ldr r1, _080AFA70 -_080AFA62: - movs r0, 0x8 - strb r0, [r1] - adds r1, 0x4 -_080AFA68: - movs r0, 0x80 -_080AFA6A: - strb r0, [r1] - bx lr - .align 2, 0 -_080AFA70: .4byte 0x04000079 - thumb_func_end sub_80AFA24 - - thumb_func_start sub_80AFA74 -sub_80AFA74: - push {r4,lr} - adds r1, r0, 0 - ldrb r0, [r1, 0x2] - lsls r2, r0, 24 - lsrs r4, r2, 24 - ldrb r3, [r1, 0x3] - lsls r0, r3, 24 - lsrs r3, r0, 24 - cmp r4, r3 - bcc _080AFA94 - lsrs r0, r2, 25 - cmp r0, r3 - bcc _080AFAA0 - movs r0, 0xF - strb r0, [r1, 0x1B] - b _080AFAAE -_080AFA94: - lsrs r0, 25 - cmp r0, r4 - bcc _080AFAA0 - movs r0, 0xF0 - strb r0, [r1, 0x1B] - b _080AFAAE -_080AFAA0: - movs r0, 0xFF - strb r0, [r1, 0x1B] - ldrb r2, [r1, 0x3] - ldrb r3, [r1, 0x2] - adds r0, r2, r3 - lsrs r0, 4 - b _080AFABE -_080AFAAE: - ldrb r2, [r1, 0x3] - ldrb r3, [r1, 0x2] - adds r0, r2, r3 - lsrs r0, 4 - strb r0, [r1, 0xA] - cmp r0, 0xF - bls _080AFAC0 - movs r0, 0xF -_080AFABE: - strb r0, [r1, 0xA] -_080AFAC0: - ldrb r2, [r1, 0x6] - ldrb r3, [r1, 0xA] - adds r0, r2, 0 - muls r0, r3 - adds r0, 0xF - asrs r0, 4 - strb r0, [r1, 0x19] - ldrb r0, [r1, 0x1C] - ldrb r2, [r1, 0x1B] - ands r0, r2 - strb r0, [r1, 0x1B] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80AFA74 - - thumb_func_start sub_80AFADC -sub_80AFADC: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r0, _080AFAFC - ldr r0, [r0] - str r0, [sp, 0x4] - ldrb r0, [r0, 0xA] - cmp r0, 0 - beq _080AFB00 - subs r0, 0x1 - ldr r1, [sp, 0x4] - strb r0, [r1, 0xA] - b _080AFB06 - .align 2, 0 -_080AFAFC: .4byte SOUND_INFO_PTR -_080AFB00: - movs r0, 0xE - ldr r2, [sp, 0x4] - strb r0, [r2, 0xA] -_080AFB06: - movs r6, 0x1 - ldr r0, [sp, 0x4] - ldr r4, [r0, 0x1C] -_080AFB0C: - ldrb r1, [r4] - movs r0, 0xC7 - ands r0, r1 - adds r2, r6, 0x1 - mov r10, r2 - movs r2, 0x40 - adds r2, r4 - mov r9, r2 - cmp r0, 0 - bne _080AFB22 - b _080AFF0C -_080AFB22: - cmp r6, 0x2 - beq _080AFB54 - cmp r6, 0x2 - bgt _080AFB30 - cmp r6, 0x1 - beq _080AFB36 - b _080AFB8C -_080AFB30: - cmp r6, 0x3 - beq _080AFB6C - b _080AFB8C -_080AFB36: - ldr r0, _080AFB48 - str r0, [sp, 0x8] - ldr r7, _080AFB4C - ldr r2, _080AFB50 - str r2, [sp, 0xC] - adds r0, 0x4 - str r0, [sp, 0x10] - adds r2, 0x2 - b _080AFB9C - .align 2, 0 -_080AFB48: .4byte 0x04000060 -_080AFB4C: .4byte 0x04000062 -_080AFB50: .4byte 0x04000063 -_080AFB54: - ldr r0, _080AFB60 - str r0, [sp, 0x8] - ldr r7, _080AFB64 - ldr r2, _080AFB68 - b _080AFB94 - .align 2, 0 -_080AFB60: .4byte 0x04000061 -_080AFB64: .4byte 0x04000068 -_080AFB68: .4byte 0x04000069 -_080AFB6C: - ldr r0, _080AFB80 - str r0, [sp, 0x8] - ldr r7, _080AFB84 - ldr r2, _080AFB88 - str r2, [sp, 0xC] - adds r0, 0x4 - str r0, [sp, 0x10] - adds r2, 0x2 - b _080AFB9C - .align 2, 0 -_080AFB80: .4byte 0x04000070 -_080AFB84: .4byte 0x04000072 -_080AFB88: .4byte 0x04000073 -_080AFB8C: - ldr r0, _080AFBEC - str r0, [sp, 0x8] - ldr r7, _080AFBF0 - ldr r2, _080AFBF4 -_080AFB94: - str r2, [sp, 0xC] - adds r0, 0xB - str r0, [sp, 0x10] - adds r2, 0x4 -_080AFB9C: - str r2, [sp, 0x14] - ldr r0, [sp, 0x4] - ldrb r0, [r0, 0xA] - str r0, [sp] - ldr r2, [sp, 0xC] - ldrb r0, [r2] - mov r8, r0 - adds r2, r1, 0 - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _080AFC92 - movs r3, 0x40 - adds r0, r3, 0 - ands r0, r2 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r6, 0x1 - mov r10, r0 - movs r1, 0x40 - adds r1, r4 - mov r9, r1 - cmp r5, 0 - bne _080AFCB6 - movs r0, 0x3 - strb r0, [r4] - strb r0, [r4, 0x1D] - adds r0, r4, 0 - str r3, [sp, 0x18] - bl sub_80AFA74 - ldr r3, [sp, 0x18] - cmp r6, 0x2 - beq _080AFC04 - cmp r6, 0x2 - bgt _080AFBF8 - cmp r6, 0x1 - beq _080AFBFE - b _080AFC58 - .align 2, 0 -_080AFBEC: .4byte 0x04000071 -_080AFBF0: .4byte 0x04000078 -_080AFBF4: .4byte 0x04000079 -_080AFBF8: - cmp r6, 0x3 - beq _080AFC10 - b _080AFC58 -_080AFBFE: - ldrb r0, [r4, 0x1F] - ldr r2, [sp, 0x8] - strb r0, [r2] -_080AFC04: - ldr r0, [r4, 0x24] - lsls r0, 6 - ldrb r1, [r4, 0x1E] - adds r0, r1, r0 - strb r0, [r7] - b _080AFC64 -_080AFC10: - ldr r1, [r4, 0x24] - ldr r0, [r4, 0x28] - cmp r1, r0 - beq _080AFC38 - ldr r2, [sp, 0x8] - strb r3, [r2] - ldr r1, _080AFC4C - ldr r2, [r4, 0x24] - ldr r0, [r2] - str r0, [r1] - adds r1, 0x4 - ldr r0, [r2, 0x4] - str r0, [r1] - adds r1, 0x4 - ldr r0, [r2, 0x8] - str r0, [r1] - adds r1, 0x4 - ldr r0, [r2, 0xC] - str r0, [r1] - str r2, [r4, 0x28] -_080AFC38: - ldr r0, [sp, 0x8] - strb r5, [r0] - ldrb r0, [r4, 0x1E] - strb r0, [r7] - ldrb r0, [r4, 0x1E] - cmp r0, 0 - beq _080AFC50 - movs r0, 0xC0 - b _080AFC72 - .align 2, 0 -_080AFC4C: .4byte 0x04000090 -_080AFC50: - movs r1, 0x80 - negs r1, r1 - strb r1, [r4, 0x1A] - b _080AFC74 -_080AFC58: - ldrb r0, [r4, 0x1E] - strb r0, [r7] - ldr r0, [r4, 0x24] - lsls r0, 3 - ldr r2, [sp, 0x10] - strb r0, [r2] -_080AFC64: - ldrb r0, [r4, 0x4] - adds r0, 0x8 - mov r8, r0 - ldrb r0, [r4, 0x1E] - cmp r0, 0 - beq _080AFC72 - movs r0, 0x40 -_080AFC72: - strb r0, [r4, 0x1A] -_080AFC74: - ldrb r1, [r4, 0x4] - movs r2, 0 - strb r1, [r4, 0xB] - movs r0, 0xFF - ands r0, r1 - adds r1, r6, 0x1 - mov r10, r1 - movs r1, 0x40 - adds r1, r4 - mov r9, r1 - cmp r0, 0 - bne _080AFC8E - b _080AFDCA -_080AFC8E: - strb r2, [r4, 0x9] - b _080AFDF8 -_080AFC92: - movs r0, 0x4 - ands r0, r2 - cmp r0, 0 - beq _080AFCC4 - ldrb r0, [r4, 0xD] - subs r0, 0x1 - strb r0, [r4, 0xD] - movs r2, 0xFF - ands r0, r2 - lsls r0, 24 - adds r1, r6, 0x1 - mov r10, r1 - movs r2, 0x40 - adds r2, r4 - mov r9, r2 - cmp r0, 0 - ble _080AFCB6 - b _080AFE0A -_080AFCB6: - lsls r0, r6, 24 - lsrs r0, 24 - bl sub_80AFA24 - movs r0, 0 - strb r0, [r4] - b _080AFF08 -_080AFCC4: - movs r0, 0x40 - ands r0, r1 - adds r2, r6, 0x1 - mov r10, r2 - movs r2, 0x40 - adds r2, r4 - mov r9, r2 - cmp r0, 0 - beq _080AFD04 - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _080AFD04 - movs r0, 0xFC - ands r0, r1 - movs r2, 0 - strb r0, [r4] - ldrb r1, [r4, 0x7] - strb r1, [r4, 0xB] - movs r0, 0xFF - ands r0, r1 - cmp r0, 0 - beq _080AFD36 - movs r0, 0x1 - ldrb r1, [r4, 0x1D] - orrs r0, r1 - strb r0, [r4, 0x1D] - cmp r6, 0x3 - beq _080AFDF8 - ldrb r2, [r4, 0x7] - mov r8, r2 - b _080AFDF8 -_080AFD04: - ldrb r0, [r4, 0xB] - cmp r0, 0 - bne _080AFDF8 - cmp r6, 0x3 - bne _080AFD16 - movs r0, 0x1 - ldrb r1, [r4, 0x1D] - orrs r0, r1 - strb r0, [r4, 0x1D] -_080AFD16: - adds r0, r4, 0 - bl sub_80AFA74 - movs r0, 0x3 - ldrb r2, [r4] - ands r0, r2 - cmp r0, 0 - bne _080AFD6A - ldrb r0, [r4, 0x9] - subs r0, 0x1 - strb r0, [r4, 0x9] - movs r1, 0xFF - ands r0, r1 - lsls r0, 24 - cmp r0, 0 - bgt _080AFD66 -_080AFD36: - ldrb r2, [r4, 0xC] - ldrb r1, [r4, 0xA] - adds r0, r2, 0 - muls r0, r1 - adds r0, 0xFF - asrs r0, 8 - movs r1, 0 - strb r0, [r4, 0x9] - lsls r0, 24 - cmp r0, 0 - beq _080AFCB6 - movs r0, 0x4 - ldrb r2, [r4] - orrs r0, r2 - strb r0, [r4] - movs r0, 0x1 - ldrb r1, [r4, 0x1D] - orrs r0, r1 - strb r0, [r4, 0x1D] - cmp r6, 0x3 - beq _080AFE0A - movs r2, 0x8 - mov r8, r2 - b _080AFE0A -_080AFD66: - ldrb r0, [r4, 0x7] - b _080AFDF6 -_080AFD6A: - cmp r0, 0x1 - bne _080AFD76 -_080AFD6E: - ldrb r0, [r4, 0x19] - strb r0, [r4, 0x9] - movs r0, 0x7 - b _080AFDF6 -_080AFD76: - cmp r0, 0x2 - bne _080AFDBA - ldrb r0, [r4, 0x9] - subs r0, 0x1 - strb r0, [r4, 0x9] - movs r1, 0xFF - ands r0, r1 - lsls r0, 24 - ldrb r2, [r4, 0x19] - lsls r1, r2, 24 - cmp r0, r1 - bgt _080AFDB6 -_080AFD8E: - ldrb r0, [r4, 0x6] - cmp r0, 0 - bne _080AFD9E - movs r0, 0xFC - ldrb r1, [r4] - ands r0, r1 - strb r0, [r4] - b _080AFD36 -_080AFD9E: - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - movs r0, 0x1 - ldrb r2, [r4, 0x1D] - orrs r0, r2 - strb r0, [r4, 0x1D] - cmp r6, 0x3 - beq _080AFD6E - movs r0, 0x8 - mov r8, r0 - b _080AFD6E -_080AFDB6: - ldrb r0, [r4, 0x5] - b _080AFDF6 -_080AFDBA: - ldrb r0, [r4, 0x9] - adds r0, 0x1 - strb r0, [r4, 0x9] - movs r1, 0xFF - ands r0, r1 - ldrb r2, [r4, 0xA] - cmp r0, r2 - bcc _080AFDF4 -_080AFDCA: - ldrb r0, [r4] - subs r0, 0x1 - movs r2, 0 - strb r0, [r4] - ldrb r1, [r4, 0x5] - strb r1, [r4, 0xB] - movs r0, 0xFF - ands r0, r1 - cmp r0, 0 - beq _080AFD8E - movs r0, 0x1 - ldrb r1, [r4, 0x1D] - orrs r0, r1 - strb r0, [r4, 0x1D] - ldrb r0, [r4, 0xA] - strb r0, [r4, 0x9] - cmp r6, 0x3 - beq _080AFDF8 - ldrb r2, [r4, 0x5] - mov r8, r2 - b _080AFDF8 -_080AFDF4: - ldrb r0, [r4, 0x4] -_080AFDF6: - strb r0, [r4, 0xB] -_080AFDF8: - ldrb r0, [r4, 0xB] - subs r0, 0x1 - strb r0, [r4, 0xB] - ldr r0, [sp] - cmp r0, 0 - bne _080AFE0A - subs r0, 0x1 - str r0, [sp] - b _080AFD04 -_080AFE0A: - movs r0, 0x2 - ldrb r1, [r4, 0x1D] - ands r0, r1 - cmp r0, 0 - beq _080AFE82 - cmp r6, 0x3 - bgt _080AFE4A - movs r0, 0x8 - ldrb r2, [r4, 0x1] - ands r0, r2 - cmp r0, 0 - beq _080AFE4A - ldr r0, _080AFE34 - ldrb r0, [r0] - cmp r0, 0x3F - bgt _080AFE3C - ldr r0, [r4, 0x20] - adds r0, 0x2 - ldr r1, _080AFE38 - b _080AFE46 - .align 2, 0 -_080AFE34: .4byte 0x04000089 -_080AFE38: .4byte 0x000007fc -_080AFE3C: - cmp r0, 0x7F - bgt _080AFE4A - ldr r0, [r4, 0x20] - adds r0, 0x1 - ldr r1, _080AFE58 -_080AFE46: - ands r0, r1 - str r0, [r4, 0x20] -_080AFE4A: - cmp r6, 0x4 - beq _080AFE5C - ldr r0, [r4, 0x20] - ldr r1, [sp, 0x10] - strb r0, [r1] - b _080AFE6A - .align 2, 0 -_080AFE58: .4byte 0x000007fe -_080AFE5C: - ldr r2, [sp, 0x10] - ldrb r0, [r2] - movs r1, 0x8 - ands r1, r0 - ldr r0, [r4, 0x20] - orrs r0, r1 - strb r0, [r2] -_080AFE6A: - movs r0, 0xC0 - ldrb r1, [r4, 0x1A] - ands r0, r1 - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - adds r0, r1, r0 - strb r0, [r4, 0x1A] - movs r2, 0xFF - ands r0, r2 - ldr r1, [sp, 0x14] - strb r0, [r1] -_080AFE82: - movs r0, 0x1 - ldrb r2, [r4, 0x1D] - ands r0, r2 - cmp r0, 0 - beq _080AFF08 - ldr r1, _080AFECC - ldrb r0, [r1] - ldrb r2, [r4, 0x1C] - bics r0, r2 - ldrb r2, [r4, 0x1B] - orrs r0, r2 - strb r0, [r1] - cmp r6, 0x3 - bne _080AFED4 - ldr r0, _080AFED0 - ldrb r1, [r4, 0x9] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, [sp, 0xC] - strb r0, [r2] - movs r1, 0x80 - adds r0, r1, 0 - ldrb r2, [r4, 0x1A] - ands r0, r2 - cmp r0, 0 - beq _080AFF08 - ldr r0, [sp, 0x8] - strb r1, [r0] - ldrb r0, [r4, 0x1A] - ldr r1, [sp, 0x14] - strb r0, [r1] - movs r0, 0x7F - ldrb r2, [r4, 0x1A] - ands r0, r2 - strb r0, [r4, 0x1A] - b _080AFF08 - .align 2, 0 -_080AFECC: .4byte 0x04000081 -_080AFED0: .4byte gUnknown_826FBF0 -_080AFED4: - movs r0, 0xF - mov r1, r8 - ands r1, r0 - mov r8, r1 - ldrb r2, [r4, 0x9] - lsls r0, r2, 4 - add r0, r8 - ldr r1, [sp, 0xC] - strb r0, [r1] - movs r2, 0x80 - ldrb r0, [r4, 0x1A] - orrs r0, r2 - ldr r1, [sp, 0x14] - strb r0, [r1] - cmp r6, 0x1 - bne _080AFF08 - ldr r0, [sp, 0x8] - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080AFF08 - ldrb r0, [r4, 0x1A] - orrs r0, r2 - ldr r1, [sp, 0x14] - strb r0, [r1] -_080AFF08: - movs r0, 0 - strb r0, [r4, 0x1D] -_080AFF0C: - mov r6, r10 - mov r4, r9 - cmp r6, 0x4 - bgt _080AFF16 - b _080AFB0C -_080AFF16: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80AFADC - - thumb_func_start sub_80AFF28 -sub_80AFF28: - push {r4,lr} - adds r2, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r3, [r2, 0x34] - ldr r0, _080AFF4C - cmp r3, r0 - bne _080AFF44 - strh r1, [r2, 0x1E] - ldrh r4, [r2, 0x1C] - adds r0, r1, 0 - muls r0, r4 - asrs r0, 8 - strh r0, [r2, 0x20] -_080AFF44: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AFF4C: .4byte 0x68736d53 - thumb_func_end sub_80AFF28 - - thumb_func_start sub_80AFF50 -sub_80AFF50: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r4, r0, 0 - lsls r1, 16 - lsrs r7, r1, 16 - lsls r6, r2, 16 - ldr r3, [r4, 0x34] - ldr r0, _080AFFB4 - cmp r3, r0 - bne _080AFFA8 - adds r0, r3, 0x1 - str r0, [r4, 0x34] - ldrb r2, [r4, 0x8] - ldr r1, [r4, 0x2C] - movs r5, 0x1 - cmp r2, 0 - ble _080AFFA4 - movs r0, 0x80 - mov r8, r0 - lsrs r6, 18 - movs r0, 0x3 - mov r12, r0 -_080AFF80: - adds r0, r7, 0 - ands r0, r5 - cmp r0, 0 - beq _080AFF9A - ldrb r3, [r1] - mov r0, r8 - ands r0, r3 - cmp r0, 0 - beq _080AFF9A - strb r6, [r1, 0x13] - mov r0, r12 - orrs r0, r3 - strb r0, [r1] -_080AFF9A: - subs r2, 0x1 - adds r1, 0x50 - lsls r5, 1 - cmp r2, 0 - bgt _080AFF80 -_080AFFA4: - ldr r0, _080AFFB4 - str r0, [r4, 0x34] -_080AFFA8: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080AFFB4: .4byte 0x68736d53 - thumb_func_end sub_80AFF50 - - thumb_func_start sub_80AFFB8 -sub_80AFFB8: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r4, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r12, r1 - lsls r2, 16 - lsrs r6, r2, 16 - ldr r3, [r4, 0x34] - ldr r0, _080B0028 - cmp r3, r0 - bne _080B001A - adds r0, r3, 0x1 - str r0, [r4, 0x34] - ldrb r2, [r4, 0x8] - ldr r3, [r4, 0x2C] - movs r5, 0x1 - cmp r2, 0 - ble _080B0016 - movs r0, 0x80 - mov r9, r0 - lsls r0, r6, 16 - asrs r7, r0, 24 - movs r0, 0xC - mov r8, r0 -_080AFFF0: - mov r0, r12 - ands r0, r5 - cmp r0, 0 - beq _080B000C - ldrb r1, [r3] - mov r0, r9 - ands r0, r1 - cmp r0, 0 - beq _080B000C - strb r7, [r3, 0xB] - strb r6, [r3, 0xD] - mov r0, r8 - orrs r0, r1 - strb r0, [r3] -_080B000C: - subs r2, 0x1 - adds r3, 0x50 - lsls r5, 1 - cmp r2, 0 - bgt _080AFFF0 -_080B0016: - ldr r0, _080B0028 - str r0, [r4, 0x34] -_080B001A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B0028: .4byte 0x68736d53 - thumb_func_end sub_80AFFB8 - - thumb_func_start sub_80B002C -sub_80B002C: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r4, r0, 0 - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r3, [r4, 0x34] - ldr r0, _080B0090 - cmp r3, r0 - bne _080B0084 - adds r0, r3, 0x1 - str r0, [r4, 0x34] - ldrb r2, [r4, 0x8] - ldr r1, [r4, 0x2C] - movs r5, 0x1 - cmp r2, 0 - ble _080B0080 - movs r0, 0x80 - mov r8, r0 - movs r0, 0x3 - mov r12, r0 -_080B005C: - adds r0, r7, 0 - ands r0, r5 - cmp r0, 0 - beq _080B0076 - ldrb r3, [r1] - mov r0, r8 - ands r0, r3 - cmp r0, 0 - beq _080B0076 - strb r6, [r1, 0x15] - mov r0, r12 - orrs r0, r3 - strb r0, [r1] -_080B0076: - subs r2, 0x1 - adds r1, 0x50 - lsls r5, 1 - cmp r2, 0 - bgt _080B005C -_080B0080: - ldr r0, _080B0090 - str r0, [r4, 0x34] -_080B0084: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B0090: .4byte 0x68736d53 - thumb_func_end sub_80B002C - - thumb_func_start sub_80B0094 -sub_80B0094: - adds r1, r0, 0 - movs r2, 0 - movs r0, 0 - strb r0, [r1, 0x1A] - strb r0, [r1, 0x16] - ldrb r0, [r1, 0x18] - cmp r0, 0 - bne _080B00A8 - movs r0, 0xC - b _080B00AA -_080B00A8: - movs r0, 0x3 -_080B00AA: - ldrb r2, [r1] - orrs r0, r2 - strb r0, [r1] - bx lr - thumb_func_end sub_80B0094 - - thumb_func_start sub_80B00B4 -sub_80B00B4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - ldr r1, [r6, 0x34] - ldr r0, _080B0124 - cmp r1, r0 - bne _080B0114 - adds r0, r1, 0x1 - str r0, [r6, 0x34] - ldrb r5, [r6, 0x8] - ldr r4, [r6, 0x2C] - movs r7, 0x1 - cmp r5, 0 - ble _080B0110 - mov r9, r8 -_080B00E4: - mov r0, r10 - ands r0, r7 - cmp r0, 0 - beq _080B0106 - movs r0, 0x80 - ldrb r1, [r4] - ands r0, r1 - cmp r0, 0 - beq _080B0106 - mov r0, r8 - strb r0, [r4, 0x17] - mov r1, r9 - cmp r1, 0 - bne _080B0106 - adds r0, r4, 0 - bl sub_80B0094 -_080B0106: - subs r5, 0x1 - adds r4, 0x50 - lsls r7, 1 - cmp r5, 0 - bgt _080B00E4 -_080B0110: - ldr r0, _080B0124 - str r0, [r6, 0x34] -_080B0114: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B0124: .4byte 0x68736d53 - thumb_func_end sub_80B00B4 - - thumb_func_start sub_80B0128 -sub_80B0128: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - ldr r1, [r6, 0x34] - ldr r0, _080B0198 - cmp r1, r0 - bne _080B0188 - adds r0, r1, 0x1 - str r0, [r6, 0x34] - ldrb r5, [r6, 0x8] - ldr r4, [r6, 0x2C] - movs r7, 0x1 - cmp r5, 0 - ble _080B0184 - mov r9, r8 -_080B0158: - mov r0, r10 - ands r0, r7 - cmp r0, 0 - beq _080B017A - movs r0, 0x80 - ldrb r1, [r4] - ands r0, r1 - cmp r0, 0 - beq _080B017A - mov r0, r8 - strb r0, [r4, 0x19] - mov r1, r9 - cmp r1, 0 - bne _080B017A - adds r0, r4, 0 - bl sub_80B0094 -_080B017A: - subs r5, 0x1 - adds r4, 0x50 - lsls r7, 1 - cmp r5, 0 - bgt _080B0158 -_080B0184: - ldr r0, _080B0198 - str r0, [r6, 0x34] -_080B0188: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B0198: .4byte 0x68736d53 - thumb_func_end sub_80B0128 - - thumb_func_start sub_80B019C -sub_80B019C: - push {r4-r6,lr} - adds r4, r0, 0 - adds r6, r1, 0 - ldr r1, [r6, 0x40] - ldrb r5, [r1] - adds r2, r1, 0x1 - str r2, [r6, 0x40] - ldr r0, [r4, 0x18] - ldrb r1, [r1, 0x1] - adds r3, r1, r0 - adds r0, r2, 0x1 - str r0, [r6, 0x40] - ldrb r2, [r2, 0x1] - adds r0, 0x1 - str r0, [r6, 0x40] - cmp r5, 0x11 - bls _080B01C0 - b _080B02EE -_080B01C0: - lsls r0, r5, 2 - ldr r1, _080B01CC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080B01CC: .4byte _080B01D0 - .align 2, 0 -_080B01D0: - .4byte _080B0218 - .4byte _080B021C - .4byte _080B0224 - .4byte _080B022C - .4byte _080B0236 - .4byte _080B0244 - .4byte _080B0252 - .4byte _080B025A - .4byte _080B0262 - .4byte _080B026A - .4byte _080B0272 - .4byte _080B027A - .4byte _080B0282 - .4byte _080B0290 - .4byte _080B029E - .4byte _080B02AC - .4byte _080B02BA - .4byte _080B02C8 -_080B0218: - strb r2, [r3] - b _080B02EE -_080B021C: - ldrb r1, [r3] - adds r0, r1, r2 - strb r0, [r3] - b _080B02EE -_080B0224: - ldrb r1, [r3] - subs r0, r1, r2 - strb r0, [r3] - b _080B02EE -_080B022C: - ldr r0, [r4, 0x18] - adds r0, r2 - ldrb r0, [r0] - strb r0, [r3] - b _080B02EE -_080B0236: - ldr r0, [r4, 0x18] - adds r0, r2 - ldrb r1, [r3] - ldrb r0, [r0] - adds r0, r1, r0 - strb r0, [r3] - b _080B02EE -_080B0244: - ldr r0, [r4, 0x18] - adds r0, r2 - ldrb r1, [r3] - ldrb r0, [r0] - subs r0, r1, r0 - strb r0, [r3] - b _080B02EE -_080B0252: - ldrb r3, [r3] - cmp r3, r2 - beq _080B02D4 - b _080B02E8 -_080B025A: - ldrb r3, [r3] - cmp r3, r2 - bne _080B02D4 - b _080B02E8 -_080B0262: - ldrb r3, [r3] - cmp r3, r2 - bhi _080B02D4 - b _080B02E8 -_080B026A: - ldrb r3, [r3] - cmp r3, r2 - bcs _080B02D4 - b _080B02E8 -_080B0272: - ldrb r3, [r3] - cmp r3, r2 - bls _080B02D4 - b _080B02E8 -_080B027A: - ldrb r3, [r3] - cmp r3, r2 - bcc _080B02D4 - b _080B02E8 -_080B0282: - ldr r0, [r4, 0x18] - adds r0, r2 - ldrb r3, [r3] - ldrb r0, [r0] - cmp r3, r0 - beq _080B02D4 - b _080B02E8 -_080B0290: - ldr r0, [r4, 0x18] - adds r0, r2 - ldrb r3, [r3] - ldrb r0, [r0] - cmp r3, r0 - bne _080B02D4 - b _080B02E8 -_080B029E: - ldr r0, [r4, 0x18] - adds r0, r2 - ldrb r3, [r3] - ldrb r0, [r0] - cmp r3, r0 - bhi _080B02D4 - b _080B02E8 -_080B02AC: - ldr r0, [r4, 0x18] - adds r0, r2 - ldrb r3, [r3] - ldrb r0, [r0] - cmp r3, r0 - bcs _080B02D4 - b _080B02E8 -_080B02BA: - ldr r0, [r4, 0x18] - adds r0, r2 - ldrb r3, [r3] - ldrb r0, [r0] - cmp r3, r0 - bls _080B02D4 - b _080B02E8 -_080B02C8: - ldr r0, [r4, 0x18] - adds r0, r2 - ldrb r3, [r3] - ldrb r0, [r0] - cmp r3, r0 - bcs _080B02E8 -_080B02D4: - ldr r0, _080B02E4 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r6, 0 - bl _call_via_r2 - b _080B02EE - .align 2, 0 -_080B02E4: .4byte gUnknown_203AE84 -_080B02E8: - ldr r0, [r6, 0x40] - adds r0, 0x4 - str r0, [r6, 0x40] -_080B02EE: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80B019C - - thumb_func_start sub_80B02F4 -sub_80B02F4: - push {lr} - ldr r2, [r1, 0x40] - ldrb r3, [r2] - adds r2, 0x1 - str r2, [r1, 0x40] - ldr r2, _080B0310 - lsls r3, 2 - adds r3, r2 - ldr r2, [r3] - bl _call_via_r2 - pop {r0} - bx r0 - .align 2, 0 -_080B0310: .4byte gUnknown_826FC34 - thumb_func_end sub_80B02F4 - - thumb_func_start sub_80B0314 -sub_80B0314: - push {lr} - ldr r2, _080B0324 - ldr r2, [r2] - bl _call_via_r2 - pop {r0} - bx r0 - .align 2, 0 -_080B0324: .4byte gUnknown_203AE80 - thumb_func_end sub_80B0314 - - thumb_func_start sub_80B0328 -sub_80B0328: - push {r4,lr} - ldr r2, [r1, 0x40] - ldr r0, _080B0360 - ands r4, r0 - ldrb r0, [r2] - orrs r4, r0 - ldrb r0, [r2, 0x1] - lsls r3, r0, 8 - ldr r0, _080B0364 - ands r4, r0 - orrs r4, r3 - ldrb r0, [r2, 0x2] - lsls r3, r0, 16 - ldr r0, _080B0368 - ands r4, r0 - orrs r4, r3 - ldrb r0, [r2, 0x3] - lsls r3, r0, 24 - ldr r0, _080B036C - ands r4, r0 - orrs r4, r3 - str r4, [r1, 0x28] - adds r2, 0x4 - str r2, [r1, 0x40] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B0360: .4byte 0xffffff00 -_080B0364: .4byte 0xffff00ff -_080B0368: .4byte 0xff00ffff -_080B036C: .4byte 0x00ffffff - thumb_func_end sub_80B0328 - - thumb_func_start sub_80B0370 -sub_80B0370: - ldr r0, [r1, 0x40] - ldrb r2, [r0] - adds r0, r1, 0 - adds r0, 0x24 - strb r2, [r0] - ldr r0, [r1, 0x40] - adds r0, 0x1 - str r0, [r1, 0x40] - bx lr - thumb_func_end sub_80B0370 - - thumb_func_start sub_80B0384 -sub_80B0384: - ldr r0, [r1, 0x40] - ldrb r2, [r0] - adds r0, r1, 0 - adds r0, 0x2C - strb r2, [r0] - ldr r0, [r1, 0x40] - adds r0, 0x1 - str r0, [r1, 0x40] - bx lr - thumb_func_end sub_80B0384 - - thumb_func_start sub_80B0398 -sub_80B0398: - ldr r0, [r1, 0x40] - ldrb r0, [r0] - adds r2, r1, 0 - adds r2, 0x2D - strb r0, [r2] - ldr r0, [r1, 0x40] - adds r0, 0x1 - str r0, [r1, 0x40] - bx lr - thumb_func_end sub_80B0398 - - thumb_func_start sub_80B03AC -sub_80B03AC: - ldr r0, [r1, 0x40] - ldrb r0, [r0] - adds r2, r1, 0 - adds r2, 0x2E - strb r0, [r2] - ldr r0, [r1, 0x40] - adds r0, 0x1 - str r0, [r1, 0x40] - bx lr - thumb_func_end sub_80B03AC - - thumb_func_start sub_80B03C0 -sub_80B03C0: - ldr r0, [r1, 0x40] - ldrb r0, [r0] - adds r2, r1, 0 - adds r2, 0x2F - strb r0, [r2] - ldr r0, [r1, 0x40] - adds r0, 0x1 - str r0, [r1, 0x40] - bx lr - thumb_func_end sub_80B03C0 - - thumb_func_start sub_80B03D4 -sub_80B03D4: - ldr r0, [r1, 0x40] - ldrb r2, [r0] - strb r2, [r1, 0x1E] - adds r0, 0x1 - str r0, [r1, 0x40] - bx lr - thumb_func_end sub_80B03D4 - - thumb_func_start sub_80B03E0 -sub_80B03E0: - ldr r0, [r1, 0x40] - ldrb r2, [r0] - strb r2, [r1, 0x1F] - adds r0, 0x1 - str r0, [r1, 0x40] - bx lr - thumb_func_end sub_80B03E0 - - thumb_func_start sub_80B03EC -sub_80B03EC: - ldr r0, [r1, 0x40] - ldrb r0, [r0] - adds r2, r1, 0 - adds r2, 0x26 - strb r0, [r2] - ldr r0, [r1, 0x40] - adds r0, 0x1 - str r0, [r1, 0x40] - bx lr - thumb_func_end sub_80B03EC - - thumb_func_start ply_xswee -ply_xswee: - ldr r0, [r1, 0x40] - ldrb r0, [r0] - adds r2, r1, 0 - adds r2, 0x27 - strb r0, [r2] - ldr r0, [r1, 0x40] - adds r0, 0x1 - str r0, [r1, 0x40] - bx lr - thumb_func_end ply_xswee - - thumb_func_start nullsub_139 -nullsub_139: - bx lr - thumb_func_end nullsub_139 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/m4a_1.s b/asm/m4a_1.s new file mode 100644 index 0000000..8c1d78a --- /dev/null +++ b/asm/m4a_1.s @@ -0,0 +1,1647 @@ + .include "asm/macros.inc" + .include "constants/gba_constants.inc" + .include "constants/m4a_constants.inc" + + .syntax unified + + .text + + thumb_func_start umul3232H32 +umul3232H32: + adr r2, __umul3232H32 + bx r2 + .arm +__umul3232H32: + umull r2, r3, r0, r1 + add r0, r3, 0 + bx lr + thumb_func_end umul3232H32 + + thumb_func_start SoundMain +SoundMain: + ldr r0, lt_SOUND_INFO_PTR + ldr r0, [r0] + ldr r2, lt_ID_NUMBER + ldr r3, [r0, o_SoundInfo_ident] + cmp r2, r3 + beq SoundMain_1 + bx lr @ Exit the function if ident doesn't match ID_NUMBER. +SoundMain_1: + adds r3, 1 + str r3, [r0, o_SoundInfo_ident] + push {r4-r7,lr} + mov r1, r8 + mov r2, r9 + mov r3, r10 + mov r4, r11 + push {r0-r4} + sub sp, 0x18 + ldrb r1, [r0, o_SoundInfo_maxLines] + cmp r1, 0 @ if maxLines is 0, there is no maximum + beq SoundMain_3 + ldr r2, lt_REG_VCOUNT + ldrb r2, [r2] + cmp r2, VCOUNT_VBLANK + bhs SoundMain_2 + adds r2, TOTAL_SCANLINES +SoundMain_2: + adds r1, r2 +SoundMain_3: + str r1, [sp, 0x14] + ldr r3, [r0, o_SoundInfo_func] + cmp r3, 0 + beq SoundMain_4 + ldr r0, [r0, o_SoundInfo_intp] + bl call_r3 + ldr r0, [sp, 0x18] +SoundMain_4: + ldr r3, [r0, o_SoundInfo_CgbSound] + bl call_r3 + ldr r0, [sp, 0x18] + ldr r3, [r0, o_SoundInfo_pcmSamplesPerVBlank] + mov r8, r3 + ldr r5, lt_o_SoundInfo_pcmBuffer + adds r5, r0 + ldrb r4, [r0, o_SoundInfo_pcmDmaCounter] + subs r7, r4, 1 + bls SoundMain_5 + ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] + subs r1, r7 + mov r2, r8 + muls r2, r1 + adds r5, r2 +SoundMain_5: + str r5, [sp, 0x8] + ldr r6, lt_PCM_DMA_BUF_SIZE + ldr r3, lt_SoundMainRAM_Buffer + bx r3 + + .align 2, 0 +lt_SOUND_INFO_PTR: .word SOUND_INFO_PTR +lt_ID_NUMBER: .word ID_NUMBER +lt_SoundMainRAM_Buffer: .word SoundMainRAM_Buffer + 1 +lt_REG_VCOUNT: .word REG_VCOUNT +lt_o_SoundInfo_pcmBuffer: .word o_SoundInfo_pcmBuffer +lt_PCM_DMA_BUF_SIZE: .word PCM_DMA_BUF_SIZE + thumb_func_end SoundMain + + thumb_func_start SoundMainRAM +SoundMainRAM: + ldrb r3, [r0, o_SoundInfo_reverb] + cmp r3, 0 + beq SoundMainRAM_NoReverb + adr r1, SoundMainRAM_Reverb + bx r1 + .arm +SoundMainRAM_Reverb: + cmp r4, 0x2 + addeq r7, r0, o_SoundInfo_pcmBuffer + addne r7, r5, r8 + mov r4, r8 +_080AE314: + ldrsb r0, [r5, r6] + ldrsb r1, [r5] + add r0, r0, r1 + ldrsb r1, [r7, r6] + add r0, r0, r1 + ldrsb r1, [r7], 0x1 + add r0, r0, r1 + mul r1, r0, r3 + mov r0, r1, asr 9 + tst r0, 0x80 + addne r0, r0, 0x1 + strb r0, [r5, r6] + strb r0, [r5], 0x1 + subs r4, r4, 0x1 + bgt _080AE314 + add r0, pc, 0x2F + bx r0 + .thumb +SoundMainRAM_NoReverb: + movs r0, 0 + mov r1, r8 + adds r6, r5 + lsrs r1, 3 + bcc SoundMainRAM_NoReverb_Ok + stm r5!, {r0} + stm r6!, {r0} +SoundMainRAM_NoReverb_Ok: + lsrs r1, 1 + bcc SoundMainRAM_NoReverb_Loop + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} +SoundMainRAM_NoReverb_Loop: + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} + subs r1, 0x1 + bgt SoundMainRAM_NoReverb_Loop +_080AE386: + ldr r4, [sp, 0x18] + ldr r0, [r4, o_SoundInfo_divFreq] + mov r12, r0 + ldrb r0, [r4, o_SoundInfo_maxChans] + adds r4, o_SoundInfo_chans +SoundMainRAM_ChanLoop: + str r0, [sp, 0x4] + ldr r3, [r4, o_SoundChannel_wav] + ldr r0, [sp, 0x14] + cmp r0, 0 + beq _080AE3B0 + ldr r1, =REG_VCOUNT + ldrb r1, [r1] + cmp r1, VCOUNT_VBLANK + bhs _080AE3A4 + adds r1, TOTAL_SCANLINES +_080AE3A4: + cmp r1, r0 + bcc _080AE3B0 + b _080AE682 + + .pool + +_080AE3B0: + ldrb r6, [r4, o_SoundChannel_status] + movs r0, 0xC7 + tst r0, r6 + bne _080AE3BA + b _080AE678 +_080AE3BA: + movs r0, 0x80 + tst r0, r6 + beq _080AE3EA + movs r0, 0x40 + tst r0, r6 + bne _080AE3FA + movs r6, 0x3 + strb r6, [r4, o_SoundChannel_status] + adds r0, r3, 0 + adds r0, 0x10 + str r0, [r4, o_SoundChannel_cp] + ldr r0, [r3, 0xC] + str r0, [r4, o_SoundChannel_ct] + movs r5, 0 + strb r5, [r4, o_SoundChannel_ev] + str r5, [r4, o_SoundChannel_fw] + ldrb r2, [r3, 0x3] + movs r0, 0xC0 + tst r0, r2 + beq _080AE442 + movs r0, 0x10 + orrs r6, r0 + strb r6, [r4, o_SoundChannel_status] + b _080AE442 +_080AE3EA: + ldrb r5, [r4, o_SoundChannel_ev] + movs r0, 0x4 + tst r0, r6 + beq _080AE400 + ldrb r0, [r4, o_SoundChannel_iel] + subs r0, 0x1 + strb r0, [r4, o_SoundChannel_iel] + bhi _080AE450 +_080AE3FA: + movs r0, 0 + strb r0, [r4, o_SoundChannel_status] + b _080AE678 +_080AE400: + movs r0, 0x40 + tst r0, r6 + beq _080AE420 + ldrb r0, [r4, o_SoundChannel_release] + muls r5, r0 + lsrs r5, 8 + ldrb r0, [r4, o_SoundChannel_iev] + cmp r5, r0 + bhi _080AE450 +_080AE412: + ldrb r5, [r4, o_SoundChannel_iev] + cmp r5, 0 + beq _080AE3FA + movs r0, 0x4 + orrs r6, r0 + strb r6, [r4, o_SoundChannel_status] + b _080AE450 +_080AE420: + movs r2, 0x3 + ands r2, r6 + cmp r2, 0x2 + bne _080AE43E + ldrb r0, [r4, o_SoundChannel_decay] + muls r5, r0 + lsrs r5, 8 + ldrb r0, [r4, o_SoundChannel_sustain] + cmp r5, r0 + bhi _080AE450 + adds r5, r0, 0 + beq _080AE412 + subs r6, 0x1 + strb r6, [r4, o_SoundChannel_status] + b _080AE450 +_080AE43E: + cmp r2, 0x3 + bne _080AE450 +_080AE442: + ldrb r0, [r4, o_SoundChannel_attack] + adds r5, r0 + cmp r5, 0xFF + bcc _080AE450 + movs r5, 0xFF + subs r6, 0x1 + strb r6, [r4, o_SoundChannel_status] +_080AE450: + strb r5, [r4, o_SoundChannel_ev] + ldr r0, [sp, 0x18] + ldrb r0, [r0, o_SoundChannel_release] + adds r0, 0x1 + muls r0, r5 + lsrs r5, r0, 4 + ldrb r0, [r4, o_SoundChannel_rightVolume] + muls r0, r5 + lsrs r0, 8 + strb r0, [r4, o_SoundChannel_er] + ldrb r0, [r4, o_SoundChannel_leftVolume] + muls r0, r5 + lsrs r0, 8 + strb r0, [r4, o_SoundChannel_el] + movs r0, 0x10 + ands r0, r6 + str r0, [sp, 0x10] + beq _080AE484 + adds r0, r3, 0 + adds r0, 0x10 + ldr r1, [r3, 0x8] + adds r0, r1 + str r0, [sp, 0xC] + ldr r0, [r3, 0xC] + subs r0, r1 + str r0, [sp, 0x10] +_080AE484: + ldr r5, [sp, 0x8] + ldr r2, [r4, o_SoundChannel_ct] + ldr r3, [r4, o_SoundChannel_cp] + adr r0, _080AE490 + bx r0 + .arm +_080AE490: + str r8, [sp] + ldrb r10, [r4, o_SoundChannel_er] + ldrb r11, [r4, o_SoundChannel_el] + mov r10, r10, lsl 16 + mov r11, r11, lsl 16 + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x8 + beq _080AE5D0 +_080AE4B0: + cmp r2, 0x4 + ble _080AE520 + subs r2, r2, r8 + movgt lr, 0 + bgt _080AE4DC + mov lr, r8 + add r2, r2, r8 + sub r8, r2, 0x4 + sub lr, lr, r8 + ands r2, r2, 0x3 + moveq r2, 0x4 +_080AE4DC: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_080AE4E4: + ldrsb r0, [r3], 0x1 + mul r1, r10, r0 + bic r1, r1, 0xFF0000 + add r6, r1, r6, ror 8 + mul r1, r11, r0 + bic r1, r1, 0xFF0000 + add r7, r1, r7, ror 8 + adds r5, r5, 0x40000000 + bcc _080AE4E4 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + subs r8, r8, 0x4 + bgt _080AE4DC + adds r8, r8, lr + beq _080AE664 +_080AE520: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_080AE528: + ldrsb r0, [r3], 0x1 + mul r1, r10, r0 + bic r1, r1, 0xFF0000 + add r6, r1, r6, ror 8 + mul r1, r11, r0 + bic r1, r1, 0xFF0000 + add r7, r1, r7, ror 8 + subs r2, r2, 0x1 + beq _080AE598 +_080AE54C: + adds r5, r5, 0x40000000 + bcc _080AE528 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + subs r8, r8, 0x4 + bgt _080AE4B0 + b _080AE664 +_080AE568: + ldr r0, [sp, 0x18] + cmp r0, 0 + beq _080AE58C + ldr r3, [sp, 0x14] + rsb r9, r2, 0 +_080AE57C: + adds r2, r0, r2 + bgt _080AE634 + sub r9, r9, r0 + b _080AE57C +_080AE58C: + ldmia sp!, {r4,r12} + mov r2, 0 + b _080AE5A8 +_080AE598: + ldr r2, [sp, 0x10] + cmp r2, 0 + ldrne r3, [sp, 0xC] + bne _080AE54C +_080AE5A8: + strb r2, [r4, o_SoundChannel_status] + mov r0, r5, lsr 30 + bic r5, r5, 0xC0000000 + rsb r0, r0, 0x3 + mov r0, r0, lsl 3 + mov r6, r6, ror r0 + mov r7, r7, ror r0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + b _080AE66C +_080AE5D0: + stmdb sp!, {r4,r12} + ldr lr, [r4, o_SoundChannel_fw] + ldr r1, [r4, o_SoundChannel_freq] + mul r4, r12, r1 + ldrsb r0, [r3] + ldrsb r1, [r3, 0x1]! + sub r1, r1, r0 +_080AE5EC: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_080AE5F4: + mul r9, lr, r1 + add r9, r0, r9, asr 23 + mul r12, r10, r9 + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, r9 + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add lr, lr, r4 + movs r9, lr, lsr 23 + beq _080AE640 + bic lr, lr, 0x3F800000 + subs r2, r2, r9 + ble _080AE568 + subs r9, r9, 0x1 + addeq r0, r0, r1 +_080AE634: + ldrsbne r0, [r3, r9]! + ldrsb r1, [r3, 0x1]! + sub r1, r1, r0 +_080AE640: + adds r5, r5, 0x40000000 + bcc _080AE5F4 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + subs r8, r8, 0x4 + bgt _080AE5EC + sub r3, r3, 0x1 + ldmia sp!, {r4,r12} + str lr, [r4, o_SoundChannel_fw] +_080AE664: + str r2, [r4, o_SoundChannel_ct] + str r3, [r4, o_SoundChannel_cp] +_080AE66C: + ldr r8, [sp] + add r0, pc, 0x1 + bx r0 + .thumb +_080AE678: + ldr r0, [sp, 0x4] + subs r0, 0x1 + ble _080AE682 + adds r4, SoundChannel_size + b SoundMainRAM_ChanLoop +_080AE682: + ldr r0, [sp, 0x18] + ldr r3, =ID_NUMBER + str r3, [r0] + add sp, 0x1C + pop {r0-r7} + mov r8, r0 + mov r9, r1 + mov r10, r2 + mov r11, r3 + pop {r3} + +call_r3: + bx r3 + .pool + thumb_func_end SoundMainRAM + + thumb_func_start SoundMainBTM +SoundMainBTM: + mov r12, r4 + movs r1, 0 + movs r2, 0 + movs r3, 0 + movs r4, 0 + stm r0!, {r1-r4} + stm r0!, {r1-r4} + stm r0!, {r1-r4} + stm r0!, {r1-r4} + mov r4, r12 + bx lr + thumb_func_end SoundMainBTM + + thumb_func_start RealClearChain +RealClearChain: + ldr r3, [r0, 0x2C] + cmp r3, 0 + beq _080AE6D2 + ldr r1, [r0, 0x34] + ldr r2, [r0, 0x30] + cmp r2, 0 + beq _080AE6C6 + str r1, [r2, 0x34] + b _080AE6C8 +_080AE6C6: + str r1, [r3, 0x20] +_080AE6C8: + cmp r1, 0 + beq _080AE6CE + str r2, [r1, 0x30] +_080AE6CE: + movs r1, 0 + str r1, [r0, 0x2C] +_080AE6D2: + bx lr + thumb_func_end RealClearChain + + thumb_func_start ply_fine +ply_fine: + push {r4,r5,lr} + adds r5, r1, 0 + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq ply_fine_done +ply_fine_loop: + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq ply_fine_ok + movs r0, 0x40 + orrs r1, r0 + strb r1, [r4] +ply_fine_ok: + adds r0, r4, 0 + bl RealClearChain + ldr r4, [r4, 0x34] + cmp r4, 0 + bne ply_fine_loop +ply_fine_done: + movs r0, 0 + strb r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end ply_fine + + thumb_func_start MPlayJumpTableCopy +MPlayJumpTableCopy: + mov r12, lr + movs r1, 0x24 + ldr r2, lt_MPlayJumpTableTemplate +MPlayJumpTableCopy_Loop: + ldr r3, [r2] + bl chk_adr_r2 + stm r0!, {r3} + adds r2, 0x4 + subs r1, 0x1 + bgt MPlayJumpTableCopy_Loop + bx r12 + thumb_func_end MPlayJumpTableCopy + + .align 2, 0 + .thumb_func +ldrb_r3_r2: + ldrb r3, [r2] + + .thumb_func +chk_adr_r2: + push {r0} + lsrs r0, r2, 25 + bne chk_adr_r2_done + ldr r0, lt_MPlayJumpTableTemplate + cmp r2, r0 + bcc chk_adr_r2_reject + lsrs r0, r2, 14 + beq chk_adr_r2_done +chk_adr_r2_reject: + movs r3, 0 +chk_adr_r2_done: + pop {r0} + bx lr + .align 2, 0 +lt_MPlayJumpTableTemplate: .word gMPlayJumpTableTemplate + + thumb_func_start ld_r3_tp_adr_i +ld_r3_tp_adr_i: + ldr r2, [r1, 0x40] +_080AE73A: + adds r3, r2, 0x1 + str r3, [r1, 0x40] + ldrb r3, [r2] + b chk_adr_r2 + thumb_func_end ld_r3_tp_adr_i + + thumb_func_start ply_goto +ply_goto: + push {lr} +ply_goto_1: + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r0, [r2, 0x3] + lsls r0, 8 + ldrb r3, [r2, 0x2] + orrs r0, r3 + lsls r0, 8 + ldrb r3, [r2, 0x1] + orrs r0, r3 + lsls r0, 8 + bl ldrb_r3_r2 + orrs r0, r3 + str r0, [r1, o_MusicPlayerTrack_cmdPtr] + pop {r0} + bx r0 + thumb_func_end ply_goto + + thumb_func_start ply_patt +ply_patt: + ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + cmp r2, 0x3 + bcs _080AE77C + lsls r2, 2 + adds r3, r1, r2 + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + adds r2, 0x4 + str r2, [r3, o_MusicPlayerTrack_patternStack] + ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + adds r2, 0x1 + strb r2, [r1, o_MusicPlayerTrack_patternLevel] + b ply_goto +_080AE77C: + b ply_fine + thumb_func_end ply_patt + + thumb_func_start ply_pend +ply_pend: + ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + cmp r2, 0 + beq ply_pend_done + subs r2, 1 + strb r2, [r1, o_MusicPlayerTrack_patternLevel] + lsls r2, 2 + adds r3, r1, r2 + ldr r2, [r3, o_MusicPlayerTrack_patternStack] + str r2, [r1, o_MusicPlayerTrack_cmdPtr] +ply_pend_done: + bx lr + thumb_func_end ply_pend + + thumb_func_start ply_rept +ply_rept: + push {lr} + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + cmp r3, 0 + bne ply_rept_1 + adds r2, 1 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + b ply_goto_1 +ply_rept_1: + ldrb r3, [r1, o_MusicPlayerTrack_repN] + adds r3, 1 + strb r3, [r1, o_MusicPlayerTrack_repN] + mov r12, r3 + bl ld_r3_tp_adr_i + cmp r12, r3 + bhs ply_rept_2 + b ply_goto_1 +ply_rept_2: + movs r3, 0 + strb r3, [r1, o_MusicPlayerTrack_repN] + adds r2, 5 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + pop {r0} + bx r0 + thumb_func_end ply_rept + + thumb_func_start ply_prio +ply_prio: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_priority] + bx r12 + thumb_func_end ply_prio + + thumb_func_start ply_tempo +ply_tempo: + mov r12, lr + bl ld_r3_tp_adr_i + lsls r3, 1 + strh r3, [r0, o_MusicPlayerInfo_tempoD] + ldrh r2, [r0, o_MusicPlayerInfo_tempoU] + muls r3, r2 + lsrs r3, 8 + strh r3, [r0, o_MusicPlayerInfo_tempoI] + bx r12 + thumb_func_end ply_tempo + + thumb_func_start ply_keysh +ply_keysh: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_keyShift] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_keysh + + thumb_func_start ply_voice +ply_voice: + mov r12, lr + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + adds r2, 1 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + lsls r2, r3, 1 + adds r2, r3 + lsls r2, 2 + ldr r3, [r0, o_MusicPlayerInfo_tone] + adds r2, r3 + ldr r3, [r2] + bl chk_adr_r2 + str r3, [r1, o_MusicPlayerTrack_ToneData_type] + ldr r3, [r2, 0x4] + bl chk_adr_r2 + str r3, [r1, o_MusicPlayerTrack_ToneData_wav] + ldr r3, [r2, 0x8] + bl chk_adr_r2 + str r3, [r1, o_MusicPlayerTrack_ToneData_attack] + bx r12 + thumb_func_end ply_voice + + thumb_func_start ply_vol +ply_vol: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_vol] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0x3 + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_vol + + thumb_func_start ply_pan +ply_pan: + mov r12, lr + bl ld_r3_tp_adr_i + subs r3, 0x40 + strb r3, [r1, o_MusicPlayerTrack_pan] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0x3 + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_pan + + thumb_func_start ply_bend +ply_bend: + mov r12, lr + bl ld_r3_tp_adr_i + subs r3, 0x40 + strb r3, [r1, o_MusicPlayerTrack_bend] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_bend + + thumb_func_start ply_bendr +ply_bendr: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_bendRange] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_bendr + + thumb_func_start ply_lfodl +ply_lfodl: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_lfoDelay] + bx r12 + thumb_func_end ply_lfodl + + thumb_func_start ply_modt +ply_modt: + mov r12, lr + bl ld_r3_tp_adr_i + ldrb r0, [r1, o_MusicPlayerTrack_modT] + cmp r0, r3 + beq _080AE89A + strb r3, [r1, o_MusicPlayerTrack_modT] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xF + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] +_080AE89A: + bx r12 + thumb_func_end ply_modt + + thumb_func_start ply_tune +ply_tune: + mov r12, lr + bl ld_r3_tp_adr_i + subs r3, 0x40 + strb r3, [r1, o_MusicPlayerTrack_tune] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_tune + + thumb_func_start ply_port +ply_port: + mov r12, lr + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + adds r2, 0x1 + ldr r0, =REG_SOUND1CNT_L @ sound register base address + adds r0, r3 + bl _080AE73A + strb r3, [r0] + bx r12 + .pool + thumb_func_end ply_port + + thumb_func_start m4aSoundVSync +m4aSoundVSync: + ldr r0, lt2_SOUND_INFO_PTR + ldr r0, [r0] + + @ Exit the function if ident is not ID_NUMBER or ID_NUMBER+1. + ldr r2, lt2_ID_NUMBER + ldr r3, [r0, o_SoundInfo_ident] + subs r3, r2 + cmp r3, 0x1 + bhi m4aSoundVSync_Done + + @ Decrement the PCM DMA counter. If it reaches 0, we need to do a DMA. + ldrb r1, [r0, o_SoundInfo_pcmDmaCounter] + subs r1, 0x1 + strb r1, [r0, o_SoundInfo_pcmDmaCounter] + bgt m4aSoundVSync_Done + + @ Reload the PCM DMA counter. + ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] + strb r1, [r0, o_SoundInfo_pcmDmaCounter] + + ldr r2, =REG_DMA1 + + ldr r1, [r2, 0x8] @ DMA1CNT + lsls r1, 7 + bcc m4aSoundVSync_SkipDMA1 + + ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4 + str r1, [r2, 0x8] @ DMA1CNT + +m4aSoundVSync_SkipDMA1: + ldr r1, [r2, 0xC + 0x8] @ DMA2CNT + lsls r1, 7 + bcc m4aSoundVSync_SkipDMA2 + ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4 + str r1, [r2, 0xC + 0x8] @ DMA2CNT + +m4aSoundVSync_SkipDMA2: + movs r1, DMA_32BIT >> 8 + lsls r1, 8 + strh r1, [r2, 0xA] @ DMA1CNT_H + strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H + + movs r1, (DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT) >> 8 + lsls r1, 8 @ LSB is 0, so DMA_SRC_INC is used (destination is always fixed in FIFO mode) + strh r1, [r2, 0xA] @ DMA1CNT_H + strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H + +m4aSoundVSync_Done: + bx lr + + .pool + thumb_func_end m4aSoundVSync + + thumb_func_start MPlayMain +MPlayMain: + ldr r2, lt2_ID_NUMBER + ldr r3, [r0, o_MusicPlayerInfo_ident] + cmp r2, r3 + beq _080AE91E + bx lr +_080AE91E: + adds r3, 0x1 + str r3, [r0, o_MusicPlayerInfo_ident] + push {r0,lr} + ldr r3, [r0, o_MusicPlayerInfo_func] + cmp r3, 0 + beq _080AE930 + ldr r0, [r0, o_MusicPlayerInfo_intp] + bl call_r3_2 +_080AE930: + pop {r0} + push {r4-r7} + mov r4, r8 + mov r5, r9 + mov r6, r10 + mov r7, r11 + push {r4-r7} + adds r7, r0, 0 + ldr r0, [r7, o_MusicPlayerInfo_status] + cmp r0, 0 + bge _080AE948 + b _080AEB5C +_080AE948: + ldr r0, lt2_SOUND_INFO_PTR + ldr r0, [r0] + mov r8, r0 + adds r0, r7, 0 + bl FadeOutBody + ldr r0, [r7, o_MusicPlayerInfo_status] + cmp r0, 0 + bge _080AE95C + b _080AEB5C +_080AE95C: + ldrh r0, [r7, o_MusicPlayerInfo_tempoC] + ldrh r1, [r7, o_MusicPlayerInfo_tempoI] + adds r0, r1 + b _080AEAAC +_080AE964: + ldrb r6, [r7, o_MusicPlayerInfo_trackCount] + ldr r5, [r7, o_MusicPlayerInfo_tracks] + movs r3, 0x1 + movs r4, 0 +_080AE96C: + ldrb r0, [r5] + movs r1, 0x80 + tst r1, r0 + bne _080AE976 + b _080AEA88 +_080AE976: + mov r10, r3 + orrs r4, r3 + mov r11, r4 + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq _080AE9AA +_080AE982: + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq _080AE99E + ldrb r0, [r4, 0x10] + cmp r0, 0 + beq _080AE9A4 + subs r0, 0x1 + strb r0, [r4, 0x10] + bne _080AE9A4 + movs r0, 0x40 + orrs r1, r0 + strb r1, [r4] + b _080AE9A4 +_080AE99E: + adds r0, r4, 0 + bl ClearChain +_080AE9A4: + ldr r4, [r4, 0x34] + cmp r4, 0 + bne _080AE982 +_080AE9AA: + ldrb r3, [r5, o_MusicPlayerTrack_flags] + movs r0, 0x40 + tst r0, r3 + beq _080AEA28 + adds r0, r5, 0 + bl Clear64byte + movs r0, 0x80 + strb r0, [r5] + movs r0, 0x2 + strb r0, [r5, o_MusicPlayerTrack_bendRange] + movs r0, 0x40 + strb r0, [r5, o_MusicPlayerTrack_volX] + movs r0, 0x16 + strb r0, [r5, o_MusicPlayerTrack_lfoSpeed] + movs r0, 0x1 + adds r1, r5, 0x6 + strb r0, [r1, o_MusicPlayerTrack_ToneData_type - 0x6] + b _080AEA28 +_080AE9D0: + ldr r2, [r5, o_MusicPlayerTrack_cmdPtr] + ldrb r1, [r2] + cmp r1, 0x80 + bcs _080AE9DC + ldrb r1, [r5, o_MusicPlayerTrack_runningStatus] + b _080AE9E6 +_080AE9DC: + adds r2, 0x1 + str r2, [r5, o_MusicPlayerTrack_cmdPtr] + cmp r1, 0xBD + bcc _080AE9E6 + strb r1, [r5, o_MusicPlayerTrack_runningStatus] +_080AE9E6: + cmp r1, 0xCF + bcc _080AE9FC + mov r0, r8 + ldr r3, [r0, o_SoundInfo_plynote] + adds r0, r1, 0 + subs r0, 0xCF + adds r1, r7, 0 + adds r2, r5, 0 + bl call_r3_2 + b _080AEA28 +_080AE9FC: + cmp r1, 0xB0 + bls _080AEA1E + adds r0, r1, 0 + subs r0, 0xB1 + strb r0, [r7, o_MusicPlayerInfo_cmd] + mov r3, r8 + ldr r3, [r3, o_SoundInfo_MPlayJumpTable] + lsls r0, 2 + ldr r3, [r3, r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl call_r3_2 + ldrb r0, [r5, o_MusicPlayerTrack_flags] + cmp r0, 0 + beq _080AEA84 + b _080AEA28 +_080AEA1E: + ldr r0, lt_gClockTable + subs r1, 0x80 + adds r1, r0 + ldrb r0, [r1] + strb r0, [r5, o_MusicPlayerTrack_wait] +_080AEA28: + ldrb r0, [r5, o_MusicPlayerTrack_wait] + cmp r0, 0 + beq _080AE9D0 + subs r0, 0x1 + strb r0, [r5, o_MusicPlayerTrack_wait] + ldrb r1, [r5, o_MusicPlayerTrack_lfoSpeed] + cmp r1, 0 + beq _080AEA84 + ldrb r0, [r5, o_MusicPlayerTrack_mod] + cmp r0, 0 + beq _080AEA84 + ldrb r0, [r5, o_MusicPlayerTrack_lfoDelayC] + cmp r0, 0 + beq _080AEA4A + subs r0, 0x1 + strb r0, [r5, o_MusicPlayerTrack_lfoDelayC] + b _080AEA84 +_080AEA4A: + ldrb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] + adds r0, r1 + strb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] + adds r1, r0, 0 + subs r0, 0x40 + lsls r0, 24 + bpl _080AEA5E + lsls r2, r1, 24 + asrs r2, 24 + b _080AEA62 +_080AEA5E: + movs r0, 0x80 + subs r2, r0, r1 +_080AEA62: + ldrb r0, [r5, o_MusicPlayerTrack_mod] + muls r0, r2 + asrs r2, r0, 6 + ldrb r0, [r5, o_MusicPlayerTrack_modM] + eors r0, r2 + lsls r0, 24 + beq _080AEA84 + strb r2, [r5, o_MusicPlayerTrack_modM] + ldrb r0, [r5] + ldrb r1, [r5, o_MusicPlayerTrack_modT] + cmp r1, 0 + bne _080AEA7E + movs r1, 0xC + b _080AEA80 +_080AEA7E: + movs r1, 0x3 +_080AEA80: + orrs r0, r1 + strb r0, [r5, o_MusicPlayerTrack_flags] +_080AEA84: + mov r3, r10 + mov r4, r11 +_080AEA88: + subs r6, 0x1 + ble _080AEA94 + movs r0, 0x50 + adds r5, r0 + lsls r3, 1 + b _080AE96C +_080AEA94: + ldr r0, [r7, o_MusicPlayerInfo_clock] + adds r0, 0x1 + str r0, [r7, o_MusicPlayerInfo_clock] + cmp r4, 0 + bne _080AEAA6 + movs r0, 0x80 + lsls r0, 24 + str r0, [r7, o_MusicPlayerInfo_status] + b _080AEB5C +_080AEAA6: + str r4, [r7, o_MusicPlayerInfo_status] + ldrh r0, [r7, o_MusicPlayerInfo_tempoC] + subs r0, 0x96 +_080AEAAC: + strh r0, [r7, o_MusicPlayerInfo_tempoC] + cmp r0, 0x96 + bcc _080AEAB4 + b _080AE964 +_080AEAB4: + ldrb r2, [r7, o_MusicPlayerInfo_trackCount] + ldr r5, [r7, o_MusicPlayerInfo_tracks] +_080AEAB8: + ldrb r0, [r5, o_MusicPlayerTrack_flags] + movs r1, 0x80 + tst r1, r0 + beq _080AEB52 + movs r1, 0xF + tst r1, r0 + beq _080AEB52 + mov r9, r2 + adds r0, r7, 0 + adds r1, r5, 0 + bl TrkVolPitSet + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq _080AEB48 +_080AEAD6: + ldrb r1, [r4, o_SoundChannel_status] + movs r0, 0xC7 + tst r0, r1 + bne _080AEAE6 + adds r0, r4, 0 + bl ClearChain + b _080AEB42 +_080AEAE6: + ldrb r0, [r4, o_SoundChannel_type] + movs r6, 0x7 + ands r6, r0 + ldrb r3, [r5, o_MusicPlayerTrack_flags] + movs r0, 0x3 + tst r0, r3 + beq _080AEB04 + bl ChnVolSetAsm + cmp r6, 0 + beq _080AEB04 + ldrb r0, [r4, o_CgbChannel_mo] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, o_CgbChannel_mo] +_080AEB04: + ldrb r3, [r5, o_MusicPlayerTrack_flags] + movs r0, 0xC + tst r0, r3 + beq _080AEB42 + ldrb r1, [r4, o_SoundChannel_ky] + movs r0, 0x8 + ldrsb r0, [r5, r0] + adds r2, r1, r0 + bpl _080AEB18 + movs r2, 0 +_080AEB18: + cmp r6, 0 + beq _080AEB36 + mov r0, r8 + ldr r3, [r0, o_SoundInfo_MidiKeyToCgbFreq] + adds r1, r2, 0 + ldrb r2, [r5, o_MusicPlayerTrack_pitM] + adds r0, r6, 0 + bl call_r3_2 + str r0, [r4, o_CgbChannel_fr] + ldrb r0, [r4, o_CgbChannel_mo] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4, o_CgbChannel_mo] + b _080AEB42 +_080AEB36: + adds r1, r2, 0 + ldrb r2, [r5, o_MusicPlayerTrack_pitM] + ldr r0, [r4, o_SoundChannel_wav] + bl MidiKeyToFreq + str r0, [r4, o_SoundChannel_freq] +_080AEB42: + ldr r4, [r4, o_SoundChannel_np] + cmp r4, 0 + bne _080AEAD6 +_080AEB48: + ldrb r0, [r5, o_MusicPlayerTrack_flags] + movs r1, 0xF0 + ands r0, r1 + strb r0, [r5, o_MusicPlayerTrack_flags] + mov r2, r9 +_080AEB52: + subs r2, 0x1 + ble _080AEB5C + movs r0, 0x50 + adds r5, r0 + bgt _080AEAB8 +_080AEB5C: + ldr r0, lt2_ID_NUMBER + str r0, [r7, o_MusicPlayerInfo_ident] + pop {r0-r7} + mov r8, r0 + mov r9, r1 + mov r10, r2 + mov r11, r3 + pop {r3} +call_r3_2: + bx r3 + .align 2, 0 + +lt_gClockTable: .word gClockTable +lt2_SOUND_INFO_PTR: .word SOUND_INFO_PTR +lt2_ID_NUMBER: .word ID_NUMBER + thumb_func_end MPlayMain + + thumb_func_start TrackStop +TrackStop: + push {r4-r6,lr} + adds r5, r1, 0 + ldrb r1, [r5, o_MusicPlayerTrack_flags] + movs r0, 0x80 + tst r0, r1 + beq TrackStop_Done + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq TrackStop_3 + movs r6, 0 +TrackStop_Loop: + ldrb r0, [r4, o_SoundChannel_status] + cmp r0, 0 + beq TrackStop_2 + ldrb r0, [r4, o_SoundChannel_type] + movs r3, 0x7 + ands r0, r3 + beq TrackStop_1 + ldr r3, =SOUND_INFO_PTR + ldr r3, [r3] + ldr r3, [r3, o_SoundInfo_CgbOscOff] + bl call_r3_2 +TrackStop_1: + strb r6, [r4, o_SoundChannel_status] +TrackStop_2: + str r6, [r4, o_SoundChannel_track] + ldr r4, [r4, o_SoundChannel_np] + cmp r4, 0 + bne TrackStop_Loop +TrackStop_3: + str r4, [r5, o_MusicPlayerTrack_chan] +TrackStop_Done: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end TrackStop + + thumb_func_start ChnVolSetAsm +ChnVolSetAsm: + ldrb r1, [r4, 0x12] + movs r0, 0x14 + ldrsb r2, [r4, r0] + movs r3, 0x80 + adds r3, r2 + muls r3, r1 + ldrb r0, [r5, 0x10] + muls r0, r3 + asrs r0, 14 + cmp r0, 0xFF + bls _080AEBD8 + movs r0, 0xFF +_080AEBD8: + strb r0, [r4, 0x2] + movs r3, 0x7F + subs r3, r2 + muls r3, r1 + ldrb r0, [r5, 0x11] + muls r0, r3 + asrs r0, 14 + cmp r0, 0xFF + bls _080AEBEC + movs r0, 0xFF +_080AEBEC: + strb r0, [r4, 0x3] + bx lr + thumb_func_end ChnVolSetAsm + + thumb_func_start ply_note +ply_note: + push {r4-r7,lr} + mov r4, r8 + mov r5, r9 + mov r6, r10 + mov r7, r11 + push {r4-r7} + sub sp, 0x18 + str r1, [sp] + adds r5, r2, 0 + ldr r1, =SOUND_INFO_PTR + ldr r1, [r1] + str r1, [sp, 0x4] + ldr r1, =gClockTable + adds r0, r1 + ldrb r0, [r0] + strb r0, [r5, o_MusicPlayerTrack_gateTime] + ldr r3, [r5, o_MusicPlayerTrack_cmdPtr] + ldrb r0, [r3] + cmp r0, 0x80 + bcs _080AEC36 + strb r0, [r5, o_MusicPlayerTrack_key] + adds r3, 0x1 + ldrb r0, [r3] + cmp r0, 0x80 + bcs _080AEC34 + strb r0, [r5, o_MusicPlayerTrack_velocity] + adds r3, 0x1 + ldrb r0, [r3] + cmp r0, 0x80 + bcs _080AEC34 + ldrb r1, [r5, o_MusicPlayerTrack_gateTime] + adds r1, r0 + strb r1, [r5, o_MusicPlayerTrack_gateTime] + adds r3, 0x1 +_080AEC34: + str r3, [r5, o_MusicPlayerTrack_cmdPtr] +_080AEC36: + movs r0, 0 + str r0, [sp, 0x14] + adds r4, r5, 0 + adds r4, o_MusicPlayerTrack_ToneData_type + ldrb r2, [r4] + movs r0, TONEDATA_TYPE_RHY | TONEDATA_TYPE_SPL + tst r0, r2 + beq _080AEC88 + ldrb r3, [r5, o_MusicPlayerTrack_key] + movs r0, TONEDATA_TYPE_SPL + tst r0, r2 + beq _080AEC56 + ldr r1, [r5, o_MusicPlayerTrack_ToneData_keySplitTable] + adds r1, r3 + ldrb r0, [r1] + b _080AEC58 +_080AEC56: + adds r0, r3, 0 +_080AEC58: + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r0, [r5, o_MusicPlayerTrack_ToneData_wav] + adds r1, r0 + mov r9, r1 + mov r6, r9 + ldrb r1, [r6] + movs r0, 0xC0 + tst r0, r1 + beq _080AEC70 + b _080AEDD6 +_080AEC70: + movs r0, 0x80 + tst r0, r2 + beq _080AEC8C + ldrb r1, [r6, 0x3] + movs r0, 0x80 + tst r0, r1 + beq _080AEC84 + subs r1, 0xC0 + lsls r1, 1 + str r1, [sp, 0x14] +_080AEC84: + ldrb r3, [r6, 0x1] + b _080AEC8C +_080AEC88: + mov r9, r4 + ldrb r3, [r5, 0x5] +_080AEC8C: + str r3, [sp, 0x8] + ldr r6, [sp] + ldrb r1, [r6, 0x9] + ldrb r0, [r5, 0x1D] + adds r0, r1 + cmp r0, 0xFF + bls _080AEC9C + movs r0, 0xFF +_080AEC9C: + str r0, [sp, 0x10] + mov r6, r9 + ldrb r0, [r6] + movs r6, 0x7 + ands r6, r0 + str r6, [sp, 0xC] + beq _080AECDC + ldr r0, [sp, 0x4] + ldr r4, [r0, 0x1C] + cmp r4, 0 + bne _080AECB4 + b _080AEDD6 +_080AECB4: + subs r6, 0x1 + lsls r0, r6, 6 + adds r4, r0 + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq _080AED30 + movs r0, 0x40 + tst r0, r1 + bne _080AED30 + ldrb r1, [r4, 0x13] + ldr r0, [sp, 0x10] + cmp r1, r0 + bcc _080AED30 + beq _080AECD4 + b _080AEDD6 +_080AECD4: + ldr r0, [r4, 0x2C] + cmp r0, r5 + bcs _080AED30 + b _080AEDD6 +_080AECDC: + ldr r6, [sp, 0x10] + adds r7, r5, 0 + movs r2, 0 + mov r8, r2 + ldr r4, [sp, 0x4] + ldrb r3, [r4, 0x6] + adds r4, 0x50 +_080AECEA: + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq _080AED30 + movs r0, 0x40 + tst r0, r1 + beq _080AED04 + cmp r2, 0 + bne _080AED08 + adds r2, 0x1 + ldrb r6, [r4, 0x13] + ldr r7, [r4, 0x2C] + b _080AED22 +_080AED04: + cmp r2, 0 + bne _080AED24 +_080AED08: + ldrb r0, [r4, 0x13] + cmp r0, r6 + bcs _080AED14 + adds r6, r0, 0 + ldr r7, [r4, 0x2C] + b _080AED22 +_080AED14: + bhi _080AED24 + ldr r0, [r4, 0x2C] + cmp r0, r7 + bls _080AED20 + adds r7, r0, 0 + b _080AED22 +_080AED20: + bcc _080AED24 +_080AED22: + mov r8, r4 +_080AED24: + adds r4, 0x40 + subs r3, 0x1 + bgt _080AECEA + mov r4, r8 + cmp r4, 0 + beq _080AEDD6 +_080AED30: + adds r0, r4, 0 + bl ClearChain + movs r1, 0 + str r1, [r4, 0x30] + ldr r3, [r5, 0x20] + str r3, [r4, 0x34] + cmp r3, 0 + beq _080AED44 + str r4, [r3, 0x30] +_080AED44: + str r4, [r5, 0x20] + str r5, [r4, 0x2C] + ldrb r0, [r5, 0x1B] + strb r0, [r5, 0x1C] + cmp r0, r1 + beq _080AED56 + adds r1, r5, 0 + bl clear_modM +_080AED56: + ldr r0, [sp] + adds r1, r5, 0 + bl TrkVolPitSet + ldr r0, [r5, 0x4] + str r0, [r4, 0x10] + ldr r0, [sp, 0x10] + strb r0, [r4, 0x13] + ldr r0, [sp, 0x8] + strb r0, [r4, 0x8] + ldr r0, [sp, 0x14] + strb r0, [r4, 0x14] + mov r6, r9 + ldrb r0, [r6] + strb r0, [r4, 0x1] + ldr r7, [r6, 0x4] + str r7, [r4, 0x24] + ldr r0, [r6, 0x8] + str r0, [r4, 0x4] + ldrh r0, [r5, 0x1E] + strh r0, [r4, 0xC] + bl ChnVolSetAsm + ldrb r1, [r4, 0x8] + movs r0, 0x8 + ldrsb r0, [r5, r0] + adds r3, r1, r0 + bpl _080AED90 + movs r3, 0 +_080AED90: + ldr r6, [sp, 0xC] + cmp r6, 0 + beq _080AEDBE + mov r6, r9 + ldrb r0, [r6, 0x2] + strb r0, [r4, 0x1E] + ldrb r1, [r6, 0x3] + movs r0, 0x80 + tst r0, r1 + bne _080AEDAA + movs r0, 0x70 + tst r0, r1 + bne _080AEDAC +_080AEDAA: + movs r1, 0x8 +_080AEDAC: + strb r1, [r4, 0x1F] + ldrb r2, [r5, 0x9] + adds r1, r3, 0 + ldr r0, [sp, 0xC] + ldr r3, [sp, 0x4] + ldr r3, [r3, 0x30] + bl call_r3_2 + b _080AEDC8 +_080AEDBE: + ldrb r2, [r5, 0x9] + adds r1, r3, 0 + adds r0, r7, 0 + bl MidiKeyToFreq +_080AEDC8: + str r0, [r4, 0x20] + movs r0, 0x80 + strb r0, [r4] + ldrb r1, [r5] + movs r0, 0xF0 + ands r0, r1 + strb r0, [r5] +_080AEDD6: + add sp, 0x18 + pop {r0-r7} + mov r8, r0 + mov r9, r1 + mov r10, r2 + mov r11, r3 + pop {r0} + bx r0 + .pool + thumb_func_end ply_note + + thumb_func_start ply_endtie +ply_endtie: + push {r4,r5} + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + cmp r3, 0x80 + bcs _080AEE02 + strb r3, [r1, o_MusicPlayerTrack_key] + adds r2, 0x1 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + b _080AEE04 +_080AEE02: + ldrb r3, [r1, o_MusicPlayerTrack_key] +_080AEE04: + ldr r1, [r1, o_MusicPlayerTrack_chan] + cmp r1, 0 + beq _080AEE2C + movs r4, 0x83 + movs r5, 0x40 +_080AEE0E: + ldrb r2, [r1, o_SoundChannel_status] + tst r2, r4 + beq _080AEE26 + tst r2, r5 + bne _080AEE26 + ldrb r0, [r1, o_SoundChannel_mk] + cmp r0, r3 + bne _080AEE26 + movs r0, 0x40 + orrs r2, r0 + strb r2, [r1, o_SoundChannel_status] + b _080AEE2C +_080AEE26: + ldr r1, [r1, o_SoundChannel_np] + cmp r1, 0 + bne _080AEE0E +_080AEE2C: + pop {r4,r5} + bx lr + thumb_func_end ply_endtie + + thumb_func_start clear_modM +clear_modM: + movs r2, 0 + strb r2, [r1, o_MusicPlayerTrack_modM] + strb r2, [r1, o_MusicPlayerTrack_lfoSpeedC] + ldrb r2, [r1, o_MusicPlayerTrack_modT] + cmp r2, 0 + bne _080AEE40 + movs r2, 0xC + b _080AEE42 +_080AEE40: + movs r2, 0x3 +_080AEE42: + ldrb r3, [r1, o_MusicPlayerTrack_flags] + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx lr + thumb_func_end clear_modM + + thumb_func_start ld_r3_tp_adr_i_unchecked +ld_r3_tp_adr_i_unchecked: + ldr r2, [r1, 0x40] + adds r3, r2, 0x1 + str r3, [r1, 0x40] + ldrb r3, [r2] + bx lr + thumb_func_end ld_r3_tp_adr_i_unchecked + + thumb_func_start ply_lfos +ply_lfos: + mov r12, lr + bl ld_r3_tp_adr_i_unchecked + strb r3, [r1, o_MusicPlayerTrack_lfoSpeed] + cmp r3, 0 + bne _080AEE68 + bl clear_modM +_080AEE68: + bx r12 + thumb_func_end ply_lfos + + thumb_func_start ply_mod +ply_mod: + mov r12, lr + bl ld_r3_tp_adr_i_unchecked + strb r3, [r1, o_MusicPlayerTrack_mod] + cmp r3, 0 + bne _080AEE7C + bl clear_modM +_080AEE7C: + bx r12 + thumb_func_end ply_mod + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/m4a_2.s b/asm/m4a_2.s new file mode 100644 index 0000000..eb525ce --- /dev/null +++ b/asm/m4a_2.s @@ -0,0 +1,70 @@ + .include "asm/macros.inc" + .include "constants/gba_constants.inc" + .include "constants/m4a_constants.inc" + + .syntax unified + + .text + + thumb_func_start CgbModVol +CgbModVol: + push {r4,lr} + adds r1, r0, 0 + ldrb r0, [r1, 0x2] + lsls r2, r0, 24 + lsrs r4, r2, 24 + ldrb r3, [r1, 0x3] + lsls r0, r3, 24 + lsrs r3, r0, 24 + cmp r4, r3 + bcc _080AFA94 + lsrs r0, r2, 25 + cmp r0, r3 + bcc _080AFAA0 + movs r0, 0xF + strb r0, [r1, 0x1B] + b _080AFAAE +_080AFA94: + lsrs r0, 25 + cmp r0, r4 + bcc _080AFAA0 + movs r0, 0xF0 + strb r0, [r1, 0x1B] + b _080AFAAE +_080AFAA0: + movs r0, 0xFF + strb r0, [r1, 0x1B] + ldrb r2, [r1, 0x3] + ldrb r3, [r1, 0x2] + adds r0, r2, r3 + lsrs r0, 4 + b _080AFABE +_080AFAAE: + ldrb r2, [r1, 0x3] + ldrb r3, [r1, 0x2] + adds r0, r2, r3 + lsrs r0, 4 + strb r0, [r1, 0xA] + cmp r0, 0xF + bls _080AFAC0 + movs r0, 0xF +_080AFABE: + strb r0, [r1, 0xA] +_080AFAC0: + ldrb r2, [r1, 0x6] + ldrb r3, [r1, 0xA] + adds r0, r2, 0 + muls r0, r3 + adds r0, 0xF + asrs r0, 4 + strb r0, [r1, 0x19] + ldrb r0, [r1, 0x1C] + ldrb r2, [r1, 0x1B] + ands r0, r2 + strb r0, [r1, 0x1B] + pop {r4} + pop {r0} + bx r0 + thumb_func_end CgbModVol + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/m4a_3.s b/asm/m4a_3.s new file mode 100644 index 0000000..4747b3f --- /dev/null +++ b/asm/m4a_3.s @@ -0,0 +1,574 @@ + .include "asm/macros.inc" + .include "constants/gba_constants.inc" + .include "constants/m4a_constants.inc" + + .syntax unified + + .text + + thumb_func_start CgbSound +CgbSound: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + ldr r0, =SOUND_INFO_PTR + ldr r0, [r0] + str r0, [sp, 0x4] + ldrb r0, [r0, 0xA] + cmp r0, 0 + beq _080AFB00 + subs r0, 0x1 + ldr r1, [sp, 0x4] + strb r0, [r1, 0xA] + b _080AFB06 + .pool +_080AFB00: + movs r0, 0xE + ldr r2, [sp, 0x4] + strb r0, [r2, 0xA] +_080AFB06: + movs r6, 0x1 + ldr r0, [sp, 0x4] + ldr r4, [r0, 0x1C] +_080AFB0C: + ldrb r1, [r4] + movs r0, 0xC7 + ands r0, r1 + adds r2, r6, 0x1 + mov r10, r2 + movs r2, 0x40 + adds r2, r4 + mov r9, r2 + cmp r0, 0 + bne _080AFB22 + b _080AFF0C +_080AFB22: + cmp r6, 0x2 + beq _080AFB54 + cmp r6, 0x2 + bgt _080AFB30 + cmp r6, 0x1 + beq _080AFB36 + b _080AFB8C +_080AFB30: + cmp r6, 0x3 + beq _080AFB6C + b _080AFB8C +_080AFB36: + ldr r0, =REG_NR10 + str r0, [sp, 0x8] + ldr r7, =REG_NR11 + ldr r2, =REG_NR12 + str r2, [sp, 0xC] + adds r0, 0x4 + str r0, [sp, 0x10] + adds r2, 0x2 + b _080AFB9C + .pool +_080AFB54: + ldr r0, =REG_NR10 + 1 + str r0, [sp, 0x8] + ldr r7, =REG_NR21 + ldr r2, =REG_NR22 + b _080AFB94 + .pool +_080AFB6C: + ldr r0, =REG_NR30 + str r0, [sp, 0x8] + ldr r7, =REG_NR31 + ldr r2, =REG_NR32 + str r2, [sp, 0xC] + adds r0, 0x4 + str r0, [sp, 0x10] + adds r2, 0x2 + b _080AFB9C + .pool +_080AFB8C: + ldr r0, =REG_NR30 + 1 + str r0, [sp, 0x8] + ldr r7, =REG_NR41 + ldr r2, =REG_NR42 +_080AFB94: + str r2, [sp, 0xC] + adds r0, 0xB + str r0, [sp, 0x10] + adds r2, 0x4 +_080AFB9C: + str r2, [sp, 0x14] + ldr r0, [sp, 0x4] + ldrb r0, [r0, 0xA] + str r0, [sp] + ldr r2, [sp, 0xC] + ldrb r0, [r2] + mov r8, r0 + adds r2, r1, 0 + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + beq _080AFC92 + movs r3, 0x40 + adds r0, r3, 0 + ands r0, r2 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r6, 0x1 + mov r10, r0 + movs r1, 0x40 + adds r1, r4 + mov r9, r1 + cmp r5, 0 + bne _080AFCB6 + movs r0, 0x3 + strb r0, [r4] + strb r0, [r4, 0x1D] + adds r0, r4, 0 + str r3, [sp, 0x18] + bl CgbModVol + ldr r3, [sp, 0x18] + cmp r6, 0x2 + beq _080AFC04 + cmp r6, 0x2 + bgt _080AFBF8 + cmp r6, 0x1 + beq _080AFBFE + b _080AFC58 + .pool +_080AFBF8: + cmp r6, 0x3 + beq _080AFC10 + b _080AFC58 +_080AFBFE: + ldrb r0, [r4, 0x1F] + ldr r2, [sp, 0x8] + strb r0, [r2] +_080AFC04: + ldr r0, [r4, 0x24] + lsls r0, 6 + ldrb r1, [r4, 0x1E] + adds r0, r1, r0 + strb r0, [r7] + b _080AFC64 +_080AFC10: + ldr r1, [r4, 0x24] + ldr r0, [r4, 0x28] + cmp r1, r0 + beq _080AFC38 + ldr r2, [sp, 0x8] + strb r3, [r2] + ldr r1, =REG_WAVE_RAM + ldr r2, [r4, 0x24] + ldr r0, [r2] + str r0, [r1] + adds r1, 0x4 + ldr r0, [r2, 0x4] + str r0, [r1] + adds r1, 0x4 + ldr r0, [r2, 0x8] + str r0, [r1] + adds r1, 0x4 + ldr r0, [r2, 0xC] + str r0, [r1] + str r2, [r4, 0x28] +_080AFC38: + ldr r0, [sp, 0x8] + strb r5, [r0] + ldrb r0, [r4, 0x1E] + strb r0, [r7] + ldrb r0, [r4, 0x1E] + cmp r0, 0 + beq _080AFC50 + movs r0, 0xC0 + b _080AFC72 + .pool +_080AFC50: + movs r1, 0x80 + negs r1, r1 + strb r1, [r4, 0x1A] + b _080AFC74 +_080AFC58: + ldrb r0, [r4, 0x1E] + strb r0, [r7] + ldr r0, [r4, 0x24] + lsls r0, 3 + ldr r2, [sp, 0x10] + strb r0, [r2] +_080AFC64: + ldrb r0, [r4, 0x4] + adds r0, 0x8 + mov r8, r0 + ldrb r0, [r4, 0x1E] + cmp r0, 0 + beq _080AFC72 + movs r0, 0x40 +_080AFC72: + strb r0, [r4, 0x1A] +_080AFC74: + ldrb r1, [r4, 0x4] + movs r2, 0 + strb r1, [r4, 0xB] + movs r0, 0xFF + ands r0, r1 + adds r1, r6, 0x1 + mov r10, r1 + movs r1, 0x40 + adds r1, r4 + mov r9, r1 + cmp r0, 0 + bne _080AFC8E + b _080AFDCA +_080AFC8E: + strb r2, [r4, 0x9] + b _080AFDF8 +_080AFC92: + movs r0, 0x4 + ands r0, r2 + cmp r0, 0 + beq _080AFCC4 + ldrb r0, [r4, 0xD] + subs r0, 0x1 + strb r0, [r4, 0xD] + movs r2, 0xFF + ands r0, r2 + lsls r0, 24 + adds r1, r6, 0x1 + mov r10, r1 + movs r2, 0x40 + adds r2, r4 + mov r9, r2 + cmp r0, 0 + ble _080AFCB6 + b _080AFE0A +_080AFCB6: + lsls r0, r6, 24 + lsrs r0, 24 + bl CgbOscOff + movs r0, 0 + strb r0, [r4] + b _080AFF08 +_080AFCC4: + movs r0, 0x40 + ands r0, r1 + adds r2, r6, 0x1 + mov r10, r2 + movs r2, 0x40 + adds r2, r4 + mov r9, r2 + cmp r0, 0 + beq _080AFD04 + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _080AFD04 + movs r0, 0xFC + ands r0, r1 + movs r2, 0 + strb r0, [r4] + ldrb r1, [r4, 0x7] + strb r1, [r4, 0xB] + movs r0, 0xFF + ands r0, r1 + cmp r0, 0 + beq _080AFD36 + movs r0, 0x1 + ldrb r1, [r4, 0x1D] + orrs r0, r1 + strb r0, [r4, 0x1D] + cmp r6, 0x3 + beq _080AFDF8 + ldrb r2, [r4, 0x7] + mov r8, r2 + b _080AFDF8 +_080AFD04: + ldrb r0, [r4, 0xB] + cmp r0, 0 + bne _080AFDF8 + cmp r6, 0x3 + bne _080AFD16 + movs r0, 0x1 + ldrb r1, [r4, 0x1D] + orrs r0, r1 + strb r0, [r4, 0x1D] +_080AFD16: + adds r0, r4, 0 + bl CgbModVol + movs r0, 0x3 + ldrb r2, [r4] + ands r0, r2 + cmp r0, 0 + bne _080AFD6A + ldrb r0, [r4, 0x9] + subs r0, 0x1 + strb r0, [r4, 0x9] + movs r1, 0xFF + ands r0, r1 + lsls r0, 24 + cmp r0, 0 + bgt _080AFD66 +_080AFD36: + ldrb r2, [r4, 0xC] + ldrb r1, [r4, 0xA] + adds r0, r2, 0 + muls r0, r1 + adds r0, 0xFF + asrs r0, 8 + movs r1, 0 + strb r0, [r4, 0x9] + lsls r0, 24 + cmp r0, 0 + beq _080AFCB6 + movs r0, 0x4 + ldrb r2, [r4] + orrs r0, r2 + strb r0, [r4] + movs r0, 0x1 + ldrb r1, [r4, 0x1D] + orrs r0, r1 + strb r0, [r4, 0x1D] + cmp r6, 0x3 + beq _080AFE0A + movs r2, 0x8 + mov r8, r2 + b _080AFE0A +_080AFD66: + ldrb r0, [r4, 0x7] + b _080AFDF6 +_080AFD6A: + cmp r0, 0x1 + bne _080AFD76 +_080AFD6E: + ldrb r0, [r4, 0x19] + strb r0, [r4, 0x9] + movs r0, 0x7 + b _080AFDF6 +_080AFD76: + cmp r0, 0x2 + bne _080AFDBA + ldrb r0, [r4, 0x9] + subs r0, 0x1 + strb r0, [r4, 0x9] + movs r1, 0xFF + ands r0, r1 + lsls r0, 24 + ldrb r2, [r4, 0x19] + lsls r1, r2, 24 + cmp r0, r1 + bgt _080AFDB6 +_080AFD8E: + ldrb r0, [r4, 0x6] + cmp r0, 0 + bne _080AFD9E + movs r0, 0xFC + ldrb r1, [r4] + ands r0, r1 + strb r0, [r4] + b _080AFD36 +_080AFD9E: + ldrb r0, [r4] + subs r0, 0x1 + strb r0, [r4] + movs r0, 0x1 + ldrb r2, [r4, 0x1D] + orrs r0, r2 + strb r0, [r4, 0x1D] + cmp r6, 0x3 + beq _080AFD6E + movs r0, 0x8 + mov r8, r0 + b _080AFD6E +_080AFDB6: + ldrb r0, [r4, 0x5] + b _080AFDF6 +_080AFDBA: + ldrb r0, [r4, 0x9] + adds r0, 0x1 + strb r0, [r4, 0x9] + movs r1, 0xFF + ands r0, r1 + ldrb r2, [r4, 0xA] + cmp r0, r2 + bcc _080AFDF4 +_080AFDCA: + ldrb r0, [r4] + subs r0, 0x1 + movs r2, 0 + strb r0, [r4] + ldrb r1, [r4, 0x5] + strb r1, [r4, 0xB] + movs r0, 0xFF + ands r0, r1 + cmp r0, 0 + beq _080AFD8E + movs r0, 0x1 + ldrb r1, [r4, 0x1D] + orrs r0, r1 + strb r0, [r4, 0x1D] + ldrb r0, [r4, 0xA] + strb r0, [r4, 0x9] + cmp r6, 0x3 + beq _080AFDF8 + ldrb r2, [r4, 0x5] + mov r8, r2 + b _080AFDF8 +_080AFDF4: + ldrb r0, [r4, 0x4] +_080AFDF6: + strb r0, [r4, 0xB] +_080AFDF8: + ldrb r0, [r4, 0xB] + subs r0, 0x1 + strb r0, [r4, 0xB] + ldr r0, [sp] + cmp r0, 0 + bne _080AFE0A + subs r0, 0x1 + str r0, [sp] + b _080AFD04 +_080AFE0A: + movs r0, 0x2 + ldrb r1, [r4, 0x1D] + ands r0, r1 + cmp r0, 0 + beq _080AFE82 + cmp r6, 0x3 + bgt _080AFE4A + movs r0, 0x8 + ldrb r2, [r4, 0x1] + ands r0, r2 + cmp r0, 0 + beq _080AFE4A + ldr r0, =REG_SOUNDBIAS + 1 + ldrb r0, [r0] + cmp r0, 0x3F + bgt _080AFE3C + ldr r0, [r4, 0x20] + adds r0, 0x2 + ldr r1, =0x000007fc + b _080AFE46 + .pool +_080AFE3C: + cmp r0, 0x7F + bgt _080AFE4A + ldr r0, [r4, 0x20] + adds r0, 0x1 + ldr r1, =0x000007fe +_080AFE46: + ands r0, r1 + str r0, [r4, 0x20] +_080AFE4A: + cmp r6, 0x4 + beq _080AFE5C + ldr r0, [r4, 0x20] + ldr r1, [sp, 0x10] + strb r0, [r1] + b _080AFE6A + .pool +_080AFE5C: + ldr r2, [sp, 0x10] + ldrb r0, [r2] + movs r1, 0x8 + ands r1, r0 + ldr r0, [r4, 0x20] + orrs r0, r1 + strb r0, [r2] +_080AFE6A: + movs r0, 0xC0 + ldrb r1, [r4, 0x1A] + ands r0, r1 + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r0, r1, r0 + strb r0, [r4, 0x1A] + movs r2, 0xFF + ands r0, r2 + ldr r1, [sp, 0x14] + strb r0, [r1] +_080AFE82: + movs r0, 0x1 + ldrb r2, [r4, 0x1D] + ands r0, r2 + cmp r0, 0 + beq _080AFF08 + ldr r1, =REG_NR51 + ldrb r0, [r1] + ldrb r2, [r4, 0x1C] + bics r0, r2 + ldrb r2, [r4, 0x1B] + orrs r0, r2 + strb r0, [r1] + cmp r6, 0x3 + bne _080AFED4 + ldr r0, =gCgb3Vol + ldrb r1, [r4, 0x9] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, [sp, 0xC] + strb r0, [r2] + movs r1, 0x80 + adds r0, r1, 0 + ldrb r2, [r4, 0x1A] + ands r0, r2 + cmp r0, 0 + beq _080AFF08 + ldr r0, [sp, 0x8] + strb r1, [r0] + ldrb r0, [r4, 0x1A] + ldr r1, [sp, 0x14] + strb r0, [r1] + movs r0, 0x7F + ldrb r2, [r4, 0x1A] + ands r0, r2 + strb r0, [r4, 0x1A] + b _080AFF08 + .pool +_080AFED4: + movs r0, 0xF + mov r1, r8 + ands r1, r0 + mov r8, r1 + ldrb r2, [r4, 0x9] + lsls r0, r2, 4 + add r0, r8 + ldr r1, [sp, 0xC] + strb r0, [r1] + movs r2, 0x80 + ldrb r0, [r4, 0x1A] + orrs r0, r2 + ldr r1, [sp, 0x14] + strb r0, [r1] + cmp r6, 0x1 + bne _080AFF08 + ldr r0, [sp, 0x8] + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080AFF08 + ldrb r0, [r4, 0x1A] + orrs r0, r2 + ldr r1, [sp, 0x14] + strb r0, [r1] +_080AFF08: + movs r0, 0 + strb r0, [r4, 0x1D] +_080AFF0C: + mov r6, r10 + mov r4, r9 + cmp r6, 0x4 + bgt _080AFF16 + b _080AFB0C +_080AFF16: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end CgbSound + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/memory.s b/asm/memory.s index e364f1b..1b9d36e 100644 --- a/asm/memory.s +++ b/asm/memory.s @@ -4,268 +4,7 @@ .syntax unified .text - - thumb_func_start InitHeap -InitHeap: - push {lr} - bl InitHeapInternal - pop {r0} - bx r0 - thumb_func_end InitHeap - - thumb_func_start MemoryClear8 -MemoryClear8: - push {lr} - cmp r1, 0 - ble _08002EAA - movs r2, 0 -_08002EA0: - subs r1, 0x1 - strb r2, [r0] - adds r0, 0x1 - cmp r1, 0 - bgt _08002EA0 -_08002EAA: - pop {r0} - bx r0 - thumb_func_end MemoryClear8 - - thumb_func_start MemoryClear16 -MemoryClear16: - push {lr} - cmp r1, 0 - ble _08002EC2 - movs r2, 0 -_08002EB8: - subs r1, 0x2 - strh r2, [r0] - adds r0, 0x2 - cmp r1, 0 - bgt _08002EB8 -_08002EC2: - pop {r0} - bx r0 - thumb_func_end MemoryClear16 - - thumb_func_start MemoryClear32 -MemoryClear32: - push {lr} - bl CpuClear - pop {r0} - bx r0 - thumb_func_end MemoryClear32 - - thumb_func_start MemoryFill8 -MemoryFill8: - push {lr} - lsls r1, 24 - lsrs r1, 24 - cmp r2, 0 - ble _08002EE8 -_08002EDE: - subs r2, 0x1 - strb r1, [r0] - adds r0, 0x1 - cmp r2, 0 - bgt _08002EDE -_08002EE8: - pop {r0} - bx r0 - thumb_func_end MemoryFill8 - - thumb_func_start MemoryFill16 -MemoryFill16: - push {lr} - lsls r1, 16 - lsrs r1, 16 - cmp r2, 0 - ble _08002F00 -_08002EF6: - subs r2, 0x2 - strh r1, [r0] - adds r0, 0x2 - cmp r2, 0 - bgt _08002EF6 -_08002F00: - pop {r0} - bx r0 - thumb_func_end MemoryFill16 - - thumb_func_start MemoryFill32 -MemoryFill32: - push {lr} - cmp r2, 0 - ble _08002F12 -_08002F0A: - subs r2, 0x4 - stm r0!, {r1} - cmp r2, 0 - bgt _08002F0A -_08002F12: - pop {r0} - bx r0 - thumb_func_end MemoryFill32 - - thumb_func_start MemoryCopy8 -MemoryCopy8: - push {lr} - adds r3, r0, 0 - cmp r2, 0 - ble _08002F2E -_08002F20: - subs r2, 0x1 - ldrb r0, [r1] - strb r0, [r3] - adds r1, 0x1 - adds r3, 0x1 - cmp r2, 0 - bgt _08002F20 -_08002F2E: - pop {r0} - bx r0 - thumb_func_end MemoryCopy8 - - thumb_func_start MemoryCopy16 -MemoryCopy16: - push {lr} - adds r3, r0, 0 - cmp r2, 0 - ble _08002F4A -_08002F3C: - subs r2, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - cmp r2, 0 - bgt _08002F3C -_08002F4A: - pop {r0} - bx r0 - thumb_func_end MemoryCopy16 - - thumb_func_start MemoryCopy32 -MemoryCopy32: - push {lr} - adds r3, r0, 0 - cmp r2, 0 - ble _08002F62 -_08002F58: - subs r2, 0x4 - ldm r1!, {r0} - stm r3!, {r0} - cmp r2, 0 - bgt _08002F58 -_08002F62: - pop {r0} - bx r0 - thumb_func_end MemoryCopy32 - - thumb_func_start InitHeapInternal -InitHeapInternal: - push {lr} - sub sp, 0x8 - ldr r0, _08002F90 - str r0, [sp] - movs r0, 0x90 - lsls r0, 10 - str r0, [sp, 0x4] - ldr r1, _08002F94 - movs r0, 0 - str r0, [r1] - ldr r0, _08002F98 - ldr r2, _08002F9C - mov r1, sp - movs r3, 0x20 - bl DoInitHeap - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_08002F90: .4byte gUnknown_20011D0 -_08002F94: .4byte gUnknown_2000EA8 -_08002F98: .4byte gUnknown_2000EB0 -_08002F9C: .4byte gUnknown_2000ED0 - thumb_func_end InitHeapInternal - - thumb_func_start DoInitHeap -DoInitHeap: - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - ldr r4, [r1, 0x4] - mov r9, r4 - movs r4, 0x4 - negs r4, r4 - mov r5, r9 - ands r5, r4 - mov r9, r5 - ldr r6, _08002FFC - ldr r4, _08003000 - mov r8, r4 - ldr r5, [r4] - lsls r4, r5, 2 - adds r4, r6 - str r0, [r4] - adds r5, 0x1 - mov r4, r8 - str r5, [r4] - ldr r5, [r1] - str r5, [r0, 0x14] - mov r1, r9 - str r1, [r0, 0x18] - movs r1, 0x2 - str r1, [r0] - movs r4, 0 - str r4, [r0, 0x4] - str r2, [r0, 0x8] - movs r1, 0x1 - str r1, [r0, 0xC] - str r3, [r0, 0x10] - str r4, [r2] - str r4, [r2, 0x4] - str r5, [r2, 0xC] - mov r5, r9 - str r5, [r2, 0x10] - str r4, [r2, 0x14] - str r4, [r2, 0x8] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08002FFC: .4byte gUnknown_2000E88 -_08003000: .4byte gUnknown_2000EA8 - thumb_func_end DoInitHeap - - thumb_func_start InitSubHeap -InitSubHeap: - push {r4,r5,lr} - sub sp, 0x8 - adds r3, r2, 0 - lsls r4, r3, 1 - adds r4, r3 - movs r2, 0x4 - negs r2, r2 - lsls r4, 3 - ldr r5, [r1, 0x4] - subs r5, r4 - ands r5, r2 - ldr r2, [r1] - adds r4, r2, r4 - str r4, [sp] - str r5, [sp, 0x4] - mov r1, sp - bl DoInitHeap - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end InitSubHeap - + thumb_func_start xxx_memory_attr_related xxx_memory_attr_related: push {lr} @@ -454,7 +193,7 @@ _0800315E: _08003168: movs r7, 0x1 negs r7, r7 - ldr r6, _080031A4 + ldr r6, =0x24001 ldr r0, [r4, 0xC] subs r3, r0, 0x1 lsls r0, r3, 1 @@ -486,7 +225,7 @@ _080031A0: adds r0, r7, 0 b _080031AC .align 2, 0 -_080031A4: .4byte 0x00024001 + .pool _080031A8: movs r0, 0x1 negs r0, r0 @@ -561,13 +300,12 @@ _08003222: str r2, [r1, 0xC] cmp r2, r8 ble _08003240 - ldr r0, _08003238 - ldr r1, _0800323C + ldr r0, =gUnknown_80B7EB8 + ldr r1, =gUnknown_80B7EC4 mov r3, r8 bl FatalError .align 2, 0 -_08003238: .4byte gUnknown_80B7EB8 -_0800323C: .4byte gUnknown_80B7EC4 + .pool _08003240: ldr r0, [sp, 0xC] add r0, r9 @@ -671,13 +409,12 @@ _080032F6: str r2, [r7, 0xC] cmp r2, r8 ble _08003314 - ldr r0, _0800330C - ldr r1, _08003310 + ldr r0, =gUnknown_80B7EFC + ldr r1, =gUnknown_80B7EC4 mov r3, r8 bl FatalError .align 2, 0 -_0800330C: .4byte gUnknown_80B7EFC -_08003310: .4byte gUnknown_80B7EC4 + .pool _08003314: ldr r0, [r4, 0x10] ldr r1, [sp, 0x10] @@ -717,7 +454,7 @@ _LocateSet: adds r6, r2, 0 cmp r5, 0 bne _0800335C - ldr r5, _08003390 + ldr r5, =gMainHeapDescriptor _0800335C: asrs r4, r6, 8 movs r0, 0x1 @@ -743,7 +480,7 @@ _0800335C: ldr r0, [r0, 0xC] b _080033CC .align 2, 0 -_08003390: .4byte gUnknown_2000EB0 + .pool _08003394: adds r0, r5, 0 adds r1, r4, 0 @@ -760,16 +497,15 @@ _08003394: ldr r0, [r0, 0xC] b _080033CC _080033B4: - ldr r0, _080033C4 - ldr r1, _080033C8 + ldr r0, =gUnknown_80B7F14 + ldr r1, =gUnknown_80B7F20 str r4, [sp] str r6, [sp, 0x4] adds r2, r5, 0 adds r3, r7, 0 bl FatalError .align 2, 0 -_080033C4: .4byte gUnknown_80B7F14 -_080033C8: .4byte gUnknown_80B7F20 + .pool _080033CC: add sp, 0x8 pop {r4-r7} @@ -782,25 +518,25 @@ MemoryAlloc: push {lr} adds r3, r0, 0 adds r2, r1, 0 - ldr r0, _080033E8 + ldr r0, =gMainHeapDescriptor adds r1, r3, 0 bl DoAlloc pop {r1} bx r1 .align 2, 0 -_080033E8: .4byte gUnknown_2000EB0 + .pool thumb_func_end MemoryAlloc thumb_func_start MemoryFree MemoryFree: push {lr} adds r1, r0, 0 - ldr r0, _080033FC + ldr r0, =gMainHeapDescriptor bl DoFree pop {r0} bx r0 .align 2, 0 -_080033FC: .4byte gUnknown_2000EB0 + .pool thumb_func_end MemoryFree thumb_func_start MemoryLocate_LocalCreate @@ -813,7 +549,7 @@ MemoryLocate_LocalCreate: adds r6, r3, 0 cmp r4, 0 bne _08003412 - ldr r4, _0800342C + ldr r4, =gMainHeapDescriptor _08003412: adds r0, r4, 0 movs r1, 0x9 @@ -822,14 +558,12 @@ _08003412: adds r1, r0, 0 cmp r1, 0 bge _08003438 - ldr r0, _08003430 - ldr r1, _08003434 + ldr r0, =gUnknown_80B7F88 + ldr r1, =gUnknown_80B7F94 adds r2, r5, 0 bl FatalError .align 2, 0 -_0800342C: .4byte gUnknown_2000EB0 -_08003430: .4byte gUnknown_80B7F88 -_08003434: .4byte gUnknown_80B7F94 + .pool _08003438: str r6, [sp] adds r0, r4, 0 @@ -893,11 +627,11 @@ _080034A2: movs r0, 0 mov r12, r0 movs r3, 0 - ldr r6, _080034E0 + ldr r6, =gHeapCount ldr r0, [r6] cmp r12, r0 bge _080034F2 - ldr r5, _080034E4 + ldr r5, =gHeapDescriptorList adds r1, r6, 0 adds r7, r5, 0 movs r2, 0 @@ -911,7 +645,7 @@ _080034BC: str r0, [r1] cmp r3, r0 bge _080034F8 - ldr r1, _080034E0 + ldr r1, =gHeapCount adds r2, r7 _080034D2: ldr r0, [r2, 0x4] @@ -922,8 +656,7 @@ _080034D2: blt _080034D2 b _080034F8 .align 2, 0 -_080034E0: .4byte gUnknown_2000EA8 -_080034E4: .4byte gUnknown_2000E88 + .pool _080034E8: adds r2, 0x4 adds r3, 0x1 @@ -966,7 +699,7 @@ DoFree: adds r4, r0, 0 cmp r4, 0 bne _0800352E - ldr r4, _080035D4 + ldr r4, =gMainHeapDescriptor _0800352E: cmp r1, 0 beq _080035E4 @@ -1056,7 +789,7 @@ _080035BA: blt _080035BA b _080035E4 .align 2, 0 -_080035D4: .4byte gUnknown_2000EB0 + .pool _080035D8: movs r0, 0x1 add r8, r0 diff --git a/asm/rom_header.inc b/asm/rom_header.inc index 09b95ec..6730efa 100644 --- a/asm/rom_header.inc +++ b/asm/rom_header.inc @@ -1,37 +1,19 @@ .global RomHeaderNintendoLogo RomHeaderNintendoLogo: - .byte 0x24,0xff,0xae,0x51,0x69,0x9a,0xa2,0x21 - .byte 0x3d,0x84,0x82,0x0a,0x84,0xe4,0x09,0xad - .byte 0x11,0x24,0x8b,0x98,0xc0,0x81,0x7f,0x21 - .byte 0xa3,0x52,0xbe,0x19,0x93,0x09,0xce,0x20 - .byte 0x10,0x46,0x4a,0x4a,0xf8,0x27,0x31,0xec - .byte 0x58,0xc7,0xe8,0x33,0x82,0xe3,0xce,0xbf - .byte 0x85,0xf4,0xdf,0x94,0xce,0x4b,0x09,0xc1 - .byte 0x94,0x56,0x8a,0xc0,0x13,0x72,0xa7,0xfc - .byte 0x9f,0x84,0x4d,0x73,0xa3,0xca,0x9a,0x61 - .byte 0x58,0x97,0xa3,0x27,0xfc,0x03,0x98,0x76 - .byte 0x23,0x1d,0xc7,0x61,0x03,0x04,0xae,0x56 - .byte 0xbf,0x38,0x84,0x00,0x40,0xa7,0x0e,0xfd - .byte 0xff,0x52,0xfe,0x03,0x6f,0x95,0x30,0xf1 - .byte 0x97,0xfb,0xc0,0x85,0x60,0xd6,0x80,0x25 - .byte 0xa9,0x63,0xbe,0x03,0x01,0x4e,0x38,0xe2 - .byte 0xf9,0xa2,0x34,0xff,0xbb,0x3e,0x03,0x44 - .byte 0x78,0x00,0x90,0xcb,0x88,0x11,0x3a,0x94 - .byte 0x65,0xc0,0x7c,0x63,0x87,0xf0,0x3c,0xaf - .byte 0xd6,0x25,0xe4,0x8b,0x38,0x0a,0xac,0x72 - .byte 0x21,0xd4,0xf8,0x07 + .space 156 RomHeaderGameTitle: - .ascii "POKE DUNGEON" + .space 12 + .global RomHeaderGameCode RomHeaderGameCode: - .ascii "B24E" + .space 4 RomHeaderMakerCode: - .ascii "01" + .space 2 RomHeaderMagic: - .byte 0x96 + .byte 0 RomHeaderMainUnitCode: .byte 0 @@ -42,11 +24,12 @@ RomHeaderDeviceType: RomHeaderReserved1: .space 7 + .global RomHeaderSoftwareVersion RomHeaderSoftwareVersion: .byte 0 RomHeaderChecksum: - .byte 0xA4 + .byte 0 RomHeaderReserved2: .space 2 @@ -5,116 +5,18 @@ .text - thumb_func_start sub_8011C1C -sub_8011C1C: - ldr r0, _08011C24 - ldr r0, [r0] - bx lr - .align 2, 0 -_08011C24: .4byte gUnknown_203B17C - thumb_func_end sub_8011C1C - - thumb_func_start sub_8011C28 -sub_8011C28: - ldr r1, _08011C30 - str r0, [r1] - bx lr - .align 2, 0 -_08011C30: .4byte gUnknown_203B17C - thumb_func_end sub_8011C28 - - thumb_func_start sub_8011C34 -sub_8011C34: - ldr r0, _08011C3C - ldr r0, [r0] - bx lr - .align 2, 0 -_08011C3C: .4byte gUnknown_202DE28 - thumb_func_end sub_8011C34 - - thumb_func_start sub_8011C40 -sub_8011C40: - ldr r1, _08011C48 - str r0, [r1] - bx lr - .align 2, 0 -_08011C48: .4byte gUnknown_202DE28 - thumb_func_end sub_8011C40 - - thumb_func_start sub_8011C4C -sub_8011C4C: - ldr r0, _08011C54 - ldr r0, [r0] - bx lr - .align 2, 0 -_08011C54: .4byte gUnknown_203B180 - thumb_func_end sub_8011C4C - - thumb_func_start sub_8011C58 -sub_8011C58: - push {r4,lr} - adds r4, r0, 0 - movs r2, 0 - lsrs r1, 2 - cmp r1, 0x1 - ble _08011C72 - adds r3, r4, 0x4 - subs r1, 0x1 -_08011C68: - ldm r3!, {r0} - adds r2, r0 - subs r1, 0x1 - cmp r1, 0 - bne _08011C68 -_08011C72: - str r2, [r4] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8011C58 - - thumb_func_start sub_8011C7C -sub_8011C7C: - push {r4,lr} - adds r4, r0, 0 - movs r2, 0 - lsrs r1, 2 - cmp r1, 0x1 - ble _08011C96 - adds r3, r4, 0x4 - subs r1, 0x1 -_08011C8C: - ldm r3!, {r0} - adds r2, r0 - subs r1, 0x1 - cmp r1, 0 - bne _08011C8C -_08011C96: - ldr r0, [r4] - cmp r0, r2 - bne _08011CA0 - movs r0, 0 - b _08011CA2 -_08011CA0: - movs r0, 0x1 -_08011CA2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8011C7C - thumb_func_start sub_8011CA8 sub_8011CA8: push {lr} adds r3, r0, 0 adds r2, r1, 0 - ldr r0, _08011CCC + ldr r0, =gUnknown_203B184 ldr r0, [r0] - ldr r0, _08011CD0 + ldr r0, =0xfff adds r1, r2, r0 cmp r1, 0 bge _08011CBE - ldr r0, _08011CD4 + ldr r0, =0x1ffe adds r1, r2, r0 _08011CBE: asrs r1, 12 @@ -124,13 +26,11 @@ _08011CBE: pop {r0} bx r0 .align 2, 0 -_08011CCC: .4byte gUnknown_203B184 -_08011CD0: .4byte 0x00000fff -_08011CD4: .4byte 0x00001ffe + .pool thumb_func_end sub_8011CA8 - thumb_func_start sub_8011CD8 -sub_8011CD8: + thumb_func_start WriteSaveSector +WriteSaveSector: push {r4-r6,lr} adds r5, r1, 0 adds r4, r2, 0 @@ -139,7 +39,7 @@ sub_8011CD8: bl sub_8011CA8 adds r0, r5, 0 adds r1, r4, 0 - bl sub_8011C58 + bl CalculateChecksum ldr r0, _08011D04 ldr r0, [r0] cmp r0, 0 @@ -183,10 +83,10 @@ _08011D3A: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_8011CD8 + thumb_func_end WriteSaveSector - thumb_func_start sub_8011D40 -sub_8011D40: + thumb_func_start ReadSaveSector +ReadSaveSector: push {r4-r6,lr} adds r5, r1, 0 adds r4, r2, 0 @@ -228,7 +128,7 @@ _08011D8A: _08011D8E: adds r0, r5, 0 adds r1, r4, 0 - bl sub_8011C7C + bl ValidateChecksum lsls r0, 24 cmp r0, 0 bne _08011DA0 @@ -240,7 +140,7 @@ _08011DA2: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_8011D40 + thumb_func_end ReadSaveSector thumb_func_start sub_8011DA8 sub_8011DA8: @@ -265,14 +165,14 @@ sub_8011DAC: adds r0, r6, 0 adds r1, r5, 0 mov r2, r8 - bl sub_8011D40 + bl ReadSaveSector adds r7, r0, 0 cmp r7, 0 beq _08011DE8 adds r0, r6, 0 adds r1, r5, 0 mov r2, r8 - bl sub_8011D40 + bl ReadSaveSector adds r7, r0, 0 b _08011DF0 .align 2, 0 @@ -491,7 +391,7 @@ _08011F98: .4byte 0x00000444 thumb_func_start sub_8011F9C sub_8011F9C: push {lr} - bl sub_8011D40 + bl ReadSaveSector pop {r1} bx r1 thumb_func_end sub_8011F9C @@ -511,7 +411,7 @@ sub_8011FA8: mov r0, sp adds r1, r5, 0 adds r2, r4, 0 - bl sub_8011D40 + bl ReadSaveSector adds r2, r0, 0 cmp r2, 0 bne _08011FD8 @@ -554,7 +454,7 @@ sub_8011FF8: mov r0, sp adds r1, r5, 0 adds r2, r4, 0 - bl sub_8011D40 + bl ReadSaveSector cmp r0, 0 bne _08012028 ldr r1, [r5, 0x14] @@ -722,12 +622,12 @@ _080120E8: adds r0, r7, 0 adds r1, r6, 0 adds r2, r4, 0 - bl sub_8011CD8 + bl WriteSaveSector adds r5, r0, 0 adds r0, r7, 0 adds r1, r6, 0 adds r2, r4, 0 - bl sub_8011CD8 + bl WriteSaveSector adds r4, r0, 0 adds r0, r6, 0 bl MemoryFree @@ -760,7 +660,7 @@ _080121CE: thumb_func_start sub_80121D4 sub_80121D4: push {lr} - bl sub_8011CD8 + bl WriteSaveSector pop {r1} bx r1 thumb_func_end sub_80121D4 @@ -796,7 +696,7 @@ sub_80121E0: mov r0, sp adds r1, r4, 0 adds r2, r6, 0 - bl sub_8011CD8 + bl WriteSaveSector adds r5, r0, 0 adds r0, r4, 0 bl MemoryFree @@ -1792,22 +1692,4 @@ _080129F2: bx r1 thumb_func_end sub_80128B0 - thumb_func_start sub_80129FC -sub_80129FC: - push {r4,lr} - ldr r4, _08012A14 - ldr r0, [r4] - cmp r0, 0 - beq _08012A0E - bl MemoryFree - movs r0, 0 - str r0, [r4] -_08012A0E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08012A14: .4byte gUnknown_203B194 - thumb_func_end sub_80129FC - .align 2, 0 @ Don't pad with nop. diff --git a/asm/sprite.s b/asm/sprite.s index 5081f37..284526c 100644 --- a/asm/sprite.s +++ b/asm/sprite.s @@ -5,19 +5,8 @@ .text - thumb_func_start InitSprites -InitSprites: - push {lr} - movs r0, 0x1 - bl sub_8004D8C - movs r0, 0 - bl SetSavingIconCoords - pop {r0} - bx r0 - thumb_func_end InitSprites - - thumb_func_start sub_8004D8C -sub_8004D8C: + thumb_func_start ResetSprites +ResetSprites: push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 @@ -131,8 +120,8 @@ _08004E50: pop {r0} bx r0 .align 2, 0 -_08004E68: .4byte gUnknown_20266A8 -_08004E6C: .4byte gUnknown_2026E30 +_08004E68: .4byte gSpriteCount +_08004E6C: .4byte gCharMemCursor _08004E70: .4byte 0x06010000 _08004E74: .4byte gUnknown_203B074 _08004E78: .4byte gUnknown_20266B0 @@ -140,7 +129,7 @@ _08004E7C: .4byte gUnknown_20256A0 _08004E80: .4byte gUnknown_20262A8 _08004E84: .4byte gUnknown_2025EA8 _08004E88: .4byte 0x00000804 - thumb_func_end sub_8004D8C + thumb_func_end ResetSprites thumb_func_start sub_8004E8C sub_8004E8C: @@ -241,7 +230,7 @@ _08004F20: strh r0, [r1, 0x2] b _08004F86 .align 2, 0 -_08004F40: .4byte gUnknown_20266A8 +_08004F40: .4byte gSpriteCount _08004F44: .4byte 0x0000fcff _08004F48: .4byte 0x0000f1ff _08004F4C: .4byte 0x000003ff @@ -459,7 +448,7 @@ _080050D8: strh r0, [r2, 0x2] b _08005128 .align 2, 0 -_080050F4: .4byte gUnknown_20266A8 +_080050F4: .4byte gSpriteCount _080050F8: .4byte gUnknown_20262A8 _080050FC: ldrh r1, [r6] @@ -524,7 +513,7 @@ _08005168: bx r0 .align 2, 0 _08005174: .4byte gUnknown_2025EA8 -_08005178: .4byte gUnknown_20266A8 +_08005178: .4byte gSpriteCount _0800517C: .4byte gUnknown_20256A0 thumb_func_end AddSprite @@ -739,8 +728,8 @@ _080052F2: bx r0 .align 2, 0 _080052F8: .4byte gUnknown_203B074 -_080052FC: .4byte gUnknown_2026E30 -_08005300: .4byte gUnknown_2026E30 +_080052FC: .4byte gCharMemCursor +_08005300: .4byte gCharMemCursor thumb_func_end sub_80052BC thumb_func_start sub_8005304 @@ -801,7 +790,7 @@ sub_800533C: str r0, [r1] b _0800538E .align 2, 0 -_08005368: .4byte gUnknown_2026E30 +_08005368: .4byte gCharMemCursor _0800536C: .4byte 0x06010000 _08005370: cmp r6, 0 |