mirror of https://github.com/zeldaret/tmc.git
Match sub_080789A8
This commit is contained in:
parent
f54509dd5d
commit
e82c26c3d5
|
@ -1,116 +0,0 @@
|
||||||
.syntax unified
|
|
||||||
push {r4, r5, r6, r7, lr}
|
|
||||||
mov r7, r8
|
|
||||||
push {r7}
|
|
||||||
ldr r1, _080789BC @ =gCarriedEntity
|
|
||||||
ldrb r0, [r1]
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080789C0
|
|
||||||
ldrb r0, [r1, #1]
|
|
||||||
b _08078A88
|
|
||||||
.align 2, 0
|
|
||||||
_080789BC: .4byte gCarriedEntity
|
|
||||||
_080789C0:
|
|
||||||
ldr r0, _08078A5C @ =gPlayerState
|
|
||||||
ldr r0, [r0, #0x30]
|
|
||||||
movs r1, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08078A56
|
|
||||||
ldr r0, _08078A60 @ =gPlayerEntity
|
|
||||||
bl sub_080B1B0C
|
|
||||||
adds r4, r0, #0
|
|
||||||
cmp r4, #0xf
|
|
||||||
bls _080789E6
|
|
||||||
ldr r0, _08078A64 @ =gUnk_080084BC
|
|
||||||
adds r1, r4, #0
|
|
||||||
subs r1, #0x10
|
|
||||||
adds r1, r1, r0
|
|
||||||
ldrb r0, [r1]
|
|
||||||
cmp r0, #0xf
|
|
||||||
beq _08078A56
|
|
||||||
_080789E6:
|
|
||||||
ldr r0, _08078A5C @ =gPlayerState
|
|
||||||
ldrb r0, [r0, #0x12]
|
|
||||||
cmp r0, #0x12
|
|
||||||
beq _08078A56
|
|
||||||
ldr r3, _08078A68 @ =gCarriedEntity
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r3]
|
|
||||||
ldrb r4, [r3, #2]
|
|
||||||
cmp r4, #0
|
|
||||||
beq _08078A2E
|
|
||||||
ldr r2, _08078A60 @ =gPlayerEntity
|
|
||||||
ldrb r1, [r2, #0x14]
|
|
||||||
movs r0, #6
|
|
||||||
ands r0, r1
|
|
||||||
ldr r1, _08078A6C @ =gUnk_0811BFE0
|
|
||||||
adds r6, r0, r1
|
|
||||||
adds r7, r2, #0
|
|
||||||
adds r3, #8
|
|
||||||
mov r8, r3
|
|
||||||
_08078A0C:
|
|
||||||
lsls r0, r4, #2
|
|
||||||
mov r1, r8
|
|
||||||
adds r5, r0, r1
|
|
||||||
ldr r1, [r5]
|
|
||||||
cmp r1, #0
|
|
||||||
beq _08078A26
|
|
||||||
ldrb r2, [r6]
|
|
||||||
ldrb r3, [r6, #1]
|
|
||||||
adds r0, r7, #0
|
|
||||||
bl sub_0807A180
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08078A74
|
|
||||||
_08078A26:
|
|
||||||
subs r4, #1
|
|
||||||
ldr r7, _08078A60 @ =gPlayerEntity
|
|
||||||
cmp r4, #0
|
|
||||||
bne _08078A0C
|
|
||||||
_08078A2E:
|
|
||||||
ldr r0, _08078A60 @ =gPlayerEntity
|
|
||||||
ldrb r1, [r0, #0x14]
|
|
||||||
movs r2, #6
|
|
||||||
ands r2, r1
|
|
||||||
ldr r1, _08078A70 @ =gUnk_08007DF4
|
|
||||||
adds r2, r2, r1
|
|
||||||
movs r1, #0
|
|
||||||
ldrsb r1, [r2, r1]
|
|
||||||
ldrb r2, [r2, #1]
|
|
||||||
lsls r2, r2, #0x18
|
|
||||||
asrs r2, r2, #0x18
|
|
||||||
bl sub_080B1A0C
|
|
||||||
ldr r4, _08078A68 @ =gCarriedEntity
|
|
||||||
strh r0, [r4, #4]
|
|
||||||
movs r1, #6
|
|
||||||
bl sub_0806FC24
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08078A84
|
|
||||||
_08078A56:
|
|
||||||
movs r0, #0
|
|
||||||
b _08078A88
|
|
||||||
.align 2, 0
|
|
||||||
_08078A5C: .4byte gPlayerState
|
|
||||||
_08078A60: .4byte gPlayerEntity
|
|
||||||
_08078A64: .4byte gUnk_080084BC
|
|
||||||
_08078A68: .4byte gCarriedEntity
|
|
||||||
_08078A6C: .4byte gUnk_0811BFE0
|
|
||||||
_08078A70: .4byte gUnk_08007DF4
|
|
||||||
_08078A74:
|
|
||||||
mov r0, r8
|
|
||||||
subs r0, #8
|
|
||||||
ldr r1, [r5]
|
|
||||||
str r1, [r0, #8]
|
|
||||||
movs r1, #2
|
|
||||||
strb r1, [r0, #1]
|
|
||||||
movs r0, #2
|
|
||||||
b _08078A88
|
|
||||||
_08078A84:
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #1]
|
|
||||||
_08078A88:
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4, r5, r6, r7, pc}
|
|
||||||
.align 2, 0
|
|
||||||
.syntax divided
|
|
|
@ -148,6 +148,15 @@ extern u32 sub_08004202(Entity*, u8*, u32);
|
||||||
extern u32 gUnk_02022830[];
|
extern u32 gUnk_02022830[];
|
||||||
extern u16* gUnk_0800823C[];
|
extern u16* gUnk_0800823C[];
|
||||||
|
|
||||||
|
extern bool32 sub_0806FC24(u32, u32);
|
||||||
|
|
||||||
|
extern const u8 gUnk_0800845C[];
|
||||||
|
extern const u8 gUnk_0811BFE0[];
|
||||||
|
extern const u8 gUnk_08007DF4[];
|
||||||
|
extern const u8 gUnk_080084BC[];
|
||||||
|
|
||||||
|
u32 sub_0807A180(Entity*, Entity*, u32, u32);
|
||||||
|
|
||||||
void UpdateActiveItems(PlayerEntity* this) {
|
void UpdateActiveItems(PlayerEntity* this) {
|
||||||
u32 index;
|
u32 index;
|
||||||
|
|
||||||
|
@ -1277,7 +1286,53 @@ void FreeCarryEntity(Entity* this) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ASM_FUNC("asm/non_matching/playerUtils/sub_080789A8.inc", u32 sub_080789A8())
|
u32 sub_080789A8(void) {
|
||||||
|
u32 uVar2;
|
||||||
|
Entity* entity;
|
||||||
|
u32 uVar4;
|
||||||
|
const u8* ptr;
|
||||||
|
const u8* ptr2;
|
||||||
|
Entity** tmp1;
|
||||||
|
|
||||||
|
if (gCarriedEntity.unk_0)
|
||||||
|
return (u32)gCarriedEntity.unk_1;
|
||||||
|
|
||||||
|
if (!(gPlayerState.flags & PL_MINISH)) {
|
||||||
|
uVar4 = sub_080B1B0C(&gPlayerEntity);
|
||||||
|
if (uVar4 >= 0x10 && (gUnk_080084BC[uVar4 - 0x10] == 0xf))
|
||||||
|
return 0;
|
||||||
|
if (gPlayerState.floor_type == 0x12)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
gCarriedEntity.unk_0 = 1;
|
||||||
|
uVar4 = (u32)gCarriedEntity.count;
|
||||||
|
|
||||||
|
if (uVar4 > 0) {
|
||||||
|
ptr2 = &gUnk_0811BFE0[gPlayerEntity.animationState & 6];
|
||||||
|
while (uVar4 > 0) {
|
||||||
|
tmp1 = &gCarriedEntity.unk_8 + uVar4;
|
||||||
|
entity = *tmp1;
|
||||||
|
if ((entity != NULL) && (sub_0807A180(&gPlayerEntity, entity, ptr2[0], ptr2[1]) != 0)) {
|
||||||
|
gCarriedEntity.unk_8 = *tmp1;
|
||||||
|
gCarriedEntity.unk_1 = 2;
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
uVar4--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ptr = &gUnk_08007DF4[gPlayerEntity.animationState & 6];
|
||||||
|
gCarriedEntity.unk_4 = uVar2 = sub_080B1A0C(&gPlayerEntity, (s8)ptr[0], (s8)ptr[1]);
|
||||||
|
|
||||||
|
if (!sub_0806FC24(uVar2, 6))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
} else
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
gCarriedEntity.unk_1 = 1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
void SetPlayerControl(PlayerControlMode mode) {
|
void SetPlayerControl(PlayerControlMode mode) {
|
||||||
if (gPlayerState.controlMode != CONTROL_DISABLED) {
|
if (gPlayerState.controlMode != CONTROL_DISABLED) {
|
||||||
|
|
Loading…
Reference in New Issue