mirror of
https://github.com/SAT-R/sa2.git
synced 2026-10-28 09:43:38 +00:00
1630 lines
26 KiB
ArmAsm
1630 lines
26 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
.arm
|
|
|
|
thumb_func_start umul3232H32
|
|
umul3232H32: @ 0x080945E8
|
|
add r2, pc, #0x0 @ =__umul3232H32
|
|
bx r2
|
|
|
|
arm_func_start __umul3232H32
|
|
__umul3232H32: @ 0x080945EC
|
|
umull r2, r3, r0, r1
|
|
add r0, r3, #0
|
|
bx lr
|
|
|
|
thumb_func_start SoundMain
|
|
SoundMain: @ 0x080945F8
|
|
ldr r0, _08094664 @ =0x03007ff0
|
|
ldr r0, [r0]
|
|
ldr r2, _08094668 @ =0x68736D53
|
|
ldr r3, [r0]
|
|
cmp r2, r3
|
|
beq _08094606
|
|
bx lr
|
|
_08094606:
|
|
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 _0809462A
|
|
ldr r2, _08094670 @ =0x04000006
|
|
ldrb r2, [r2]
|
|
cmp r2, #0xa0
|
|
bhs _08094628
|
|
adds r2, #0xe4
|
|
_08094628:
|
|
adds r1, r1, r2
|
|
_0809462A:
|
|
str r1, [sp, #0x14]
|
|
ldr r3, [r0, #0x20]
|
|
cmp r3, #0
|
|
beq _0809463A
|
|
ldr r0, [r0, #0x24]
|
|
bl sub_08094A1A
|
|
ldr r0, [sp, #0x18]
|
|
_0809463A:
|
|
ldr r3, [r0, #0x28]
|
|
bl sub_08094A1A
|
|
ldr r0, [sp, #0x18]
|
|
ldr r3, [r0, #0x10]
|
|
mov r8, r3
|
|
ldr r5, _08094674 @ =0x00000350
|
|
adds r5, r5, r0
|
|
ldrb r4, [r0, #4]
|
|
subs r7, r4, #1
|
|
bls _0809465A
|
|
ldrb r1, [r0, #0xb]
|
|
subs r1, r1, r7
|
|
mov r2, r8
|
|
muls r2, r1, r2
|
|
adds r5, r5, r2
|
|
_0809465A:
|
|
str r5, [sp, #8]
|
|
ldr r6, _08094678 @ =0x00000630
|
|
ldr r3, _0809466C @ =gUnknown_03000001
|
|
bx r3
|
|
.align 2, 0
|
|
_08094664: .4byte 0x03007ff0
|
|
_08094668: .4byte 0x68736D53
|
|
_0809466C: .4byte gUnknown_03000001
|
|
_08094670: .4byte 0x04000006
|
|
_08094674: .4byte 0x00000350
|
|
_08094678: .4byte 0x00000630
|
|
|
|
thumb_func_start SoundMainRAM
|
|
SoundMainRAM: @ 0x0809467C
|
|
ldrb r3, [r0, #5]
|
|
cmp r3, #0
|
|
beq SoundMainRAM_NoReverb
|
|
add r1, pc, #0x4 @ =SoundMainRAM_Reverb
|
|
bx r1
|
|
.align 2, 0
|
|
|
|
arm_func_start SoundMainRAM_Reverb
|
|
SoundMainRAM_Reverb: @ 0x08094688
|
|
cmp r4, #2
|
|
addeq r7, r0, #0x350
|
|
addne r7, r5, r8
|
|
mov r4, r8
|
|
_08094698:
|
|
ldrsb r0, [r5, r6]
|
|
ldrsb r1, [r5]
|
|
add r0, r0, r1
|
|
ldrsb r1, [r7, r6]
|
|
add r0, r0, r1
|
|
ldrsb r1, [r7], #1
|
|
add r0, r0, r1
|
|
mul r1, r0, r3
|
|
asr r0, r1, #9
|
|
tst r0, #0x80
|
|
addne r0, r0, #1
|
|
strb r0, [r5, r6]
|
|
strb r0, [r5], #1
|
|
subs r4, r4, #1
|
|
bgt _08094698
|
|
add r0, pc, #0x2F @ =SoundMainRAM_ChanLoop
|
|
bx r0
|
|
|
|
thumb_func_start SoundMainRAM_NoReverb
|
|
SoundMainRAM_NoReverb: @ 0x080946DC
|
|
movs r0, #0
|
|
mov r1, r8
|
|
adds r6, r6, r5
|
|
lsrs r1, r1, #3
|
|
blo _080946EA
|
|
stm r5!, {r0}
|
|
stm r6!, {r0}
|
|
_080946EA:
|
|
lsrs r1, r1, #1
|
|
blo _080946F6
|
|
stm r5!, {r0}
|
|
stm r6!, {r0}
|
|
stm r5!, {r0}
|
|
stm r6!, {r0}
|
|
_080946F6:
|
|
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 _080946F6
|
|
|
|
non_word_aligned_thumb_func_start SoundMainRAM_ChanLoop
|
|
SoundMainRAM_ChanLoop: @ 0x0809470A
|
|
ldr r4, [sp, #0x18]
|
|
ldr r0, [r4, #0x18]
|
|
mov ip, r0
|
|
ldrb r0, [r4, #6]
|
|
adds r4, #0x50
|
|
_08094714:
|
|
str r0, [sp, #4]
|
|
ldr r3, [r4, #0x24]
|
|
ldr r0, [sp, #0x14]
|
|
cmp r0, #0
|
|
beq _08094734
|
|
ldr r1, _08094730 @ =0x04000006
|
|
ldrb r1, [r1]
|
|
cmp r1, #0xa0
|
|
bhs _08094728
|
|
adds r1, #0xe4
|
|
_08094728:
|
|
cmp r1, r0
|
|
blo _08094734
|
|
b _08094A06
|
|
.align 2, 0
|
|
_08094730: .4byte 0x04000006
|
|
_08094734:
|
|
ldrb r6, [r4]
|
|
movs r0, #0xc7
|
|
tst r0, r6
|
|
bne _0809473E
|
|
b sub_080949FC
|
|
_0809473E:
|
|
movs r0, #0x80
|
|
tst r0, r6
|
|
beq _0809476E
|
|
movs r0, #0x40
|
|
tst r0, r6
|
|
bne _0809477E
|
|
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 _080947C6
|
|
movs r0, #0x10
|
|
orrs r6, r0
|
|
strb r6, [r4]
|
|
b _080947C6
|
|
_0809476E:
|
|
ldrb r5, [r4, #9]
|
|
movs r0, #4
|
|
tst r0, r6
|
|
beq _08094784
|
|
ldrb r0, [r4, #0xd]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xd]
|
|
bhi _080947D4
|
|
_0809477E:
|
|
movs r0, #0
|
|
strb r0, [r4]
|
|
b sub_080949FC
|
|
_08094784:
|
|
movs r0, #0x40
|
|
tst r0, r6
|
|
beq _080947A4
|
|
ldrb r0, [r4, #7]
|
|
muls r5, r0, r5
|
|
lsrs r5, r5, #8
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r5, r0
|
|
bhi _080947D4
|
|
_08094796:
|
|
ldrb r5, [r4, #0xc]
|
|
cmp r5, #0
|
|
beq _0809477E
|
|
movs r0, #4
|
|
orrs r6, r0
|
|
strb r6, [r4]
|
|
b _080947D4
|
|
_080947A4:
|
|
movs r2, #3
|
|
ands r2, r6
|
|
cmp r2, #2
|
|
bne _080947C2
|
|
ldrb r0, [r4, #5]
|
|
muls r5, r0, r5
|
|
lsrs r5, r5, #8
|
|
ldrb r0, [r4, #6]
|
|
cmp r5, r0
|
|
bhi _080947D4
|
|
adds r5, r0, #0
|
|
beq _08094796
|
|
subs r6, #1
|
|
strb r6, [r4]
|
|
b _080947D4
|
|
_080947C2:
|
|
cmp r2, #3
|
|
bne _080947D4
|
|
_080947C6:
|
|
ldrb r0, [r4, #4]
|
|
adds r5, r5, r0
|
|
cmp r5, #0xff
|
|
blo _080947D4
|
|
movs r5, #0xff
|
|
subs r6, #1
|
|
strb r6, [r4]
|
|
_080947D4:
|
|
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]
|
|
muls r0, r5, r0
|
|
lsrs r0, r0, #8
|
|
strb r0, [r4, #0xa]
|
|
ldrb r0, [r4, #3]
|
|
muls r0, r5, r0
|
|
lsrs r0, r0, #8
|
|
strb r0, [r4, #0xb]
|
|
movs r0, #0x10
|
|
ands r0, r6
|
|
str r0, [sp, #0x10]
|
|
beq _08094808
|
|
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]
|
|
_08094808:
|
|
ldr r5, [sp, #8]
|
|
ldr r2, [r4, #0x18]
|
|
ldr r3, [r4, #0x28]
|
|
add r0, pc, #0x4 @ =sub_08094814
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
arm_func_start sub_08094814
|
|
sub_08094814: @ 0x08094814
|
|
str r8, [sp]
|
|
ldrb sl, [r4, #0xa]
|
|
ldrb fp, [r4, #0xb]
|
|
lsl sl, sl, #0x10
|
|
lsl fp, fp, #0x10
|
|
ldrb r0, [r4, #1]
|
|
tst r0, #8
|
|
beq _08094954
|
|
_08094834:
|
|
cmp r2, #4
|
|
ble _080948A4
|
|
subs r2, r2, r8
|
|
movgt lr, #0
|
|
bgt _08094860
|
|
mov lr, r8
|
|
add r2, r2, r8
|
|
sub r8, r2, #4
|
|
sub lr, lr, r8
|
|
ands r2, r2, #3
|
|
moveq r2, #4
|
|
_08094860:
|
|
ldr r6, [r5]
|
|
ldr r7, [r5, #0x630]
|
|
_08094868:
|
|
ldrsb r0, [r3], #1
|
|
mul r1, sl, r0
|
|
bic r1, r1, #0xff0000
|
|
add r6, r1, r6, ror #8
|
|
mul r1, fp, r0
|
|
bic r1, r1, #0xff0000
|
|
add r7, r1, r7, ror #8
|
|
adds r5, r5, #0x40000000
|
|
blo _08094868
|
|
str r7, [r5, #0x630]
|
|
str r6, [r5], #4
|
|
subs r8, r8, #4
|
|
bgt _08094860
|
|
adds r8, r8, lr
|
|
beq _080949E8
|
|
_080948A4:
|
|
ldr r6, [r5]
|
|
ldr r7, [r5, #0x630]
|
|
_080948AC:
|
|
ldrsb r0, [r3], #1
|
|
mul r1, sl, r0
|
|
bic r1, r1, #0xff0000
|
|
add r6, r1, r6, ror #8
|
|
mul r1, fp, r0
|
|
bic r1, r1, #0xff0000
|
|
add r7, r1, r7, ror #8
|
|
subs r2, r2, #1
|
|
beq _0809491C
|
|
_080948D0:
|
|
adds r5, r5, #0x40000000
|
|
blo _080948AC
|
|
str r7, [r5, #0x630]
|
|
str r6, [r5], #4
|
|
subs r8, r8, #4
|
|
bgt _08094834
|
|
b _080949E8
|
|
_080948EC:
|
|
ldr r0, [sp, #0x18]
|
|
cmp r0, #0
|
|
beq _08094910
|
|
ldr r3, [sp, #0x14]
|
|
rsb sb, r2, #0
|
|
_08094900:
|
|
adds r2, r0, r2
|
|
bgt _080949B8
|
|
sub sb, sb, r0
|
|
b _08094900
|
|
_08094910:
|
|
pop {r4, ip}
|
|
mov r2, #0
|
|
b _0809492C
|
|
_0809491C:
|
|
ldr r2, [sp, #0x10]
|
|
cmp r2, #0
|
|
ldrne r3, [sp, #0xc]
|
|
bne _080948D0
|
|
_0809492C:
|
|
strb r2, [r4]
|
|
lsr r0, r5, #0x1e
|
|
bic r5, r5, #0xc0000000
|
|
rsb r0, r0, #3
|
|
lsl r0, r0, #3
|
|
ror r6, r6, r0
|
|
ror r7, r7, r0
|
|
str r7, [r5, #0x630]
|
|
str r6, [r5], #4
|
|
b _080949F0
|
|
_08094954:
|
|
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
|
|
_08094970:
|
|
ldr r6, [r5]
|
|
ldr r7, [r5, #0x630]
|
|
_08094978:
|
|
mul sb, lr, r1
|
|
add sb, r0, sb, asr #23
|
|
mul ip, sl, sb
|
|
bic ip, ip, #0xff0000
|
|
add r6, ip, r6, ror #8
|
|
mul ip, fp, sb
|
|
bic ip, ip, #0xff0000
|
|
add r7, ip, r7, ror #8
|
|
add lr, lr, r4
|
|
lsrs sb, lr, #0x17
|
|
beq _080949C4
|
|
bic lr, lr, #0x3f800000
|
|
subs r2, r2, sb
|
|
ble _080948EC
|
|
subs sb, sb, #1
|
|
addeq r0, r0, r1
|
|
_080949B8:
|
|
ldrsbne r0, [r3, sb]!
|
|
ldrsb r1, [r3, #1]!
|
|
sub r1, r1, r0
|
|
_080949C4:
|
|
adds r5, r5, #0x40000000
|
|
blo _08094978
|
|
str r7, [r5, #0x630]
|
|
str r6, [r5], #4
|
|
subs r8, r8, #4
|
|
bgt _08094970
|
|
sub r3, r3, #1
|
|
pop {r4, ip}
|
|
str lr, [r4, #0x1c]
|
|
_080949E8:
|
|
str r2, [r4, #0x18]
|
|
str r3, [r4, #0x28]
|
|
_080949F0:
|
|
ldr r8, [sp]
|
|
add r0, pc, #0x1 @ =sub_080949FC
|
|
bx r0
|
|
|
|
thumb_func_start sub_080949FC
|
|
sub_080949FC: @ 0x080949FC
|
|
ldr r0, [sp, #4]
|
|
subs r0, #1
|
|
ble _08094A06
|
|
adds r4, #0x40
|
|
b _08094714
|
|
_08094A06:
|
|
ldr r0, [sp, #0x18]
|
|
ldr r3, _08094A1C @ =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_08094A1A
|
|
sub_08094A1A: @ 0x08094A1A
|
|
bx r3
|
|
.align 2, 0
|
|
_08094A1C: .4byte 0x68736D53
|
|
|
|
thumb_func_start SoundMainBTM
|
|
SoundMainBTM: @ 0x0814F810
|
|
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: @ 0x08094A38
|
|
ldr r3, [r0, #0x2c]
|
|
cmp r3, #0
|
|
beq _08094A56
|
|
ldr r1, [r0, #0x34]
|
|
ldr r2, [r0, #0x30]
|
|
cmp r2, #0
|
|
beq _08094A4A
|
|
str r1, [r2, #0x34]
|
|
b _08094A4C
|
|
_08094A4A:
|
|
str r1, [r3, #0x20]
|
|
_08094A4C:
|
|
cmp r1, #0
|
|
beq _08094A52
|
|
str r2, [r1, #0x30]
|
|
_08094A52:
|
|
movs r1, #0
|
|
str r1, [r0, #0x2c]
|
|
_08094A56:
|
|
bx lr
|
|
|
|
thumb_func_start ply_fine
|
|
ply_fine:
|
|
push {r4, r5, lr}
|
|
adds r5, r1, #0
|
|
ldr r4, [r5, #0x20]
|
|
cmp r4, #0
|
|
beq _08094A7C
|
|
_08094A62:
|
|
ldrb r1, [r4]
|
|
movs r0, #0xc7
|
|
tst r0, r1
|
|
beq _08094A70
|
|
movs r0, #0x40
|
|
orrs r1, r0
|
|
strb r1, [r4]
|
|
_08094A70:
|
|
adds r0, r4, #0
|
|
bl RealClearChain
|
|
ldr r4, [r4, #0x34]
|
|
cmp r4, #0
|
|
bne _08094A62
|
|
_08094A7C:
|
|
movs r0, #0
|
|
strb r0, [r5]
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
thumb_func_start MPlayJumpTableCopy
|
|
MPlayJumpTableCopy: @ 0x08094A88
|
|
mov ip, lr
|
|
movs r1, #0x24
|
|
ldr r2, _08094AB8 @ =gMPlayJumpTableTemplate
|
|
_08094A8E:
|
|
ldr r3, [r2]
|
|
bl _08094AA2
|
|
stm r0!, {r3}
|
|
adds r2, #4
|
|
subs r1, #1
|
|
bgt _08094A8E
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_8094AA0
|
|
sub_8094AA0: @ 0x08094AA0
|
|
ldrb r3, [r2]
|
|
_08094AA2:
|
|
push {r0}
|
|
lsrs r0, r2, #0x19
|
|
bne _08094AB4
|
|
ldr r0, _08094AB8 @ =gMPlayJumpTableTemplate
|
|
cmp r2, r0
|
|
blo _08094AB2
|
|
lsrs r0, r2, #0xe
|
|
beq _08094AB4
|
|
_08094AB2:
|
|
movs r3, #0
|
|
_08094AB4:
|
|
pop {r0}
|
|
bx lr
|
|
.align 2, 0
|
|
_08094AB8: .4byte gMPlayJumpTableTemplate
|
|
|
|
thumb_func_start sub_8094ABC
|
|
sub_8094ABC: @ 0x08094ABC
|
|
ldr r2, [r1, #0x40]
|
|
|
|
non_word_aligned_thumb_func_start sub_08094ABE
|
|
sub_08094ABE: @ 0x08094ABE
|
|
adds r3, r2, #1
|
|
str r3, [r1, #0x40]
|
|
ldrb r3, [r2]
|
|
b _08094AA2
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_goto
|
|
ply_goto:
|
|
push {lr}
|
|
_08094ACA:
|
|
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_8094AA0
|
|
orrs r0, r3
|
|
str r0, [r1, #0x40]
|
|
pop {r0}
|
|
bx r0
|
|
|
|
thumb_func_start ply_patt
|
|
ply_patt: @ 0x08094AE8
|
|
ldrb r2, [r1, #2]
|
|
cmp r2, #3
|
|
bhs _08094B00
|
|
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
|
|
_08094B00:
|
|
b ply_fine
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_pend
|
|
ply_pend: @ 0x08094B04
|
|
ldrb r2, [r1, #2]
|
|
cmp r2, #0
|
|
beq _08094B16
|
|
subs r2, #1
|
|
strb r2, [r1, #2]
|
|
lsls r2, r2, #2
|
|
adds r3, r1, r2
|
|
ldr r2, [r3, #0x44]
|
|
str r2, [r1, #0x40]
|
|
_08094B16:
|
|
bx lr
|
|
|
|
thumb_func_start ply_rept
|
|
ply_rept: @ 0x08094B18
|
|
push {lr}
|
|
ldr r2, [r1, #0x40]
|
|
ldrb r3, [r2]
|
|
cmp r3, #0
|
|
bne _08094B28
|
|
adds r2, #1
|
|
str r2, [r1, #0x40]
|
|
b _08094ACA
|
|
_08094B28:
|
|
ldrb r3, [r1, #3]
|
|
adds r3, #1
|
|
strb r3, [r1, #3]
|
|
mov ip, r3
|
|
bl sub_8094ABC
|
|
cmp ip, r3
|
|
bhs _08094B3A
|
|
b _08094ACA
|
|
_08094B3A:
|
|
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: @ 0x08094B48
|
|
mov ip, lr
|
|
bl sub_8094ABC
|
|
strb r3, [r1, #0x1d]
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_tempo
|
|
ply_tempo: @ 0x08094B54
|
|
mov ip, lr
|
|
bl sub_8094ABC
|
|
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: @ 0x08094B68
|
|
mov ip, lr
|
|
bl sub_8094ABC
|
|
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: @ 0x08094B7C
|
|
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 _08094AA2
|
|
str r3, [r1, #0x24]
|
|
ldr r3, [r2, #4]
|
|
bl _08094AA2
|
|
str r3, [r1, #0x28]
|
|
ldr r3, [r2, #8]
|
|
bl _08094AA2
|
|
str r3, [r1, #0x2c]
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_vol
|
|
ply_vol: @ 0x08094BAC
|
|
mov ip, lr
|
|
bl sub_8094ABC
|
|
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: @ 0x08094BC0
|
|
mov ip, lr
|
|
bl sub_8094ABC
|
|
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: @ 0x08094BD4
|
|
mov ip, lr
|
|
bl sub_8094ABC
|
|
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: @ 0x08094BE8
|
|
mov ip, lr
|
|
bl sub_8094ABC
|
|
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: @ 0x08094BFC
|
|
mov ip, lr
|
|
bl sub_8094ABC
|
|
strb r3, [r1, #0x1b]
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_modt
|
|
ply_modt: @ 0x08094C08
|
|
mov ip, lr
|
|
bl sub_8094ABC
|
|
ldrb r0, [r1, #0x18]
|
|
cmp r0, r3
|
|
beq _08094C1E
|
|
strb r3, [r1, #0x18]
|
|
ldrb r3, [r1]
|
|
movs r2, #0xf
|
|
orrs r3, r2
|
|
strb r3, [r1]
|
|
_08094C1E:
|
|
bx ip
|
|
|
|
thumb_func_start ply_tune
|
|
ply_tune: @ 0x08094C20
|
|
mov ip, lr
|
|
bl sub_8094ABC
|
|
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: @ 0x08094C34
|
|
mov ip, lr
|
|
ldr r2, [r1, #0x40]
|
|
ldrb r3, [r2]
|
|
adds r2, #1
|
|
ldr r0, _08094C48 @ =0x04000060
|
|
adds r0, r0, r3
|
|
bl sub_08094ABE
|
|
|
|
thumb_func_start sub_8094C44
|
|
sub_8094C44: @ 0x08094C44
|
|
strb r3, [r0]
|
|
bx ip
|
|
.align 2, 0
|
|
_08094C48: .4byte 0x04000060
|
|
|
|
thumb_func_start m4aSoundVSync
|
|
m4aSoundVSync: @ 0x08094C4C
|
|
ldr r0, _08094EF8 @ =0x03007ff0
|
|
ldr r0, [r0]
|
|
ldr r2, _08094EFC @ =0x68736D53
|
|
ldr r3, [r0]
|
|
subs r3, r3, r2
|
|
cmp r3, #1
|
|
bhi _08094C8C
|
|
ldrb r1, [r0, #4]
|
|
subs r1, #1
|
|
strb r1, [r0, #4]
|
|
bgt _08094C8C
|
|
ldrb r1, [r0, #0xb]
|
|
strb r1, [r0, #4]
|
|
ldr r2, _08094C90 @ =0x040000BC
|
|
ldr r1, [r2, #8]
|
|
lsls r1, r1, #7
|
|
blo _08094C72
|
|
ldr r1, _08094C94 @ =0x84400004
|
|
str r1, [r2, #8]
|
|
_08094C72:
|
|
ldr r1, [r2, #0x14]
|
|
lsls r1, r1, #7
|
|
blo _08094C7C
|
|
ldr r1, _08094C94 @ =0x84400004
|
|
str r1, [r2, #0x14]
|
|
_08094C7C:
|
|
movs r1, #4
|
|
lsls r1, r1, #8
|
|
strh r1, [r2, #0xa]
|
|
strh r1, [r2, #0x16]
|
|
movs r1, #0xb6
|
|
lsls r1, r1, #8
|
|
strh r1, [r2, #0xa]
|
|
strh r1, [r2, #0x16]
|
|
_08094C8C:
|
|
bx lr
|
|
.align 2, 0
|
|
_08094C90: .4byte 0x040000BC
|
|
_08094C94: .4byte 0x84400004
|
|
|
|
thumb_func_start MPlayMain
|
|
MPlayMain: @ 0x08094C98
|
|
ldr r2, _08094EFC @ =0x68736D53
|
|
ldr r3, [r0, #0x34]
|
|
cmp r2, r3
|
|
beq _08094CA2
|
|
bx lr
|
|
_08094CA2:
|
|
adds r3, #1
|
|
str r3, [r0, #0x34]
|
|
push {r0, lr}
|
|
ldr r3, [r0, #0x38]
|
|
cmp r3, #0
|
|
beq _08094CB4
|
|
ldr r0, [r0, #0x3c]
|
|
bl sub_08094EF0
|
|
_08094CB4:
|
|
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 _08094CCC
|
|
b _08094EE0
|
|
_08094CCC:
|
|
ldr r0, _08094EF8 @ =0x03007ff0
|
|
ldr r0, [r0]
|
|
mov r8, r0
|
|
adds r0, r7, #0
|
|
bl FadeOutBody
|
|
ldr r0, [r7, #4]
|
|
cmp r0, #0
|
|
bge _08094CE0
|
|
b _08094EE0
|
|
_08094CE0:
|
|
ldrh r0, [r7, #0x22]
|
|
ldrh r1, [r7, #0x20]
|
|
adds r0, r0, r1
|
|
b _08094E30
|
|
_08094CE8:
|
|
ldrb r6, [r7, #8]
|
|
ldr r5, [r7, #0x2c]
|
|
movs r3, #1
|
|
movs r4, #0
|
|
_08094CF0:
|
|
ldrb r0, [r5]
|
|
movs r1, #0x80
|
|
tst r1, r0
|
|
bne _08094CFA
|
|
b _08094E0C
|
|
_08094CFA:
|
|
mov sl, r3
|
|
orrs r4, r3
|
|
mov fp, r4
|
|
ldr r4, [r5, #0x20]
|
|
cmp r4, #0
|
|
beq _08094D2E
|
|
_08094D06:
|
|
ldrb r1, [r4]
|
|
movs r0, #0xc7
|
|
tst r0, r1
|
|
beq _08094D22
|
|
ldrb r0, [r4, #0x10]
|
|
cmp r0, #0
|
|
beq _08094D28
|
|
subs r0, #1
|
|
strb r0, [r4, #0x10]
|
|
bne _08094D28
|
|
movs r0, #0x40
|
|
orrs r1, r0
|
|
strb r1, [r4]
|
|
b _08094D28
|
|
_08094D22:
|
|
adds r0, r4, #0
|
|
bl ClearChain
|
|
_08094D28:
|
|
ldr r4, [r4, #0x34]
|
|
cmp r4, #0
|
|
bne _08094D06
|
|
_08094D2E:
|
|
ldrb r3, [r5]
|
|
movs r0, #0x40
|
|
tst r0, r3
|
|
beq _08094DAC
|
|
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 _08094DAC
|
|
_08094D54:
|
|
ldr r2, [r5, #0x40]
|
|
ldrb r1, [r2]
|
|
cmp r1, #0x80
|
|
bhs _08094D60
|
|
ldrb r1, [r5, #7]
|
|
b _08094D6A
|
|
_08094D60:
|
|
adds r2, #1
|
|
str r2, [r5, #0x40]
|
|
cmp r1, #0xbd
|
|
blo _08094D6A
|
|
strb r1, [r5, #7]
|
|
_08094D6A:
|
|
cmp r1, #0xcf
|
|
blo _08094D80
|
|
mov r0, r8
|
|
ldr r3, [r0, #0x38]
|
|
adds r0, r1, #0
|
|
subs r0, #0xcf
|
|
adds r1, r7, #0
|
|
adds r2, r5, #0
|
|
bl sub_08094EF0
|
|
b _08094DAC
|
|
_08094D80:
|
|
cmp r1, #0xb0
|
|
bls _08094DA2
|
|
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_08094EF0
|
|
ldrb r0, [r5]
|
|
cmp r0, #0
|
|
beq _08094E08
|
|
b _08094DAC
|
|
_08094DA2:
|
|
ldr r0, _08094EF4 @ =gClockTable
|
|
subs r1, #0x80
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
strb r0, [r5, #1]
|
|
_08094DAC:
|
|
ldrb r0, [r5, #1]
|
|
cmp r0, #0
|
|
beq _08094D54
|
|
subs r0, #1
|
|
strb r0, [r5, #1]
|
|
ldrb r1, [r5, #0x19]
|
|
cmp r1, #0
|
|
beq _08094E08
|
|
ldrb r0, [r5, #0x17]
|
|
cmp r0, #0
|
|
beq _08094E08
|
|
ldrb r0, [r5, #0x1c]
|
|
cmp r0, #0
|
|
beq _08094DCE
|
|
subs r0, #1
|
|
strb r0, [r5, #0x1c]
|
|
b _08094E08
|
|
_08094DCE:
|
|
ldrb r0, [r5, #0x1a]
|
|
adds r0, r0, r1
|
|
strb r0, [r5, #0x1a]
|
|
adds r1, r0, #0
|
|
subs r0, #0x40
|
|
lsls r0, r0, #0x18
|
|
bpl _08094DE2
|
|
lsls r2, r1, #0x18
|
|
asrs r2, r2, #0x18
|
|
b _08094DE6
|
|
_08094DE2:
|
|
movs r0, #0x80
|
|
subs r2, r0, r1
|
|
_08094DE6:
|
|
ldrb r0, [r5, #0x17]
|
|
muls r0, r2, r0
|
|
asrs r2, r0, #6
|
|
ldrb r0, [r5, #0x16]
|
|
eors r0, r2
|
|
lsls r0, r0, #0x18
|
|
beq _08094E08
|
|
strb r2, [r5, #0x16]
|
|
ldrb r0, [r5]
|
|
ldrb r1, [r5, #0x18]
|
|
cmp r1, #0
|
|
bne _08094E02
|
|
movs r1, #0xc
|
|
b _08094E04
|
|
_08094E02:
|
|
movs r1, #3
|
|
_08094E04:
|
|
orrs r0, r1
|
|
strb r0, [r5]
|
|
_08094E08:
|
|
mov r3, sl
|
|
mov r4, fp
|
|
_08094E0C:
|
|
subs r6, #1
|
|
ble _08094E18
|
|
movs r0, #0x50
|
|
adds r5, r5, r0
|
|
lsls r3, r3, #1
|
|
b _08094CF0
|
|
_08094E18:
|
|
ldr r0, [r7, #0xc]
|
|
adds r0, #1
|
|
str r0, [r7, #0xc]
|
|
cmp r4, #0
|
|
bne _08094E2A
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x18
|
|
str r0, [r7, #4]
|
|
b _08094EE0
|
|
_08094E2A:
|
|
str r4, [r7, #4]
|
|
ldrh r0, [r7, #0x22]
|
|
subs r0, #0x96
|
|
_08094E30:
|
|
strh r0, [r7, #0x22]
|
|
cmp r0, #0x96
|
|
blo _08094E38
|
|
b _08094CE8
|
|
_08094E38:
|
|
ldrb r2, [r7, #8]
|
|
ldr r5, [r7, #0x2c]
|
|
_08094E3C:
|
|
ldrb r0, [r5]
|
|
movs r1, #0x80
|
|
tst r1, r0
|
|
beq _08094ED6
|
|
movs r1, #0xf
|
|
tst r1, r0
|
|
beq _08094ED6
|
|
mov sb, r2
|
|
adds r0, r7, #0
|
|
adds r1, r5, #0
|
|
bl TrkVolPitSet
|
|
ldr r4, [r5, #0x20]
|
|
cmp r4, #0
|
|
beq _08094ECC
|
|
_08094E5A:
|
|
ldrb r1, [r4]
|
|
movs r0, #0xc7
|
|
tst r0, r1
|
|
bne _08094E6A
|
|
adds r0, r4, #0
|
|
bl ClearChain
|
|
b _08094EC6
|
|
_08094E6A:
|
|
ldrb r0, [r4, #1]
|
|
movs r6, #7
|
|
ands r6, r0
|
|
ldrb r3, [r5]
|
|
movs r0, #3
|
|
tst r0, r3
|
|
beq _08094E88
|
|
bl sub_8094F44
|
|
cmp r6, #0
|
|
beq _08094E88
|
|
ldrb r0, [r4, #0x1d]
|
|
movs r1, #1
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x1d]
|
|
_08094E88:
|
|
ldrb r3, [r5]
|
|
movs r0, #0xc
|
|
tst r0, r3
|
|
beq _08094EC6
|
|
ldrb r1, [r4, #8]
|
|
movs r0, #8
|
|
ldrsb r0, [r5, r0]
|
|
adds r2, r1, r0
|
|
bpl _08094E9C
|
|
movs r2, #0
|
|
_08094E9C:
|
|
cmp r6, #0
|
|
beq _08094EBA
|
|
mov r0, r8
|
|
ldr r3, [r0, #0x30]
|
|
adds r1, r2, #0
|
|
ldrb r2, [r5, #9]
|
|
adds r0, r6, #0
|
|
bl sub_08094EF0
|
|
str r0, [r4, #0x20]
|
|
ldrb r0, [r4, #0x1d]
|
|
movs r1, #2
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x1d]
|
|
b _08094EC6
|
|
_08094EBA:
|
|
adds r1, r2, #0
|
|
ldrb r2, [r5, #9]
|
|
ldr r0, [r4, #0x24]
|
|
bl MidiKeyToFreq
|
|
str r0, [r4, #0x20]
|
|
_08094EC6:
|
|
ldr r4, [r4, #0x34]
|
|
cmp r4, #0
|
|
bne _08094E5A
|
|
_08094ECC:
|
|
ldrb r0, [r5]
|
|
movs r1, #0xf0
|
|
ands r0, r1
|
|
strb r0, [r5]
|
|
mov r2, sb
|
|
_08094ED6:
|
|
subs r2, #1
|
|
ble _08094EE0
|
|
movs r0, #0x50
|
|
adds r5, r5, r0
|
|
bgt _08094E3C
|
|
_08094EE0:
|
|
ldr r0, _08094EFC @ =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_08094EF0
|
|
sub_08094EF0: @ 0x08094EF0
|
|
bx r3
|
|
.align 2, 0
|
|
_08094EF4: .4byte gClockTable
|
|
_08094EF8: .4byte 0x03007ff0
|
|
_08094EFC: .4byte 0x68736D53
|
|
|
|
thumb_func_start TrackStop
|
|
TrackStop: @ 0x08094F00
|
|
push {r4, r5, r6, lr}
|
|
adds r5, r1, #0
|
|
ldrb r1, [r5]
|
|
movs r0, #0x80
|
|
tst r0, r1
|
|
beq _08094F38
|
|
ldr r4, [r5, #0x20]
|
|
cmp r4, #0
|
|
beq _08094F36
|
|
movs r6, #0
|
|
_08094F14:
|
|
ldrb r0, [r4]
|
|
cmp r0, #0
|
|
beq _08094F2E
|
|
ldrb r0, [r4, #1]
|
|
movs r3, #7
|
|
ands r0, r3
|
|
beq _08094F2C
|
|
ldr r3, _08094F40 @ =0x03007ff0
|
|
ldr r3, [r3]
|
|
ldr r3, [r3, #0x2c]
|
|
bl sub_08094EF0
|
|
_08094F2C:
|
|
strb r6, [r4]
|
|
_08094F2E:
|
|
str r6, [r4, #0x2c]
|
|
ldr r4, [r4, #0x34]
|
|
cmp r4, #0
|
|
bne _08094F14
|
|
_08094F36:
|
|
str r4, [r5, #0x20]
|
|
_08094F38:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08094F40: .4byte 0x03007ff0
|
|
|
|
thumb_func_start sub_8094F44
|
|
sub_8094F44: @ 0x08094F44
|
|
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 _08094F5C
|
|
movs r0, #0xff
|
|
_08094F5C:
|
|
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 _08094F70
|
|
movs r0, #0xff
|
|
_08094F70:
|
|
strb r0, [r4, #3]
|
|
bx lr
|
|
|
|
thumb_func_start ply_note
|
|
ply_note: @ 0x08094F74
|
|
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, _0809516C @ =0x03007ff0
|
|
ldr r1, [r1]
|
|
str r1, [sp, #4]
|
|
ldr r1, _08095170 @ =gClockTable
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r5, #4]
|
|
ldr r3, [r5, #0x40]
|
|
ldrb r0, [r3]
|
|
cmp r0, #0x80
|
|
bhs _08094FBA
|
|
strb r0, [r5, #5]
|
|
adds r3, #1
|
|
ldrb r0, [r3]
|
|
cmp r0, #0x80
|
|
bhs _08094FB8
|
|
strb r0, [r5, #6]
|
|
adds r3, #1
|
|
ldrb r0, [r3]
|
|
cmp r0, #0x80
|
|
bhs _08094FB8
|
|
ldrb r1, [r5, #4]
|
|
adds r1, r1, r0
|
|
strb r1, [r5, #4]
|
|
adds r3, #1
|
|
_08094FB8:
|
|
str r3, [r5, #0x40]
|
|
_08094FBA:
|
|
movs r0, #0
|
|
str r0, [sp, #0x14]
|
|
adds r4, r5, #0
|
|
adds r4, #0x24
|
|
ldrb r2, [r4]
|
|
movs r0, #0xc0
|
|
tst r0, r2
|
|
beq _0809500C
|
|
ldrb r3, [r5, #5]
|
|
movs r0, #0x40
|
|
tst r0, r2
|
|
beq _08094FDA
|
|
ldr r1, [r5, #0x2c]
|
|
adds r1, r1, r3
|
|
ldrb r0, [r1]
|
|
b _08094FDC
|
|
_08094FDA:
|
|
adds r0, r3, #0
|
|
_08094FDC:
|
|
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 _08094FF4
|
|
b _0809515A
|
|
_08094FF4:
|
|
movs r0, #0x80
|
|
tst r0, r2
|
|
beq _08095010
|
|
ldrb r1, [r6, #3]
|
|
movs r0, #0x80
|
|
tst r0, r1
|
|
beq _08095008
|
|
subs r1, #0xc0
|
|
lsls r1, r1, #1
|
|
str r1, [sp, #0x14]
|
|
_08095008:
|
|
ldrb r3, [r6, #1]
|
|
b _08095010
|
|
_0809500C:
|
|
mov sb, r4
|
|
ldrb r3, [r5, #5]
|
|
_08095010:
|
|
str r3, [sp, #8]
|
|
ldr r6, [sp]
|
|
ldrb r1, [r6, #9]
|
|
ldrb r0, [r5, #0x1d]
|
|
adds r0, r0, r1
|
|
cmp r0, #0xff
|
|
bls _08095020
|
|
movs r0, #0xff
|
|
_08095020:
|
|
str r0, [sp, #0x10]
|
|
mov r6, sb
|
|
ldrb r0, [r6]
|
|
movs r6, #7
|
|
ands r6, r0
|
|
str r6, [sp, #0xc]
|
|
beq _08095060
|
|
ldr r0, [sp, #4]
|
|
ldr r4, [r0, #0x1c]
|
|
cmp r4, #0
|
|
bne _08095038
|
|
b _0809515A
|
|
_08095038:
|
|
subs r6, #1
|
|
lsls r0, r6, #6
|
|
adds r4, r4, r0
|
|
ldrb r1, [r4]
|
|
movs r0, #0xc7
|
|
tst r0, r1
|
|
beq _080950B4
|
|
movs r0, #0x40
|
|
tst r0, r1
|
|
bne _080950B4
|
|
ldrb r1, [r4, #0x13]
|
|
ldr r0, [sp, #0x10]
|
|
cmp r1, r0
|
|
blo _080950B4
|
|
beq _08095058
|
|
b _0809515A
|
|
_08095058:
|
|
ldr r0, [r4, #0x2c]
|
|
cmp r0, r5
|
|
bhs _080950B4
|
|
b _0809515A
|
|
_08095060:
|
|
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
|
|
_0809506E:
|
|
ldrb r1, [r4]
|
|
movs r0, #0xc7
|
|
tst r0, r1
|
|
beq _080950B4
|
|
movs r0, #0x40
|
|
tst r0, r1
|
|
beq _08095088
|
|
cmp r2, #0
|
|
bne _0809508C
|
|
adds r2, #1
|
|
ldrb r6, [r4, #0x13]
|
|
ldr r7, [r4, #0x2c]
|
|
b _080950A6
|
|
_08095088:
|
|
cmp r2, #0
|
|
bne _080950A8
|
|
_0809508C:
|
|
ldrb r0, [r4, #0x13]
|
|
cmp r0, r6
|
|
bhs _08095098
|
|
adds r6, r0, #0
|
|
ldr r7, [r4, #0x2c]
|
|
b _080950A6
|
|
_08095098:
|
|
bhi _080950A8
|
|
ldr r0, [r4, #0x2c]
|
|
cmp r0, r7
|
|
bls _080950A4
|
|
adds r7, r0, #0
|
|
b _080950A6
|
|
_080950A4:
|
|
blo _080950A8
|
|
_080950A6:
|
|
mov r8, r4
|
|
_080950A8:
|
|
adds r4, #0x40
|
|
subs r3, #1
|
|
bgt _0809506E
|
|
mov r4, r8
|
|
cmp r4, #0
|
|
beq _0809515A
|
|
_080950B4:
|
|
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 _080950C8
|
|
str r4, [r3, #0x30]
|
|
_080950C8:
|
|
str r4, [r5, #0x20]
|
|
str r5, [r4, #0x2c]
|
|
ldrb r0, [r5, #0x1b]
|
|
strb r0, [r5, #0x1c]
|
|
cmp r0, r1
|
|
beq _080950DA
|
|
adds r1, r5, #0
|
|
bl sub_80951B4
|
|
_080950DA:
|
|
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 sub_8094F44
|
|
ldrb r1, [r4, #8]
|
|
movs r0, #8
|
|
ldrsb r0, [r5, r0]
|
|
adds r3, r1, r0
|
|
bpl _08095114
|
|
movs r3, #0
|
|
_08095114:
|
|
ldr r6, [sp, #0xc]
|
|
cmp r6, #0
|
|
beq _08095142
|
|
mov r6, sb
|
|
ldrb r0, [r6, #2]
|
|
strb r0, [r4, #0x1e]
|
|
ldrb r1, [r6, #3]
|
|
movs r0, #0x80
|
|
tst r0, r1
|
|
bne _0809512E
|
|
movs r0, #0x70
|
|
tst r0, r1
|
|
bne _08095130
|
|
_0809512E:
|
|
movs r1, #8
|
|
_08095130:
|
|
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_08094EF0
|
|
b _0809514C
|
|
_08095142:
|
|
ldrb r2, [r5, #9]
|
|
adds r1, r3, #0
|
|
adds r0, r7, #0
|
|
bl MidiKeyToFreq
|
|
_0809514C:
|
|
str r0, [r4, #0x20]
|
|
movs r0, #0x80
|
|
strb r0, [r4]
|
|
ldrb r1, [r5]
|
|
movs r0, #0xf0
|
|
ands r0, r1
|
|
strb r0, [r5]
|
|
_0809515A:
|
|
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
|
|
_0809516C: .4byte 0x03007ff0
|
|
_08095170: .4byte gClockTable
|
|
|
|
thumb_func_start ply_endtie
|
|
ply_endtie: @ 0x08095174
|
|
push {r4, r5}
|
|
ldr r2, [r1, #0x40]
|
|
ldrb r3, [r2]
|
|
cmp r3, #0x80
|
|
bhs _08095186
|
|
strb r3, [r1, #5]
|
|
adds r2, #1
|
|
str r2, [r1, #0x40]
|
|
b _08095188
|
|
_08095186:
|
|
ldrb r3, [r1, #5]
|
|
_08095188:
|
|
ldr r1, [r1, #0x20]
|
|
cmp r1, #0
|
|
beq _080951B0
|
|
movs r4, #0x83
|
|
movs r5, #0x40
|
|
_08095192:
|
|
ldrb r2, [r1]
|
|
tst r2, r4
|
|
beq _080951AA
|
|
tst r2, r5
|
|
bne _080951AA
|
|
ldrb r0, [r1, #0x11]
|
|
cmp r0, r3
|
|
bne _080951AA
|
|
movs r0, #0x40
|
|
orrs r2, r0
|
|
strb r2, [r1]
|
|
b _080951B0
|
|
_080951AA:
|
|
ldr r1, [r1, #0x34]
|
|
cmp r1, #0
|
|
bne _08095192
|
|
_080951B0:
|
|
pop {r4, r5}
|
|
bx lr
|
|
|
|
thumb_func_start sub_80951B4
|
|
sub_80951B4: @ 0x080951B4
|
|
movs r2, #0
|
|
strb r2, [r1, #0x16]
|
|
strb r2, [r1, #0x1a]
|
|
ldrb r2, [r1, #0x18]
|
|
cmp r2, #0
|
|
bne _080951C4
|
|
movs r2, #0xc
|
|
b _080951C6
|
|
_080951C4:
|
|
movs r2, #3
|
|
_080951C6:
|
|
ldrb r3, [r1]
|
|
orrs r3, r2
|
|
strb r3, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_80951D0
|
|
sub_80951D0: @ 0x080951D0
|
|
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: @ 0x080951DC
|
|
mov ip, lr
|
|
bl sub_80951D0
|
|
strb r3, [r1, #0x19]
|
|
cmp r3, #0
|
|
bne _080951EC
|
|
bl sub_80951B4
|
|
_080951EC:
|
|
bx ip
|
|
.align 2, 0
|
|
|
|
thumb_func_start ply_mod
|
|
ply_mod: @ 0x080951F0
|
|
mov ip, lr
|
|
bl sub_80951D0
|
|
strb r3, [r1, #0x17]
|
|
cmp r3, #0
|
|
bne _08095200
|
|
bl sub_80951B4
|
|
_08095200:
|
|
bx ip
|
|
.align 2, 0
|