diff options
Diffstat (limited to 'asm')
-rw-r--r-- | asm/code_800B5F0.s | 877 | ||||
-rw-r--r-- | asm/code_800C9CC.s | 761 |
2 files changed, 763 insertions, 875 deletions
diff --git a/asm/code_800B5F0.s b/asm/code_800B5F0.s index fb03810..020ff3a 100644 --- a/asm/code_800B5F0.s +++ b/asm/code_800B5F0.s @@ -891,7 +891,7 @@ sub_800BDFC: lsrs r4, r0, 16 adds r6, r4, 0 adds r0, r4, 0 - bl sub_800CA9C + bl IsBGSong lsls r0, 24 cmp r0, 0 beq _0800BE78 @@ -961,7 +961,7 @@ sub_800BE8C: lsls r4, r1, 16 lsrs r5, r4, 16 adds r0, r6, 0 - bl sub_800CA9C + bl IsBGSong lsls r0, 24 cmp r0, 0 beq _0800BF2E @@ -2280,878 +2280,5 @@ _0800C926: bx r0 thumb_func_end UpdateSound - thumb_func_start sub_800C93C -sub_800C93C: - push {r4,r5,lr} - ldr r0, _0800C984 - movs r1, 0x10 - bl sub_800C3F8 - ldr r0, _0800C988 - movs r1, 0x10 - bl sub_800C3F8 - bl DisableInterrupts - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0800C98C - ldrh r3, [r0] - cmp r3, 0 - bne _0800C9AC - ldr r0, _0800C990 - ldrh r1, [r0] - ldr r0, _0800C994 - cmp r1, r0 - beq _0800C9AC - ldr r1, _0800C998 - ldrh r2, [r1] - subs r0, r2, 0x1 - lsls r0, 16 - lsrs r0, 16 - adds r4, r1, 0 - cmp r0, 0x1 - bhi _0800C9AC - adds r1, r2, 0 - cmp r1, 0x2 - bne _0800C9A0 - ldr r0, _0800C99C - strb r3, [r0] - b _0800C9A8 - .align 2, 0 -_0800C984: .4byte 0x000003e5 -_0800C988: .4byte 0x000003e6 -_0800C98C: .4byte gUnknown_202D690 -_0800C990: .4byte gUnknown_202D68A -_0800C994: .4byte 0x000003e7 -_0800C998: .4byte gUnknown_202D688 -_0800C99C: .4byte gUnknown_202D694 -_0800C9A0: - cmp r1, 0x1 - bne _0800C9A8 - ldr r0, _0800C9C4 - strb r1, [r0] -_0800C9A8: - movs r0, 0x4 - strh r0, [r4] -_0800C9AC: - ldr r0, _0800C9C8 - bl m4aMPlayStop - bl m4aSoundVSyncOff - cmp r5, 0 - beq _0800C9BE - bl EnableInterrupts -_0800C9BE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800C9C4: .4byte gUnknown_202D694 -_0800C9C8: .4byte gUnknown_20008F0 - thumb_func_end sub_800C93C - - thumb_func_start sub_800C9CC -sub_800C9CC: - push {r4,lr} - bl DisableInterrupts - lsls r0, 24 - lsrs r4, r0, 24 - bl m4aSoundVSyncOn - ldr r0, _0800CA08 - ldrh r0, [r0] - cmp r0, 0 - bne _0800CA22 - ldr r2, _0800CA0C - ldrh r1, [r2] - ldr r0, _0800CA10 - cmp r1, r0 - beq _0800CA22 - ldr r1, _0800CA14 - ldrh r0, [r1] - cmp r0, 0x4 - bne _0800CA22 - movs r0, 0x1 - strh r0, [r1] - ldr r0, _0800CA18 - ldrb r0, [r0] - cmp r0, 0 - beq _0800CA1C - ldrh r0, [r2] - bl m4aSongNumStart - b _0800CA22 - .align 2, 0 -_0800CA08: .4byte gUnknown_202D690 -_0800CA0C: .4byte gUnknown_202D68A -_0800CA10: .4byte 0x000003e7 -_0800CA14: .4byte gUnknown_202D688 -_0800CA18: .4byte gUnknown_202D694 -_0800CA1C: - ldr r0, _0800CA30 - bl m4aMPlayContinue -_0800CA22: - cmp r4, 0 - beq _0800CA2A - bl EnableInterrupts -_0800CA2A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800CA30: .4byte gUnknown_20008F0 - thumb_func_end sub_800C9CC - - thumb_func_start nullsub_179 -nullsub_179: - bx lr - thumb_func_end nullsub_179 - - thumb_func_start sub_800CA38 -sub_800CA38: - push {r4,lr} - adds r4, r0, 0 - bl sub_800CA9C - lsls r0, 24 - cmp r0, 0 - beq _0800CA54 - lsls r0, r4, 16 - lsrs r0, 16 - bl sub_800CAE0 - lsls r0, 16 - cmp r0, 0 - beq _0800CA70 -_0800CA54: - adds r0, r4, 0 - bl sub_800CACC - lsls r0, 24 - cmp r0, 0 - beq _0800CA74 - lsls r0, r4, 16 - lsrs r0, 16 - bl sub_800CAE0 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _0800CA90 -_0800CA70: - movs r0, 0x1 - b _0800CA92 -_0800CA74: - adds r0, r4, 0 - bl sub_800CAAC - lsls r0, 24 - cmp r0, 0 - beq _0800CA90 - lsls r0, r4, 16 - lsrs r0, 16 - bl sub_800CAE0 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0800CA70 -_0800CA90: - movs r0, 0 -_0800CA92: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_800CA38 - - thumb_func_start nullsub_19 -nullsub_19: - bx lr - thumb_func_end nullsub_19 - - thumb_func_start sub_800CA9C -sub_800CA9C: - push {lr} - cmp r0, 0x80 - bls _0800CAA6 - movs r0, 0 - b _0800CAA8 -_0800CAA6: - movs r0, 0x1 -_0800CAA8: - pop {r1} - bx r1 - thumb_func_end sub_800CA9C - - thumb_func_start sub_800CAAC -sub_800CAAC: - push {lr} - ldr r1, _0800CABC - adds r0, r1 - ldr r1, _0800CAC0 - cmp r0, r1 - bls _0800CAC4 - movs r0, 0 - b _0800CAC6 - .align 2, 0 -_0800CABC: .4byte 0xfffffed4 -_0800CAC0: .4byte 0x0000027f -_0800CAC4: - movs r0, 0x1 -_0800CAC6: - pop {r1} - bx r1 - thumb_func_end sub_800CAAC - - thumb_func_start sub_800CACC -sub_800CACC: - push {lr} - subs r0, 0xC8 - cmp r0, 0x13 - bls _0800CAD8 - movs r0, 0 - b _0800CADA -_0800CAD8: - movs r0, 0x1 -_0800CADA: - pop {r1} - bx r1 - thumb_func_end sub_800CACC - - thumb_func_start sub_800CAE0 -sub_800CAE0: - lsls r0, 16 - ldr r1, _0800CAEC - lsrs r0, 13 - adds r0, r1 - ldrh r0, [r0, 0x4] - bx lr - .align 2, 0 -_0800CAEC: .4byte gSongTable - thumb_func_end sub_800CAE0 - - thumb_func_start sub_800CAF0 -sub_800CAF0: - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r2, _0800CB0C - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldr r0, [r1] - ldrh r0, [r0, 0x4] - cmp r0, 0 - beq _0800CB10 - movs r0, 0x1 - b _0800CB12 - .align 2, 0 -_0800CB0C: .4byte gMPlayTable -_0800CB10: - movs r0, 0 -_0800CB12: - pop {r1} - bx r1 - thumb_func_end sub_800CAF0 - - thumb_func_start nullsub_20 -nullsub_20: - bx lr - thumb_func_end nullsub_20 - - thumb_func_start nullsub_21 -nullsub_21: - bx lr - thumb_func_end nullsub_21 - - thumb_func_start sub_800CB20 -sub_800CB20: - push {lr} - bl sub_800BA5C - ldr r1, _0800CB48 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r0, _0800CB4C - ldrh r1, [r0] - movs r0, 0x5 - ands r0, r1 - cmp r0, 0 - beq _0800CB3E - bl Random -_0800CB3E: - bl Random - pop {r0} - bx r0 - .align 2, 0 -_0800CB48: .4byte gUnknown_203B0B8 -_0800CB4C: .4byte gUnknown_203B0BC - thumb_func_end sub_800CB20 - - thumb_func_start sub_800CB50 -sub_800CB50: - ldr r0, _0800CB58 - ldr r0, [r0] - bx lr - .align 2, 0 -_0800CB58: .4byte gUnknown_203B0B8 - thumb_func_end sub_800CB50 - - thumb_func_start nullsub_180 -nullsub_180: - bx lr - thumb_func_end nullsub_180 - - thumb_func_start xxx_call_update_bg_sound_input -xxx_call_update_bg_sound_input: - push {lr} - bl xxx_update_bg_sound_input - pop {r0} - bx r0 - thumb_func_end xxx_call_update_bg_sound_input - - thumb_func_start nullsub_181 -nullsub_181: - bx lr - thumb_func_end nullsub_181 - - thumb_func_start sub_800CB70 -sub_800CB70: - movs r0, 0 - bx lr - thumb_func_end sub_800CB70 - - thumb_func_start ReadKeyInput -ReadKeyInput: - push {r4,lr} - adds r2, r0, 0 - ldr r0, _0800CC38 - ldrh r1, [r0] - ldr r3, _0800CC3C - adds r0, r3, 0 - adds r3, r0, 0 - eors r3, r1 - movs r0, 0 - strh r0, [r2] - movs r1, 0x40 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0800CB94 - strh r1, [r2] -_0800CB94: - movs r0, 0x80 - ands r0, r3 - cmp r0, 0 - beq _0800CBA4 - ldrh r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strh r0, [r2] -_0800CBA4: - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _0800CBB4 - ldrh r0, [r2] - movs r1, 0x20 - orrs r0, r1 - strh r0, [r2] -_0800CBB4: - movs r0, 0x10 - ands r0, r3 - cmp r0, 0 - beq _0800CBC4 - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] -_0800CBC4: - movs r0, 0x1 - ands r0, r3 - cmp r0, 0 - beq _0800CBD4 - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] -_0800CBD4: - movs r0, 0x2 - ands r0, r3 - cmp r0, 0 - beq _0800CBE4 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] -_0800CBE4: - movs r0, 0x8 - ands r0, r3 - cmp r0, 0 - beq _0800CBF4 - ldrh r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strh r0, [r2] -_0800CBF4: - movs r0, 0x4 - ands r0, r3 - cmp r0, 0 - beq _0800CC04 - ldrh r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strh r0, [r2] -_0800CC04: - movs r4, 0x80 - lsls r4, 1 - adds r0, r3, 0 - ands r0, r4 - cmp r0, 0 - beq _0800CC18 - ldrh r1, [r2] - adds r0, r4, 0 - orrs r0, r1 - strh r0, [r2] -_0800CC18: - movs r4, 0x80 - lsls r4, 2 - adds r0, r3, 0 - ands r0, r4 - cmp r0, 0 - beq _0800CC2C - ldrh r1, [r2] - adds r0, r4, 0 - orrs r0, r1 - strh r0, [r2] -_0800CC2C: - ldr r0, _0800CC40 - strh r3, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800CC38: .4byte 0x04000130 -_0800CC3C: .4byte 0x000003ff -_0800CC40: .4byte gUnknown_203B0BC - thumb_func_end ReadKeyInput - - thumb_func_start sub_800CC44 -sub_800CC44: - push {lr} - adds r2, r1, 0 - cmp r0, 0 - bge _0800CC50 - movs r0, 0 - b _0800CC56 -_0800CC50: - cmp r0, 0x10 - ble _0800CC56 - movs r0, 0x10 -_0800CC56: - cmp r2, 0 - bge _0800CC5E - movs r2, 0 - b _0800CC64 -_0800CC5E: - cmp r2, 0x10 - ble _0800CC64 - movs r2, 0x10 -_0800CC64: - ldr r1, _0800CC7C - strb r0, [r1] - ldr r0, _0800CC80 - strb r2, [r0] - ldr r2, _0800CC84 - ldrb r1, [r1] - ldrb r0, [r0] - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - pop {r0} - bx r0 - .align 2, 0 -_0800CC7C: .4byte gUnknown_202D6B8 -_0800CC80: .4byte gUnknown_202D6B9 -_0800CC84: .4byte gUnknown_202D7FA - thumb_func_end sub_800CC44 - - thumb_func_start sub_800CC88 -sub_800CC88: - ldr r2, _0800CC90 - strh r0, [r2, 0x4] - strh r1, [r2, 0x6] - bx lr - .align 2, 0 -_0800CC90: .4byte gUnknown_202D698 - thumb_func_end sub_800CC88 - - thumb_func_start sub_800CC94 -sub_800CC94: - ldr r2, _0800CC9C - strh r0, [r2, 0x4] - strh r1, [r2, 0x6] - bx lr - .align 2, 0 -_0800CC9C: .4byte gUnknown_202D6A0 - thumb_func_end sub_800CC94 - - thumb_func_start sub_800CCA0 -sub_800CCA0: - ldr r2, _0800CCA8 - strh r0, [r2, 0x4] - strh r1, [r2, 0x6] - bx lr - .align 2, 0 -_0800CCA8: .4byte gUnknown_202D6A8 - thumb_func_end sub_800CCA0 - - thumb_func_start sub_800CCAC -sub_800CCAC: - ldr r2, _0800CCB4 - strh r0, [r2, 0x4] - strh r1, [r2, 0x6] - bx lr - .align 2, 0 -_0800CCB4: .4byte gUnknown_202D6B0 - thumb_func_end sub_800CCAC - - thumb_func_start sub_800CCB8 -sub_800CCB8: - push {lr} - cmp r0, 0x1 - beq _0800CCD4 - cmp r0, 0x1 - ble _0800CCCA - cmp r0, 0x2 - beq _0800CCDE - cmp r0, 0x3 - beq _0800CCE8 -_0800CCCA: - adds r0, r1, 0 - adds r1, r2, 0 - bl sub_800CC88 - b _0800CCF0 -_0800CCD4: - adds r0, r1, 0 - adds r1, r2, 0 - bl sub_800CC94 - b _0800CCF0 -_0800CCDE: - adds r0, r1, 0 - adds r1, r2, 0 - bl sub_800CCA0 - b _0800CCF0 -_0800CCE8: - adds r0, r1, 0 - adds r1, r2, 0 - bl sub_800CCAC -_0800CCF0: - pop {r0} - bx r0 - thumb_func_end sub_800CCB8 - - thumb_func_start sub_800CCF4 -sub_800CCF4: - push {lr} - cmp r0, 0x1 - beq _0800CD10 - cmp r0, 0x1 - ble _0800CD06 - cmp r0, 0x2 - beq _0800CD18 - cmp r0, 0x3 - beq _0800CD20 -_0800CD06: - ldr r0, _0800CD0C - b _0800CD22 - .align 2, 0 -_0800CD0C: .4byte gUnknown_202D698 -_0800CD10: - ldr r0, _0800CD14 - b _0800CD22 - .align 2, 0 -_0800CD14: .4byte gUnknown_202D6A0 -_0800CD18: - ldr r0, _0800CD1C - b _0800CD22 - .align 2, 0 -_0800CD1C: .4byte gUnknown_202D6A8 -_0800CD20: - ldr r0, _0800CD28 -_0800CD22: - strh r1, [r0, 0x4] - pop {r0} - bx r0 - .align 2, 0 -_0800CD28: .4byte gUnknown_202D6B0 - thumb_func_end sub_800CCF4 - - thumb_func_start sub_800CD2C -sub_800CD2C: - push {lr} - cmp r0, 0x1 - beq _0800CD48 - cmp r0, 0x1 - ble _0800CD3E - cmp r0, 0x2 - beq _0800CD50 - cmp r0, 0x3 - beq _0800CD58 -_0800CD3E: - ldr r0, _0800CD44 - b _0800CD5A - .align 2, 0 -_0800CD44: .4byte gUnknown_202D698 -_0800CD48: - ldr r0, _0800CD4C - b _0800CD5A - .align 2, 0 -_0800CD4C: .4byte gUnknown_202D6A0 -_0800CD50: - ldr r0, _0800CD54 - b _0800CD5A - .align 2, 0 -_0800CD54: .4byte gUnknown_202D6A8 -_0800CD58: - ldr r0, _0800CD60 -_0800CD5A: - strh r1, [r0, 0x6] - pop {r0} - bx r0 - .align 2, 0 -_0800CD60: .4byte gUnknown_202D6B0 - thumb_func_end sub_800CD2C - - thumb_func_start sub_800CD64 -sub_800CD64: - ldr r2, _0800CD7C - strb r1, [r2] - ldr r2, _0800CD80 - negs r1, r0 - orrs r1, r0 - asrs r1, 31 - movs r3, 0x80 - lsls r3, 8 - adds r0, r3, 0 - ands r1, r0 - strh r1, [r2, 0x2] - bx lr - .align 2, 0 -_0800CD7C: .4byte gUnknown_202D7FE -_0800CD80: .4byte gUnknown_202D6A8 - thumb_func_end sub_800CD64 - - thumb_func_start SetBGOBJEnableFlags -SetBGOBJEnableFlags: - push {r4,lr} - movs r3, 0x80 - lsls r3, 19 - ldrh r1, [r3] - ldr r2, _0800CDA4 - ands r2, r1 - lsls r0, 8 - movs r4, 0xF8 - lsls r4, 5 - adds r1, r4, 0 - bics r1, r0 - orrs r2, r1 - strh r2, [r3] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800CDA4: .4byte 0x0000e0ff - thumb_func_end SetBGOBJEnableFlags - - thumb_func_start sub_800CDA8 -sub_800CDA8: - ldr r1, _0800CDBC - str r0, [r1] - ldr r2, _0800CDC0 - ldr r1, _0800CDC4 - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - bx lr - .align 2, 0 -_0800CDBC: .4byte gUnknown_202D800 -_0800CDC0: .4byte gUnknown_202D7FC -_0800CDC4: .4byte gUnknown_203B0BE - thumb_func_end sub_800CDA8 - - thumb_func_start sub_800CDC8 -sub_800CDC8: - ldr r0, _0800CDD0 - ldr r0, [r0] - bx lr - .align 2, 0 -_0800CDD0: .4byte gUnknown_202D800 - thumb_func_end sub_800CDC8 - - thumb_func_start SetWindowTitle -SetWindowTitle: - bx lr - thumb_func_end SetWindowTitle - - thumb_func_start nullsub_23 -nullsub_23: - bx lr - thumb_func_end nullsub_23 - - thumb_func_start nullsub_182 -nullsub_182: - bx lr - thumb_func_end nullsub_182 - - thumb_func_start sub_800CDE0 -sub_800CDE0: - movs r0, 0x1 - bx lr - thumb_func_end sub_800CDE0 - - thumb_func_start CpuCopy -CpuCopy: - push {lr} - adds r3, r0, 0 - cmp r2, 0 - bge _0800CDEE - adds r2, 0x3 -_0800CDEE: - lsls r2, 9 - lsrs r2, 11 - movs r0, 0x80 - lsls r0, 19 - orrs r2, r0 - adds r0, r1, 0 - adds r1, r3, 0 - bl CpuSet - pop {r0} - bx r0 - thumb_func_end CpuCopy - - thumb_func_start CpuClear -CpuClear: - push {lr} - sub sp, 0x4 - adds r3, r0, 0 - movs r0, 0 - str r0, [sp] - cmp r1, 0 - bge _0800CE14 - adds r1, 0x3 -_0800CE14: - lsls r2, r1, 9 - lsrs r2, 11 - movs r0, 0xA0 - lsls r0, 19 - orrs r2, r0 - mov r0, sp - adds r1, r3, 0 - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end CpuClear - - thumb_func_start CpuFill -CpuFill: - push {lr} - sub sp, 0x4 - adds r3, r0, 0 - str r1, [sp] - cmp r2, 0 - bge _0800CE3A - adds r2, 0x3 -_0800CE3A: - lsls r2, 9 - lsrs r2, 11 - movs r0, 0xA0 - lsls r0, 19 - orrs r2, r0 - mov r0, sp - adds r1, r3, 0 - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end CpuFill - - thumb_func_start sub_800CE54 -sub_800CE54: - push {lr} - ldr r2, _0800CEC0 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - orrs r0, r1 - ldr r1, _0800CEC4 - ands r0, r1 - strh r0, [r2] - mov r8, r8 - mov r8, r8 - mov r8, r8 - mov r8, r8 - ldr r1, _0800CEC8 - ands r0, r1 - strh r0, [r2] - ldr r1, _0800CECC - ldr r2, _0800CED0 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x3D - strh r0, [r1] - adds r1, 0x6 - ldr r0, _0800CED4 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0800CED8 - ldrh r0, [r0] - strh r0, [r1] - ldr r0, _0800CEDC - ldrb r1, [r0] - cmp r1, 0 - beq _0800CEF4 - ldr r1, _0800CEE0 - ldr r0, _0800CEE4 - ldr r2, [r0] - adds r0, r2, 0x4 - str r0, [r1] - ldr r3, _0800CEE8 - str r3, [r1, 0x4] - ldr r0, _0800CEEC - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldrh r0, [r2] - strh r0, [r3] - subs r1, 0x6E - ldrh r0, [r2, 0x2] - strh r0, [r1] - ldr r0, _0800CEF0 - movs r1, 0xA0 - b _0800CEFE - .align 2, 0 -_0800CEC0: .4byte 0x040000ba -_0800CEC4: .4byte 0x0000cdff -_0800CEC8: .4byte 0x00007fff -_0800CECC: .4byte 0x04000048 -_0800CED0: .4byte 0x00003f3f -_0800CED4: .4byte gUnknown_202D7FC -_0800CED8: .4byte gUnknown_202D7FA -_0800CEDC: .4byte gUnknown_2026E38 -_0800CEE0: .4byte 0x040000b0 -_0800CEE4: .4byte gUnknown_2026E3C -_0800CEE8: .4byte 0x04000040 -_0800CEEC: .4byte 0xa2600002 -_0800CEF0: .4byte 0x04000044 -_0800CEF4: - ldr r0, _0800CF08 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 -_0800CEFE: - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_0800CF08: .4byte 0x04000040 - thumb_func_end sub_800CE54 .align 2, 0 @ Don't pad with nop. diff --git a/asm/code_800C9CC.s b/asm/code_800C9CC.s new file mode 100644 index 0000000..99fd217 --- /dev/null +++ b/asm/code_800C9CC.s @@ -0,0 +1,761 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_800CA38 +sub_800CA38: + push {r4,lr} + adds r4, r0, 0 + bl IsBGSong + lsls r0, 24 + cmp r0, 0 + beq _0800CA54 + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_800CAE0 + lsls r0, 16 + cmp r0, 0 + beq _0800CA70 +_0800CA54: + adds r0, r4, 0 + bl sub_800CACC + lsls r0, 24 + cmp r0, 0 + beq _0800CA74 + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_800CAE0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _0800CA90 +_0800CA70: + movs r0, 0x1 + b _0800CA92 +_0800CA74: + adds r0, r4, 0 + bl sub_800CAAC + lsls r0, 24 + cmp r0, 0 + beq _0800CA90 + lsls r0, r4, 16 + lsrs r0, 16 + bl sub_800CAE0 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0800CA70 +_0800CA90: + movs r0, 0 +_0800CA92: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_800CA38 + + thumb_func_start nullsub_19 +nullsub_19: + bx lr + thumb_func_end nullsub_19 + + thumb_func_start IsBGSong +IsBGSong: + push {lr} + cmp r0, 128 @ Anything less than/equal 128 is a BG song + bls _0800CAA6 + movs r0, 0 + b _0800CAA8 +_0800CAA6: + movs r0, 0x1 +_0800CAA8: + pop {r1} + bx r1 + thumb_func_end IsBGSong + + thumb_func_start sub_800CAAC +sub_800CAAC: + push {lr} + ldr r1, _0800CABC + adds r0, r1 + ldr r1, _0800CAC0 + cmp r0, r1 + bls _0800CAC4 + movs r0, 0 + b _0800CAC6 + .align 2, 0 +_0800CABC: .4byte 0xfffffed4 @ -299 +_0800CAC0: .4byte 0x0000027f +_0800CAC4: + movs r0, 0x1 +_0800CAC6: + pop {r1} + bx r1 + thumb_func_end sub_800CAAC + + thumb_func_start sub_800CACC +sub_800CACC: + push {lr} + @ Checking a table between 200 and 219... level up/trap sound effects? + subs r0, 0xC8 + cmp r0, 0x13 + bls _0800CAD8 + movs r0, 0 + b _0800CADA +_0800CAD8: + movs r0, 0x1 +_0800CADA: + pop {r1} + bx r1 + thumb_func_end sub_800CACC + + thumb_func_start sub_800CAE0 +sub_800CAE0: + lsls r0, 16 + ldr r1, _0800CAEC + lsrs r0, 13 + adds r0, r1 + ldrh r0, [r0, 0x4] + bx lr + .align 2, 0 +_0800CAEC: .4byte gSongTable + thumb_func_end sub_800CAE0 + + thumb_func_start sub_800CAF0 +sub_800CAF0: + push {lr} + lsls r0, 16 + lsrs r0, 16 + ldr r2, _0800CB0C + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + ldrh r0, [r0, 0x4] + cmp r0, 0 + beq _0800CB10 + movs r0, 0x1 + b _0800CB12 + .align 2, 0 +_0800CB0C: .4byte gMPlayTable +_0800CB10: + movs r0, 0 +_0800CB12: + pop {r1} + bx r1 + thumb_func_end sub_800CAF0 + + thumb_func_start nullsub_20 +nullsub_20: + bx lr + thumb_func_end nullsub_20 + + thumb_func_start nullsub_21 +nullsub_21: + bx lr + thumb_func_end nullsub_21 + + thumb_func_start sub_800CB20 +sub_800CB20: + push {lr} + bl sub_800BA5C + ldr r1, _0800CB48 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + ldr r0, _0800CB4C + ldrh r1, [r0] + movs r0, 0x5 + ands r0, r1 + cmp r0, 0 + beq _0800CB3E + bl Random +_0800CB3E: + bl Random + pop {r0} + bx r0 + .align 2, 0 +_0800CB48: .4byte gUnknown_203B0B8 +_0800CB4C: .4byte gUnknown_203B0BC + thumb_func_end sub_800CB20 + + thumb_func_start sub_800CB50 +sub_800CB50: + ldr r0, _0800CB58 + ldr r0, [r0] + bx lr + .align 2, 0 +_0800CB58: .4byte gUnknown_203B0B8 + thumb_func_end sub_800CB50 + + thumb_func_start nullsub_180 +nullsub_180: + bx lr + thumb_func_end nullsub_180 + + thumb_func_start xxx_call_update_bg_sound_input +xxx_call_update_bg_sound_input: + push {lr} + bl xxx_update_bg_sound_input + pop {r0} + bx r0 + thumb_func_end xxx_call_update_bg_sound_input + + thumb_func_start nullsub_181 +nullsub_181: + bx lr + thumb_func_end nullsub_181 + + thumb_func_start sub_800CB70 +sub_800CB70: + movs r0, 0 + bx lr + thumb_func_end sub_800CB70 + + thumb_func_start ReadKeyInput +ReadKeyInput: + push {r4,lr} + adds r2, r0, 0 + ldr r0, _0800CC38 + ldrh r1, [r0] + ldr r3, _0800CC3C + adds r0, r3, 0 + adds r3, r0, 0 + eors r3, r1 + movs r0, 0 + strh r0, [r2] + movs r1, 0x40 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _0800CB94 + strh r1, [r2] +_0800CB94: + movs r0, 0x80 + ands r0, r3 + cmp r0, 0 + beq _0800CBA4 + ldrh r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strh r0, [r2] +_0800CBA4: + movs r0, 0x20 + ands r0, r3 + cmp r0, 0 + beq _0800CBB4 + ldrh r0, [r2] + movs r1, 0x20 + orrs r0, r1 + strh r0, [r2] +_0800CBB4: + movs r0, 0x10 + ands r0, r3 + cmp r0, 0 + beq _0800CBC4 + ldrh r0, [r2] + movs r1, 0x10 + orrs r0, r1 + strh r0, [r2] +_0800CBC4: + movs r0, 0x1 + ands r0, r3 + cmp r0, 0 + beq _0800CBD4 + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] +_0800CBD4: + movs r0, 0x2 + ands r0, r3 + cmp r0, 0 + beq _0800CBE4 + ldrh r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strh r0, [r2] +_0800CBE4: + movs r0, 0x8 + ands r0, r3 + cmp r0, 0 + beq _0800CBF4 + ldrh r0, [r2] + movs r1, 0x8 + orrs r0, r1 + strh r0, [r2] +_0800CBF4: + movs r0, 0x4 + ands r0, r3 + cmp r0, 0 + beq _0800CC04 + ldrh r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strh r0, [r2] +_0800CC04: + movs r4, 0x80 + lsls r4, 1 + adds r0, r3, 0 + ands r0, r4 + cmp r0, 0 + beq _0800CC18 + ldrh r1, [r2] + adds r0, r4, 0 + orrs r0, r1 + strh r0, [r2] +_0800CC18: + movs r4, 0x80 + lsls r4, 2 + adds r0, r3, 0 + ands r0, r4 + cmp r0, 0 + beq _0800CC2C + ldrh r1, [r2] + adds r0, r4, 0 + orrs r0, r1 + strh r0, [r2] +_0800CC2C: + ldr r0, _0800CC40 + strh r3, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800CC38: .4byte 0x04000130 +_0800CC3C: .4byte 0x000003ff +_0800CC40: .4byte gUnknown_203B0BC + thumb_func_end ReadKeyInput + + thumb_func_start sub_800CC44 +sub_800CC44: + push {lr} + adds r2, r1, 0 + cmp r0, 0 + bge _0800CC50 + movs r0, 0 + b _0800CC56 +_0800CC50: + cmp r0, 0x10 + ble _0800CC56 + movs r0, 0x10 +_0800CC56: + cmp r2, 0 + bge _0800CC5E + movs r2, 0 + b _0800CC64 +_0800CC5E: + cmp r2, 0x10 + ble _0800CC64 + movs r2, 0x10 +_0800CC64: + ldr r1, _0800CC7C + strb r0, [r1] + ldr r0, _0800CC80 + strb r2, [r0] + ldr r2, _0800CC84 + ldrb r1, [r1] + ldrb r0, [r0] + lsls r0, 8 + orrs r1, r0 + strh r1, [r2] + pop {r0} + bx r0 + .align 2, 0 +_0800CC7C: .4byte gUnknown_202D6B8 +_0800CC80: .4byte gUnknown_202D6B9 +_0800CC84: .4byte gUnknown_202D7FA + thumb_func_end sub_800CC44 + + thumb_func_start sub_800CC88 +sub_800CC88: + ldr r2, _0800CC90 + strh r0, [r2, 0x4] + strh r1, [r2, 0x6] + bx lr + .align 2, 0 +_0800CC90: .4byte gUnknown_202D698 + thumb_func_end sub_800CC88 + + thumb_func_start sub_800CC94 +sub_800CC94: + ldr r2, _0800CC9C + strh r0, [r2, 0x4] + strh r1, [r2, 0x6] + bx lr + .align 2, 0 +_0800CC9C: .4byte gUnknown_202D6A0 + thumb_func_end sub_800CC94 + + thumb_func_start sub_800CCA0 +sub_800CCA0: + ldr r2, _0800CCA8 + strh r0, [r2, 0x4] + strh r1, [r2, 0x6] + bx lr + .align 2, 0 +_0800CCA8: .4byte gUnknown_202D6A8 + thumb_func_end sub_800CCA0 + + thumb_func_start sub_800CCAC +sub_800CCAC: + ldr r2, _0800CCB4 + strh r0, [r2, 0x4] + strh r1, [r2, 0x6] + bx lr + .align 2, 0 +_0800CCB4: .4byte gUnknown_202D6B0 + thumb_func_end sub_800CCAC + + thumb_func_start sub_800CCB8 +sub_800CCB8: + push {lr} + cmp r0, 0x1 + beq _0800CCD4 + cmp r0, 0x1 + ble _0800CCCA + cmp r0, 0x2 + beq _0800CCDE + cmp r0, 0x3 + beq _0800CCE8 +_0800CCCA: + adds r0, r1, 0 + adds r1, r2, 0 + bl sub_800CC88 + b _0800CCF0 +_0800CCD4: + adds r0, r1, 0 + adds r1, r2, 0 + bl sub_800CC94 + b _0800CCF0 +_0800CCDE: + adds r0, r1, 0 + adds r1, r2, 0 + bl sub_800CCA0 + b _0800CCF0 +_0800CCE8: + adds r0, r1, 0 + adds r1, r2, 0 + bl sub_800CCAC +_0800CCF0: + pop {r0} + bx r0 + thumb_func_end sub_800CCB8 + + thumb_func_start sub_800CCF4 +sub_800CCF4: + push {lr} + cmp r0, 0x1 + beq _0800CD10 + cmp r0, 0x1 + ble _0800CD06 + cmp r0, 0x2 + beq _0800CD18 + cmp r0, 0x3 + beq _0800CD20 +_0800CD06: + ldr r0, _0800CD0C + b _0800CD22 + .align 2, 0 +_0800CD0C: .4byte gUnknown_202D698 +_0800CD10: + ldr r0, _0800CD14 + b _0800CD22 + .align 2, 0 +_0800CD14: .4byte gUnknown_202D6A0 +_0800CD18: + ldr r0, _0800CD1C + b _0800CD22 + .align 2, 0 +_0800CD1C: .4byte gUnknown_202D6A8 +_0800CD20: + ldr r0, _0800CD28 +_0800CD22: + strh r1, [r0, 0x4] + pop {r0} + bx r0 + .align 2, 0 +_0800CD28: .4byte gUnknown_202D6B0 + thumb_func_end sub_800CCF4 + + thumb_func_start sub_800CD2C +sub_800CD2C: + push {lr} + cmp r0, 0x1 + beq _0800CD48 + cmp r0, 0x1 + ble _0800CD3E + cmp r0, 0x2 + beq _0800CD50 + cmp r0, 0x3 + beq _0800CD58 +_0800CD3E: + ldr r0, _0800CD44 + b _0800CD5A + .align 2, 0 +_0800CD44: .4byte gUnknown_202D698 +_0800CD48: + ldr r0, _0800CD4C + b _0800CD5A + .align 2, 0 +_0800CD4C: .4byte gUnknown_202D6A0 +_0800CD50: + ldr r0, _0800CD54 + b _0800CD5A + .align 2, 0 +_0800CD54: .4byte gUnknown_202D6A8 +_0800CD58: + ldr r0, _0800CD60 +_0800CD5A: + strh r1, [r0, 0x6] + pop {r0} + bx r0 + .align 2, 0 +_0800CD60: .4byte gUnknown_202D6B0 + thumb_func_end sub_800CD2C + + thumb_func_start sub_800CD64 +sub_800CD64: + ldr r2, _0800CD7C + strb r1, [r2] + ldr r2, _0800CD80 + negs r1, r0 + orrs r1, r0 + asrs r1, 31 + movs r3, 0x80 + lsls r3, 8 + adds r0, r3, 0 + ands r1, r0 + strh r1, [r2, 0x2] + bx lr + .align 2, 0 +_0800CD7C: .4byte gUnknown_202D7FE +_0800CD80: .4byte gUnknown_202D6A8 + thumb_func_end sub_800CD64 + + thumb_func_start SetBGOBJEnableFlags +SetBGOBJEnableFlags: + push {r4,lr} + movs r3, 0x80 + lsls r3, 19 + ldrh r1, [r3] + ldr r2, _0800CDA4 + ands r2, r1 + lsls r0, 8 + movs r4, 0xF8 + lsls r4, 5 + adds r1, r4, 0 + bics r1, r0 + orrs r2, r1 + strh r2, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800CDA4: .4byte 0x0000e0ff + thumb_func_end SetBGOBJEnableFlags + + thumb_func_start sub_800CDA8 +sub_800CDA8: + ldr r1, _0800CDBC + str r0, [r1] + ldr r2, _0800CDC0 + ldr r1, _0800CDC4 + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2] + bx lr + .align 2, 0 +_0800CDBC: .4byte gUnknown_202D800 +_0800CDC0: .4byte gUnknown_202D7FC +_0800CDC4: .4byte gUnknown_203B0BE + thumb_func_end sub_800CDA8 + + thumb_func_start sub_800CDC8 +sub_800CDC8: + ldr r0, _0800CDD0 + ldr r0, [r0] + bx lr + .align 2, 0 +_0800CDD0: .4byte gUnknown_202D800 + thumb_func_end sub_800CDC8 + + thumb_func_start SetWindowTitle +SetWindowTitle: + bx lr + thumb_func_end SetWindowTitle + + thumb_func_start nullsub_23 +nullsub_23: + bx lr + thumb_func_end nullsub_23 + + thumb_func_start nullsub_182 +nullsub_182: + bx lr + thumb_func_end nullsub_182 + + thumb_func_start sub_800CDE0 +sub_800CDE0: + movs r0, 0x1 + bx lr + thumb_func_end sub_800CDE0 + + thumb_func_start CpuCopy +CpuCopy: + push {lr} + adds r3, r0, 0 + cmp r2, 0 + bge _0800CDEE + adds r2, 0x3 +_0800CDEE: + lsls r2, 9 + lsrs r2, 11 + movs r0, 0x80 + lsls r0, 19 + orrs r2, r0 + adds r0, r1, 0 + adds r1, r3, 0 + bl CpuSet + pop {r0} + bx r0 + thumb_func_end CpuCopy + + thumb_func_start CpuClear +CpuClear: + push {lr} + sub sp, 0x4 + adds r3, r0, 0 + movs r0, 0 + str r0, [sp] + cmp r1, 0 + bge _0800CE14 + adds r1, 0x3 +_0800CE14: + lsls r2, r1, 9 + lsrs r2, 11 + movs r0, 0xA0 + lsls r0, 19 + orrs r2, r0 + mov r0, sp + adds r1, r3, 0 + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end CpuClear + + thumb_func_start CpuFill +CpuFill: + push {lr} + sub sp, 0x4 + adds r3, r0, 0 + str r1, [sp] + cmp r2, 0 + bge _0800CE3A + adds r2, 0x3 +_0800CE3A: + lsls r2, 9 + lsrs r2, 11 + movs r0, 0xA0 + lsls r0, 19 + orrs r2, r0 + mov r0, sp + adds r1, r3, 0 + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end CpuFill + + thumb_func_start sub_800CE54 +sub_800CE54: + push {lr} + ldr r2, _0800CEC0 + ldrh r0, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r1, r3, 0 + orrs r0, r1 + ldr r1, _0800CEC4 + ands r0, r1 + strh r0, [r2] + mov r8, r8 + mov r8, r8 + mov r8, r8 + mov r8, r8 + ldr r1, _0800CEC8 + ands r0, r1 + strh r0, [r2] + ldr r1, _0800CECC + ldr r2, _0800CED0 + adds r0, r2, 0 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x3D + strh r0, [r1] + adds r1, 0x6 + ldr r0, _0800CED4 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x2 + ldr r0, _0800CED8 + ldrh r0, [r0] + strh r0, [r1] + ldr r0, _0800CEDC + ldrb r1, [r0] + cmp r1, 0 + beq _0800CEF4 + ldr r1, _0800CEE0 + ldr r0, _0800CEE4 + ldr r2, [r0] + adds r0, r2, 0x4 + str r0, [r1] + ldr r3, _0800CEE8 + str r3, [r1, 0x4] + ldr r0, _0800CEEC + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + ldrh r0, [r2] + strh r0, [r3] + subs r1, 0x6E + ldrh r0, [r2, 0x2] + strh r0, [r1] + ldr r0, _0800CEF0 + movs r1, 0xA0 + b _0800CEFE + .align 2, 0 +_0800CEC0: .4byte 0x040000ba +_0800CEC4: .4byte 0x0000cdff +_0800CEC8: .4byte 0x00007fff +_0800CECC: .4byte 0x04000048 +_0800CED0: .4byte 0x00003f3f +_0800CED4: .4byte gUnknown_202D7FC +_0800CED8: .4byte gUnknown_202D7FA +_0800CEDC: .4byte gUnknown_2026E38 +_0800CEE0: .4byte 0x040000b0 +_0800CEE4: .4byte gUnknown_2026E3C +_0800CEE8: .4byte 0x04000040 +_0800CEEC: .4byte 0xa2600002 +_0800CEF0: .4byte 0x04000044 +_0800CEF4: + ldr r0, _0800CF08 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x2 +_0800CEFE: + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_0800CF08: .4byte 0x04000040 + thumb_func_end sub_800CE54 + + .align 2,0 |