diff --git a/asm/townMinish.s b/asm/townMinish.s index 18494800..7c9104f7 100644 --- a/asm/townMinish.s +++ b/asm/townMinish.s @@ -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} diff --git a/src/npc/townMinish.c b/src/npc/townMinish.c index 80d207ef..5b6d55b9 100644 --- a/src/npc/townMinish.c +++ b/src/npc/townMinish.c @@ -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); +} +