diff --git a/assets/assets.json b/assets/assets.json index f0837759..b72b0d71 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -38952,26 +38952,6 @@ "size": 5, "type": "animation" }, - { - "path": "percy/gUnk_08112E1C.bin", - "start": 1125916, - "size": 16 - }, - { - "path": "percy/gUnk_08112E2C.bin", - "start": 1125932, - "size": 4 - }, - { - "path": "percy/gUnk_08112E2C_1.bin", - "start": 1125940, - "size": 28 - }, - { - "path": "percy/gUnk_08112E54.bin", - "start": 1125972, - "size": 8 - }, { "path": "animations/gSpriteAnimations_VaatiReborn_0.bin", "start": 1126280, diff --git a/data/const/npc/percy.s b/data/const/npc/percy.s deleted file mode 100644 index 724fd000..00000000 --- a/data/const/npc/percy.s +++ /dev/null @@ -1,17 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08112E1C:: @ 08112E1C - .incbin "percy/gUnk_08112E1C.bin" - -gUnk_08112E2C:: @ 08112E2C - .incbin "percy/gUnk_08112E2C.bin" - .4byte sub_0806B504 - .incbin "percy/gUnk_08112E2C_1.bin" - .4byte sub_0806B540 - -gUnk_08112E54:: @ 08112E54 - .incbin "percy/gUnk_08112E54.bin" diff --git a/linker.ld b/linker.ld index 1c5ec8e8..a1f97104 100644 --- a/linker.ld +++ b/linker.ld @@ -1253,7 +1253,7 @@ SECTIONS { data/animations/npc/townMinish.o(.rodata); src/npc/librari.o(.rodata); data/animations/npc/librari.o(.rodata); - data/const/npc/percy.o(.rodata); + src/npc/percy.o(.rodata); data/animations/npc/percy.o(.rodata); src/npc/vaatiReborn.o(.rodata); data/animations/npc/vaatiReborn.o(.rodata); diff --git a/src/npc/percy.c b/src/npc/percy.c index 3d7b5591..c06fa9b5 100644 --- a/src/npc/percy.c +++ b/src/npc/percy.c @@ -3,13 +3,18 @@ #include "npc.h" #include "functions.h" -extern void sub_0806B41C(Entity*); -extern void sub_0806B3CC(Entity*); +static const SpriteLoadData gUnk_08112E1C[] = { + { 0x30f6, 0x47, 0x4 }, + { 0xf6, 0x47, 0x4 }, + { 0x1cf6, 0x47, 0x4 }, + { 0, 0, 0 }, +}; +void sub_0806B41C(Entity*); +void sub_0806B3CC(Entity*); +void sub_0806B504(Entity*); +void sub_0806B540(Entity*); extern u16* gUnk_08001A7C[40]; -extern u16 gUnk_08112E54[4]; -extern Dialog gUnk_08112E2C[5]; -extern SpriteLoadData gUnk_08112E1C; void Percy_Head(Entity* this) { SetExtraSpriteFrame(this, 0, (this->frameSpriteSettings & 0x3f) + 0x13); @@ -30,7 +35,7 @@ void Percy(Entity* this) { void sub_0806B3CC(Entity* this) { if (this->action == 0) { - if (!LoadExtraSpriteData(this, &gUnk_08112E1C)) { + if (!LoadExtraSpriteData(this, gUnk_08112E1C)) { return; } this->action = 1; @@ -51,7 +56,7 @@ void sub_0806B41C(Entity* this) { switch (this->action) { case 0: - if (LoadExtraSpriteData(this, &gUnk_08112E1C)) { + if (LoadExtraSpriteData(this, gUnk_08112E1C)) { this->action = 1; this->spriteSettings.draw = 1; if (this->type2 == 2) { @@ -84,10 +89,23 @@ void sub_0806B41C(Entity* this) { } void sub_0806B4F0(Entity* this) { + static const Dialog gUnk_08112E2C[5] = { + { 0, 0, 5, 0, { .func = sub_0806B504 } }, + { 0, 0, 1, 1, { 0, 0x2312 } }, + { 0, 0, 1, 1, { 0, 0x2311 } }, + { 0, 0, 1, 1, { 0, 0x2519 } }, + { 0, 0, 5, 0, { .func = sub_0806B540 } }, + }; ShowNPCDialogue(this, &gUnk_08112E2C[this->type2]); } void sub_0806B504(Entity* this) { + static const u16 messageIndices[4] = { + 0x230c, + 0x230d, + 0x230e, + 0x2310, + }; int idx; idx = 1; @@ -98,7 +116,7 @@ void sub_0806B504(Entity* this) { SetLocalFlag(URO_POEMN_TALK); } - MessageNoOverlap(gUnk_08112E54[idx], this); + MessageNoOverlap(messageIndices[idx], this); } void sub_0806B540(Entity* this) { @@ -149,7 +167,7 @@ void sub_0806B60C(Entity* this) { void Percy_Fusion(Entity* this) { if (this->action == 0) { - if (LoadExtraSpriteData(this, &gUnk_08112E1C) != 0) { + if (LoadExtraSpriteData(this, gUnk_08112E1C) != 0) { this->action += 1; this->spriteSettings.draw = 1; InitializeAnimation(this, 2);