mirror of https://github.com/zeldaret/tmc.git
Match sub_08078D60
This commit is contained in:
parent
52e3382791
commit
e67d2dbd38
|
@ -1,152 +0,0 @@
|
||||||
.syntax unified
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
ldr r1, _08078DCC @ =gPlayerEntity
|
|
||||||
ldr r0, [r1, #0x74]
|
|
||||||
ldr r4, [r0, #0x54]
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
adds r6, r1, #0
|
|
||||||
cmp r0, #2
|
|
||||||
beq _08078D72
|
|
||||||
b _08078E82
|
|
||||||
_08078D72:
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r0, #0x63
|
|
||||||
ldrb r0, [r0]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
asrs r0, r0, #0x18
|
|
||||||
ldrh r1, [r6, #0x36]
|
|
||||||
adds r0, r0, r1
|
|
||||||
strh r0, [r4, #0x36]
|
|
||||||
ldrb r1, [r6, #0x1b]
|
|
||||||
lsrs r1, r1, #6
|
|
||||||
lsls r1, r1, #6
|
|
||||||
ldrb r2, [r4, #0x1b]
|
|
||||||
movs r0, #0x3f
|
|
||||||
ands r0, r2
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r4, #0x1b]
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r0, #0x38
|
|
||||||
ldrb r1, [r0]
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x38
|
|
||||||
strb r1, [r0]
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r0, [r0]
|
|
||||||
movs r2, #0x7f
|
|
||||||
ands r2, r0
|
|
||||||
ldr r1, _08078DD0 @ =gUnk_0811C0E8
|
|
||||||
ldrb r0, [r4, #0x16]
|
|
||||||
lsrs r0, r0, #4
|
|
||||||
lsls r0, r0, #2
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r1, [r0]
|
|
||||||
ldrb r0, [r6, #0x18]
|
|
||||||
lsls r0, r0, #0x19
|
|
||||||
cmp r0, #0
|
|
||||||
bge _08078DD4
|
|
||||||
adds r2, r1, r2
|
|
||||||
movs r1, #0
|
|
||||||
ldrsb r1, [r2, r1]
|
|
||||||
ldrh r0, [r6, #0x2e]
|
|
||||||
subs r0, r0, r1
|
|
||||||
strh r0, [r4, #0x2e]
|
|
||||||
adds r1, r2, #0
|
|
||||||
b _08078DE0
|
|
||||||
.align 2, 0
|
|
||||||
_08078DCC: .4byte gPlayerEntity
|
|
||||||
_08078DD0: .4byte gUnk_0811C0E8
|
|
||||||
_08078DD4:
|
|
||||||
adds r1, r1, r2
|
|
||||||
movs r0, #0
|
|
||||||
ldrsb r0, [r1, r0]
|
|
||||||
ldrh r2, [r6, #0x2e]
|
|
||||||
adds r0, r0, r2
|
|
||||||
strh r0, [r4, #0x2e]
|
|
||||||
_08078DE0:
|
|
||||||
movs r0, #1
|
|
||||||
ldrsb r0, [r1, r0]
|
|
||||||
ldrh r1, [r4, #0x36]
|
|
||||||
adds r0, r0, r1
|
|
||||||
strh r0, [r4, #0x36]
|
|
||||||
adds r5, r6, #0
|
|
||||||
ldrh r0, [r5, #0x32]
|
|
||||||
strh r0, [r4, #0x32]
|
|
||||||
adds r0, r5, #0
|
|
||||||
adds r1, r4, #0
|
|
||||||
bl SortEntityAbove
|
|
||||||
ldr r0, _08078E34 @ =gPlayerState
|
|
||||||
ldrb r0, [r0, #5]
|
|
||||||
cmp r0, #4
|
|
||||||
bne _08078E4C
|
|
||||||
ldrb r1, [r5, #0x19]
|
|
||||||
lsrs r1, r1, #6
|
|
||||||
lsls r1, r1, #6
|
|
||||||
ldrb r2, [r4, #0x19]
|
|
||||||
movs r0, #0x3f
|
|
||||||
ands r0, r2
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r4, #0x19]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806F8DC
|
|
||||||
ldrb r1, [r4, #0x16]
|
|
||||||
movs r0, #0xf
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #2
|
|
||||||
bne _08078E82
|
|
||||||
ldr r0, _08078E38 @ =gRoomTransition
|
|
||||||
ldr r1, [r0]
|
|
||||||
movs r0, #3
|
|
||||||
ands r1, r0
|
|
||||||
cmp r1, #1
|
|
||||||
beq _08078E3C
|
|
||||||
cmp r1, #3
|
|
||||||
beq _08078E44
|
|
||||||
b _08078E82
|
|
||||||
.align 2, 0
|
|
||||||
_08078E34: .4byte gPlayerState
|
|
||||||
_08078E38: .4byte gRoomTransition
|
|
||||||
_08078E3C:
|
|
||||||
ldrh r0, [r4, #0x2e]
|
|
||||||
adds r0, #1
|
|
||||||
strh r0, [r4, #0x2e]
|
|
||||||
b _08078E82
|
|
||||||
_08078E44:
|
|
||||||
ldrh r0, [r4, #0x2e]
|
|
||||||
subs r0, #1
|
|
||||||
strh r0, [r4, #0x2e]
|
|
||||||
b _08078E82
|
|
||||||
_08078E4C:
|
|
||||||
ldrb r0, [r5, #0x14]
|
|
||||||
lsrs r0, r0, #1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08078E62
|
|
||||||
adds r0, r5, #0
|
|
||||||
adds r0, #0x29
|
|
||||||
ldrb r1, [r0]
|
|
||||||
lsls r1, r1, #0x1d
|
|
||||||
lsrs r1, r1, #0x1d
|
|
||||||
subs r1, #1
|
|
||||||
b _08078E6E
|
|
||||||
_08078E62:
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r0, #0x29
|
|
||||||
ldrb r1, [r0]
|
|
||||||
lsls r1, r1, #0x1d
|
|
||||||
lsrs r1, r1, #0x1d
|
|
||||||
adds r1, #1
|
|
||||||
_08078E6E:
|
|
||||||
adds r3, r4, #0
|
|
||||||
adds r3, #0x29
|
|
||||||
movs r0, #7
|
|
||||||
ands r1, r0
|
|
||||||
ldrb r2, [r3]
|
|
||||||
movs r0, #8
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
ands r0, r2
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r3]
|
|
||||||
_08078E82:
|
|
||||||
pop {r4, r5, r6, pc}
|
|
||||||
.syntax divided
|
|
|
@ -43,6 +43,7 @@ void sub_0806FF48(Entity*, u32, u32);
|
||||||
void sub_0806FCF4(Entity*, s32, s32, s32);
|
void sub_0806FCF4(Entity*, s32, s32, s32);
|
||||||
void sub_0806FD3C(Entity*);
|
void sub_0806FD3C(Entity*);
|
||||||
bool32 sub_0806FDA0(Entity*);
|
bool32 sub_0806FDA0(Entity*);
|
||||||
|
bool32 sub_0806F8DC(Entity*);
|
||||||
void sub_0806FEBC(Entity*, u32, Entity*);
|
void sub_0806FEBC(Entity*, u32, Entity*);
|
||||||
extern bool32 ProcessMovement1(Entity*);
|
extern bool32 ProcessMovement1(Entity*);
|
||||||
extern bool32 ProcessMovement12(Entity*);
|
extern bool32 ProcessMovement12(Entity*);
|
||||||
|
|
|
@ -34,7 +34,6 @@ void sub_080ACF2C(PlayerItemHeldObjectEntity*);
|
||||||
void sub_080ACFCC(PlayerItemHeldObjectEntity*);
|
void sub_080ACFCC(PlayerItemHeldObjectEntity*);
|
||||||
void sub_080AD040(PlayerItemHeldObjectEntity*);
|
void sub_080AD040(PlayerItemHeldObjectEntity*);
|
||||||
void sub_080AD274(PlayerItemHeldObjectEntity*);
|
void sub_080AD274(PlayerItemHeldObjectEntity*);
|
||||||
bool32 sub_0806F8DC(Entity*);
|
|
||||||
|
|
||||||
void PlayerItemHeldObject(Entity* this) {
|
void PlayerItemHeldObject(Entity* this) {
|
||||||
static void (*const subActionFuncs[])(PlayerItemHeldObjectEntity*) = {
|
static void (*const subActionFuncs[])(PlayerItemHeldObjectEntity*) = {
|
||||||
|
|
|
@ -32,6 +32,7 @@ void sub_08079064(Entity*);
|
||||||
extern u8 gMapData;
|
extern u8 gMapData;
|
||||||
extern const u8 gUnk_020176E0[];
|
extern const u8 gUnk_020176E0[];
|
||||||
extern const ScreenTransitionData gUnk_0813AD88[];
|
extern const ScreenTransitionData gUnk_0813AD88[];
|
||||||
|
extern const s8* gUnk_0811C0E8[];
|
||||||
|
|
||||||
bool32 IsAbleToUseItem(PlayerEntity*);
|
bool32 IsAbleToUseItem(PlayerEntity*);
|
||||||
bool32 IsPreventedFromUsingItem();
|
bool32 IsPreventedFromUsingItem();
|
||||||
|
@ -1207,7 +1208,51 @@ void sub_08078CD0(PlayerEntity* this) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ASM_FUNC("asm/non_matching/playerUtils/sub_08078D60.inc", void sub_08078D60())
|
void sub_08078D60(void) {
|
||||||
|
const s8* puVar2;
|
||||||
|
u32 uVar3;
|
||||||
|
Entity* iVar4;
|
||||||
|
Entity* player;
|
||||||
|
|
||||||
|
player = &gPlayerEntity;
|
||||||
|
iVar4 = (*(Entity**)&((GenericEntity*)player)->field_0x74)->child;
|
||||||
|
if (iVar4->action != 2)
|
||||||
|
return;
|
||||||
|
|
||||||
|
iVar4->z.HALF.HI = gPlayerEntity.spriteOffsetY + gPlayerEntity.z.HALF.HI;
|
||||||
|
iVar4->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
|
||||||
|
iVar4->collisionLayer = gPlayerEntity.collisionLayer;
|
||||||
|
uVar3 = gPlayerEntity.frame & 0x7f;
|
||||||
|
puVar2 = gUnk_0811C0E8[iVar4->carryFlags >> 4];
|
||||||
|
if (gPlayerEntity.spriteSettings.flipX) {
|
||||||
|
iVar4->x.HALF.HI = gPlayerEntity.x.HALF.HI - puVar2[uVar3];
|
||||||
|
} else {
|
||||||
|
iVar4->x.HALF.HI = gPlayerEntity.x.HALF.HI + puVar2[uVar3];
|
||||||
|
}
|
||||||
|
iVar4->z.HALF.HI = puVar2[uVar3 + 1] + iVar4->z.HALF.HI;
|
||||||
|
iVar4->y.HALF.HI = gPlayerEntity.y.HALF.HI;
|
||||||
|
SortEntityAbove(&gPlayerEntity, iVar4);
|
||||||
|
if (gPlayerState.heldObject == 4) {
|
||||||
|
iVar4->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3;
|
||||||
|
sub_0806F8DC(iVar4);
|
||||||
|
if ((iVar4->carryFlags & 0xf) == 2) {
|
||||||
|
switch (gRoomTransition.frameCount & 3) {
|
||||||
|
case 1:
|
||||||
|
iVar4->x.HALF.HI++;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
iVar4->x.HALF.HI--;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (gPlayerEntity.animationState >> 1 != 0) {
|
||||||
|
iVar4->spritePriority.b0 = gPlayerEntity.spritePriority.b0 - 1;
|
||||||
|
} else {
|
||||||
|
iVar4->spritePriority.b0 = gPlayerEntity.spritePriority.b0 + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void sub_08078E84(Entity* param_1, Entity* param_2) {
|
void sub_08078E84(Entity* param_1, Entity* param_2) {
|
||||||
SpriteFrame* frame;
|
SpriteFrame* frame;
|
||||||
|
|
Loading…
Reference in New Issue