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