mirror of https://github.com/zeldaret/tmc.git
				
				
				
			managerF.c: ok
This commit is contained in:
		
							parent
							
								
									fa92a42dd1
								
							
						
					
					
						commit
						83e018464d
					
				
							
								
								
									
										905
									
								
								asm/managerF.s
								
								
								
								
							
							
						
						
									
										905
									
								
								asm/managerF.s
								
								
								
								
							| 
						 | 
				
			
			@ -1,905 +0,0 @@
 | 
			
		|||
	.include "asm/macros.inc"
 | 
			
		||||
 | 
			
		||||
	.include "constants/constants.inc"
 | 
			
		||||
 | 
			
		||||
	.syntax unified
 | 
			
		||||
 | 
			
		||||
	.text
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08058ECC
 | 
			
		||||
sub_08058ECC: @ 0x08058ECC
 | 
			
		||||
	push {lr}
 | 
			
		||||
	ldr r2, _08058EE0 @ =gUnk_08108314
 | 
			
		||||
	ldrb r1, [r0, #0xa]
 | 
			
		||||
	lsls r1, r1, #2
 | 
			
		||||
	adds r1, r1, r2
 | 
			
		||||
	ldr r1, [r1]
 | 
			
		||||
	bl _call_via_r1
 | 
			
		||||
	pop {pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08058EE0: .4byte gUnk_08108314
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08058EE4
 | 
			
		||||
sub_08058EE4: @ 0x08058EE4
 | 
			
		||||
	push {r4, r5, r6, lr}
 | 
			
		||||
	adds r6, r0, #0
 | 
			
		||||
	ldrb r0, [r6, #0xc]
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _08058EF2
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	strb r0, [r6, #0xc]
 | 
			
		||||
_08058EF2:
 | 
			
		||||
	ldrb r0, [r6, #0xb]
 | 
			
		||||
	bl CheckRoomFlag
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08058F40
 | 
			
		||||
	movs r5, #0x94
 | 
			
		||||
	lsls r5, r5, #1
 | 
			
		||||
	ldrb r2, [r6, #0xb]
 | 
			
		||||
	adds r2, #1
 | 
			
		||||
	adds r0, r5, #0
 | 
			
		||||
	movs r1, #0x68
 | 
			
		||||
	bl sub_08058F44
 | 
			
		||||
	movs r4, #0xac
 | 
			
		||||
	lsls r4, r4, #1
 | 
			
		||||
	ldrb r2, [r6, #0xb]
 | 
			
		||||
	adds r2, #2
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	movs r1, #0x68
 | 
			
		||||
	bl sub_08058F44
 | 
			
		||||
	ldrb r2, [r6, #0xb]
 | 
			
		||||
	adds r2, #3
 | 
			
		||||
	adds r0, r5, #0
 | 
			
		||||
	movs r1, #0x98
 | 
			
		||||
	bl sub_08058F44
 | 
			
		||||
	ldrb r2, [r6, #0xb]
 | 
			
		||||
	adds r2, #4
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	movs r1, #0x98
 | 
			
		||||
	bl sub_08058F44
 | 
			
		||||
	movs r0, #0x92
 | 
			
		||||
	lsls r0, r0, #1
 | 
			
		||||
	bl SoundReq
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
_08058F40:
 | 
			
		||||
	pop {r4, r5, r6, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08058F44
 | 
			
		||||
sub_08058F44: @ 0x08058F44
 | 
			
		||||
	push {r4, r5, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	adds r5, r1, #0
 | 
			
		||||
	adds r0, r2, #0
 | 
			
		||||
	bl CheckRoomFlag
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _08058F80
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	adds r1, r5, #0
 | 
			
		||||
	movs r2, #1
 | 
			
		||||
	bl sub_080002A8
 | 
			
		||||
	cmp r0, #0x61
 | 
			
		||||
	bne _08058F80
 | 
			
		||||
	lsrs r1, r4, #4
 | 
			
		||||
	movs r2, #0x3f
 | 
			
		||||
	ands r1, r2
 | 
			
		||||
	lsrs r0, r5, #4
 | 
			
		||||
	ands r0, r2
 | 
			
		||||
	lsls r0, r0, #6
 | 
			
		||||
	orrs r1, r0
 | 
			
		||||
	movs r0, #0x26
 | 
			
		||||
	movs r2, #1
 | 
			
		||||
	bl SetTileType
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	adds r1, r5, #0
 | 
			
		||||
	bl sub_08058F84
 | 
			
		||||
_08058F80:
 | 
			
		||||
	pop {r4, r5, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08058F84
 | 
			
		||||
sub_08058F84: @ 0x08058F84
 | 
			
		||||
	push {r4, r5, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	adds r5, r1, #0
 | 
			
		||||
	movs r0, #0x21
 | 
			
		||||
	movs r1, #0
 | 
			
		||||
	movs r2, #0
 | 
			
		||||
	bl CreateObject
 | 
			
		||||
	adds r2, r0, #0
 | 
			
		||||
	cmp r2, #0
 | 
			
		||||
	beq _08058FA8
 | 
			
		||||
	ldr r0, _08058FAC @ =gRoomControls
 | 
			
		||||
	ldrh r1, [r0, #6]
 | 
			
		||||
	adds r1, r1, r4
 | 
			
		||||
	strh r1, [r2, #0x2e]
 | 
			
		||||
	ldrh r0, [r0, #8]
 | 
			
		||||
	adds r0, r0, r5
 | 
			
		||||
	strh r0, [r2, #0x32]
 | 
			
		||||
_08058FA8:
 | 
			
		||||
	pop {r4, r5, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08058FAC: .4byte gRoomControls
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08058FB0
 | 
			
		||||
sub_08058FB0: @ 0x08058FB0
 | 
			
		||||
	push {r4, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	ldrb r0, [r4, #0xc]
 | 
			
		||||
	cmp r0, #1
 | 
			
		||||
	beq _08058FF6
 | 
			
		||||
	cmp r0, #1
 | 
			
		||||
	bgt _08058FC4
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08058FCA
 | 
			
		||||
	b _08059050
 | 
			
		||||
_08058FC4:
 | 
			
		||||
	cmp r0, #2
 | 
			
		||||
	beq _08059018
 | 
			
		||||
	b _08059050
 | 
			
		||||
_08058FCA:
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	strb r0, [r4, #0xc]
 | 
			
		||||
	ldrb r0, [r4, #0xa]
 | 
			
		||||
	cmp r0, #1
 | 
			
		||||
	bne _08058FDC
 | 
			
		||||
	movs r0, #7
 | 
			
		||||
	strb r0, [r4, #0xd]
 | 
			
		||||
	movs r0, #6
 | 
			
		||||
	b _08058FE2
 | 
			
		||||
_08058FDC:
 | 
			
		||||
	movs r0, #8
 | 
			
		||||
	strb r0, [r4, #0xd]
 | 
			
		||||
	movs r0, #2
 | 
			
		||||
_08058FE2:
 | 
			
		||||
	strb r0, [r4, #0xf]
 | 
			
		||||
	ldrh r0, [r4, #0x3e]
 | 
			
		||||
	bl CheckFlags
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08059060
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	bl DeleteManager
 | 
			
		||||
	b _08059060
 | 
			
		||||
_08058FF6:
 | 
			
		||||
	ldrh r0, [r4, #0x3e]
 | 
			
		||||
	bl CheckFlags
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08059060
 | 
			
		||||
	movs r0, #2
 | 
			
		||||
	strb r0, [r4, #0xc]
 | 
			
		||||
	movs r0, #0x78
 | 
			
		||||
	strb r0, [r4, #0xe]
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	movs r1, #0xf0
 | 
			
		||||
	bl sub_0805E4E0
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	bl sub_08059064
 | 
			
		||||
	b _08059060
 | 
			
		||||
_08059018:
 | 
			
		||||
	ldrb r0, [r4, #0xe]
 | 
			
		||||
	cmp r0, #0x5a
 | 
			
		||||
	bne _08059028
 | 
			
		||||
	movs r0, #2
 | 
			
		||||
	bl sub_08078A90
 | 
			
		||||
	bl sub_08077B20
 | 
			
		||||
_08059028:
 | 
			
		||||
	ldrb r2, [r4, #0xe]
 | 
			
		||||
	cmp r2, #0x3c
 | 
			
		||||
	bne _08059034
 | 
			
		||||
	ldr r1, _0805904C @ =gPlayerEntity
 | 
			
		||||
	ldrb r0, [r4, #0xf]
 | 
			
		||||
	strb r0, [r1, #0x14]
 | 
			
		||||
_08059034:
 | 
			
		||||
	subs r0, r2, #1
 | 
			
		||||
	strb r0, [r4, #0xe]
 | 
			
		||||
	lsls r0, r0, #0x18
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _08059060
 | 
			
		||||
	movs r0, #3
 | 
			
		||||
	strb r0, [r4, #0xc]
 | 
			
		||||
	ldrb r1, [r4, #0xd]
 | 
			
		||||
	movs r0, #5
 | 
			
		||||
	bl MenuFadeIn
 | 
			
		||||
	b _08059060
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_0805904C: .4byte gPlayerEntity
 | 
			
		||||
_08059050:
 | 
			
		||||
	ldrh r0, [r4, #0x3e]
 | 
			
		||||
	bl SetFlag
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	bl sub_08078A90
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
_08059060:
 | 
			
		||||
	pop {r4, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08059064
 | 
			
		||||
sub_08059064: @ 0x08059064
 | 
			
		||||
	push {r4, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	movs r0, #0
 | 
			
		||||
	movs r1, #0x53
 | 
			
		||||
	movs r2, #0
 | 
			
		||||
	bl CreateObject
 | 
			
		||||
	adds r2, r0, #0
 | 
			
		||||
	cmp r2, #0
 | 
			
		||||
	beq _0805908E
 | 
			
		||||
	movs r0, #2
 | 
			
		||||
	strb r0, [r2, #0xe]
 | 
			
		||||
	ldr r1, _08059090 @ =gRoomControls
 | 
			
		||||
	ldrh r0, [r1, #6]
 | 
			
		||||
	ldrh r3, [r4, #0x38]
 | 
			
		||||
	adds r0, r0, r3
 | 
			
		||||
	strh r0, [r2, #0x2e]
 | 
			
		||||
	ldrh r0, [r1, #8]
 | 
			
		||||
	ldrh r4, [r4, #0x3a]
 | 
			
		||||
	adds r0, r0, r4
 | 
			
		||||
	strh r0, [r2, #0x32]
 | 
			
		||||
_0805908E:
 | 
			
		||||
	pop {r4, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08059090: .4byte gRoomControls
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08059094
 | 
			
		||||
sub_08059094: @ 0x08059094
 | 
			
		||||
	push {r4, r5, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	movs r5, #0
 | 
			
		||||
	ldrb r0, [r4, #0xc]
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _080590B6
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	strb r0, [r4, #0xc]
 | 
			
		||||
	movs r0, #0x60
 | 
			
		||||
	bl CheckLocalFlag
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _080590CC
 | 
			
		||||
	movs r0, #0x5f
 | 
			
		||||
	bl SetLocalFlag
 | 
			
		||||
	b _080590C8
 | 
			
		||||
_080590B6:
 | 
			
		||||
	movs r0, #0x60
 | 
			
		||||
	bl CheckLocalFlag
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _080590C8
 | 
			
		||||
	movs r0, #0x5f
 | 
			
		||||
	bl ClearLocalFlag
 | 
			
		||||
	movs r5, #1
 | 
			
		||||
_080590C8:
 | 
			
		||||
	cmp r5, #0
 | 
			
		||||
	beq _080590D8
 | 
			
		||||
_080590CC:
 | 
			
		||||
	ldr r0, _080590DC @ =gUnk_080F4B88
 | 
			
		||||
	bl LoadRoomEntityList
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	bl DeleteManager
 | 
			
		||||
_080590D8:
 | 
			
		||||
	pop {r4, r5, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_080590DC: .4byte gUnk_080F4B88
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_080590E0
 | 
			
		||||
sub_080590E0: @ 0x080590E0
 | 
			
		||||
	push {lr}
 | 
			
		||||
	adds r1, r0, #0
 | 
			
		||||
	ldrb r0, [r1, #0xc]
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _080590F6
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	strb r0, [r1, #0xc]
 | 
			
		||||
	adds r0, r1, #0
 | 
			
		||||
	movs r1, #6
 | 
			
		||||
	bl sub_0805E3A0
 | 
			
		||||
_080590F6:
 | 
			
		||||
	movs r0, #0x6c
 | 
			
		||||
	bl CheckLocalFlag
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _0805911A
 | 
			
		||||
	movs r0, #0x4b
 | 
			
		||||
	bl CheckLocalFlag
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08059112
 | 
			
		||||
	movs r0, #0x4a
 | 
			
		||||
	bl SetLocalFlag
 | 
			
		||||
	b _08059120
 | 
			
		||||
_08059112:
 | 
			
		||||
	movs r0, #0x4a
 | 
			
		||||
	bl ClearLocalFlag
 | 
			
		||||
	b _08059120
 | 
			
		||||
_0805911A:
 | 
			
		||||
	movs r0, #0x4a
 | 
			
		||||
	bl ClearLocalFlag
 | 
			
		||||
_08059120:
 | 
			
		||||
	pop {pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08059124
 | 
			
		||||
sub_08059124: @ 0x08059124
 | 
			
		||||
	push {r4, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	ldrb r0, [r4, #0xc]
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08059174
 | 
			
		||||
	cmp r0, #1
 | 
			
		||||
	beq _080591AC
 | 
			
		||||
	ldrb r0, [r4, #0xe]
 | 
			
		||||
	subs r0, #1
 | 
			
		||||
	strb r0, [r4, #0xe]
 | 
			
		||||
	lsls r0, r0, #0x18
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _080591C8
 | 
			
		||||
	movs r1, #0x38
 | 
			
		||||
	ldrsh r0, [r4, r1]
 | 
			
		||||
	movs r2, #0x3a
 | 
			
		||||
	ldrsh r1, [r4, r2]
 | 
			
		||||
	ldrb r2, [r4, #0xb]
 | 
			
		||||
	bl CreateDustAt
 | 
			
		||||
	ldrh r0, [r4, #0x38]
 | 
			
		||||
	lsls r0, r0, #0x10
 | 
			
		||||
	asrs r0, r0, #0x14
 | 
			
		||||
	movs r2, #0x3f
 | 
			
		||||
	ands r0, r2
 | 
			
		||||
	ldrh r1, [r4, #0x3a]
 | 
			
		||||
	lsls r1, r1, #0x10
 | 
			
		||||
	asrs r1, r1, #0x14
 | 
			
		||||
	ands r1, r2
 | 
			
		||||
	lsls r1, r1, #6
 | 
			
		||||
	orrs r0, r1
 | 
			
		||||
	ldrb r1, [r4, #0xb]
 | 
			
		||||
	bl sub_0807BA8C
 | 
			
		||||
	movs r0, #0xcd
 | 
			
		||||
	bl SoundReq
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
	b _080591C8
 | 
			
		||||
_08059174:
 | 
			
		||||
	ldrh r0, [r4, #0x3e]
 | 
			
		||||
	bl CheckFlags
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08059182
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
_08059182:
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	strb r0, [r4, #0xc]
 | 
			
		||||
	ldr r0, _080591A8 @ =0x00000365
 | 
			
		||||
	ldrh r1, [r4, #0x38]
 | 
			
		||||
	lsls r1, r1, #0x10
 | 
			
		||||
	asrs r1, r1, #0x14
 | 
			
		||||
	movs r3, #0x3f
 | 
			
		||||
	ands r1, r3
 | 
			
		||||
	ldrh r2, [r4, #0x3a]
 | 
			
		||||
	lsls r2, r2, #0x10
 | 
			
		||||
	asrs r2, r2, #0x14
 | 
			
		||||
	ands r2, r3
 | 
			
		||||
	lsls r2, r2, #6
 | 
			
		||||
	orrs r1, r2
 | 
			
		||||
	ldrb r2, [r4, #0xb]
 | 
			
		||||
	bl SetTileType
 | 
			
		||||
	b _080591C8
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_080591A8: .4byte 0x00000365
 | 
			
		||||
_080591AC:
 | 
			
		||||
	ldrh r0, [r4, #0x3e]
 | 
			
		||||
	bl CheckFlags
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _080591C8
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	movs r1, #0x4b
 | 
			
		||||
	bl sub_0805E4E0
 | 
			
		||||
	movs r0, #0x2d
 | 
			
		||||
	strb r0, [r4, #0xe]
 | 
			
		||||
	ldrb r0, [r4, #0xc]
 | 
			
		||||
	adds r0, #1
 | 
			
		||||
	strb r0, [r4, #0xc]
 | 
			
		||||
_080591C8:
 | 
			
		||||
	pop {r4, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_080591CC
 | 
			
		||||
sub_080591CC: @ 0x080591CC
 | 
			
		||||
	push {r4, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	ldrb r0, [r4, #0xc]
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _080591F4
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	strb r0, [r4, #0xc]
 | 
			
		||||
	ldrh r0, [r4, #0x3e]
 | 
			
		||||
	bl CheckFlags
 | 
			
		||||
	strb r0, [r4, #0xb]
 | 
			
		||||
	lsls r0, r0, #0x18
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08059214
 | 
			
		||||
	ldr r1, _080591F0 @ =gRoomVars
 | 
			
		||||
	ldrh r0, [r4, #0x3a]
 | 
			
		||||
	b _08059218
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_080591F0: .4byte gRoomVars
 | 
			
		||||
_080591F4:
 | 
			
		||||
	ldrh r0, [r4, #0x3e]
 | 
			
		||||
	bl CheckFlags
 | 
			
		||||
	adds r1, r0, #0
 | 
			
		||||
	ldrb r0, [r4, #0xb]
 | 
			
		||||
	cmp r0, r1
 | 
			
		||||
	beq _0805921A
 | 
			
		||||
	strb r1, [r4, #0xb]
 | 
			
		||||
	cmp r1, #0
 | 
			
		||||
	beq _08059214
 | 
			
		||||
	ldr r1, _08059210 @ =gRoomVars
 | 
			
		||||
	ldrh r0, [r4, #0x3a]
 | 
			
		||||
	b _08059218
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08059210: .4byte gRoomVars
 | 
			
		||||
_08059214:
 | 
			
		||||
	ldr r1, _0805921C @ =gRoomVars
 | 
			
		||||
	ldrh r0, [r4, #0x38]
 | 
			
		||||
_08059218:
 | 
			
		||||
	strh r0, [r1, #0xc]
 | 
			
		||||
_0805921A:
 | 
			
		||||
	pop {r4, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_0805921C: .4byte gRoomVars
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08059220
 | 
			
		||||
sub_08059220: @ 0x08059220
 | 
			
		||||
	push {r4, r5, r6, r7, lr}
 | 
			
		||||
	adds r5, r0, #0
 | 
			
		||||
	ldr r2, _08059268 @ =gRoomVars
 | 
			
		||||
	movs r0, #0
 | 
			
		||||
	strh r0, [r2, #0xc]
 | 
			
		||||
	ldr r4, _0805926C @ =gUnk_08108354
 | 
			
		||||
	ldrh r0, [r4]
 | 
			
		||||
	ldr r1, _08059270 @ =0x0000FFFF
 | 
			
		||||
	cmp r0, r1
 | 
			
		||||
	beq _08059254
 | 
			
		||||
	adds r7, r2, #0
 | 
			
		||||
	adds r6, r1, #0
 | 
			
		||||
_08059238:
 | 
			
		||||
	ldrh r0, [r4]
 | 
			
		||||
	ldrh r1, [r4, #2]
 | 
			
		||||
	ldrh r2, [r4, #4]
 | 
			
		||||
	ldrh r3, [r4, #6]
 | 
			
		||||
	bl CheckPlayerInRegion
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _0805924C
 | 
			
		||||
	ldrh r0, [r4, #8]
 | 
			
		||||
	strh r0, [r7, #0xc]
 | 
			
		||||
_0805924C:
 | 
			
		||||
	adds r4, #0xa
 | 
			
		||||
	ldrh r0, [r4]
 | 
			
		||||
	cmp r0, r6
 | 
			
		||||
	bne _08059238
 | 
			
		||||
_08059254:
 | 
			
		||||
	ldrb r0, [r5, #0xc]
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _08059266
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	strb r0, [r5, #0xc]
 | 
			
		||||
	ldr r1, _08059274 @ =gArea
 | 
			
		||||
	ldr r0, _08059268 @ =gRoomVars
 | 
			
		||||
	ldrh r0, [r0, #0xc]
 | 
			
		||||
	strh r0, [r1, #0xa]
 | 
			
		||||
_08059266:
 | 
			
		||||
	pop {r4, r5, r6, r7, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08059268: .4byte gRoomVars
 | 
			
		||||
_0805926C: .4byte gUnk_08108354
 | 
			
		||||
_08059270: .4byte 0x0000FFFF
 | 
			
		||||
_08059274: .4byte gArea
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08059278
 | 
			
		||||
sub_08059278: @ 0x08059278
 | 
			
		||||
	push {lr}
 | 
			
		||||
	movs r0, #9
 | 
			
		||||
	movs r1, #0xf
 | 
			
		||||
	movs r2, #6
 | 
			
		||||
	bl FindEntityByID
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _0805928C
 | 
			
		||||
	bl sub_08058ECC
 | 
			
		||||
_0805928C:
 | 
			
		||||
	pop {pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08059290
 | 
			
		||||
sub_08059290: @ 0x08059290
 | 
			
		||||
	movs r1, #1
 | 
			
		||||
	strb r1, [r0, #0xc]
 | 
			
		||||
	ldr r1, _0805929C @ =gRoomControls
 | 
			
		||||
	ldr r0, _080592A0 @ =gPlayerEntity
 | 
			
		||||
	str r0, [r1, #0x30]
 | 
			
		||||
	bx lr
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_0805929C: .4byte gRoomControls
 | 
			
		||||
_080592A0: .4byte gPlayerEntity
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_080592A4
 | 
			
		||||
sub_080592A4: @ 0x080592A4
 | 
			
		||||
	push {r4, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	ldrb r0, [r4, #0xc]
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _080592C8
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	strb r0, [r4, #0xc]
 | 
			
		||||
	ldrh r0, [r4, #0x3e]
 | 
			
		||||
	bl CheckFlags
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _080592EA
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	bl sub_080592EC
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
	b _080592EA
 | 
			
		||||
_080592C8:
 | 
			
		||||
	ldrh r0, [r4, #0x3e]
 | 
			
		||||
	bl CheckFlags
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _080592EA
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	bl sub_080592EC
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	bl sub_0805930C
 | 
			
		||||
.ifndef EU
 | 
			
		||||
	movs r0, #0xb7
 | 
			
		||||
	lsls r0, r0, #1
 | 
			
		||||
	bl SoundReq
 | 
			
		||||
.endif
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
_080592EA:
 | 
			
		||||
	pop {r4, pc}
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_080592EC
 | 
			
		||||
sub_080592EC: @ 0x080592EC
 | 
			
		||||
	push {lr}
 | 
			
		||||
	adds r1, r0, #0
 | 
			
		||||
	ldrh r0, [r1, #0x38]
 | 
			
		||||
	lsls r0, r0, #0x10
 | 
			
		||||
	asrs r0, r0, #0x14
 | 
			
		||||
	movs r2, #0x3f
 | 
			
		||||
	ands r0, r2
 | 
			
		||||
	ldrh r1, [r1, #0x3a]
 | 
			
		||||
	lsls r1, r1, #0x10
 | 
			
		||||
	asrs r1, r1, #0x14
 | 
			
		||||
	ands r1, r2
 | 
			
		||||
	lsls r1, r1, #6
 | 
			
		||||
	orrs r0, r1
 | 
			
		||||
	bl SetDirtTile
 | 
			
		||||
	pop {pc}
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_0805930C
 | 
			
		||||
sub_0805930C: @ 0x0805930C
 | 
			
		||||
	push {r4, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	movs r0, #0xf
 | 
			
		||||
	movs r1, #0x43
 | 
			
		||||
.ifdef EU
 | 
			
		||||
	movs r2, #0x0
 | 
			
		||||
.else
 | 
			
		||||
	movs r2, #0x40
 | 
			
		||||
.endif
 | 
			
		||||
	bl CreateObject
 | 
			
		||||
	adds r2, r0, #0
 | 
			
		||||
	cmp r2, #0
 | 
			
		||||
	beq _0805933A
 | 
			
		||||
	ldr r1, _0805933C @ =gRoomControls
 | 
			
		||||
	ldrh r0, [r1, #6]
 | 
			
		||||
	ldrh r3, [r4, #0x38]
 | 
			
		||||
	adds r0, r0, r3
 | 
			
		||||
	strh r0, [r2, #0x2e]
 | 
			
		||||
	ldrh r0, [r1, #8]
 | 
			
		||||
	ldrh r4, [r4, #0x3a]
 | 
			
		||||
	adds r0, r0, r4
 | 
			
		||||
	strh r0, [r2, #0x32]
 | 
			
		||||
	adds r1, r2, #0
 | 
			
		||||
	adds r1, #0x38
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	strb r0, [r1]
 | 
			
		||||
_0805933A:
 | 
			
		||||
	pop {r4, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_0805933C: .4byte gRoomControls
 | 
			
		||||
 | 
			
		||||
	thumb_func_start SetDirtTile
 | 
			
		||||
SetDirtTile: @ 0x08059340
 | 
			
		||||
	push {r4, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	movs r0, #0x1d
 | 
			
		||||
	adds r1, r4, #0
 | 
			
		||||
	movs r2, #1
 | 
			
		||||
	bl SetTileType
 | 
			
		||||
	movs r0, #0
 | 
			
		||||
	adds r1, r4, #0
 | 
			
		||||
	movs r2, #2
 | 
			
		||||
	bl SetTileType
 | 
			
		||||
	subs r4, #0x40
 | 
			
		||||
	movs r0, #0
 | 
			
		||||
	adds r1, r4, #0
 | 
			
		||||
	movs r2, #2
 | 
			
		||||
	bl SetTileType
 | 
			
		||||
	pop {r4, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08059368
 | 
			
		||||
sub_08059368: @ 0x08059368
 | 
			
		||||
	push {lr}
 | 
			
		||||
	adds r2, r0, #0
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	strb r0, [r2, #0xc]
 | 
			
		||||
	ldr r1, _08059388 @ =gCurrentTextBox
 | 
			
		||||
	ldrh r0, [r2, #0x3c]
 | 
			
		||||
	ldrh r1, [r1, #0x28]
 | 
			
		||||
	cmp r0, r1
 | 
			
		||||
	bne _08059384
 | 
			
		||||
	ldrh r0, [r2, #0x3e]
 | 
			
		||||
	bl SetFlag
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
_08059384:
 | 
			
		||||
	pop {pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08059388: .4byte gCurrentTextBox
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_0805938C
 | 
			
		||||
sub_0805938C: @ 0x0805938C
 | 
			
		||||
	push {r4, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	bl sub_080593CC
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _080593C8
 | 
			
		||||
	ldrb r0, [r4, #0xe]
 | 
			
		||||
	adds r0, #1
 | 
			
		||||
	strb r0, [r4, #0xe]
 | 
			
		||||
	lsls r0, r0, #0x18
 | 
			
		||||
	lsrs r0, r0, #0x18
 | 
			
		||||
	cmp r0, #7
 | 
			
		||||
	bls _080593CA
 | 
			
		||||
	movs r1, #0x38
 | 
			
		||||
	ldrsh r0, [r4, r1]
 | 
			
		||||
	ldr r2, _080593C4 @ =gRoomControls
 | 
			
		||||
	ldrh r1, [r2, #6]
 | 
			
		||||
	subs r0, r0, r1
 | 
			
		||||
	movs r3, #0x3a
 | 
			
		||||
	ldrsh r1, [r4, r3]
 | 
			
		||||
	ldrh r2, [r2, #8]
 | 
			
		||||
	subs r1, r1, r2
 | 
			
		||||
	movs r2, #0xff
 | 
			
		||||
	movs r3, #0xa
 | 
			
		||||
	bl sub_080806BC
 | 
			
		||||
	b _080593CA
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_080593C4: .4byte gRoomControls
 | 
			
		||||
_080593C8:
 | 
			
		||||
	strb r0, [r4, #0xe]
 | 
			
		||||
_080593CA:
 | 
			
		||||
	pop {r4, pc}
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_080593CC
 | 
			
		||||
sub_080593CC: @ 0x080593CC
 | 
			
		||||
	push {r4, lr}
 | 
			
		||||
	adds r3, r0, #0
 | 
			
		||||
	ldr r2, _08059418 @ =gPlayerState
 | 
			
		||||
	ldr r0, [r2, #0x30]
 | 
			
		||||
	movs r1, #0x80
 | 
			
		||||
	ands r0, r1
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _08059420
 | 
			
		||||
	adds r0, r2, #0
 | 
			
		||||
	adds r0, #0x26
 | 
			
		||||
	ldrb r0, [r0]
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08059420
 | 
			
		||||
	ldr r4, _0805941C @ =gPlayerEntity
 | 
			
		||||
	ldrb r0, [r4, #0x14]
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _08059420
 | 
			
		||||
	adds r0, r2, #0
 | 
			
		||||
	adds r0, #0x90
 | 
			
		||||
	ldrh r1, [r0]
 | 
			
		||||
	movs r0, #0xf0
 | 
			
		||||
	lsls r0, r0, #4
 | 
			
		||||
	ands r0, r1
 | 
			
		||||
	movs r1, #0x80
 | 
			
		||||
	lsls r1, r1, #3
 | 
			
		||||
	cmp r0, r1
 | 
			
		||||
	bne _08059420
 | 
			
		||||
	movs r0, #0x38
 | 
			
		||||
	ldrsh r1, [r3, r0]
 | 
			
		||||
	movs r0, #0x3a
 | 
			
		||||
	ldrsh r2, [r3, r0]
 | 
			
		||||
	adds r2, #0xc
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	movs r3, #6
 | 
			
		||||
	bl sub_0806FCB8
 | 
			
		||||
	b _08059422
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08059418: .4byte gPlayerState
 | 
			
		||||
_0805941C: .4byte gPlayerEntity
 | 
			
		||||
_08059420:
 | 
			
		||||
	movs r0, #0
 | 
			
		||||
_08059422:
 | 
			
		||||
	pop {r4, pc}
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08059424
 | 
			
		||||
sub_08059424: @ 0x08059424
 | 
			
		||||
	push {r4, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	ldrh r0, [r4, #0x3e]
 | 
			
		||||
	bl CheckFlags
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08059436
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
_08059436:
 | 
			
		||||
	ldrh r0, [r4, #0x3c]
 | 
			
		||||
	bl CheckFlags
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08059476
 | 
			
		||||
	movs r0, #0xf
 | 
			
		||||
	movs r1, #0x35
 | 
			
		||||
	movs r2, #0
 | 
			
		||||
	bl CreateObject
 | 
			
		||||
	adds r2, r0, #0
 | 
			
		||||
	cmp r2, #0
 | 
			
		||||
	beq _08059476
 | 
			
		||||
	adds r1, r2, #0
 | 
			
		||||
	adds r1, #0x38
 | 
			
		||||
	movs r0, #2
 | 
			
		||||
	strb r0, [r1]
 | 
			
		||||
	ldr r1, _08059478 @ =gRoomControls
 | 
			
		||||
	ldrh r0, [r1, #6]
 | 
			
		||||
	ldrh r3, [r4, #0x38]
 | 
			
		||||
	adds r0, r0, r3
 | 
			
		||||
	strh r0, [r2, #0x2e]
 | 
			
		||||
	ldrh r0, [r1, #8]
 | 
			
		||||
	ldrh r4, [r4, #0x3a]
 | 
			
		||||
	adds r0, r0, r4
 | 
			
		||||
	strh r0, [r2, #0x32]
 | 
			
		||||
	movs r0, #0xd8
 | 
			
		||||
	lsls r0, r0, #1
 | 
			
		||||
	bl EnqueueSFX
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
_08059476:
 | 
			
		||||
	pop {r4, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08059478: .4byte gRoomControls
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_0805947C
 | 
			
		||||
sub_0805947C: @ 0x0805947C
 | 
			
		||||
	push {lr}
 | 
			
		||||
	ldrh r0, [r0, #0x3e]
 | 
			
		||||
	bl CheckFlags
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _080594CE
 | 
			
		||||
	movs r0, #3
 | 
			
		||||
	bl sub_08078A90
 | 
			
		||||
	ldr r1, _080594B0 @ =gRoomControls
 | 
			
		||||
	ldrh r0, [r1]
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _080594D2
 | 
			
		||||
	ldr r0, _080594B4 @ =gRoomVars
 | 
			
		||||
	ldrb r0, [r0]
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _080594BC
 | 
			
		||||
	ldr r0, _080594B8 @ =gUnk_08108380
 | 
			
		||||
	ldrb r1, [r1, #0x10]
 | 
			
		||||
	lsls r1, r1, #2
 | 
			
		||||
	adds r1, r1, r0
 | 
			
		||||
	ldr r0, [r1]
 | 
			
		||||
	bl StartPlayerScript
 | 
			
		||||
	b _080594CE
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_080594B0: .4byte gRoomControls
 | 
			
		||||
_080594B4: .4byte gRoomVars
 | 
			
		||||
_080594B8: .4byte gUnk_08108380
 | 
			
		||||
_080594BC:
 | 
			
		||||
	ldr r1, _080594D4 @ =gUnk_08108380
 | 
			
		||||
	ldr r0, _080594D8 @ =gPlayerEntity
 | 
			
		||||
	ldrb r0, [r0, #0x14]
 | 
			
		||||
	lsrs r0, r0, #1
 | 
			
		||||
	lsls r0, r0, #2
 | 
			
		||||
	adds r0, r0, r1
 | 
			
		||||
	ldr r0, [r0]
 | 
			
		||||
	bl StartPlayerScript
 | 
			
		||||
_080594CE:
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
_080594D2:
 | 
			
		||||
	pop {pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_080594D4: .4byte gUnk_08108380
 | 
			
		||||
_080594D8: .4byte gPlayerEntity
 | 
			
		||||
 | 
			
		||||
.ifndef EU
 | 
			
		||||
	thumb_func_start sub_080594DC
 | 
			
		||||
sub_080594DC: @ 0x080594DC
 | 
			
		||||
	push {r4, lr}
 | 
			
		||||
	adds r4, r0, #0
 | 
			
		||||
	ldrb r0, [r4, #0xc]
 | 
			
		||||
	cmp r0, #1
 | 
			
		||||
	beq _080594F2
 | 
			
		||||
	cmp r0, #1
 | 
			
		||||
	bgt _0805951C
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _0805951C
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	strb r0, [r4, #0xc]
 | 
			
		||||
_080594F2:
 | 
			
		||||
	movs r0, #6
 | 
			
		||||
	bl GetInventoryValue
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08059540
 | 
			
		||||
	movs r0, #0x8c
 | 
			
		||||
	lsls r0, r0, #4
 | 
			
		||||
	movs r1, #0x85
 | 
			
		||||
	bl CheckLocalFlagByOffset
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _08059540
 | 
			
		||||
	movs r0, #2
 | 
			
		||||
	strb r0, [r4, #0xc]
 | 
			
		||||
	ldr r0, _08059518 @ =0x00000B0F
 | 
			
		||||
	bl sub_080186C0
 | 
			
		||||
	b _08059540
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08059518: .4byte 0x00000B0F
 | 
			
		||||
_0805951C:
 | 
			
		||||
	ldr r0, _08059544 @ =gArea
 | 
			
		||||
	adds r0, #0x28
 | 
			
		||||
	ldrb r0, [r0]
 | 
			
		||||
	cmp r0, #0xff
 | 
			
		||||
	beq _0805952A
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
_0805952A:
 | 
			
		||||
	movs r0, #0x8c
 | 
			
		||||
	lsls r0, r0, #4
 | 
			
		||||
	movs r1, #0x85
 | 
			
		||||
	bl CheckLocalFlagByOffset
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _08059540
 | 
			
		||||
	bl sub_0801855C
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
_08059540:
 | 
			
		||||
	pop {r4, pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08059544: .4byte gArea
 | 
			
		||||
.endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	thumb_func_start sub_08059548
 | 
			
		||||
sub_08059548: @ 0x08059548
 | 
			
		||||
.ifdef USA
 | 
			
		||||
	push {lr}
 | 
			
		||||
	movs r1, #6
 | 
			
		||||
	bl sub_0805E3A0
 | 
			
		||||
	ldr r0, _08059568 @ =gPlayerEntity
 | 
			
		||||
	ldrb r0, [r0, #0xc]
 | 
			
		||||
	cmp r0, #0x16
 | 
			
		||||
	bne _0805955C
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
_0805955C:
 | 
			
		||||
	ldr r2, _0805956C @ =gInput
 | 
			
		||||
	ldrh r1, [r2]
 | 
			
		||||
	movs r0, #4
 | 
			
		||||
	orrs r0, r1
 | 
			
		||||
	strh r0, [r2]
 | 
			
		||||
	pop {pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08059568: .4byte gPlayerEntity
 | 
			
		||||
_0805956C: .4byte gInput
 | 
			
		||||
.else
 | 
			
		||||
.ifdef DEMO @ TODO deduplicate
 | 
			
		||||
	push {lr}
 | 
			
		||||
	movs r1, #6
 | 
			
		||||
	bl sub_0805E3A0
 | 
			
		||||
	ldr r0, _08059568 @ =gPlayerEntity
 | 
			
		||||
	ldrb r0, [r0, #0xc]
 | 
			
		||||
	cmp r0, #0x16
 | 
			
		||||
	bne _0805955C
 | 
			
		||||
	bl DeleteThisEntity
 | 
			
		||||
_0805955C:
 | 
			
		||||
	ldr r2, _0805956C @ =gInput
 | 
			
		||||
	ldrh r1, [r2]
 | 
			
		||||
	movs r0, #4
 | 
			
		||||
	orrs r0, r1
 | 
			
		||||
	strh r0, [r2]
 | 
			
		||||
	pop {pc}
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08059568: .4byte gPlayerEntity
 | 
			
		||||
_0805956C: .4byte gInput
 | 
			
		||||
.endif
 | 
			
		||||
.endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,36 +0,0 @@
 | 
			
		|||
	.include "asm/macros.inc"
 | 
			
		||||
	.include "constants/constants.inc"
 | 
			
		||||
 | 
			
		||||
	.section .rodata
 | 
			
		||||
    .align 2
 | 
			
		||||
 | 
			
		||||
gUnk_08108314:: @ 08108314
 | 
			
		||||
	.4byte sub_08058EE4
 | 
			
		||||
	.4byte sub_08058FB0
 | 
			
		||||
	.4byte sub_08058FB0
 | 
			
		||||
	.4byte sub_08059094
 | 
			
		||||
	.4byte sub_080590E0
 | 
			
		||||
	.4byte sub_08059124
 | 
			
		||||
	.4byte sub_080591CC
 | 
			
		||||
	.4byte sub_08059220
 | 
			
		||||
	.4byte sub_08059290
 | 
			
		||||
	.4byte sub_080592A4
 | 
			
		||||
	.4byte sub_08059368
 | 
			
		||||
	.4byte sub_0805938C
 | 
			
		||||
	.4byte sub_08059424
 | 
			
		||||
	.4byte sub_0805947C
 | 
			
		||||
.ifndef EU
 | 
			
		||||
	.4byte sub_080594DC
 | 
			
		||||
.ifndef JP
 | 
			
		||||
	.4byte sub_08059548
 | 
			
		||||
.endif
 | 
			
		||||
.endif
 | 
			
		||||
 | 
			
		||||
gUnk_08108354:: @ 08108354
 | 
			
		||||
	.incbin "baserom.gba", 0x108354, 0x000002C
 | 
			
		||||
 | 
			
		||||
gUnk_08108380:: @ 08108380
 | 
			
		||||
	.4byte script_0800E600
 | 
			
		||||
	.4byte script_0800E62C
 | 
			
		||||
	.4byte script_0800E658
 | 
			
		||||
	.4byte script_0800E684
 | 
			
		||||
| 
						 | 
				
			
			@ -9,7 +9,9 @@ typedef struct {
 | 
			
		|||
    u8 unk;
 | 
			
		||||
    u8 regret;
 | 
			
		||||
    u16 localFlagOffset;
 | 
			
		||||
    u8 filler[10];
 | 
			
		||||
    u8 filler[4];
 | 
			
		||||
    u16 unk_0a;
 | 
			
		||||
    u8 filler3[4];
 | 
			
		||||
    u16 field_0x10;
 | 
			
		||||
    u16 curPortalX;
 | 
			
		||||
    u16 curPortalY;
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +22,8 @@ typedef struct {
 | 
			
		|||
    bool8 playShrinkSeq;
 | 
			
		||||
    u8 unk1A;
 | 
			
		||||
    u8 filler2[13];
 | 
			
		||||
    u8 filler4[0x835];
 | 
			
		||||
    u8 field_0x28;
 | 
			
		||||
    u8 filler4[0x834];
 | 
			
		||||
    u32 musicIndex;
 | 
			
		||||
    u32 pMusicIndex;
 | 
			
		||||
    u8 filler5[0x20];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -281,4 +281,11 @@ extern bool32 sub_08077EFC(ItemBehavior*);
 | 
			
		|||
extern void sub_08078E84(Entity*, Entity*);
 | 
			
		||||
extern void sub_080042D0(Entity*, u32, u16);
 | 
			
		||||
 | 
			
		||||
extern u32 sub_080002A8(u32, u32, u32);
 | 
			
		||||
extern void CreateDustAt(u32, u32, u32);
 | 
			
		||||
extern void sub_080806BC(u32, u32, u32, u32);
 | 
			
		||||
 | 
			
		||||
extern void sub_080186C0(u32);
 | 
			
		||||
extern void sub_0801855C(void);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -103,6 +103,15 @@ typedef struct {
 | 
			
		|||
    u16 unk_3e;
 | 
			
		||||
} ManagerE;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    Manager manager;
 | 
			
		||||
    u8 unk_20[0x18];
 | 
			
		||||
    s16 unk_38;
 | 
			
		||||
    s16 unk_3a;
 | 
			
		||||
    u16 unk_3c;//speculative
 | 
			
		||||
    u16 unk_3e;
 | 
			
		||||
} ManagerF;
 | 
			
		||||
 | 
			
		||||
typedef struct Manager11 {
 | 
			
		||||
    Manager manager;
 | 
			
		||||
    u8 unk_20[0x1C];
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +163,7 @@ extern void sub_080585F0();
 | 
			
		|||
extern void sub_0805884C();
 | 
			
		||||
extern void sub_08058DD0(Entity*);
 | 
			
		||||
extern void sub_08058E60();
 | 
			
		||||
extern void sub_08058ECC(Entity*);
 | 
			
		||||
extern void sub_08058ECC(ManagerF*);
 | 
			
		||||
extern void sub_08059570(Entity*);
 | 
			
		||||
extern void sub_080599B8(Manager11*);
 | 
			
		||||
extern void sub_080599EC(Entity*);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,8 @@ typedef struct {
 | 
			
		|||
    /*0x0C*/ s16 roomScrollY;
 | 
			
		||||
    /*0x0E*/ u8 unk5;
 | 
			
		||||
    /*0x0F*/ u8 unk6;
 | 
			
		||||
    /*0x10*/ u8 filler[4];
 | 
			
		||||
    /*0x10*/ u8 unk_10;
 | 
			
		||||
    /*0x11*/ u8 filler[3];
 | 
			
		||||
    /*0x14*/ u8 screenShakeMagnitude;
 | 
			
		||||
    /*0x15*/ u8 unk7;
 | 
			
		||||
    /*0x16*/ u16 screenShakeTime;
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +38,10 @@ typedef struct {
 | 
			
		|||
} RoomControls;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    u8 filler[4];
 | 
			
		||||
    u8 field_0x0;
 | 
			
		||||
    u8 filler_0x1;
 | 
			
		||||
    u8 field_0x2;
 | 
			
		||||
    u8 field_0x3;
 | 
			
		||||
    u8 field_0x4;
 | 
			
		||||
    u8 filler1[1];
 | 
			
		||||
    u8 itemForSaleIndex;
 | 
			
		||||
| 
						 | 
				
			
			@ -45,7 +49,9 @@ typedef struct {
 | 
			
		|||
    u8 field_0x8;
 | 
			
		||||
    u8 field_0x9;
 | 
			
		||||
    u8 unk2;
 | 
			
		||||
    u8 filler2[5];
 | 
			
		||||
    u8 filler2;
 | 
			
		||||
    u16 field_0xc;
 | 
			
		||||
    u8 filler3[2];
 | 
			
		||||
    u8 unk_10;
 | 
			
		||||
    u8 filler6[3];
 | 
			
		||||
    u32 roomFlags;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,8 @@ typedef struct {
 | 
			
		|||
    u16 _22;
 | 
			
		||||
    u16 _24;
 | 
			
		||||
    u16 _26;
 | 
			
		||||
    u8 _28[0x4];
 | 
			
		||||
    u16 _28;
 | 
			
		||||
    u8 _2a[0x2];
 | 
			
		||||
    void* _2c;
 | 
			
		||||
    u8 _30[0x20];
 | 
			
		||||
    WStruct _50;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -515,7 +515,7 @@ SECTIONS {
 | 
			
		|||
        src/manager/managerC.o(.text);
 | 
			
		||||
        asm/managerD.o(.text);
 | 
			
		||||
        src/manager/managerE.o(.text);
 | 
			
		||||
        asm/managerF.o(.text);
 | 
			
		||||
        src/manager/managerF.o(.text);
 | 
			
		||||
        asm/manager10.o(.text);
 | 
			
		||||
        src/manager/manager11.o(.text);
 | 
			
		||||
        asm/manager12.o(.text);
 | 
			
		||||
| 
						 | 
				
			
			@ -1206,7 +1206,7 @@ SECTIONS {
 | 
			
		|||
        src/manager/managerB.o(.rodata);
 | 
			
		||||
        src/manager/managerC.o(.rodata);
 | 
			
		||||
        data/const/manager/managerD.o(.rodata);
 | 
			
		||||
        data/const/manager/managerF.o(.rodata);
 | 
			
		||||
        src/manager/managerF.o(.rodata);
 | 
			
		||||
        data/const/manager/manager10.o(.rodata);
 | 
			
		||||
        data/const/manager/manager12.o(.rodata);
 | 
			
		||||
        data/const/manager/manager13.o(.rodata);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -171,11 +171,11 @@ NONMATCH("asm/non_matching/sub_08054524.inc", void sub_08054524(void)) {
 | 
			
		|||
END_NONMATCH
 | 
			
		||||
 | 
			
		||||
void sub_08054564(void) {
 | 
			
		||||
    gRoomVars.filler[2] = 1;
 | 
			
		||||
    gRoomVars.field_0x2 = 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08054570(void) {
 | 
			
		||||
    gRoomVars.filler[2] = 0;
 | 
			
		||||
    gRoomVars.field_0x2 = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef EU
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ void sub_08080930(void)
 | 
			
		|||
    gRoomControls.unk3 = 5;
 | 
			
		||||
    gRoomControls.unk4 = 0;
 | 
			
		||||
    gRoomControls.unk2 = 2;
 | 
			
		||||
    gRoomControls.filler[0] = 0;
 | 
			
		||||
    gRoomControls.unk_10 = 0;
 | 
			
		||||
    sub_0805E5A8();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,6 @@
 | 
			
		|||
 | 
			
		||||
extern u32 sub_080002E0(u32, u32);
 | 
			
		||||
extern u32 sub_080002C8(u16, u8);
 | 
			
		||||
extern u16 sub_080002A8(u32, u32, u32);
 | 
			
		||||
extern u16 sub_080002D4(u32, u32, u32);
 | 
			
		||||
extern void sub_0804AA1C(Entity*);
 | 
			
		||||
extern Entity* sub_08049DF4(u32);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,7 +43,6 @@ void sub_080583EC(ManagerA* this) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
extern void sub_0805E544(void);
 | 
			
		||||
extern void sub_080186C0(u16);
 | 
			
		||||
 | 
			
		||||
u32 sub_0805848C(ManagerA*);
 | 
			
		||||
void sub_080585DC(ManagerA*);
 | 
			
		||||
| 
						 | 
				
			
			@ -150,7 +149,7 @@ void sub_08058514(ManagerA* this) {
 | 
			
		|||
extern void sub_0801855C(void);
 | 
			
		||||
 | 
			
		||||
void sub_080585B0(ManagerA* this) {
 | 
			
		||||
    if (gArea.filler4[0] != 0xFF) {
 | 
			
		||||
    if (gArea.field_0x28 != 0xFF) {
 | 
			
		||||
        DeleteThisEntity();
 | 
			
		||||
    }
 | 
			
		||||
    if (CheckFlags(this->unk_3c)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,436 @@
 | 
			
		|||
#include "global.h"
 | 
			
		||||
#include "manager.h"
 | 
			
		||||
#include "flags.h"
 | 
			
		||||
#include "audio.h"
 | 
			
		||||
#include "room.h"
 | 
			
		||||
#include "player.h"
 | 
			
		||||
#include "functions.h"
 | 
			
		||||
#include "area.h"
 | 
			
		||||
#include "textbox.h"
 | 
			
		||||
#include "script.h"
 | 
			
		||||
#include "utils.h"
 | 
			
		||||
 | 
			
		||||
void sub_08058ECC(ManagerF*);
 | 
			
		||||
 | 
			
		||||
void sub_08058EE4(ManagerF*);
 | 
			
		||||
void sub_08058FB0(ManagerF*);
 | 
			
		||||
void sub_08059094(ManagerF*);
 | 
			
		||||
void sub_080590E0(ManagerF*);
 | 
			
		||||
void sub_08059124(ManagerF*);
 | 
			
		||||
void sub_080591CC(ManagerF*);
 | 
			
		||||
void sub_08059220(ManagerF*);
 | 
			
		||||
void sub_08059290(ManagerF*);
 | 
			
		||||
void sub_080592A4(ManagerF*);
 | 
			
		||||
void sub_08059368(ManagerF*);
 | 
			
		||||
void sub_0805938C(ManagerF*);
 | 
			
		||||
void sub_08059424(ManagerF*);
 | 
			
		||||
void sub_0805947C(ManagerF*);
 | 
			
		||||
#ifndef EU
 | 
			
		||||
void sub_080594DC(ManagerF*);
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(USA) || defined(DEMO)
 | 
			
		||||
void sub_08059548(ManagerF*);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// clang-format off
 | 
			
		||||
void (*const gUnk_08108314[])(ManagerF*) = {
 | 
			
		||||
    sub_08058EE4,
 | 
			
		||||
    sub_08058FB0,
 | 
			
		||||
    sub_08058FB0, // dup
 | 
			
		||||
    sub_08059094,
 | 
			
		||||
    sub_080590E0,
 | 
			
		||||
    sub_08059124,
 | 
			
		||||
    sub_080591CC,
 | 
			
		||||
    sub_08059220,
 | 
			
		||||
    sub_08059290,
 | 
			
		||||
    sub_080592A4,
 | 
			
		||||
    sub_08059368,
 | 
			
		||||
    sub_0805938C,
 | 
			
		||||
    sub_08059424,
 | 
			
		||||
    sub_0805947C,
 | 
			
		||||
#ifndef EU
 | 
			
		||||
    sub_080594DC,
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(USA) || defined(DEMO)
 | 
			
		||||
    sub_08059548,
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
// clang-format on
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    u16 x;
 | 
			
		||||
    u16 y;
 | 
			
		||||
    u16 width;
 | 
			
		||||
    u16 height;
 | 
			
		||||
    u16 unk_08;
 | 
			
		||||
} PACKED __attribute__((aligned(2))) ManagerF_HelperStruct;
 | 
			
		||||
 | 
			
		||||
const ManagerF_HelperStruct gUnk_08108354[] = {
 | 
			
		||||
    { 0xF0, 0xB0, 0xF0, 0xB0, 0x100 },
 | 
			
		||||
    { 0x188, 0x190, 0x28, 0x30, 0x100 },
 | 
			
		||||
    { 0xF0, 0x340, 0xF0, 0xB0, 0x80 },
 | 
			
		||||
    { 0x180, 0x278, 0x60, 0x38, 0x80 },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const u32 gUnk_08108354_terminator = 0xFFFF; // terminator for the previous array
 | 
			
		||||
 | 
			
		||||
extern u16 script_0800E600[];
 | 
			
		||||
extern u16 script_0800E62C[];
 | 
			
		||||
extern u16 script_0800E658[];
 | 
			
		||||
extern u16 script_0800E684[];
 | 
			
		||||
 | 
			
		||||
u16* const gUnk_08108380[] = {
 | 
			
		||||
    script_0800E600,
 | 
			
		||||
    script_0800E62C,
 | 
			
		||||
    script_0800E658,
 | 
			
		||||
    script_0800E684,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void sub_08058F44(u32, u32, u32);
 | 
			
		||||
void sub_08058F84(u32, u32);
 | 
			
		||||
void sub_08059064(ManagerF*);
 | 
			
		||||
void sub_080592EC(ManagerF*);
 | 
			
		||||
void sub_0805930C(ManagerF*);
 | 
			
		||||
u32 sub_080593CC(ManagerF*);
 | 
			
		||||
void sub_0805E4E0(ManagerF*, u32);
 | 
			
		||||
 | 
			
		||||
// to be moved to headers
 | 
			
		||||
extern EntityData gUnk_080F4B88[];
 | 
			
		||||
 | 
			
		||||
void sub_08058ECC(ManagerF* this) {
 | 
			
		||||
    gUnk_08108314[this->manager.unk_0a](this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08058EE4(ManagerF* this) {
 | 
			
		||||
    if (!this->manager.action)
 | 
			
		||||
        this->manager.action = 1;
 | 
			
		||||
    if (!CheckRoomFlag(this->manager.unk_0b))
 | 
			
		||||
        return;
 | 
			
		||||
    sub_08058F44(0x128, 0x68, this->manager.unk_0b + 1);
 | 
			
		||||
    sub_08058F44(0x158, 0x68, this->manager.unk_0b + 2);
 | 
			
		||||
    sub_08058F44(0x128, 0x98, this->manager.unk_0b + 3);
 | 
			
		||||
    sub_08058F44(0x158, 0x98, this->manager.unk_0b + 4);
 | 
			
		||||
    SoundReq(0x124);
 | 
			
		||||
    DeleteThisEntity();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08058F44(u32 unk0, u32 unk1, u32 unk2) {
 | 
			
		||||
    if (CheckRoomFlag(unk2))
 | 
			
		||||
        return;
 | 
			
		||||
    if (sub_080002A8(unk0, unk1, 1) != 0x61)
 | 
			
		||||
        return;
 | 
			
		||||
    SetTileType(0x26, ((unk0 >> 4) & 0x3F) | (((unk1 >> 4) & 0x3F) << 6), 1);
 | 
			
		||||
    sub_08058F84(unk0, unk1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08058F84(u32 unk0, u32 unk1) {
 | 
			
		||||
    Entity* tmp;
 | 
			
		||||
    tmp = CreateObject(0x21, 0, 0);
 | 
			
		||||
    if (!tmp)
 | 
			
		||||
        return;
 | 
			
		||||
    tmp->x.HALF.HI = gRoomControls.roomOriginX + unk0;
 | 
			
		||||
    tmp->y.HALF.HI = gRoomControls.roomOriginY + unk1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08058FB0(ManagerF* this) {
 | 
			
		||||
    switch (this->manager.action) {
 | 
			
		||||
        case 0:
 | 
			
		||||
            this->manager.action = 1;
 | 
			
		||||
            if (this->manager.unk_0a == 1) {
 | 
			
		||||
                this->manager.unk_0d = 7;
 | 
			
		||||
                this->manager.unk_0f = 6;
 | 
			
		||||
            } else {
 | 
			
		||||
                this->manager.unk_0d = 8;
 | 
			
		||||
                this->manager.unk_0f = 2;
 | 
			
		||||
            }
 | 
			
		||||
            if (CheckFlags(this->unk_3e)) {
 | 
			
		||||
                DeleteManager(&this->manager);
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        case 1:
 | 
			
		||||
            if (CheckFlags(this->unk_3e)) {
 | 
			
		||||
                this->manager.action = 2;
 | 
			
		||||
                this->manager.unk_0e = 120;
 | 
			
		||||
                sub_0805E4E0(this, 0xF0);
 | 
			
		||||
                sub_08059064(this);
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        case 2:
 | 
			
		||||
            if (this->manager.unk_0e == 90) {
 | 
			
		||||
                sub_08078A90(2);
 | 
			
		||||
                sub_08077B20();
 | 
			
		||||
            }
 | 
			
		||||
            if (this->manager.unk_0e == 60) {
 | 
			
		||||
                gPlayerEntity.animationState = this->manager.unk_0f;
 | 
			
		||||
            }
 | 
			
		||||
            if (!--this->manager.unk_0e) {
 | 
			
		||||
                this->manager.action = 3;
 | 
			
		||||
                MenuFadeIn(5, this->manager.unk_0d);
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        default:
 | 
			
		||||
            SetFlag(this->unk_3e);
 | 
			
		||||
            sub_08078A90(1);
 | 
			
		||||
            DeleteThisEntity();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08059064(ManagerF* this) {
 | 
			
		||||
    Entity* tmp;
 | 
			
		||||
    tmp = CreateObject(0, 0x53, 0);
 | 
			
		||||
    if (!tmp)
 | 
			
		||||
        return;
 | 
			
		||||
    tmp->actionDelay = 2;
 | 
			
		||||
    tmp->x.HALF.HI = this->unk_38 + gRoomControls.roomOriginX;
 | 
			
		||||
    tmp->y.HALF.HI = this->unk_3a + gRoomControls.roomOriginY;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08059094(ManagerF* this) {
 | 
			
		||||
    u32 tmp = 0;
 | 
			
		||||
    if (!this->manager.action) {
 | 
			
		||||
        this->manager.action = 1;
 | 
			
		||||
        if (CheckLocalFlag(0x60)) {
 | 
			
		||||
            tmp = 1;
 | 
			
		||||
        } else {
 | 
			
		||||
            SetLocalFlag(0x5F);
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        if (CheckLocalFlag(0x60)) {
 | 
			
		||||
            ClearLocalFlag(0x5F);
 | 
			
		||||
            tmp = 1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (tmp) {
 | 
			
		||||
        LoadRoomEntityList(gUnk_080F4B88);
 | 
			
		||||
        DeleteManager(&this->manager);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_080590E0(ManagerF* this) {
 | 
			
		||||
    if (!this->manager.action) {
 | 
			
		||||
        this->manager.action = 1;
 | 
			
		||||
        sub_0805E3A0(this, 6);
 | 
			
		||||
    }
 | 
			
		||||
    if (CheckLocalFlag(0x6c)) {
 | 
			
		||||
        if (CheckLocalFlag(0x4b)) {
 | 
			
		||||
            SetLocalFlag(0x4a);
 | 
			
		||||
        } else {
 | 
			
		||||
            ClearLocalFlag(0x4a);
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        ClearLocalFlag(0x4a);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08059124(ManagerF* this) {
 | 
			
		||||
    switch (this->manager.action) {
 | 
			
		||||
        default:
 | 
			
		||||
            if (!--this->manager.unk_0e) {
 | 
			
		||||
                CreateDustAt(this->unk_38, this->unk_3a, this->manager.unk_0b);
 | 
			
		||||
                sub_0807BA8C(((this->unk_38 >> 4) & 0x3f) | ((this->unk_3a >> 4) & 0x3f) << 6, this->manager.unk_0b);
 | 
			
		||||
                SoundReq(0xcd);
 | 
			
		||||
                DeleteThisEntity();
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        case 0:
 | 
			
		||||
            if (CheckFlags(this->unk_3e)) {
 | 
			
		||||
                DeleteThisEntity();
 | 
			
		||||
            }
 | 
			
		||||
            this->manager.action = 1;
 | 
			
		||||
            SetTileType(0x365, ((this->unk_38 >> 4) & 0x3f) | ((this->unk_3a >> 4) & 0x3f) << 6, this->manager.unk_0b);
 | 
			
		||||
            break;
 | 
			
		||||
        case 1:
 | 
			
		||||
            if (CheckFlags(this->unk_3e)) {
 | 
			
		||||
                sub_0805E4E0(this, 0x4b);
 | 
			
		||||
                this->manager.unk_0e = 0x2d;
 | 
			
		||||
                this->manager.action++;
 | 
			
		||||
            }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_080591CC(ManagerF* this) {
 | 
			
		||||
    if (!this->manager.action) {
 | 
			
		||||
        this->manager.action = 1;
 | 
			
		||||
        this->manager.unk_0b = CheckFlags(this->unk_3e);
 | 
			
		||||
        if (this->manager.unk_0b) {
 | 
			
		||||
            gRoomVars.field_0xc = this->unk_3a;
 | 
			
		||||
        } else {
 | 
			
		||||
            gRoomVars.field_0xc = this->unk_38;
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        u32 tmp = CheckFlags(this->unk_3e);
 | 
			
		||||
        if (this->manager.unk_0b != tmp) {
 | 
			
		||||
            this->manager.unk_0b = tmp;
 | 
			
		||||
            if (tmp) {
 | 
			
		||||
                gRoomVars.field_0xc = this->unk_3a;
 | 
			
		||||
            } else {
 | 
			
		||||
                gRoomVars.field_0xc = this->unk_38;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08059220(ManagerF* this) {
 | 
			
		||||
    const ManagerF_HelperStruct* data;
 | 
			
		||||
    gRoomVars.field_0xc = 0;
 | 
			
		||||
 | 
			
		||||
    for (data = gUnk_08108354; data->x != 0xFFFF; data++) {
 | 
			
		||||
        if (CheckPlayerInRegion(data->x, data->y, data->width, data->height)) {
 | 
			
		||||
            gRoomVars.field_0xc = data->unk_08;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (!this->manager.action) {
 | 
			
		||||
        this->manager.action = 1;
 | 
			
		||||
        gArea.unk_0a = gRoomVars.field_0xc;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08059278() {
 | 
			
		||||
    ManagerF* tmp;
 | 
			
		||||
    tmp = (ManagerF*)FindEntityByID(0x9, 0xF, 0x6);
 | 
			
		||||
    if (tmp) {
 | 
			
		||||
        sub_08058ECC(tmp);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08059290(ManagerF* this) {
 | 
			
		||||
    this->manager.action = 1;
 | 
			
		||||
    gRoomControls.cameraTarget = &gPlayerEntity;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_080592A4(ManagerF* this) {
 | 
			
		||||
    if (!this->manager.action) {
 | 
			
		||||
        this->manager.action = 1;
 | 
			
		||||
        if (CheckFlags(this->unk_3e)) {
 | 
			
		||||
            sub_080592EC(this);
 | 
			
		||||
            DeleteThisEntity();
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        if (CheckFlags(this->unk_3e)) {
 | 
			
		||||
            sub_080592EC(this);
 | 
			
		||||
            sub_0805930C(this);
 | 
			
		||||
#ifndef EU
 | 
			
		||||
            SoundReq(0x16E);
 | 
			
		||||
#endif
 | 
			
		||||
            DeleteThisEntity();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_080592EC(ManagerF* this) {
 | 
			
		||||
    SetDirtTile(((this->unk_38 >> 4) & 0x3F) | (((this->unk_3a >> 4) & 0x3F) << 6));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_0805930C(ManagerF* this) {
 | 
			
		||||
    Entity* tmp;
 | 
			
		||||
#ifdef EU
 | 
			
		||||
    tmp = CreateObject(0xF, 0x43, 0x0);
 | 
			
		||||
#else
 | 
			
		||||
    tmp = CreateObject(0xF, 0x43, 0x40);
 | 
			
		||||
#endif
 | 
			
		||||
    if (!tmp)
 | 
			
		||||
        return;
 | 
			
		||||
    tmp->x.HALF.HI = this->unk_38 + gRoomControls.roomOriginX;
 | 
			
		||||
    tmp->y.HALF.HI = this->unk_3a + gRoomControls.roomOriginY;
 | 
			
		||||
    tmp->collisionLayer = 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SetDirtTile(u32 tile) {
 | 
			
		||||
    SetTileType(0x1d, tile, 1);
 | 
			
		||||
    SetTileType(0, tile, 2);
 | 
			
		||||
    SetTileType(0, tile - 0x40, 2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08059368(ManagerF* this) {
 | 
			
		||||
    this->manager.action = 1;
 | 
			
		||||
    if (this->unk_3c == gCurrentTextBox._28) {
 | 
			
		||||
        SetFlag(this->unk_3e);
 | 
			
		||||
        DeleteThisEntity();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_0805938C(ManagerF* this) {
 | 
			
		||||
    if (sub_080593CC(this)) {
 | 
			
		||||
        if (++this->manager.unk_0e >= 8) {
 | 
			
		||||
            sub_080806BC(this->unk_38 - gRoomControls.roomOriginX, this->unk_3a - gRoomControls.roomOriginY, 0xFF, 0xA);
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        this->manager.unk_0e = 0;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
u32 sub_080593CC(ManagerF* this) {
 | 
			
		||||
    if (!(gPlayerState.flags.all & 0x80) && gPlayerState.swimState != 0 && gPlayerEntity.animationState == 0 &&
 | 
			
		||||
        (gPlayerState.field_0x90.HALF.LO & 0xF00) == 0x400) {
 | 
			
		||||
        return sub_0806FCB8(&gPlayerEntity, this->unk_38, this->unk_3a + 0xC, 6);
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_08059424(ManagerF* this) {
 | 
			
		||||
    Entity* tmp;
 | 
			
		||||
    if (CheckFlags(this->unk_3e)) {
 | 
			
		||||
        DeleteThisEntity();
 | 
			
		||||
    }
 | 
			
		||||
    if (!CheckFlags(this->unk_3c))
 | 
			
		||||
        return;
 | 
			
		||||
    tmp = CreateObject(0xF, 0x35, 0);
 | 
			
		||||
    if (!tmp)
 | 
			
		||||
        return;
 | 
			
		||||
    tmp->collisionLayer = 2;
 | 
			
		||||
    tmp->x.HALF.HI = this->unk_38 + gRoomControls.roomOriginX;
 | 
			
		||||
    tmp->y.HALF.HI = this->unk_3a + gRoomControls.roomOriginY;
 | 
			
		||||
    EnqueueSFX(0x1B0);
 | 
			
		||||
    DeleteThisEntity();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_0805947C(ManagerF* this) {
 | 
			
		||||
    if (!CheckFlags(this->unk_3e)) {
 | 
			
		||||
        sub_08078A90(3);
 | 
			
		||||
        if (gRoomControls.unk2)
 | 
			
		||||
            return;
 | 
			
		||||
        if (gRoomVars.field_0x0) {
 | 
			
		||||
            StartPlayerScript(gUnk_08108380[gRoomControls.unk_10]);
 | 
			
		||||
        } else {
 | 
			
		||||
            StartPlayerScript(gUnk_08108380[gPlayerEntity.animationState >> 1]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    DeleteThisEntity();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifndef EU
 | 
			
		||||
void sub_080594DC(ManagerF* this) {
 | 
			
		||||
    switch (this->manager.action) {
 | 
			
		||||
        case 0:
 | 
			
		||||
            this->manager.action = 1;
 | 
			
		||||
            // fall through
 | 
			
		||||
        case 1:
 | 
			
		||||
            if (!GetInventoryValue(6))
 | 
			
		||||
                return;
 | 
			
		||||
            if (CheckLocalFlagByOffset(0x8c0, 0x85))
 | 
			
		||||
                return;
 | 
			
		||||
            this->manager.action = 2;
 | 
			
		||||
            sub_080186C0(0xB0F);
 | 
			
		||||
            break;
 | 
			
		||||
        case 2:
 | 
			
		||||
        default:
 | 
			
		||||
            if (gArea.field_0x28 != 0xFF) {
 | 
			
		||||
                DeleteThisEntity();
 | 
			
		||||
            }
 | 
			
		||||
            if (CheckLocalFlagByOffset(0x8c0, 0x85)) {
 | 
			
		||||
                sub_0801855C();
 | 
			
		||||
                DeleteThisEntity();
 | 
			
		||||
            }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(USA) || defined(DEMO)
 | 
			
		||||
void sub_08059548(ManagerF* this) {
 | 
			
		||||
    sub_0805E3A0(this, 6);
 | 
			
		||||
    if (gPlayerEntity.action == 0x16) {
 | 
			
		||||
        DeleteThisEntity();
 | 
			
		||||
    }
 | 
			
		||||
    gInput.heldKeys |= 0x4;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -117,7 +117,7 @@ void sub_08060A00(Entity* this) {
 | 
			
		|||
        this->action = 1;
 | 
			
		||||
        this->spriteSettings.b.draw = 1;
 | 
			
		||||
        this->speed = 0x120;
 | 
			
		||||
        tmp = gRoomControls.filler[0];
 | 
			
		||||
        tmp = gRoomControls.unk_10;
 | 
			
		||||
        this->animationState = tmp * 2;
 | 
			
		||||
        InitAnimationForceUpdate(this, tmp << 0x19 >> 0x19); // TODO some conversion between u8 and u32?
 | 
			
		||||
        this->frameDuration = (Random() & 0x7f) + 0x80;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -308,7 +308,7 @@ void sub_0806AA18(Entity* this) {
 | 
			
		|||
ASM_FUNC("asm/non_matching/rem/sub_0806AA50.inc", void sub_0806AA50(Entity* this, ScriptExecutionContext* context))
 | 
			
		||||
 | 
			
		||||
void sub_0806AB74(Entity* this) {
 | 
			
		||||
    gRoomVars.filler[3] = 1;
 | 
			
		||||
    gRoomVars.field_0x3 = 1;
 | 
			
		||||
    if ((s32)(this->y.HALF.HI - (u32)gRoomControls.roomOriginY) < 0xa8) {
 | 
			
		||||
        this->y.HALF.HI = gRoomControls.roomOriginY + 0xa8;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1376,7 +1376,7 @@ void sub_080724DC(Entity* this) {
 | 
			
		|||
    } else {
 | 
			
		||||
        this->spriteSettings.b.draw = 3;
 | 
			
		||||
        this->subAction = 1;
 | 
			
		||||
        if (gRoomVars.filler[0] == 0) {
 | 
			
		||||
        if (gRoomVars.field_0x0 == 0) {
 | 
			
		||||
            if (gPlayerState.flags.all & 0x80) {
 | 
			
		||||
                gPlayerState.field_0x8 = 0xc18;
 | 
			
		||||
            } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -521,7 +521,7 @@ void sub_0804BA0C(void) {
 | 
			
		|||
    if (gSave.unk8 < 8) {
 | 
			
		||||
        LoadRoomEntityList(&gUnk_080D7038);
 | 
			
		||||
    }
 | 
			
		||||
    if (gRoomVars.filler[0] == 0) {
 | 
			
		||||
    if (gRoomVars.field_0x0 == 0) {
 | 
			
		||||
        sub_08052CA4(2, 0, 0x2c8, 0xa8);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue