summaryrefslogtreecommitdiff
path: root/arm7/asm/SND_unk_037FD440.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm7/asm/SND_unk_037FD440.s')
-rw-r--r--arm7/asm/SND_unk_037FD440.s1617
1 files changed, 0 insertions, 1617 deletions
diff --git a/arm7/asm/SND_unk_037FD440.s b/arm7/asm/SND_unk_037FD440.s
deleted file mode 100644
index b36cf546..00000000
--- a/arm7/asm/SND_unk_037FD440.s
+++ /dev/null
@@ -1,1617 +0,0 @@
-#todo identify and split
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .bss
-
- .global sPrintEnabled
-sPrintEnabled: ;0x03807F4C
- .space 0x03807F50 - 0x03807F4C
-
- .global sSeqCacheRange
-sSeqCacheRange: ;0x03807F50
- .space 0x03807F58 - 0x03807F50
-
- .global sSeqCache
-sSeqCache: ;0x03807F58
- .space 0x03807F68 - 0x03807F58
-
- .section .text
-
- arm_func_start TrackMute
-TrackMute: ; 0x037FD440
- stmdb sp!, {r4, lr}
- mov r4, r0
- cmp r2, #3
- addls pc, pc, r2, lsl #2
- b _037FD4B8
- b _037FD464
- b _037FD474
- b _037FD484
- b _037FD49C
-_037FD464:
- ldrb r0, [r4]
- bic r0, r0, #4
- strb r0, [r4]
- b _037FD4B8
-_037FD474:
- ldrb r0, [r4]
- orr r0, r0, #4
- strb r0, [r4]
- b _037FD4B8
-_037FD484:
- ldrb r2, [r4]
- orr r2, r2, #4
- strb r2, [r4]
- mvn r2, #0
- bl TrackReleaseChannels
- b _037FD4B8
-_037FD49C:
- ldrb r2, [r4]
- orr r2, r2, #4
- strb r2, [r4]
- mov r2, #127 ; 0x7f
- bl TrackReleaseChannels
- mov r0, r4
- bl TrackFreeChannels
-_037FD4B8:
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start AllocateTrack
-AllocateTrack: ; 0x037FD4C0
- mov r0, #0
- ldr r3, _037FD500 ; =_038086EC
- b _037FD4F0
-_037FD4CC:
- add ip, r3, r0, lsl #6
- ldrb r1, [r3, r0, lsl #6]
- mov r2, r1, lsl #31
- movs r2, r2, lsr #31
- biceq r1, r1, #1
- orreq r1, r1, #1
- streqb r1, [ip]
- bxeq lr
- add r0, r0, #1
-_037FD4F0:
- cmp r0, #32
- blt _037FD4CC
- mvn r0, #0
- bx lr
-_037FD500: .word (SNDi_Work + 0x780)
-
- arm_func_start PlayerGetVariablePointer
-PlayerGetVariablePointer: ; 0x037FD504
- ldr r2, _037FD544 ; =SNDi_SharedWork
- ldr r2, [r2]
- cmp r2, #0
- moveq r0, #0
- bxeq lr
- cmp r1, #16
- addge r2, r2, #608 ; 0x260
- subge r0, r1, #16
- addge r0, r2, r0, lsl #1
- bxge lr
- add r3, r2, #32
- ldrb r2, [r0, #1]
- mov r0, #36 ; 0x24
- mla r0, r2, r0, r3
- add r0, r0, r1, lsl #1
- bx lr
-_037FD544: .word SNDi_SharedWork
-
- arm_func_start PlayerStepTicks
-PlayerStepTicks: ; 0x037FD548
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- mov r8, r0
- mov r7, r1
- mov r6, #0
- mov r5, r6
- mov r4, #1
-_037FD560:
- mov r0, r8
- mov r1, r5
- bl PlayerGetTrack
- cmp r0, #0
- beq _037FD5A8
- ldr r1, [r0, #40] ; 0x28
- cmp r1, #0
- beq _037FD5A8
- mov r1, r8
- mov r2, r5
- mov r3, r7
- bl TrackStepTicks
- cmp r0, #0
- moveq r6, r4
- beq _037FD5A8
- mov r0, r8
- mov r1, r5
- bl PlayerStopTrack
-_037FD5A8:
- add r5, r5, #1
- cmp r5, #16
- blt _037FD560
- cmp r6, #0
- moveq r0, #1
- movne r0, #0
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-
- arm_func_start TrackStepTicks
-TrackStepTicks: ; 0x037FD5C8
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #52 ; 0x34
- mov r9, r0
- mov r8, r1
- str r3, [sp, #4]
- ldr r2, [r9, #60] ; 0x3c
- b _037FD61C
-_037FD5E4:
- ldr r0, [r2, #52] ; 0x34
- cmp r0, #0
- subgt r0, r0, #1
- strgt r0, [r2, #52] ; 0x34
- ldrb r0, [r2, #3]
- mov r0, r0, lsl #29
- movs r0, r0, lsr #31
- bne _037FD618
- ldr r1, [r2, #20]
- ldr r0, [r2, #24]
- cmp r1, r0
- addlt r0, r1, #1
- strlt r0, [r2, #20]
-_037FD618:
- ldr r2, [r2, #80] ; 0x50
-_037FD61C:
- cmp r2, #0
- bne _037FD5E4
- ldrb r1, [r9]
- mov r0, r1, lsl #27
- movs r0, r0, lsr #31
- beq _037FD64C
- ldr r0, [r9, #60] ; 0x3c
- cmp r0, #0
- movne r0, #0
- bne _037FDF84
- bic r0, r1, #16
- strb r0, [r9]
-_037FD64C:
- ldr r0, [r9, #32]
- cmp r0, #0
- ble _037FD670
- sub r0, r0, #1
- str r0, [r9, #32]
- ldr r0, [r9, #32]
- cmp r0, #0
- movgt r0, #0
- bgt _037FDF84
-_037FD670:
- ldr r0, [r9, #40] ; 0x28
- bl SeqCacheFetch
- add r0, r9, #40 ; 0x28
- str r0, [sp, #28]
- mov r0, #2
- str r0, [sp, #32]
- mov r0, #127 ; 0x7f
- str r0, [sp, #36] ; 0x24
- mov fp, #0
- mvn r0, #0
- str r0, [sp, #40] ; 0x28
- mov sl, #1
- mov r0, #3
- str r0, [sp, #20]
- mov r0, #4
- str r0, [sp, #24]
- b _037FDF64
-_037FD6B4:
- mov r4, fp
- mov r6, sl
- ldr r0, [r9, #40] ; 0x28
- bl SeqReadByte
- mov r7, r0
- ldr r0, [r9, #40] ; 0x28
- add r0, r0, #1
- str r0, [r9, #40] ; 0x28
- cmp r7, #162 ; 0xa2
- bne _037FD700
- ldr r0, [r9, #40] ; 0x28
- bl SeqReadByte
- mov r7, r0
- ldr r0, [r9, #40] ; 0x28
- add r0, r0, #1
- str r0, [r9, #40] ; 0x28
- ldrb r0, [r9]
- mov r0, r0, lsl #25
- mov r6, r0, lsr #31
-_037FD700:
- cmp r7, #160 ; 0xa0
- bne _037FD72C
- ldr r0, [r9, #40] ; 0x28
- bl SeqReadByte
- mov r7, r0
- ldr r0, [r9, #40] ; 0x28
- add r0, r0, #1
- str r0, [r9, #40] ; 0x28
- ldr r0, [sp, #20]
- str r0, [sp, #8]
- mov r4, sl
-_037FD72C:
- cmp r7, #161 ; 0xa1
- bne _037FD758
- ldr r0, [r9, #40] ; 0x28
- bl SeqReadByte
- mov r7, r0
- ldr r0, [r9, #40] ; 0x28
- add r0, r0, #1
- str r0, [r9, #40] ; 0x28
- ldr r0, [sp, #24]
- str r0, [sp, #8]
- mov r4, sl
-_037FD758:
- ands r0, r7, #128 ; 0x80
- bne _037FD82C
- ldr r0, [r9, #40] ; 0x28
- bl SeqReadByte
- str r0, [sp, #12]
- ldr r0, [sp, #28]
- ldr r0, [r0]
- add r1, r0, #1
- ldr r0, [sp, #28]
- str r1, [r0]
- cmp r4, #0
- ldrne r2, [sp, #8]
- ldreq r2, [sp, #32]
- mov r0, r9
- mov r1, r8
- bl TrackParseValue
- mov r5, r0
- ldrsb r0, [r9, #19]
- add r4, r7, r0
- cmp r6, #0
- beq _037FDF64
- cmp r4, #0
- movlt r4, fp
- blt _037FD7C0
- cmp r4, #127 ; 0x7f
- ldrgt r4, [sp, #36] ; 0x24
-_037FD7C0:
- ldrb r0, [r9]
- mov r0, r0, lsl #29
- movs r0, r0, lsr #31
- bne _037FD800
- ldr r0, [sp, #4]
- cmp r0, #0
- beq _037FD800
- cmp r5, #0
- movgt r0, r5
- ldrle r0, [sp, #40] ; 0x28
- str r0, [sp]
- mov r0, r9
- mov r1, r8
- mov r2, r4
- ldr r3, [sp, #12]
- bl TrackPlayNote
-_037FD800:
- strb r4, [r9, #20]
- ldrb r0, [r9]
- mov r0, r0, lsl #30
- movs r0, r0, lsr #31
- beq _037FDF64
- str r5, [r9, #32]
- cmp r5, #0
- ldreqb r0, [r9]
- orreq r0, r0, #16
- streqb r0, [r9]
- b _037FDF64
-_037FD82C:
- and r0, r7, #240 ; 0xf0
- cmp r0, #192 ; 0xc0
- bgt _037FD868
- cmp r0, #192 ; 0xc0
- bge _037FD9B8
- cmp r0, #144 ; 0x90
- bgt _037FD85C
- cmp r0, #144 ; 0x90
- bge _037FD8D8
- cmp r0, #128 ; 0x80
- beq _037FD890
- b _037FDF64
-_037FD85C:
- cmp r0, #176 ; 0xb0
- beq _037FDC68
- b _037FDF64
-_037FD868:
- cmp r0, #224 ; 0xe0
- bgt _037FD884
- cmp r0, #224 ; 0xe0
- bge _037FDC14
- cmp r0, #208 ; 0xd0
- beq _037FD9B8
- b _037FDF64
-_037FD884:
- cmp r0, #240 ; 0xf0
- beq _037FDEC0
- b _037FDF64
-_037FD890:
- cmp r4, #0
- ldrne r2, [sp, #8]
- ldreq r2, [sp, #32]
- mov r0, r9
- mov r1, r8
- bl TrackParseValue
- cmp r6, #0
- beq _037FDF64
- cmp r7, #128 ; 0x80
- beq _037FD8C4
- cmp r7, #129 ; 0x81
- beq _037FD8CC
- b _037FDF64
-_037FD8C4:
- str r0, [r9, #32]
- b _037FDF64
-_037FD8CC:
- cmp r0, #65536 ; 0x10000
- strlth r0, [r9, #2]
- b _037FDF64
-_037FD8D8:
- cmp r7, #147 ; 0x93
- beq _037FD8F4
- cmp r7, #148 ; 0x94
- beq _037FD958
- cmp r7, #149 ; 0x95
- beq _037FD974
- b _037FDF64
-_037FD8F4:
- ldr r0, [r9, #40] ; 0x28
- bl SeqReadByte
- mov r4, r0
- ldr r0, [r9, #40] ; 0x28
- add r0, r0, #1
- str r0, [r9, #40] ; 0x28
- mov r0, r9
- bl TrackReadU24
- mov r5, r0
- cmp r6, #0
- beq _037FDF64
- mov r0, r8
- mov r1, r4
- bl PlayerGetTrack
- movs r4, r0
- beq _037FDF64
- cmp r4, r9
- beq _037FDF64
- mov r1, r8
- bl TrackStop
- mov r0, r4
- ldr r1, [r9, #36] ; 0x24
- mov r2, r5
- bl TrackSetSeq
- b _037FDF64
-_037FD958:
- mov r0, r9
- bl TrackReadU24
- cmp r6, #0
- ldrne r1, [r9, #36] ; 0x24
- addne r0, r1, r0
- strne r0, [r9, #40] ; 0x28
- b _037FDF64
-_037FD974:
- mov r0, r9
- bl TrackReadU24
- cmp r6, #0
- beq _037FDF64
- ldrb r1, [r9, #59] ; 0x3b
- cmp r1, #3
- bcs _037FDF64
- ldr r2, [r9, #40] ; 0x28
- add r1, r9, r1, lsl #2
- str r2, [r1, #44] ; 0x2c
- ldrb r1, [r9, #59] ; 0x3b
- add r1, r1, #1
- strb r1, [r9, #59] ; 0x3b
- ldr r1, [r9, #36] ; 0x24
- add r0, r1, r0
- str r0, [r9, #40] ; 0x28
- b _037FDF64
-_037FD9B8:
- cmp r4, #0
- ldrne r2, [sp, #8]
- moveq r2, fp
- mov r0, r9
- mov r1, r8
- bl TrackParseValue
- strb r0, [sp, #44] ; 0x2c
- cmp r6, #0
- beq _037FDF64
- sub r0, r7, #192 ; 0xc0
- cmp r0, #23
- addls pc, pc, r0, lsl #2
- b _037FDF64
- b _037FDBE4
- b _037FDA4C
- b _037FDA64
- b _037FDBCC
- b _037FDBD8
- b _037FDA70
- b _037FDA7C
- b _037FDA88
- b _037FDB48
- b _037FDB90
- b _037FDAB0
- b _037FDABC
- b _037FDAC8
- b _037FDAD4
- b _037FDBB0
- b _037FDAA4
- b _037FDAE0
- b _037FDAEC
- b _037FDAF8
- b _037FDB04
- b _037FDB10
- b _037FDA58
- b _037FDBF4
- b _037FDB7C
-_037FDA4C:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #4]
- b _037FDF64
-_037FDA58:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #5]
- b _037FDF64
-_037FDA64:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r8, #5]
- b _037FDF64
-_037FDA70:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #7]
- b _037FDF64
-_037FDA7C:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #18]
- b _037FDF64
-_037FDA88:
- ldrb r0, [r9]
- bic r1, r0, #2
- ldrb r0, [sp, #44] ; 0x2c
- and r0, r0, #1
- orr r0, r1, r0, lsl #1
- strb r0, [r9]
- b _037FDF64
-_037FDAA4:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #21]
- b _037FDF64
-_037FDAB0:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #26]
- b _037FDF64
-_037FDABC:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #25]
- b _037FDF64
-_037FDAC8:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #24]
- b _037FDF64
-_037FDAD4:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #27]
- b _037FDF64
-_037FDAE0:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #14]
- b _037FDF64
-_037FDAEC:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #15]
- b _037FDF64
-_037FDAF8:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #16]
- b _037FDF64
-_037FDB04:
- ldrb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #17]
- b _037FDF64
-_037FDB10:
- ldrb r0, [r9, #59] ; 0x3b
- cmp r0, #3
- bcs _037FDF64
- ldr r1, [r9, #40] ; 0x28
- add r0, r9, r0, lsl #2
- str r1, [r0, #44] ; 0x2c
- ldrb r1, [sp, #44] ; 0x2c
- ldrb r0, [r9, #59] ; 0x3b
- add r0, r9, r0
- strb r1, [r0, #56] ; 0x38
- ldrb r0, [r9, #59] ; 0x3b
- add r0, r0, #1
- strb r0, [r9, #59] ; 0x3b
- b _037FDF64
-_037FDB48:
- ldrb r0, [r9]
- bic r1, r0, #8
- ldrb r0, [sp, #44] ; 0x2c
- and r0, r0, #1
- orr r0, r1, r0, lsl #3
- strb r0, [r9]
- mov r0, r9
- mov r1, r8
- ldr r2, [sp, #40] ; 0x28
- bl TrackReleaseChannels
- mov r0, r9
- bl TrackFreeChannels
- b _037FDF64
-_037FDB7C:
- mov r0, r9
- mov r1, r8
- ldrb r2, [sp, #44] ; 0x2c
- bl TrackMute
- b _037FDF64
-_037FDB90:
- ldrb r1, [sp, #44] ; 0x2c
- ldrsb r0, [r9, #19]
- add r0, r1, r0
- strb r0, [r9, #20]
- ldrb r0, [r9]
- orr r0, r0, #32
- strb r0, [r9]
- b _037FDF64
-_037FDBB0:
- ldrb r0, [r9]
- bic r1, r0, #32
- ldrb r0, [sp, #44] ; 0x2c
- and r0, r0, #1
- orr r0, r1, r0, lsl #5
- strb r0, [r9]
- b _037FDF64
-_037FDBCC:
- ldrsb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #19]
- b _037FDF64
-_037FDBD8:
- ldrsb r0, [sp, #44] ; 0x2c
- strb r0, [r9, #6]
- b _037FDF64
-_037FDBE4:
- ldrb r0, [sp, #44] ; 0x2c
- sub r0, r0, #64 ; 0x40
- strb r0, [r9, #8]
- b _037FDF64
-_037FDBF4:
- ldr r0, _037FDF90 ; =sPrintEnabled
- ldr r0, [r0]
- cmp r0, #0
- beq _037FDF64
- mov r0, r8
- ldrb r1, [sp, #44] ; 0x2c
- bl PlayerGetVariablePointer
- b _037FDF64
-_037FDC14:
- cmp r4, #0
- ldrne r2, [sp, #8]
- moveq r2, sl
- mov r0, r9
- mov r1, r8
- bl TrackParseValue
- mov r0, r0, lsl #16
- mov r0, r0, asr #16
- cmp r6, #0
- beq _037FDF64
- cmp r7, #224 ; 0xe0
- beq _037FDC60
- cmp r7, #225 ; 0xe1
- beq _037FDC58
- cmp r7, #227 ; 0xe3
- streqh r0, [r9, #22]
- b _037FDF64
-_037FDC58:
- strh r0, [r8, #24]
- b _037FDF64
-_037FDC60:
- strh r0, [r9, #28]
- b _037FDF64
-_037FDC68:
- ldr r0, [r9, #40] ; 0x28
- bl SeqReadByte
- str r0, [sp, #16]
- ldr r0, [r9, #40] ; 0x28
- add r0, r0, #1
- str r0, [r9, #40] ; 0x28
- cmp r4, #0
- ldrne r2, [sp, #8]
- moveq r2, sl
- mov r0, r9
- mov r1, r8
- bl TrackParseValue
- mov r0, r0, lsl #16
- mov r5, r0, asr #16
- mov r0, r8
- ldr r1, [sp, #16]
- bl PlayerGetVariablePointer
- mov r4, r0
- cmp r6, #0
- beq _037FDF64
- cmp r4, #0
- beq _037FDF64
- sub r0, r7, #176 ; 0xb0
- cmp r0, #13
- addls pc, pc, r0, lsl #2
- b _037FDF64
- b _037FDD08
- b _037FDD10
- b _037FDD20
- b _037FDD30
- b _037FDD40
- b _037FDD5C
- b _037FDD80
- b _037FDF64
- b _037FDDB8
- b _037FDDE4
- b _037FDE10
- b _037FDE3C
- b _037FDE68
- b _037FDE94
-_037FDD08:
- strh r5, [r4]
- b _037FDF64
-_037FDD10:
- ldrsh r0, [r4]
- add r0, r0, r5
- strh r0, [r4]
- b _037FDF64
-_037FDD20:
- ldrsh r0, [r4]
- sub r0, r0, r5
- strh r0, [r4]
- b _037FDF64
-_037FDD30:
- ldrsh r0, [r4]
- mul r1, r0, r5
- strh r1, [r4]
- b _037FDF64
-_037FDD40:
- cmp r5, #0
- beq _037FDF64
- ldrsh r0, [r4]
- mov r1, r5
- bl _s32_div_f
- strh r0, [r4]
- b _037FDF64
-_037FDD5C:
- cmp r5, #0
- ldrgesh r0, [r4]
- movge r0, r0, lsl r5
- strgeh r0, [r4]
- ldrltsh r1, [r4]
- rsblt r0, r5, #0
- movlt r0, r1, asr r0
- strlth r0, [r4]
- b _037FDF64
-_037FDD80:
- mov r6, fp
- cmp r5, #0
- movlt r6, sl
- rsblt r0, r5, #0
- movlt r0, r0, lsl #16
- movlt r5, r0, asr #16
- bl SND_CalcRandom
- add r1, r5, #1
- mul r1, r0, r1
- mov r0, r1, asr #16
- cmp r6, #0
- rsbne r0, r0, #0
- strh r0, [r4]
- b _037FDF64
-_037FDDB8:
- ldrsh r0, [r4]
- cmp r0, r5
- moveq r2, sl
- movne r2, fp
- ldrb r0, [r9]
- bic r1, r0, #64 ; 0x40
- and r0, r2, #255 ; 0xff
- and r0, r0, #1
- orr r0, r1, r0, lsl #6
- strb r0, [r9]
- b _037FDF64
-_037FDDE4:
- ldrsh r0, [r4]
- cmp r0, r5
- movge r2, sl
- movlt r2, fp
- ldrb r0, [r9]
- bic r1, r0, #64 ; 0x40
- and r0, r2, #255 ; 0xff
- and r0, r0, #1
- orr r0, r1, r0, lsl #6
- strb r0, [r9]
- b _037FDF64
-_037FDE10:
- ldrsh r0, [r4]
- cmp r0, r5
- movgt r2, sl
- movle r2, fp
- ldrb r0, [r9]
- bic r1, r0, #64 ; 0x40
- and r0, r2, #255 ; 0xff
- and r0, r0, #1
- orr r0, r1, r0, lsl #6
- strb r0, [r9]
- b _037FDF64
-_037FDE3C:
- ldrsh r0, [r4]
- cmp r0, r5
- movle r2, sl
- movgt r2, fp
- ldrb r0, [r9]
- bic r1, r0, #64 ; 0x40
- and r0, r2, #255 ; 0xff
- and r0, r0, #1
- orr r0, r1, r0, lsl #6
- strb r0, [r9]
- b _037FDF64
-_037FDE68:
- ldrsh r0, [r4]
- cmp r0, r5
- movlt r2, sl
- movge r2, fp
- ldrb r0, [r9]
- bic r1, r0, #64 ; 0x40
- and r0, r2, #255 ; 0xff
- and r0, r0, #1
- orr r0, r1, r0, lsl #6
- strb r0, [r9]
- b _037FDF64
-_037FDE94:
- ldrsh r0, [r4]
- cmp r0, r5
- movne r2, sl
- moveq r2, fp
- ldrb r0, [r9]
- bic r1, r0, #64 ; 0x40
- and r0, r2, #255 ; 0xff
- and r0, r0, #1
- orr r0, r1, r0, lsl #6
- strb r0, [r9]
- b _037FDF64
-_037FDEC0:
- cmp r6, #0
- beq _037FDF64
- sub r0, r7, #252 ; 0xfc
- cmp r0, #3
- addls pc, pc, r0, lsl #2
- b _037FDF64
- b _037FDF10
- b _037FDEE8
- b _037FDF64
- b _037FDF5C
-_037FDEE8:
- ldrb r0, [r9, #59] ; 0x3b
- cmp r0, #0
- beq _037FDF64
- sub r0, r0, #1
- strb r0, [r9, #59] ; 0x3b
- ldrb r0, [r9, #59] ; 0x3b
- add r0, r9, r0, lsl #2
- ldr r0, [r0, #44] ; 0x2c
- str r0, [r9, #40] ; 0x28
- b _037FDF64
-_037FDF10:
- ldrb r0, [r9, #59] ; 0x3b
- cmp r0, #0
- beq _037FDF64
- sub r1, r0, #1
- add r2, r9, r1
- ldrb r0, [r2, #56] ; 0x38
- cmp r0, #0
- beq _037FDF40
- sub r0, r0, #1
- ands r0, r0, #255 ; 0xff
- streqb r1, [r9, #59] ; 0x3b
- beq _037FDF64
-_037FDF40:
- strb r0, [r2, #56] ; 0x38
- ldrb r0, [r9, #59] ; 0x3b
- sub r0, r0, #1
- add r0, r9, r0, lsl #2
- ldr r0, [r0, #44] ; 0x2c
- str r0, [r9, #40] ; 0x28
- b _037FDF64
-_037FDF5C:
- mvn r0, #0
- b _037FDF84
-_037FDF64:
- ldr r0, [r9, #32]
- cmp r0, #0
- bne _037FDF80
- ldrb r0, [r9]
- mov r0, r0, lsl #27
- movs r0, r0, lsr #31
- beq _037FD6B4
-_037FDF80:
- mov r0, #0
-_037FDF84:
- add sp, sp, #52 ; 0x34
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_037FDF90: .word sPrintEnabled
-
- arm_func_start TrackPlayNote
-TrackPlayNote: ; 0x037FDF94
- stmdb sp!, {r4, r5, r6, r7, r8, lr}
- sub sp, sp, #24
- mov r8, r0
- mov r7, r1
- mov r6, r2
- mov r5, r3
- mov r4, #0
- ldrb r0, [r8]
- mov r0, r0, lsl #28
- movs r0, r0, lsr #31
- beq _037FDFD0
- ldr r4, [r8, #60] ; 0x3c
- cmp r4, #0
- strneb r6, [r4, #8]
- strneb r5, [r4, #9]
-_037FDFD0:
- cmp r4, #0
- bne _037FE0C4
- ldr r0, [r7, #32]
- ldrh r1, [r8, #2]
- mov r2, r6
- add r3, sp, #8
- bl SND_ReadInstData
- cmp r0, #0
- beq _037FE18C
- ldrb r0, [sp, #8]
- cmp r0, #4
- addls pc, pc, r0, lsl #2
- b _037FE030
- b _037FE030
- b _037FE018
- b _037FE020
- b _037FE028
- b _037FE018
-_037FE018:
- ldr r1, _037FE198 ; =0x0000FFFF
- b _037FE034
-_037FE020:
- mov r1, #16128 ; 0x3f00
- b _037FE034
-_037FE028:
- mov r1, #49152 ; 0xc000
- b _037FE034
-_037FE030:
- b _037FE18C
-_037FE034:
- ldrh r0, [r8, #30]
- and r0, r1, r0
- str r8, [sp]
- ldrb r2, [r7, #4]
- ldrb r1, [r8, #18]
- add r1, r2, r1
- ldrb r2, [r8]
- mov r2, r2, lsl #24
- mov r2, r2, lsr #31
- ldr r3, _037FE19C ; =ChannelCallback
- bl SND_AllocExChannel
- movs r4, r0
- beq _037FE18C
- ldrb r0, [r8]
- mov r0, r0, lsl #28
- movs r0, r0, lsr #31
- mvnne r3, #0
- ldreq r3, [sp, #48] ; 0x30
- ldr r0, [r7, #32]
- str r0, [sp]
- add r0, sp, #8
- str r0, [sp, #4]
- mov r0, r4
- mov r1, r6
- mov r2, r5
- bl SND_NoteOn
- cmp r0, #0
- bne _037FE0B8
- mov r0, #0
- strb r0, [r4, #34] ; 0x22
- mov r0, r4
- bl SND_FreeExChannel
- b _037FE18C
-_037FE0B8:
- ldr r0, [r8, #60] ; 0x3c
- str r0, [r4, #80] ; 0x50
- str r4, [r8, #60] ; 0x3c
-_037FE0C4:
- ldrb r1, [r8, #14]
- cmp r1, #255 ; 0xff
- beq _037FE0D8
- mov r0, r4
- bl SND_SetExChannelAttack
-_037FE0D8:
- ldrb r1, [r8, #15]
- cmp r1, #255 ; 0xff
- beq _037FE0EC
- mov r0, r4
- bl SND_SetExChannelDecay
-_037FE0EC:
- ldrb r1, [r8, #16]
- cmp r1, #255 ; 0xff
- beq _037FE100
- mov r0, r4
- bl SND_SetExChannelSustain
-_037FE100:
- ldrb r1, [r8, #17]
- cmp r1, #255 ; 0xff
- beq _037FE114
- mov r0, r4
- bl SND_SetExChannelRelease
-_037FE114:
- ldrsh r0, [r8, #22]
- strh r0, [r4, #50] ; 0x32
- ldrb r0, [r8]
- mov r0, r0, lsl #26
- movs r0, r0, lsr #31
- beq _037FE144
- ldrsh r1, [r4, #50] ; 0x32
- ldrb r0, [r8, #20]
- sub r0, r0, r6
- mov r0, r0, lsl #22
- add r0, r1, r0, asr #16
- strh r0, [r4, #50] ; 0x32
-_037FE144:
- ldrb r0, [r8, #21]
- cmp r0, #0
- bne _037FE168
- ldr r0, [sp, #48] ; 0x30
- str r0, [r4, #24]
- ldrb r0, [r4, #3]
- bic r0, r0, #4
- strb r0, [r4, #3]
- b _037FE184
-_037FE168:
- mul r1, r0, r0
- ldrsh r0, [r4, #50] ; 0x32
- cmp r0, #0
- rsblt r0, r0, #0
- mul r0, r1, r0
- mov r0, r0, asr #11
- str r0, [r4, #24]
-_037FE184:
- mov r0, #0
- str r0, [r4, #20]
-_037FE18C:
- add sp, sp, #24
- ldmia sp!, {r4, r5, r6, r7, r8, lr}
- bx lr
-_037FE198: .word 0x0000FFFF
-_037FE19C: .word ChannelCallback
-
- arm_func_start PlayerUpdateChannelVolume
-PlayerUpdateChannelVolume: ; 0x037FE1A0
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, #0
- mov r4, #1
-_037FE1B0:
- mov r0, r6
- mov r1, r5
- bl PlayerGetTrack
- cmp r0, #0
- beq _037FE1D0
- mov r1, r6
- mov r2, r4
- bl TrackUpdateChannelVolume
-_037FE1D0:
- add r5, r5, #1
- cmp r5, #16
- blt _037FE1B0
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-
- arm_func_start TrackUpdateChannelVolume
-TrackUpdateChannelVolume: ; 0x037FE1E4
- stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- sub sp, sp, #4
- mov sl, r0
- mov fp, r2
- ldrb r0, [r1, #5]
- mov r0, r0, lsl #1
- ldr r4, _037FE340 ; =SNDi_DecibelSquareTable
- ldrsh r3, [r4, r0]
- ldrb r0, [sl, #4]
- mov r0, r0, lsl #1
- ldrsh r2, [r4, r0]
- ldrb r0, [sl, #5]
- mov r0, r0, lsl #1
- ldrsh r0, [r4, r0]
- add r0, r2, r0
- add r3, r3, r0
- ldrsh r2, [sl, #10]
- ldrsh r0, [r1, #6]
- add r2, r2, r0
- ldrsb r4, [sl, #6]
- ldrb r0, [sl, #7]
- mov r0, r0, lsl #6
- mul r1, r4, r0
- ldrsh r0, [sl, #12]
- add r0, r0, r1, asr #7
- ldrsb r1, [sl, #8]
- ldrb r4, [sl, #1]
- cmp r4, #127 ; 0x7f
- mulne r4, r1, r4
- addne r1, r4, #64 ; 0x40
- movne r1, r1, asr #7
- ldrsb r4, [sl, #9]
- add r1, r1, r4
- mov r4, #32768 ; 0x8000
- rsb r4, r4, #0
- cmp r3, r4
- movlt r3, r4
- mov r4, #32768 ; 0x8000
- rsb r4, r4, #0
- cmp r2, r4
- movlt r2, r4
- mvn r4, #127 ; 0x7f
- cmp r1, r4
- movlt r1, r4
- blt _037FE2A0
- cmp r1, #127 ; 0x7f
- movgt r1, #127 ; 0x7f
-_037FE2A0:
- ldr r9, [sl, #60] ; 0x3c
- mov r4, #1
- mov r3, r3, lsl #16
- mov r7, r3, asr #16
- mov r0, r0, lsl #16
- mov r6, r0, asr #16
- mov r0, r1, lsl #24
- mov r5, r0, asr #24
- mov r0, r2, lsl #16
- mov r8, r0, asr #16
- b _037FE32C
-_037FE2CC:
- strh r8, [r9, #6]
- ldrb r0, [r9, #2]
- cmp r0, #3
- beq _037FE328
- strh r7, [r9, #12]
- strh r6, [r9, #14]
- strb r5, [r9, #11]
- ldrb r0, [sl, #1]
- strb r0, [r9, #4]
- ldrh r0, [sl, #24]
- strh r0, [r9, #40] ; 0x28
- ldrh r0, [sl, #26]
- strh r0, [r9, #42] ; 0x2a
- ldrh r0, [sl, #28]
- strh r0, [r9, #44] ; 0x2c
- ldr r0, [r9, #52] ; 0x34
- cmp r0, #0
- bne _037FE328
- cmp fp, #0
- beq _037FE328
- strb r4, [r9, #34] ; 0x22
- mov r0, r9
- bl SND_ReleaseExChannel
-_037FE328:
- ldr r9, [r9, #80] ; 0x50
-_037FE32C:
- cmp r9, #0
- bne _037FE2CC
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- bx lr
-_037FE340: .word SNDi_DecibelSquareTable
-
- arm_func_start ChannelCallback
-ChannelCallback: ; 0x037FE344
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r2
- cmp r1, #1
- bne _037FE368
- mov r1, #0
- strb r1, [r5, #34] ; 0x22
- bl SND_FreeExChannel
-_037FE368:
- ldr r1, [r4, #60] ; 0x3c
- cmp r1, r5
- ldreq r0, [r5, #80] ; 0x50
- streq r0, [r4, #60] ; 0x3c
- beq _037FE3A0
- b _037FE394
-_037FE380:
- cmp r0, r5
- ldreq r0, [r5, #80] ; 0x50
- streq r0, [r1, #80] ; 0x50
- beq _037FE3A0
- mov r1, r0
-_037FE394:
- ldr r0, [r1, #80] ; 0x50
- cmp r0, #0
- bne _037FE380
-_037FE3A0:
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start PlayerStop
-PlayerStop: ; 0x037FE3AC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, #0
-_037FE3BC:
- mov r0, r5
- mov r1, r4
- bl PlayerStopTrack
- add r4, r4, #1
- cmp r4, #16
- blt _037FE3BC
- ldrb r0, [r5]
- bic r0, r0, #1
- strb r0, [r5]
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start PlayerStopTrack
-PlayerStopTrack: ; 0x037FE3EC
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- mov r4, r1
- bl PlayerGetTrack
- cmp r0, #0
- beq _037FE430
- mov r1, r5
- bl TrackStop
- add r3, r5, #8
- ldr r2, _037FE43C ; =_038086EC
- ldrb r1, [r3, r4]
- ldrb r0, [r2, r1, lsl #6]
- bic r0, r0, #1
- strb r0, [r2, r1, lsl #6]
- mov r0, #255 ; 0xff
- strb r0, [r3, r4]
-_037FE430:
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-_037FE43C: .word (SNDi_Work + 0x780)
-
- arm_func_start TrackStop
-TrackStop: ; 0x037FE440
- stmdb sp!, {r4, lr}
- mov r4, r0
- mvn r2, #0
- bl TrackReleaseChannels
- mov r0, r4
- bl TrackFreeChannels
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start PlayerGetTrack
-PlayerGetTrack: ; 0x037FE460
- cmp r1, #15
- movgt r0, #0
- bxgt lr
- add r0, r0, r1
- ldrb r1, [r0, #8]
- cmp r1, #255 ; 0xff
- moveq r0, #0
- ldrne r0, _037FE488 ; =_038086EC
- addne r0, r0, r1, lsl #6
- bx lr
-_037FE488: .word (SNDi_Work + 0x780)
-
- arm_func_start PlayerSeqMain
-PlayerSeqMain: ; 0x037FE48C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r6, r0
- mov r5, #0
- add r1, r6, #28
- b _037FE4B4
-_037FE4A4:
- ldrh r0, [r1]
- sub r0, r0, #240 ; 0xf0
- strh r0, [r1]
- add r5, r5, #1
-_037FE4B4:
- ldrh r0, [r6, #28]
- cmp r0, #240 ; 0xf0
- bcs _037FE4A4
- mov r4, #0
- mov r7, #1
- b _037FE4F0
-_037FE4CC:
- mov r0, r6
- mov r1, r7
- bl PlayerStepTicks
- cmp r0, #0
- beq _037FE4EC
- mov r0, r6
- bl PlayerStop
- b _037FE4F8
-_037FE4EC:
- add r4, r4, #1
-_037FE4F0:
- cmp r4, r5
- blt _037FE4CC
-_037FE4F8:
- ldr r0, _037FE548 ; =SNDi_SharedWork
- ldr r0, [r0]
- cmp r0, #0
- beq _037FE524
- add r3, r0, #64 ; 0x40
- ldrb r1, [r6, #1]
- mov r0, #36 ; 0x24
- mul r2, r1, r0
- ldr r0, [r3, r2]
- add r0, r0, r4
- str r0, [r3, r2]
-_037FE524:
- ldrh r2, [r6, #24]
- ldrh r0, [r6, #26]
- mul r1, r2, r0
- ldrh r0, [r6, #28]
- add r0, r0, r1, asr #8
- strh r0, [r6, #28]
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-_037FE548: .word SNDi_SharedWork
-
- arm_func_start TrackFreeChannels
-TrackFreeChannels: ; 0x037FE54C
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- ldr r4, [r5, #60] ; 0x3c
- b _037FE56C
-_037FE560:
- mov r0, r4
- bl SND_FreeExChannel
- ldr r4, [r4, #80] ; 0x50
-_037FE56C:
- cmp r4, #0
- bne _037FE560
- mov r0, #0
- str r0, [r5, #60] ; 0x3c
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start TrackReleaseChannels
-TrackReleaseChannels: ; 0x037FE588
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r4, r0
- mov r7, r2
- mov r2, #0
- bl TrackUpdateChannelVolume
- ldr r6, [r4, #60] ; 0x3c
- and r5, r7, #255 ; 0xff
- mov r4, #1
- b _037FE5E4
-_037FE5B0:
- mov r0, r6
- bl SND_IsExChannelActive
- cmp r0, #0
- beq _037FE5E0
- cmp r7, #0
- blt _037FE5D4
- mov r0, r6
- mov r1, r5
- bl SND_SetExChannelRelease
-_037FE5D4:
- strb r4, [r6, #34] ; 0x22
- mov r0, r6
- bl SND_ReleaseExChannel
-_037FE5E0:
- ldr r6, [r6, #80] ; 0x50
-_037FE5E4:
- cmp r6, #0
- bne _037FE5B0
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, lr}
- bx lr
-
- arm_func_start PlayerSetBank
-PlayerSetBank: ; 0x037FE5F8
- stmdb sp!, {r4, lr}
- ldrb r2, [r0]
- bic r2, r2, #4
- strb r2, [r0]
- str r1, [r0, #32]
- mov r1, #120 ; 0x78
- strh r1, [r0, #24]
- mov r1, #256 ; 0x100
- strh r1, [r0, #26]
- mov r1, #240 ; 0xf0
- strh r1, [r0, #28]
- mov r1, #127 ; 0x7f
- strb r1, [r0, #5]
- mov r3, #0
- strh r3, [r0, #6]
- mov r1, #64 ; 0x40
- strb r1, [r0, #4]
- mov r2, #255 ; 0xff
-_037FE640:
- add r1, r0, r3
- strb r2, [r1, #8]
- add r3, r3, #1
- cmp r3, #16
- blt _037FE640
- ldr r2, _037FE6A4 ; =SNDi_SharedWork
- ldr r3, [r2]
- cmp r3, #0
- beq _037FE69C
- mov r4, #0
- ldrb ip, [r0, #1]
- mov r1, #36 ; 0x24
- mla r3, ip, r1, r3
- str r4, [r3, #64] ; 0x40
- mvn lr, #0
-_037FE67C:
- ldr r3, [r2]
- ldrb ip, [r0, #1]
- mla r3, ip, r1, r3
- add r3, r3, r4, lsl #1
- strh lr, [r3, #32]
- add r4, r4, #1
- cmp r4, #16
- blt _037FE67C
-_037FE69C:
- ldmia sp!, {r4, lr}
- bx lr
-_037FE6A4: .word SNDi_SharedWork
-
- arm_func_start TrackSetSeq
-TrackSetSeq: ; 0x037FE6A8
- str r1, [r0, #36] ; 0x24
- ldr r1, [r0, #36] ; 0x24
- add r1, r1, r2
- str r1, [r0, #40] ; 0x28
- bx lr
-
- arm_func_start TrackInit
-TrackInit: ; 0x037FE6BC
- stmdb sp!, {r4, lr}
- mov r4, r0
- mov r0, #0
- str r0, [r4, #36] ; 0x24
- str r0, [r4, #40] ; 0x28
- ldrb r1, [r4]
- orr r1, r1, #2
- strb r1, [r4]
- ldrb r1, [r4]
- bic r1, r1, #4
- strb r1, [r4]
- ldrb r1, [r4]
- bic r1, r1, #8
- strb r1, [r4]
- ldrb r1, [r4]
- bic r1, r1, #16
- strb r1, [r4]
- ldrb r1, [r4]
- bic r1, r1, #32
- strb r1, [r4]
- ldrb r1, [r4]
- orr r1, r1, #64 ; 0x40
- strb r1, [r4]
- ldrb r1, [r4]
- bic r1, r1, #128 ; 0x80
- strb r1, [r4]
- strb r0, [r4, #59] ; 0x3b
- strh r0, [r4, #2]
- mov r1, #64 ; 0x40
- strb r1, [r4, #18]
- mov r2, #127 ; 0x7f
- strb r2, [r4, #4]
- strb r2, [r4, #5]
- strh r0, [r4, #10]
- strb r0, [r4, #8]
- strb r0, [r4, #9]
- strb r0, [r4, #6]
- strh r0, [r4, #12]
- mov r1, #255 ; 0xff
- strb r1, [r4, #14]
- strb r1, [r4, #15]
- strb r1, [r4, #16]
- strb r1, [r4, #17]
- strb r2, [r4, #1]
- mov r1, #2
- strb r1, [r4, #7]
- mov r1, #60 ; 0x3c
- strb r1, [r4, #20]
- strb r0, [r4, #21]
- strh r0, [r4, #22]
- strb r0, [r4, #19]
- ldr r0, _037FE7AC ; =0x0000FFFF
- strh r0, [r4, #30]
- add r0, r4, #24
- bl SND_InitLfoParam
- mov r0, #0
- str r0, [r4, #32]
- str r0, [r4, #60] ; 0x3c
- ldmia sp!, {r4, lr}
- bx lr
-_037FE7AC: .word 0x0000FFFF
-
- arm_func_start TrackParseValue
-TrackParseValue: ; 0x037FE7B0
- stmdb sp!, {r4, r5, r6, lr}
- mov r4, r0
- mov r6, r1
- cmp r2, #4
- addls pc, pc, r2, lsl #2
- b _037FE86C
- b _037FE7DC
- b _037FE7F8
- b _037FE804
- b _037FE83C
- b _037FE810
-_037FE7DC:
- ldr r0, [r4, #40] ; 0x28
- bl SeqReadByte
- mov r5, r0
- ldr r0, [r4, #40] ; 0x28
- add r0, r0, #1
- str r0, [r4, #40] ; 0x28
- b _037FE86C
-_037FE7F8:
- bl TrackReadU16
- mov r5, r0
- b _037FE86C
-_037FE804:
- bl TrackReadVLV
- mov r5, r0
- b _037FE86C
-_037FE810:
- ldr r0, [r4, #40] ; 0x28
- bl SeqReadByte
- mov r1, r0
- ldr r0, [r4, #40] ; 0x28
- add r0, r0, #1
- str r0, [r4, #40] ; 0x28
- mov r0, r6
- bl PlayerGetVariablePointer
- cmp r0, #0
- ldrnesh r5, [r0]
- b _037FE86C
-_037FE83C:
- bl TrackReadU16
- mov r5, r0, lsl #16
- mov r0, r4
- bl TrackReadU16
- mov r0, r0, lsl #16
- mov r4, r0, asr #16
- bl SND_CalcRandom
- sub r1, r4, r5, asr #16
- add r1, r1, #1
- mul r1, r0, r1
- mov r0, r1, asr #16
- add r5, r0, r5, asr #16
-_037FE86C:
- mov r0, r5
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-
- arm_func_start TrackReadVLV
-TrackReadVLV: ; 0x037FE878
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, #0
- add r4, r6, #40 ; 0x28
-_037FE888:
- ldr r0, [r6, #40] ; 0x28
- bl SeqReadByte
- ldr r1, [r4]
- add r1, r1, #1
- str r1, [r4]
- and r1, r0, #127 ; 0x7f
- orr r5, r1, r5, lsl #7
- ands r0, r0, #128 ; 0x80
- bne _037FE888
- mov r0, r5
- ldmia sp!, {r4, r5, r6, lr}
- bx lr
-
- arm_func_start TrackReadU24
-TrackReadU24: ; 0x037FE8B8
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r4, r0
- ldr r0, [r4, #40] ; 0x28
- bl SeqReadByte
- mov r5, r0
- ldr r0, [r4, #40] ; 0x28
- add r0, r0, #1
- str r0, [r4, #40] ; 0x28
- ldr r0, [r4, #40] ; 0x28
- bl SeqReadByte
- ldr r1, [r4, #40] ; 0x28
- add r1, r1, #1
- str r1, [r4, #40] ; 0x28
- orr r5, r5, r0, lsl #8
- ldr r0, [r4, #40] ; 0x28
- bl SeqReadByte
- ldr r1, [r4, #40] ; 0x28
- add r1, r1, #1
- str r1, [r4, #40] ; 0x28
- orr r0, r5, r0, lsl #16
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start TrackReadU16
-TrackReadU16: ; 0x037FE918
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- mov r5, r0
- ldr r0, [r5, #40] ; 0x28
- bl SeqReadByte
- mov r4, r0
- ldr r0, [r5, #40] ; 0x28
- add r0, r0, #1
- str r0, [r5, #40] ; 0x28
- ldr r0, [r5, #40] ; 0x28
- bl SeqReadByte
- ldr r1, [r5, #40] ; 0x28
- add r1, r1, #1
- str r1, [r5, #40] ; 0x28
- orr r0, r4, r0, lsl #8
- mov r0, r0, lsl #16
- mov r0, r0, lsr #16
- add sp, sp, #4
- ldmia sp!, {r4, r5, lr}
- bx lr
-
- arm_func_start SeqReadByte
-SeqReadByte: ; 0x037FE968
- stmdb sp!, {r4, lr}
- mov r4, r0
- ldr r0, _037FE9B0 ; =sSeqCacheRange
- ldr r1, [r0]
- cmp r4, r1
- bcc _037FE98C
- ldr r0, [r0, #4]
- cmp r4, r0
- bcc _037FE994
-_037FE98C:
- mov r0, r4
- bl SeqCacheFetch
-_037FE994:
- ldr r0, _037FE9B0 ; =sSeqCacheRange
- ldr r0, [r0]
- sub r1, r4, r0
- ldr r0, _037FE9B4 ; =sSeqCache
- ldrb r0, [r0, r1]
- ldmia sp!, {r4, lr}
- bx lr
-_037FE9B0: .word sSeqCacheRange
-_037FE9B4: .word sSeqCache
-
- arm_func_start SeqCacheFetch
-SeqCacheFetch: ; 0x037FE9B8
- bic r2, r0, #3
- ldr r0, _037FE9F0 ; =sSeqCacheRange
- str r2, [r0]
- add r1, r2, #16
- str r1, [r0, #4]
- ldr r1, [r2]
- str r1, [r0, #8]
- ldr r1, [r2, #4]
- str r1, [r0, #12]
- ldr r1, [r2, #8]
- str r1, [r0, #16]
- ldr r1, [r2, #12]
- str r1, [r0, #20]
- bx lr
-_037FE9F0: .word sSeqCacheRange