mirror of https://github.com/zeldaret/tmc.git
				
				
				
			
		
			
				
	
	
		
			667 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			667 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| 	.include "asm/macros.inc"
 | |
| 
 | |
| 	.include "constants/constants.inc"
 | |
| 
 | |
| 	.syntax unified
 | |
| 
 | |
| 	.text
 | |
| 
 | |
| 
 | |
| 	thumb_func_start PullableLever
 | |
| PullableLever: @ 0x080911EC
 | |
| 	push {r4, lr}
 | |
| 	adds r4, r0, #0
 | |
| 	adds r0, #0x72
 | |
| 	ldrh r0, [r0]
 | |
| 	cmp r0, #1
 | |
| 	beq _0809123C
 | |
| 	cmp r0, #1
 | |
| 	bgt _08091202
 | |
| 	cmp r0, #0
 | |
| 	beq _08091208
 | |
| 	b _08091260
 | |
| _08091202:
 | |
| 	cmp r0, #2
 | |
| 	beq _08091254
 | |
| 	b _08091260
 | |
| _08091208:
 | |
| 	ldr r1, _08091234 @ =gUnk_08122294
 | |
| 	ldrb r0, [r4, #0xc]
 | |
| 	lsls r0, r0, #2
 | |
| 	adds r0, r0, r1
 | |
| 	ldr r1, [r0]
 | |
| 	adds r0, r4, #0
 | |
| 	bl _call_via_r1
 | |
| 	adds r0, r4, #0
 | |
| 	bl sub_0800445C
 | |
| 	ldr r1, _08091238 @ =gUnk_02021F00
 | |
| 	adds r0, r4, #0
 | |
| 	adds r0, #0x74
 | |
| 	ldrb r0, [r0]
 | |
| 	lsls r0, r0, #1
 | |
| 	adds r0, r0, r1
 | |
| 	adds r1, r4, #0
 | |
| 	adds r1, #0x70
 | |
| 	ldrh r1, [r1]
 | |
| 	strh r1, [r0]
 | |
| 	b _08091260
 | |
| 	.align 2, 0
 | |
| _08091234: .4byte gUnk_08122294
 | |
| _08091238: .4byte gUnk_02021F00
 | |
| _0809123C:
 | |
| 	ldr r0, _08091250 @ =gUnk_081222A0
 | |
| 	ldrb r1, [r4, #0xc]
 | |
| 	lsls r1, r1, #2
 | |
| 	adds r1, r1, r0
 | |
| 	ldr r1, [r1]
 | |
| 	adds r0, r4, #0
 | |
| 	bl _call_via_r1
 | |
| 	b _08091260
 | |
| 	.align 2, 0
 | |
| _08091250: .4byte gUnk_081222A0
 | |
| _08091254:
 | |
| 	ldrb r0, [r4, #0xc]
 | |
| 	cmp r0, #0
 | |
| 	bne _08091260
 | |
| 	adds r0, r4, #0
 | |
| 	bl sub_08091504
 | |
| _08091260:
 | |
| 	pop {r4, pc}
 | |
| 	.align 2, 0
 | |
| 
 | |
| 	thumb_func_start sub_08091264
 | |
| sub_08091264: @ 0x08091264
 | |
| 	push {r4, r5, r6, r7, lr}
 | |
| 	adds r6, r0, #0
 | |
| 	ldr r0, _080912C4 @ =gEntCount
 | |
| 	ldrb r0, [r0]
 | |
| 	cmp r0, #0x45
 | |
| 	bhi _0809132C
 | |
| 	ldrb r1, [r6, #0xa]
 | |
| 	ldrb r2, [r6, #0xb]
 | |
| 	movs r0, #0x54
 | |
| 	bl CreateObject
 | |
| 	adds r7, r0, #0
 | |
| 	ldrb r1, [r6, #0xa]
 | |
| 	ldrb r2, [r6, #0xb]
 | |
| 	movs r0, #0x54
 | |
| 	bl CreateObject
 | |
| 	adds r1, r0, #0
 | |
| 	str r6, [r7, #0x50]
 | |
| 	str r6, [r1, #0x50]
 | |
| 	adds r0, r7, #0
 | |
| 	adds r0, #0x72
 | |
| 	movs r5, #1
 | |
| 	movs r4, #1
 | |
| 	strh r4, [r0]
 | |
| 	adds r2, r1, #0
 | |
| 	adds r2, #0x72
 | |
| 	movs r0, #2
 | |
| 	strh r0, [r2]
 | |
| 	adds r0, r6, #0
 | |
| 	bl CopyPosition
 | |
| 	movs r2, #1
 | |
| 	strb r5, [r6, #0xc]
 | |
| 	ldrb r1, [r6, #0x18]
 | |
| 	movs r0, #4
 | |
| 	rsbs r0, r0, #0
 | |
| 	ands r0, r1
 | |
| 	orrs r0, r2
 | |
| 	strb r0, [r6, #0x18]
 | |
| 	movs r0, #0x60
 | |
| 	strh r0, [r6, #0x24]
 | |
| 	ldrb r0, [r6, #0xb]
 | |
| 	ands r4, r0
 | |
| 	cmp r4, #0
 | |
| 	beq _080912CC
 | |
| 	ldr r0, _080912C8 @ =gUnk_080FD278
 | |
| 	b _080912CE
 | |
| 	.align 2, 0
 | |
| _080912C4: .4byte gEntCount
 | |
| _080912C8: .4byte gUnk_080FD278
 | |
| _080912CC:
 | |
| 	ldr r0, _08091330 @ =gUnk_080FD270
 | |
| _080912CE:
 | |
| 	str r0, [r6, #0x48]
 | |
| 	movs r0, #1
 | |
| 	strb r0, [r6, #0x16]
 | |
| 	ldr r2, _08091334 @ =gUnk_081222A8
 | |
| 	ldrb r0, [r6, #0xb]
 | |
| 	lsls r0, r0, #1
 | |
| 	adds r0, r0, r2
 | |
| 	ldrb r0, [r0]
 | |
| 	lsls r0, r0, #0x18
 | |
| 	asrs r0, r0, #0x18
 | |
| 	ldrh r1, [r6, #0x2e]
 | |
| 	adds r0, r0, r1
 | |
| 	strh r0, [r6, #0x2e]
 | |
| 	adds r1, r6, #0
 | |
| 	adds r1, #0x80
 | |
| 	strh r0, [r1]
 | |
| 	ldrb r0, [r6, #0xb]
 | |
| 	lsls r0, r0, #1
 | |
| 	adds r0, #1
 | |
| 	adds r0, r0, r2
 | |
| 	ldrb r0, [r0]
 | |
| 	lsls r0, r0, #0x18
 | |
| 	asrs r0, r0, #0x18
 | |
| 	ldrh r1, [r6, #0x32]
 | |
| 	adds r0, r0, r1
 | |
| 	strh r0, [r6, #0x32]
 | |
| 	adds r1, r6, #0
 | |
| 	adds r1, #0x82
 | |
| 	strh r0, [r1]
 | |
| 	adds r0, r6, #0
 | |
| 	adds r1, r7, #0
 | |
| 	bl CopyPosition
 | |
| 	adds r0, r6, #0
 | |
| 	adds r0, #0x7e
 | |
| 	ldrb r0, [r0]
 | |
| 	adds r1, r6, #0
 | |
| 	adds r1, #0x76
 | |
| 	strh r0, [r1]
 | |
| 	ldrb r1, [r6, #0xe]
 | |
| 	adds r0, r6, #0
 | |
| 	adds r0, #0x74
 | |
| 	strb r1, [r0]
 | |
| 	ldrb r1, [r6, #0xb]
 | |
| 	adds r0, r6, #0
 | |
| 	bl InitializeAnimation
 | |
| _0809132C:
 | |
| 	pop {r4, r5, r6, r7, pc}
 | |
| 	.align 2, 0
 | |
| _08091330: .4byte gUnk_080FD270
 | |
| _08091334: .4byte gUnk_081222A8
 | |
| 
 | |
| 	thumb_func_start sub_08091338
 | |
| sub_08091338: @ 0x08091338
 | |
| 	push {r4, lr}
 | |
| 	adds r4, r0, #0
 | |
| 	bl sub_08078930
 | |
| 	adds r0, r4, #0
 | |
| 	adds r0, #0x70
 | |
| 	ldrh r0, [r0]
 | |
| 	cmp r0, #0
 | |
| 	beq _0809135C
 | |
| 	ldrb r0, [r4, #0xb]
 | |
| 	lsls r0, r0, #3
 | |
| 	strb r0, [r4, #0x15]
 | |
| 	adds r0, r4, #0
 | |
| 	bl sub_0806F69C
 | |
| 	adds r0, r4, #0
 | |
| 	bl sub_08091660
 | |
| _0809135C:
 | |
| 	pop {r4, pc}
 | |
| 	.align 2, 0
 | |
| 
 | |
| 	thumb_func_start sub_08091360
 | |
| sub_08091360: @ 0x08091360
 | |
| 	push {r4, lr}
 | |
| 	adds r4, r0, #0
 | |
| 	bl sub_0806FBB4
 | |
| 	ldr r1, _0809137C @ =gUnk_081222B0
 | |
| 	ldrb r0, [r4, #0xd]
 | |
| 	subs r0, #5
 | |
| 	lsls r0, r0, #2
 | |
| 	adds r0, r0, r1
 | |
| 	ldr r1, [r0]
 | |
| 	adds r0, r4, #0
 | |
| 	bl _call_via_r1
 | |
| 	pop {r4, pc}
 | |
| 	.align 2, 0
 | |
| _0809137C: .4byte gUnk_081222B0
 | |
| 
 | |
| 	thumb_func_start sub_08091380
 | |
| sub_08091380: @ 0x08091380
 | |
| 	push {r4, r5, r6, r7, lr}
 | |
| 	adds r4, r0, #0
 | |
| 	ldr r7, _0809142C @ =gPlayerEntity
 | |
| 	adds r0, #0x75
 | |
| 	ldrb r0, [r0]
 | |
| 	cmp r0, #0
 | |
| 	bne _080913E0
 | |
| 	ldrb r0, [r4, #0xb]
 | |
| 	lsls r2, r0, #1
 | |
| 	ldrb r0, [r7, #0x14]
 | |
| 	cmp r2, r0
 | |
| 	bne _080913D4
 | |
| 	ldr r1, _08091430 @ =gUnk_081222B8
 | |
| 	adds r0, r2, r1
 | |
| 	ldrb r0, [r0]
 | |
| 	lsls r0, r0, #0x18
 | |
| 	asrs r0, r0, #0x18
 | |
| 	ldrh r3, [r4, #0x2e]
 | |
| 	adds r0, r0, r3
 | |
| 	lsls r0, r0, #0x10
 | |
| 	lsrs r6, r0, #0x10
 | |
| 	adds r0, r2, #1
 | |
| 	adds r0, r0, r1
 | |
| 	ldrb r0, [r0]
 | |
| 	lsls r0, r0, #0x18
 | |
| 	asrs r0, r0, #0x18
 | |
| 	ldrh r1, [r4, #0x32]
 | |
| 	adds r0, r0, r1
 | |
| 	lsls r0, r0, #0x10
 | |
| 	lsrs r5, r0, #0x10
 | |
| 	adds r0, r7, #0
 | |
| 	adds r0, #0x38
 | |
| 	ldrb r2, [r0]
 | |
| 	adds r0, r6, #0
 | |
| 	adds r1, r5, #0
 | |
| 	bl sub_080002D4
 | |
| 	subs r0, #0xf
 | |
| 	cmp r0, #0x10
 | |
| 	bls _080913D4
 | |
| 	strh r6, [r7, #0x2e]
 | |
| 	strh r5, [r7, #0x32]
 | |
| _080913D4:
 | |
| 	adds r1, r4, #0
 | |
| 	adds r1, #0x75
 | |
| 	movs r0, #1
 | |
| 	strb r0, [r1]
 | |
| 	movs r0, #2
 | |
| 	strb r0, [r4, #0xf]
 | |
| _080913E0:
 | |
| 	ldrb r0, [r7, #0x14]
 | |
| 	lsrs r0, r0, #1
 | |
| 	ldrb r3, [r4, #0xb]
 | |
| 	cmp r0, r3
 | |
| 	bne _0809142A
 | |
| 	ldr r1, _08091434 @ =gPlayerState
 | |
| 	adds r0, r1, #0
 | |
| 	adds r0, #0xa8
 | |
| 	ldrb r0, [r0]
 | |
| 	cmp r0, #0x1a
 | |
| 	bne _0809142A
 | |
| 	ldrb r1, [r1, #5]
 | |
| 	movs r5, #2
 | |
| 	adds r0, r5, #0
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	beq _0809142A
 | |
| 	ldr r0, _0809142C @ =gPlayerEntity
 | |
| 	adds r0, #0x5a
 | |
| 	ldrb r1, [r0]
 | |
| 	adds r0, r5, #0
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	beq _0809142A
 | |
| 	adds r0, r4, #0
 | |
| 	bl sub_0809153C
 | |
| 	adds r1, r4, #0
 | |
| 	adds r1, #0x75
 | |
| 	ldrb r0, [r1]
 | |
| 	cmp r0, #1
 | |
| 	bne _0809142A
 | |
| 	strb r5, [r1]
 | |
| 	movs r0, #0xcf
 | |
| 	lsls r0, r0, #1
 | |
| 	bl EnqueueSFX
 | |
| _0809142A:
 | |
| 	pop {r4, r5, r6, r7, pc}
 | |
| 	.align 2, 0
 | |
| _0809142C: .4byte gPlayerEntity
 | |
| _08091430: .4byte gUnk_081222B8
 | |
| _08091434: .4byte gPlayerState
 | |
| 
 | |
| 	thumb_func_start sub_08091438
 | |
| sub_08091438: @ 0x08091438
 | |
| 	movs r2, #0
 | |
| 	movs r1, #1
 | |
| 	strb r1, [r0, #0xc]
 | |
| 	adds r0, #0x75
 | |
| 	strb r2, [r0]
 | |
| 	bx lr
 | |
| 
 | |
| 	thumb_func_start sub_08091444
 | |
| sub_08091444: @ 0x08091444
 | |
| 	push {r4, lr}
 | |
| 	adds r4, r0, #0
 | |
| 	movs r0, #1
 | |
| 	strb r0, [r4, #0xc]
 | |
| 	adds r2, r4, #0
 | |
| 	adds r2, #0x29
 | |
| 	ldrb r1, [r2]
 | |
| 	subs r0, #9
 | |
| 	ands r0, r1
 | |
| 	movs r1, #5
 | |
| 	orrs r0, r1
 | |
| 	strb r0, [r2]
 | |
| 	ldr r0, [r4, #0x50]
 | |
| 	ldrb r1, [r0, #0xb]
 | |
| 	adds r1, #8
 | |
| 	adds r0, r4, #0
 | |
| 	bl InitializeAnimation
 | |
| 	adds r0, r4, #0
 | |
| 	bl UpdateSpriteForCollisionLayer
 | |
| 	pop {r4, pc}
 | |
| 
 | |
| 	thumb_func_start sub_08091470
 | |
| sub_08091470: @ 0x08091470
 | |
| 	push {r4, lr}
 | |
| 	adds r2, r0, #0
 | |
| 	ldr r4, [r2, #0x50]
 | |
| 	adds r3, r4, #0
 | |
| 	adds r3, #0x70
 | |
| 	ldrh r0, [r3]
 | |
| 	cmp r0, #7
 | |
| 	bhi _0809148C
 | |
| 	ldrb r1, [r2, #0x18]
 | |
| 	movs r0, #4
 | |
| 	rsbs r0, r0, #0
 | |
| 	ands r0, r1
 | |
| 	strb r0, [r2, #0x18]
 | |
| 	b _08091502
 | |
| _0809148C:
 | |
| 	ldrb r1, [r2, #0x18]
 | |
| 	movs r0, #4
 | |
| 	rsbs r0, r0, #0
 | |
| 	ands r0, r1
 | |
| 	movs r1, #1
 | |
| 	orrs r0, r1
 | |
| 	strb r0, [r2, #0x18]
 | |
| 	ldrh r0, [r3]
 | |
| 	adds r1, r0, #0
 | |
| 	subs r1, #8
 | |
| 	movs r0, #7
 | |
| 	ands r1, r0
 | |
| 	ldrb r3, [r2, #0xb]
 | |
| 	cmp r3, #1
 | |
| 	beq _080914C8
 | |
| 	cmp r3, #1
 | |
| 	bgt _080914B4
 | |
| 	cmp r3, #0
 | |
| 	beq _080914BE
 | |
| 	b _080914E2
 | |
| _080914B4:
 | |
| 	cmp r3, #2
 | |
| 	beq _080914D0
 | |
| 	cmp r3, #3
 | |
| 	beq _080914DA
 | |
| 	b _080914E2
 | |
| _080914BE:
 | |
| 	ldrh r0, [r4, #0x32]
 | |
| 	subs r0, r0, r1
 | |
| 	subs r0, #0x11
 | |
| 	strh r0, [r2, #0x32]
 | |
| 	b _080914E2
 | |
| _080914C8:
 | |
| 	ldrh r0, [r4, #0x2e]
 | |
| 	adds r0, r1, r0
 | |
| 	adds r0, #0x11
 | |
| 	b _080914E0
 | |
| _080914D0:
 | |
| 	ldrh r0, [r4, #0x32]
 | |
| 	adds r0, r1, r0
 | |
| 	adds r0, #0x11
 | |
| 	strh r0, [r2, #0x32]
 | |
| 	b _080914E2
 | |
| _080914DA:
 | |
| 	ldrh r0, [r4, #0x2e]
 | |
| 	subs r0, r0, r1
 | |
| 	subs r0, #0x11
 | |
| _080914E0:
 | |
| 	strh r0, [r2, #0x2e]
 | |
| _080914E2:
 | |
| 	adds r0, r4, #0
 | |
| 	adds r0, #0x70
 | |
| 	ldrh r0, [r0]
 | |
| 	subs r0, #8
 | |
| 	lsls r0, r0, #0xc
 | |
| 	lsrs r1, r0, #0x10
 | |
| 	ldrb r0, [r2, #0x14]
 | |
| 	cmp r1, r0
 | |
| 	beq _08091502
 | |
| 	strb r1, [r2, #0x14]
 | |
| 	lsls r1, r1, #2
 | |
| 	adds r1, r1, r3
 | |
| 	adds r1, #8
 | |
| 	adds r0, r2, #0
 | |
| 	bl InitializeAnimation
 | |
| _08091502:
 | |
| 	pop {r4, pc}
 | |
| 
 | |
| 	thumb_func_start sub_08091504
 | |
| sub_08091504: @ 0x08091504
 | |
| 	push {r4, lr}
 | |
| 	adds r4, r0, #0
 | |
| 	movs r2, #1
 | |
| 	movs r0, #1
 | |
| 	strb r0, [r4, #0xc]
 | |
| 	ldrb r1, [r4, #0x18]
 | |
| 	subs r0, #5
 | |
| 	ands r0, r1
 | |
| 	orrs r0, r2
 | |
| 	strb r0, [r4, #0x18]
 | |
| 	adds r2, r4, #0
 | |
| 	adds r2, #0x29
 | |
| 	ldrb r1, [r2]
 | |
| 	movs r0, #8
 | |
| 	rsbs r0, r0, #0
 | |
| 	ands r0, r1
 | |
| 	movs r1, #6
 | |
| 	orrs r0, r1
 | |
| 	strb r0, [r2]
 | |
| 	ldrb r1, [r4, #0xb]
 | |
| 	adds r1, #4
 | |
| 	adds r0, r4, #0
 | |
| 	bl InitializeAnimation
 | |
| 	adds r0, r4, #0
 | |
| 	bl UpdateSpriteForCollisionLayer
 | |
| 	pop {r4, pc}
 | |
| 
 | |
| 	thumb_func_start sub_0809153C
 | |
| sub_0809153C: @ 0x0809153C
 | |
| 	push {r4, r5, r6, r7, lr}
 | |
| 	mov r7, sb
 | |
| 	mov r6, r8
 | |
| 	push {r6, r7}
 | |
| 	sub sp, #4
 | |
| 	adds r5, r0, #0
 | |
| 	ldr r6, _080915A8 @ =gPlayerEntity
 | |
| 	ldr r1, _080915AC @ =gUnk_081222C0
 | |
| 	ldrb r0, [r5, #0xb]
 | |
| 	adds r0, r0, r1
 | |
| 	ldrb r0, [r0]
 | |
| 	mov r8, r0
 | |
| 	adds r0, r5, #0
 | |
| 	adds r0, #0x76
 | |
| 	adds r1, r5, #0
 | |
| 	adds r1, #0x70
 | |
| 	ldrh r0, [r0]
 | |
| 	ldrh r1, [r1]
 | |
| 	cmp r0, r1
 | |
| 	bls _08091656
 | |
| 	ldrh r4, [r6, #0x2e]
 | |
| 	ldrh r0, [r6, #0x32]
 | |
| 	mov sb, r0
 | |
| 	movs r2, #0x24
 | |
| 	ldrsh r1, [r5, r2]
 | |
| 	adds r0, r6, #0
 | |
| 	mov r2, r8
 | |
| 	str r3, [sp]
 | |
| 	bl sub_080044AE
 | |
| 	lsls r4, r4, #0x10
 | |
| 	asrs r4, r4, #0x10
 | |
| 	ldrh r2, [r6, #0x2e]
 | |
| 	movs r7, #0x2e
 | |
| 	ldrsh r0, [r6, r7]
 | |
| 	ldr r3, [sp]
 | |
| 	cmp r4, r0
 | |
| 	bne _08091596
 | |
| 	mov r1, sb
 | |
| 	lsls r0, r1, #0x10
 | |
| 	asrs r0, r0, #0x10
 | |
| 	movs r7, #0x32
 | |
| 	ldrsh r1, [r6, r7]
 | |
| 	cmp r0, r1
 | |
| 	beq _08091656
 | |
| _08091596:
 | |
| 	ldrb r0, [r5, #0xb]
 | |
| 	cmp r0, #1
 | |
| 	beq _080915CA
 | |
| 	cmp r0, #1
 | |
| 	bgt _080915B0
 | |
| 	cmp r0, #0
 | |
| 	beq _080915BA
 | |
| 	b _080915E0
 | |
| 	.align 2, 0
 | |
| _080915A8: .4byte gPlayerEntity
 | |
| _080915AC: .4byte gUnk_081222C0
 | |
| _080915B0:
 | |
| 	cmp r0, #2
 | |
| 	beq _080915CE
 | |
| 	cmp r0, #3
 | |
| 	beq _080915DA
 | |
| 	b _080915E0
 | |
| _080915BA:
 | |
| 	ldrh r1, [r6, #0x32]
 | |
| 	mov r2, sb
 | |
| 	lsls r0, r2, #0x10
 | |
| 	asrs r0, r0, #0x10
 | |
| 	subs r1, r1, r0
 | |
| 	lsls r1, r1, #0x10
 | |
| 	lsrs r3, r1, #0x10
 | |
| 	b _080915E0
 | |
| _080915CA:
 | |
| 	subs r0, r4, r2
 | |
| 	b _080915DC
 | |
| _080915CE:
 | |
| 	ldrh r1, [r6, #0x32]
 | |
| 	mov r7, sb
 | |
| 	lsls r0, r7, #0x10
 | |
| 	asrs r0, r0, #0x10
 | |
| 	subs r0, r0, r1
 | |
| 	b _080915DC
 | |
| _080915DA:
 | |
| 	subs r0, r2, r4
 | |
| _080915DC:
 | |
| 	lsls r0, r0, #0x10
 | |
| 	lsrs r3, r0, #0x10
 | |
| _080915E0:
 | |
| 	lsls r2, r3, #0x18
 | |
| 	ldr r3, _0809163C @ =gSineTable
 | |
| 	mov r1, r8
 | |
| 	lsls r0, r1, #4
 | |
| 	adds r0, r0, r3
 | |
| 	movs r7, #0
 | |
| 	ldrsh r0, [r0, r7]
 | |
| 	asrs r2, r2, #0x10
 | |
| 	adds r1, r0, #0
 | |
| 	muls r1, r2, r1
 | |
| 	ldr r0, [r5, #0x2c]
 | |
| 	adds r0, r0, r1
 | |
| 	str r0, [r5, #0x2c]
 | |
| 	mov r1, r8
 | |
| 	lsls r0, r1, #4
 | |
| 	adds r0, #0x80
 | |
| 	adds r0, r0, r3
 | |
| 	movs r7, #0
 | |
| 	ldrsh r0, [r0, r7]
 | |
| 	adds r1, r0, #0
 | |
| 	muls r1, r2, r1
 | |
| 	ldr r0, [r5, #0x30]
 | |
| 	subs r0, r0, r1
 | |
| 	str r0, [r5, #0x30]
 | |
| 	adds r0, r5, #0
 | |
| 	bl sub_08091660
 | |
| 	adds r0, r5, #0
 | |
| 	adds r0, #0x76
 | |
| 	adds r1, r5, #0
 | |
| 	adds r1, #0x70
 | |
| 	ldrh r0, [r0]
 | |
| 	ldrh r1, [r1]
 | |
| 	cmp r0, r1
 | |
| 	bhi _08091640
 | |
| 	movs r0, #0x86
 | |
| 	lsls r0, r0, #1
 | |
| 	bl EnqueueSFX
 | |
| 	adds r0, r5, #0
 | |
| 	adds r0, #0x86
 | |
| 	ldrh r0, [r0]
 | |
| 	bl SetFlag
 | |
| 	b _08091656
 | |
| 	.align 2, 0
 | |
| _0809163C: .4byte gSineTable
 | |
| _08091640:
 | |
| 	ldrb r0, [r5, #0xf]
 | |
| 	subs r0, #1
 | |
| 	strb r0, [r5, #0xf]
 | |
| 	lsls r0, r0, #0x18
 | |
| 	cmp r0, #0
 | |
| 	bne _08091656
 | |
| 	movs r0, #0x10
 | |
| 	strb r0, [r5, #0xf]
 | |
| 	adds r0, #0xff
 | |
| 	bl EnqueueSFX
 | |
| _08091656:
 | |
| 	add sp, #4
 | |
| 	pop {r3, r4}
 | |
| 	mov r8, r3
 | |
| 	mov sb, r4
 | |
| 	pop {r4, r5, r6, r7, pc}
 | |
| 
 | |
| 	thumb_func_start sub_08091660
 | |
| sub_08091660: @ 0x08091660
 | |
| 	push {r4, r5, lr}
 | |
| 	adds r4, r0, #0
 | |
| 	ldrb r0, [r4, #0xb]
 | |
| 	cmp r0, #1
 | |
| 	beq _08091686
 | |
| 	cmp r0, #1
 | |
| 	bgt _08091674
 | |
| 	cmp r0, #0
 | |
| 	beq _0809167E
 | |
| 	b _080916AA
 | |
| _08091674:
 | |
| 	cmp r0, #2
 | |
| 	beq _08091690
 | |
| 	cmp r0, #3
 | |
| 	beq _0809169A
 | |
| 	b _080916AA
 | |
| _0809167E:
 | |
| 	adds r1, r4, #0
 | |
| 	adds r1, #0x82
 | |
| 	ldrh r0, [r4, #0x32]
 | |
| 	b _080916A0
 | |
| _08091686:
 | |
| 	adds r0, r4, #0
 | |
| 	adds r0, #0x80
 | |
| 	ldrh r0, [r0]
 | |
| 	ldrh r1, [r4, #0x2e]
 | |
| 	b _080916A2
 | |
| _08091690:
 | |
| 	adds r0, r4, #0
 | |
| 	adds r0, #0x82
 | |
| 	ldrh r0, [r0]
 | |
| 	ldrh r1, [r4, #0x32]
 | |
| 	b _080916A2
 | |
| _0809169A:
 | |
| 	adds r1, r4, #0
 | |
| 	adds r1, #0x80
 | |
| 	ldrh r0, [r4, #0x2e]
 | |
| _080916A0:
 | |
| 	ldrh r1, [r1]
 | |
| _080916A2:
 | |
| 	subs r0, r0, r1
 | |
| 	adds r1, r4, #0
 | |
| 	adds r1, #0x70
 | |
| 	strh r0, [r1]
 | |
| _080916AA:
 | |
| 	adds r5, r4, #0
 | |
| 	adds r5, #0x86
 | |
| 	ldrh r0, [r5]
 | |
| 	bl CheckFlags
 | |
| 	cmp r0, #0
 | |
| 	beq _080916C8
 | |
| 	adds r0, r4, #0
 | |
| 	adds r0, #0x70
 | |
| 	ldrh r0, [r0]
 | |
| 	cmp r0, #0
 | |
| 	bne _080916C8
 | |
| 	ldrh r0, [r5]
 | |
| 	bl ClearFlag
 | |
| _080916C8:
 | |
| 	pop {r4, r5, pc}
 | |
| 	.align 2, 0
 |