diff options
| author | Tal Hayon <talhayon1@gmail.com> | 2022-04-16 00:50:17 +0300 |
|---|---|---|
| committer | Tal Hayon <talhayon1@gmail.com> | 2022-04-16 00:50:17 +0300 |
| commit | 02f5e4cc5f8808c4aed3ec2bade32699ad5b2cbd (patch) | |
| tree | 362cf615121821cd32b1a8f637e35172b9f813d9 /src | |
| parent | d93cc82ccff4e1f2921ef76818ee39e809ef2c97 (diff) | |
Match Syrup_Head and put const data in syrup
Diffstat (limited to 'src')
| -rw-r--r-- | src/npc/syrup.c | 66 |
1 files changed, 52 insertions, 14 deletions
diff --git a/src/npc/syrup.c b/src/npc/syrup.c index d1535e72..51c24059 100644 --- a/src/npc/syrup.c +++ b/src/npc/syrup.c @@ -2,23 +2,37 @@ #include "functions.h" #include "object.h" -extern void (*gUnk_081121D4[])(Entity*); +static const SpriteLoadData gUnk_081121B4[] = { + { 0xc2, 0x46, 0x4 }, + { 0x44c2, 0x46, 0x4 }, + { 0x54c3, 0x46, 0x4 }, + { 0x70c2, 0x46, 0x4 }, +}; +static const SpriteLoadData gUnk_081121C4[] = { + { 0xc2, 0x46, 0x4 }, + { 0x44c2, 0x46, 0x4 }, + { 0x54c4, 0x46, 0x4 }, + { 0x70c2, 0x46, 0x4 }, +}; -extern SpriteLoadData gUnk_081121C4; -extern SpriteLoadData gUnk_081121B4; - -extern void sub_0806A26C(Entity*); +void sub_0806A26C(Entity*); +void sub_0806A1F8(Entity*); +void sub_0806A234(Entity*); void Syrup(Entity* this) { - gUnk_081121D4[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0806A1F8, + sub_0806A234, + }; + actionFuncs[this->action](this); sub_0806ED78(this); } void sub_0806A1F8(Entity* this) { u32 iVar1; - SpriteLoadData* paVar2; + const SpriteLoadData* paVar2; - this->type == 0 ? (paVar2 = &gUnk_081121B4) : (paVar2 = &gUnk_081121C4); + this->type == 0 ? (paVar2 = gUnk_081121B4) : (paVar2 = gUnk_081121C4); iVar1 = LoadExtraSpriteData(this, paVar2); if (iVar1) { @@ -39,11 +53,10 @@ void sub_0806A234(Entity* this) { } } -extern u8 gUnk_081121DC[]; - void sub_0806A26C(Entity* this) { + static const s8 gUnk_081121DC[] = { -1, -2, -3, 0, 1, 2, 3, 0 }; u8 unk; - u8* ptr; + const s8* ptr; u32 uVar2, uVar1; Entity* pEVar1; pEVar1 = CreateObject(SPECIAL_FX, 0x2f, 0); @@ -51,11 +64,36 @@ void sub_0806A26C(Entity* this) { PositionEntityOnTop(this, pEVar1); uVar2 = uVar1 = Random(); ptr = gUnk_081121DC; - pEVar1->spriteOffsetX = (u8)ptr[uVar2 & 7]; + pEVar1->spriteOffsetX = ptr[uVar2 & 7]; uVar1 /= 256; uVar1 &= 7; - pEVar1->spriteOffsetY = (u8)ptr[uVar1] - 8; + pEVar1->spriteOffsetY = ptr[uVar1] - 8; } } -ASM_FUNC("asm/non_matching/syrup/Syrup_Head.inc", void Syrup_Head(Entity* this)) +static const u8 gUnk_081121E4[] = { 0x0, 0x5, 0x0, 0x5, 0x1, 0x6, 0x1, 0x6, 0x2, 0x7, 0x2, 0x7, 0x3, 0x8, 0x3, 0x8, + 0x4, 0x9, 0x4, 0x9, 0x3, 0x8, 0x3, 0x8, 0x2, 0x7, 0x2, 0x7, 0x1, 0x6, 0x1, 0x6 }; + +static const u8 gUnk_08112204[] = { 0, 1, 0, 0 }; + +void Syrup_Head(Entity* param_1) { + u32 bVar1; + u8 bVar2; + u32 uVar3; + u32 tmp1; + u32 tmp2; + + bVar1 = (param_1->frameSpriteSettings) & 1; + bVar2 = param_1->frame; + tmp1 = bVar2 >> 4 & 7; + tmp2 = (bVar2 & 7); + uVar3 = (u32)(param_1->animationState >> 1); + SetExtraSpriteFrame(param_1, 0, gUnk_081121E4[uVar3 + (u32)param_1->frameIndex * 4] + 0x10); + sub_0806FF48(param_1, 0, gUnk_08112204[uVar3]); + SetExtraSpriteFrame(param_1, 1, tmp1); + SetExtraSpriteFrame(param_1, 2, tmp2 + 0x1c); + SetExtraSpriteFrame(param_1, 3, bVar1 + 0x1a); + SetSpriteSubEntryOffsetData1(param_1, 1, 0); + SetSpriteSubEntryOffsetData2(param_1, 1, 3); + sub_0807000C(param_1); +} |
