summaryrefslogtreecommitdiff
path: root/asm/code_800C9CC.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/code_800C9CC.s')
-rw-r--r--asm/code_800C9CC.s761
1 files changed, 761 insertions, 0 deletions
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