mirror of https://github.com/zeldaret/tmc.git
1585 lines
25 KiB
ArmAsm
1585 lines
25 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start umul3232H32
|
|
umul3232H32: @ 0x080AF310
|
|
add r2, pc, #0x0 @ =sub_080AF314
|
|
bx r2
|
|
|
|
arm_func_start sub_080AF314
|
|
sub_080AF314: @ 0x080AF314
|
|
umull r2, r3, r0, r1
|
|
add r0, r3, #0
|
|
bx lr
|
|
|
|
thumb_func_start SoundMain
|
|
SoundMain: @ 0x080AF320
|
|
ldr r0, _080AF38C @ =0x03007FF0
|
|
ldr r0, [r0]
|
|
ldr r2, _080AF390 @ =0x68736D53
|
|
ldr r3, [r0]
|
|
cmp r2, r3
|
|
beq _080AF32E
|
|
bx lr
|
|
_080AF32E:
|
|
adds r3, #1
|
|
str r3, [r0]
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r1, r8
|
|
mov r2, sb
|
|
mov r3, sl
|
|
mov r4, fp
|
|
push {r0, r1, r2, r3, r4}
|
|
sub sp, #0x18
|
|
ldrb r1, [r0, #0xc]
|
|
cmp r1, #0
|
|
beq _080AF352
|
|
ldr r2, _080AF398 @ =0x04000006
|
|
ldrb r2, [r2]
|
|
cmp r2, #0xa0
|
|
bhs _080AF350
|
|
adds r2, #0xe4
|
|
_080AF350:
|
|
adds r1, r1, r2
|
|
_080AF352:
|
|
str r1, [sp, #0x14]
|
|
ldr r3, [r0, #0x20]
|
|
cmp r3, #0
|
|
beq _080AF362
|
|
ldr r0, [r0, #0x24]
|
|
bl sub_080AF6CE
|
|
ldr r0, [sp, #0x18]
|
|
_080AF362:
|
|
ldr r3, [r0, #0x28]
|
|
bl sub_080AF6CE
|
|
ldr r0, [sp, #0x18]
|
|
ldr r3, [r0, #0x10]
|
|
mov r8, r3
|
|
ldr r5, _080AF39C @ =0x00000350
|
|
adds r5, r5, r0
|
|
ldrb r4, [r0, #4]
|
|
subs r7, r4, #1
|
|
bls _080AF382
|
|
ldrb r1, [r0, #0xb]
|
|
subs r1, r1, r7
|
|
mov r2, r8
|
|
muls r2, r1, r2
|
|
adds r5, r5, r2
|
|
_080AF382:
|
|
str r5, [sp, #8]
|
|
ldr r6, _080AF3A0 @ =0x00000630
|
|
ldr r3, _080AF394 @ =gUnk_0300404D
|
|
bx r3
|
|
.align 2, 0
|
|
_080AF38C: .4byte 0x03007FF0
|
|
_080AF390: .4byte 0x68736D53
|
|
_080AF394: .4byte gUnk_0300404D
|
|
_080AF398: .4byte 0x04000006
|
|
_080AF39C: .4byte 0x00000350
|
|
_080AF3A0: .4byte 0x00000630
|
|
|
|
thumb_func_start SoundMainRAM
|
|
SoundMainRAM: @ 0x080AF3A4
|
|
ldrb r3, [r0, #5]
|
|
cmp r3, #0
|
|
beq sub_080AF3F0
|
|
add r1, pc, #0x4 @ =sub_080AF3B0
|
|
bx r1
|
|
.align 2, 0
|
|
|
|
arm_func_start sub_080AF3B0
|
|
sub_080AF3B0: @ 0x080AF3B0
|
|
cmp r4, #2
|
|
addeq r7, r0, #0x350
|
|
addne r7, r5, r8
|
|
mov r4, r8
|
|
_080AF3C0:
|
|
ldrsb r0, [r5]
|
|
ldrsb r1, [r7], #1
|
|
add r0, r0, r1
|
|
mul r1, r0, r3
|
|
asr r0, r1, #8
|
|
tst r0, #0x80
|
|
addne r0, r0, #1
|
|
strb r0, [r5], #1
|
|
subs r4, r4, #1
|
|
bgt _080AF3C0
|
|
add r0, pc, #0x1F @ =sub_080AF40E
|
|
bx r0
|
|
|
|
thumb_func_start sub_080AF3F0
|
|
sub_080AF3F0: @ 0x080AF3F0
|
|
movs r0, #0
|
|
mov r1, r8
|
|
lsrs r1, r1, #3
|
|
blo _080AF3FA
|
|
stm r5!, {r0}
|
|
_080AF3FA:
|
|
lsrs r1, r1, #1
|
|
blo _080AF402
|
|
stm r5!, {r0}
|
|
stm r5!, {r0}
|
|
_080AF402:
|
|
stm r5!, {r0}
|
|
stm r5!, {r0}
|
|
stm r5!, {r0}
|
|
stm r5!, {r0}
|
|
subs r1, #1
|
|
bgt _080AF402
|
|
|
|
non_word_aligned_thumb_func_start sub_080AF40E
|
|
sub_080AF40E: @ 0x080AF40E
|
|
ldr r4, [sp, #0x18]
|
|
ldr r0, [r4, #0x18]
|
|
mov ip, r0
|
|
ldrb r0, [r4, #6]
|
|
adds r4, #0x50
|
|
_080AF418:
|
|
str r0, [sp, #4]
|
|
ldr r3, [r4, #0x24]
|
|
ldr r0, [sp, #0x14]
|
|
cmp r0, #0
|
|
beq _080AF438
|
|
ldr r1, _080AF434 @ =0x04000006
|
|
ldrb r1, [r1]
|
|
cmp r1, #0xa0
|
|
bhs _080AF42C
|
|
adds r1, #0xe4
|
|
_080AF42C:
|
|
cmp r1, r0
|
|
blo _080AF438
|
|
b _080AF6BA
|
|
.align 2, 0
|
|
_080AF434: .4byte 0x04000006
|
|
_080AF438:
|
|
ldrb r6, [r4]
|
|
movs r0, #0xc7
|
|
tst r0, r6
|
|
bne _080AF442
|
|
b sub_080AF6B0
|
|
_080AF442:
|
|
movs r0, #0x80
|
|
tst r0, r6
|
|
beq _080AF472
|
|
movs r0, #0x40
|
|
tst r0, r6
|
|
bne _080AF482
|
|
movs r6, #3
|
|
strb r6, [r4]
|
|
adds r0, r3, #0
|
|
adds r0, #0x10
|
|
str r0, [r4, #0x28]
|
|
ldr r0, [r3, #0xc]
|
|
str r0, [r4, #0x18]
|
|
movs r5, #0
|
|
strb r5, [r4, #9]
|
|
str r5, [r4, #0x1c]
|
|
ldrb r2, [r3, #3]
|
|
movs r0, #0xc0
|
|
tst r0, r2
|
|
beq _080AF4CA
|
|
movs r0, #0x10
|
|
orrs r6, r0
|
|
strb r6, [r4]
|
|
b _080AF4CA
|
|
_080AF472:
|
|
ldrb r5, [r4, #9]
|
|
movs r0, #4
|
|
tst r0, r6
|
|
beq _080AF488
|
|
ldrb r0, [r4, #0xd]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xd]
|
|
bhi _080AF4D8
|
|
_080AF482:
|
|
movs r0, #0
|
|
strb r0, [r4]
|
|
b sub_080AF6B0
|
|
_080AF488:
|
|
movs r0, #0x40
|
|
tst r0, r6
|
|
beq _080AF4A8
|
|
ldrb r0, [r4, #7]
|
|
muls r5, r0, r5
|
|
lsrs r5, r5, #8
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r5, r0
|
|
bhi _080AF4D8
|
|
_080AF49A:
|
|
ldrb r5, [r4, #0xc]
|
|
cmp r5, #0
|
|
beq _080AF482
|
|
movs r0, #4
|
|
orrs r6, r0
|
|
strb r6, [r4]
|
|
b _080AF4D8
|
|
_080AF4A8:
|
|
movs r2, #3
|
|
ands r2, r6
|
|
cmp r2, #2
|
|
bne _080AF4C6
|
|
ldrb r0, [r4, #5]
|
|
muls r5, r0, r5
|
|
lsrs r5, r5, #8
|
|
ldrb r0, [r4, #6]
|
|
cmp r5, r0
|
|
bhi _080AF4D8
|
|
adds r5, r0, #0
|
|
beq _080AF49A
|
|
subs r6, #1
|
|
strb r6, [r4]
|
|
b _080AF4D8
|
|
_080AF4C6:
|
|
cmp r2, #3
|
|
bne _080AF4D8
|
|
_080AF4CA:
|
|
ldrb r0, [r4, #4]
|
|
adds r5, r5, r0
|
|
cmp r5, #0xff
|
|
blo _080AF4D8
|
|
movs r5, #0xff
|
|
subs r6, #1
|
|
strb r6, [r4]
|
|
_080AF4D8:
|
|
strb r5, [r4, #9]
|
|
ldr r0, [sp, #0x18]
|
|
ldrb r0, [r0, #7]
|
|
adds r0, #1
|
|
muls r0, r5, r0
|
|
lsrs r5, r0, #4
|
|
ldrb r0, [r4, #2]
|
|
ldrb r1, [r4, #3]
|
|
adds r0, r0, r1
|
|
muls r0, r5, r0
|
|
lsrs r0, r0, #9
|
|
strb r0, [r4, #0xa]
|
|
movs r0, #0x10
|
|
ands r0, r6
|
|
str r0, [sp, #0x10]
|
|
beq _080AF508
|
|
adds r0, r3, #0
|
|
adds r0, #0x10
|
|
ldr r1, [r3, #8]
|
|
adds r0, r0, r1
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r3, #0xc]
|
|
subs r0, r0, r1
|
|
str r0, [sp, #0x10]
|
|
_080AF508:
|
|
ldr r5, [sp, #8]
|
|
ldr r2, [r4, #0x18]
|
|
ldr r3, [r4, #0x28]
|
|
add r0, pc, #0x4 @ =sub_080AF514
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
arm_func_start sub_080AF514
|
|
sub_080AF514: @ 0x080AF514
|
|
str r8, [sp]
|
|
ldrb sl, [r4, #0xa]
|
|
lsl sl, sl, #0x10
|
|
ldrb r0, [r4, #1]
|
|
tst r0, #8
|
|
beq _080AF61C
|
|
_080AF52C:
|
|
cmp r2, #4
|
|
ble _080AF588
|
|
subs r2, r2, r8
|
|
movgt lr, #0
|
|
bgt _080AF558
|
|
mov lr, r8
|
|
add r2, r2, r8
|
|
sub r8, r2, #4
|
|
sub lr, lr, r8
|
|
ands r2, r2, #3
|
|
moveq r2, #4
|
|
_080AF558:
|
|
ldr r6, [r5]
|
|
_080AF55C:
|
|
ldrsb r0, [r3], #1
|
|
mul r1, sl, r0
|
|
bic r1, r1, #0xff0000
|
|
add r6, r1, r6, ror #8
|
|
adds r5, r5, #0x40000000
|
|
blo _080AF55C
|
|
str r6, [r5], #4
|
|
subs r8, r8, #4
|
|
bgt _080AF558
|
|
adds r8, r8, lr
|
|
beq _080AF69C
|
|
_080AF588:
|
|
ldr r6, [r5]
|
|
_080AF58C:
|
|
ldrsb r0, [r3], #1
|
|
mul r1, sl, r0
|
|
bic r1, r1, #0xff0000
|
|
add r6, r1, r6, ror #8
|
|
subs r2, r2, #1
|
|
beq _080AF5EC
|
|
_080AF5A4:
|
|
adds r5, r5, #0x40000000
|
|
blo _080AF58C
|
|
str r6, [r5], #4
|
|
subs r8, r8, #4
|
|
bgt _080AF52C
|
|
b _080AF69C
|
|
_080AF5BC:
|
|
ldr r0, [sp, #0x18]
|
|
cmp r0, #0
|
|
beq _080AF5E0
|
|
ldr r3, [sp, #0x14]
|
|
rsb sb, r2, #0
|
|
_080AF5D0:
|
|
adds r2, r0, r2
|
|
bgt _080AF670
|
|
sub sb, sb, r0
|
|
b _080AF5D0
|
|
_080AF5E0:
|
|
pop {r4, ip}
|
|
mov r2, #0
|
|
b _080AF5FC
|
|
_080AF5EC:
|
|
ldr r2, [sp, #0x10]
|
|
cmp r2, #0
|
|
ldrne r3, [sp, #0xc]
|
|
bne _080AF5A4
|
|
_080AF5FC:
|
|
strb r2, [r4]
|
|
lsr r0, r5, #0x1e
|
|
bic r5, r5, #0xc0000000
|
|
rsb r0, r0, #3
|
|
lsl r0, r0, #3
|
|
ror r6, r6, r0
|
|
str r6, [r5], #4
|
|
b _080AF6A4
|
|
_080AF61C:
|
|
push {r4, ip}
|
|
ldr lr, [r4, #0x1c]
|
|
ldr r1, [r4, #0x20]
|
|
mul r4, ip, r1
|
|
ldrsb r0, [r3]
|
|
ldrsb r1, [r3, #1]!
|
|
sub r1, r1, r0
|
|
_080AF638:
|
|
ldr r6, [r5]
|
|
_080AF63C:
|
|
mul sb, lr, r1
|
|
add sb, r0, sb, asr #23
|
|
mul ip, sl, sb
|
|
bic ip, ip, #0xff0000
|
|
add r6, ip, r6, ror #8
|
|
add lr, lr, r4
|
|
lsrs sb, lr, #0x17
|
|
beq _080AF67C
|
|
bic lr, lr, #0x3f800000
|
|
subs r2, r2, sb
|
|
ble _080AF5BC
|
|
subs sb, sb, #1
|
|
addeq r0, r0, r1
|
|
_080AF670:
|
|
ldrsbne r0, [r3, sb]!
|
|
ldrsb r1, [r3, #1]!
|
|
sub r1, r1, r0
|
|
_080AF67C:
|
|
adds r5, r5, #0x40000000
|
|
blo _080AF63C
|
|
str r6, [r5], #4
|
|
subs r8, r8, #4
|
|
bgt _080AF638
|
|
sub r3, r3, #1
|
|
pop {r4, ip}
|
|
str lr, [r4, #0x1c]
|
|
_080AF69C:
|
|
str r2, [r4, #0x18]
|
|
str r3, [r4, #0x28]
|
|
_080AF6A4:
|
|
ldr r8, [sp]
|
|
add r0, pc, #0x1 @ =sub_080AF6B0
|
|
bx r0
|
|
|
|
thumb_func_start sub_080AF6B0
|
|
sub_080AF6B0: @ 0x080AF6B0
|
|
ldr r0, [sp, #4]
|
|
subs r0, #1
|
|
ble _080AF6BA
|
|
adds r4, #0x40
|
|
b _080AF418
|
|
_080AF6BA:
|
|
ldr r0, [sp, #0x18]
|
|
ldr r3, _080AF6D0 @ =0x68736D53
|
|
str r3, [r0]
|
|
add sp, #0x1c
|
|
pop {r0, r1, r2, r3, r4, r5, r6, r7}
|
|
mov r8, r0
|
|
mov sb, r1
|
|
mov sl, r2
|
|
mov fp, r3
|
|
pop {r3}
|
|
|
|
non_word_aligned_thumb_func_start sub_080AF6CE
|
|
sub_080AF6CE: @ 0x080AF6CE
|
|
bx r3
|
|
.align 2, 0
|
|
_080AF6D0: .4byte 0x68736D53
|
|
|
|
thumb_func_start SoundMainBTM
|
|
SoundMainBTM: @ 0x080AF6D4
|
|
mov ip, r4
|
|
movs r1, #0
|
|
movs r2, #0
|
|
movs r3, #0
|
|
movs r4, #0
|
|
stm r0!, {r1, r2, r3, r4}
|
|
stm r0!, {r1, r2, r3, r4}
|
|
stm r0!, {r1, r2, r3, r4}
|
|
stm r0!, {r1, r2, r3, r4}
|
|
mov r4, ip
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start RealClearChain
|
|
RealClearChain: @ 0x080AF6EC
|
|
ldr r3, [r0, #0x2c]
|
|
cmp r3, #0
|
|
beq _080AF70A
|
|
ldr r1, [r0, #0x34]
|
|
ldr r2, [r0, #0x30]
|
|
cmp r2, #0
|
|
beq _080AF6FE
|
|
str r1, [r2, #0x34]
|
|
b _080AF700
|
|
_080AF6FE:
|
|
str r1, [r3, #0x20]
|
|
_080AF700:
|
|
cmp r1, #0
|
|
beq _080AF706
|
|
str r2, [r1, #0x30]
|
|
_080AF706:
|
|
movs r1, #0
|
|
str r1, [r0, #0x2c]
|
|
_080AF70A:
|
|
bx lr
|
|
|
|
thumb_func_start ply_fine
|
|
ply_fine: @ 0x080AF70C
|
|
push {r4, r5, lr}
|
|
adds r5, r1, #0
|
|
ldr r4, [r5, #0x20]
|
|
cmp r4, #0
|
|
beq _080AF73A
|
|
_080AF716:
|
|
ldrb r1, [r4]
|
|
movs r0, #0xc7
|
|
tst r0, r1
|
|
beq _080AF724
|
|
movs r0, #0x40
|
|
orrs r1, r0
|
|
strb r1, [r4]
|
|
_080AF724:
|
|
adds r0, r4, #0
|
|
bl RealClearChain
|
|
ldr r1, [r4, #0x34]
|
|
cmp r1, r4
|
|
bne _080AF734
|
|
movs r1, #0
|
|
str r1, [r4, #0x34]
|
|
_080AF734:
|
|
adds r4, r1, #0
|
|
cmp r4, #0
|
|
bne _080AF716
|
|
_080AF73A:
|
|
movs r0, #0
|
|
strb r0, [r5]
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
|
|
thumb_func_start MPlayJumpTableCopy
|
|
MPlayJumpTableCopy: @ 0x080AF744
|
|
mov ip, lr
|
|
movs r1, #0x24
|
|
ldr r2, _080AF774 @ =gMPlayJumpTableTemplate
|
|
_080AF74A:
|
|
ldr r3, [r2]
|
|
bl _080AF75E
|
|
stm r0!, {r3}
|
|
adds r2, #4
|
|
subs r1, #1
|
|
bgt _080AF74A
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_080AF75C
|
|
sub_080AF75C: @ 0x080AF75C
|
|
ldrb r3, [r2]
|
|
_080AF75E:
|
|
push {r0}
|
|
lsrs r0, r2, #0x19
|
|
bne _080AF770
|
|
ldr r0, _080AF774 @ =gMPlayJumpTableTemplate
|
|
cmp r2, r0
|
|
blo _080AF76E
|
|
lsrs r0, r2, #0xe
|
|
beq _080AF770
|
|
_080AF76E:
|
|
movs r3, #0
|
|
_080AF770:
|
|
pop {r0}
|
|
bx lr
|
|
.align 2, 0
|
|
_080AF774: .4byte gMPlayJumpTableTemplate
|
|
|
|
thumb_func_start sub_080AF778
|
|
sub_080AF778: @ 0x080AF778
|
|
ldr r2, [r1, #0x40]
|
|
|
|
non_word_aligned_thumb_func_start sub_080AF77A
|
|
sub_080AF77A: @ 0x080AF77A
|
|
adds r3, r2, #1
|
|
str r3, [r1, #0x40]
|
|
ldrb r3, [r2]
|
|
b _080AF75E
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_goto
|
|
ply_goto:
|
|
push {lr}
|
|
_080AF786:
|
|
ldr r2, [r1, #0x40]
|
|
ldrb r0, [r2, #3]
|
|
lsls r0, r0, #8
|
|
ldrb r3, [r2, #2]
|
|
orrs r0, r3
|
|
lsls r0, r0, #8
|
|
ldrb r3, [r2, #1]
|
|
orrs r0, r3
|
|
lsls r0, r0, #8
|
|
bl sub_080AF75C
|
|
orrs r0, r3
|
|
str r0, [r1, #0x40]
|
|
pop {r0}
|
|
bx r0
|
|
|
|
thumb_func_start ply_patt
|
|
ply_patt: @ 0x080AF7A4
|
|
ldrb r2, [r1, #2]
|
|
cmp r2, #3
|
|
bhs _080AF7BC
|
|
lsls r2, r2, #2
|
|
adds r3, r1, r2
|
|
ldr r2, [r1, #0x40]
|
|
adds r2, #4
|
|
str r2, [r3, #0x44]
|
|
ldrb r2, [r1, #2]
|
|
adds r2, #1
|
|
strb r2, [r1, #2]
|
|
b ply_goto
|
|
_080AF7BC:
|
|
b ply_fine
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_pend
|
|
ply_pend: @ 0x080AF7C0
|
|
ldrb r2, [r1, #2]
|
|
cmp r2, #0
|
|
beq _080AF7D2
|
|
subs r2, #1
|
|
strb r2, [r1, #2]
|
|
lsls r2, r2, #2
|
|
adds r3, r1, r2
|
|
ldr r2, [r3, #0x44]
|
|
str r2, [r1, #0x40]
|
|
_080AF7D2:
|
|
bx lr
|
|
|
|
thumb_func_start ply_rept
|
|
ply_rept: @ 0x080AF7D4
|
|
push {lr}
|
|
ldr r2, [r1, #0x40]
|
|
ldrb r3, [r2]
|
|
cmp r3, #0
|
|
bne _080AF7E4
|
|
adds r2, #1
|
|
str r2, [r1, #0x40]
|
|
b _080AF786
|
|
_080AF7E4:
|
|
ldrb r3, [r1, #3]
|
|
adds r3, #1
|
|
strb r3, [r1, #3]
|
|
mov ip, r3
|
|
bl sub_080AF778
|
|
cmp ip, r3
|
|
bhs _080AF7F6
|
|
b _080AF786
|
|
_080AF7F6:
|
|
movs r3, #0
|
|
strb r3, [r1, #3]
|
|
adds r2, #5
|
|
str r2, [r1, #0x40]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_prio
|
|
ply_prio: @ 0x080AF804
|
|
mov ip, lr
|
|
bl sub_080AF778
|
|
strb r3, [r1, #0x1d]
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_tempo
|
|
ply_tempo: @ 0x080AF810
|
|
mov ip, lr
|
|
bl sub_080AF778
|
|
lsls r3, r3, #1
|
|
strh r3, [r0, #0x1c]
|
|
ldrh r2, [r0, #0x1e]
|
|
muls r3, r2, r3
|
|
lsrs r3, r3, #8
|
|
strh r3, [r0, #0x20]
|
|
bx ip
|
|
|
|
thumb_func_start ply_keysh
|
|
ply_keysh: @ 0x080AF824
|
|
mov ip, lr
|
|
bl sub_080AF778
|
|
strb r3, [r1, #0xa]
|
|
ldrb r3, [r1]
|
|
movs r2, #0xc
|
|
orrs r3, r2
|
|
strb r3, [r1]
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_voice
|
|
ply_voice: @ 0x080AF838
|
|
mov ip, lr
|
|
ldr r2, [r1, #0x40]
|
|
ldrb r3, [r2]
|
|
adds r2, #1
|
|
str r2, [r1, #0x40]
|
|
lsls r2, r3, #1
|
|
adds r2, r2, r3
|
|
lsls r2, r2, #2
|
|
ldr r3, [r0, #0x30]
|
|
adds r2, r2, r3
|
|
ldr r3, [r2]
|
|
bl _080AF75E
|
|
str r3, [r1, #0x24]
|
|
ldr r3, [r2, #4]
|
|
bl _080AF75E
|
|
str r3, [r1, #0x28]
|
|
ldr r3, [r2, #8]
|
|
bl _080AF75E
|
|
str r3, [r1, #0x2c]
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_vol
|
|
ply_vol: @ 0x080AF868
|
|
mov ip, lr
|
|
bl sub_080AF778
|
|
strb r3, [r1, #0x12]
|
|
ldrb r3, [r1]
|
|
movs r2, #3
|
|
orrs r3, r2
|
|
strb r3, [r1]
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_pan
|
|
ply_pan: @ 0x080AF87C
|
|
mov ip, lr
|
|
bl sub_080AF778
|
|
subs r3, #0x40
|
|
strb r3, [r1, #0x14]
|
|
ldrb r3, [r1]
|
|
movs r2, #3
|
|
orrs r3, r2
|
|
strb r3, [r1]
|
|
bx ip
|
|
|
|
thumb_func_start ply_bend
|
|
ply_bend: @ 0x080AF890
|
|
mov ip, lr
|
|
bl sub_080AF778
|
|
subs r3, #0x40
|
|
strb r3, [r1, #0xe]
|
|
ldrb r3, [r1]
|
|
movs r2, #0xc
|
|
orrs r3, r2
|
|
strb r3, [r1]
|
|
bx ip
|
|
|
|
thumb_func_start ply_bendr
|
|
ply_bendr: @ 0x080AF8A4
|
|
mov ip, lr
|
|
bl sub_080AF778
|
|
strb r3, [r1, #0xf]
|
|
ldrb r3, [r1]
|
|
movs r2, #0xc
|
|
orrs r3, r2
|
|
strb r3, [r1]
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_lfodl
|
|
ply_lfodl: @ 0x080AF8B8
|
|
mov ip, lr
|
|
bl sub_080AF778
|
|
strb r3, [r1, #0x1b]
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_modt
|
|
ply_modt: @ 0x080AF8C4
|
|
mov ip, lr
|
|
bl sub_080AF778
|
|
ldrb r0, [r1, #0x18]
|
|
cmp r0, r3
|
|
beq _080AF8DA
|
|
strb r3, [r1, #0x18]
|
|
ldrb r3, [r1]
|
|
movs r2, #0xf
|
|
orrs r3, r2
|
|
strb r3, [r1]
|
|
_080AF8DA:
|
|
bx ip
|
|
|
|
thumb_func_start ply_tune
|
|
ply_tune: @ 0x080AF8DC
|
|
mov ip, lr
|
|
bl sub_080AF778
|
|
subs r3, #0x40
|
|
strb r3, [r1, #0xc]
|
|
ldrb r3, [r1]
|
|
movs r2, #0xc
|
|
orrs r3, r2
|
|
strb r3, [r1]
|
|
bx ip
|
|
|
|
thumb_func_start ply_port
|
|
ply_port: @ 0x080AF8F0
|
|
mov ip, lr
|
|
ldr r2, [r1, #0x40]
|
|
ldrb r3, [r2]
|
|
adds r2, #1
|
|
ldr r0, _080AF904 @ =0x04000060
|
|
adds r0, r0, r3
|
|
bl sub_080AF77A
|
|
|
|
thumb_func_start sub_080AF900
|
|
sub_080AF900: @ 0x080AF900
|
|
strb r3, [r0]
|
|
bx ip
|
|
.align 2, 0
|
|
_080AF904: .4byte 0x04000060
|
|
|
|
thumb_func_start MPlayMain
|
|
MPlayMain: @ 0x080AF908
|
|
ldr r2, _080AFB80 @ =0x68736D53
|
|
ldr r3, [r0, #0x34]
|
|
cmp r2, r3
|
|
beq _080AF912
|
|
bx lr
|
|
_080AF912:
|
|
adds r3, #1
|
|
str r3, [r0, #0x34]
|
|
push {r0, lr}
|
|
ldr r3, [r0, #0x38]
|
|
cmp r3, #0
|
|
beq _080AF924
|
|
ldr r0, [r0, #0x3c]
|
|
bl sub_080AFB74
|
|
_080AF924:
|
|
pop {r0}
|
|
push {r4, r5, r6, r7}
|
|
mov r4, r8
|
|
mov r5, sb
|
|
mov r6, sl
|
|
mov r7, fp
|
|
push {r4, r5, r6, r7}
|
|
adds r7, r0, #0
|
|
ldr r0, [r7, #4]
|
|
cmp r0, #0
|
|
bge _080AF93C
|
|
b _080AFB64
|
|
_080AF93C:
|
|
ldr r0, _080AFB7C @ =0x03007FF0
|
|
ldr r0, [r0]
|
|
mov r8, r0
|
|
adds r0, r7, #0
|
|
bl FadeOutBody
|
|
ldr r0, [r7, #4]
|
|
cmp r0, #0
|
|
bge _080AF950
|
|
b _080AFB64
|
|
_080AF950:
|
|
ldrh r0, [r7, #0x22]
|
|
ldrh r1, [r7, #0x20]
|
|
adds r0, r0, r1
|
|
b _080AFAAA
|
|
_080AF958:
|
|
ldrb r6, [r7, #8]
|
|
ldr r5, [r7, #0x2c]
|
|
movs r3, #1
|
|
movs r4, #0
|
|
_080AF960:
|
|
ldrb r0, [r5]
|
|
movs r1, #0x80
|
|
tst r1, r0
|
|
bne _080AF96A
|
|
b _080AFA86
|
|
_080AF96A:
|
|
mov sl, r3
|
|
orrs r4, r3
|
|
mov fp, r4
|
|
ldr r4, [r5, #0x20]
|
|
cmp r4, #0
|
|
beq _080AF9A8
|
|
_080AF976:
|
|
ldrb r1, [r4]
|
|
movs r0, #0xc7
|
|
tst r0, r1
|
|
beq _080AF992
|
|
ldrb r0, [r4, #0x10]
|
|
cmp r0, #0
|
|
beq _080AF998
|
|
subs r0, #1
|
|
strb r0, [r4, #0x10]
|
|
bne _080AF998
|
|
movs r0, #0x40
|
|
orrs r1, r0
|
|
strb r1, [r4]
|
|
b _080AF998
|
|
_080AF992:
|
|
adds r0, r4, #0
|
|
bl ClearChain
|
|
_080AF998:
|
|
ldr r1, [r4, #0x34]
|
|
cmp r1, r4
|
|
bne _080AF9A2
|
|
movs r1, #0
|
|
str r1, [r4, #0x34]
|
|
_080AF9A2:
|
|
adds r4, r1, #0
|
|
cmp r4, #0
|
|
bne _080AF976
|
|
_080AF9A8:
|
|
ldrb r3, [r5]
|
|
movs r0, #0x40
|
|
tst r0, r3
|
|
beq _080AFA26
|
|
adds r0, r5, #0
|
|
bl Clear64byte
|
|
movs r0, #0x80
|
|
strb r0, [r5]
|
|
movs r0, #2
|
|
strb r0, [r5, #0xf]
|
|
movs r0, #0x40
|
|
strb r0, [r5, #0x13]
|
|
movs r0, #0x16
|
|
strb r0, [r5, #0x19]
|
|
movs r0, #1
|
|
adds r1, r5, #6
|
|
strb r0, [r1, #0x1e]
|
|
b _080AFA26
|
|
_080AF9CE:
|
|
ldr r2, [r5, #0x40]
|
|
ldrb r1, [r2]
|
|
cmp r1, #0x80
|
|
bhs _080AF9DA
|
|
ldrb r1, [r5, #7]
|
|
b _080AF9E4
|
|
_080AF9DA:
|
|
adds r2, #1
|
|
str r2, [r5, #0x40]
|
|
cmp r1, #0xbd
|
|
blo _080AF9E4
|
|
strb r1, [r5, #7]
|
|
_080AF9E4:
|
|
cmp r1, #0xcf
|
|
blo _080AF9FA
|
|
mov r0, r8
|
|
ldr r3, [r0, #0x38]
|
|
adds r0, r1, #0
|
|
subs r0, #0xcf
|
|
adds r1, r7, #0
|
|
adds r2, r5, #0
|
|
bl sub_080AFB74
|
|
b _080AFA26
|
|
_080AF9FA:
|
|
cmp r1, #0xb0
|
|
bls _080AFA1C
|
|
adds r0, r1, #0
|
|
subs r0, #0xb1
|
|
strb r0, [r7, #0xa]
|
|
mov r3, r8
|
|
ldr r3, [r3, #0x34]
|
|
lsls r0, r0, #2
|
|
ldr r3, [r3, r0]
|
|
adds r0, r7, #0
|
|
adds r1, r5, #0
|
|
bl sub_080AFB74
|
|
ldrb r0, [r5]
|
|
cmp r0, #0
|
|
beq _080AFA82
|
|
b _080AFA26
|
|
_080AFA1C:
|
|
ldr r0, _080AFB78 @ =gClockTable
|
|
subs r1, #0x80
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
strb r0, [r5, #1]
|
|
_080AFA26:
|
|
ldrb r0, [r5, #1]
|
|
cmp r0, #0
|
|
beq _080AF9CE
|
|
subs r0, #1
|
|
strb r0, [r5, #1]
|
|
ldrb r1, [r5, #0x19]
|
|
cmp r1, #0
|
|
beq _080AFA82
|
|
ldrb r0, [r5, #0x17]
|
|
cmp r0, #0
|
|
beq _080AFA82
|
|
ldrb r0, [r5, #0x1c]
|
|
cmp r0, #0
|
|
beq _080AFA48
|
|
subs r0, #1
|
|
strb r0, [r5, #0x1c]
|
|
b _080AFA82
|
|
_080AFA48:
|
|
ldrb r0, [r5, #0x1a]
|
|
adds r0, r0, r1
|
|
strb r0, [r5, #0x1a]
|
|
adds r1, r0, #0
|
|
subs r0, #0x40
|
|
lsls r0, r0, #0x18
|
|
bpl _080AFA5C
|
|
lsls r2, r1, #0x18
|
|
asrs r2, r2, #0x18
|
|
b _080AFA60
|
|
_080AFA5C:
|
|
movs r0, #0x80
|
|
subs r2, r0, r1
|
|
_080AFA60:
|
|
ldrb r0, [r5, #0x17]
|
|
muls r0, r2, r0
|
|
asrs r2, r0, #6
|
|
ldrb r0, [r5, #0x16]
|
|
eors r0, r2
|
|
lsls r0, r0, #0x18
|
|
beq _080AFA82
|
|
strb r2, [r5, #0x16]
|
|
ldrb r0, [r5]
|
|
ldrb r1, [r5, #0x18]
|
|
cmp r1, #0
|
|
bne _080AFA7C
|
|
movs r1, #0xc
|
|
b _080AFA7E
|
|
_080AFA7C:
|
|
movs r1, #3
|
|
_080AFA7E:
|
|
orrs r0, r1
|
|
strb r0, [r5]
|
|
_080AFA82:
|
|
mov r3, sl
|
|
mov r4, fp
|
|
_080AFA86:
|
|
subs r6, #1
|
|
ble _080AFA92
|
|
movs r0, #0x50
|
|
adds r5, r5, r0
|
|
lsls r3, r3, #1
|
|
b _080AF960
|
|
_080AFA92:
|
|
ldr r0, [r7, #0xc]
|
|
adds r0, #1
|
|
str r0, [r7, #0xc]
|
|
cmp r4, #0
|
|
bne _080AFAA4
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x18
|
|
str r0, [r7, #4]
|
|
b _080AFB64
|
|
_080AFAA4:
|
|
str r4, [r7, #4]
|
|
ldrh r0, [r7, #0x22]
|
|
subs r0, #0x96
|
|
_080AFAAA:
|
|
strh r0, [r7, #0x22]
|
|
cmp r0, #0x96
|
|
blo _080AFAB2
|
|
b _080AF958
|
|
_080AFAB2:
|
|
ldrb r2, [r7, #8]
|
|
ldr r5, [r7, #0x2c]
|
|
_080AFAB6:
|
|
ldrb r0, [r5]
|
|
movs r1, #0x80
|
|
tst r1, r0
|
|
beq _080AFB5A
|
|
movs r1, #0xf
|
|
tst r1, r0
|
|
beq _080AFB5A
|
|
mov sb, r2
|
|
adds r0, r7, #0
|
|
adds r1, r5, #0
|
|
bl TrkVolPitSet
|
|
ldr r4, [r5, #0x20]
|
|
cmp r4, #0
|
|
beq _080AFB50
|
|
_080AFAD4:
|
|
ldrb r1, [r4]
|
|
movs r0, #0xc7
|
|
tst r0, r1
|
|
bne _080AFAE4
|
|
adds r0, r4, #0
|
|
bl ClearChain
|
|
b _080AFB40
|
|
_080AFAE4:
|
|
ldrb r0, [r4, #1]
|
|
movs r6, #7
|
|
ands r6, r0
|
|
ldrb r3, [r5]
|
|
movs r0, #3
|
|
tst r0, r3
|
|
beq _080AFB02
|
|
bl ChnVolSetAsm
|
|
cmp r6, #0
|
|
beq _080AFB02
|
|
ldrb r0, [r4, #0x1d]
|
|
movs r1, #1
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x1d]
|
|
_080AFB02:
|
|
ldrb r3, [r5]
|
|
movs r0, #0xc
|
|
tst r0, r3
|
|
beq _080AFB40
|
|
ldrb r1, [r4, #8]
|
|
movs r0, #8
|
|
ldrsb r0, [r5, r0]
|
|
adds r2, r1, r0
|
|
bpl _080AFB16
|
|
movs r2, #0
|
|
_080AFB16:
|
|
cmp r6, #0
|
|
beq _080AFB34
|
|
mov r0, r8
|
|
ldr r3, [r0, #0x30]
|
|
adds r1, r2, #0
|
|
ldrb r2, [r5, #9]
|
|
adds r0, r6, #0
|
|
bl sub_080AFB74
|
|
str r0, [r4, #0x20]
|
|
ldrb r0, [r4, #0x1d]
|
|
movs r1, #2
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x1d]
|
|
b _080AFB40
|
|
_080AFB34:
|
|
adds r1, r2, #0
|
|
ldrb r2, [r5, #9]
|
|
ldr r0, [r4, #0x24]
|
|
bl MidiKeyToFreq
|
|
str r0, [r4, #0x20]
|
|
_080AFB40:
|
|
ldr r1, [r4, #0x34]
|
|
cmp r1, r4
|
|
bne _080AFB4A
|
|
movs r1, #0
|
|
str r1, [r4, #0x34]
|
|
_080AFB4A:
|
|
adds r4, r1, #0
|
|
cmp r4, #0
|
|
bne _080AFAD4
|
|
_080AFB50:
|
|
ldrb r0, [r5]
|
|
movs r1, #0xf0
|
|
ands r0, r1
|
|
strb r0, [r5]
|
|
mov r2, sb
|
|
_080AFB5A:
|
|
subs r2, #1
|
|
ble _080AFB64
|
|
movs r0, #0x50
|
|
adds r5, r5, r0
|
|
bgt _080AFAB6
|
|
_080AFB64:
|
|
ldr r0, _080AFB80 @ =0x68736D53
|
|
str r0, [r7, #0x34]
|
|
pop {r0, r1, r2, r3, r4, r5, r6, r7}
|
|
mov r8, r0
|
|
mov sb, r1
|
|
mov sl, r2
|
|
mov fp, r3
|
|
pop {r3}
|
|
|
|
thumb_func_start sub_080AFB74
|
|
sub_080AFB74: @ 0x080AFB74
|
|
bx r3
|
|
.align 2, 0
|
|
_080AFB78: .4byte gClockTable
|
|
_080AFB7C: .4byte 0x03007FF0
|
|
_080AFB80: .4byte 0x68736D53
|
|
|
|
thumb_func_start TrackStop
|
|
TrackStop: @ 0x080AFB84
|
|
push {r4, r5, r6, lr}
|
|
adds r5, r1, #0
|
|
ldrb r1, [r5]
|
|
movs r0, #0x80
|
|
tst r0, r1
|
|
beq _080AFBC6
|
|
ldr r4, [r5, #0x20]
|
|
cmp r4, #0
|
|
beq _080AFBC4
|
|
movs r6, #0
|
|
_080AFB98:
|
|
ldrb r0, [r4]
|
|
cmp r0, #0
|
|
beq _080AFBB2
|
|
ldrb r0, [r4, #1]
|
|
movs r3, #7
|
|
ands r0, r3
|
|
beq _080AFBB0
|
|
ldr r3, _080AFBCC @ =0x03007FF0
|
|
ldr r3, [r3]
|
|
ldr r3, [r3, #0x2c]
|
|
bl sub_080AFB74
|
|
_080AFBB0:
|
|
strb r6, [r4]
|
|
_080AFBB2:
|
|
str r6, [r4, #0x2c]
|
|
ldr r0, [r4, #0x34]
|
|
cmp r0, r4
|
|
bne _080AFBBE
|
|
movs r0, #0
|
|
str r0, [r4, #0x34]
|
|
_080AFBBE:
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
bne _080AFB98
|
|
_080AFBC4:
|
|
str r4, [r5, #0x20]
|
|
_080AFBC6:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AFBCC: .4byte 0x03007FF0
|
|
|
|
thumb_func_start ChnVolSetAsm
|
|
ChnVolSetAsm: @ 0x080AFBD0
|
|
ldrb r1, [r4, #0x12]
|
|
movs r0, #0x14
|
|
ldrsb r2, [r4, r0]
|
|
movs r3, #0x80
|
|
adds r3, r3, r2
|
|
muls r3, r1, r3
|
|
ldrb r0, [r5, #0x10]
|
|
muls r0, r3, r0
|
|
asrs r0, r0, #0xe
|
|
cmp r0, #0xff
|
|
bls _080AFBE8
|
|
movs r0, #0xff
|
|
_080AFBE8:
|
|
strb r0, [r4, #2]
|
|
movs r3, #0x7f
|
|
subs r3, r3, r2
|
|
muls r3, r1, r3
|
|
ldrb r0, [r5, #0x11]
|
|
muls r0, r3, r0
|
|
asrs r0, r0, #0xe
|
|
cmp r0, #0xff
|
|
bls _080AFBFC
|
|
movs r0, #0xff
|
|
_080AFBFC:
|
|
strb r0, [r4, #3]
|
|
bx lr
|
|
|
|
thumb_func_start ply_note
|
|
ply_note: @ 0x080AFC00
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r4, r8
|
|
mov r5, sb
|
|
mov r6, sl
|
|
mov r7, fp
|
|
push {r4, r5, r6, r7}
|
|
sub sp, #0x18
|
|
str r1, [sp]
|
|
adds r5, r2, #0
|
|
ldr r1, _080AFDF8 @ =0x03007FF0
|
|
ldr r1, [r1]
|
|
str r1, [sp, #4]
|
|
ldr r1, _080AFDFC @ =gClockTable
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r5, #4]
|
|
ldr r3, [r5, #0x40]
|
|
ldrb r0, [r3]
|
|
cmp r0, #0x80
|
|
bhs _080AFC46
|
|
strb r0, [r5, #5]
|
|
adds r3, #1
|
|
ldrb r0, [r3]
|
|
cmp r0, #0x80
|
|
bhs _080AFC44
|
|
strb r0, [r5, #6]
|
|
adds r3, #1
|
|
ldrb r0, [r3]
|
|
cmp r0, #0x80
|
|
bhs _080AFC44
|
|
ldrb r1, [r5, #4]
|
|
adds r1, r1, r0
|
|
strb r1, [r5, #4]
|
|
adds r3, #1
|
|
_080AFC44:
|
|
str r3, [r5, #0x40]
|
|
_080AFC46:
|
|
movs r0, #0
|
|
str r0, [sp, #0x14]
|
|
adds r4, r5, #0
|
|
adds r4, #0x24
|
|
ldrb r2, [r4]
|
|
movs r0, #0xc0
|
|
tst r0, r2
|
|
beq _080AFC98
|
|
ldrb r3, [r5, #5]
|
|
movs r0, #0x40
|
|
tst r0, r2
|
|
beq _080AFC66
|
|
ldr r1, [r5, #0x2c]
|
|
adds r1, r1, r3
|
|
ldrb r0, [r1]
|
|
b _080AFC68
|
|
_080AFC66:
|
|
adds r0, r3, #0
|
|
_080AFC68:
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #2
|
|
ldr r0, [r5, #0x28]
|
|
adds r1, r1, r0
|
|
mov sb, r1
|
|
mov r6, sb
|
|
ldrb r1, [r6]
|
|
movs r0, #0xc0
|
|
tst r0, r1
|
|
beq _080AFC80
|
|
b _080AFDE6
|
|
_080AFC80:
|
|
movs r0, #0x80
|
|
tst r0, r2
|
|
beq _080AFC9C
|
|
ldrb r1, [r6, #3]
|
|
movs r0, #0x80
|
|
tst r0, r1
|
|
beq _080AFC94
|
|
subs r1, #0xc0
|
|
lsls r1, r1, #1
|
|
str r1, [sp, #0x14]
|
|
_080AFC94:
|
|
ldrb r3, [r6, #1]
|
|
b _080AFC9C
|
|
_080AFC98:
|
|
mov sb, r4
|
|
ldrb r3, [r5, #5]
|
|
_080AFC9C:
|
|
str r3, [sp, #8]
|
|
ldr r6, [sp]
|
|
ldrb r1, [r6, #9]
|
|
ldrb r0, [r5, #0x1d]
|
|
adds r0, r0, r1
|
|
cmp r0, #0xff
|
|
bls _080AFCAC
|
|
movs r0, #0xff
|
|
_080AFCAC:
|
|
str r0, [sp, #0x10]
|
|
mov r6, sb
|
|
ldrb r0, [r6]
|
|
movs r6, #7
|
|
ands r6, r0
|
|
str r6, [sp, #0xc]
|
|
beq _080AFCEC
|
|
ldr r0, [sp, #4]
|
|
ldr r4, [r0, #0x1c]
|
|
cmp r4, #0
|
|
bne _080AFCC4
|
|
b _080AFDE6
|
|
_080AFCC4:
|
|
subs r6, #1
|
|
lsls r0, r6, #6
|
|
adds r4, r4, r0
|
|
ldrb r1, [r4]
|
|
movs r0, #0xc7
|
|
tst r0, r1
|
|
beq _080AFD40
|
|
movs r0, #0x40
|
|
tst r0, r1
|
|
bne _080AFD40
|
|
ldrb r1, [r4, #0x13]
|
|
ldr r0, [sp, #0x10]
|
|
cmp r1, r0
|
|
blo _080AFD40
|
|
beq _080AFCE4
|
|
b _080AFDE6
|
|
_080AFCE4:
|
|
ldr r0, [r4, #0x2c]
|
|
cmp r0, r5
|
|
bhs _080AFD40
|
|
b _080AFDE6
|
|
_080AFCEC:
|
|
ldr r6, [sp, #0x10]
|
|
adds r7, r5, #0
|
|
movs r2, #0
|
|
mov r8, r2
|
|
ldr r4, [sp, #4]
|
|
ldrb r3, [r4, #6]
|
|
adds r4, #0x50
|
|
_080AFCFA:
|
|
ldrb r1, [r4]
|
|
movs r0, #0xc7
|
|
tst r0, r1
|
|
beq _080AFD40
|
|
movs r0, #0x40
|
|
tst r0, r1
|
|
beq _080AFD14
|
|
cmp r2, #0
|
|
bne _080AFD18
|
|
adds r2, #1
|
|
ldrb r6, [r4, #0x13]
|
|
ldr r7, [r4, #0x2c]
|
|
b _080AFD32
|
|
_080AFD14:
|
|
cmp r2, #0
|
|
bne _080AFD34
|
|
_080AFD18:
|
|
ldrb r0, [r4, #0x13]
|
|
cmp r0, r6
|
|
bhs _080AFD24
|
|
adds r6, r0, #0
|
|
ldr r7, [r4, #0x2c]
|
|
b _080AFD32
|
|
_080AFD24:
|
|
bhi _080AFD34
|
|
ldr r0, [r4, #0x2c]
|
|
cmp r0, r7
|
|
bls _080AFD30
|
|
adds r7, r0, #0
|
|
b _080AFD32
|
|
_080AFD30:
|
|
blo _080AFD34
|
|
_080AFD32:
|
|
mov r8, r4
|
|
_080AFD34:
|
|
adds r4, #0x40
|
|
subs r3, #1
|
|
bgt _080AFCFA
|
|
mov r4, r8
|
|
cmp r4, #0
|
|
beq _080AFDE6
|
|
_080AFD40:
|
|
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 _080AFD54
|
|
str r4, [r3, #0x30]
|
|
_080AFD54:
|
|
str r4, [r5, #0x20]
|
|
str r5, [r4, #0x2c]
|
|
ldrb r0, [r5, #0x1b]
|
|
strb r0, [r5, #0x1c]
|
|
cmp r0, r1
|
|
beq _080AFD66
|
|
adds r1, r5, #0
|
|
bl clear_modM
|
|
_080AFD66:
|
|
ldr r0, [sp]
|
|
adds r1, r5, #0
|
|
bl TrkVolPitSet
|
|
ldr r0, [r5, #4]
|
|
str r0, [r4, #0x10]
|
|
ldr r0, [sp, #0x10]
|
|
strb r0, [r4, #0x13]
|
|
ldr r0, [sp, #8]
|
|
strb r0, [r4, #8]
|
|
ldr r0, [sp, #0x14]
|
|
strb r0, [r4, #0x14]
|
|
mov r6, sb
|
|
ldrb r0, [r6]
|
|
strb r0, [r4, #1]
|
|
ldr r7, [r6, #4]
|
|
str r7, [r4, #0x24]
|
|
ldr r0, [r6, #8]
|
|
str r0, [r4, #4]
|
|
ldrh r0, [r5, #0x1e]
|
|
strh r0, [r4, #0xc]
|
|
bl ChnVolSetAsm
|
|
ldrb r1, [r4, #8]
|
|
movs r0, #8
|
|
ldrsb r0, [r5, r0]
|
|
adds r3, r1, r0
|
|
bpl _080AFDA0
|
|
movs r3, #0
|
|
_080AFDA0:
|
|
ldr r6, [sp, #0xc]
|
|
cmp r6, #0
|
|
beq _080AFDCE
|
|
mov r6, sb
|
|
ldrb r0, [r6, #2]
|
|
strb r0, [r4, #0x1e]
|
|
ldrb r1, [r6, #3]
|
|
movs r0, #0x80
|
|
tst r0, r1
|
|
bne _080AFDBA
|
|
movs r0, #0x70
|
|
tst r0, r1
|
|
bne _080AFDBC
|
|
_080AFDBA:
|
|
movs r1, #8
|
|
_080AFDBC:
|
|
strb r1, [r4, #0x1f]
|
|
ldrb r2, [r5, #9]
|
|
adds r1, r3, #0
|
|
ldr r0, [sp, #0xc]
|
|
ldr r3, [sp, #4]
|
|
ldr r3, [r3, #0x30]
|
|
bl sub_080AFB74
|
|
b _080AFDD8
|
|
_080AFDCE:
|
|
ldrb r2, [r5, #9]
|
|
adds r1, r3, #0
|
|
adds r0, r7, #0
|
|
bl MidiKeyToFreq
|
|
_080AFDD8:
|
|
str r0, [r4, #0x20]
|
|
movs r0, #0x80
|
|
strb r0, [r4]
|
|
ldrb r1, [r5]
|
|
movs r0, #0xf0
|
|
ands r0, r1
|
|
strb r0, [r5]
|
|
_080AFDE6:
|
|
add sp, #0x18
|
|
pop {r0, r1, r2, r3, r4, r5, r6, r7}
|
|
mov r8, r0
|
|
mov sb, r1
|
|
mov sl, r2
|
|
mov fp, r3
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080AFDF8: .4byte 0x03007FF0
|
|
_080AFDFC: .4byte gClockTable
|
|
|
|
thumb_func_start ply_endtie
|
|
ply_endtie: @ 0x080AFE00
|
|
push {r4, r5}
|
|
ldr r2, [r1, #0x40]
|
|
ldrb r3, [r2]
|
|
cmp r3, #0x80
|
|
bhs _080AFE12
|
|
strb r3, [r1, #5]
|
|
adds r2, #1
|
|
str r2, [r1, #0x40]
|
|
b _080AFE14
|
|
_080AFE12:
|
|
ldrb r3, [r1, #5]
|
|
_080AFE14:
|
|
ldr r1, [r1, #0x20]
|
|
cmp r1, #0
|
|
beq _080AFE46
|
|
movs r4, #0x83
|
|
movs r5, #0x40
|
|
_080AFE1E:
|
|
ldrb r2, [r1]
|
|
tst r2, r4
|
|
beq _080AFE36
|
|
tst r2, r5
|
|
bne _080AFE36
|
|
ldrb r0, [r1, #0x11]
|
|
cmp r0, r3
|
|
bne _080AFE36
|
|
movs r0, #0x40
|
|
orrs r2, r0
|
|
strb r2, [r1]
|
|
b _080AFE46
|
|
_080AFE36:
|
|
ldr r2, [r1, #0x34]
|
|
cmp r2, r1
|
|
bne _080AFE40
|
|
movs r2, #0
|
|
str r2, [r1, #0x34]
|
|
_080AFE40:
|
|
adds r1, r2, #0
|
|
cmp r1, #0
|
|
bne _080AFE1E
|
|
_080AFE46:
|
|
pop {r4, r5}
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start clear_modM
|
|
clear_modM: @ 0x080AFE4C
|
|
movs r2, #0
|
|
strb r2, [r1, #0x16]
|
|
strb r2, [r1, #0x1a]
|
|
ldrb r2, [r1, #0x18]
|
|
cmp r2, #0
|
|
bne _080AFE5C
|
|
movs r2, #0xc
|
|
b _080AFE5E
|
|
_080AFE5C:
|
|
movs r2, #3
|
|
_080AFE5E:
|
|
ldrb r3, [r1]
|
|
orrs r3, r2
|
|
strb r3, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_080AFE68
|
|
sub_080AFE68: @ 0x080AFE68
|
|
ldr r2, [r1, #0x40]
|
|
adds r3, r2, #1
|
|
str r3, [r1, #0x40]
|
|
ldrb r3, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_lfos
|
|
ply_lfos: @ 0x080AFE74
|
|
mov ip, lr
|
|
bl sub_080AFE68
|
|
strb r3, [r1, #0x19]
|
|
cmp r3, #0
|
|
bne _080AFE84
|
|
bl clear_modM
|
|
_080AFE84:
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_mod
|
|
ply_mod: @ 0x080AFE88
|
|
mov ip, lr
|
|
bl sub_080AFE68
|
|
strb r3, [r1, #0x17]
|
|
cmp r3, #0
|
|
bne _080AFE98
|
|
bl clear_modM
|
|
_080AFE98:
|
|
bx ip
|
|
.align 2, 0
|