ok townMinish sub_0806AC3C

This commit is contained in:
Behemoth 2020-08-21 15:47:48 +02:00
parent 8ab5503804
commit 6784ec9e62
2 changed files with 28 additions and 109 deletions

View File

@ -6,77 +6,6 @@
.text
thumb_func_start sub_0806AC3C
sub_0806AC3C: @ 0x0806AC3C
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #3
bhi _0806ACBA
ldr r4, _0806AC6C @ =gPlayerEntity
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0x18
movs r3, #0x18
bl sub_080041A0
cmp r0, #0
beq _0806AC70
adds r0, r5, #0
adds r1, r4, #0
bl GetFacingDirection
adds r2, r0, #0
movs r0, #0x1e
ands r2, r0
b _0806AC74
.align 2, 0
_0806AC6C: .4byte gPlayerEntity
_0806AC70:
ldrb r0, [r5, #0x14]
lsls r2, r0, #2
_0806AC74:
adds r0, r5, #0
adds r0, #0x69
ldrb r3, [r0]
adds r4, r0, #0
cmp r2, r3
beq _0806AC9A
subs r0, r2, r3
movs r1, #0x1f
ands r0, r1
cmp r0, #0xf
bgt _0806AC8E
subs r0, r3, #1
b _0806AC90
_0806AC8E:
adds r0, r3, #1
_0806AC90:
strb r0, [r4]
ldrb r1, [r4]
movs r0, #0x1f
ands r0, r1
strb r0, [r4]
_0806AC9A:
ldrb r1, [r4]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _0806ACBA
ldrb r0, [r4]
bl sub_0806F5B0
strb r0, [r5, #0x14]
ldrb r1, [r5, #0x14]
lsrs r1, r1, #1
movs r0, #2
eors r1, r0
adds r0, r5, #0
bl InitializeAnimation
_0806ACBA:
adds r0, r5, #0
bl UpdateAnimationSingleFrame
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0806ACC4
sub_0806ACC4: @ 0x0806ACC4
push {r4, r5, lr}

View File

@ -1,35 +1,32 @@
#include "global.h"
#include "entity.h"
#include "npc.h"
#include "functions.h"
extern void InitializeAnimation(Entity *, u32);
extern void InitializeAnimation(Entity*, u32);
extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*);
extern void sub_0806ED78(Entity *);
extern void sub_0806ACC4(Entity*);
extern void sub_0806ED78(Entity*);
extern u32 sub_0806F5B0(u32);
extern void (*gUnk_081126E8[])();
extern void sub_0806ACC4(Entity *);
extern u32 LoadExtraSpriteData(Entity *, SpriteLoadData *);
extern SpriteLoadData gUnk_08112674[];
extern void (*gUnk_081126E8[])();
void TownMinish(Entity *this)
{
void TownMinish(Entity* this) {
if ((this->flags & 2) == 0) {
(*gUnk_081126E8[this->action])(this);
gUnk_081126E8[this->action](this);
sub_0806ED78(this);
}
else {
} else {
sub_0806ACC4(this);
}
}
void sub_0806ABFC(Entity *this)
{
void sub_0806ABFC(Entity* this) {
u8 animationState;
SpriteLoadData* SpriteLoadData = &gUnk_08112674[this->entityType.form << 2];
if (!LoadExtraSpriteData(this, SpriteLoadData))
{
if (!LoadExtraSpriteData(this, SpriteLoadData)) {
return;
}
@ -44,41 +41,34 @@ void sub_0806ABFC(Entity *this)
this->actionDelay = 0;
}
// Not matching yet, not 100% sure it's functionally identical
/*void sub_0806AC3C(Entity *this) {
if (this->field_0x58 <= 3) {
void sub_0806AC3C(Entity* this) {
if (this->animIndex <= 3) {
s32 unk;
u8 field_0x68;
Entity *link = &gPlayerEntity;
Entity* link = &gPlayerEntity;
if (sub_080041A0(this, link, 0x18, 0x18)) {
unk = GetFacingDirection(this, link) & (u8)0x1e;
}
else {
unk = this->animationState << 2;
unk = GetFacingDirection(this, link) & 0x1e;
} else {
unk = this->animationState * 4;
}
field_0x68.HALF.HI = this->field_0x68.HALF.HI;
if (unk != field_0x68.HALF.HI) {
if (unk != this->field_0x68.HALF.HI) {
s32 temp;
if (((unk - field_0x68.HALF.HI) & 0x1f) <= 0xf) {
field_0x68.HALF.HI--;
}
else {
field_0x68.HALF.HI++;
if (((unk - this->field_0x68.HALF.HI) & 0x1f) <= 0xf) {
this->field_0x68.HALF.HI--;
} else {
this->field_0x68.HALF.HI++;
}
temp = field_0x68.HALF.HI;
this->field_0x68.HALF.HI = temp & 0x1f;
this->field_0x68.HALF.HI &= 0x1f;
}
if (!(this->field_0x68.HALF.HI & 7)) {
this->animationState = sub_0806F5B0(this->field_0x68.HALF.HI);
UpdateSprite(this, (this->animationState >> 1) ^ 2);
InitializeAnimation(this, (this->animationState / 2) ^ 2);
}
}
sub_080042B8(this);
}*/
UpdateAnimationSingleFrame(this);
}