diff options
| author | GriffinR <griffin.g.richards@gmail.com> | 2019-09-03 22:22:14 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-09-03 22:22:14 -0400 | 
| commit | 6b04ea0727973e66227b31caa2ccdcb6f2b4891f (patch) | |
| tree | 4d5e4e5d1b6e480bd195d8a9a29703e6475cc2e9 /asm/m4a_1.s | |
| parent | ecf2097abb1481109578b7b8260fd40606f27abe (diff) | |
| parent | 1f4c88c95243e8d75f25d5b7868c837c47aa578d (diff) | |
Merge branch 'master' into document-eventscripts
Diffstat (limited to 'asm/m4a_1.s')
| -rw-r--r-- | asm/m4a_1.s | 1934 | 
1 files changed, 0 insertions, 1934 deletions
| diff --git a/asm/m4a_1.s b/asm/m4a_1.s deleted file mode 100644 index cab4ed174..000000000 --- a/asm/m4a_1.s +++ /dev/null @@ -1,1934 +0,0 @@ -	.include "asm/macros.inc" -	.include "constants/gba_constants.inc" -	.include "constants/m4a_constants.inc" - -	.syntax unified - -	.text - -	thumb_func_start umul3232H32 -umul3232H32: -	adr r2, __umul3232H32 -	bx r2 -	.arm -__umul3232H32: -	umull r2, r3, r0, r1 -	add r0, r3, 0 -	bx lr -	thumb_func_end umul3232H32 - -	thumb_func_start SoundMain -SoundMain: -	ldr r0, lt_SOUND_INFO_PTR -	ldr r0, [r0] -	ldr r2, lt_ID_NUMBER -	ldr r3, [r0, o_SoundInfo_ident] -	cmp r2, r3 -	beq SoundMain_1 -	bx lr @ Exit the function if ident doesn't match ID_NUMBER. -SoundMain_1: -	adds r3, 1 -	str r3, [r0, o_SoundInfo_ident] -	push {r4-r7,lr} -	mov r1, r8 -	mov r2, r9 -	mov r3, r10 -	mov r4, r11 -	push {r0-r4} -	sub sp, 0x18 -	ldrb r1, [r0, o_SoundInfo_maxLines] -	cmp r1, 0 @ if maxLines is 0, there is no maximum -	beq SoundMain_3 -	ldr r2, lt_REG_VCOUNT -	ldrb r2, [r2] -	cmp r2, VCOUNT_VBLANK -	bhs SoundMain_2 -	adds r2, TOTAL_SCANLINES -SoundMain_2: -	adds r1, r2 -SoundMain_3: -	str r1, [sp, 0x14] -	ldr r3, [r0, o_SoundInfo_func] -	cmp r3, 0 -	beq SoundMain_4 -	ldr r0, [r0, o_SoundInfo_intp] -	bl _081DD25E -	ldr r0, [sp, 0x18] -SoundMain_4: -	ldr r3, [r0, o_SoundInfo_CgbSound] -	bl _081DD25E -	ldr r0, [sp, 0x18] -	ldr r3, [r0, o_SoundInfo_pcmSamplesPerVBlank] -	mov r8, r3 -	ldr r5, lt_o_SoundInfo_pcmBuffer -	adds r5, r0 -	ldrb r4, [r0, o_SoundInfo_pcmDmaCounter] -	subs r7, r4, 1 -	bls SoundMain_5 -	ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] -	subs r1, r7 -	mov r2, r8 -	muls r2, r1 -	adds r5, r2 -SoundMain_5: -	str r5, [sp, 0x8] -	ldr r6, lt_PCM_DMA_BUF_SIZE -	ldr r3, lt_SoundMainRAM_Buffer -	bx r3 - -	.align 2, 0 -lt_SOUND_INFO_PTR:        .word SOUND_INFO_PTR -lt_ID_NUMBER:             .word ID_NUMBER -lt_SoundMainRAM_Buffer:   .word SoundMainRAM_Buffer + 1 -lt_REG_VCOUNT:            .word REG_VCOUNT -lt_o_SoundInfo_pcmBuffer: .word o_SoundInfo_pcmBuffer -lt_PCM_DMA_BUF_SIZE:      .word PCM_DMA_BUF_SIZE -	thumb_func_end SoundMain - -	thumb_func_start SoundMainRAM -SoundMainRAM: -	ldrb r3, [r0, o_SoundInfo_reverb] -	cmp r3, 0 -	beq SoundMainRAM_NoReverb -	adr r1, SoundMainRAM_Reverb -	bx r1 -	.arm -SoundMainRAM_Reverb: -	cmp r4, 0x2 -	addeq r7, r0, o_SoundInfo_pcmBuffer -	addne r7, r5, r8 -	mov r4, r8 -_081DCEC4: -	ldrsb r0, [r5, r6] -	ldrsb r1, [r5] -	add r0, r0, r1 -	ldrsb r1, [r7, r6] -	add r0, r0, r1 -	ldrsb r1, [r7], 0x1 -	add r0, r0, r1 -	mul r1, r0, r3 -	mov r0, r1, asr 9 -	tst r0, 0x80 -	addne r0, r0, 0x1 -	strb r0, [r5, r6] -	strb r0, [r5], 0x1 -	subs r4, r4, 0x1 -	bgt _081DCEC4 -	adr r0, _081DCF36 + 1 @ plus 1 because THUMB -	bx r0 -	.thumb -SoundMainRAM_NoReverb: -	movs r0, 0 -	mov r1, r8 -	adds r6, r5 -	lsrs r1, 3 -	bcc SoundMainRAM_NoReverb_Ok -	stm r5!, {r0} -	stm r6!, {r0} -SoundMainRAM_NoReverb_Ok: -	lsrs r1, 1 -	bcc SoundMainRAM_NoReverb_Loop -	stm r5!, {r0} -	stm r6!, {r0} -	stm r5!, {r0} -	stm r6!, {r0} -SoundMainRAM_NoReverb_Loop: -	stm r5!, {r0} -	stm r6!, {r0} -	stm r5!, {r0} -	stm r6!, {r0} -	stm r5!, {r0} -	stm r6!, {r0} -	stm r5!, {r0} -	stm r6!, {r0} -	subs r1, 1 -	bgt SoundMainRAM_NoReverb_Loop -_081DCF36: -	ldr r4, [sp, 0x18] -	ldr r0, [r4, o_SoundInfo_divFreq] -	mov r12, r0 -	ldrb r0, [r4, o_SoundInfo_maxChans] -	adds r4, o_SoundInfo_chans - -SoundMainRAM_ChanLoop: -	str r0, [sp, 0x4] -	ldr r3, [r4, o_SoundChannel_wav] -	ldr r0, [sp, 0x14] -	cmp r0, 0 -	beq _081DCF60 -	ldr r1, =REG_VCOUNT -	ldrb r1, [r1] -	cmp r1, VCOUNT_VBLANK -	bhs _081DCF54 -	adds r1, TOTAL_SCANLINES -_081DCF54: -	cmp r1, r0 -	blo _081DCF60 -	b _081DD24A - -	.pool - -_081DCF60: -	ldrb r6, [r4, o_SoundChannel_status] -	movs r0, 0xC7 -	tst r0, r6 -	bne _081DCF6A -	b _081DD240 -_081DCF6A: -	movs r0, 0x80 -	tst r0, r6 -	beq _081DCFA0 -	movs r0, 0x40 -	tst r0, r6 -	bne _081DCFB0 -	movs r6, 0x3 -	strb r6, [r4, o_SoundChannel_status] -	adds r0, r3, 0 -	adds r0, 0x10 -	ldr r1, [r4, o_SoundChannel_ct] -	adds r0, r1 -	str r0, [r4, o_SoundChannel_cp] -	ldr r0, [r3, 0xC] -	subs r0, r1 -	str r0, [r4, o_SoundChannel_ct] -	movs r5, 0 -	strb r5, [r4, o_SoundChannel_ev] -	str r5, [r4, o_SoundChannel_fw] -	ldrb r2, [r3, 0x3] -	movs r0, 0xC0 -	tst r0, r2 -	beq _081DCFF8 -	movs r0, 0x10 -	orrs r6, r0 -	strb r6, [r4, o_SoundChannel_status] -	b _081DCFF8 -_081DCFA0: -	ldrb r5, [r4, o_SoundChannel_ev] -	movs r0, 0x4 -	tst r0, r6 -	beq _081DCFB6 -	ldrb r0, [r4, o_SoundChannel_iel] -	subs r0, 1 -	strb r0, [r4, o_SoundChannel_iel] -	bhi _081DD006 -_081DCFB0: -	movs r0, 0 -	strb r0, [r4, o_SoundChannel_status] -	b _081DD240 -_081DCFB6: -	movs r0, 0x40 -	tst r0, r6 -	beq _081DCFD6 -	ldrb r0, [r4, o_SoundChannel_release] -	muls r5, r0 -	lsrs r5, 8 -	ldrb r0, [r4, o_SoundChannel_iev] -	cmp r5, r0 -	bhi _081DD006 -_081DCFC8: -	ldrb r5, [r4, o_SoundChannel_iev] -	cmp r5, 0 -	beq _081DCFB0 -	movs r0, 0x4 -	orrs r6, r0 -	strb r6, [r4, o_SoundChannel_status] -	b _081DD006 -_081DCFD6: -	movs r2, 0x3 -	ands r2, r6 -	cmp r2, 0x2 -	bne _081DCFF4 -	ldrb r0, [r4, o_SoundChannel_decay] -	muls r5, r0 -	lsrs r5, 8 -	ldrb r0, [r4, o_SoundChannel_sustain] -	cmp r5, r0 -	bhi _081DD006 -	adds r5, r0, 0 -	beq _081DCFC8 -	subs r6, 0x1 -	strb r6, [r4, o_SoundChannel_status] -	b _081DD006 -_081DCFF4: -	cmp r2, 0x3 -	bne _081DD006 -_081DCFF8: -	ldrb r0, [r4, o_SoundChannel_attack] -	adds r5, r0 -	cmp r5, 0xFF -	bcc _081DD006 -	movs r5, 0xFF -	subs r6, 0x1 -	strb r6, [r4, o_SoundChannel_status] -_081DD006: -	strb r5, [r4, o_SoundChannel_ev] -	ldr r0, [sp, 0x18] -	ldrb r0, [r0, o_SoundChannel_release] -	adds r0, 0x1 -	muls r0, r5 -	lsrs r5, r0, 4 -	ldrb r0, [r4, o_SoundChannel_rightVolume] -	muls r0, r5 -	lsrs r0, 8 -	strb r0, [r4, o_SoundChannel_er] -	ldrb r0, [r4, o_SoundChannel_leftVolume] -	muls r0, r5 -	lsrs r0, 8 -	strb r0, [r4, o_SoundChannel_el] -	movs r0, 0x10 -	ands r0, r6 -	str r0, [sp, 0x10] -	beq _081DD03A -	adds r0, r3, 0 -	adds r0, 0x10 -	ldr r1, [r3, 0x8] -	adds r0, r1 -	str r0, [sp, 0xC] -	ldr r0, [r3, 0xC] -	subs r0, r1 -	str r0, [sp, 0x10] -_081DD03A: -	ldr r5, [sp, 0x8] -	ldr r2, [r4, o_SoundChannel_ct] -	ldr r3, [r4, o_SoundChannel_cp] -	adr r0, _081DD044 -	bx r0 -	.arm -_081DD044: -	str r8, [sp] -	ldr r9, [r4, o_SoundChannel_fw] -	ldrb r10, [r4, o_SoundChannel_er] -	ldrb r11, [r4, o_SoundChannel_el] -	ldrb r0, [r4, o_SoundChannel_type] -	tst r0, 0x30 -	beq _081DD068 -	bl sub_82DF49C -	b _081DD228 -_081DD068: -	mov r10, r10, lsl 16 -	mov r11, r11, lsl 16 -	ldrb r0, [r4, o_SoundChannel_type] -	tst r0, 0x8 -	beq _081DD19C -_081DD07C: -	cmp r2, 0x4 -	ble _081DD0EC -	subs r2, r2, r8 -	movgt r9, 0 -	bgt _081DD0A8 -	mov r9, r8 -	add r2, r2, r8 -	sub r8, r2, 0x4 -	sub r9, r9, r8 -	ands r2, r2, 0x3 -	moveq r2, 0x4 -_081DD0A8: -	ldr r6, [r5] -	ldr r7, [r5, 0x630] -_081DD0B0: -	ldrsb r0, [r3], 0x1 -	mul r1, r10, r0 -	bic r1, r1, 0xFF0000 -	add r6, r1, r6, ror 8 -	mul r1, r11, r0 -	bic r1, r1, 0xFF0000 -	add r7, r1, r7, ror 8 -	adds r5, r5, 0x40000000 -	bcc _081DD0B0 -	str r7, [r5, 0x630] -	str r6, [r5], 0x4 -	subs r8, r8, 0x4 -	bgt _081DD0A8 -	adds r8, r8, r9 -	beq _081DD22C -_081DD0EC: -	ldr r6, [r5] -	ldr r7, [r5, 0x630] -_081DD0F4: -	ldrsb r0, [r3], 0x1 -	mul r1, r10, r0 -	bic r1, r1, 0xFF0000 -	add r6, r1, r6, ror 8 -	mul r1, r11, r0 -	bic r1, r1, 0xFF0000 -	add r7, r1, r7, ror 8 -	subs r2, r2, 0x1 -	beq _081DD164 -_081DD118: -	adds r5, r5, 0x40000000 -	bcc _081DD0F4 -	str r7, [r5, 0x630] -	str r6, [r5], 0x4 -	subs r8, r8, 0x4 -	bgt _081DD07C -	b _081DD22C -_081DD134: -	ldr r0, [sp, 0x18] -	cmp r0, 0 -	beq _081DD158 -	ldr r3, [sp, 0x14] -	rsb lr, r2, 0 -_081DD148: -	adds r2, r0, r2 -	bgt _081DD1FC -	sub lr, lr, r0 -	b _081DD148 -_081DD158: -	pop {r4,r12} -	mov r2, 0 -	b _081DD174 -_081DD164: -	ldr r2, [sp, 0x10] -	cmp r2, 0 -	ldrne r3, [sp, 0xC] -	bne _081DD118 -_081DD174: -	strb r2, [r4, o_SoundChannel_status] -	mov r0, r5, lsr 30 -	bic r5, r5, 0xC0000000 -	rsb r0, r0, 0x3 -	mov r0, r0, lsl 3 -	mov r6, r6, ror r0 -	mov r7, r7, ror r0 -	str r7, [r5, 0x630] -	str r6, [r5], 0x4 -	b _081DD234 -_081DD19C: -	push {r4,r12} -	ldr r1, [r4, o_SoundChannel_freq] -	mul r4, r12, r1 -	ldrsb r0, [r3] -	ldrsb r1, [r3, 0x1]! -	sub r1, r1, r0 -_081DD1B4: -	ldr r6, [r5] -	ldr r7, [r5, 0x630] -_081DD1BC: -	mul lr, r9, r1 -	add lr, r0, lr, asr 23 -	mul r12, r10, lr -	bic r12, r12, 0xFF0000 -	add r6, r12, r6, ror 8 -	mul r12, r11, lr -	bic r12, r12, 0xFF0000 -	add r7, r12, r7, ror 8 -	add r9, r9, r4 -	movs lr, r9, lsr 23 -	beq _081DD208 -	bic r9, r9, 0x3F800000 -	subs r2, r2, lr -	ble _081DD134 -	subs lr, lr, 0x1 -	addeq r0, r0, r1 -_081DD1FC: -	ldrsbne r0, [r3, lr]! -	ldrsb r1, [r3, 0x1]! -	sub r1, r1, r0 -_081DD208: -	adds r5, r5, 0x40000000 -	bcc _081DD1BC -	str r7, [r5, 0x630] -	str r6, [r5], 0x4 -	subs r8, r8, 0x4 -	bgt _081DD1B4 -	sub r3, r3, 0x1 -	pop {r4,r12} -_081DD228: -	str r9, [r4, o_SoundChannel_fw] -_081DD22C: -	str r2, [r4, o_SoundChannel_ct] -	str r3, [r4, o_SoundChannel_cp] -_081DD234: -	ldr r8, [sp] -	add r0, pc, 0x1 -	bx r0 -	.thumb -_081DD240: -	ldr r0, [sp, 0x4] -	subs r0, 1 -	ble _081DD24A -	adds r4, SoundChannel_size -	b SoundMainRAM_ChanLoop -_081DD24A: -	ldr r0, [sp, 0x18] -	ldr r3, =ID_NUMBER -	str r3, [r0] -	add sp, 0x1C -	pop {r0-r7} -	mov r8, r0 -	mov r9, r1 -	mov r10, r2 -	mov r11, r3 -	pop {r3} -_081DD25E: -	bx r3 -	.pool -	thumb_func_end SoundMainRAM - -	arm_func_start sub_82DF49C -sub_82DF49C: -	ldr r6, [r4, o_SoundChannel_wav] -	ldrb r0, [r4, o_SoundChannel_status] -	tst r0, 0x20 -	bne _081DD2B4 -	orr r0, r0, 0x20 -	strb r0, [r4, o_SoundChannel_status] -	ldrb r0, [r4, o_SoundChannel_type] -	tst r0, 0x10 -	beq _081DD29C -	ldr r1, [r6, 0xC] -	add r1, r1, r6, lsl 1 -	add r1, r1, 0x20 -	sub r3, r1, r3 -	str r3, [r4, o_SoundChannel_cp] -_081DD29C: -	ldrh r0, [r6] -	cmp r0, 0 -	beq _081DD2B4 -	sub r3, r3, r6 -	sub r3, r3, 0x10 -	str r3, [r4, o_SoundChannel_cp] -_081DD2B4: -	push {r8,r12,lr} -	mov r10, r10, lsl 16 -	mov r11, r11, lsl 16 -	ldr r1, [r4, o_SoundChannel_freq] -	ldrb r0, [r4, o_SoundChannel_type] -	tst r0, 0x8 -	movne r8, 0x800000 -	muleq r8, r12, r1 -	ldrh r0, [r6] -	cmp r0, 0 -	beq _081DD468 -	mov r0, 0xFF000000 -	str r0, [r4, o_SoundChannel_xpi] -	ldrb r0, [r4, o_SoundChannel_type] -	tst r0, 0x10 -	bne _081DD3C0 -	bl sub_82DF758 -	mov r0, r1 -	add r3, r3, 0x1 -	bl sub_82DF758 -	sub r1, r1, r0 -_081DD308: -	ldr r6, [r5] -	ldr r7, [r5, 0x630] -_081DD310: -	mul lr, r9, r1 -	add lr, r0, lr, asr 23 -	mul r12, r10, lr -	bic r12, r12, 0xFF0000 -	add r6, r12, r6, ror 8 -	mul r12, r11, lr -	bic r12, r12, 0xFF0000 -	add r7, r12, r7, ror 8 -	add r9, r9, r8 -	movs lr, r9, lsr 23 -	beq _081DD370 -	bic r9, r9, 0x3F800000 -	subs r2, r2, lr -	ble _081DD398 -	subs lr, lr, 0x1 -	bne _081DD358 -	add r0, r0, r1 -	b _081DD364 -_081DD358: -	add r3, r3, lr -	bl sub_82DF758 -	mov r0, r1 -_081DD364: -	add r3, r3, 0x1 -	bl sub_82DF758 -	sub r1, r1, r0 -_081DD370: -	adds r5, r5, 0x40000000 -	bcc _081DD310 -	str r7, [r5, 0x630] -	str r6, [r5], 0x4 -	ldr r6, [sp] -	subs r6, r6, 0x4 -	str r6, [sp] -	bgt _081DD308 -	sub r3, r3, 0x1 -	b _081DD4F0 -_081DD398: -	ldr r0, [sp, 0x1C] -	cmp r0, 0 -	beq _081DD4F4 -	ldr r3, [r4, o_SoundChannel_wav] -	ldr r3, [r3, 0x8] -	rsb lr, r2, 0 -_081DD3B0: -	adds r2, r2, r0 -	bgt _081DD358 -	sub lr, lr, r0 -	b _081DD3B0 -_081DD3C0: -	sub r3, r3, 0x1 -	bl sub_82DF758 -	mov r0, r1 -	sub r3, r3, 0x1 -	bl sub_82DF758 -	sub r1, r1, r0 -_081DD3D8: -	ldr r6, [r5] -	ldr r7, [r5, 0x630] -_081DD3E0: -	mul lr, r9, r1 -	add lr, r0, lr, asr 23 -	mul r12, r10, lr -	bic r12, r12, 0xFF0000 -	add r6, r12, r6, ror 8 -	mul r12, r11, lr -	bic r12, r12, 0xFF0000 -	add r7, r12, r7, ror 8 -	add r9, r9, r8 -	movs lr, r9, lsr 23 -	beq _081DD440 -	bic r9, r9, 0x3F800000 -	subs r2, r2, lr -	ble _081DD4F4 -	subs lr, lr, 0x1 -	bne _081DD428 -	add r0, r0, r1 -	b _081DD434 -_081DD428: -	sub r3, r3, lr -	bl sub_82DF758 -	mov r0, r1 -_081DD434: -	sub r3, r3, 0x1 -	bl sub_82DF758 -	sub r1, r1, r0 -_081DD440: -	adds r5, r5, 0x40000000 -	bcc _081DD3E0 -	str r7, [r5, 0x630] -	str r6, [r5], 0x4 -	ldr r6, [sp] -	subs r6, r6, 0x4 -	str r6, [sp] -	bgt _081DD3D8 -	add r3, r3, 0x2 -	b _081DD4F0 -_081DD468: -	ldrb r0, [r4, o_SoundChannel_type] -	tst r0, 0x10 -	beq _081DD4F0 -	ldrsb r0, [r3, -0x1]! -	ldrsb r1, [r3, -0x1] -	sub r1, r1, r0 -_081DD480: -	ldr r6, [r5] -	ldr r7, [r5, 0x630] -_081DD488: -	mul lr, r9, r1 -	add lr, r0, lr, asr 23 -	mul r12, r10, lr -	bic r12, r12, 0xFF0000 -	add r6, r12, r6, ror 8 -	mul r12, r11, lr -	bic r12, r12, 0xFF0000 -	add r7, r12, r7, ror 8 -	add r9, r9, r8 -	movs lr, r9, lsr 23 -	beq _081DD4CC -	bic r9, r9, 0x3F800000 -	subs r2, r2, lr -	ble _081DD4F4 -	ldrsb r0, [r3, -lr]! -	ldrsb r1, [r3, -0x1] -	sub r1, r1, r0 -_081DD4CC: -	adds r5, r5, 0x40000000 -	bcc _081DD488 -	str r7, [r5, 0x630] -	str r6, [r5], 0x4 -	ldr r6, [sp] -	subs r6, r6, 0x4 -	str r6, [sp] -	bgt _081DD480 -	add r3, r3, 0x1 -_081DD4F0: -	pop {r8,r12,pc} -_081DD4F4: -	mov r2, 0 -	strb r2, [r4, o_SoundChannel_status] -	mov r0, r5, lsr 30 -	bic r5, r5, 0xC0000000 -	rsb r0, r0, 0x3 -	mov r0, r0, lsl 3 -	mov r6, r6, ror r0 -	mov r7, r7, ror r0 -	str r7, [r5, 0x630] -	str r6, [r5], 0x4 -	pop {r8,r12,pc} -	arm_func_end sub_82DF49C - -	arm_func_start sub_82DF758 -sub_82DF758: -	push {r0,r2,r5-r7,lr} -	mov r0, r3, lsr 6 -	ldr r1, [r4, o_SoundChannel_xpi] -	cmp r0, r1 -	beq _081DD594 -	str r0, [r4, o_SoundChannel_xpi] -	mov r1, 0x21 -	mul r2, r1, r0 -	ldr r1, [r4, o_SoundChannel_wav] -	add r2, r2, r1 -	add r2, r2, 0x10 -	ldr r5, =gUnknown_03001300 -	ldr r6, =gDeltaEncodingTable -	mov r7, 0x40 -	ldrb lr, [r2], 1 -	strb lr, [r5], 1 -	ldrb r1, [r2], 1 -	b _081DD57C -_081DD568: -	ldrb r1, [r2], 1 -	mov r0, r1, lsr 4 -	ldrsb r0, [r6, r0] -	add lr, lr, r0 -	strb lr, [r5], 1 -_081DD57C: -	and r0, r1, 0xF -	ldrsb r0, [r6, r0] -	add lr, lr, r0 -	strb lr, [r5], 1 -	subs r7, r7, 2 -	bgt _081DD568 -_081DD594: -	ldr r5, =gUnknown_03001300 -	and r0, r3, 0x3F -	ldrsb r1, [r5, r0] -	pop {r0,r2,r5-r7,pc} -	.pool -	arm_func_end sub_82DF758 - -	thumb_func_start SoundMainBTM -SoundMainBTM: -	mov r12, r4 -	movs r1, 0 -	movs r2, 0 -	movs r3, 0 -	movs r4, 0 -	stm r0!, {r1-r4} -	stm r0!, {r1-r4} -	stm r0!, {r1-r4} -	stm r0!, {r1-r4} -	mov r4, r12 -	bx lr -	thumb_func_end SoundMainBTM - -	thumb_func_start RealClearChain -RealClearChain: -	ldr r3, [r0, 0x2C] -	cmp r3, 0 -	beq _081DD5E2 -	ldr r1, [r0, 0x34] -	ldr r2, [r0, 0x30] -	cmp r2, 0 -	beq _081DD5D6 -	str r1, [r2, 0x34] -	b _081DD5D8 -_081DD5D6: -	str r1, [r3, 0x20] -_081DD5D8: -	cmp r1, 0 -	beq _081DD5DE -	str r2, [r1, 0x30] -_081DD5DE: -	movs r1, 0 -	str r1, [r0, 0x2C] -_081DD5E2: -	bx lr -	thumb_func_end RealClearChain - -	thumb_func_start ply_fine -ply_fine: -	push {r4,r5,lr} -	adds r5, r1, 0 -	ldr r4, [r5, o_MusicPlayerTrack_chan] -	cmp r4, 0 -	beq ply_fine_done -ply_fine_loop: -	ldrb r1, [r4] -	movs r0, 0xC7 -	tst r0, r1 -	beq ply_fine_ok -	movs r0, 0x40 -	orrs r1, r0 -	strb r1, [r4] -ply_fine_ok: -	adds r0, r4, 0 -	bl RealClearChain -	ldr r4, [r4, 0x34] -	cmp r4, 0 -	bne ply_fine_loop -ply_fine_done: -	movs r0, 0 -	strb r0, [r5] -	pop {r4,r5} -	pop {r0} -	bx r0 -	thumb_func_end ply_fine - -	thumb_func_start MPlayJumpTableCopy -MPlayJumpTableCopy: -	mov r12, lr -	movs r1, 0x24 -	ldr r2, lt_MPlayJumpTableTemplate -MPlayJumpTableCopy_Loop: -	ldr r3, [r2] -	bl chk_adr_r2 -	stm r0!, {r3} -	adds r2, 0x4 -	subs r1, 0x1 -	bgt MPlayJumpTableCopy_Loop -	bx r12 -	thumb_func_end MPlayJumpTableCopy - -	.align 2, 0 -	.thumb_func -ldrb_r3_r2: -	ldrb r3, [r2] - -@ This attempts to protect against reading anything from the BIOS ROM -@ besides the jump table template. -@ It assumes that the jump table template is located at the end of the ROM. -	.thumb_func -chk_adr_r2: -	push {r0} -	lsrs r0, r2, 25 -	bne chk_adr_r2_done @ if adr >= 0x2000000 (i.e. not in BIOS ROM), accept it -	ldr r0, lt_MPlayJumpTableTemplate -	cmp r2, r0 -	blo chk_adr_r2_reject @ if adr < gMPlayJumpTableTemplate, reject it -	lsrs r0, r2, 14 -	beq chk_adr_r2_done @ if adr < 0x40000 (i.e. in BIOS ROM), accept it -chk_adr_r2_reject: -	movs r3, 0 -chk_adr_r2_done: -	pop {r0} -	bx lr - -	.align 2, 0 -lt_MPlayJumpTableTemplate: .word gMPlayJumpTableTemplate - -	thumb_func_start ld_r3_tp_adr_i -ld_r3_tp_adr_i: -	ldr r2, [r1, 0x40] -_081DD64A: -	adds r3, r2, 0x1 -	str r3, [r1, 0x40] -	ldrb r3, [r2] -	b chk_adr_r2 -	thumb_func_end ld_r3_tp_adr_i - -	thumb_func_start ply_goto -ply_goto: -	push {lr} -ply_goto_1: -	ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] -	ldrb r0, [r2, 0x3] -	lsls r0, 8 -	ldrb r3, [r2, 0x2] -	orrs r0, r3 -	lsls r0, 8 -	ldrb r3, [r2, 0x1] -	orrs r0, r3 -	lsls r0, 8 -	bl ldrb_r3_r2 -	orrs r0, r3 -	str r0, [r1, o_MusicPlayerTrack_cmdPtr] -	pop {r0} -	bx r0 -	thumb_func_end ply_goto - -	thumb_func_start ply_patt -ply_patt: -	ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] -	cmp r2, 3 -	bhs ply_patt_done -	lsls r2, 2 -	adds r3, r1, r2 -	ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] -	adds r2, 0x4 -	str r2, [r3, o_MusicPlayerTrack_patternStack] -	ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] -	adds r2, 1 -	strb r2, [r1, o_MusicPlayerTrack_patternLevel] -	b ply_goto -ply_patt_done: -	b ply_fine -	thumb_func_end ply_patt - -	thumb_func_start ply_pend -ply_pend: -	ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] -	cmp r2, 0 -	beq ply_pend_done -	subs r2, 1 -	strb r2, [r1, o_MusicPlayerTrack_patternLevel] -	lsls r2, 2 -	adds r3, r1, r2 -	ldr r2, [r3, o_MusicPlayerTrack_patternStack] -	str r2, [r1, o_MusicPlayerTrack_cmdPtr] -ply_pend_done: -	bx lr -	thumb_func_end ply_pend - -	thumb_func_start ply_rept -ply_rept: -	push {lr} -	ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] -	ldrb r3, [r2] -	cmp r3, 0 -	bne ply_rept_1 -	adds r2, 1 -	str r2, [r1, o_MusicPlayerTrack_cmdPtr] -	b ply_goto_1 -ply_rept_1: -	ldrb r3, [r1, o_MusicPlayerTrack_repN] -	adds r3, 1 -	strb r3, [r1, o_MusicPlayerTrack_repN] -	mov r12, r3 -	bl ld_r3_tp_adr_i -	cmp r12, r3 -	bhs ply_rept_2 -	b ply_goto_1 -ply_rept_2: -	movs r3, 0 -	strb r3, [r1, o_MusicPlayerTrack_repN] -	adds r2, 5 -	str r2, [r1, o_MusicPlayerTrack_cmdPtr] -	pop {r0} -	bx r0 -	thumb_func_end ply_rept - -	thumb_func_start ply_prio -ply_prio: -	mov r12, lr -	bl ld_r3_tp_adr_i -	strb r3, [r1, o_MusicPlayerTrack_priority] -	bx r12 -	thumb_func_end ply_prio - -	thumb_func_start ply_tempo -ply_tempo: -	mov r12, lr -	bl ld_r3_tp_adr_i -	lsls r3, 1 -	strh r3, [r0, o_MusicPlayerInfo_tempoD] -	ldrh r2, [r0, o_MusicPlayerInfo_tempoU] -	muls r3, r2 -	lsrs r3, 8 -	strh r3, [r0, o_MusicPlayerInfo_tempoI] -	bx r12 -	thumb_func_end ply_tempo - -	thumb_func_start ply_keysh -ply_keysh: -	mov r12, lr -	bl ld_r3_tp_adr_i -	strb r3, [r1, o_MusicPlayerTrack_keyShift] -	ldrb r3, [r1, o_MusicPlayerTrack_flags] -	movs r2, 0xC -	orrs r3, r2 -	strb r3, [r1, o_MusicPlayerTrack_flags] -	bx r12 -	thumb_func_end ply_keysh - -	thumb_func_start ply_voice -ply_voice: -	mov r12, lr -	ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] -	ldrb r3, [r2] -	adds r2, 1 -	str r2, [r1, o_MusicPlayerTrack_cmdPtr] -	lsls r2, r3, 1 -	adds r2, r3 -	lsls r2, 2 -	ldr r3, [r0, o_MusicPlayerInfo_tone] -	adds r2, r3 -	ldr r3, [r2] -	bl chk_adr_r2 -	str r3, [r1, o_MusicPlayerTrack_ToneData_type] -	ldr r3, [r2, 0x4] -	bl chk_adr_r2 -	str r3, [r1, o_MusicPlayerTrack_ToneData_wav] -	ldr r3, [r2, 0x8] -	bl chk_adr_r2 -	str r3, [r1, o_MusicPlayerTrack_ToneData_attack] -	bx r12 -	thumb_func_end ply_voice - -	thumb_func_start ply_vol -ply_vol: -	mov r12, lr -	bl ld_r3_tp_adr_i -	strb r3, [r1, o_MusicPlayerTrack_vol] -	ldrb r3, [r1, o_MusicPlayerTrack_flags] -	movs r2, 0x3 -	orrs r3, r2 -	strb r3, [r1, o_MusicPlayerTrack_flags] -	bx r12 -	thumb_func_end ply_vol - -	thumb_func_start ply_pan -ply_pan: -	mov r12, lr -	bl ld_r3_tp_adr_i -	subs r3, 0x40 -	strb r3, [r1, o_MusicPlayerTrack_pan] -	ldrb r3, [r1, o_MusicPlayerTrack_flags] -	movs r2, 0x3 -	orrs r3, r2 -	strb r3, [r1, o_MusicPlayerTrack_flags] -	bx r12 -	thumb_func_end ply_pan - -	thumb_func_start ply_bend -ply_bend: -	mov r12, lr -	bl ld_r3_tp_adr_i -	subs r3, 0x40 -	strb r3, [r1, o_MusicPlayerTrack_bend] -	ldrb r3, [r1, o_MusicPlayerTrack_flags] -	movs r2, 0xC -	orrs r3, r2 -	strb r3, [r1, o_MusicPlayerTrack_flags] -	bx r12 -	thumb_func_end ply_bend - -	thumb_func_start ply_bendr -ply_bendr: -	mov r12, lr -	bl ld_r3_tp_adr_i -	strb r3, [r1, o_MusicPlayerTrack_bendRange] -	ldrb r3, [r1, o_MusicPlayerTrack_flags] -	movs r2, 0xC -	orrs r3, r2 -	strb r3, [r1, o_MusicPlayerTrack_flags] -	bx r12 -	thumb_func_end ply_bendr - -	thumb_func_start ply_lfodl -ply_lfodl: -	mov r12, lr -	bl ld_r3_tp_adr_i -	strb r3, [r1, o_MusicPlayerTrack_lfoDelay] -	bx r12 -	thumb_func_end ply_lfodl - -	thumb_func_start ply_modt -ply_modt: -	mov r12, lr -	bl ld_r3_tp_adr_i -	ldrb r0, [r1, o_MusicPlayerTrack_modT] -	cmp r0, r3 -	beq _081DD7AA -	strb r3, [r1, o_MusicPlayerTrack_modT] -	ldrb r3, [r1, o_MusicPlayerTrack_flags] -	movs r2, 0xF -	orrs r3, r2 -	strb r3, [r1, o_MusicPlayerTrack_flags] -_081DD7AA: -	bx r12 -	thumb_func_end ply_modt - -	thumb_func_start ply_tune -ply_tune: -	mov r12, lr -	bl ld_r3_tp_adr_i -	subs r3, 0x40 -	strb r3, [r1, o_MusicPlayerTrack_tune] -	ldrb r3, [r1, o_MusicPlayerTrack_flags] -	movs r2, 0xC -	orrs r3, r2 -	strb r3, [r1, o_MusicPlayerTrack_flags] -	bx r12 -	thumb_func_end ply_tune - -	thumb_func_start ply_port -ply_port: -	mov r12, lr -	ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] -	ldrb r3, [r2] -	adds r2, 1 -	ldr r0, =REG_SOUND1CNT_L @ sound register base address -	adds r0, r3 -	bl _081DD64A -	strb r3, [r0] -	bx r12 -	.pool -	thumb_func_end ply_port - -	thumb_func_start m4aSoundVSync -m4aSoundVSync: -	ldr r0, lt2_SOUND_INFO_PTR -	ldr r0, [r0] - -	@ Exit the function if ident is not ID_NUMBER or ID_NUMBER+1. -	ldr r2, lt2_ID_NUMBER -	ldr r3, [r0, o_SoundInfo_ident] -	subs r3, r2 -	cmp r3, 1 -	bhi m4aSoundVSync_Done - -	@ Decrement the PCM DMA counter. If it reaches 0, we need to do a DMA. -	ldrb r1, [r0, o_SoundInfo_pcmDmaCounter] -	subs r1, 1 -	strb r1, [r0, o_SoundInfo_pcmDmaCounter] -	bgt m4aSoundVSync_Done - -	@ Reload the PCM DMA counter. -	ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] -	strb r1, [r0, o_SoundInfo_pcmDmaCounter] - -	ldr r2, =REG_DMA1 - -	ldr r1, [r2, 0x8] @ DMA1CNT -	lsls r1, 7 -	bcc m4aSoundVSync_SkipDMA1 @ branch if repeat bit isn't set - -	ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4 -	str r1, [r2, 0x8] @ DMA1CNT - -m4aSoundVSync_SkipDMA1: -	ldr r1, [r2, 0xC + 0x8] @ DMA2CNT -	lsls r1, 7 -	bcc m4aSoundVSync_SkipDMA2 @ branch if repeat bit isn't set - -	ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4 -	str r1, [r2, 0xC + 0x8] @ DMA2CNT - -m4aSoundVSync_SkipDMA2: - -	@ turn off DMA1/DMA2 -	movs r1, DMA_32BIT >> 8 -	lsls r1, 8 -	strh r1, [r2, 0xA]       @ DMA1CNT_H -	strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H - -	@ turn on DMA1/DMA2 direct-sound FIFO mode -	movs r1, (DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT) >> 8 -	lsls r1, 8 @ LSB is 0, so DMA_SRC_INC is used (destination is always fixed in FIFO mode) -	strh r1, [r2, 0xA]       @ DMA1CNT_H -	strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H - -m4aSoundVSync_Done: -	bx lr - -	.pool -	thumb_func_end m4aSoundVSync - -	thumb_func_start MPlayMain -MPlayMain: -	ldr r2, lt2_ID_NUMBER -	ldr r3, [r0, o_MusicPlayerInfo_ident] -	cmp r2, r3 -	beq _081DD82E -	bx lr -_081DD82E: -	adds r3, 0x1 -	str r3, [r0, o_MusicPlayerInfo_ident] -	push {r0,lr} -	ldr r3, [r0, o_MusicPlayerInfo_func] -	cmp r3, 0 -	beq _081DD840 -	ldr r0, [r0, o_MusicPlayerInfo_intp] -	bl call_r3 -_081DD840: -	pop {r0} -	push {r4-r7} -	mov r4, r8 -	mov r5, r9 -	mov r6, r10 -	mov r7, r11 -	push {r4-r7} -	adds r7, r0, 0 -	ldr r0, [r7, o_MusicPlayerInfo_status] -	cmp r0, 0 -	bge _081DD858 -	b _081DDA6C -_081DD858: -	ldr r0, lt2_SOUND_INFO_PTR -	ldr r0, [r0] -	mov r8, r0 -	adds r0, r7, 0 -	bl FadeOutBody -	ldr r0, [r7, o_MusicPlayerInfo_status] -	cmp r0, 0 -	bge _081DD86C -	b _081DDA6C -_081DD86C: -	ldrh r0, [r7, o_MusicPlayerInfo_tempoC] -	ldrh r1, [r7, o_MusicPlayerInfo_tempoI] -	adds r0, r1 -	b _081DD9BC -_081DD874: -	ldrb r6, [r7, o_MusicPlayerInfo_trackCount] -	ldr r5, [r7, o_MusicPlayerInfo_tracks] -	movs r3, 0x1 -	movs r4, 0 -_081DD87C: -	ldrb r0, [r5] -	movs r1, 0x80 -	tst r1, r0 -	bne _081DD886 -	b _081DD998 -_081DD886: -	mov r10, r3 -	orrs r4, r3 -	mov r11, r4 -	ldr r4, [r5, o_MusicPlayerTrack_chan] -	cmp r4, 0 -	beq _081DD8BA -_081DD892: -	ldrb r1, [r4] -	movs r0, 0xC7 -	tst r0, r1 -	beq _081DD8AE -	ldrb r0, [r4, 0x10] -	cmp r0, 0 -	beq _081DD8B4 -	subs r0, 0x1 -	strb r0, [r4, 0x10] -	bne _081DD8B4 -	movs r0, 0x40 -	orrs r1, r0 -	strb r1, [r4] -	b _081DD8B4 -_081DD8AE: -	adds r0, r4, 0 -	bl ClearChain -_081DD8B4: -	ldr r4, [r4, 0x34] -	cmp r4, 0 -	bne _081DD892 -_081DD8BA: -	ldrb r3, [r5, o_MusicPlayerTrack_flags] -	movs r0, 0x40 -	tst r0, r3 -	beq _081DD938 -	adds r0, r5, 0 -	bl Clear64byte -	movs r0, 0x80 -	strb r0, [r5] -	movs r0, 0x2 -	strb r0, [r5, o_MusicPlayerTrack_bendRange] -	movs r0, 0x40 -	strb r0, [r5, o_MusicPlayerTrack_volX] -	movs r0, 0x16 -	strb r0, [r5, o_MusicPlayerTrack_lfoSpeed] -	movs r0, 0x1 -	adds r1, r5, 0x6 -	strb r0, [r1, o_MusicPlayerTrack_ToneData_type - 0x6] -	b _081DD938 -_081DD8E0: -	ldr r2, [r5, o_MusicPlayerTrack_cmdPtr] -	ldrb r1, [r2] -	cmp r1, 0x80 -	bhs _081DD8EC -	ldrb r1, [r5, o_MusicPlayerTrack_runningStatus] -	b _081DD8F6 -_081DD8EC: -	adds r2, 0x1 -	str r2, [r5, o_MusicPlayerTrack_cmdPtr] -	cmp r1, 0xBD -	bcc _081DD8F6 -	strb r1, [r5, o_MusicPlayerTrack_runningStatus] -_081DD8F6: -	cmp r1, 0xCF -	bcc _081DD90C -	mov r0, r8 -	ldr r3, [r0, o_SoundInfo_plynote] -	adds r0, r1, 0 -	subs r0, 0xCF -	adds r1, r7, 0 -	adds r2, r5, 0 -	bl call_r3 -	b _081DD938 -_081DD90C: -	cmp r1, 0xB0 -	bls _081DD92E -	adds r0, r1, 0 -	subs r0, 0xB1 -	strb r0, [r7, o_MusicPlayerInfo_cmd] -	mov r3, r8 -	ldr r3, [r3, o_SoundInfo_MPlayJumpTable] -	lsls r0, 2 -	ldr r3, [r3, r0] -	adds r0, r7, 0 -	adds r1, r5, 0 -	bl call_r3 -	ldrb r0, [r5, o_MusicPlayerTrack_flags] -	cmp r0, 0 -	beq _081DD994 -	b _081DD938 -_081DD92E: -	ldr r0, lt_gClockTable -	subs r1, 0x80 -	adds r1, r0 -	ldrb r0, [r1] -	strb r0, [r5, o_MusicPlayerTrack_wait] -_081DD938: -	ldrb r0, [r5, o_MusicPlayerTrack_wait] -	cmp r0, 0 -	beq _081DD8E0 -	subs r0, 0x1 -	strb r0, [r5, o_MusicPlayerTrack_wait] -	ldrb r1, [r5, o_MusicPlayerTrack_lfoSpeed] -	cmp r1, 0 -	beq _081DD994 -	ldrb r0, [r5, o_MusicPlayerTrack_mod] -	cmp r0, 0 -	beq _081DD994 -	ldrb r0, [r5, o_MusicPlayerTrack_lfoDelayC] -	cmp r0, 0 -	beq _081DD95A -	subs r0, 0x1 -	strb r0, [r5, o_MusicPlayerTrack_lfoDelayC] -	b _081DD994 -_081DD95A: -	ldrb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] -	adds r0, r1 -	strb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] -	adds r1, r0, 0 -	subs r0, 0x40 -	lsls r0, 24 -	bpl _081DD96E -	lsls r2, r1, 24 -	asrs r2, 24 -	b _081DD972 -_081DD96E: -	movs r0, 0x80 -	subs r2, r0, r1 -_081DD972: -	ldrb r0, [r5, o_MusicPlayerTrack_mod] -	muls r0, r2 -	asrs r2, r0, 6 -	ldrb r0, [r5, o_MusicPlayerTrack_modM] -	eors r0, r2 -	lsls r0, 24 -	beq _081DD994 -	strb r2, [r5, o_MusicPlayerTrack_modM] -	ldrb r0, [r5] -	ldrb r1, [r5, o_MusicPlayerTrack_modT] -	cmp r1, 0 -	bne _081DD98E -	movs r1, 0xC -	b _081DD990 -_081DD98E: -	movs r1, 0x3 -_081DD990: -	orrs r0, r1 -	strb r0, [r5, o_MusicPlayerTrack_flags] -_081DD994: -	mov r3, r10 -	mov r4, r11 -_081DD998: -	subs r6, 0x1 -	ble _081DD9A4 -	movs r0, 0x50 -	adds r5, r0 -	lsls r3, 1 -	b _081DD87C -_081DD9A4: -	ldr r0, [r7, o_MusicPlayerInfo_clock] -	adds r0, 0x1 -	str r0, [r7, o_MusicPlayerInfo_clock] -	cmp r4, 0 -	bne _081DD9B6 -	movs r0, 0x80 -	lsls r0, 24 -	str r0, [r7, o_MusicPlayerInfo_status] -	b _081DDA6C -_081DD9B6: -	str r4, [r7, o_MusicPlayerInfo_status] -	ldrh r0, [r7, o_MusicPlayerInfo_tempoC] -	subs r0, 0x96 -_081DD9BC: -	strh r0, [r7, o_MusicPlayerInfo_tempoC] -	cmp r0, 0x96 -	bcc _081DD9C4 -	b _081DD874 -_081DD9C4: -	ldrb r2, [r7, o_MusicPlayerInfo_trackCount] -	ldr r5, [r7, o_MusicPlayerInfo_tracks] -_081DD9C8: -	ldrb r0, [r5, o_MusicPlayerTrack_flags] -	movs r1, 0x80 -	tst r1, r0 -	beq _081DDA62 -	movs r1, 0xF -	tst r1, r0 -	beq _081DDA62 -	mov r9, r2 -	adds r0, r7, 0 -	adds r1, r5, 0 -	bl TrkVolPitSet -	ldr r4, [r5, o_MusicPlayerTrack_chan] -	cmp r4, 0 -	beq _081DDA58 -_081DD9E6: -	ldrb r1, [r4, o_SoundChannel_status] -	movs r0, 0xC7 -	tst r0, r1 -	bne _081DD9F6 -	adds r0, r4, 0 -	bl ClearChain -	b _081DDA52 -_081DD9F6: -	ldrb r0, [r4, o_SoundChannel_type] -	movs r6, 0x7 -	ands r6, r0 -	ldrb r3, [r5, o_MusicPlayerTrack_flags] -	movs r0, 0x3 -	tst r0, r3 -	beq _081DDA14 -	bl ChnVolSetAsm -	cmp r6, 0 -	beq _081DDA14 -	ldrb r0, [r4, o_CgbChannel_mo] -	movs r1, 0x1 -	orrs r0, r1 -	strb r0, [r4, o_CgbChannel_mo] -_081DDA14: -	ldrb r3, [r5, o_MusicPlayerTrack_flags] -	movs r0, 0xC -	tst r0, r3 -	beq _081DDA52 -	ldrb r1, [r4, o_SoundChannel_ky] -	movs r0, 0x8 -	ldrsb r0, [r5, r0] -	adds r2, r1, r0 -	bpl _081DDA28 -	movs r2, 0 -_081DDA28: -	cmp r6, 0 -	beq _081DDA46 -	mov r0, r8 -	ldr r3, [r0, o_SoundInfo_MidiKeyToCgbFreq] -	adds r1, r2, 0 -	ldrb r2, [r5, o_MusicPlayerTrack_pitM] -	adds r0, r6, 0 -	bl call_r3 -	str r0, [r4, o_CgbChannel_fr] -	ldrb r0, [r4, o_CgbChannel_mo] -	movs r1, 0x2 -	orrs r0, r1 -	strb r0, [r4, o_CgbChannel_mo] -	b _081DDA52 -_081DDA46: -	adds r1, r2, 0 -	ldrb r2, [r5, o_MusicPlayerTrack_pitM] -	ldr r0, [r4, o_SoundChannel_wav] -	bl MidiKeyToFreq -	str r0, [r4, o_SoundChannel_freq] -_081DDA52: -	ldr r4, [r4, o_SoundChannel_np] -	cmp r4, 0 -	bne _081DD9E6 -_081DDA58: -	ldrb r0, [r5, o_MusicPlayerTrack_flags] -	movs r1, 0xF0 -	ands r0, r1 -	strb r0, [r5, o_MusicPlayerTrack_flags] -	mov r2, r9 -_081DDA62: -	subs r2, 0x1 -	ble _081DDA6C -	movs r0, 0x50 -	adds r5, r0 -	bgt _081DD9C8 -_081DDA6C: -	ldr r0, lt2_ID_NUMBER -	str r0, [r7, o_MusicPlayerInfo_ident] -	pop {r0-r7} -	mov r8, r0 -	mov r9, r1 -	mov r10, r2 -	mov r11, r3 -	pop {r3} - -call_r3: -	bx r3 - -	.align 2, 0 -lt_gClockTable:     .word gClockTable -lt2_SOUND_INFO_PTR: .word SOUND_INFO_PTR -lt2_ID_NUMBER:      .word ID_NUMBER -	thumb_func_end MPlayMain - -	thumb_func_start TrackStop -TrackStop: -	push {r4-r6,lr} -	adds r5, r1, 0 -	ldrb r1, [r5, o_MusicPlayerTrack_flags] -	movs r0, 0x80 -	tst r0, r1 -	beq TrackStop_Done -	ldr r4, [r5, o_MusicPlayerTrack_chan] -	cmp r4, 0 -	beq TrackStop_3 -	movs r6, 0 -TrackStop_Loop: -	ldrb r0, [r4, o_SoundChannel_status] -	cmp r0, 0 -	beq TrackStop_2 -	ldrb r0, [r4, o_SoundChannel_type] -	movs r3, 0x7 -	ands r0, r3 -	beq TrackStop_1 -	ldr r3, =SOUND_INFO_PTR -	ldr r3, [r3] -	ldr r3, [r3, o_SoundInfo_CgbOscOff] -	bl call_r3 -TrackStop_1: -	strb r6, [r4, o_SoundChannel_status] -TrackStop_2: -	str r6, [r4, o_SoundChannel_track] -	ldr r4, [r4, o_SoundChannel_np] -	cmp r4, 0 -	bne TrackStop_Loop -TrackStop_3: -	str r4, [r5, o_MusicPlayerTrack_chan] -TrackStop_Done: -	pop {r4-r6} -	pop {r0} -	bx r0 -	.pool -	thumb_func_end TrackStop - -	thumb_func_start ChnVolSetAsm -ChnVolSetAsm: -	ldrb r1, [r4, 0x12] -	movs r0, 0x14 -	ldrsb r2, [r4, r0] -	movs r3, 0x80 -	adds r3, r2 -	muls r3, r1 -	ldrb r0, [r5, 0x10] -	muls r0, r3 -	asrs r0, 14 -	cmp r0, 0xFF -	bls _081DDAE8 -	movs r0, 0xFF -_081DDAE8: -	strb r0, [r4, 0x2] -	movs r3, 0x7F -	subs r3, r2 -	muls r3, r1 -	ldrb r0, [r5, 0x11] -	muls r0, r3 -	asrs r0, 14 -	cmp r0, 0xFF -	bls _081DDAFC -	movs r0, 0xFF -_081DDAFC: -	strb r0, [r4, 0x3] -	bx lr -	thumb_func_end ChnVolSetAsm - -	thumb_func_start ply_note -ply_note: -	push {r4-r7,lr} -	mov r4, r8 -	mov r5, r9 -	mov r6, r10 -	mov r7, r11 -	push {r4-r7} -	sub sp, 0x18 -	str r1, [sp] -	adds r5, r2, 0 -	ldr r1, =SOUND_INFO_PTR -	ldr r1, [r1] -	str r1, [sp, 0x4] -	ldr r1, =gClockTable -	adds r0, r1 -	ldrb r0, [r0] -	strb r0, [r5, o_MusicPlayerTrack_gateTime] -	ldr r3, [r5, o_MusicPlayerTrack_cmdPtr] -	ldrb r0, [r3] -	cmp r0, 0x80 -	bhs _081DDB46 -	strb r0, [r5, o_MusicPlayerTrack_key] -	adds r3, 0x1 -	ldrb r0, [r3] -	cmp r0, 0x80 -	bhs _081DDB44 -	strb r0, [r5, o_MusicPlayerTrack_velocity] -	adds r3, 0x1 -	ldrb r0, [r3] -	cmp r0, 0x80 -	bhs _081DDB44 -	ldrb r1, [r5, o_MusicPlayerTrack_gateTime] -	adds r1, r0 -	strb r1, [r5, o_MusicPlayerTrack_gateTime] -	adds r3, 0x1 -_081DDB44: -	str r3, [r5, o_MusicPlayerTrack_cmdPtr] -_081DDB46: -	movs r0, 0 -	str r0, [sp, 0x14] -	adds r4, r5, 0 -	adds r4, o_MusicPlayerTrack_ToneData_type -	ldrb r2, [r4] -	movs r0, TONEDATA_TYPE_RHY | TONEDATA_TYPE_SPL -	tst r0, r2 -	beq _081DDB98 -	ldrb r3, [r5, o_MusicPlayerTrack_key] -	movs r0, TONEDATA_TYPE_SPL -	tst r0, r2 -	beq _081DDB66 -	ldr r1, [r5, o_MusicPlayerTrack_ToneData_keySplitTable] -	adds r1, r3 -	ldrb r0, [r1] -	b _081DDB68 -_081DDB66: -	adds r0, r3, 0 -_081DDB68: -	lsls r1, r0, 1 -	adds r1, r0 -	lsls r1, 2 -	ldr r0, [r5, o_MusicPlayerTrack_ToneData_wav] -	adds r1, r0 -	mov r9, r1 -	mov r6, r9 -	ldrb r1, [r6] -	movs r0, 0xC0 -	tst r0, r1 -	beq _081DDB80 -	b _081DDCEA -_081DDB80: -	movs r0, 0x80 -	tst r0, r2 -	beq _081DDB9C -	ldrb r1, [r6, 0x3] -	movs r0, 0x80 -	tst r0, r1 -	beq _081DDB94 -	subs r1, 0xC0 -	lsls r1, 1 -	str r1, [sp, 0x14] -_081DDB94: -	ldrb r3, [r6, 0x1] -	b _081DDB9C -_081DDB98: -	mov r9, r4 -	ldrb r3, [r5, 0x5] -_081DDB9C: -	str r3, [sp, 0x8] -	ldr r6, [sp] -	ldrb r1, [r6, 0x9] -	ldrb r0, [r5, 0x1D] -	adds r0, r1 -	cmp r0, 0xFF -	bls _081DDBAC -	movs r0, 0xFF -_081DDBAC: -	str r0, [sp, 0x10] -	mov r6, r9 -	ldrb r0, [r6] -	movs r6, 0x7 -	ands r6, r0 -	str r6, [sp, 0xC] -	beq _081DDBEC -	ldr r0, [sp, 0x4] -	ldr r4, [r0, 0x1C] -	cmp r4, 0 -	bne _081DDBC4 -	b _081DDCEA -_081DDBC4: -	subs r6, 0x1 -	lsls r0, r6, 6 -	adds r4, r0 -	ldrb r1, [r4] -	movs r0, 0xC7 -	tst r0, r1 -	beq _081DDC40 -	movs r0, 0x40 -	tst r0, r1 -	bne _081DDC40 -	ldrb r1, [r4, 0x13] -	ldr r0, [sp, 0x10] -	cmp r1, r0 -	bcc _081DDC40 -	beq _081DDBE4 -	b _081DDCEA -_081DDBE4: -	ldr r0, [r4, 0x2C] -	cmp r0, r5 -	bcs _081DDC40 -	b _081DDCEA -_081DDBEC: -	ldr r6, [sp, 0x10] -	adds r7, r5, 0 -	movs r2, 0 -	mov r8, r2 -	ldr r4, [sp, 0x4] -	ldrb r3, [r4, 0x6] -	adds r4, 0x50 -_081DDBFA: -	ldrb r1, [r4] -	movs r0, 0xC7 -	tst r0, r1 -	beq _081DDC40 -	movs r0, 0x40 -	tst r0, r1 -	beq _081DDC14 -	cmp r2, 0 -	bne _081DDC18 -	adds r2, 0x1 -	ldrb r6, [r4, 0x13] -	ldr r7, [r4, 0x2C] -	b _081DDC32 -_081DDC14: -	cmp r2, 0 -	bne _081DDC34 -_081DDC18: -	ldrb r0, [r4, 0x13] -	cmp r0, r6 -	bcs _081DDC24 -	adds r6, r0, 0 -	ldr r7, [r4, 0x2C] -	b _081DDC32 -_081DDC24: -	bhi _081DDC34 -	ldr r0, [r4, 0x2C] -	cmp r0, r7 -	bls _081DDC30 -	adds r7, r0, 0 -	b _081DDC32 -_081DDC30: -	bcc _081DDC34 -_081DDC32: -	mov r8, r4 -_081DDC34: -	adds r4, 0x40 -	subs r3, 0x1 -	bgt _081DDBFA -	mov r4, r8 -	cmp r4, 0 -	beq _081DDCEA -_081DDC40: -	adds r0, r4, 0 -	bl ClearChain -	movs r1, 0 -	str r1, [r4, 0x30] -	ldr r3, [r5, 0x20] -	str r3, [r4, 0x34] -	cmp r3, 0 -	beq _081DDC54 -	str r4, [r3, 0x30] -_081DDC54: -	str r4, [r5, 0x20] -	str r5, [r4, 0x2C] -	ldrb r0, [r5, 0x1B] -	strb r0, [r5, 0x1C] -	cmp r0, r1 -	beq _081DDC66 -	adds r1, r5, 0 -	bl clear_modM -_081DDC66: -	ldr r0, [sp] -	adds r1, r5, 0 -	bl TrkVolPitSet -	ldr r0, [r5, 0x4] -	str r0, [r4, 0x10] -	ldr r0, [sp, 0x10] -	strb r0, [r4, 0x13] -	ldr r0, [sp, 0x8] -	strb r0, [r4, 0x8] -	ldr r0, [sp, 0x14] -	strb r0, [r4, 0x14] -	mov r6, r9 -	ldrb r0, [r6] -	strb r0, [r4, 0x1] -	ldr r7, [r6, 0x4] -	str r7, [r4, 0x24] -	ldr r0, [r6, 0x8] -	str r0, [r4, 0x4] -	ldrh r0, [r5, 0x1E] -	strh r0, [r4, 0xC] -	bl ChnVolSetAsm -	ldrb r1, [r4, 0x8] -	movs r0, 0x8 -	ldrsb r0, [r5, r0] -	adds r3, r1, r0 -	bpl _081DDCA0 -	movs r3, 0 -_081DDCA0: -	ldr r6, [sp, 0xC] -	cmp r6, 0 -	beq _081DDCCE -	mov r6, r9 -	ldrb r0, [r6, 0x2] -	strb r0, [r4, 0x1E] -	ldrb r1, [r6, 0x3] -	movs r0, 0x80 -	tst r0, r1 -	bne _081DDCBA -	movs r0, 0x70 -	tst r0, r1 -	bne _081DDCBC -_081DDCBA: -	movs r1, 0x8 -_081DDCBC: -	strb r1, [r4, 0x1F] -	ldrb r2, [r5, 0x9] -	adds r1, r3, 0 -	ldr r0, [sp, 0xC] -	ldr r3, [sp, 0x4] -	ldr r3, [r3, 0x30] -	bl call_r3 -	b _081DDCDC -_081DDCCE: -	ldr r0, [r5, o_MusicPlayerTrack_unk_3C] -	str r0, [r4, 0x18] -	ldrb r2, [r5, 0x9] -	adds r1, r3, 0 -	adds r0, r7, 0 -	bl MidiKeyToFreq -_081DDCDC: -	str r0, [r4, 0x20] -	movs r0, 0x80 -	strb r0, [r4] -	ldrb r1, [r5] -	movs r0, 0xF0 -	ands r0, r1 -	strb r0, [r5] -_081DDCEA: -	add sp, 0x18 -	pop {r0-r7} -	mov r8, r0 -	mov r9, r1 -	mov r10, r2 -	mov r11, r3 -	pop {r0} -	bx r0 -	.pool -	thumb_func_end ply_note - -	thumb_func_start ply_endtie -ply_endtie: -	push {r4,r5} -	ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] -	ldrb r3, [r2] -	cmp r3, 0x80 -	bhs _081DDD16 -	strb r3, [r1, o_MusicPlayerTrack_key] -	adds r2, 0x1 -	str r2, [r1, o_MusicPlayerTrack_cmdPtr] -	b _081DDD18 -_081DDD16: -	ldrb r3, [r1, o_MusicPlayerTrack_key] -_081DDD18: -	ldr r1, [r1, o_MusicPlayerTrack_chan] -	cmp r1, 0 -	beq _081DDD40 -	movs r4, 0x83 -	movs r5, 0x40 -_081DDD22: -	ldrb r2, [r1, o_SoundChannel_status] -	tst r2, r4 -	beq _081DDD3A -	tst r2, r5 -	bne _081DDD3A -	ldrb r0, [r1, o_SoundChannel_mk] -	cmp r0, r3 -	bne _081DDD3A -	movs r0, 0x40 -	orrs r2, r0 -	strb r2, [r1, o_SoundChannel_status] -	b _081DDD40 -_081DDD3A: -	ldr r1, [r1, o_SoundChannel_np] -	cmp r1, 0 -	bne _081DDD22 -_081DDD40: -	pop {r4,r5} -	bx lr -	thumb_func_end ply_endtie - -	thumb_func_start clear_modM -clear_modM: -	movs r2, 0 -	strb r2, [r1, o_MusicPlayerTrack_modM] -	strb r2, [r1, o_MusicPlayerTrack_lfoSpeedC] -	ldrb r2, [r1, o_MusicPlayerTrack_modT] -	cmp r2, 0 -	bne _081DDD54 -	movs r2, 0xC -	b _081DDD56 -_081DDD54: -	movs r2, 0x3 -_081DDD56: -	ldrb r3, [r1, o_MusicPlayerTrack_flags] -	orrs r3, r2 -	strb r3, [r1, o_MusicPlayerTrack_flags] -	bx lr -	thumb_func_end clear_modM - -	thumb_func_start ld_r3_tp_adr_i -ld_r3_tp_adr_i_unchecked: -	ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] -	adds r3, r2, 1 -	str r3, [r1, o_MusicPlayerTrack_cmdPtr] -	ldrb r3, [r2] -	bx lr -	thumb_func_end ld_r3_tp_adr_i - -	thumb_func_start ply_lfos -ply_lfos: -	mov r12, lr -	bl ld_r3_tp_adr_i_unchecked -	strb r3, [r1, o_MusicPlayerTrack_lfoSpeed] -	cmp r3, 0 -	bne _081DDD7C -	bl clear_modM -_081DDD7C: -	bx r12 -	thumb_func_end ply_lfos - -	thumb_func_start ply_mod -ply_mod: -	mov r12, lr -	bl ld_r3_tp_adr_i_unchecked -	strb r3, [r1, o_MusicPlayerTrack_mod] -	cmp r3, 0 -	bne _081DDD90 -	bl clear_modM -_081DDD90: -	bx r12 -	thumb_func_end ply_mod - -	.align 2, 0 @ Don't pad with nop. - -    .bss -gUnknown_03001300: -    .space 0x40 -    .size gUnknown_03001300, .-gUnknown_03001300 - -    .global gMPlayTrack_BGM -gMPlayTrack_BGM: -    .space 0x320 -    .size gMPlayTrack_BGM, .-gMPlayTrack_BGM - -    .global gMPlayTrack_SE1 -gMPlayTrack_SE1: -    .space 0xF0 -    .size gMPlayTrack_SE1, .-gMPlayTrack_SE1 - -    .global gMPlayTrack_SE2 -gMPlayTrack_SE2: -    .space 0x2D0 -    .size gMPlayTrack_SE2, .-gMPlayTrack_SE2 - -    .global gMPlayTrack_SE3 -gMPlayTrack_SE3: -    .space 0x50 -    .size gMPlayTrack_SE3, .-gMPlayTrack_SE3 | 
