mirror of https://github.com/zeldaret/tmc.git
				
				
				
			Match sub_0803086C
This commit is contained in:
		
							parent
							
								
									582831dac2
								
							
						
					
					
						commit
						4f1f2f280e
					
				| 
						 | 
				
			
			@ -1,154 +0,0 @@
 | 
			
		|||
	.syntax unified
 | 
			
		||||
	push {r4, r5, r6, r7, lr}
 | 
			
		||||
	mov r7, sl
 | 
			
		||||
	mov r6, sb
 | 
			
		||||
	mov r5, r8
 | 
			
		||||
	push {r5, r6, r7}
 | 
			
		||||
	adds r5, r0, #0
 | 
			
		||||
	ldr r0, [r5, #0x7c]
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _08030880
 | 
			
		||||
	b _0803099C
 | 
			
		||||
_08030880:
 | 
			
		||||
	ldr r0, _08030928 @ =gPlayerState
 | 
			
		||||
	ldr r0, [r0, #0x30]
 | 
			
		||||
	movs r1, #0x80
 | 
			
		||||
	ands r0, r1
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	bne _0803088E
 | 
			
		||||
	b _0803098A
 | 
			
		||||
_0803088E:
 | 
			
		||||
	ldr r0, _0803092C @ =gRoomControls
 | 
			
		||||
	mov sb, r0
 | 
			
		||||
	ldrh r0, [r5, #0x2e]
 | 
			
		||||
	mov r2, sb
 | 
			
		||||
	ldrh r1, [r2, #6]
 | 
			
		||||
	subs r0, r0, r1
 | 
			
		||||
	lsls r0, r0, #0x10
 | 
			
		||||
	lsrs r7, r0, #0x10
 | 
			
		||||
	ldrh r0, [r5, #0x32]
 | 
			
		||||
	ldrh r1, [r2, #8]
 | 
			
		||||
	subs r0, r0, r1
 | 
			
		||||
	lsls r0, r0, #0x10
 | 
			
		||||
	lsrs r6, r0, #0x10
 | 
			
		||||
	movs r3, #0x2e
 | 
			
		||||
	ldrsh r0, [r5, r3]
 | 
			
		||||
	ldrh r1, [r2, #6]
 | 
			
		||||
	subs r0, r0, r1
 | 
			
		||||
	asrs r4, r0, #4
 | 
			
		||||
	movs r2, #0x3f
 | 
			
		||||
	ands r4, r2
 | 
			
		||||
	movs r1, #0x32
 | 
			
		||||
	ldrsh r0, [r5, r1]
 | 
			
		||||
	mov r3, sb
 | 
			
		||||
	ldrh r1, [r3, #8]
 | 
			
		||||
	subs r0, r0, r1
 | 
			
		||||
	asrs r0, r0, #4
 | 
			
		||||
	ands r0, r2
 | 
			
		||||
	lsls r0, r0, #6
 | 
			
		||||
	orrs r4, r0
 | 
			
		||||
	movs r0, #0x38
 | 
			
		||||
	adds r0, r0, r5
 | 
			
		||||
	mov r8, r0
 | 
			
		||||
	ldrb r1, [r0]
 | 
			
		||||
	adds r0, r4, #0
 | 
			
		||||
	bl GetTileType
 | 
			
		||||
	ldr r1, _08030930 @ =0x00004049
 | 
			
		||||
	mov sl, r1
 | 
			
		||||
	cmp r0, sl
 | 
			
		||||
	bne _08030950
 | 
			
		||||
	adds r0, r7, #0
 | 
			
		||||
	adds r1, r6, #0
 | 
			
		||||
	movs r2, #2
 | 
			
		||||
	movs r3, #0xc
 | 
			
		||||
	bl CheckPlayerInRegion
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _0803093C
 | 
			
		||||
	subs r1, r6, #4
 | 
			
		||||
	adds r0, r7, #0
 | 
			
		||||
	movs r2, #2
 | 
			
		||||
	movs r3, #4
 | 
			
		||||
	bl CheckPlayerInRegion
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _0803098A
 | 
			
		||||
	ldr r2, _08030934 @ =gPlayerEntity
 | 
			
		||||
	adds r2, #0x29
 | 
			
		||||
	ldrb r1, [r2]
 | 
			
		||||
	movs r0, #8
 | 
			
		||||
	rsbs r0, r0, #0
 | 
			
		||||
	ands r0, r1
 | 
			
		||||
	movs r1, #3
 | 
			
		||||
	orrs r0, r1
 | 
			
		||||
	strb r0, [r2]
 | 
			
		||||
	ldr r0, [r5, #0x7c]
 | 
			
		||||
	bl DoExitTransition
 | 
			
		||||
	ldr r0, _08030938 @ =gRoomTransition
 | 
			
		||||
	adds r1, r5, #0
 | 
			
		||||
	adds r1, #0x80
 | 
			
		||||
	ldrb r1, [r1]
 | 
			
		||||
	adds r0, #0xae
 | 
			
		||||
	strh r1, [r0]
 | 
			
		||||
	movs r0, #1
 | 
			
		||||
	b _0803099E
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_08030928: .4byte gPlayerState
 | 
			
		||||
_0803092C: .4byte gRoomControls
 | 
			
		||||
_08030930: .4byte 0x00004049
 | 
			
		||||
_08030934: .4byte gPlayerEntity
 | 
			
		||||
_08030938: .4byte gRoomTransition
 | 
			
		||||
_0803093C:
 | 
			
		||||
	ldr r0, _0803094C @ =0x00004022
 | 
			
		||||
	mov r3, r8
 | 
			
		||||
	ldrb r2, [r3]
 | 
			
		||||
	adds r1, r4, #0
 | 
			
		||||
	bl SetTile
 | 
			
		||||
	b _0803098A
 | 
			
		||||
	.align 2, 0
 | 
			
		||||
_0803094C: .4byte 0x00004022
 | 
			
		||||
_08030950:
 | 
			
		||||
	adds r1, r6, #6
 | 
			
		||||
	adds r0, r7, #0
 | 
			
		||||
	movs r2, #2
 | 
			
		||||
	movs r3, #5
 | 
			
		||||
	bl CheckPlayerInRegion
 | 
			
		||||
	cmp r0, #0
 | 
			
		||||
	beq _0803098A
 | 
			
		||||
	movs r4, #0x2e
 | 
			
		||||
	ldrsh r1, [r5, r4]
 | 
			
		||||
	mov r2, sb
 | 
			
		||||
	ldrh r0, [r2, #6]
 | 
			
		||||
	subs r1, r1, r0
 | 
			
		||||
	asrs r1, r1, #4
 | 
			
		||||
	movs r3, #0x3f
 | 
			
		||||
	ands r1, r3
 | 
			
		||||
	movs r4, #0x32
 | 
			
		||||
	ldrsh r0, [r5, r4]
 | 
			
		||||
	ldrh r2, [r2, #8]
 | 
			
		||||
	subs r0, r0, r2
 | 
			
		||||
	asrs r0, r0, #4
 | 
			
		||||
	ands r0, r3
 | 
			
		||||
	lsls r0, r0, #6
 | 
			
		||||
	orrs r1, r0
 | 
			
		||||
	mov r0, r8
 | 
			
		||||
	ldrb r2, [r0]
 | 
			
		||||
	mov r0, sl
 | 
			
		||||
	bl SetTile
 | 
			
		||||
_0803098A:
 | 
			
		||||
	adds r2, r5, #0
 | 
			
		||||
	adds r2, #0x29
 | 
			
		||||
	ldrb r1, [r2]
 | 
			
		||||
	movs r0, #8
 | 
			
		||||
	rsbs r0, r0, #0
 | 
			
		||||
	ands r0, r1
 | 
			
		||||
	movs r1, #4
 | 
			
		||||
	orrs r0, r1
 | 
			
		||||
	strb r0, [r2]
 | 
			
		||||
_0803099C:
 | 
			
		||||
	movs r0, #0
 | 
			
		||||
_0803099E:
 | 
			
		||||
	pop {r3, r4, r5}
 | 
			
		||||
	mov r8, r3
 | 
			
		||||
	mov sb, r4
 | 
			
		||||
	mov sl, r5
 | 
			
		||||
	pop {r4, r5, r6, r7, pc}
 | 
			
		||||
	.syntax divided
 | 
			
		||||
| 
						 | 
				
			
			@ -413,7 +413,43 @@ void sub_08030834(ArmosEntity* this) {
 | 
			
		|||
    SetTile(this->unk_78, COORD_TO_TILE(super), super->collisionLayer);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ASM_FUNC("asm/non_matching/armos/sub_0803086C.inc", bool32 sub_0803086C(ArmosEntity* this))
 | 
			
		||||
bool32 sub_0803086C(ArmosEntity* this) {
 | 
			
		||||
    u32 uVar2;
 | 
			
		||||
    u32 pos;
 | 
			
		||||
    u32 pos2;
 | 
			
		||||
    u16 centerY;
 | 
			
		||||
    u16 centerX;
 | 
			
		||||
    FORCE_REGISTER(u32 r2, r2);
 | 
			
		||||
 | 
			
		||||
    if (this->unk_7c != NULL) {
 | 
			
		||||
        if ((gPlayerState.flags & 0x80) != 0) {
 | 
			
		||||
            centerX = super->x.HALF_U.HI - gRoomControls.origin_x;
 | 
			
		||||
            centerY = super->y.HALF_U.HI - gRoomControls.origin_y;
 | 
			
		||||
            // TODO for some reason the 0x3f of COORD_TO_TILE(super) needs to be forced to r2 here.
 | 
			
		||||
            pos = ((((((super)->x.HALF.HI) - gRoomControls.origin_x) >> 4) & (r2 = 0x3f)) |
 | 
			
		||||
                   (((((super)->y.HALF.HI) - gRoomControls.origin_y) >> 4) & r2) << 6);
 | 
			
		||||
 | 
			
		||||
            if (GetTileType(pos, super->collisionLayer) == 0x4049) {
 | 
			
		||||
                if (CheckPlayerInRegion(centerX, centerY, 2, 0xc) != 0) {
 | 
			
		||||
                    if (CheckPlayerInRegion(centerX, centerY - 4, 2, 4) != 0) {
 | 
			
		||||
                        gPlayerEntity.spritePriority.b0 = 3;
 | 
			
		||||
                        DoExitTransition(this->unk_7c);
 | 
			
		||||
                        gRoomTransition.armos_data.field_0xae = this->unk_80;
 | 
			
		||||
                        return TRUE;
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
                    SetTile(0x4022, pos, super->collisionLayer);
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                if (CheckPlayerInRegion(centerX, centerY + 6, 2, 5) != 0) {
 | 
			
		||||
                    SetTile(0x4049, COORD_TO_TILE(super), super->collisionLayer);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        super->spritePriority.b0 = 4;
 | 
			
		||||
    }
 | 
			
		||||
    return FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sub_080309A8(ArmosEntity* this) {
 | 
			
		||||
    GetNextFrame(super);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue