summaryrefslogtreecommitdiff
path: root/asm
diff options
context:
space:
mode:
Diffstat (limited to 'asm')
-rw-r--r--asm/libmks4agb.s5292
-rw-r--r--asm/m4a_1.s1908
-rw-r--r--asm/m4a_3.s574
-rw-r--r--asm/rom1.s4
-rw-r--r--asm/rom3.s28
-rw-r--r--asm/rom4.s46
-rw-r--r--asm/rom5.s34
7 files changed, 2538 insertions, 5348 deletions
diff --git a/asm/libmks4agb.s b/asm/libmks4agb.s
deleted file mode 100644
index 545660669..000000000
--- a/asm/libmks4agb.s
+++ /dev/null
@@ -1,5292 +0,0 @@
- .include "asm/macros.s"
-
- .syntax unified
-
- .text
-
- thumb_func_start umul3232H32
-umul3232H32: @ 81DCE14
- adr r2, _081DCE18
- bx r2
- .arm
-_081DCE18:
- umull r2, r3, r0, r1
- add r0, r3, 0
- bx lr
- thumb_func_end umul3232H32
-
- thumb_func_start SoundMain
-SoundMain: @ 81DCE24
- ldr r0, _081DCE90
- ldr r0, [r0]
- ldr r2, _081DCE94
- ldr r3, [r0]
- cmp r2, r3
- beq _081DCE32
- bx lr
-_081DCE32:
- 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 _081DCE56
- ldr r2, _081DCE9C
- ldrb r2, [r2]
- cmp r2, 0xA0
- bcs _081DCE54
- adds r2, 0xE4
-_081DCE54:
- adds r1, r2
-_081DCE56:
- str r1, [sp, 0x14]
- ldr r3, [r0, 0x20]
- cmp r3, 0
- beq _081DCE66
- ldr r0, [r0, 0x24]
- bl _081DD25E
- ldr r0, [sp, 0x18]
-_081DCE66:
- ldr r3, [r0, 0x28]
- bl _081DD25E
- ldr r0, [sp, 0x18]
- ldr r3, [r0, 0x10]
- mov r8, r3
- ldr r5, _081DCEA0
- adds r5, r0
- ldrb r4, [r0, 0x4]
- subs r7, r4, 0x1
- bls _081DCE86
- ldrb r1, [r0, 0xB]
- subs r1, r7
- mov r2, r8
- muls r2, r1
- adds r5, r2
-_081DCE86:
- str r5, [sp, 0x8]
- ldr r6, _081DCEA4
- ldr r3, _081DCE98
- bx r3
- .align 2, 0
-_081DCE90: .4byte 0x03007ff0
-_081DCE94: .4byte 0x68736d53
-_081DCE98: .4byte 0x03000f61
-_081DCE9C: .4byte 0x04000006
-_081DCEA0: .4byte 0x00000350
-_081DCEA4: .4byte 0x00000630
- thumb_func_end SoundMain
-
- thumb_func_start SoundMainRAM
-SoundMainRAM: @ 81DCEA8
- ldrb r3, [r0, 0x5]
- cmp r3, 0
- beq _081DCF08
- adr r1, _081DCEB4
- bx r1
- .arm
-_081DCEB4:
- cmp r4, 0x2
- addeq r7, r0, 0x350
- addne r7, r5, r8
- mov r4, r8
-_081DCEC4:
- 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 _081DCEC4
- add r0, pc, 0x2F
- bx r0
- .thumb
-_081DCF08:
- movs r0, 0
- mov r1, r8
- adds r6, r5
- lsrs r1, 3
- bcc _081DCF16
- stm r5!, {r0}
- stm r6!, {r0}
-_081DCF16:
- lsrs r1, 1
- bcc _081DCF22
- stm r5!, {r0}
- stm r6!, {r0}
- stm r5!, {r0}
- stm r6!, {r0}
-_081DCF22:
- 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 _081DCF22
- ldr r4, [sp, 0x18]
- ldr r0, [r4, 0x18]
- mov r12, r0
- ldrb r0, [r4, 0x6]
- adds r4, 0x50
-_081DCF40:
- str r0, [sp, 0x4]
- ldr r3, [r4, 0x24]
- ldr r0, [sp, 0x14]
- cmp r0, 0
- beq _081DCF60
- ldr r1, _081DCF5C
- ldrb r1, [r1]
- cmp r1, 0xA0
- bcs _081DCF54
- adds r1, 0xE4
-_081DCF54:
- cmp r1, r0
- bcc _081DCF60
- b _081DD24A
- .align 2, 0
-_081DCF5C: .4byte 0x04000006
-_081DCF60:
- ldrb r6, [r4]
- movs r0, 0xC7
- tst r0, r6
- bne _081DCF6A
- b _081DD240
-_081DCF6A:
- movs r0, 0x80
- tst r0, r6
- beq _081DCFA0
- movs r0, 0x40
- tst r0, r6
- bne _081DCFB0
- movs r6, 0x3
- strb r6, [r4]
- adds r0, r3, 0
- adds r0, 0x10
- ldr r1, [r4, 0x18]
- adds r0, r1
- str r0, [r4, 0x28]
- ldr r0, [r3, 0xC]
- subs r0, r1
- 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 _081DCFF8
- movs r0, 0x10
- orrs r6, r0
- strb r6, [r4]
- b _081DCFF8
-_081DCFA0:
- ldrb r5, [r4, 0x9]
- movs r0, 0x4
- tst r0, r6
- beq _081DCFB6
- ldrb r0, [r4, 0xD]
- subs r0, 0x1
- strb r0, [r4, 0xD]
- bhi _081DD006
-_081DCFB0:
- movs r0, 0
- strb r0, [r4]
- b _081DD240
-_081DCFB6:
- movs r0, 0x40
- tst r0, r6
- beq _081DCFD6
- ldrb r0, [r4, 0x7]
- muls r5, r0
- lsrs r5, 8
- ldrb r0, [r4, 0xC]
- cmp r5, r0
- bhi _081DD006
-_081DCFC8:
- ldrb r5, [r4, 0xC]
- cmp r5, 0
- beq _081DCFB0
- movs r0, 0x4
- orrs r6, r0
- strb r6, [r4]
- b _081DD006
-_081DCFD6:
- movs r2, 0x3
- ands r2, r6
- cmp r2, 0x2
- bne _081DCFF4
- ldrb r0, [r4, 0x5]
- muls r5, r0
- lsrs r5, 8
- ldrb r0, [r4, 0x6]
- cmp r5, r0
- bhi _081DD006
- adds r5, r0, 0
- beq _081DCFC8
- subs r6, 0x1
- strb r6, [r4]
- b _081DD006
-_081DCFF4:
- cmp r2, 0x3
- bne _081DD006
-_081DCFF8:
- ldrb r0, [r4, 0x4]
- adds r5, r0
- cmp r5, 0xFF
- bcc _081DD006
- movs r5, 0xFF
- subs r6, 0x1
- strb r6, [r4]
-_081DD006:
- 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 _081DD03A
- 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]
-_081DD03A:
- ldr r5, [sp, 0x8]
- ldr r2, [r4, 0x18]
- ldr r3, [r4, 0x28]
- adr r0, _081DD044
- bx r0
- .arm
-_081DD044:
- str r8, [sp]
- ldr r9, [r4, 0x1C]
- ldrb r10, [r4, 0xA]
- ldrb r11, [r4, 0xB]
- ldrb r0, [r4, 0x1]
- tst r0, 0x30
- beq _081DD068
- bl sub_81DD264
- b _081DD228
-_081DD068:
- mov r10, r10, lsl 16
- mov r11, r11, lsl 16
- ldrb r0, [r4, 0x1]
- tst r0, 0x8
- beq _081DD19C
-_081DD07C:
- cmp r2, 0x4
- ble _081DD0EC
- subs r2, r2, r8
- movgt r9, 0
- bgt _081DD0A8
- mov r9, r8
- add r2, r2, r8
- sub r8, r2, 0x4
- sub r9, r9, r8
- ands r2, r2, 0x3
- moveq r2, 0x4
-_081DD0A8:
- ldr r6, [r5]
- ldr r7, [r5, 0x630]
-_081DD0B0:
- 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 _081DD0B0
- str r7, [r5, 0x630]
- str r6, [r5], 0x4
- subs r8, r8, 0x4
- bgt _081DD0A8
- adds r8, r8, r9
- beq _081DD22C
-_081DD0EC:
- ldr r6, [r5]
- ldr r7, [r5, 0x630]
-_081DD0F4:
- 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 _081DD164
-_081DD118:
- adds r5, r5, 0x40000000
- bcc _081DD0F4
- str r7, [r5, 0x630]
- str r6, [r5], 0x4
- subs r8, r8, 0x4
- bgt _081DD07C
- b _081DD22C
-_081DD134:
- ldr r0, [sp, 0x18]
- cmp r0, 0
- beq _081DD158
- ldr r3, [sp, 0x14]
- rsb lr, r2, 0
-_081DD148:
- adds r2, r0, r2
- bgt _081DD1FC
- sub lr, lr, r0
- b _081DD148
-_081DD158:
- ldmia sp!, {r4,r12}
- mov r2, 0
- b _081DD174
-_081DD164:
- ldr r2, [sp, 0x10]
- cmp r2, 0
- ldrne r3, [sp, 0xC]
- bne _081DD118
-_081DD174:
- 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 _081DD234
-_081DD19C:
- stmdb sp!, {r4,r12}
- ldr r1, [r4, 0x20]
- mul r4, r12, r1
- ldrsb r0, [r3]
- ldrsb r1, [r3, 0x1]!
- sub r1, r1, r0
-_081DD1B4:
- ldr r6, [r5]
- ldr r7, [r5, 0x630]
-_081DD1BC:
- mul lr, r9, r1
- add lr, r0, lr, asr 23
- mul r12, r10, lr
- bic r12, r12, 0xFF0000
- add r6, r12, r6, ror 8
- mul r12, r11, lr
- bic r12, r12, 0xFF0000
- add r7, r12, r7, ror 8
- add r9, r9, r4
- movs lr, r9, lsr 23
- beq _081DD208
- bic r9, r9, 0x3F800000
- subs r2, r2, lr
- ble _081DD134
- subs lr, lr, 0x1
- addeq r0, r0, r1
-_081DD1FC:
- ldrsbne r0, [r3, lr]!
- ldrsb r1, [r3, 0x1]!
- sub r1, r1, r0
-_081DD208:
- adds r5, r5, 0x40000000
- bcc _081DD1BC
- str r7, [r5, 0x630]
- str r6, [r5], 0x4
- subs r8, r8, 0x4
- bgt _081DD1B4
- sub r3, r3, 0x1
- ldmia sp!, {r4,r12}
-_081DD228:
- str r9, [r4, 0x1C]
-_081DD22C:
- str r2, [r4, 0x18]
- str r3, [r4, 0x28]
-_081DD234:
- ldr r8, [sp]
- add r0, pc, 0x1
- bx r0
- .thumb
-_081DD240:
- ldr r0, [sp, 0x4]
- subs r0, 0x1
- ble _081DD24A
- adds r4, 0x40
- b _081DCF40
-_081DD24A:
- ldr r0, [sp, 0x18]
- ldr r3, _081DD260
- str r3, [r0]
- add sp, 0x1C
- pop {r0-r7}
- mov r8, r0
- mov r9, r1
- mov r10, r2
- mov r11, r3
- pop {r3}
-_081DD25E:
- bx r3
- .align 2, 0
-_081DD260: .4byte 0x68736d53
- thumb_func_end SoundMainRAM
-
- arm_func_start sub_81DD264
-sub_81DD264: @ 81DD264
- ldr r6, [r4, 0x24]
- ldrb r0, [r4]
- tst r0, 0x20
- bne _081DD2B4
- orr r0, r0, 0x20
- strb r0, [r4]
- ldrb r0, [r4, 0x1]
- tst r0, 0x10
- beq _081DD29C
- ldr r1, [r6, 0xC]
- add r1, r1, r6, lsl 1
- add r1, r1, 0x20
- sub r3, r1, r3
- str r3, [r4, 0x28]
-_081DD29C:
- ldrh r0, [r6]
- cmp r0, 0
- beq _081DD2B4
- sub r3, r3, r6
- sub r3, r3, 0x10
- str r3, [r4, 0x28]
-_081DD2B4:
- stmdb sp!, {r8,r12,lr}
- mov r10, r10, lsl 16
- mov r11, r11, lsl 16
- ldr r1, [r4, 0x20]
- ldrb r0, [r4, 0x1]
- tst r0, 0x8
- movne r8, 0x800000
- muleq r8, r12, r1
- ldrh r0, [r6]
- cmp r0, 0
- beq _081DD468
- mov r0, 0xFF000000
- str r0, [r4, 0x3C]
- ldrb r0, [r4, 0x1]
- tst r0, 0x10
- bne _081DD3C0
- bl sub_81DD520
- mov r0, r1
- add r3, r3, 0x1
- bl sub_81DD520
- sub r1, r1, r0
-_081DD308:
- ldr r6, [r5]
- ldr r7, [r5, 0x630]
-_081DD310:
- mul lr, r9, r1
- add lr, r0, lr, asr 23
- mul r12, r10, lr
- bic r12, r12, 0xFF0000
- add r6, r12, r6, ror 8
- mul r12, r11, lr
- bic r12, r12, 0xFF0000
- add r7, r12, r7, ror 8
- add r9, r9, r8
- movs lr, r9, lsr 23
- beq _081DD370
- bic r9, r9, 0x3F800000
- subs r2, r2, lr
- ble _081DD398
- subs lr, lr, 0x1
- bne _081DD358
- add r0, r0, r1
- b _081DD364
-_081DD358:
- add r3, r3, lr
- bl sub_81DD520
- mov r0, r1
-_081DD364:
- add r3, r3, 0x1
- bl sub_81DD520
- sub r1, r1, r0
-_081DD370:
- adds r5, r5, 0x40000000
- bcc _081DD310
- str r7, [r5, 0x630]
- str r6, [r5], 0x4
- ldr r6, [sp]
- subs r6, r6, 0x4
- str r6, [sp]
- bgt _081DD308
- sub r3, r3, 0x1
- b _081DD4F0
-_081DD398:
- ldr r0, [sp, 0x1C]
- cmp r0, 0
- beq _081DD4F4
- ldr r3, [r4, 0x24]
- ldr r3, [r3, 0x8]
- rsb lr, r2, 0
-_081DD3B0:
- adds r2, r2, r0
- bgt _081DD358
- sub lr, lr, r0
- b _081DD3B0
-_081DD3C0:
- sub r3, r3, 0x1
- bl sub_81DD520
- mov r0, r1
- sub r3, r3, 0x1
- bl sub_81DD520
- sub r1, r1, r0
-_081DD3D8:
- ldr r6, [r5]
- ldr r7, [r5, 0x630]
-_081DD3E0:
- mul lr, r9, r1
- add lr, r0, lr, asr 23
- mul r12, r10, lr
- bic r12, r12, 0xFF0000
- add r6, r12, r6, ror 8
- mul r12, r11, lr
- bic r12, r12, 0xFF0000
- add r7, r12, r7, ror 8
- add r9, r9, r8
- movs lr, r9, lsr 23
- beq _081DD440
- bic r9, r9, 0x3F800000
- subs r2, r2, lr
- ble _081DD4F4
- subs lr, lr, 0x1
- bne _081DD428
- add r0, r0, r1
- b _081DD434
-_081DD428:
- sub r3, r3, lr
- bl sub_81DD520
- mov r0, r1
-_081DD434:
- sub r3, r3, 0x1
- bl sub_81DD520
- sub r1, r1, r0
-_081DD440:
- adds r5, r5, 0x40000000
- bcc _081DD3E0
- str r7, [r5, 0x630]
- str r6, [r5], 0x4
- ldr r6, [sp]
- subs r6, r6, 0x4
- str r6, [sp]
- bgt _081DD3D8
- add r3, r3, 0x2
- b _081DD4F0
-_081DD468:
- ldrb r0, [r4, 0x1]
- tst r0, 0x10
- beq _081DD4F0
- ldrsb r0, [r3, -0x1]!
- ldrsb r1, [r3, -0x1]
- sub r1, r1, r0
-_081DD480:
- ldr r6, [r5]
- ldr r7, [r5, 0x630]
-_081DD488:
- mul lr, r9, r1
- add lr, r0, lr, asr 23
- mul r12, r10, lr
- bic r12, r12, 0xFF0000
- add r6, r12, r6, ror 8
- mul r12, r11, lr
- bic r12, r12, 0xFF0000
- add r7, r12, r7, ror 8
- add r9, r9, r8
- movs lr, r9, lsr 23
- beq _081DD4CC
- bic r9, r9, 0x3F800000
- subs r2, r2, lr
- ble _081DD4F4
- ldrsb r0, [r3, -lr]!
- ldrsb r1, [r3, -0x1]
- sub r1, r1, r0
-_081DD4CC:
- adds r5, r5, 0x40000000
- bcc _081DD488
- str r7, [r5, 0x630]
- str r6, [r5], 0x4
- ldr r6, [sp]
- subs r6, r6, 0x4
- str r6, [sp]
- bgt _081DD480
- add r3, r3, 0x1
-_081DD4F0:
- ldmia sp!, {r8,r12,pc}
-_081DD4F4:
- mov r2, 0
- 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
- ldmia sp!, {r8,r12,pc}
- arm_func_end sub_81DD264
-
- arm_func_start sub_81DD520
-sub_81DD520: @ 81DD520
- stmdb sp!, {r0,r2,r5-r7,lr}
- mov r0, r3, lsr 6
- ldr r1, [r4, 0x3C]
- cmp r0, r1
- beq _081DD594
- str r0, [r4, 0x3C]
- mov r1, 0x21
- mul r2, r1, r0
- ldr r1, [r4, 0x24]
- add r2, r2, r1
- add r2, r2, 0x10
- ldr r5, _081DD5A4
- ldr r6, _081DD5A8
- mov r7, 0x40
- ldrb lr, [r2], 0x1
- strb lr, [r5], 0x1
- ldrb r1, [r2], 0x1
- b _081DD57C
-_081DD568:
- ldrb r1, [r2], 0x1
- mov r0, r1, lsr 4
- ldrsb r0, [r6, r0]
- add lr, lr, r0
- strb lr, [r5], 0x1
-_081DD57C:
- and r0, r1, 0xF
- ldrsb r0, [r6, r0]
- add lr, lr, r0
- strb lr, [r5], 0x1
- subs r7, r7, 0x2
- bgt _081DD568
-_081DD594:
- ldr r5, _081DD5A4
- and r0, r3, 0x3F
- ldrsb r1, [r5, r0]
- ldmia sp!, {r0,r2,r5-r7,pc}
- .align 2, 0
-_081DD5A4: .4byte 0x030007b8
-_081DD5A8: .4byte gUnknown_0842F9F4
- arm_func_end sub_81DD520
-
- thumb_func_start SoundMainBTM
-SoundMainBTM: @ 81DD5AC
- 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 ClearChain
-ClearChain: @ 81DD5C4
- ldr r3, [r0, 0x2C]
- cmp r3, 0
- beq _081DD5E2
- ldr r1, [r0, 0x34]
- ldr r2, [r0, 0x30]
- cmp r2, 0
- beq _081DD5D6
- str r1, [r2, 0x34]
- b _081DD5D8
-_081DD5D6:
- str r1, [r3, 0x20]
-_081DD5D8:
- cmp r1, 0
- beq _081DD5DE
- str r2, [r1, 0x30]
-_081DD5DE:
- movs r1, 0
- str r1, [r0, 0x2C]
-_081DD5E2:
- bx lr
- thumb_func_end ClearChain
-
- thumb_func_start ply_fine
-ply_fine: @ 81DD5E4
- push {r4,r5,lr}
- adds r5, r1, 0
- ldr r4, [r5, 0x20]
- cmp r4, 0
- beq _081DD608
-_081DD5EE:
- ldrb r1, [r4]
- movs r0, 0xC7
- tst r0, r1
- beq _081DD5FC
- movs r0, 0x40
- orrs r1, r0
- strb r1, [r4]
-_081DD5FC:
- adds r0, r4, 0
- bl ClearChain
- ldr r4, [r4, 0x34]
- cmp r4, 0
- bne _081DD5EE
-_081DD608:
- movs r0, 0
- strb r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ply_fine
-
- thumb_func_start MPlyJmpTblCopy
-MPlyJmpTblCopy: @ 81DD614
- mov r12, lr
- movs r1, 0x24
- ldr r2, _081DD644
-_081DD61A:
- ldr r3, [r2]
- bl chk_adr_r2
- stm r0!, {r3}
- adds r2, 0x4
- subs r1, 0x1
- bgt _081DD61A
- bx r12
- thumb_func_end MPlyJmpTblCopy
-
- thumb_func_start ldrb_r3_r2
-ldrb_r3_r2: @ 81DD62C
- ldrb r3, [r2]
- thumb_func_end ldrb_r3_r2
-
- non_word_aligned_thumb_func_start chk_adr_r2
-chk_adr_r2: @ 81DD62E
- push {r0}
- lsrs r0, r2, 25
- bne _081DD640
- ldr r0, _081DD644
- cmp r2, r0
- bcc _081DD63E
- lsrs r0, r2, 14
- beq _081DD640
-_081DD63E:
- movs r3, 0
-_081DD640:
- pop {r0}
- bx lr
- .align 2, 0
-_081DD644: .4byte gUnknown_0842F964
- thumb_func_end chk_adr_r2
-
- thumb_func_start ld_r3_tp_adr_i
-ld_r3_tp_adr_i: @ 81DD648
- ldr r2, [r1, 0x40]
-_081DD64A:
- 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: @ 81DD654
- push {lr}
-_081DD656:
- 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 ldrb_r3_r2
- orrs r0, r3
- str r0, [r1, 0x40]
- pop {r0}
- bx r0
- thumb_func_end ply_goto
-
- thumb_func_start ply_patt
-ply_patt: @ 81DD674
- ldrb r2, [r1, 0x2]
- cmp r2, 0x3
- bcs _081DD68C
- 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 ply_goto
-_081DD68C:
- b ply_fine
- thumb_func_end ply_patt
-
- thumb_func_start play_pend
-play_pend: @ 81DD690
- ldrb r2, [r1, 0x2]
- cmp r2, 0
- beq _081DD6A2
- subs r2, 0x1
- strb r2, [r1, 0x2]
- lsls r2, 2
- adds r3, r1, r2
- ldr r2, [r3, 0x44]
- str r2, [r1, 0x40]
-_081DD6A2:
- bx lr
- thumb_func_end play_pend
-
- thumb_func_start ply_rept
-ply_rept: @ 81DD6A4
- push {lr}
- ldr r2, [r1, 0x40]
- ldrb r3, [r2]
- cmp r3, 0
- bne _081DD6B4
- adds r2, 0x1
- str r2, [r1, 0x40]
- b _081DD656
-_081DD6B4:
- ldrb r3, [r1, 0x3]
- adds r3, 0x1
- strb r3, [r1, 0x3]
- mov r12, r3
- bl ld_r3_tp_adr_i
- cmp r12, r3
- bcs _081DD6C6
- b _081DD656
-_081DD6C6:
- movs r3, 0
- strb r3, [r1, 0x3]
- adds r2, 0x5
- str r2, [r1, 0x40]
- pop {r0}
- bx r0
- thumb_func_end ply_rept
-
- thumb_func_start ply_prio
-ply_prio: @ 81DD6D4
- mov r12, lr
- bl ld_r3_tp_adr_i
- strb r3, [r1, 0x1D]
- bx r12
- thumb_func_end ply_prio
-
- thumb_func_start ply_tempo
-ply_tempo: @ 81DD6E0
- mov r12, lr
- bl ld_r3_tp_adr_i
- 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 ply_tempo
-
- thumb_func_start ply_keysh
-ply_keysh: @ 81DD6F4
- mov r12, lr
- bl ld_r3_tp_adr_i
- strb r3, [r1, 0xA]
- ldrb r3, [r1]
- movs r2, 0xC
- orrs r3, r2
- strb r3, [r1]
- bx r12
- thumb_func_end ply_keysh
-
- thumb_func_start ply_voice
-ply_voice: @ 81DD708
- 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 chk_adr_r2
- str r3, [r1, 0x24]
- ldr r3, [r2, 0x4]
- bl chk_adr_r2
- str r3, [r1, 0x28]
- ldr r3, [r2, 0x8]
- bl chk_adr_r2
- str r3, [r1, 0x2C]
- bx r12
- thumb_func_end ply_voice
-
- thumb_func_start ply_vol
-ply_vol: @ 81DD738
- mov r12, lr
- bl ld_r3_tp_adr_i
- strb r3, [r1, 0x12]
- ldrb r3, [r1]
- movs r2, 0x3
- orrs r3, r2
- strb r3, [r1]
- bx r12
- thumb_func_end ply_vol
-
- thumb_func_start ply_pan
-ply_pan: @ 81DD74C
- mov r12, lr
- bl ld_r3_tp_adr_i
- subs r3, 0x40
- strb r3, [r1, 0x14]
- ldrb r3, [r1]
- movs r2, 0x3
- orrs r3, r2
- strb r3, [r1]
- bx r12
- thumb_func_end ply_pan
-
- thumb_func_start ply_bend
-ply_bend: @ 81DD760
- mov r12, lr
- bl ld_r3_tp_adr_i
- subs r3, 0x40
- strb r3, [r1, 0xE]
- ldrb r3, [r1]
- movs r2, 0xC
- orrs r3, r2
- strb r3, [r1]
- bx r12
- thumb_func_end ply_bend
-
- thumb_func_start ply_bendr
-ply_bendr: @ 81DD774
- mov r12, lr
- bl ld_r3_tp_adr_i
- strb r3, [r1, 0xF]
- ldrb r3, [r1]
- movs r2, 0xC
- orrs r3, r2
- strb r3, [r1]
- bx r12
- thumb_func_end ply_bendr
-
- thumb_func_start ply_lfodl
-ply_lfodl: @ 81DD788
- mov r12, lr
- bl ld_r3_tp_adr_i
- strb r3, [r1, 0x1B]
- bx r12
- thumb_func_end ply_lfodl
-
- thumb_func_start ply_modt
-ply_modt: @ 81DD794
- mov r12, lr
- bl ld_r3_tp_adr_i
- ldrb r0, [r1, 0x18]
- cmp r0, r3
- beq _081DD7AA
- strb r3, [r1, 0x18]
- ldrb r3, [r1]
- movs r2, 0xF
- orrs r3, r2
- strb r3, [r1]
-_081DD7AA:
- bx r12
- thumb_func_end ply_modt
-
- thumb_func_start ply_tune
-ply_tune: @ 81DD7AC
- mov r12, lr
- bl ld_r3_tp_adr_i
- subs r3, 0x40
- strb r3, [r1, 0xC]
- ldrb r3, [r1]
- movs r2, 0xC
- orrs r3, r2
- strb r3, [r1]
- bx r12
- thumb_func_end ply_tune
-
- thumb_func_start ply_port
-ply_port: @ 81DD7C0
- mov r12, lr
- ldr r2, [r1, 0x40]
- ldrb r3, [r2]
- adds r2, 0x1
- ldr r0, _081DD7D4
- adds r0, r3
- bl _081DD64A
- strb r3, [r0]
- bx r12
- .align 2, 0
-_081DD7D4: .4byte 0x04000060
- thumb_func_end ply_port
-
- thumb_func_start SoundVSync_rev01
-SoundVSync_rev01: @ 81DD7D8
- ldr r0, _081DDA84
- ldr r0, [r0]
- ldr r2, _081DDA88
- ldr r3, [r0]
- subs r3, r2
- cmp r3, 0x1
- bhi _081DD818
- ldrb r1, [r0, 0x4]
- subs r1, 0x1
- strb r1, [r0, 0x4]
- bgt _081DD818
- ldrb r1, [r0, 0xB]
- strb r1, [r0, 0x4]
- ldr r2, _081DD81C
- ldr r1, [r2, 0x8]
- lsls r1, 7
- bcc _081DD7FE
- ldr r1, _081DD820
- str r1, [r2, 0x8]
-_081DD7FE:
- ldr r1, [r2, 0x14]
- lsls r1, 7
- bcc _081DD808
- ldr r1, _081DD820
- str r1, [r2, 0x14]
-_081DD808:
- 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]
-_081DD818:
- bx lr
- .align 2, 0
-_081DD81C: .4byte 0x040000bc
-_081DD820: .4byte 0x84400004
- thumb_func_end SoundVSync_rev01
-
- thumb_func_start MPlayMain_rev01
-MPlayMain_rev01: @ 81DD824
- ldr r2, _081DDA88
- ldr r3, [r0, 0x34]
- cmp r2, r3
- beq _081DD82E
- bx lr
-_081DD82E:
- adds r3, 0x1
- str r3, [r0, 0x34]
- push {r0,lr}
- ldr r3, [r0, 0x38]
- cmp r3, 0
- beq _081DD840
- ldr r0, [r0, 0x3C]
- bl _081DDA7C
-_081DD840:
- 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 _081DD858
- b _081DDA6C
-_081DD858:
- ldr r0, _081DDA84
- ldr r0, [r0]
- mov r8, r0
- adds r0, r7, 0
- bl FadeOutBody_rev01
- ldr r0, [r7, 0x4]
- cmp r0, 0
- bge _081DD86C
- b _081DDA6C
-_081DD86C:
- ldrh r0, [r7, 0x22]
- ldrh r1, [r7, 0x20]
- adds r0, r1
- b _081DD9BC
-_081DD874:
- ldrb r6, [r7, 0x8]
- ldr r5, [r7, 0x2C]
- movs r3, 0x1
- movs r4, 0
-_081DD87C:
- ldrb r0, [r5]
- movs r1, 0x80
- tst r1, r0
- bne _081DD886
- b _081DD998
-_081DD886:
- mov r10, r3
- orrs r4, r3
- mov r11, r4
- ldr r4, [r5, 0x20]
- cmp r4, 0
- beq _081DD8BA
-_081DD892:
- ldrb r1, [r4]
- movs r0, 0xC7
- tst r0, r1
- beq _081DD8AE
- ldrb r0, [r4, 0x10]
- cmp r0, 0
- beq _081DD8B4
- subs r0, 0x1
- strb r0, [r4, 0x10]
- bne _081DD8B4
- movs r0, 0x40
- orrs r1, r0
- strb r1, [r4]
- b _081DD8B4
-_081DD8AE:
- adds r0, r4, 0
- bl ClearChain_rev
-_081DD8B4:
- ldr r4, [r4, 0x34]
- cmp r4, 0
- bne _081DD892
-_081DD8BA:
- ldrb r3, [r5]
- movs r0, 0x40
- tst r0, r3
- beq _081DD938
- adds r0, r5, 0
- bl Clear64byte_rev
- 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 _081DD938
-_081DD8E0:
- ldr r2, [r5, 0x40]
- ldrb r1, [r2]
- cmp r1, 0x80
- bcs _081DD8EC
- ldrb r1, [r5, 0x7]
- b _081DD8F6
-_081DD8EC:
- adds r2, 0x1
- str r2, [r5, 0x40]
- cmp r1, 0xBD
- bcc _081DD8F6
- strb r1, [r5, 0x7]
-_081DD8F6:
- cmp r1, 0xCF
- bcc _081DD90C
- mov r0, r8
- ldr r3, [r0, 0x38]
- adds r0, r1, 0
- subs r0, 0xCF
- adds r1, r7, 0
- adds r2, r5, 0
- bl _081DDA7C
- b _081DD938
-_081DD90C:
- cmp r1, 0xB0
- bls _081DD92E
- 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 _081DDA7C
- ldrb r0, [r5]
- cmp r0, 0
- beq _081DD994
- b _081DD938
-_081DD92E:
- ldr r0, _081DDA80
- subs r1, 0x80
- adds r1, r0
- ldrb r0, [r1]
- strb r0, [r5, 0x1]
-_081DD938:
- ldrb r0, [r5, 0x1]
- cmp r0, 0
- beq _081DD8E0
- subs r0, 0x1
- strb r0, [r5, 0x1]
- ldrb r1, [r5, 0x19]
- cmp r1, 0
- beq _081DD994
- ldrb r0, [r5, 0x17]
- cmp r0, 0
- beq _081DD994
- ldrb r0, [r5, 0x1C]
- cmp r0, 0
- beq _081DD95A
- subs r0, 0x1
- strb r0, [r5, 0x1C]
- b _081DD994
-_081DD95A:
- ldrb r0, [r5, 0x1A]
- adds r0, r1
- strb r0, [r5, 0x1A]
- adds r1, r0, 0
- subs r0, 0x40
- lsls r0, 24
- bpl _081DD96E
- lsls r2, r1, 24
- asrs r2, 24
- b _081DD972
-_081DD96E:
- movs r0, 0x80
- subs r2, r0, r1
-_081DD972:
- ldrb r0, [r5, 0x17]
- muls r0, r2
- asrs r2, r0, 6
- ldrb r0, [r5, 0x16]
- eors r0, r2
- lsls r0, 24
- beq _081DD994
- strb r2, [r5, 0x16]
- ldrb r0, [r5]
- ldrb r1, [r5, 0x18]
- cmp r1, 0
- bne _081DD98E
- movs r1, 0xC
- b _081DD990
-_081DD98E:
- movs r1, 0x3
-_081DD990:
- orrs r0, r1
- strb r0, [r5]
-_081DD994:
- mov r3, r10
- mov r4, r11
-_081DD998:
- subs r6, 0x1
- ble _081DD9A4
- movs r0, 0x50
- adds r5, r0
- lsls r3, 1
- b _081DD87C
-_081DD9A4:
- ldr r0, [r7, 0xC]
- adds r0, 0x1
- str r0, [r7, 0xC]
- cmp r4, 0
- bne _081DD9B6
- movs r0, 0x80
- lsls r0, 24
- str r0, [r7, 0x4]
- b _081DDA6C
-_081DD9B6:
- str r4, [r7, 0x4]
- ldrh r0, [r7, 0x22]
- subs r0, 0x96
-_081DD9BC:
- strh r0, [r7, 0x22]
- cmp r0, 0x96
- bcc _081DD9C4
- b _081DD874
-_081DD9C4:
- ldrb r2, [r7, 0x8]
- ldr r5, [r7, 0x2C]
-_081DD9C8:
- ldrb r0, [r5]
- movs r1, 0x80
- tst r1, r0
- beq _081DDA62
- movs r1, 0xF
- tst r1, r0
- beq _081DDA62
- mov r9, r2
- adds r0, r7, 0
- adds r1, r5, 0
- bl TrkVolPitSet_rev01
- ldr r4, [r5, 0x20]
- cmp r4, 0
- beq _081DDA58
-_081DD9E6:
- ldrb r1, [r4]
- movs r0, 0xC7
- tst r0, r1
- bne _081DD9F6
- adds r0, r4, 0
- bl ClearChain_rev
- b _081DDA52
-_081DD9F6:
- ldrb r0, [r4, 0x1]
- movs r6, 0x7
- ands r6, r0
- ldrb r3, [r5]
- movs r0, 0x3
- tst r0, r3
- beq _081DDA14
- bl ChnVolSetAsm
- cmp r6, 0
- beq _081DDA14
- ldrb r0, [r4, 0x1D]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4, 0x1D]
-_081DDA14:
- ldrb r3, [r5]
- movs r0, 0xC
- tst r0, r3
- beq _081DDA52
- ldrb r1, [r4, 0x8]
- movs r0, 0x8
- ldrsb r0, [r5, r0]
- adds r2, r1, r0
- bpl _081DDA28
- movs r2, 0
-_081DDA28:
- cmp r6, 0
- beq _081DDA46
- mov r0, r8
- ldr r3, [r0, 0x30]
- adds r1, r2, 0
- ldrb r2, [r5, 0x9]
- adds r0, r6, 0
- bl _081DDA7C
- str r0, [r4, 0x20]
- ldrb r0, [r4, 0x1D]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4, 0x1D]
- b _081DDA52
-_081DDA46:
- adds r1, r2, 0
- ldrb r2, [r5, 0x9]
- ldr r0, [r4, 0x24]
- bl MidiKey2fr
- str r0, [r4, 0x20]
-_081DDA52:
- ldr r4, [r4, 0x34]
- cmp r4, 0
- bne _081DD9E6
-_081DDA58:
- ldrb r0, [r5]
- movs r1, 0xF0
- ands r0, r1
- strb r0, [r5]
- mov r2, r9
-_081DDA62:
- subs r2, 0x1
- ble _081DDA6C
- movs r0, 0x50
- adds r5, r0
- bgt _081DD9C8
-_081DDA6C:
- ldr r0, _081DDA88
- str r0, [r7, 0x34]
- pop {r0-r7}
- mov r8, r0
- mov r9, r1
- mov r10, r2
- mov r11, r3
- pop {r3}
-_081DDA7C:
- bx r3
- .align 2, 0
-_081DDA80: .4byte gUnknown_0842FBE8
-_081DDA84: .4byte 0x03007ff0
-_081DDA88: .4byte 0x68736d53
- thumb_func_end MPlayMain_rev01
-
- thumb_func_start TrackStop_rev01
-TrackStop_rev01: @ 81DDA8C
- push {r4-r6,lr}
- adds r5, r1, 0
- ldrb r1, [r5]
- movs r0, 0x80
- tst r0, r1
- beq _081DDAC4
- ldr r4, [r5, 0x20]
- cmp r4, 0
- beq _081DDAC2
- movs r6, 0
-_081DDAA0:
- ldrb r0, [r4]
- cmp r0, 0
- beq _081DDABA
- ldrb r0, [r4, 0x1]
- movs r3, 0x7
- ands r0, r3
- beq _081DDAB8
- ldr r3, _081DDACC
- ldr r3, [r3]
- ldr r3, [r3, 0x2C]
- bl _081DDA7C
-_081DDAB8:
- strb r6, [r4]
-_081DDABA:
- str r6, [r4, 0x2C]
- ldr r4, [r4, 0x34]
- cmp r4, 0
- bne _081DDAA0
-_081DDAC2:
- str r4, [r5, 0x20]
-_081DDAC4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081DDACC: .4byte 0x03007ff0
- thumb_func_end TrackStop_rev01
-
- thumb_func_start ChnVolSetAsm
-ChnVolSetAsm: @ 81DDAD0
- 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 _081DDAE8
- movs r0, 0xFF
-_081DDAE8:
- 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 _081DDAFC
- movs r0, 0xFF
-_081DDAFC:
- strb r0, [r4, 0x3]
- bx lr
- thumb_func_end ChnVolSetAsm
-
- thumb_func_start ply_note_rev01
-ply_note_rev01: @ 81DDB00
- 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, _081DDCFC
- ldr r1, [r1]
- str r1, [sp, 0x4]
- ldr r1, _081DDD00
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r5, 0x4]
- ldr r3, [r5, 0x40]
- ldrb r0, [r3]
- cmp r0, 0x80
- bcs _081DDB46
- strb r0, [r5, 0x5]
- adds r3, 0x1
- ldrb r0, [r3]
- cmp r0, 0x80
- bcs _081DDB44
- strb r0, [r5, 0x6]
- adds r3, 0x1
- ldrb r0, [r3]
- cmp r0, 0x80
- bcs _081DDB44
- ldrb r1, [r5, 0x4]
- adds r1, r0
- strb r1, [r5, 0x4]
- adds r3, 0x1
-_081DDB44:
- str r3, [r5, 0x40]
-_081DDB46:
- movs r0, 0
- str r0, [sp, 0x14]
- adds r4, r5, 0
- adds r4, 0x24
- ldrb r2, [r4]
- movs r0, 0xC0
- tst r0, r2
- beq _081DDB98
- ldrb r3, [r5, 0x5]
- movs r0, 0x40
- tst r0, r2
- beq _081DDB66
- ldr r1, [r5, 0x2C]
- adds r1, r3
- ldrb r0, [r1]
- b _081DDB68
-_081DDB66:
- adds r0, r3, 0
-_081DDB68:
- 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 _081DDB80
- b _081DDCEA
-_081DDB80:
- movs r0, 0x80
- tst r0, r2
- beq _081DDB9C
- ldrb r1, [r6, 0x3]
- movs r0, 0x80
- tst r0, r1
- beq _081DDB94
- subs r1, 0xC0
- lsls r1, 1
- str r1, [sp, 0x14]
-_081DDB94:
- ldrb r3, [r6, 0x1]
- b _081DDB9C
-_081DDB98:
- mov r9, r4
- ldrb r3, [r5, 0x5]
-_081DDB9C:
- str r3, [sp, 0x8]
- ldr r6, [sp]
- ldrb r1, [r6, 0x9]
- ldrb r0, [r5, 0x1D]
- adds r0, r1
- cmp r0, 0xFF
- bls _081DDBAC
- movs r0, 0xFF
-_081DDBAC:
- str r0, [sp, 0x10]
- mov r6, r9
- ldrb r0, [r6]
- movs r6, 0x7
- ands r6, r0
- str r6, [sp, 0xC]
- beq _081DDBEC
- ldr r0, [sp, 0x4]
- ldr r4, [r0, 0x1C]
- cmp r4, 0
- bne _081DDBC4
- b _081DDCEA
-_081DDBC4:
- subs r6, 0x1
- lsls r0, r6, 6
- adds r4, r0
- ldrb r1, [r4]
- movs r0, 0xC7
- tst r0, r1
- beq _081DDC40
- movs r0, 0x40
- tst r0, r1
- bne _081DDC40
- ldrb r1, [r4, 0x13]
- ldr r0, [sp, 0x10]
- cmp r1, r0
- bcc _081DDC40
- beq _081DDBE4
- b _081DDCEA
-_081DDBE4:
- ldr r0, [r4, 0x2C]
- cmp r0, r5
- bcs _081DDC40
- b _081DDCEA
-_081DDBEC:
- 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
-_081DDBFA:
- ldrb r1, [r4]
- movs r0, 0xC7
- tst r0, r1
- beq _081DDC40
- movs r0, 0x40
- tst r0, r1
- beq _081DDC14
- cmp r2, 0
- bne _081DDC18
- adds r2, 0x1
- ldrb r6, [r4, 0x13]
- ldr r7, [r4, 0x2C]
- b _081DDC32
-_081DDC14:
- cmp r2, 0
- bne _081DDC34
-_081DDC18:
- ldrb r0, [r4, 0x13]
- cmp r0, r6
- bcs _081DDC24
- adds r6, r0, 0
- ldr r7, [r4, 0x2C]
- b _081DDC32
-_081DDC24:
- bhi _081DDC34
- ldr r0, [r4, 0x2C]
- cmp r0, r7
- bls _081DDC30
- adds r7, r0, 0
- b _081DDC32
-_081DDC30:
- bcc _081DDC34
-_081DDC32:
- mov r8, r4
-_081DDC34:
- adds r4, 0x40
- subs r3, 0x1
- bgt _081DDBFA
- mov r4, r8
- cmp r4, 0
- beq _081DDCEA
-_081DDC40:
- adds r0, r4, 0
- bl ClearChain_rev
- movs r1, 0
- str r1, [r4, 0x30]
- ldr r3, [r5, 0x20]
- str r3, [r4, 0x34]
- cmp r3, 0
- beq _081DDC54
- str r4, [r3, 0x30]
-_081DDC54:
- str r4, [r5, 0x20]
- str r5, [r4, 0x2C]
- ldrb r0, [r5, 0x1B]
- strb r0, [r5, 0x1C]
- cmp r0, r1
- beq _081DDC66
- adds r1, r5, 0
- bl clear_modM
-_081DDC66:
- ldr r0, [sp]
- adds r1, r5, 0
- bl TrkVolPitSet_rev01
- 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 _081DDCA0
- movs r3, 0
-_081DDCA0:
- ldr r6, [sp, 0xC]
- cmp r6, 0
- beq _081DDCCE
- mov r6, r9
- ldrb r0, [r6, 0x2]
- strb r0, [r4, 0x1E]
- ldrb r1, [r6, 0x3]
- movs r0, 0x80
- tst r0, r1
- bne _081DDCBA
- movs r0, 0x70
- tst r0, r1
- bne _081DDCBC
-_081DDCBA:
- movs r1, 0x8
-_081DDCBC:
- 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 _081DDA7C
- b _081DDCDC
-_081DDCCE:
- ldr r0, [r5, 0x3C]
- str r0, [r4, 0x18]
- ldrb r2, [r5, 0x9]
- adds r1, r3, 0
- adds r0, r7, 0
- bl MidiKey2fr
-_081DDCDC:
- str r0, [r4, 0x20]
- movs r0, 0x80
- strb r0, [r4]
- ldrb r1, [r5]
- movs r0, 0xF0
- ands r0, r1
- strb r0, [r5]
-_081DDCEA:
- 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
-_081DDCFC: .4byte 0x03007ff0
-_081DDD00: .4byte gUnknown_0842FBE8
- thumb_func_end ply_note_rev01
-
- thumb_func_start ply_endtie_rev01
-ply_endtie_rev01: @ 81DDD04
- push {r4,r5}
- ldr r2, [r1, 0x40]
- ldrb r3, [r2]
- cmp r3, 0x80
- bcs _081DDD16
- strb r3, [r1, 0x5]
- adds r2, 0x1
- str r2, [r1, 0x40]
- b _081DDD18
-_081DDD16:
- ldrb r3, [r1, 0x5]
-_081DDD18:
- ldr r1, [r1, 0x20]
- cmp r1, 0
- beq _081DDD40
- movs r4, 0x83
- movs r5, 0x40
-_081DDD22:
- ldrb r2, [r1]
- tst r2, r4
- beq _081DDD3A
- tst r2, r5
- bne _081DDD3A
- ldrb r0, [r1, 0x11]
- cmp r0, r3
- bne _081DDD3A
- movs r0, 0x40
- orrs r2, r0
- strb r2, [r1]
- b _081DDD40
-_081DDD3A:
- ldr r1, [r1, 0x34]
- cmp r1, 0
- bne _081DDD22
-_081DDD40:
- pop {r4,r5}
- bx lr
- thumb_func_end ply_endtie_rev01
-
- thumb_func_start clear_modM
-clear_modM: @ 81DDD44
- movs r2, 0
- strb r2, [r1, 0x16]
- strb r2, [r1, 0x1A]
- ldrb r2, [r1, 0x18]
- cmp r2, 0
- bne _081DDD54
- movs r2, 0xC
- b _081DDD56
-_081DDD54:
- movs r2, 0x3
-_081DDD56:
- ldrb r3, [r1]
- orrs r3, r2
- strb r3, [r1]
- bx lr
- thumb_func_end clear_modM
-
- thumb_func_start ld_r3_tp_adr_i_rev
-ld_r3_tp_adr_i_rev: @ 81DDD60
- 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_rev
-
- thumb_func_start ply_lfos_rev01
-ply_lfos_rev01: @ 81DDD6C
- mov r12, lr
- bl ld_r3_tp_adr_i_rev
- strb r3, [r1, 0x19]
- cmp r3, 0
- bne _081DDD7C
- bl clear_modM
-_081DDD7C:
- bx r12
- thumb_func_end ply_lfos_rev01
-
- thumb_func_start ply_mod_rev01
-ply_mod_rev01: @ 81DDD80
- mov r12, lr
- bl ld_r3_tp_adr_i_rev
- strb r3, [r1, 0x17]
- cmp r3, 0
- bne _081DDD90
- bl clear_modM
-_081DDD90:
- bx r12
- thumb_func_end ply_mod_rev01
-
- thumb_func_start MidiKey2fr
-MidiKey2fr: @ 81DDD94
- push {r4-r7,lr}
- mov r12, r0
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r7, r2, 24
- cmp r6, 0xB2
- bls _081DDDA8
- movs r6, 0xB2
- movs r7, 0xFF
- lsls r7, 24
-_081DDDA8:
- ldr r3, _081DDDF0
- adds r0, r6, r3
- ldrb r5, [r0]
- ldr r4, _081DDDF4
- 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
-_081DDDF0: .4byte gUnknown_0842FA04
-_081DDDF4: .4byte gUnknown_0842FAB8
- thumb_func_end MidiKey2fr
-
- thumb_func_start DummyFunc
-DummyFunc: @ 81DDDF8
- bx lr
- thumb_func_end DummyFunc
-
- thumb_func_start MPlayContinue
-MPlayContinue: @ 81DDDFC
- adds r2, r0, 0
- ldr r3, [r2, 0x34]
- ldr r0, _081DDE10
- cmp r3, r0
- bne _081DDE0E
- ldr r0, [r2, 0x4]
- ldr r1, _081DDE14
- ands r0, r1
- str r0, [r2, 0x4]
-_081DDE0E:
- bx lr
- .align 2, 0
-_081DDE10: .4byte 0x68736d53
-_081DDE14: .4byte 0x7fffffff
- thumb_func_end MPlayContinue
-
- thumb_func_start MPlayFadeOut
-@ void MPlayFadeOut(mplay_table_entry *a1, s16 a2)
-MPlayFadeOut: @ 81DDE18
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r3, [r2, 0x34]
- ldr r0, _081DDE34
- cmp r3, r0
- bne _081DDE30
- strh r1, [r2, 0x26]
- strh r1, [r2, 0x24]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r2, 0x28]
-_081DDE30:
- bx lr
- .align 2, 0
-_081DDE34: .4byte 0x68736d53
- thumb_func_end MPlayFadeOut
-
- thumb_func_start m4aSoundInit
-m4aSoundInit: @ 81DDE38
- push {r4-r6,lr}
- ldr r0, _081DDEB8
- movs r1, 0x2
- negs r1, r1
- ands r0, r1
- ldr r1, _081DDEBC
- ldr r2, _081DDEC0
- bl CpuSet
- ldr r0, _081DDEC4
- bl SoundInit_rev01
- ldr r0, _081DDEC8
- bl MPlayExtender
- ldr r0, _081DDECC
- bl SoundMode_rev01
- ldr r0, _081DDED0
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _081DDE86
- ldr r6, _081DDED4
- adds r5, r0, 0
-_081DDE6A:
- ldr r4, [r6]
- ldr r1, [r6, 0x4]
- ldrb r2, [r6, 0x8]
- adds r0, r4, 0
- bl MPlayOpen_rev01
- ldrh r0, [r6, 0xA]
- strb r0, [r4, 0xB]
- ldr r0, _081DDED8
- str r0, [r4, 0x18]
- adds r6, 0xC
- subs r5, 0x1
- cmp r5, 0
- bne _081DDE6A
-_081DDE86:
- ldr r0, _081DDEDC
- ldr r1, _081DDEE0
- movs r2, 0x34
- bl memcpy
- movs r5, 0
- movs r6, 0
-_081DDE94:
- lsls r0, r5, 6
- ldr r1, _081DDEE4
- adds r0, r1
- ldr r4, _081DDEE8
- adds r4, r6, r4
- adds r1, r4, 0
- movs r2, 0x2
- bl MPlayOpen_rev01
- movs r0, 0
- str r0, [r4, 0x20]
- adds r6, 0xA0
- adds r5, 0x1
- cmp r5, 0x1
- ble _081DDE94
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081DDEB8: .4byte SoundMainRAM
-_081DDEBC: .4byte 0x03000f60
-_081DDEC0: .4byte 0x04000200
-_081DDEC4: .4byte 0x03005fd0
-_081DDEC8: .4byte 0x03007100
-_081DDECC: .4byte 0x0094c500
-_081DDED0: .4byte 0x00000004
-_081DDED4: .4byte gUnknown_0845545C
-_081DDED8: .4byte 0x03007440
-_081DDEDC: .4byte 0x03007340
-_081DDEE0: .4byte gUnknown_0842FC1C
-_081DDEE4: .4byte 0x03006ff0
-_081DDEE8: .4byte 0x03007200
- thumb_func_end m4aSoundInit
-
- thumb_func_start m4aSoundMain
-m4aSoundMain: @ 81DDEEC
- push {lr}
- bl SoundMain
- pop {r0}
- bx r0
- thumb_func_end m4aSoundMain
-
- thumb_func_start m4aSongNumStart
-m4aSongNumStart: @ 81DDEF8
- push {lr}
- lsls r0, 16
- ldr r2, _081DDF1C
- ldr r1, _081DDF20
- 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 MPlayStart_rev01
- pop {r0}
- bx r0
- .align 2, 0
-_081DDF1C: .4byte gUnknown_0845545C
-_081DDF20: .4byte gUnknown_0845548C
- thumb_func_end m4aSongNumStart
-
- thumb_func_start m4aSongNumStartOrChange
-m4aSongNumStartOrChange: @ 81DDF24
- push {lr}
- lsls r0, 16
- ldr r2, _081DDF50
- ldr r1, _081DDF54
- 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 _081DDF58
- adds r0, r1, 0
- adds r1, r2, 0
- bl MPlayStart_rev01
- b _081DDF6C
- .align 2, 0
-_081DDF50: .4byte gUnknown_0845545C
-_081DDF54: .4byte gUnknown_0845548C
-_081DDF58:
- ldr r2, [r1, 0x4]
- ldrh r0, [r1, 0x4]
- cmp r0, 0
- beq _081DDF64
- cmp r2, 0
- bge _081DDF6C
-_081DDF64:
- adds r0, r1, 0
- adds r1, r3, 0
- bl MPlayStart_rev01
-_081DDF6C:
- pop {r0}
- bx r0
- thumb_func_end m4aSongNumStartOrChange
-
- thumb_func_start m4aSongNumStartOrContinue
-m4aSongNumStartOrContinue: @ 81DDF70
- push {lr}
- lsls r0, 16
- ldr r2, _081DDF9C
- ldr r1, _081DDFA0
- 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 _081DDFA4
- adds r0, r1, 0
- adds r1, r2, 0
- bl MPlayStart_rev01
- b _081DDFC0
- .align 2, 0
-_081DDF9C: .4byte gUnknown_0845545C
-_081DDFA0: .4byte gUnknown_0845548C
-_081DDFA4:
- ldr r2, [r1, 0x4]
- ldrh r0, [r1, 0x4]
- cmp r0, 0
- bne _081DDFB6
- adds r0, r1, 0
- adds r1, r3, 0
- bl MPlayStart_rev01
- b _081DDFC0
-_081DDFB6:
- cmp r2, 0
- bge _081DDFC0
- adds r0, r1, 0
- bl MPlayContinue
-_081DDFC0:
- pop {r0}
- bx r0
- thumb_func_end m4aSongNumStartOrContinue
-
- thumb_func_start m4aSongNumStop
-m4aSongNumStop: @ 81DDFC4
- push {lr}
- lsls r0, 16
- ldr r2, _081DDFF0
- ldr r1, _081DDFF4
- 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 _081DDFEA
- adds r0, r2, 0
- bl MPlayStop_rev01
-_081DDFEA:
- pop {r0}
- bx r0
- .align 2, 0
-_081DDFF0: .4byte gUnknown_0845545C
-_081DDFF4: .4byte gUnknown_0845548C
- thumb_func_end m4aSongNumStop
-
- thumb_func_start m4aSongNumContinue
-m4aSongNumContinue: @ 81DDFF8
- push {lr}
- lsls r0, 16
- ldr r2, _081DE024
- ldr r1, _081DE028
- 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 _081DE01E
- adds r0, r2, 0
- bl MPlayContinue
-_081DE01E:
- pop {r0}
- bx r0
- .align 2, 0
-_081DE024: .4byte gUnknown_0845545C
-_081DE028: .4byte gUnknown_0845548C
- thumb_func_end m4aSongNumContinue
-
- thumb_func_start m4aMPlayAllStop
-m4aMPlayAllStop: @ 81DE02C
- push {r4,r5,lr}
- ldr r0, _081DE064
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _081DE04A
- ldr r5, _081DE068
- adds r4, r0, 0
-_081DE03C:
- ldr r0, [r5]
- bl MPlayStop_rev01
- adds r5, 0xC
- subs r4, 0x1
- cmp r4, 0
- bne _081DE03C
-_081DE04A:
- ldr r5, _081DE06C
- movs r4, 0x1
-_081DE04E:
- adds r0, r5, 0
- bl MPlayStop_rev01
- adds r5, 0x40
- subs r4, 0x1
- cmp r4, 0
- bge _081DE04E
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081DE064: .4byte 0x00000004
-_081DE068: .4byte gUnknown_0845545C
-_081DE06C: .4byte 0x03006ff0
- thumb_func_end m4aMPlayAllStop
-
- thumb_func_start m4aMPlayContinue
-m4aMPlayContinue: @ 81DE070
- push {lr}
- bl MPlayContinue
- pop {r0}
- bx r0
- thumb_func_end m4aMPlayContinue
-
- thumb_func_start m4aMPlayAllContinue
-m4aMPlayAllContinue: @ 81DE07A
- push {r4,r5,lr}
- ldr r0, _081DE0B4
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _081DE09A
- ldr r5, _081DE0B8
- adds r4, r0, 0
-_081DE08C:
- ldr r0, [r5]
- bl MPlayContinue
- adds r5, 0xC
- subs r4, 0x1
- cmp r4, 0
- bne _081DE08C
-_081DE09A:
- ldr r5, _081DE0BC
- movs r4, 0x1
-_081DE09E:
- adds r0, r5, 0
- bl MPlayContinue
- adds r5, 0x40
- subs r4, 0x1
- cmp r4, 0
- bge _081DE09E
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081DE0B4: .4byte 0x00000004
-_081DE0B8: .4byte gUnknown_0845545C
-_081DE0BC: .4byte 0x03006ff0
- thumb_func_end m4aMPlayAllContinue
-
- thumb_func_start m4aMPlayFadeOut
-@ void m4aMPlayFadeOut(mplay_table_entry *a1, u16 a2)
-m4aMPlayFadeOut: @ 81DE0C0
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- bl MPlayFadeOut
- pop {r0}
- bx r0
- thumb_func_end m4aMPlayFadeOut
-
- thumb_func_start sub_81DE0D0
-sub_81DE0D0: @ 81DE0D0
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r3, [r2, 0x34]
- ldr r0, _081DE0E8
- cmp r3, r0
- bne _081DE0E6
- strh r1, [r2, 0x26]
- strh r1, [r2, 0x24]
- ldr r0, _081DE0EC
- strh r0, [r2, 0x28]
-_081DE0E6:
- bx lr
- .align 2, 0
-_081DE0E8: .4byte 0x68736d53
-_081DE0EC: .4byte 0x00000101
- thumb_func_end sub_81DE0D0
-
- thumb_func_start sub_81DE0F0
-sub_81DE0F0: @ 81DE0F0
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r3, [r2, 0x34]
- ldr r0, _081DE110
- cmp r3, r0
- bne _081DE10E
- strh r1, [r2, 0x26]
- strh r1, [r2, 0x24]
- movs r0, 0x2
- strh r0, [r2, 0x28]
- ldr r0, [r2, 0x4]
- ldr r1, _081DE114
- ands r0, r1
- str r0, [r2, 0x4]
-_081DE10E:
- bx lr
- .align 2, 0
-_081DE110: .4byte 0x68736d53
-_081DE114: .4byte 0x7fffffff
- thumb_func_end sub_81DE0F0
-
- thumb_func_start m4aMPlayImmInit
-m4aMPlayImmInit: @ 81DE118
- push {r4-r7,lr}
- ldrb r5, [r0, 0x8]
- ldr r4, [r0, 0x2C]
- cmp r5, 0
- ble _081DE15A
- movs r7, 0x80
-_081DE124:
- ldrb r1, [r4]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _081DE152
- movs r6, 0x40
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _081DE152
- adds r0, r4, 0
- bl Clear64byte_rev
- 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]
-_081DE152:
- subs r5, 0x1
- adds r4, 0x50
- cmp r5, 0
- bgt _081DE124
-_081DE15A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end m4aMPlayImmInit
-
- thumb_func_start MPlayExtender
-@ int MPlayExtender(void *dest)
-MPlayExtender: @ 81DE160
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r1, _081DE228
- movs r0, 0x8F
- strh r0, [r1]
- ldr r3, _081DE22C
- movs r2, 0
- strh r2, [r3]
- ldr r0, _081DE230
- 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, _081DE234
- ldr r4, [r0]
- ldr r6, [r4]
- ldr r0, _081DE238
- cmp r6, r0
- bne _081DE220
- adds r0, r6, 0x1
- str r0, [r4]
- ldr r1, _081DE23C
- ldr r0, _081DE240
- str r0, [r1, 0x20]
- ldr r0, _081DE244
- str r0, [r1, 0x44]
- ldr r0, _081DE248
- str r0, [r1, 0x4C]
- ldr r0, _081DE24C
- str r0, [r1, 0x70]
- ldr r0, _081DE250
- str r0, [r1, 0x74]
- ldr r0, _081DE254
- str r0, [r1, 0x78]
- ldr r0, _081DE258
- str r0, [r1, 0x7C]
- adds r2, r1, 0
- adds r2, 0x80
- ldr r0, _081DE25C
- str r0, [r2]
- adds r1, 0x84
- ldr r0, _081DE260
- str r0, [r1]
- str r5, [r4, 0x1C]
- ldr r0, _081DE264
- str r0, [r4, 0x28]
- ldr r0, _081DE268
- str r0, [r4, 0x2C]
- ldr r0, _081DE26C
- str r0, [r4, 0x30]
- ldr r0, _081DE270
- movs r1, 0
- strb r0, [r4, 0xC]
- str r1, [sp]
- ldr r2, _081DE274
- 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]
-_081DE220:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081DE228: .4byte 0x04000084
-_081DE22C: .4byte 0x04000080
-_081DE230: .4byte 0x04000063
-_081DE234: .4byte 0x03007ff0
-_081DE238: .4byte 0x68736d53
-_081DE23C: .4byte 0x03007070
-_081DE240: .4byte ply_memacc
-_081DE244: .4byte ply_lfos_rev01
-_081DE248: .4byte ply_mod_rev01
-_081DE24C: .4byte ply_xcmd
-_081DE250: .4byte ply_endtie_rev01
-_081DE254: .4byte SampFreqSet_rev01
-_081DE258: .4byte TrackStop_rev01
-_081DE25C: .4byte FadeOutBody_rev01
-_081DE260: .4byte TrkVolPitSet_rev01
-_081DE264: .4byte CgbSound
-_081DE268: .4byte CgbOscOff
-_081DE26C: .4byte MidiKey2CgbFr
-_081DE270: .4byte 0x0000003c
-_081DE274: .4byte 0x05000040
- thumb_func_end MPlayExtender
-
- thumb_func_start MusicPlayerJumpTableCopy
-MusicPlayerJumpTableCopy: @ 81DE278
- swi 0x2A
- bx lr
- thumb_func_end MusicPlayerJumpTableCopy
-
- thumb_func_start ClearChain_rev
-ClearChain_rev: @ 81DE27C
- push {lr}
- ldr r1, _081DE28C
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_081DE28C: .4byte 0x030070f8
- thumb_func_end ClearChain_rev
-
- thumb_func_start Clear64byte_rev
-Clear64byte_rev: @ 81DE290
- push {lr}
- ldr r1, _081DE2A0
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_081DE2A0: .4byte 0x030070fc
- thumb_func_end Clear64byte_rev
-
- thumb_func_start SoundInit_rev01
-@ int SoundInit_rev01(void *dest)
-SoundInit_rev01: @ 81DE2A4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r3, 0
- str r3, [r5]
- ldr r1, _081DE35C
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 18
- ands r0, r2
- cmp r0, 0
- beq _081DE2C0
- ldr r0, _081DE360
- str r0, [r1]
-_081DE2C0:
- ldr r1, _081DE364
- ldr r0, [r1]
- ands r0, r2
- cmp r0, 0
- beq _081DE2CE
- ldr r0, _081DE360
- str r0, [r1]
-_081DE2CE:
- ldr r0, _081DE368
- movs r2, 0x80
- lsls r2, 3
- adds r1, r2, 0
- strh r1, [r0]
- adds r0, 0xC
- strh r1, [r0]
- ldr r1, _081DE36C
- movs r0, 0x8F
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _081DE370
- adds r0, r2, 0
- strh r0, [r1]
- ldr r2, _081DE374
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _081DE378
- movs r2, 0xD4
- lsls r2, 2
- adds r0, r5, r2
- str r0, [r1]
- adds r1, 0x4
- ldr r0, _081DE37C
- str r0, [r1]
- adds r1, 0x8
- movs r2, 0x98
- lsls r2, 4
- adds r0, r5, r2
- str r0, [r1]
- adds r1, 0x4
- ldr r0, _081DE380
- str r0, [r1]
- ldr r0, _081DE384
- str r5, [r0]
- str r3, [sp]
- ldr r2, _081DE388
- 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, _081DE38C
- str r0, [r5, 0x38]
- ldr r0, _081DE390
- str r0, [r5, 0x28]
- str r0, [r5, 0x2C]
- str r0, [r5, 0x30]
- str r0, [r5, 0x3C]
- ldr r4, _081DE394
- adds r0, r4, 0
- bl MPlyJmpTblCopy
- str r4, [r5, 0x34]
- movs r0, 0x80
- lsls r0, 11
- bl SampFreqSet_rev01
- ldr r0, _081DE398
- str r0, [r5]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081DE35C: .4byte 0x040000c4
-_081DE360: .4byte 0x84400004
-_081DE364: .4byte 0x040000d0
-_081DE368: .4byte 0x040000c6
-_081DE36C: .4byte 0x04000084
-_081DE370: .4byte 0x0000a90e
-_081DE374: .4byte 0x04000089
-_081DE378: .4byte 0x040000bc
-_081DE37C: .4byte 0x040000a0
-_081DE380: .4byte 0x040000a4
-_081DE384: .4byte 0x03007ff0
-_081DE388: .4byte 0x050003ec
-_081DE38C: .4byte ply_note_rev01
-_081DE390: .4byte DummyFunc_rev
-_081DE394: .4byte 0x03007070
-_081DE398: .4byte 0x68736d53
- thumb_func_end SoundInit_rev01
-
- thumb_func_start SampFreqSet_rev01
-SampFreqSet_rev01: @ 81DE39C
- push {r4-r6,lr}
- adds r2, r0, 0
- ldr r0, _081DE41C
- 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, _081DE420
- 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, _081DE424
- muls r0, r5
- ldr r1, _081DE428
- adds r0, r1
- ldr r1, _081DE42C
- 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, _081DE430
- strh r6, [r0]
- ldr r4, _081DE434
- ldr r0, _081DE438
- adds r1, r5, 0
- bl __divsi3
- negs r0, r0
- strh r0, [r4]
- bl SoundVSyncOn_rev01
- ldr r1, _081DE43C
-_081DE400:
- ldrb r0, [r1]
- cmp r0, 0x9F
- beq _081DE400
- ldr r1, _081DE43C
-_081DE408:
- ldrb r0, [r1]
- cmp r0, 0x9F
- bne _081DE408
- ldr r1, _081DE430
- movs r0, 0x80
- strh r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081DE41C: .4byte 0x03007ff0
-_081DE420: .4byte gUnknown_0842FAE8
-_081DE424: .4byte 0x00091d1b
-_081DE428: .4byte 0x00001388
-_081DE42C: .4byte 0x00002710
-_081DE430: .4byte 0x04000102
-_081DE434: .4byte 0x04000100
-_081DE438: .4byte 0x00044940
-_081DE43C: .4byte 0x04000006
- thumb_func_end SampFreqSet_rev01
-
- thumb_func_start SoundMode_rev01
-SoundMode_rev01: @ 81DE440
- push {r4,r5,lr}
- adds r3, r0, 0
- ldr r0, _081DE4CC
- ldr r5, [r0]
- ldr r1, [r5]
- ldr r0, _081DE4D0
- cmp r1, r0
- bne _081DE4C6
- adds r0, r1, 0x1
- str r0, [r5]
- movs r4, 0xFF
- ands r4, r3
- cmp r4, 0
- beq _081DE462
- movs r0, 0x7F
- ands r4, r0
- strb r4, [r5, 0x5]
-_081DE462:
- movs r4, 0xF0
- lsls r4, 4
- ands r4, r3
- cmp r4, 0
- beq _081DE482
- lsrs r0, r4, 8
- strb r0, [r5, 0x6]
- movs r4, 0xC
- adds r0, r5, 0
- adds r0, 0x50
- movs r1, 0
-_081DE478:
- strb r1, [r0]
- subs r4, 0x1
- adds r0, 0x40
- cmp r4, 0
- bne _081DE478
-_081DE482:
- movs r4, 0xF0
- lsls r4, 8
- ands r4, r3
- cmp r4, 0
- beq _081DE490
- lsrs r0, r4, 12
- strb r0, [r5, 0x7]
-_081DE490:
- movs r4, 0xB0
- lsls r4, 16
- ands r4, r3
- cmp r4, 0
- beq _081DE4AE
- movs r0, 0xC0
- lsls r0, 14
- ands r0, r4
- lsrs r4, r0, 14
- ldr r2, _081DE4D4
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- orrs r0, r4
- strb r0, [r2]
-_081DE4AE:
- movs r4, 0xF0
- lsls r4, 12
- ands r4, r3
- cmp r4, 0
- beq _081DE4C2
- bl SoundVSyncOff_rev01
- adds r0, r4, 0
- bl SampFreqSet_rev01
-_081DE4C2:
- ldr r0, _081DE4D0
- str r0, [r5]
-_081DE4C6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081DE4CC: .4byte 0x03007ff0
-_081DE4D0: .4byte 0x68736d53
-_081DE4D4: .4byte 0x04000089
- thumb_func_end SoundMode_rev01
-
- thumb_func_start SoundClear_rev01
-SoundClear_rev01: @ 81DE4D8
- push {r4-r7,lr}
- ldr r0, _081DE524
- ldr r6, [r0]
- ldr r1, [r6]
- ldr r0, _081DE528
- cmp r1, r0
- bne _081DE51E
- adds r0, r1, 0x1
- str r0, [r6]
- movs r5, 0xC
- adds r4, r6, 0
- adds r4, 0x50
- movs r0, 0
-_081DE4F2:
- strb r0, [r4]
- subs r5, 0x1
- adds r4, 0x40
- cmp r5, 0
- bgt _081DE4F2
- ldr r4, [r6, 0x1C]
- cmp r4, 0
- beq _081DE51A
- movs r5, 0x1
- movs r7, 0
-_081DE506:
- 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 _081DE506
-_081DE51A:
- ldr r0, _081DE528
- str r0, [r6]
-_081DE51E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081DE524: .4byte 0x03007ff0
-_081DE528: .4byte 0x68736d53
- thumb_func_end SoundClear_rev01
-
- thumb_func_start SoundVSyncOff_rev01
-SoundVSyncOff_rev01: @ 81DE52C
- push {lr}
- sub sp, 0x4
- ldr r0, _081DE58C
- ldr r2, [r0]
- ldr r1, [r2]
- ldr r3, _081DE590
- adds r0, r1, r3
- cmp r0, 0x1
- bhi _081DE584
- adds r0, r1, 0
- adds r0, 0xA
- str r0, [r2]
- ldr r1, _081DE594
- ldr r0, [r1]
- movs r3, 0x80
- lsls r3, 18
- ands r0, r3
- cmp r0, 0
- beq _081DE556
- ldr r0, _081DE598
- str r0, [r1]
-_081DE556:
- ldr r1, _081DE59C
- ldr r0, [r1]
- ands r0, r3
- cmp r0, 0
- beq _081DE564
- ldr r0, _081DE598
- str r0, [r1]
-_081DE564:
- ldr r0, _081DE5A0
- 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, _081DE5A4
- mov r0, sp
- bl CpuSet
-_081DE584:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_081DE58C: .4byte 0x03007ff0
-_081DE590: .4byte 0x978c92ad
-_081DE594: .4byte 0x040000c4
-_081DE598: .4byte 0x84400004
-_081DE59C: .4byte 0x040000d0
-_081DE5A0: .4byte 0x040000c6
-_081DE5A4: .4byte 0x05000318
- thumb_func_end SoundVSyncOff_rev01
-
- thumb_func_start SoundVSyncOn_rev01
-SoundVSyncOn_rev01: @ 81DE5A8
- push {r4,lr}
- ldr r0, _081DE5D8
- ldr r2, [r0]
- ldr r3, [r2]
- ldr r0, _081DE5DC
- cmp r3, r0
- beq _081DE5D0
- ldr r0, _081DE5E0
- 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]
-_081DE5D0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081DE5D8: .4byte 0x03007ff0
-_081DE5DC: .4byte 0x68736d53
-_081DE5E0: .4byte 0x040000c6
- thumb_func_end SoundVSyncOn_rev01
-
- thumb_func_start MPlayOpen_rev01
-MPlayOpen_rev01: @ 81DE5E4
- push {r4-r7,lr}
- adds r7, r0, 0
- adds r6, r1, 0
- lsls r2, 24
- lsrs r4, r2, 24
- cmp r4, 0
- beq _081DE648
- cmp r4, 0x10
- bls _081DE5F8
- movs r4, 0x10
-_081DE5F8:
- ldr r0, _081DE650
- ldr r5, [r0]
- ldr r1, [r5]
- ldr r0, _081DE654
- cmp r1, r0
- bne _081DE648
- adds r0, r1, 0x1
- str r0, [r5]
- adds r0, r7, 0
- bl Clear64byte_rev
- str r6, [r7, 0x2C]
- strb r4, [r7, 0x8]
- movs r0, 0x80
- lsls r0, 24
- str r0, [r7, 0x4]
- cmp r4, 0
- beq _081DE62C
- movs r1, 0
-_081DE61E:
- strb r1, [r6]
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, 0x50
- cmp r4, 0
- bne _081DE61E
-_081DE62C:
- ldr r0, [r5, 0x20]
- cmp r0, 0
- beq _081DE63C
- str r0, [r7, 0x38]
- ldr r0, [r5, 0x24]
- str r0, [r7, 0x3C]
- movs r0, 0
- str r0, [r5, 0x20]
-_081DE63C:
- str r7, [r5, 0x24]
- ldr r0, _081DE658
- str r0, [r5, 0x20]
- ldr r0, _081DE654
- str r0, [r5]
- str r0, [r7, 0x34]
-_081DE648:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081DE650: .4byte 0x03007ff0
-_081DE654: .4byte 0x68736d53
-_081DE658: .4byte MPlayMain_rev01
- thumb_func_end MPlayOpen_rev01
-
- thumb_func_start MPlayStart_rev01
-MPlayStart_rev01: @ 81DE65C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- adds r7, r1, 0
- ldr r1, [r5, 0x34]
- ldr r0, _081DE73C
- cmp r1, r0
- bne _081DE732
- ldrb r0, [r5, 0xB]
- ldrb r2, [r7, 0x2]
- cmp r0, 0
- beq _081DE69E
- ldr r0, [r5]
- cmp r0, 0
- beq _081DE688
- ldr r1, [r5, 0x2C]
- movs r0, 0x40
- ldrb r1, [r1]
- ands r0, r1
- cmp r0, 0
- bne _081DE694
-_081DE688:
- ldr r1, [r5, 0x4]
- ldrh r0, [r5, 0x4]
- cmp r0, 0
- beq _081DE69E
- cmp r1, 0
- blt _081DE69E
-_081DE694:
- ldrb r0, [r7, 0x2]
- adds r2, r0, 0
- ldrb r0, [r5, 0x9]
- cmp r0, r2
- bhi _081DE732
-_081DE69E:
- 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 _081DE6FE
- ldrb r0, [r5, 0x8]
- cmp r6, r0
- bge _081DE71E
- mov r8, r6
-_081DE6D2:
- adds r0, r5, 0
- adds r1, r4, 0
- bl TrackStop_rev01
- 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 _081DE6FE
- ldrb r1, [r5, 0x8]
- cmp r6, r1
- blt _081DE6D2
-_081DE6FE:
- ldrb r0, [r5, 0x8]
- cmp r6, r0
- bge _081DE71E
- movs r1, 0
- mov r8, r1
-_081DE708:
- adds r0, r5, 0
- adds r1, r4, 0
- bl TrackStop_rev01
- mov r0, r8
- strb r0, [r4]
- adds r6, 0x1
- adds r4, 0x50
- ldrb r1, [r5, 0x8]
- cmp r6, r1
- blt _081DE708
-_081DE71E:
- movs r0, 0x80
- ldrb r1, [r7, 0x3]
- ands r0, r1
- cmp r0, 0
- beq _081DE72E
- ldrb r0, [r7, 0x3]
- bl SoundMode_rev01
-_081DE72E:
- ldr r0, _081DE73C
- str r0, [r5, 0x34]
-_081DE732:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081DE73C: .4byte 0x68736d53
- thumb_func_end MPlayStart_rev01
-
- thumb_func_start MPlayStop_rev01
-MPlayStop_rev01: @ 81DE740
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r1, [r6, 0x34]
- ldr r0, _081DE77C
- cmp r1, r0
- bne _081DE776
- 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 _081DE772
-_081DE762:
- adds r0, r6, 0
- adds r1, r5, 0
- bl TrackStop_rev01
- subs r4, 0x1
- adds r5, 0x50
- cmp r4, 0
- bgt _081DE762
-_081DE772:
- ldr r0, _081DE77C
- str r0, [r6, 0x34]
-_081DE776:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081DE77C: .4byte 0x68736d53
- thumb_func_end MPlayStop_rev01
-
- thumb_func_start FadeOutBody_rev01
-FadeOutBody_rev01: @ 81DE780
- push {r4-r7,lr}
- adds r6, r0, 0
- ldrh r1, [r6, 0x24]
- cmp r1, 0
- beq _081DE842
- ldrh r0, [r6, 0x26]
- subs r0, 0x1
- strh r0, [r6, 0x26]
- ldr r3, _081DE7C0
- adds r2, r3, 0
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _081DE842
- strh r1, [r6, 0x26]
- ldrh r1, [r6, 0x28]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081DE7C4
- adds r0, r1, 0
- adds r0, 0x10
- strh r0, [r6, 0x28]
- ands r0, r2
- cmp r0, 0xFF
- bls _081DE816
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r6, 0x28]
- strh r3, [r6, 0x24]
- b _081DE816
- .align 2, 0
-_081DE7C0: .4byte 0x0000ffff
-_081DE7C4:
- adds r0, r1, 0
- subs r0, 0x10
- strh r0, [r6, 0x28]
- ands r0, r2
- lsls r0, 16
- cmp r0, 0
- bgt _081DE816
- ldrb r5, [r6, 0x8]
- ldr r4, [r6, 0x2C]
- cmp r5, 0
- ble _081DE7F6
-_081DE7DA:
- adds r0, r6, 0
- adds r1, r4, 0
- bl TrackStop_rev01
- movs r0, 0x1
- ldrh r7, [r6, 0x28]
- ands r0, r7
- cmp r0, 0
- bne _081DE7EE
- strb r0, [r4]
-_081DE7EE:
- subs r5, 0x1
- adds r4, 0x50
- cmp r5, 0
- bgt _081DE7DA
-_081DE7F6:
- movs r0, 0x1
- ldrh r1, [r6, 0x28]
- ands r0, r1
- cmp r0, 0
- beq _081DE80A
- ldr r0, [r6, 0x4]
- movs r1, 0x80
- lsls r1, 24
- orrs r0, r1
- b _081DE80E
-_081DE80A:
- movs r0, 0x80
- lsls r0, 24
-_081DE80E:
- str r0, [r6, 0x4]
- movs r0, 0
- strh r0, [r6, 0x24]
- b _081DE842
-_081DE816:
- ldrb r5, [r6, 0x8]
- ldr r4, [r6, 0x2C]
- cmp r5, 0
- ble _081DE842
- movs r3, 0x80
- movs r7, 0
- movs r2, 0x3
-_081DE824:
- ldrb r1, [r4]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _081DE83A
- ldrh r7, [r6, 0x28]
- lsrs r0, r7, 2
- strb r0, [r4, 0x13]
- adds r0, r1, 0
- orrs r0, r2
- strb r0, [r4]
-_081DE83A:
- subs r5, 0x1
- adds r4, 0x50
- cmp r5, 0
- bgt _081DE824
-_081DE842:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end FadeOutBody_rev01
-
- thumb_func_start TrkVolPitSet_rev01
-TrkVolPitSet_rev01: @ 81DE848
- push {r4,lr}
- adds r2, r1, 0
- movs r0, 0x1
- ldrb r1, [r2]
- ands r0, r1
- cmp r0, 0
- beq _081DE8AC
- 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 _081DE870
- movs r0, 0x16
- ldrsb r0, [r2, r0]
- adds r0, 0x80
- muls r0, r3
- lsrs r3, r0, 7
-_081DE870:
- 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 _081DE886
- movs r0, 0x16
- ldrsb r0, [r2, r0]
- adds r1, r0
-_081DE886:
- movs r0, 0x80
- negs r0, r0
- cmp r1, r0
- bge _081DE892
- adds r1, r0, 0
- b _081DE898
-_081DE892:
- cmp r1, 0x7F
- ble _081DE898
- movs r1, 0x7F
-_081DE898:
- 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]
-_081DE8AC:
- ldrb r1, [r2]
- movs r0, 0x4
- ands r0, r1
- adds r3, r1, 0
- cmp r0, 0
- beq _081DE8F0
- 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 _081DE8EA
- movs r0, 0x16
- ldrsb r0, [r2, r0]
- lsls r0, 4
- adds r1, r0
-_081DE8EA:
- asrs r0, r1, 8
- strb r0, [r2, 0x8]
- strb r1, [r2, 0x9]
-_081DE8F0:
- movs r0, 0xFA
- ands r0, r3
- strb r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end TrkVolPitSet_rev01
-
- thumb_func_start MidiKey2CgbFr
-MidiKey2CgbFr: @ 81DE8FC
- 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 _081DE934
- cmp r5, 0x14
- bhi _081DE918
- movs r5, 0
- b _081DE926
-_081DE918:
- adds r0, r5, 0
- subs r0, 0x15
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3B
- bls _081DE926
- movs r5, 0x3B
-_081DE926:
- ldr r0, _081DE930
- adds r0, r5, r0
- ldrb r0, [r0]
- b _081DE996
- .align 2, 0
-_081DE930: .4byte gUnknown_0842FB9C
-_081DE934:
- cmp r5, 0x23
- bhi _081DE940
- movs r0, 0
- mov r12, r0
- movs r5, 0
- b _081DE952
-_081DE940:
- adds r0, r5, 0
- subs r0, 0x24
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x82
- bls _081DE952
- movs r5, 0x82
- movs r1, 0xFF
- mov r12, r1
-_081DE952:
- ldr r3, _081DE99C
- adds r0, r5, r3
- ldrb r6, [r0]
- ldr r4, _081DE9A0
- 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
-_081DE996:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081DE99C: .4byte gUnknown_0842FB00
-_081DE9A0: .4byte gUnknown_0842FB84
- thumb_func_end MidiKey2CgbFr
-
- thumb_func_start CgbOscOff
-CgbOscOff: @ 81DE9A4
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x2
- beq _081DE9CC
- cmp r0, 0x2
- bgt _081DE9B8
- cmp r0, 0x1
- beq _081DE9BE
- b _081DE9E0
-_081DE9B8:
- cmp r1, 0x3
- beq _081DE9D4
- b _081DE9E0
-_081DE9BE:
- ldr r1, _081DE9C8
- movs r0, 0x8
- strb r0, [r1]
- adds r1, 0x2
- b _081DE9E8
- .align 2, 0
-_081DE9C8: .4byte 0x04000063
-_081DE9CC:
- ldr r1, _081DE9D0
- b _081DE9E2
- .align 2, 0
-_081DE9D0: .4byte 0x04000069
-_081DE9D4:
- ldr r1, _081DE9DC
- movs r0, 0
- b _081DE9EA
- .align 2, 0
-_081DE9DC: .4byte 0x04000070
-_081DE9E0:
- ldr r1, _081DE9F0
-_081DE9E2:
- movs r0, 0x8
- strb r0, [r1]
- adds r1, 0x4
-_081DE9E8:
- movs r0, 0x80
-_081DE9EA:
- strb r0, [r1]
- bx lr
- .align 2, 0
-_081DE9F0: .4byte 0x04000079
- thumb_func_end CgbOscOff
-
- thumb_func_start CgbModVol
-CgbModVol: @ 81DE9F4
- push {r4,lr}
- adds r2, r0, 0
- ldr r0, _081DEA24
- ldr r1, [r0]
- movs r0, 0x1
- ldrb r1, [r1, 0x9]
- ands r0, r1
- cmp r0, 0
- bne _081DEA34
- ldrb r0, [r2, 0x2]
- lsls r1, r0, 24
- lsrs r4, r1, 24
- ldrb r3, [r2, 0x3]
- lsls r0, r3, 24
- lsrs r3, r0, 24
- cmp r4, r3
- bcc _081DEA28
- lsrs r0, r1, 25
- cmp r0, r3
- bcc _081DEA34
- movs r0, 0xF
- strb r0, [r2, 0x1B]
- b _081DEA42
- .align 2, 0
-_081DEA24: .4byte 0x03007ff0
-_081DEA28:
- lsrs r0, 25
- cmp r0, r4
- bcc _081DEA34
- movs r0, 0xF0
- strb r0, [r2, 0x1B]
- b _081DEA42
-_081DEA34:
- movs r0, 0xFF
- strb r0, [r2, 0x1B]
- ldrb r1, [r2, 0x3]
- ldrb r3, [r2, 0x2]
- adds r0, r1, r3
- lsrs r0, 4
- b _081DEA52
-_081DEA42:
- ldrb r1, [r2, 0x3]
- ldrb r3, [r2, 0x2]
- adds r0, r1, r3
- lsrs r0, 4
- strb r0, [r2, 0xA]
- cmp r0, 0xF
- bls _081DEA54
- movs r0, 0xF
-_081DEA52:
- strb r0, [r2, 0xA]
-_081DEA54:
- ldrb r1, [r2, 0x6]
- ldrb r3, [r2, 0xA]
- adds r0, r1, 0
- muls r0, r3
- adds r0, 0xF
- asrs r0, 4
- strb r0, [r2, 0x19]
- ldrb r0, [r2, 0x1C]
- ldrb r1, [r2, 0x1B]
- ands r0, r1
- strb r0, [r2, 0x1B]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end CgbModVol
-
- thumb_func_start CgbSound
-CgbSound: @ 81DEA70
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r0, _081DEA90
- ldr r0, [r0]
- str r0, [sp, 0x4]
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _081DEA94
- subs r0, 0x1
- ldr r1, [sp, 0x4]
- strb r0, [r1, 0xA]
- b _081DEA9A
- .align 2, 0
-_081DEA90: .4byte 0x03007ff0
-_081DEA94:
- movs r0, 0xE
- ldr r2, [sp, 0x4]
- strb r0, [r2, 0xA]
-_081DEA9A:
- movs r6, 0x1
- ldr r0, [sp, 0x4]
- ldr r4, [r0, 0x1C]
-_081DEAA0:
- 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 _081DEAB6
- b _081DEEA0
-_081DEAB6:
- cmp r6, 0x2
- beq _081DEAE8
- cmp r6, 0x2
- bgt _081DEAC4
- cmp r6, 0x1
- beq _081DEACA
- b _081DEB20
-_081DEAC4:
- cmp r6, 0x3
- beq _081DEB00
- b _081DEB20
-_081DEACA:
- ldr r0, _081DEADC
- str r0, [sp, 0x8]
- ldr r7, _081DEAE0
- ldr r2, _081DEAE4
- str r2, [sp, 0xC]
- adds r0, 0x4
- str r0, [sp, 0x10]
- adds r2, 0x2
- b _081DEB30
- .align 2, 0
-_081DEADC: .4byte 0x04000060
-_081DEAE0: .4byte 0x04000062
-_081DEAE4: .4byte 0x04000063
-_081DEAE8:
- ldr r0, _081DEAF4
- str r0, [sp, 0x8]
- ldr r7, _081DEAF8
- ldr r2, _081DEAFC
- b _081DEB28
- .align 2, 0
-_081DEAF4: .4byte 0x04000061
-_081DEAF8: .4byte 0x04000068
-_081DEAFC: .4byte 0x04000069
-_081DEB00:
- ldr r0, _081DEB14
- str r0, [sp, 0x8]
- ldr r7, _081DEB18
- ldr r2, _081DEB1C
- str r2, [sp, 0xC]
- adds r0, 0x4
- str r0, [sp, 0x10]
- adds r2, 0x2
- b _081DEB30
- .align 2, 0
-_081DEB14: .4byte 0x04000070
-_081DEB18: .4byte 0x04000072
-_081DEB1C: .4byte 0x04000073
-_081DEB20:
- ldr r0, _081DEB80
- str r0, [sp, 0x8]
- ldr r7, _081DEB84
- ldr r2, _081DEB88
-_081DEB28:
- str r2, [sp, 0xC]
- adds r0, 0xB
- str r0, [sp, 0x10]
- adds r2, 0x4
-_081DEB30:
- 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 _081DEC26
- 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 _081DEC4A
- 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 _081DEB98
- cmp r6, 0x2
- bgt _081DEB8C
- cmp r6, 0x1
- beq _081DEB92
- b _081DEBEC
- .align 2, 0
-_081DEB80: .4byte 0x04000071
-_081DEB84: .4byte 0x04000078
-_081DEB88: .4byte 0x04000079
-_081DEB8C:
- cmp r6, 0x3
- beq _081DEBA4
- b _081DEBEC
-_081DEB92:
- ldrb r0, [r4, 0x1F]
- ldr r2, [sp, 0x8]
- strb r0, [r2]
-_081DEB98:
- ldr r0, [r4, 0x24]
- lsls r0, 6
- ldrb r1, [r4, 0x1E]
- adds r0, r1, r0
- strb r0, [r7]
- b _081DEBF8
-_081DEBA4:
- ldr r1, [r4, 0x24]
- ldr r0, [r4, 0x28]
- cmp r1, r0
- beq _081DEBCC
- ldr r2, [sp, 0x8]
- strb r3, [r2]
- ldr r1, _081DEBE0
- 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]
-_081DEBCC:
- ldr r0, [sp, 0x8]
- strb r5, [r0]
- ldrb r0, [r4, 0x1E]
- strb r0, [r7]
- ldrb r0, [r4, 0x1E]
- cmp r0, 0
- beq _081DEBE4
- movs r0, 0xC0
- b _081DEC06
- .align 2, 0
-_081DEBE0: .4byte 0x04000090
-_081DEBE4:
- movs r1, 0x80
- negs r1, r1
- strb r1, [r4, 0x1A]
- b _081DEC08
-_081DEBEC:
- ldrb r0, [r4, 0x1E]
- strb r0, [r7]
- ldr r0, [r4, 0x24]
- lsls r0, 3
- ldr r2, [sp, 0x10]
- strb r0, [r2]
-_081DEBF8:
- ldrb r0, [r4, 0x4]
- adds r0, 0x8
- mov r8, r0
- ldrb r0, [r4, 0x1E]
- cmp r0, 0
- beq _081DEC06
- movs r0, 0x40
-_081DEC06:
- strb r0, [r4, 0x1A]
-_081DEC08:
- 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 _081DEC22
- b _081DED5E
-_081DEC22:
- strb r2, [r4, 0x9]
- b _081DED8C
-_081DEC26:
- movs r0, 0x4
- ands r0, r2
- cmp r0, 0
- beq _081DEC58
- 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 _081DEC4A
- b _081DED9E
-_081DEC4A:
- lsls r0, r6, 24
- lsrs r0, 24
- bl CgbOscOff
- movs r0, 0
- strb r0, [r4]
- b _081DEE9C
-_081DEC58:
- 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 _081DEC98
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _081DEC98
- 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 _081DECCA
- movs r0, 0x1
- ldrb r1, [r4, 0x1D]
- orrs r0, r1
- strb r0, [r4, 0x1D]
- cmp r6, 0x3
- beq _081DED8C
- ldrb r2, [r4, 0x7]
- mov r8, r2
- b _081DED8C
-_081DEC98:
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _081DED8C
- cmp r6, 0x3
- bne _081DECAA
- movs r0, 0x1
- ldrb r1, [r4, 0x1D]
- orrs r0, r1
- strb r0, [r4, 0x1D]
-_081DECAA:
- adds r0, r4, 0
- bl CgbModVol
- movs r0, 0x3
- ldrb r2, [r4]
- ands r0, r2
- cmp r0, 0
- bne _081DECFE
- ldrb r0, [r4, 0x9]
- subs r0, 0x1
- strb r0, [r4, 0x9]
- movs r1, 0xFF
- ands r0, r1
- lsls r0, 24
- cmp r0, 0
- bgt _081DECFA
-_081DECCA:
- 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 _081DEC4A
- 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 _081DED9E
- movs r2, 0x8
- mov r8, r2
- b _081DED9E
-_081DECFA:
- ldrb r0, [r4, 0x7]
- b _081DED8A
-_081DECFE:
- cmp r0, 0x1
- bne _081DED0A
-_081DED02:
- ldrb r0, [r4, 0x19]
- strb r0, [r4, 0x9]
- movs r0, 0x7
- b _081DED8A
-_081DED0A:
- cmp r0, 0x2
- bne _081DED4E
- 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 _081DED4A
-_081DED22:
- ldrb r0, [r4, 0x6]
- cmp r0, 0
- bne _081DED32
- movs r0, 0xFC
- ldrb r1, [r4]
- ands r0, r1
- strb r0, [r4]
- b _081DECCA
-_081DED32:
- 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 _081DED02
- movs r0, 0x8
- mov r8, r0
- b _081DED02
-_081DED4A:
- ldrb r0, [r4, 0x5]
- b _081DED8A
-_081DED4E:
- 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 _081DED88
-_081DED5E:
- 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 _081DED22
- 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 _081DED8C
- ldrb r2, [r4, 0x5]
- mov r8, r2
- b _081DED8C
-_081DED88:
- ldrb r0, [r4, 0x4]
-_081DED8A:
- strb r0, [r4, 0xB]
-_081DED8C:
- ldrb r0, [r4, 0xB]
- subs r0, 0x1
- strb r0, [r4, 0xB]
- ldr r0, [sp]
- cmp r0, 0
- bne _081DED9E
- subs r0, 0x1
- str r0, [sp]
- b _081DEC98
-_081DED9E:
- movs r0, 0x2
- ldrb r1, [r4, 0x1D]
- ands r0, r1
- cmp r0, 0
- beq _081DEE16
- cmp r6, 0x3
- bgt _081DEDDE
- movs r0, 0x8
- ldrb r2, [r4, 0x1]
- ands r0, r2
- cmp r0, 0
- beq _081DEDDE
- ldr r0, _081DEDC8
- ldrb r0, [r0]
- cmp r0, 0x3F
- bgt _081DEDD0
- ldr r0, [r4, 0x20]
- adds r0, 0x2
- ldr r1, _081DEDCC
- b _081DEDDA
- .align 2, 0
-_081DEDC8: .4byte 0x04000089
-_081DEDCC: .4byte 0x000007fc
-_081DEDD0:
- cmp r0, 0x7F
- bgt _081DEDDE
- ldr r0, [r4, 0x20]
- adds r0, 0x1
- ldr r1, _081DEDEC
-_081DEDDA:
- ands r0, r1
- str r0, [r4, 0x20]
-_081DEDDE:
- cmp r6, 0x4
- beq _081DEDF0
- ldr r0, [r4, 0x20]
- ldr r1, [sp, 0x10]
- strb r0, [r1]
- b _081DEDFE
- .align 2, 0
-_081DEDEC: .4byte 0x000007fe
-_081DEDF0:
- ldr r2, [sp, 0x10]
- ldrb r0, [r2]
- movs r1, 0x8
- ands r1, r0
- ldr r0, [r4, 0x20]
- orrs r0, r1
- strb r0, [r2]
-_081DEDFE:
- 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]
-_081DEE16:
- movs r0, 0x1
- ldrb r2, [r4, 0x1D]
- ands r0, r2
- cmp r0, 0
- beq _081DEE9C
- ldr r1, _081DEE60
- ldrb r0, [r1]
- ldrb r2, [r4, 0x1C]
- bics r0, r2
- ldrb r2, [r4, 0x1B]
- orrs r0, r2
- strb r0, [r1]
- cmp r6, 0x3
- bne _081DEE68
- ldr r0, _081DEE64
- 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 _081DEE9C
- 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 _081DEE9C
- .align 2, 0
-_081DEE60: .4byte 0x04000081
-_081DEE64: .4byte gUnknown_0842FBD8
-_081DEE68:
- 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 _081DEE9C
- ldr r0, [sp, 0x8]
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _081DEE9C
- ldrb r0, [r4, 0x1A]
- orrs r0, r2
- ldr r1, [sp, 0x14]
- strb r0, [r1]
-_081DEE9C:
- movs r0, 0
- strb r0, [r4, 0x1D]
-_081DEEA0:
- mov r6, r10
- mov r4, r9
- cmp r6, 0x4
- bgt _081DEEAA
- b _081DEAA0
-_081DEEAA:
- 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
-
- thumb_func_start MPlayTempoControl
-MPlayTempoControl: @ 81DEEBC
- push {r4,lr}
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r3, [r2, 0x34]
- ldr r0, _081DEEE0
- cmp r3, r0
- bne _081DEED8
- strh r1, [r2, 0x1E]
- ldrh r4, [r2, 0x1C]
- adds r0, r1, 0
- muls r0, r4
- asrs r0, 8
- strh r0, [r2, 0x20]
-_081DEED8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081DEEE0: .4byte 0x68736d53
- thumb_func_end MPlayTempoControl
-
- thumb_func_start MPlayVolumeControl
-MPlayVolumeControl: @ 81DEEE4
- 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, _081DEF48
- cmp r3, r0
- bne _081DEF3C
- adds r0, r3, 0x1
- str r0, [r4, 0x34]
- ldrb r2, [r4, 0x8]
- ldr r1, [r4, 0x2C]
- movs r5, 0x1
- cmp r2, 0
- ble _081DEF38
- movs r0, 0x80
- mov r8, r0
- lsrs r6, 18
- movs r0, 0x3
- mov r12, r0
-_081DEF14:
- adds r0, r7, 0
- ands r0, r5
- cmp r0, 0
- beq _081DEF2E
- ldrb r3, [r1]
- mov r0, r8
- ands r0, r3
- cmp r0, 0
- beq _081DEF2E
- strb r6, [r1, 0x13]
- mov r0, r12
- orrs r0, r3
- strb r0, [r1]
-_081DEF2E:
- subs r2, 0x1
- adds r1, 0x50
- lsls r5, 1
- cmp r2, 0
- bgt _081DEF14
-_081DEF38:
- ldr r0, _081DEF48
- str r0, [r4, 0x34]
-_081DEF3C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081DEF48: .4byte 0x68736d53
- thumb_func_end MPlayVolumeControl
-
- thumb_func_start MPlayPitchControl
-MPlayPitchControl: @ 81DEF4C
- 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, _081DEFBC
- cmp r3, r0
- bne _081DEFAE
- adds r0, r3, 0x1
- str r0, [r4, 0x34]
- ldrb r2, [r4, 0x8]
- ldr r3, [r4, 0x2C]
- movs r5, 0x1
- cmp r2, 0
- ble _081DEFAA
- movs r0, 0x80
- mov r9, r0
- lsls r0, r6, 16
- asrs r7, r0, 24
- movs r0, 0xC
- mov r8, r0
-_081DEF84:
- mov r0, r12
- ands r0, r5
- cmp r0, 0
- beq _081DEFA0
- ldrb r1, [r3]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- beq _081DEFA0
- strb r7, [r3, 0xB]
- strb r6, [r3, 0xD]
- mov r0, r8
- orrs r0, r1
- strb r0, [r3]
-_081DEFA0:
- subs r2, 0x1
- adds r3, 0x50
- lsls r5, 1
- cmp r2, 0
- bgt _081DEF84
-_081DEFAA:
- ldr r0, _081DEFBC
- str r0, [r4, 0x34]
-_081DEFAE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081DEFBC: .4byte 0x68736d53
- thumb_func_end MPlayPitchControl
-
- thumb_func_start MPlayPanpotControl
-MPlayPanpotControl: @ 81DEFC0
- 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, _081DF024
- cmp r3, r0
- bne _081DF018
- adds r0, r3, 0x1
- str r0, [r4, 0x34]
- ldrb r2, [r4, 0x8]
- ldr r1, [r4, 0x2C]
- movs r5, 0x1
- cmp r2, 0
- ble _081DF014
- movs r0, 0x80
- mov r8, r0
- movs r0, 0x3
- mov r12, r0
-_081DEFF0:
- adds r0, r7, 0
- ands r0, r5
- cmp r0, 0
- beq _081DF00A
- ldrb r3, [r1]
- mov r0, r8
- ands r0, r3
- cmp r0, 0
- beq _081DF00A
- strb r6, [r1, 0x15]
- mov r0, r12
- orrs r0, r3
- strb r0, [r1]
-_081DF00A:
- subs r2, 0x1
- adds r1, 0x50
- lsls r5, 1
- cmp r2, 0
- bgt _081DEFF0
-_081DF014:
- ldr r0, _081DF024
- str r0, [r4, 0x34]
-_081DF018:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF024: .4byte 0x68736d53
- thumb_func_end MPlayPanpotControl
-
- thumb_func_start MP_clear_modM
-MP_clear_modM: @ 81DF028
- 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 _081DF03C
- movs r0, 0xC
- b _081DF03E
-_081DF03C:
- movs r0, 0x3
-_081DF03E:
- ldrb r2, [r1]
- orrs r0, r2
- strb r0, [r1]
- bx lr
- thumb_func_end MP_clear_modM
-
- thumb_func_start MPlayModDepthSet
-MPlayModDepthSet: @ 81DF048
- 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, _081DF0B8
- cmp r1, r0
- bne _081DF0A8
- adds r0, r1, 0x1
- str r0, [r6, 0x34]
- ldrb r5, [r6, 0x8]
- ldr r4, [r6, 0x2C]
- movs r7, 0x1
- cmp r5, 0
- ble _081DF0A4
- mov r9, r8
-_081DF078:
- mov r0, r10
- ands r0, r7
- cmp r0, 0
- beq _081DF09A
- movs r0, 0x80
- ldrb r1, [r4]
- ands r0, r1
- cmp r0, 0
- beq _081DF09A
- mov r0, r8
- strb r0, [r4, 0x17]
- mov r1, r9
- cmp r1, 0
- bne _081DF09A
- adds r0, r4, 0
- bl MP_clear_modM
-_081DF09A:
- subs r5, 0x1
- adds r4, 0x50
- lsls r7, 1
- cmp r5, 0
- bgt _081DF078
-_081DF0A4:
- ldr r0, _081DF0B8
- str r0, [r6, 0x34]
-_081DF0A8:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF0B8: .4byte 0x68736d53
- thumb_func_end MPlayModDepthSet
-
- thumb_func_start MPlayLFOSpeedSet
-MPlayLFOSpeedSet: @ 81DF0BC
- 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, _081DF12C
- cmp r1, r0
- bne _081DF11C
- adds r0, r1, 0x1
- str r0, [r6, 0x34]
- ldrb r5, [r6, 0x8]
- ldr r4, [r6, 0x2C]
- movs r7, 0x1
- cmp r5, 0
- ble _081DF118
- mov r9, r8
-_081DF0EC:
- mov r0, r10
- ands r0, r7
- cmp r0, 0
- beq _081DF10E
- movs r0, 0x80
- ldrb r1, [r4]
- ands r0, r1
- cmp r0, 0
- beq _081DF10E
- mov r0, r8
- strb r0, [r4, 0x19]
- mov r1, r9
- cmp r1, 0
- bne _081DF10E
- adds r0, r4, 0
- bl MP_clear_modM
-_081DF10E:
- subs r5, 0x1
- adds r4, 0x50
- lsls r7, 1
- cmp r5, 0
- bgt _081DF0EC
-_081DF118:
- ldr r0, _081DF12C
- str r0, [r6, 0x34]
-_081DF11C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF12C: .4byte 0x68736d53
- thumb_func_end MPlayLFOSpeedSet
-
- thumb_func_start ply_memacc
-ply_memacc: @ 81DF130
- 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 _081DF154
- b _081DF282
-_081DF154:
- lsls r0, r5, 2
- ldr r1, _081DF160
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081DF160: .4byte _081DF164
- .align 2, 0
-_081DF164:
- .4byte _081DF1AC
- .4byte _081DF1B0
- .4byte _081DF1B8
- .4byte _081DF1C0
- .4byte _081DF1CA
- .4byte _081DF1D8
- .4byte _081DF1E6
- .4byte _081DF1EE
- .4byte _081DF1F6
- .4byte _081DF1FE
- .4byte _081DF206
- .4byte _081DF20E
- .4byte _081DF216
- .4byte _081DF224
- .4byte _081DF232
- .4byte _081DF240
- .4byte _081DF24E
- .4byte _081DF25C
-_081DF1AC:
- strb r2, [r3]
- b _081DF282
-_081DF1B0:
- ldrb r1, [r3]
- adds r0, r1, r2
- strb r0, [r3]
- b _081DF282
-_081DF1B8:
- ldrb r1, [r3]
- subs r0, r1, r2
- strb r0, [r3]
- b _081DF282
-_081DF1C0:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r3]
- b _081DF282
-_081DF1CA:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r1, [r3]
- ldrb r0, [r0]
- adds r0, r1, r0
- strb r0, [r3]
- b _081DF282
-_081DF1D8:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r1, [r3]
- ldrb r0, [r0]
- subs r0, r1, r0
- strb r0, [r3]
- b _081DF282
-_081DF1E6:
- ldrb r3, [r3]
- cmp r3, r2
- beq _081DF268
- b _081DF27C
-_081DF1EE:
- ldrb r3, [r3]
- cmp r3, r2
- bne _081DF268
- b _081DF27C
-_081DF1F6:
- ldrb r3, [r3]
- cmp r3, r2
- bhi _081DF268
- b _081DF27C
-_081DF1FE:
- ldrb r3, [r3]
- cmp r3, r2
- bcs _081DF268
- b _081DF27C
-_081DF206:
- ldrb r3, [r3]
- cmp r3, r2
- bls _081DF268
- b _081DF27C
-_081DF20E:
- ldrb r3, [r3]
- cmp r3, r2
- bcc _081DF268
- b _081DF27C
-_081DF216:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r3, [r3]
- ldrb r0, [r0]
- cmp r3, r0
- beq _081DF268
- b _081DF27C
-_081DF224:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r3, [r3]
- ldrb r0, [r0]
- cmp r3, r0
- bne _081DF268
- b _081DF27C
-_081DF232:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r3, [r3]
- ldrb r0, [r0]
- cmp r3, r0
- bhi _081DF268
- b _081DF27C
-_081DF240:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r3, [r3]
- ldrb r0, [r0]
- cmp r3, r0
- bcs _081DF268
- b _081DF27C
-_081DF24E:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r3, [r3]
- ldrb r0, [r0]
- cmp r3, r0
- bls _081DF268
- b _081DF27C
-_081DF25C:
- ldr r0, [r4, 0x18]
- adds r0, r2
- ldrb r3, [r3]
- ldrb r0, [r0]
- cmp r3, r0
- bcs _081DF27C
-_081DF268:
- ldr r0, _081DF278
- ldr r2, [r0]
- adds r0, r4, 0
- adds r1, r6, 0
- bl _call_via_r2
- b _081DF282
- .align 2, 0
-_081DF278: .4byte 0x03007074
-_081DF27C:
- ldr r0, [r6, 0x40]
- adds r0, 0x4
- str r0, [r6, 0x40]
-_081DF282:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end ply_memacc
-
- thumb_func_start ply_xcmd
-ply_xcmd: @ 81DF288
- push {lr}
- ldr r2, [r1, 0x40]
- ldrb r3, [r2]
- adds r2, 0x1
- str r2, [r1, 0x40]
- ldr r2, _081DF2A4
- lsls r3, 2
- adds r3, r2
- ldr r2, [r3]
- bl _call_via_r2
- pop {r0}
- bx r0
- .align 2, 0
-_081DF2A4: .4byte gUnknown_0842FC50
- thumb_func_end ply_xcmd
-
- thumb_func_start ply_xxx
-ply_xxx: @ 81DF2A8
- push {lr}
- ldr r2, _081DF2B8
- ldr r2, [r2]
- bl _call_via_r2
- pop {r0}
- bx r0
- .align 2, 0
-_081DF2B8: .4byte 0x03007070
- thumb_func_end ply_xxx
-
- thumb_func_start ply_xwave
-ply_xwave: @ 81DF2BC
- push {r4,lr}
- ldr r2, [r1, 0x40]
- ldr r0, _081DF2F4
- ands r4, r0
- ldrb r0, [r2]
- orrs r4, r0
- ldrb r0, [r2, 0x1]
- lsls r3, r0, 8
- ldr r0, _081DF2F8
- ands r4, r0
- orrs r4, r3
- ldrb r0, [r2, 0x2]
- lsls r3, r0, 16
- ldr r0, _081DF2FC
- ands r4, r0
- orrs r4, r3
- ldrb r0, [r2, 0x3]
- lsls r3, r0, 24
- ldr r0, _081DF300
- 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
-_081DF2F4: .4byte 0xffffff00
-_081DF2F8: .4byte 0xffff00ff
-_081DF2FC: .4byte 0xff00ffff
-_081DF300: .4byte 0x00ffffff
- thumb_func_end ply_xwave
-
- thumb_func_start ply_xtype
-ply_xtype: @ 81DF304
- 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 ply_xtype
-
- thumb_func_start ply_xatta
-ply_xatta: @ 81DF318
- 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 ply_xatta
-
- thumb_func_start ply_xdeca
-ply_xdeca: @ 81DF32C
- 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 ply_xdeca
-
- thumb_func_start ply_xsust
-ply_xsust: @ 81DF340
- 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 ply_xsust
-
- thumb_func_start ply_xrele
-ply_xrele: @ 81DF354
- 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 ply_xrele
-
- thumb_func_start ply_xiecv
-ply_xiecv: @ 81DF368
- ldr r0, [r1, 0x40]
- ldrb r2, [r0]
- strb r2, [r1, 0x1E]
- adds r0, 0x1
- str r0, [r1, 0x40]
- bx lr
- thumb_func_end ply_xiecv
-
- thumb_func_start ply_xiecl
-ply_xiecl: @ 81DF374
- ldr r0, [r1, 0x40]
- ldrb r2, [r0]
- strb r2, [r1, 0x1F]
- adds r0, 0x1
- str r0, [r1, 0x40]
- bx lr
- thumb_func_end ply_xiecl
-
- thumb_func_start ply_xleng
-ply_xleng: @ 81DF380
- 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 ply_xleng
-
- thumb_func_start ply_xswee
-ply_xswee: @ 81DF394
- 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 ply_xcmd0C
-ply_xcmd0C: @ 81DF3A8
- push {r4,lr}
- adds r3, r1, 0
- ldr r4, [r3, 0x40]
- ldr r0, _081DF3D8
- ands r2, r0
- ldrb r0, [r4]
- orrs r2, r0
- ldrb r0, [r4, 0x1]
- lsls r1, r0, 8
- ldr r0, _081DF3DC
- ands r2, r0
- orrs r2, r1
- ldrh r1, [r3, 0x3A]
- lsls r0, r2, 16
- lsrs r0, 16
- cmp r1, r0
- bcs _081DF3E0
- adds r0, r1, 0x1
- strh r0, [r3, 0x3A]
- subs r0, r4, 0x2
- str r0, [r3, 0x40]
- movs r0, 0x1
- strb r0, [r3, 0x1]
- b _081DF3E8
- .align 2, 0
-_081DF3D8: .4byte 0xffffff00
-_081DF3DC: .4byte 0xffff00ff
-_081DF3E0:
- movs r0, 0
- strh r0, [r3, 0x3A]
- adds r0, r4, 0x2
- str r0, [r3, 0x40]
-_081DF3E8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ply_xcmd0C
-
- thumb_func_start ply_xcmd0D
-ply_xcmd0D: @ 81DF3F0
- push {r4,lr}
- ldr r2, [r1, 0x40]
- ldr r0, _081DF428
- ands r4, r0
- ldrb r0, [r2]
- orrs r4, r0
- ldrb r0, [r2, 0x1]
- lsls r3, r0, 8
- ldr r0, _081DF42C
- ands r4, r0
- orrs r4, r3
- ldrb r0, [r2, 0x2]
- lsls r3, r0, 16
- ldr r0, _081DF430
- ands r4, r0
- orrs r4, r3
- ldrb r0, [r2, 0x3]
- lsls r3, r0, 24
- ldr r0, _081DF434
- ands r4, r0
- orrs r4, r3
- str r4, [r1, 0x3C]
- adds r2, 0x4
- str r2, [r1, 0x40]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF428: .4byte 0xffffff00
-_081DF42C: .4byte 0xffff00ff
-_081DF430: .4byte 0xff00ffff
-_081DF434: .4byte 0x00ffffff
- thumb_func_end ply_xcmd0D
-
- thumb_func_start DummyFunc_rev
-DummyFunc_rev: @ 81DF438
- bx lr
- thumb_func_end DummyFunc_rev
-
- thumb_func_start sub_81DF43C
-sub_81DF43C: @ 81DF43C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r0
- movs r6, 0
- movs r1, 0
- movs r4, 0
- ldr r0, _081DF4F8
- mov r8, r0
- ldr r7, _081DF4FC
- ldr r0, _081DF500
- mov r10, r0
- mov r5, r8
- adds r5, 0xC
- movs r3, 0
- ldr r0, _081DF504
- mov r12, r0
-_081DF462:
- mov r0, r12
- adds r2, r3, r0
- ldrb r0, [r2]
- cmp r0, 0
- bne _081DF478
- ldr r0, [r2, 0x20]
- cmp r0, 0
- beq _081DF48E
- ldr r0, [r0, 0x2C]
- cmp r0, r2
- bne _081DF48E
-_081DF478:
- ldr r0, [r5]
- cmp r6, r0
- bcs _081DF482
- adds r6, r0, 0
- adds r1, r4, 0
-_081DF482:
- adds r5, 0x40
- adds r3, 0xA0
- adds r4, 0x1
- cmp r4, 0x1
- ble _081DF462
- adds r4, r1, 0
-_081DF48E:
- lsls r5, r4, 6
- add r5, r8
- ldr r0, [r5, 0x34]
- adds r0, 0x1
- str r0, [r5, 0x34]
- movs r0, 0x34
- muls r4, r0
- adds r6, r4, r7
- adds r0, r6, 0
- mov r1, r10
- movs r2, 0x34
- bl memcpy
- adds r0, r7, 0x4
- adds r0, r4, r0
- mov r1, r9
- str r1, [r0]
- adds r1, r7, 0
- adds r1, 0x8
- adds r1, r4, r1
- adds r0, r7, 0
- adds r0, 0x11
- adds r0, r4, r0
- str r0, [r1]
- adds r1, r7, 0
- adds r1, 0xC
- adds r1, r4, r1
- adds r0, r7, 0
- adds r0, 0x18
- adds r0, r4, r0
- str r0, [r1]
- adds r0, r7, 0
- adds r0, 0x14
- adds r0, r4, r0
- adds r1, r7, 0
- adds r1, 0x1A
- adds r4, r1
- str r4, [r0]
- ldr r0, _081DF508
- str r0, [r5, 0x34]
- adds r0, r5, 0
- adds r1, r6, 0
- bl MPlayStart_rev01
- adds r0, r5, 0
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081DF4F8: .4byte 0x03006ff0
-_081DF4FC: .4byte 0x03006f80
-_081DF500: .4byte 0x03007340
-_081DF504: .4byte 0x03007200
-_081DF508: .4byte 0x68736d53
- thumb_func_end sub_81DF43C
-
- thumb_func_start sub_81DF50C
-sub_81DF50C: @ 81DF50C
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081DF51C
- movs r1, 0x7F
- ands r0, r1
- strb r0, [r2, 0x1D]
- bx lr
- .align 2, 0
-_081DF51C: .4byte 0x03007340
- thumb_func_end sub_81DF50C
-
- thumb_func_start sub_81DF520
-sub_81DF520: @ 81DF520
- ldr r2, _081DF534
- lsls r0, 24
- asrs r0, 24
- adds r0, 0x40
- movs r1, 0x7F
- ands r0, r1
- adds r2, 0x28
- strb r0, [r2]
- bx lr
- .align 2, 0
-_081DF534: .4byte 0x03007340
- thumb_func_end sub_81DF520
-
- thumb_func_start sub_81DF538
-sub_81DF538: @ 81DF538
- push {r4-r6,lr}
- lsls r0, 16
- ldr r3, _081DF56C
- ldrb r2, [r3, 0x19]
- ldrb r4, [r3, 0x12]
- subs r1, r2, r4
- lsls r1, 24
- lsrs r1, 24
- movs r6, 0x80
- lsls r6, 16
- adds r0, r6
- asrs r2, r0, 24
- movs r5, 0x7F
- movs r4, 0x7F
- ands r2, r4
- movs r6, 0x2A
- strb r2, [r6, r3]
- asrs r0, 17
- ands r0, r4
- strb r0, [r3, 0x12]
- adds r1, r0
- ands r1, r5
- strb r1, [r3, 0x19]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF56C: .4byte 0x03007340
- thumb_func_end sub_81DF538
-
- thumb_func_start sub_81DF570
-sub_81DF570: @ 81DF570
- ldr r1, _081DF578
- strh r0, [r1, 0x2E]
- bx lr
- .align 2, 0
-_081DF578: .4byte 0x03007340
- thumb_func_end sub_81DF570
-
- thumb_func_start sub_81DF57C
-sub_81DF57C: @ 81DF57C
- ldr r1, _081DF584
- adds r1, 0x26
- strb r0, [r1]
- bx lr
- .align 2, 0
-_081DF584: .4byte 0x03007340
- thumb_func_end sub_81DF57C
-
- thumb_func_start sub_81DF588
-sub_81DF588: @ 81DF588
- ldr r1, _081DF590
- str r0, [r1, 0x20]
- bx lr
- .align 2, 0
-_081DF590: .4byte 0x03007340
- thumb_func_end sub_81DF588
-
- thumb_func_start sub_81DF594
-sub_81DF594: @ 81DF594
- ldr r1, [r0, 0x2C]
- ldr r0, [r1, 0x20]
- cmp r0, 0
- beq _081DF5A6
- ldr r0, [r0, 0x2C]
- cmp r0, r1
- bne _081DF5A6
- movs r0, 0x1
- b _081DF5A8
-_081DF5A6:
- movs r0, 0
-_081DF5A8:
- bx lr
- thumb_func_end sub_81DF594
-
- thumb_func_start sub_81DF5AC
-sub_81DF5AC: @ 81DF5AC
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r0, 0
- beq _081DF5CC
- ldr r2, _081DF5C8
- movs r0, 0x2
- strb r0, [r2]
- ldrb r3, [r2, 0x12]
- adds r0, r3, r1
- movs r1, 0x7F
- ands r0, r1
- strb r0, [r2, 0x19]
- b _081DF5D2
- .align 2, 0
-_081DF5C8: .4byte 0x03007340
-_081DF5CC:
- ldr r1, _081DF5D4
- movs r0, 0x1
- strb r0, [r1]
-_081DF5D2:
- bx lr
- .align 2, 0
-_081DF5D4: .4byte 0x03007340
- thumb_func_end sub_81DF5AC
-
- thumb_func_start sub_81DF5D8
-sub_81DF5D8: @ 81DF5D8
- ldr r1, _081DF5F0
- ldr r2, [r1]
- cmp r0, 0
- beq _081DF5FC
- ldr r1, _081DF5F4
- ldr r3, _081DF5F8
- adds r0, r3, 0
- strh r0, [r1]
- movs r0, 0xFE
- ldrb r1, [r2, 0x9]
- ands r0, r1
- b _081DF60A
- .align 2, 0
-_081DF5F0: .4byte 0x03007ff0
-_081DF5F4: .4byte 0x04000082
-_081DF5F8: .4byte 0x0000210e
-_081DF5FC:
- ldr r1, _081DF610
- ldr r3, _081DF614
- adds r0, r3, 0
- strh r0, [r1]
- movs r0, 0x1
- ldrb r1, [r2, 0x9]
- orrs r0, r1
-_081DF60A:
- strb r0, [r2, 0x9]
- bx lr
- .align 2, 0
-_081DF610: .4byte 0x04000082
-_081DF614: .4byte 0x00003302
- thumb_func_end sub_81DF5D8
-
- thumb_func_start sub_81DF618
-sub_81DF618: @ 81DF618
- ldr r1, _081DF620
- strb r0, [r1, 0x2]
- bx lr
- .align 2, 0
-_081DF620: .4byte 0x03007340
- thumb_func_end sub_81DF618
-
- .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 000000000..3f079d0ec
--- /dev/null
+++ b/asm/m4a_1.s
@@ -0,0 +1,1908 @@
+ .include "asm/macros.s"
+ .include "constants/gba_constants.s"
+ .include "constants/m4a_constants.s"
+
+ .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 _081DD25E
+ ldr r0, [sp, 0x18]
+SoundMain_4:
+ ldr r3, [r0, o_SoundInfo_CgbSound]
+ bl _081DD25E
+ 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
+_081DCEC4:
+ 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 _081DCEC4
+ adr r0, _081DCF36 + 1 @ plus 1 because THUMB
+ 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, 1
+ bgt SoundMainRAM_NoReverb_Loop
+_081DCF36:
+ 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 _081DCF60
+ ldr r1, =REG_VCOUNT
+ ldrb r1, [r1]
+ cmp r1, VCOUNT_VBLANK
+ bhs _081DCF54
+ adds r1, TOTAL_SCANLINES
+_081DCF54:
+ cmp r1, r0
+ blo _081DCF60
+ b _081DD24A
+
+ .pool
+
+_081DCF60:
+ ldrb r6, [r4, o_SoundChannel_status]
+ movs r0, 0xC7
+ tst r0, r6
+ bne _081DCF6A
+ b _081DD240
+_081DCF6A:
+ movs r0, 0x80
+ tst r0, r6
+ beq _081DCFA0
+ movs r0, 0x40
+ tst r0, r6
+ bne _081DCFB0
+ movs r6, 0x3
+ strb r6, [r4, o_SoundChannel_status]
+ adds r0, r3, 0
+ adds r0, 0x10
+ ldr r1, [r4, o_SoundChannel_ct]
+ adds r0, r1
+ str r0, [r4, o_SoundChannel_cp]
+ ldr r0, [r3, 0xC]
+ subs r0, r1
+ 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 _081DCFF8
+ movs r0, 0x10
+ orrs r6, r0
+ strb r6, [r4, o_SoundChannel_status]
+ b _081DCFF8
+_081DCFA0:
+ ldrb r5, [r4, o_SoundChannel_ev]
+ movs r0, 0x4
+ tst r0, r6
+ beq _081DCFB6
+ ldrb r0, [r4, o_SoundChannel_iel]
+ subs r0, 1
+ strb r0, [r4, o_SoundChannel_iel]
+ bhi _081DD006
+_081DCFB0:
+ movs r0, 0
+ strb r0, [r4, o_SoundChannel_status]
+ b _081DD240
+_081DCFB6:
+ movs r0, 0x40
+ tst r0, r6
+ beq _081DCFD6
+ ldrb r0, [r4, o_SoundChannel_release]
+ muls r5, r0
+ lsrs r5, 8
+ ldrb r0, [r4, o_SoundChannel_iev]
+ cmp r5, r0
+ bhi _081DD006
+_081DCFC8:
+ ldrb r5, [r4, o_SoundChannel_iev]
+ cmp r5, 0
+ beq _081DCFB0
+ movs r0, 0x4
+ orrs r6, r0
+ strb r6, [r4, o_SoundChannel_status]
+ b _081DD006
+_081DCFD6:
+ movs r2, 0x3
+ ands r2, r6
+ cmp r2, 0x2
+ bne _081DCFF4
+ ldrb r0, [r4, o_SoundChannel_decay]
+ muls r5, r0
+ lsrs r5, 8
+ ldrb r0, [r4, o_SoundChannel_sustain]
+ cmp r5, r0
+ bhi _081DD006
+ adds r5, r0, 0
+ beq _081DCFC8
+ subs r6, 0x1
+ strb r6, [r4, o_SoundChannel_status]
+ b _081DD006
+_081DCFF4:
+ cmp r2, 0x3
+ bne _081DD006
+_081DCFF8:
+ ldrb r0, [r4, o_SoundChannel_attack]
+ adds r5, r0
+ cmp r5, 0xFF
+ bcc _081DD006
+ movs r5, 0xFF
+ subs r6, 0x1
+ strb r6, [r4, o_SoundChannel_status]
+_081DD006:
+ 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 _081DD03A
+ 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]
+_081DD03A:
+ ldr r5, [sp, 0x8]
+ ldr r2, [r4, o_SoundChannel_ct]
+ ldr r3, [r4, o_SoundChannel_cp]
+ adr r0, _081DD044
+ bx r0
+ .arm
+_081DD044:
+ str r8, [sp]
+ ldr r9, [r4, o_SoundChannel_fw]
+ ldrb r10, [r4, o_SoundChannel_er]
+ ldrb r11, [r4, o_SoundChannel_el]
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x30
+ beq _081DD068
+ bl sub_81DD264
+ b _081DD228
+_081DD068:
+ mov r10, r10, lsl 16
+ mov r11, r11, lsl 16
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x8
+ beq _081DD19C
+_081DD07C:
+ cmp r2, 0x4
+ ble _081DD0EC
+ subs r2, r2, r8
+ movgt r9, 0
+ bgt _081DD0A8
+ mov r9, r8
+ add r2, r2, r8
+ sub r8, r2, 0x4
+ sub r9, r9, r8
+ ands r2, r2, 0x3
+ moveq r2, 0x4
+_081DD0A8:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_081DD0B0:
+ 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 _081DD0B0
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ subs r8, r8, 0x4
+ bgt _081DD0A8
+ adds r8, r8, r9
+ beq _081DD22C
+_081DD0EC:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_081DD0F4:
+ 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 _081DD164
+_081DD118:
+ adds r5, r5, 0x40000000
+ bcc _081DD0F4
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ subs r8, r8, 0x4
+ bgt _081DD07C
+ b _081DD22C
+_081DD134:
+ ldr r0, [sp, 0x18]
+ cmp r0, 0
+ beq _081DD158
+ ldr r3, [sp, 0x14]
+ rsb lr, r2, 0
+_081DD148:
+ adds r2, r0, r2
+ bgt _081DD1FC
+ sub lr, lr, r0
+ b _081DD148
+_081DD158:
+ pop {r4,r12}
+ mov r2, 0
+ b _081DD174
+_081DD164:
+ ldr r2, [sp, 0x10]
+ cmp r2, 0
+ ldrne r3, [sp, 0xC]
+ bne _081DD118
+_081DD174:
+ 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 _081DD234
+_081DD19C:
+ push {r4,r12}
+ ldr r1, [r4, o_SoundChannel_freq]
+ mul r4, r12, r1
+ ldrsb r0, [r3]
+ ldrsb r1, [r3, 0x1]!
+ sub r1, r1, r0
+_081DD1B4:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_081DD1BC:
+ mul lr, r9, r1
+ add lr, r0, lr, asr 23
+ mul r12, r10, lr
+ bic r12, r12, 0xFF0000
+ add r6, r12, r6, ror 8
+ mul r12, r11, lr
+ bic r12, r12, 0xFF0000
+ add r7, r12, r7, ror 8
+ add r9, r9, r4
+ movs lr, r9, lsr 23
+ beq _081DD208
+ bic r9, r9, 0x3F800000
+ subs r2, r2, lr
+ ble _081DD134
+ subs lr, lr, 0x1
+ addeq r0, r0, r1
+_081DD1FC:
+ ldrsbne r0, [r3, lr]!
+ ldrsb r1, [r3, 0x1]!
+ sub r1, r1, r0
+_081DD208:
+ adds r5, r5, 0x40000000
+ bcc _081DD1BC
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ subs r8, r8, 0x4
+ bgt _081DD1B4
+ sub r3, r3, 0x1
+ pop {r4,r12}
+_081DD228:
+ str r9, [r4, o_SoundChannel_fw]
+_081DD22C:
+ str r2, [r4, o_SoundChannel_ct]
+ str r3, [r4, o_SoundChannel_cp]
+_081DD234:
+ ldr r8, [sp]
+ add r0, pc, 0x1
+ bx r0
+ .thumb
+_081DD240:
+ ldr r0, [sp, 0x4]
+ subs r0, 1
+ ble _081DD24A
+ adds r4, SoundChannel_size
+ b SoundMainRAM_ChanLoop
+_081DD24A:
+ 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}
+_081DD25E:
+ bx r3
+ .pool
+ thumb_func_end SoundMainRAM
+
+ arm_func_start sub_81DD264
+sub_81DD264:
+ ldr r6, [r4, o_SoundChannel_wav]
+ ldrb r0, [r4, o_SoundChannel_status]
+ tst r0, 0x20
+ bne _081DD2B4
+ orr r0, r0, 0x20
+ strb r0, [r4, o_SoundChannel_status]
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x10
+ beq _081DD29C
+ ldr r1, [r6, 0xC]
+ add r1, r1, r6, lsl 1
+ add r1, r1, 0x20
+ sub r3, r1, r3
+ str r3, [r4, o_SoundChannel_cp]
+_081DD29C:
+ ldrh r0, [r6]
+ cmp r0, 0
+ beq _081DD2B4
+ sub r3, r3, r6
+ sub r3, r3, 0x10
+ str r3, [r4, o_SoundChannel_cp]
+_081DD2B4:
+ push {r8,r12,lr}
+ mov r10, r10, lsl 16
+ mov r11, r11, lsl 16
+ ldr r1, [r4, o_SoundChannel_freq]
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x8
+ movne r8, 0x800000
+ muleq r8, r12, r1
+ ldrh r0, [r6]
+ cmp r0, 0
+ beq _081DD468
+ mov r0, 0xFF000000
+ str r0, [r4, o_SoundChannel_xpi]
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x10
+ bne _081DD3C0
+ bl sub_81DD520
+ mov r0, r1
+ add r3, r3, 0x1
+ bl sub_81DD520
+ sub r1, r1, r0
+_081DD308:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_081DD310:
+ mul lr, r9, r1
+ add lr, r0, lr, asr 23
+ mul r12, r10, lr
+ bic r12, r12, 0xFF0000
+ add r6, r12, r6, ror 8
+ mul r12, r11, lr
+ bic r12, r12, 0xFF0000
+ add r7, r12, r7, ror 8
+ add r9, r9, r8
+ movs lr, r9, lsr 23
+ beq _081DD370
+ bic r9, r9, 0x3F800000
+ subs r2, r2, lr
+ ble _081DD398
+ subs lr, lr, 0x1
+ bne _081DD358
+ add r0, r0, r1
+ b _081DD364
+_081DD358:
+ add r3, r3, lr
+ bl sub_81DD520
+ mov r0, r1
+_081DD364:
+ add r3, r3, 0x1
+ bl sub_81DD520
+ sub r1, r1, r0
+_081DD370:
+ adds r5, r5, 0x40000000
+ bcc _081DD310
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ ldr r6, [sp]
+ subs r6, r6, 0x4
+ str r6, [sp]
+ bgt _081DD308
+ sub r3, r3, 0x1
+ b _081DD4F0
+_081DD398:
+ ldr r0, [sp, 0x1C]
+ cmp r0, 0
+ beq _081DD4F4
+ ldr r3, [r4, o_SoundChannel_wav]
+ ldr r3, [r3, 0x8]
+ rsb lr, r2, 0
+_081DD3B0:
+ adds r2, r2, r0
+ bgt _081DD358
+ sub lr, lr, r0
+ b _081DD3B0
+_081DD3C0:
+ sub r3, r3, 0x1
+ bl sub_81DD520
+ mov r0, r1
+ sub r3, r3, 0x1
+ bl sub_81DD520
+ sub r1, r1, r0
+_081DD3D8:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_081DD3E0:
+ mul lr, r9, r1
+ add lr, r0, lr, asr 23
+ mul r12, r10, lr
+ bic r12, r12, 0xFF0000
+ add r6, r12, r6, ror 8
+ mul r12, r11, lr
+ bic r12, r12, 0xFF0000
+ add r7, r12, r7, ror 8
+ add r9, r9, r8
+ movs lr, r9, lsr 23
+ beq _081DD440
+ bic r9, r9, 0x3F800000
+ subs r2, r2, lr
+ ble _081DD4F4
+ subs lr, lr, 0x1
+ bne _081DD428
+ add r0, r0, r1
+ b _081DD434
+_081DD428:
+ sub r3, r3, lr
+ bl sub_81DD520
+ mov r0, r1
+_081DD434:
+ sub r3, r3, 0x1
+ bl sub_81DD520
+ sub r1, r1, r0
+_081DD440:
+ adds r5, r5, 0x40000000
+ bcc _081DD3E0
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ ldr r6, [sp]
+ subs r6, r6, 0x4
+ str r6, [sp]
+ bgt _081DD3D8
+ add r3, r3, 0x2
+ b _081DD4F0
+_081DD468:
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, 0x10
+ beq _081DD4F0
+ ldrsb r0, [r3, -0x1]!
+ ldrsb r1, [r3, -0x1]
+ sub r1, r1, r0
+_081DD480:
+ ldr r6, [r5]
+ ldr r7, [r5, 0x630]
+_081DD488:
+ mul lr, r9, r1
+ add lr, r0, lr, asr 23
+ mul r12, r10, lr
+ bic r12, r12, 0xFF0000
+ add r6, r12, r6, ror 8
+ mul r12, r11, lr
+ bic r12, r12, 0xFF0000
+ add r7, r12, r7, ror 8
+ add r9, r9, r8
+ movs lr, r9, lsr 23
+ beq _081DD4CC
+ bic r9, r9, 0x3F800000
+ subs r2, r2, lr
+ ble _081DD4F4
+ ldrsb r0, [r3, -lr]!
+ ldrsb r1, [r3, -0x1]
+ sub r1, r1, r0
+_081DD4CC:
+ adds r5, r5, 0x40000000
+ bcc _081DD488
+ str r7, [r5, 0x630]
+ str r6, [r5], 0x4
+ ldr r6, [sp]
+ subs r6, r6, 0x4
+ str r6, [sp]
+ bgt _081DD480
+ add r3, r3, 0x1
+_081DD4F0:
+ pop {r8,r12,pc}
+_081DD4F4:
+ mov r2, 0
+ 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
+ pop {r8,r12,pc}
+ arm_func_end sub_81DD264
+
+ arm_func_start sub_81DD520
+sub_81DD520:
+ push {r0,r2,r5-r7,lr}
+ mov r0, r3, lsr 6
+ ldr r1, [r4, o_SoundChannel_xpi]
+ cmp r0, r1
+ beq _081DD594
+ str r0, [r4, o_SoundChannel_xpi]
+ mov r1, 0x21
+ mul r2, r1, r0
+ ldr r1, [r4, o_SoundChannel_wav]
+ add r2, r2, r1
+ add r2, r2, 0x10
+ ldr r5, =0x030007b8
+ ldr r6, =gUnknown_0842F9F4
+ mov r7, 0x40
+ ldrb lr, [r2], 1
+ strb lr, [r5], 1
+ ldrb r1, [r2], 1
+ b _081DD57C
+_081DD568:
+ ldrb r1, [r2], 1
+ mov r0, r1, lsr 4
+ ldrsb r0, [r6, r0]
+ add lr, lr, r0
+ strb lr, [r5], 1
+_081DD57C:
+ and r0, r1, 0xF
+ ldrsb r0, [r6, r0]
+ add lr, lr, r0
+ strb lr, [r5], 1
+ subs r7, r7, 2
+ bgt _081DD568
+_081DD594:
+ ldr r5, =0x030007b8
+ and r0, r3, 0x3F
+ ldrsb r1, [r5, r0]
+ pop {r0,r2,r5-r7,pc}
+ .pool
+ arm_func_end sub_81DD520
+
+ 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 _081DD5E2
+ ldr r1, [r0, 0x34]
+ ldr r2, [r0, 0x30]
+ cmp r2, 0
+ beq _081DD5D6
+ str r1, [r2, 0x34]
+ b _081DD5D8
+_081DD5D6:
+ str r1, [r3, 0x20]
+_081DD5D8:
+ cmp r1, 0
+ beq _081DD5DE
+ str r2, [r1, 0x30]
+_081DD5DE:
+ movs r1, 0
+ str r1, [r0, 0x2C]
+_081DD5E2:
+ bx lr
+ thumb_func_end RealClearChain
+
+ thumb_func_start ply_fine
+ply_fine:
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ ldr r4, [r5, 0x20]
+ 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]
+
+@ This attempts to protect against reading anything from the BIOS ROM
+@ besides the jump table template.
+@ It assumes that the jump table template is located at the end of the ROM.
+ .thumb_func
+chk_adr_r2:
+ push {r0}
+ lsrs r0, r2, 25
+ bne chk_adr_r2_done @ if adr >= 0x2000000 (i.e. not in BIOS ROM), accept it
+ ldr r0, lt_MPlayJumpTableTemplate
+ cmp r2, r0
+ blo chk_adr_r2_reject @ if adr < gMPlayJumpTableTemplate, reject it
+ lsrs r0, r2, 14
+ beq chk_adr_r2_done @ if adr < 0x40000 (i.e. in BIOS ROM), accept it
+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]
+_081DD64A:
+ 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, 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 ldrb_r3_r2
+ orrs r0, r3
+ str r0, [r1, 0x40]
+ pop {r0}
+ bx r0
+ thumb_func_end ply_goto
+
+ thumb_func_start ply_patt
+ply_patt:
+ ldrb r2, [r1, 0x2]
+ cmp r2, 0x3
+ bcs ply_patt_done
+ 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 ply_goto
+ply_patt_done:
+ b ply_fine
+ thumb_func_end ply_patt
+
+ thumb_func_start ply_pend
+ply_pend:
+ ldrb r2, [r1, 0x2]
+ cmp r2, 0
+ beq ply_pend_done
+ subs r2, 0x1
+ strb r2, [r1, 0x2]
+ lsls r2, 2
+ adds r3, r1, r2
+ ldr r2, [r3, 0x44]
+ str r2, [r1, 0x40]
+ply_pend_done:
+ bx lr
+ thumb_func_end ply_pend
+
+ thumb_func_start ply_rept
+ply_rept:
+ push {lr}
+ ldr r2, [r1, 0x40]
+ ldrb r3, [r2]
+ cmp r3, 0
+ bne ply_rept_1
+ adds r2, 0x1
+ str r2, [r1, 0x40]
+ b ply_goto_1
+ply_rept_1:
+ ldrb r3, [r1, 0x3]
+ adds r3, 0x1
+ strb r3, [r1, 0x3]
+ mov r12, r3
+ bl ld_r3_tp_adr_i
+ cmp r12, r3
+ bcs ply_rept_2
+ b ply_goto_1
+ply_rept_2:
+ movs r3, 0
+ strb r3, [r1, 0x3]
+ adds r2, 0x5
+ str r2, [r1, 0x40]
+ 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, 0x1D]
+ 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, 0x1C]
+ ldrh r2, [r0, 0x1E]
+ muls r3, r2
+ lsrs r3, 8
+ strh r3, [r0, 0x20]
+ 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, 0xA]
+ ldrb r3, [r1]
+ movs r2, 0xC
+ orrs r3, r2
+ strb r3, [r1]
+ bx r12
+ thumb_func_end ply_keysh
+
+ thumb_func_start ply_voice
+ply_voice:
+ 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 chk_adr_r2
+ str r3, [r1, 0x24]
+ ldr r3, [r2, 0x4]
+ bl chk_adr_r2
+ str r3, [r1, 0x28]
+ ldr r3, [r2, 0x8]
+ bl chk_adr_r2
+ str r3, [r1, 0x2C]
+ 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, 0x12]
+ ldrb r3, [r1]
+ movs r2, 0x3
+ orrs r3, r2
+ strb r3, [r1]
+ 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, 0x14]
+ ldrb r3, [r1]
+ movs r2, 0x3
+ orrs r3, r2
+ strb r3, [r1]
+ 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, 0xE]
+ ldrb r3, [r1]
+ movs r2, 0xC
+ orrs r3, r2
+ strb r3, [r1]
+ 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, 0xF]
+ ldrb r3, [r1]
+ movs r2, 0xC
+ orrs r3, r2
+ strb r3, [r1]
+ 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, 0x1B]
+ 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, 0x18]
+ cmp r0, r3
+ beq _081DD7AA
+ strb r3, [r1, 0x18]
+ ldrb r3, [r1]
+ movs r2, 0xF
+ orrs r3, r2
+ strb r3, [r1]
+_081DD7AA:
+ 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, 0xC]
+ ldrb r3, [r1]
+ movs r2, 0xC
+ orrs r3, r2
+ strb r3, [r1]
+ bx r12
+ thumb_func_end ply_tune
+
+ thumb_func_start ply_port
+ply_port:
+ mov r12, lr
+ ldr r2, [r1, 0x40]
+ ldrb r3, [r2]
+ adds r2, 0x1
+ ldr r0, =REG_SOUND1CNT_L @ sound register base address
+ adds r0, r3
+ bl _081DD64A
+ 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, 1
+ 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, 1
+ 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 @ branch if repeat bit isn't set
+
+ 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 @ branch if repeat bit isn't set
+
+ 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:
+
+ @ turn off DMA1/DMA2
+ movs r1, DMA_32BIT >> 8
+ lsls r1, 8
+ strh r1, [r2, 0xA] @ DMA1CNT_H
+ strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H
+
+ @ turn on DMA1/DMA2 direct-sound FIFO mode
+ 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, 0x34]
+ cmp r2, r3
+ beq _081DD82E
+ bx lr
+_081DD82E:
+ adds r3, 0x1
+ str r3, [r0, 0x34]
+ push {r0,lr}
+ ldr r3, [r0, 0x38]
+ cmp r3, 0
+ beq _081DD840
+ ldr r0, [r0, 0x3C]
+ bl _081DDA7C
+_081DD840:
+ 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 _081DD858
+ b _081DDA6C
+_081DD858:
+ ldr r0, lt2_SOUND_INFO_PTR
+ ldr r0, [r0]
+ mov r8, r0
+ adds r0, r7, 0
+ bl FadeOutBody
+ ldr r0, [r7, 0x4]
+ cmp r0, 0
+ bge _081DD86C
+ b _081DDA6C
+_081DD86C:
+ ldrh r0, [r7, 0x22]
+ ldrh r1, [r7, 0x20]
+ adds r0, r1
+ b _081DD9BC
+_081DD874:
+ ldrb r6, [r7, 0x8]
+ ldr r5, [r7, 0x2C]
+ movs r3, 0x1
+ movs r4, 0
+_081DD87C:
+ ldrb r0, [r5]
+ movs r1, 0x80
+ tst r1, r0
+ bne _081DD886
+ b _081DD998
+_081DD886:
+ mov r10, r3
+ orrs r4, r3
+ mov r11, r4
+ ldr r4, [r5, 0x20]
+ cmp r4, 0
+ beq _081DD8BA
+_081DD892:
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ tst r0, r1
+ beq _081DD8AE
+ ldrb r0, [r4, 0x10]
+ cmp r0, 0
+ beq _081DD8B4
+ subs r0, 0x1
+ strb r0, [r4, 0x10]
+ bne _081DD8B4
+ movs r0, 0x40
+ orrs r1, r0
+ strb r1, [r4]
+ b _081DD8B4
+_081DD8AE:
+ adds r0, r4, 0
+ bl ClearChain
+_081DD8B4:
+ ldr r4, [r4, 0x34]
+ cmp r4, 0
+ bne _081DD892
+_081DD8BA:
+ ldrb r3, [r5]
+ movs r0, 0x40
+ tst r0, r3
+ beq _081DD938
+ adds r0, r5, 0
+ bl Clear64byte
+ 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 _081DD938
+_081DD8E0:
+ ldr r2, [r5, 0x40]
+ ldrb r1, [r2]
+ cmp r1, 0x80
+ bcs _081DD8EC
+ ldrb r1, [r5, 0x7]
+ b _081DD8F6
+_081DD8EC:
+ adds r2, 0x1
+ str r2, [r5, 0x40]
+ cmp r1, 0xBD
+ bcc _081DD8F6
+ strb r1, [r5, 0x7]
+_081DD8F6:
+ cmp r1, 0xCF
+ bcc _081DD90C
+ mov r0, r8
+ ldr r3, [r0, 0x38]
+ adds r0, r1, 0
+ subs r0, 0xCF
+ adds r1, r7, 0
+ adds r2, r5, 0
+ bl _081DDA7C
+ b _081DD938
+_081DD90C:
+ cmp r1, 0xB0
+ bls _081DD92E
+ 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 _081DDA7C
+ ldrb r0, [r5]
+ cmp r0, 0
+ beq _081DD994
+ b _081DD938
+_081DD92E:
+ ldr r0, lt_gClockTable
+ subs r1, 0x80
+ adds r1, r0
+ ldrb r0, [r1]
+ strb r0, [r5, 0x1]
+_081DD938:
+ ldrb r0, [r5, 0x1]
+ cmp r0, 0
+ beq _081DD8E0
+ subs r0, 0x1
+ strb r0, [r5, 0x1]
+ ldrb r1, [r5, 0x19]
+ cmp r1, 0
+ beq _081DD994
+ ldrb r0, [r5, 0x17]
+ cmp r0, 0
+ beq _081DD994
+ ldrb r0, [r5, 0x1C]
+ cmp r0, 0
+ beq _081DD95A
+ subs r0, 0x1
+ strb r0, [r5, 0x1C]
+ b _081DD994
+_081DD95A:
+ ldrb r0, [r5, 0x1A]
+ adds r0, r1
+ strb r0, [r5, 0x1A]
+ adds r1, r0, 0
+ subs r0, 0x40
+ lsls r0, 24
+ bpl _081DD96E
+ lsls r2, r1, 24
+ asrs r2, 24
+ b _081DD972
+_081DD96E:
+ movs r0, 0x80
+ subs r2, r0, r1
+_081DD972:
+ ldrb r0, [r5, 0x17]
+ muls r0, r2
+ asrs r2, r0, 6
+ ldrb r0, [r5, 0x16]
+ eors r0, r2
+ lsls r0, 24
+ beq _081DD994
+ strb r2, [r5, 0x16]
+ ldrb r0, [r5]
+ ldrb r1, [r5, 0x18]
+ cmp r1, 0
+ bne _081DD98E
+ movs r1, 0xC
+ b _081DD990
+_081DD98E:
+ movs r1, 0x3
+_081DD990:
+ orrs r0, r1
+ strb r0, [r5]
+_081DD994:
+ mov r3, r10
+ mov r4, r11
+_081DD998:
+ subs r6, 0x1
+ ble _081DD9A4
+ movs r0, 0x50
+ adds r5, r0
+ lsls r3, 1
+ b _081DD87C
+_081DD9A4:
+ ldr r0, [r7, 0xC]
+ adds r0, 0x1
+ str r0, [r7, 0xC]
+ cmp r4, 0
+ bne _081DD9B6
+ movs r0, 0x80
+ lsls r0, 24
+ str r0, [r7, 0x4]
+ b _081DDA6C
+_081DD9B6:
+ str r4, [r7, 0x4]
+ ldrh r0, [r7, 0x22]
+ subs r0, 0x96
+_081DD9BC:
+ strh r0, [r7, 0x22]
+ cmp r0, 0x96
+ bcc _081DD9C4
+ b _081DD874
+_081DD9C4:
+ ldrb r2, [r7, 0x8]
+ ldr r5, [r7, 0x2C]
+_081DD9C8:
+ ldrb r0, [r5]
+ movs r1, 0x80
+ tst r1, r0
+ beq _081DDA62
+ movs r1, 0xF
+ tst r1, r0
+ beq _081DDA62
+ mov r9, r2
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl TrkVolPitSet
+ ldr r4, [r5, 0x20]
+ cmp r4, 0
+ beq _081DDA58
+_081DD9E6:
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ tst r0, r1
+ bne _081DD9F6
+ adds r0, r4, 0
+ bl ClearChain
+ b _081DDA52
+_081DD9F6:
+ ldrb r0, [r4, 0x1]
+ movs r6, 0x7
+ ands r6, r0
+ ldrb r3, [r5]
+ movs r0, 0x3
+ tst r0, r3
+ beq _081DDA14
+ bl ChnVolSetAsm
+ cmp r6, 0
+ beq _081DDA14
+ ldrb r0, [r4, 0x1D]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r4, 0x1D]
+_081DDA14:
+ ldrb r3, [r5]
+ movs r0, 0xC
+ tst r0, r3
+ beq _081DDA52
+ ldrb r1, [r4, 0x8]
+ movs r0, 0x8
+ ldrsb r0, [r5, r0]
+ adds r2, r1, r0
+ bpl _081DDA28
+ movs r2, 0
+_081DDA28:
+ cmp r6, 0
+ beq _081DDA46
+ mov r0, r8
+ ldr r3, [r0, 0x30]
+ adds r1, r2, 0
+ ldrb r2, [r5, 0x9]
+ adds r0, r6, 0
+ bl _081DDA7C
+ str r0, [r4, 0x20]
+ ldrb r0, [r4, 0x1D]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r4, 0x1D]
+ b _081DDA52
+_081DDA46:
+ adds r1, r2, 0
+ ldrb r2, [r5, 0x9]
+ ldr r0, [r4, 0x24]
+ bl MidiKeyToFreq
+ str r0, [r4, 0x20]
+_081DDA52:
+ ldr r4, [r4, 0x34]
+ cmp r4, 0
+ bne _081DD9E6
+_081DDA58:
+ ldrb r0, [r5]
+ movs r1, 0xF0
+ ands r0, r1
+ strb r0, [r5]
+ mov r2, r9
+_081DDA62:
+ subs r2, 0x1
+ ble _081DDA6C
+ movs r0, 0x50
+ adds r5, r0
+ bgt _081DD9C8
+_081DDA6C:
+ ldr r0, lt2_ID_NUMBER
+ str r0, [r7, 0x34]
+ pop {r0-r7}
+ mov r8, r0
+ mov r9, r1
+ mov r10, r2
+ mov r11, r3
+ pop {r3}
+_081DDA7C:
+ 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]
+ movs r0, 0x80
+ tst r0, r1
+ beq TrackStop_Done
+ ldr r4, [r5, 0x20]
+ cmp r4, 0
+ beq TrackStop_3
+ movs r6, 0
+TrackStop_Loop:
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq TrackStop_2
+ ldrb r0, [r4, 0x1]
+ movs r3, 0x7
+ ands r0, r3
+ beq TrackStop_1
+ ldr r3, =SOUND_INFO_PTR
+ ldr r3, [r3]
+ ldr r3, [r3, 0x2C]
+ bl _081DDA7C
+TrackStop_1:
+ strb r6, [r4]
+TrackStop_2:
+ str r6, [r4, 0x2C]
+ ldr r4, [r4, 0x34]
+ cmp r4, 0
+ bne TrackStop_Loop
+TrackStop_3:
+ str r4, [r5, 0x20]
+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 _081DDAE8
+ movs r0, 0xFF
+_081DDAE8:
+ 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 _081DDAFC
+ movs r0, 0xFF
+_081DDAFC:
+ 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, 0x4]
+ ldr r3, [r5, o_MusicPlayerTrack_cmdPtr]
+ ldrb r0, [r3]
+ cmp r0, 0x80
+ bcs _081DDB46
+ strb r0, [r5, o_MusicPlayerTrack_key]
+ adds r3, 0x1
+ ldrb r0, [r3]
+ cmp r0, 0x80
+ bcs _081DDB44
+ strb r0, [r5, 0x6]
+ adds r3, 0x1
+ ldrb r0, [r3]
+ cmp r0, 0x80
+ bcs _081DDB44
+ ldrb r1, [r5, 0x4]
+ adds r1, r0
+ strb r1, [r5, 0x4]
+ adds r3, 0x1
+_081DDB44:
+ str r3, [r5, o_MusicPlayerTrack_cmdPtr]
+_081DDB46:
+ movs r0, 0
+ str r0, [sp, 0x14]
+ adds r4, r5, 0
+ adds r4, 0x24
+ ldrb r2, [r4]
+ movs r0, 0xC0
+ tst r0, r2
+ beq _081DDB98
+ ldrb r3, [r5, 0x5]
+ movs r0, 0x40
+ tst r0, r2
+ beq _081DDB66
+ ldr r1, [r5, 0x2C]
+ adds r1, r3
+ ldrb r0, [r1]
+ b _081DDB68
+_081DDB66:
+ adds r0, r3, 0
+_081DDB68:
+ 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 _081DDB80
+ b _081DDCEA
+_081DDB80:
+ movs r0, 0x80
+ tst r0, r2
+ beq _081DDB9C
+ ldrb r1, [r6, 0x3]
+ movs r0, 0x80
+ tst r0, r1
+ beq _081DDB94
+ subs r1, 0xC0
+ lsls r1, 1
+ str r1, [sp, 0x14]
+_081DDB94:
+ ldrb r3, [r6, 0x1]
+ b _081DDB9C
+_081DDB98:
+ mov r9, r4
+ ldrb r3, [r5, 0x5]
+_081DDB9C:
+ str r3, [sp, 0x8]
+ ldr r6, [sp]
+ ldrb r1, [r6, 0x9]
+ ldrb r0, [r5, 0x1D]
+ adds r0, r1
+ cmp r0, 0xFF
+ bls _081DDBAC
+ movs r0, 0xFF
+_081DDBAC:
+ str r0, [sp, 0x10]
+ mov r6, r9
+ ldrb r0, [r6]
+ movs r6, 0x7
+ ands r6, r0
+ str r6, [sp, 0xC]
+ beq _081DDBEC
+ ldr r0, [sp, 0x4]
+ ldr r4, [r0, 0x1C]
+ cmp r4, 0
+ bne _081DDBC4
+ b _081DDCEA
+_081DDBC4:
+ subs r6, 0x1
+ lsls r0, r6, 6
+ adds r4, r0
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ tst r0, r1
+ beq _081DDC40
+ movs r0, 0x40
+ tst r0, r1
+ bne _081DDC40
+ ldrb r1, [r4, 0x13]
+ ldr r0, [sp, 0x10]
+ cmp r1, r0
+ bcc _081DDC40
+ beq _081DDBE4
+ b _081DDCEA
+_081DDBE4:
+ ldr r0, [r4, 0x2C]
+ cmp r0, r5
+ bcs _081DDC40
+ b _081DDCEA
+_081DDBEC:
+ 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
+_081DDBFA:
+ ldrb r1, [r4]
+ movs r0, 0xC7
+ tst r0, r1
+ beq _081DDC40
+ movs r0, 0x40
+ tst r0, r1
+ beq _081DDC14
+ cmp r2, 0
+ bne _081DDC18
+ adds r2, 0x1
+ ldrb r6, [r4, 0x13]
+ ldr r7, [r4, 0x2C]
+ b _081DDC32
+_081DDC14:
+ cmp r2, 0
+ bne _081DDC34
+_081DDC18:
+ ldrb r0, [r4, 0x13]
+ cmp r0, r6
+ bcs _081DDC24
+ adds r6, r0, 0
+ ldr r7, [r4, 0x2C]
+ b _081DDC32
+_081DDC24:
+ bhi _081DDC34
+ ldr r0, [r4, 0x2C]
+ cmp r0, r7
+ bls _081DDC30
+ adds r7, r0, 0
+ b _081DDC32
+_081DDC30:
+ bcc _081DDC34
+_081DDC32:
+ mov r8, r4
+_081DDC34:
+ adds r4, 0x40
+ subs r3, 0x1
+ bgt _081DDBFA
+ mov r4, r8
+ cmp r4, 0
+ beq _081DDCEA
+_081DDC40:
+ 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 _081DDC54
+ str r4, [r3, 0x30]
+_081DDC54:
+ str r4, [r5, 0x20]
+ str r5, [r4, 0x2C]
+ ldrb r0, [r5, 0x1B]
+ strb r0, [r5, 0x1C]
+ cmp r0, r1
+ beq _081DDC66
+ adds r1, r5, 0
+ bl clear_modM
+_081DDC66:
+ 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 _081DDCA0
+ movs r3, 0
+_081DDCA0:
+ ldr r6, [sp, 0xC]
+ cmp r6, 0
+ beq _081DDCCE
+ mov r6, r9
+ ldrb r0, [r6, 0x2]
+ strb r0, [r4, 0x1E]
+ ldrb r1, [r6, 0x3]
+ movs r0, 0x80
+ tst r0, r1
+ bne _081DDCBA
+ movs r0, 0x70
+ tst r0, r1
+ bne _081DDCBC
+_081DDCBA:
+ movs r1, 0x8
+_081DDCBC:
+ 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 _081DDA7C
+ b _081DDCDC
+_081DDCCE:
+ ldr r0, [r5, o_MusicPlayerTrack_unk_3C]
+ str r0, [r4, 0x18]
+ ldrb r2, [r5, 0x9]
+ adds r1, r3, 0
+ adds r0, r7, 0
+ bl MidiKeyToFreq
+_081DDCDC:
+ str r0, [r4, 0x20]
+ movs r0, 0x80
+ strb r0, [r4]
+ ldrb r1, [r5]
+ movs r0, 0xF0
+ ands r0, r1
+ strb r0, [r5]
+_081DDCEA:
+ 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, 0x40]
+ ldrb r3, [r2]
+ cmp r3, 0x80
+ bcs _081DDD16
+ strb r3, [r1, 0x5]
+ adds r2, 0x1
+ str r2, [r1, 0x40]
+ b _081DDD18
+_081DDD16:
+ ldrb r3, [r1, 0x5]
+_081DDD18:
+ ldr r1, [r1, 0x20]
+ cmp r1, 0
+ beq _081DDD40
+ movs r4, 0x83
+ movs r5, 0x40
+_081DDD22:
+ ldrb r2, [r1]
+ tst r2, r4
+ beq _081DDD3A
+ tst r2, r5
+ bne _081DDD3A
+ ldrb r0, [r1, 0x11]
+ cmp r0, r3
+ bne _081DDD3A
+ movs r0, 0x40
+ orrs r2, r0
+ strb r2, [r1]
+ b _081DDD40
+_081DDD3A:
+ ldr r1, [r1, 0x34]
+ cmp r1, 0
+ bne _081DDD22
+_081DDD40:
+ pop {r4,r5}
+ bx lr
+ thumb_func_end ply_endtie
+
+ thumb_func_start clear_modM
+clear_modM:
+ movs r2, 0
+ strb r2, [r1, 0x16]
+ strb r2, [r1, 0x1A]
+ ldrb r2, [r1, 0x18]
+ cmp r2, 0
+ bne _081DDD54
+ movs r2, 0xC
+ b _081DDD56
+_081DDD54:
+ movs r2, 0x3
+_081DDD56:
+ ldrb r3, [r1]
+ orrs r3, r2
+ strb r3, [r1]
+ bx lr
+ thumb_func_end clear_modM
+
+ thumb_func_start ld_r3_tp_adr_i
+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
+
+ thumb_func_start ply_lfos
+ply_lfos:
+ mov r12, lr
+ bl ld_r3_tp_adr_i_unchecked
+ strb r3, [r1, 0x19]
+ cmp r3, 0
+ bne _081DDD7C
+ bl clear_modM
+_081DDD7C:
+ 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, 0x17]
+ cmp r3, 0
+ bne _081DDD90
+ bl clear_modM
+_081DDD90:
+ bx r12
+ thumb_func_end ply_mod
+
+ .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 000000000..68cd8803a
--- /dev/null
+++ b/asm/m4a_3.s
@@ -0,0 +1,574 @@
+ .include "asm/macros.s"
+ .include "constants/gba_constants.s"
+ .include "constants/m4a_constants.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start CgbSound
+CgbSound: @ 81DEA70
+ 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 _081DEA94
+ subs r0, 0x1
+ ldr r1, [sp, 0x4]
+ strb r0, [r1, 0xA]
+ b _081DEA9A
+ .pool
+_081DEA94:
+ movs r0, 0xE
+ ldr r2, [sp, 0x4]
+ strb r0, [r2, 0xA]
+_081DEA9A:
+ movs r6, 0x1
+ ldr r0, [sp, 0x4]
+ ldr r4, [r0, 0x1C]
+_081DEAA0:
+ 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 _081DEAB6
+ b _081DEEA0
+_081DEAB6:
+ cmp r6, 0x2
+ beq _081DEAE8
+ cmp r6, 0x2
+ bgt _081DEAC4
+ cmp r6, 0x1
+ beq _081DEACA
+ b _081DEB20
+_081DEAC4:
+ cmp r6, 0x3
+ beq _081DEB00
+ b _081DEB20
+_081DEACA:
+ 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 _081DEB30
+ .pool
+_081DEAE8:
+ ldr r0, =REG_NR10 + 1
+ str r0, [sp, 0x8]
+ ldr r7, =REG_NR21
+ ldr r2, =REG_NR22
+ b _081DEB28
+ .pool
+_081DEB00:
+ 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 _081DEB30
+ .pool
+_081DEB20:
+ ldr r0, =REG_NR30 + 1
+ str r0, [sp, 0x8]
+ ldr r7, =REG_NR41
+ ldr r2, =REG_NR42
+_081DEB28:
+ str r2, [sp, 0xC]
+ adds r0, 0xB
+ str r0, [sp, 0x10]
+ adds r2, 0x4
+_081DEB30:
+ 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 _081DEC26
+ 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 _081DEC4A
+ 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 _081DEB98
+ cmp r6, 0x2
+ bgt _081DEB8C
+ cmp r6, 0x1
+ beq _081DEB92
+ b _081DEBEC
+ .pool
+_081DEB8C:
+ cmp r6, 0x3
+ beq _081DEBA4
+ b _081DEBEC
+_081DEB92:
+ ldrb r0, [r4, 0x1F]
+ ldr r2, [sp, 0x8]
+ strb r0, [r2]
+_081DEB98:
+ ldr r0, [r4, 0x24]
+ lsls r0, 6
+ ldrb r1, [r4, 0x1E]
+ adds r0, r1, r0
+ strb r0, [r7]
+ b _081DEBF8
+_081DEBA4:
+ ldr r1, [r4, 0x24]
+ ldr r0, [r4, 0x28]
+ cmp r1, r0
+ beq _081DEBCC
+ 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]
+_081DEBCC:
+ ldr r0, [sp, 0x8]
+ strb r5, [r0]
+ ldrb r0, [r4, 0x1E]
+ strb r0, [r7]
+ ldrb r0, [r4, 0x1E]
+ cmp r0, 0
+ beq _081DEBE4
+ movs r0, 0xC0
+ b _081DEC06
+ .pool
+_081DEBE4:
+ movs r1, 0x80
+ negs r1, r1
+ strb r1, [r4, 0x1A]
+ b _081DEC08
+_081DEBEC:
+ ldrb r0, [r4, 0x1E]
+ strb r0, [r7]
+ ldr r0, [r4, 0x24]
+ lsls r0, 3
+ ldr r2, [sp, 0x10]
+ strb r0, [r2]
+_081DEBF8:
+ ldrb r0, [r4, 0x4]
+ adds r0, 0x8
+ mov r8, r0
+ ldrb r0, [r4, 0x1E]
+ cmp r0, 0
+ beq _081DEC06
+ movs r0, 0x40
+_081DEC06:
+ strb r0, [r4, 0x1A]
+_081DEC08:
+ 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 _081DEC22
+ b _081DED5E
+_081DEC22:
+ strb r2, [r4, 0x9]
+ b _081DED8C
+_081DEC26:
+ movs r0, 0x4
+ ands r0, r2
+ cmp r0, 0
+ beq _081DEC58
+ 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 _081DEC4A
+ b _081DED9E
+_081DEC4A:
+ lsls r0, r6, 24
+ lsrs r0, 24
+ bl CgbOscOff
+ movs r0, 0
+ strb r0, [r4]
+ b _081DEE9C
+_081DEC58:
+ 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 _081DEC98
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0
+ beq _081DEC98
+ 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 _081DECCA
+ movs r0, 0x1
+ ldrb r1, [r4, 0x1D]
+ orrs r0, r1
+ strb r0, [r4, 0x1D]
+ cmp r6, 0x3
+ beq _081DED8C
+ ldrb r2, [r4, 0x7]
+ mov r8, r2
+ b _081DED8C
+_081DEC98:
+ ldrb r0, [r4, 0xB]
+ cmp r0, 0
+ bne _081DED8C
+ cmp r6, 0x3
+ bne _081DECAA
+ movs r0, 0x1
+ ldrb r1, [r4, 0x1D]
+ orrs r0, r1
+ strb r0, [r4, 0x1D]
+_081DECAA:
+ adds r0, r4, 0
+ bl CgbModVol
+ movs r0, 0x3
+ ldrb r2, [r4]
+ ands r0, r2
+ cmp r0, 0
+ bne _081DECFE
+ ldrb r0, [r4, 0x9]
+ subs r0, 0x1
+ strb r0, [r4, 0x9]
+ movs r1, 0xFF
+ ands r0, r1
+ lsls r0, 24
+ cmp r0, 0
+ bgt _081DECFA
+_081DECCA:
+ 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 _081DEC4A
+ 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 _081DED9E
+ movs r2, 0x8
+ mov r8, r2
+ b _081DED9E
+_081DECFA:
+ ldrb r0, [r4, 0x7]
+ b _081DED8A
+_081DECFE:
+ cmp r0, 0x1
+ bne _081DED0A
+_081DED02:
+ ldrb r0, [r4, 0x19]
+ strb r0, [r4, 0x9]
+ movs r0, 0x7
+ b _081DED8A
+_081DED0A:
+ cmp r0, 0x2
+ bne _081DED4E
+ 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 _081DED4A
+_081DED22:
+ ldrb r0, [r4, 0x6]
+ cmp r0, 0
+ bne _081DED32
+ movs r0, 0xFC
+ ldrb r1, [r4]
+ ands r0, r1
+ strb r0, [r4]
+ b _081DECCA
+_081DED32:
+ 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 _081DED02
+ movs r0, 0x8
+ mov r8, r0
+ b _081DED02
+_081DED4A:
+ ldrb r0, [r4, 0x5]
+ b _081DED8A
+_081DED4E:
+ 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 _081DED88
+_081DED5E:
+ 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 _081DED22
+ 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 _081DED8C
+ ldrb r2, [r4, 0x5]
+ mov r8, r2
+ b _081DED8C
+_081DED88:
+ ldrb r0, [r4, 0x4]
+_081DED8A:
+ strb r0, [r4, 0xB]
+_081DED8C:
+ ldrb r0, [r4, 0xB]
+ subs r0, 0x1
+ strb r0, [r4, 0xB]
+ ldr r0, [sp]
+ cmp r0, 0
+ bne _081DED9E
+ subs r0, 0x1
+ str r0, [sp]
+ b _081DEC98
+_081DED9E:
+ movs r0, 0x2
+ ldrb r1, [r4, 0x1D]
+ ands r0, r1
+ cmp r0, 0
+ beq _081DEE16
+ cmp r6, 0x3
+ bgt _081DEDDE
+ movs r0, 0x8
+ ldrb r2, [r4, 0x1]
+ ands r0, r2
+ cmp r0, 0
+ beq _081DEDDE
+ ldr r0, =REG_SOUNDBIAS + 1
+ ldrb r0, [r0]
+ cmp r0, 0x3F
+ bgt _081DEDD0
+ ldr r0, [r4, 0x20]
+ adds r0, 0x2
+ ldr r1, =0x000007fc
+ b _081DEDDA
+ .pool
+_081DEDD0:
+ cmp r0, 0x7F
+ bgt _081DEDDE
+ ldr r0, [r4, 0x20]
+ adds r0, 0x1
+ ldr r1, =0x000007fe
+_081DEDDA:
+ ands r0, r1
+ str r0, [r4, 0x20]
+_081DEDDE:
+ cmp r6, 0x4
+ beq _081DEDF0
+ ldr r0, [r4, 0x20]
+ ldr r1, [sp, 0x10]
+ strb r0, [r1]
+ b _081DEDFE
+ .pool
+_081DEDF0:
+ ldr r2, [sp, 0x10]
+ ldrb r0, [r2]
+ movs r1, 0x8
+ ands r1, r0
+ ldr r0, [r4, 0x20]
+ orrs r0, r1
+ strb r0, [r2]
+_081DEDFE:
+ 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]
+_081DEE16:
+ movs r0, 0x1
+ ldrb r2, [r4, 0x1D]
+ ands r0, r2
+ cmp r0, 0
+ beq _081DEE9C
+ 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 _081DEE68
+ 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 _081DEE9C
+ 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 _081DEE9C
+ .pool
+_081DEE68:
+ 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 _081DEE9C
+ ldr r0, [sp, 0x8]
+ ldrb r1, [r0]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ bne _081DEE9C
+ ldrb r0, [r4, 0x1A]
+ orrs r0, r2
+ ldr r1, [sp, 0x14]
+ strb r0, [r1]
+_081DEE9C:
+ movs r0, 0
+ strb r0, [r4, 0x1D]
+_081DEEA0:
+ mov r6, r10
+ mov r4, r9
+ cmp r6, 0x4
+ bgt _081DEEAA
+ b _081DEAA0
+_081DEEAA:
+ 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/rom1.s b/asm/rom1.s
index ab78fa2eb..3c9838721 100644
--- a/asm/rom1.s
+++ b/asm/rom1.s
@@ -417,7 +417,7 @@ _0800057E:
ldrh r4, [r5]
movs r6, 0
strh r6, [r5]
- bl SoundVSync_rev01
+ bl m4aSoundVSync
strh r4, [r5]
ldr r4, _080005DC
ldr r0, [r4, 0x20]
@@ -579,7 +579,7 @@ DoSoftReset: @ 80006B4
ldr r1, _08000710
movs r0, 0
strh r0, [r1]
- bl SoundVSyncOff_rev01
+ bl m4aSoundVSyncOff
bl remove_some_task
ldr r1, _08000714
ldrh r2, [r1, 0xA]
diff --git a/asm/rom3.s b/asm/rom3.s
index f670af62d..ecba1f0b9 100644
--- a/asm/rom3.s
+++ b/asm/rom3.s
@@ -71034,7 +71034,7 @@ _0802D47C:
ldr r1, _0802D4E4
movs r2, 0x80
lsls r2, 1
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
_0802D488:
ldr r7, _0802D4E8
ldr r4, _0802D4EC
@@ -71374,7 +71374,7 @@ sub_802D730: @ 802D730
ldr r1, _0802D78C
movs r2, 0x80
lsls r2, 1
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
ldr r2, _0802D790
ldrb r1, [r4]
lsls r0, r1, 1
@@ -71508,7 +71508,7 @@ c3_0802FDF4: @ 802D86C
ldr r1, _0802D898
movs r2, 0x80
lsls r2, 1
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
adds r0, r4, 0
bl DestroyTask
_0802D88E:
@@ -79191,9 +79191,9 @@ mplay_80342A4: @ 8031724
cmp r0, 0x1D
bls _08031768
ldr r0, _08031774
- bl MPlayStop_rev01
+ bl m4aMPlayStop
ldr r0, _08031778
- bl MPlayStop_rev01
+ bl m4aMPlayStop
_08031764:
cmp r5, 0
beq _0803177C
@@ -82009,7 +82009,7 @@ _08032DE4:
ldr r1, _08032E18
movs r2, 0x80
lsls r2, 1
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
_08032DF0:
ldr r2, _08032E1C
ldrb r1, [r2]
@@ -91138,7 +91138,7 @@ _080377F8:
ldr r1, _0803782C
movs r2, 0x80
lsls r2, 1
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
_08037804:
ldr r2, _08037830
ldrb r1, [r2]
@@ -122467,7 +122467,7 @@ _08046D5A:
cmp r0, 0
beq _08046DAE
ldr r0, _08046DA0
- bl MPlayStop_rev01
+ bl m4aMPlayStop
b _08046DAE
.align 2, 0
_08046D90: .4byte 0x02024a6a
@@ -122479,7 +122479,7 @@ _08046DA4:
ldr r0, _08046DC8
ldr r1, _08046DCC
movs r2, 0x80
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
_08046DAE:
bl battle_type_is_double
lsls r0, 24
@@ -136649,7 +136649,7 @@ sub_804E290: @ 804E290
subs r2, 0x80
lsls r2, 17
asrs r2, 16
- bl MPlayPitchControl
+ bl m4aMPlayPitchControl
pop {r0}
bx r0
.align 2, 0
@@ -140194,7 +140194,7 @@ _0804FFE4:
lsls r1, 16
lsrs r1, 16
ldr r0, _08050030
- bl MPlayTempoControl
+ bl m4aMPlayTempoControl
b _0805003E
.align 2, 0
_08050018: .4byte 0x00002345
@@ -140208,7 +140208,7 @@ _08050034:
ldr r0, _08050098
movs r1, 0x80
lsls r1, 1
- bl MPlayTempoControl
+ bl m4aMPlayTempoControl
_0805003E:
ldr r1, [sp]
adds r1, 0x2
@@ -141475,7 +141475,7 @@ _080509B4:
ldr r0, _080509C8
movs r1, 0x80
lsls r1, 1
- bl MPlayTempoControl
+ bl m4aMPlayTempoControl
movs r4, 0
b _080509E4
.align 2, 0
@@ -141537,7 +141537,7 @@ _08050A32:
movs r1, 0
strb r1, [r0]
ldr r0, _08050A48
- bl MPlayStop_rev01
+ bl m4aMPlayStop
_08050A40:
bl sub_804E290
b _08050CB6
diff --git a/asm/rom4.s b/asm/rom4.s
index 1888b7858..ec32eece4 100644
--- a/asm/rom4.s
+++ b/asm/rom4.s
@@ -73977,7 +73977,7 @@ pause_music_for_sound_maybe: @ 8074E38
lsls r4, 24
lsrs r4, 24
ldr r0, _08074E60
- bl MPlayStop_rev01
+ bl m4aMPlayStop
ldr r0, _08074E64
lsls r4, 2
adds r4, r0
@@ -74163,7 +74163,7 @@ _08074F80:
ldr r1, _08074FB4
adds r0, r4, 0
movs r2, 0
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
adds r0, r5, 0
bl m4aSongNumStop
adds r0, r4, 0
@@ -74274,7 +74274,7 @@ cry_related: @ 8075044
ldr r0, _08075084
ldr r1, _08075088
movs r2, 0x55
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
lsls r4, 24
asrs r4, 24
movs r0, 0
@@ -74343,7 +74343,7 @@ _080750DA:
ldr r0, _08075108
ldr r1, _0807510C
movs r2, 0x55
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
lsls r1, r5, 24
asrs r1, 24
str r4, [sp]
@@ -74398,7 +74398,7 @@ _0807513E:
ldr r0, _08075170
ldr r1, _08075174
movs r2, 0x55
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
_08075154:
lsls r1, r5, 24
asrs r1, 24
@@ -74431,7 +74431,7 @@ sub_8075178: @ 8075178
ldr r0, _080751B4
ldr r1, _080751B8
movs r2, 0x55
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
str r4, [sp]
adds r0, r5, 0
movs r1, 0
@@ -74695,7 +74695,7 @@ sub_8075398: @ 8075398
push {lr}
ldr r0, _080753AC
ldr r0, [r0]
- bl MPlayStop_rev01
+ bl m4aMPlayStop
bl sub_8000724
pop {r0}
bx r0
@@ -74708,7 +74708,7 @@ sub_80753B0: @ 80753B0
push {lr}
ldr r0, _080753C0
ldr r0, [r0]
- bl MPlayStop_rev01
+ bl m4aMPlayStop
pop {r0}
bx r0
.align 2, 0
@@ -74778,7 +74778,7 @@ _08075420:
ldr r1, _0807544C
movs r2, 0x80
lsls r2, 1
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
adds r0, r4, 0
bl DestroyTask
_0807543E:
@@ -74864,11 +74864,11 @@ audio_play_and_stuff: @ 80754A4
adds r0, r6, 0
adds r1, r5, 0
adds r2, r4, 0
- bl MPlayPanpotControl
+ bl m4aMPlayPanpotControl
mov r0, r8
adds r1, r5, 0
adds r2, r4, 0
- bl MPlayPanpotControl
+ bl m4aMPlayPanpotControl
pop {r3}
mov r8, r3
pop {r4-r6}
@@ -74897,7 +74897,7 @@ sub_80754F8: @ 80754F8
asrs r4, 24
adds r0, r5, 0
adds r2, r4, 0
- bl MPlayPanpotControl
+ bl m4aMPlayPanpotControl
pop {r4,r5}
pop {r0}
bx r0
@@ -74923,7 +74923,7 @@ sub_807552C: @ 807552C
asrs r4, 24
adds r0, r5, 0
adds r2, r4, 0
- bl MPlayPanpotControl
+ bl m4aMPlayPanpotControl
pop {r4,r5}
pop {r0}
bx r0
@@ -74942,11 +74942,11 @@ sub_8075560: @ 8075560
asrs r4, 24
adds r1, r5, 0
adds r2, r4, 0
- bl MPlayPanpotControl
+ bl m4aMPlayPanpotControl
ldr r0, _0807558C
adds r1, r5, 0
adds r2, r4, 0
- bl MPlayPanpotControl
+ bl m4aMPlayPanpotControl
pop {r4,r5}
pop {r0}
bx r0
@@ -75341,7 +75341,7 @@ _08075896:
bne _08075894
ldr r0, _080758D4
movs r2, 0x80
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
_080758AE:
ldr r0, _080758D8
movs r1, 0
@@ -75936,9 +75936,9 @@ _08075D14: .4byte 0x03004af0
_08075D18: .4byte 0x0202f7b0
_08075D1C:
ldr r0, _08075D98
- bl MPlayStop_rev01
+ bl m4aMPlayStop
ldr r0, _08075D9C
- bl MPlayStop_rev01
+ bl m4aMPlayStop
_08075D28:
ldr r1, _08075DA0
movs r0, 0
@@ -75976,7 +75976,7 @@ _08075D5A:
ldr r1, _08075DA4
movs r2, 0x80
lsls r2, 1
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
bl sub_8076BE0
lsls r0, 24
cmp r0, 0
@@ -79235,9 +79235,9 @@ ma20_wait_for_something: @ 8077684
cmp r0, 0x5A
bls _080776D2
ldr r0, _080776C4
- bl MPlayStop_rev01
+ bl m4aMPlayStop
ldr r0, _080776C8
- bl MPlayStop_rev01
+ bl m4aMPlayStop
strh r5, [r4]
b _080776F6
.align 2, 0
@@ -79746,9 +79746,9 @@ _08077A90: .4byte 0x02020004
ma2F_stop_music: @ 8077A94
push {lr}
ldr r0, _08077AB0
- bl MPlayStop_rev01
+ bl m4aMPlayStop
ldr r0, _08077AB4
- bl MPlayStop_rev01
+ bl m4aMPlayStop
ldr r1, _08077AB8
ldr r0, [r1]
adds r0, 0x1
diff --git a/asm/rom5.s b/asm/rom5.s
index 104b380ec..faa088118 100644
--- a/asm/rom5.s
+++ b/asm/rom5.s
@@ -36061,7 +36061,7 @@ _0808C4C4:
ldr r0, _0808C538
ldr r1, _0808C53C
movs r2, 0x80
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
_0808C50C:
add sp, 0x8
pop {r3}
@@ -36964,7 +36964,7 @@ _0808CC7A:
ldr r1, _0808CCC0
movs r2, 0x80
lsls r2, 1
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
_0808CC9C:
pop {r4-r6}
pop {r0}
@@ -42677,7 +42677,7 @@ _0808FABC:
b _0808FDDC
_0808FACA:
ldr r0, _0808FB0C
- bl MPlayStop_rev01
+ bl m4aMPlayStop
ldr r5, _0808FB10
ldr r0, [r5]
ldr r3, _0808FB14
@@ -71872,7 +71872,7 @@ sub_809E13C: @ 809E13C
ldr r1, _0809E198
movs r2, 0x80
lsls r2, 1
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
ldr r0, [r4, 0x4]
bl SetMainCallback2
adds r0, r5, 0
@@ -108206,7 +108206,7 @@ _080AFDA2:
lsls r2, r3, 24
asrs r2, 16
adds r0, r4, 0
- bl MPlayPitchControl
+ bl m4aMPlayPitchControl
b _080AFE02
.align 2, 0
_080AFDE8: .4byte 0x02038696
@@ -256921,12 +256921,12 @@ _080F80F2:
ldrh r2, [r6, 0x6]
adds r0, r4, 0
adds r1, r5, 0
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
movs r0, 0x8
ldrsh r2, [r6, r0]
adds r0, r4, 0
adds r1, r5, 0
- bl MPlayPitchControl
+ bl m4aMPlayPitchControl
ldrh r0, [r6, 0xA]
adds r0, 0x1
strh r0, [r6, 0xA]
@@ -256957,7 +256957,7 @@ _080F8124:
ldrh r2, [r6, 0x6]
adds r0, r4, 0
adds r1, r5, 0
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
movs r2, 0x80
lsls r2, 2
adds r0, r2, 0
@@ -256968,14 +256968,14 @@ _080F8124:
ldrsh r2, [r6, r0]
adds r0, r4, 0
adds r1, r5, 0
- bl MPlayPitchControl
+ bl m4aMPlayPitchControl
b _080F817A
.align 2, 0
_080F8168: .4byte 0x03007400
_080F816C: .4byte 0x0000ffff
_080F8170:
ldr r0, _080F8180
- bl MPlayStop_rev01
+ bl m4aMPlayStop
movs r0, 0xFF
_080F8178:
strb r0, [r6, 0x3]
@@ -323874,13 +323874,13 @@ _08118790:
lsls r2, 24
asrs r2, 24
adds r1, r4, 0
- bl MPlayPanpotControl
+ bl m4aMPlayPanpotControl
ldr r0, _08118830
ldrh r2, [r6, 0x24]
lsls r2, 24
asrs r2, 24
adds r1, r4, 0
- bl MPlayPanpotControl
+ bl m4aMPlayPanpotControl
_08118818:
pop {r3}
mov r8, r3
@@ -326388,11 +326388,11 @@ sub_8119BCC: @ 8119BCC
asrs r4, 24
adds r1, r5, 0
adds r2, r4, 0
- bl MPlayPanpotControl
+ bl m4aMPlayPanpotControl
ldr r0, _08119C58
adds r1, r5, 0
adds r2, r4, 0
- bl MPlayPanpotControl
+ bl m4aMPlayPanpotControl
b _08119CF6
.align 2, 0
_08119C44: .4byte gUnknown_083FA64A
@@ -410682,7 +410682,7 @@ _08142E98:
ldr r1, _08142EBC
movs r2, 0x80
lsls r2, 1
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
_08142EB2:
ldr r0, _08142EC0
str r0, [r4]
@@ -410705,7 +410705,7 @@ _08142EC4:
ldr r1, _08142EFC
movs r2, 0x80
lsls r2, 1
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
_08142EE6:
ldr r0, _08142F00
lsls r1, r6, 2
@@ -420608,7 +420608,7 @@ sub_8147F08: @ 8147F08
ldr r1, _08147F44
movs r2, 0x80
lsls r2, 1
- bl MPlayVolumeControl
+ bl m4aMPlayVolumeControl
ldr r0, _08147F48
ldr r0, [r0, 0x8]
bl SetMainCallback2