mirror of https://github.com/zeldaret/tmc.git
Match sub_080ACDB0
This commit is contained in:
parent
3046351144
commit
d8f70dcfbf
|
|
@ -1,150 +0,0 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
bne _080ACDE8
|
||||
ldr r2, _080ACDE0 @ =gPlayerEntity
|
||||
ldr r1, _080ACDE4 @ =gUnk_08126EE4
|
||||
ldrb r0, [r4, #0x14]
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
ldrh r3, [r2, #0x2e]
|
||||
adds r0, r0, r3
|
||||
strh r0, [r4, #0x2e]
|
||||
ldrb r0, [r4, #0x14]
|
||||
adds r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
ldrh r2, [r2, #0x32]
|
||||
adds r0, r0, r2
|
||||
b _080ACEB4
|
||||
.align 2, 0
|
||||
_080ACDE0: .4byte gPlayerEntity
|
||||
_080ACDE4: .4byte gUnk_08126EE4
|
||||
_080ACDE8:
|
||||
ldrb r2, [r4, #0x14]
|
||||
movs r0, #2
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _080ACE48
|
||||
ldr r0, [r4, #0x50]
|
||||
ldrh r1, [r0, #0x32]
|
||||
subs r1, #3
|
||||
strh r1, [r4, #0x32]
|
||||
movs r1, #4
|
||||
ands r1, r2
|
||||
adds r3, r0, #0
|
||||
cmp r1, #0
|
||||
beq _080ACE20
|
||||
movs r0, #0x2e
|
||||
ldrsh r7, [r3, r0]
|
||||
movs r0, #0x2e
|
||||
ldrsh r6, [r4, r0]
|
||||
ldr r1, _080ACE1C @ =gUnk_0812AAE8
|
||||
ldrb r2, [r4, #0xa]
|
||||
adds r0, r2, r1
|
||||
ldrb r0, [r0]
|
||||
rsbs r5, r0, #0
|
||||
adds r0, r1, #0
|
||||
b _080ACE30
|
||||
.align 2, 0
|
||||
_080ACE1C: .4byte gUnk_0812AAE8
|
||||
_080ACE20:
|
||||
movs r0, #0x2e
|
||||
ldrsh r6, [r3, r0]
|
||||
movs r0, #0x2e
|
||||
ldrsh r7, [r4, r0]
|
||||
ldr r0, _080ACE44 @ =gUnk_0812AAE8
|
||||
ldrb r2, [r4, #0xa]
|
||||
adds r1, r2, r0
|
||||
ldrb r5, [r1]
|
||||
_080ACE30:
|
||||
subs r1, r7, r6
|
||||
str r1, [r4, #0x78]
|
||||
adds r0, r2, r0
|
||||
ldrb r0, [r0]
|
||||
cmp r0, r1
|
||||
bhi _080ACE90
|
||||
ldrh r0, [r3, #0x2e]
|
||||
adds r0, r0, r5
|
||||
strh r0, [r4, #0x2e]
|
||||
b _080ACEB6
|
||||
.align 2, 0
|
||||
_080ACE44: .4byte gUnk_0812AAE8
|
||||
_080ACE48:
|
||||
ldr r1, [r4, #0x50]
|
||||
ldrh r0, [r1, #0x2e]
|
||||
strh r0, [r4, #0x2e]
|
||||
movs r0, #4
|
||||
ands r0, r2
|
||||
adds r3, r1, #0
|
||||
cmp r0, #0
|
||||
beq _080ACE70
|
||||
movs r0, #0x32
|
||||
ldrsh r6, [r3, r0]
|
||||
movs r0, #0x32
|
||||
ldrsh r7, [r4, r0]
|
||||
ldr r0, _080ACE6C @ =gUnk_0812AAE8
|
||||
ldrb r2, [r4, #0xa]
|
||||
adds r1, r2, r0
|
||||
ldrb r5, [r1]
|
||||
b _080ACE84
|
||||
.align 2, 0
|
||||
_080ACE6C: .4byte gUnk_0812AAE8
|
||||
_080ACE70:
|
||||
movs r0, #0x32
|
||||
ldrsh r7, [r3, r0]
|
||||
movs r0, #0x32
|
||||
ldrsh r6, [r4, r0]
|
||||
ldr r1, _080ACEAC @ =gUnk_0812AAE8
|
||||
ldrb r2, [r4, #0xa]
|
||||
adds r0, r2, r1
|
||||
ldrb r0, [r0]
|
||||
rsbs r5, r0, #0
|
||||
adds r0, r1, #0
|
||||
_080ACE84:
|
||||
subs r1, r7, r6
|
||||
str r1, [r4, #0x78]
|
||||
adds r0, r2, r0
|
||||
ldrb r0, [r0]
|
||||
cmp r0, r1
|
||||
bls _080ACEB0
|
||||
_080ACE90:
|
||||
subs r0, r0, r1
|
||||
lsls r1, r0, #8
|
||||
strh r1, [r4, #0x24]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x10
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #2
|
||||
cmp r0, r1
|
||||
ble _080ACEA4
|
||||
strh r1, [r4, #0x24]
|
||||
_080ACEA4:
|
||||
adds r0, r4, #0
|
||||
bl ProcessMovement1
|
||||
b _080ACEB6
|
||||
.align 2, 0
|
||||
_080ACEAC: .4byte gUnk_0812AAE8
|
||||
_080ACEB0:
|
||||
ldrh r0, [r3, #0x32]
|
||||
adds r0, r0, r5
|
||||
_080ACEB4:
|
||||
strh r0, [r4, #0x32]
|
||||
_080ACEB6:
|
||||
ldr r0, _080ACEC8 @ =gPlayerEntity
|
||||
adds r0, #0x38
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x38
|
||||
strb r1, [r0]
|
||||
movs r0, #0
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_080ACEC8: .4byte gPlayerEntity
|
||||
.syntax divided
|
||||
|
|
@ -41,6 +41,7 @@ extern const s8* const sOffsets[];
|
|||
extern const s8 gUnk_0812AABC[];
|
||||
extern const Hitbox* const sHitboxes[];
|
||||
extern const u8 gUnk_0812AAE8[];
|
||||
extern const s8 gUnk_08126EE4[];
|
||||
|
||||
// specifically, the little gusts that come out while the item is active
|
||||
// type 0: stays close to jar?
|
||||
|
|
@ -149,7 +150,71 @@ static void sub_080ACC78(GustEntity* this) {
|
|||
}
|
||||
}
|
||||
|
||||
/*static*/ ASM_FUNC("asm/non_matching/playerItem10/sub_080ACDB0.inc", bool32 sub_080ACDB0(GustEntity* this))
|
||||
bool32 sub_080ACDB0(GustEntity* this) {
|
||||
s32 sVar2;
|
||||
s32 sVar3;
|
||||
Entity* pEVar4;
|
||||
u32 uVar6;
|
||||
u32 uVar7;
|
||||
u32 tmp;
|
||||
|
||||
if (super->type == 0) {
|
||||
super->x.HALF.HI = gPlayerEntity.x.HALF.HI + gUnk_08126EE4[super->animationState];
|
||||
super->y.HALF.HI = gPlayerEntity.y.HALF.HI + gUnk_08126EE4[super->animationState + 1];
|
||||
} else {
|
||||
if ((super->animationState & 2) != 0) {
|
||||
super->y.HALF.HI = super->parent->y.HALF.HI - 3;
|
||||
tmp = super->animationState & 4;
|
||||
pEVar4 = super->parent;
|
||||
if ((tmp) != 0) {
|
||||
sVar3 = pEVar4->x.HALF.HI;
|
||||
sVar2 = super->x.HALF.HI;
|
||||
uVar7 = -(u16)gUnk_0812AAE8[super->type];
|
||||
} else {
|
||||
sVar2 = pEVar4->x.HALF.HI;
|
||||
sVar3 = super->x.HALF.HI;
|
||||
uVar7 = (u16)gUnk_0812AAE8[super->type];
|
||||
}
|
||||
this->unk78 = (s32)sVar3 - (s32)sVar2;
|
||||
uVar6 = gUnk_0812AAE8[super->type];
|
||||
if (uVar6 <= this->unk78) {
|
||||
super->x.HALF.HI = pEVar4->x.HALF.HI + uVar7;
|
||||
} else {
|
||||
super->speed = (uVar6 - this->unk78) * 0x100;
|
||||
if (0x200 < (s32)((uVar6 - this->unk78) * 0x1000000) >> 0x10) {
|
||||
super->speed = 0x200;
|
||||
}
|
||||
ProcessMovement1(super);
|
||||
}
|
||||
} else {
|
||||
super->x.HALF.HI = super->parent->x.HALF.HI;
|
||||
tmp = super->animationState & 4;
|
||||
pEVar4 = super->parent;
|
||||
if ((super->animationState & 4) != 0) {
|
||||
sVar2 = pEVar4->y.HALF.HI;
|
||||
sVar3 = super->y.HALF.HI;
|
||||
uVar7 = gUnk_0812AAE8[super->type];
|
||||
} else {
|
||||
sVar3 = pEVar4->y.HALF.HI;
|
||||
sVar2 = super->y.HALF.HI;
|
||||
uVar7 = -gUnk_0812AAE8[super->type];
|
||||
}
|
||||
this->unk78 = sVar3 - sVar2;
|
||||
uVar6 = gUnk_0812AAE8[super->type];
|
||||
if (uVar6 > this->unk78) {
|
||||
super->speed = (uVar6 - this->unk78) * 0x100;
|
||||
if (0x200 < (s32)((uVar6 - this->unk78) * 0x1000000) >> 0x10) {
|
||||
super->speed = 0x200;
|
||||
}
|
||||
ProcessMovement1(super);
|
||||
} else {
|
||||
super->y.HALF.HI = pEVar4->y.HALF.HI + uVar7;
|
||||
}
|
||||
}
|
||||
}
|
||||
super->collisionLayer = gPlayerEntity.collisionLayer;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void sub_080ACECC(GustEntity* this) {
|
||||
Entity* entity;
|
||||
|
|
|
|||
Loading…
Reference in New Issue