summaryrefslogtreecommitdiff
path: root/include/m_npc.h
diff options
context:
space:
mode:
authorPrakxo <87568477+Prakxo@users.noreply.github.com>2023-11-23 18:03:30 +0100
committerGitHub <noreply@github.com>2023-11-23 10:03:30 -0700
commite1fcb33cef0b8e58ce3cecc2977921e685f129ba (patch)
tree2bdf6a246b02e0863efb24925293d916174e58bc /include/m_npc.h
parentbd8169465a20a324436c4ead9a750d869a17131b (diff)
The NPC PR 3/3 OK (#119)
* npc werk * atleast it builds * m_npc OK * forgor format * review * format * fix warns?
Diffstat (limited to 'include/m_npc.h')
-rw-r--r--include/m_npc.h577
1 files changed, 355 insertions, 222 deletions
diff --git a/include/m_npc.h b/include/m_npc.h
index 4fb1303..9ce0bad 100644
--- a/include/m_npc.h
+++ b/include/m_npc.h
@@ -5,243 +5,376 @@
#include "m_actor.h"
#include "unk.h"
#include "m_land.h"
-#include "6DB420.h"
+#include "lb_rtc.h"
+#include "libu64/gfxprint.h"
+#include "m_quest.h"
#include "m_mail.h"
+#include "m_private_internals.h"
+#include "overlays/actors/ovl_Npc/ac_npc.h"
+#include "m_field_make.h"
+#include "m_npc_base.h"
-#define ANIMAL_NUM_MAX 15 /* Maximum number of villagers possible in town */
+#define ANIMAL_NUM_MIN 5
+#define ANIMAL_NUM_MAX 15 /* Maximum number of villagers possible in town */
+
+#define ANIMAL_MEMORY_NUM 7
+#define ANIMAL_CATCHPHRASE_LEN 4
+#define ANIMAL_NAME_LEN PLAYER_NAME_LEN
+
+#define NPC_NUM 216
+
+struct Game;
+struct PrivateInfo;
+
+typedef struct NpcHouseData {
+ /* 0x00 */ u8 type;
+ /* 0x01 */ u8 palette;
+ /* 0x02 */ u8 wallId;
+ /* 0x03 */ u8 floorId;
+ /* 0x04 */ u16 mainLayerId;
+ /* 0x06 */ u16 secondaryLayerId;
+} NpcHouseData; // size = 0x8
+
+typedef struct NpcListFlags {
+ /* 0x00 */ u8 beeSting:1; // [8]
+ /* 0x00 */ u8 fishComplete:1; // [7]
+ /* 0x00 */ u8 insectComplete:1; // [6]
+ /* 0x00 */ u8 unk3:6; // [5:0]
+} NpcListFlags; //size = 0x1
typedef struct NpcList {
- /* 0x00 */ char unk00[0x10];
+ /* 0x00 */ u16 name;
+ /* 0x02 */ u16 fieldName;
+ /* 0x04 */ xyz_t homePosition;
/* 0x10 */ xyz_t position;
- /* 0x14 */ char unk14[0x1C];
+ /* 0x1C */ u8 appearFlag;
+ /* 0x1D */ NpcListFlags flags;
+ /* 0x1F */ u8 unk1F;
+ /* 0x20 */ QuestBase questInfo;
+ /* 0x2C */ NpcHouseData houseData;
+ /* 0x34 */ u16 rewardFurniture;
} NpcList; // size = 0x38
-typedef struct AnmHome_c {
+typedef struct Anmland {
+ /* 0x00 */ char name[LAND_NAME_SIZE];
+ /* 0x08 */ u16 id;
+} Anmland; // size = 0x10
+
+typedef struct Anmhome_c {
/* 0x00 */ u8 typeUnused; /* Likely the house type, but seems to be unused outside of SChk_Anmhome_c_sub */
/* 0x01 */ u8 blockX; /* acre x position */
/* 0x02 */ u8 blockZ; /* acre y position */
/* 0x03 */ u8 utX; /* unit x position */
/* 0x04 */ u8 utZ; /* unit z position */
-} AnmHome_c; // size = 0x5
-
-typedef struct AnmPersonalId_c {
- /* 0x00 */ u16 npcId; /* id */
- /* 0x02 */ u16 landId; /* town id */
- /* 0x04 */ u8 landName[LAND_NAME_SIZE]; /* town name */
- /* 0x0A */ u8 nameId; /* lower byte of the id */
- /* 0x0B */ u8 looks; /* internal name for personality */
-} AnmPersonalID_c; // size = 0xC
-
-typedef struct Animal_c {
- /* 0x000 */ AnmPersonalID_c id;
- /* 0x00C */ char unk00C[0x4D4];
- /* 0x4E0 */ AnmHome_c homeInfo;
- /* 0x4E5 */ char unk4E5[0x43];
-} Animal_c;
-
-typedef enum NpcLooks{
- /* 0 */ NPC_LOOKS_GIRL,
- /* 1 */ NPC_LOOKS_KO_GIRL,
- /* 2 */ NPC_LOOKS_BOY,
- /* 3 */ NPC_LOOKS_SPORT_MAN,
- /* 4 */ NPC_LOOKS_GRIM_MAN,
- /* 5 */ NPC_LOOKS_NANIWA_LADY,
-
- /* 6 */ NPC_LOOKS_NUM
-}NpcLooks;
-
-// void func_800A6920_jp();
-// void func_800A6940_jp();
-// void func_800A695C_jp();
-void mNpc_ClearAnimalPersonalID(AnmPersonalID_c*);
-s32 mNpc_CheckFreeAnimalPersonalID(AnmPersonalID_c*);
-void mNpc_CopyAnimalPersonalID(AnmPersonalID_c*, AnmPersonalID_c*);
-s32 mNpc_CheckCmpAnimalPersonalID(AnmPersonalID_c*, AnmPersonalID_c*);
-// void func_800A6AF0_jp();
-// void func_800A6B58_jp();
-// void func_800A6B6C_jp();
-// void func_800A6B7C_jp();
-// void func_800A6B9C_jp();
-// void func_800A6BC8_jp();
-// void func_800A6C1C_jp();
-// void func_800A6C84_jp();
-// void func_800A6CE4_jp();
-// void func_800A6D04_jp();
-// void func_800A6DB0_jp();
-// void func_800A6DD0_jp();
-// void func_800A6E0C_jp();
+} Anmhome_c; // size = 0x5
+
+typedef struct Anmlet {
+ /* 0x00 */ u8 exists:1; /* letter received by villager and exists */
+ /* 0x00 */ u8 cond:1; /* mNpc_LETTER_RANK_* */
+ /* 0x00 */ u8 sendReply:1; /* set when the villager should reply */
+ /* 0x00 */ u8 hasPresentCloth:1; /* set when the villager's held present shirt is from this letter */
+ /* 0x00 */ u8 wearingPresentCloth:1; /* set when a villager is wearing the shirt sent with the saved letter */
+ /* 0x00 */ u8 unk5:3; /* seemingly unused */
+} Anmlet; // size = 0x1
+
+typedef struct AnmRemailFlags {
+ /* 0x00 */ u8 cond:1;
+ /* 0x00 */ u8 looks:7;
+} AnmremailFlags; // size 0x1
+
+typedef struct Anmremail {
+ /* 0x00 */ lbRTC_ymd_t date; /* date sent */
+ /* 0x04 */ char name[ANIMAL_NAME_LEN]; /* villager name */
+ /* 0x0A */ char landName[LAND_NAME_SIZE]; /* town name */
+ /* 0x10 */ AnmremailFlags flags;
+} Anmremail; // size = 0x12
+
+typedef struct Anmplmail_c {
+ /* 0x000 */ u8 font; /* 'font' to use for letter info */
+ /* 0x001 */ u8 paperType;
+ /* 0x002 */ u16 present;
+ /* 0x004 */ u8 headerBackStart; /* position for name insertion in header */
+ /* 0x005 */ u8 header[MAIL_HEADER_LEN];
+ /* 0x00F */ u8 body[MAIL_BODY_LEN];
+ /* 0x06F */ u8 footer[MAIL_FOOTER_LEN];
+ /* 0x07F */ u8 unk7F; /* likely pad */
+ /* 0x080 */ lbRTC_ymd_t date; /* sent date */
+} Anmplmail_c; // size = 0x84
+
+typedef struct AnmGoodbyeMail {
+ /* 0x000 */ AnmPersonalID_c id;
+ /* 0x00C */ u8 deliverTo;
+} AnmGoodbyeMail; // size = 0xE
+
+typedef struct Anmmem_c {
+ /* 0x000 */ PersonalID_c memoryPlayerId; /* personal id of the player memory belongs to */
+ /* 0x014 */ lbRTC_time_c lastSpeakTime; /* time the player last spoke to this villager */
+ /* 0x01C */ Anmland land; /* union between town NPC land memory & islander player action memory */
+ /* 0x028 */ u64 savedTownTune; /* memory origin town tune */
+ /* 0x030 */ s8 friendship; /* friendship with the player */
+ /* 0x031 */ Anmlet letterInfo; /* saved letter flags */
+ /* 0x032 */ Anmplmail_c letter; /* saved letter */
+} Anmmem_c; // size 0xB0
+
+typedef struct Animal_c {
+ /* 0x000 */ AnmPersonalID_c id;
+ /* 0x00C */ Anmmem_c memories[ANIMAL_MEMORY_NUM];
+ /* 0x4E0 */ Anmhome_c homeInfo;
+ /* 0x4E5 */ char catchphrase[ANIMAL_CATCHPHRASE_LEN];
+ /* 0x4E9 */ char unk4E9[0x3];
+ /* 0x4EC */ QuestContest contestQuest;
+ /* 0x4E9 */ char previousLandName[LAND_NAME_SIZE];
+ /* 0x4E9 */ char parentName[ANIMAL_NAME_LEN];
+ /* 0x51C */ u16 previousLandId;
+ /* 0x51E */ u8 mood;
+ /* 0x51F */ u8 moodTime;
+ /* 0x520 */ u16 cloth;
+ /* 0x522 */ u16 removeInfo;
+ /* 0x524 */ u8 isHome;
+ /* 0x525 */ u8 movedIn;
+ /* 0x526 */ u8 isMoving;
+} Animal_c; // size = 0x528
+
+typedef struct SpecialNpcData {
+ /* 0x00 */ u16 specialNpcId;
+ /* 0x02 */ u16 sex;
+ /* 0x04 */ s32 nameStringNumber;
+ /* 0x08 */ s32 soundId;
+} SpecialNpcData; // size = 0xC
+
+typedef struct NpcDefaultData {
+ /* 0x00 */ u16 cloth;
+ /* 0x02 */ u16 catchphraseIdx;
+ /* 0x04 */ s8 umbrella;
+} NpcDefaultData; // size = 0x5
+
+typedef struct NpcTalkInfo {
+ /* 0x00 */ u16 timer;
+ /* 0x02 */ u8 talkNum;
+ /* 0x03 */ u8 questRequest;
+ /* 0x04 */ u16 unlockTimer;
+ /* 0x06 */ u16 resetTimer;
+} NpcTalkInfo; // size = 0x8
+
+typedef struct NpcTemper {
+ /* 0x0 */ u16 unlockTimer;
+ /* 0x2 */ u8 overImpatientNum;
+ /* 0x3 */ u8 talkNumMax;
+} NpcTemper; // size = 0x4
+
+typedef struct NpcEvent {
+ /* 0x0 */ u16 eventId;
+ /* 0x2 */ u16 textureId;
+ /* 0x4 */ u16 npcId;
+ /* 0x6 */ u16 clothId;
+ /* 0x8 */ u8 exists;
+ /* 0x9 */ u8 use;
+ /* 0xA */ u16 unkA;
+} NpcEvent; // size = 0xC
+
+typedef struct DemoNpc {
+ /* 0x00 */ u16 npcName; /* villager id */
+ /* 0x04 */ u32 blockX; // spawn acre x
+ /* 0x08 */ u32 blockZ; // spawn acre z
+ /* 0x0C */ u32 utX; // spawn unit x in acre
+ /* 0x10 */ u32 utZ; // spawn unit z in acre
+} DemoNpc; // size = 0x14
+
+
+void mNpc_MakeRandTable(s32* table, s32 count, s32 swapNum);
+void mNpc_ClearBufSpace1(u8* buf, s32 size);
+void mNpc_AddNowNpcMax(u8* npcMax);
+void mNpc_SubNowNpcMax(u8* npcMax);
+void mNpc_ClearAnimalPersonalID(AnmPersonalID_c* pid);
+s32 mNpc_CheckFreeAnimalPersonalID(AnmPersonalID_c* pid);
+void mNpc_CopyAnimalPersonalID(AnmPersonalID_c* dst, AnmPersonalID_c* src);
+s32 mNpc_CheckCmpAnimalPersonalID(AnmPersonalID_c* id0, AnmPersonalID_c* id1);
+s32 mNpc_GetAnimalNum(void);
+s32 mNpc_CheckRemoveExp(Animal_c* animal);
+s32 mNpc_GetRemoveTime(Animal_c* animal);
+void mNpc_AddRemoveTime(Animal_c* animal);
+void mNpc_SetRemoveExp(Animal_c* animal, u16 removeExp);
+void mNpc_SetParentName(Animal_c* animal, PersonalID_c* parentId);
+void mNpc_SetParentNameAllAnimal(void);
+void mNpc_ClearAnimalMail(Anmplmail_c* mail);
+void mNpc_CopyAnimalMail(Anmplmail_c* dst, Anmplmail_c* src);
+void mNpc_ClearAnimalMemory(Anmmem_c* memory, s32 num);
+void mNpc_CopyAnimalMemory(Anmmem_c* dst, Anmmem_c* src);
+void mNpc_AddFriendship(Anmmem_c* memory, s32 amount);
+s32 mNpc_CheckFreeAnimalMemory(Anmmem_c* memory);
void mNpc_RenewalAnimalMemory(void);
-// void func_800A6F48_jp();
-// void func_800A6FF4_jp();
-// void func_800A706C_jp();
-// void func_800A71AC_jp();
-// void func_800A71F8_jp();
-// void func_800A7238_jp();
-// void func_800A72C0_jp();
-// void func_800A73D8_jp();
-// void func_800A74A0_jp();
-// void func_800A7530_jp();
-// void func_800A75FC_jp();
-// void func_800A76E4_jp();
-// void func_800A77F0_jp();
-// void func_800A7858_jp();
-// void func_800A78DC_jp();
-// void mNpc_ClearAnimalInfo();
-// void mNpc_ClearAnyAnimalInfo();
-s32 mNpc_CheckFreeAnimalInfo(Animal_c*);
-// void mNpc_GetFreeAnimalInfo();
-// void mNpc_UseFreeAnimalInfo();
-// void mNpc_CopyAnimalInfo();
-// void mNpc_SearchAnimalinfo();
-// void func_800A7C94_jp();
-// void func_800A7D08_jp();
-// void func_800A7DA0_jp();
-// void mNpc_GetOtherAnimalPersonalID();
-// void func_800A80D8_jp();
-// void func_800A8148_jp();
-// void func_800A820C_jp();
-// void func_800A82C8_jp();
-// void func_800A8344_jp();
-// void func_800A83F0_jp();
-// void func_800A845C_jp();
-// void func_800A8614_jp();
-// void func_800A86C4_jp();
-// void func_800A86E8_jp();
-// void func_800A8764_jp();
-// void func_800A8814_jp();
-// void func_800A8868_jp();
-// void func_800A8AB4_jp();
-// void func_800A8B10_jp();
-// void func_800A8B84_jp();
-// void func_800A8C48_jp();
-// void func_800A8DB4_jp();
-// void func_800A8F30_jp();
-// void func_800A9028_jp();
-// void func_800A9110_jp();
-// void func_800A918C_jp();
-void func_800A91DC_jp(void);
-// void func_800A9364_jp();
-// void func_800A93AC_jp();
-// void func_800A9468_jp();
-// void func_800A94C8_jp();
-// void func_800A956C_jp();
-// void func_800A96B0_jp();
-// void func_800A9780_jp();
-// void func_800A992C_jp();
-// void func_800A99B8_jp();
-// void func_800A9A98_jp();
-// void func_800A9BC4_jp();
-// void func_800A9BD4_jp();
-// void func_800A9CD4_jp();
-// void func_800A9D68_jp();
-// void func_800A9E54_jp();
-// void func_800A9E7C_jp();
-// void func_800A9EC8_jp();
-// void func_800A9F9C_jp();
-// void func_800AA028_jp();
-// void func_800AA0B8_jp();
-void func_800AA124_jp(void);
-// void func_800AA14C_jp();
-s32 mNpc_GetLooks(u16 arg0);
-// void func_800AA218_jp();
-// void func_800AA29C_jp();
-// void func_800AA2F8_jp();
-// void func_800AA35C_jp();
-// void func_800AA3A4_jp();
-// void func_800AA438_jp();
-// void func_800AA49C_jp();
-// void func_800AA4FC_jp();
-// void func_800AA51C_jp();
-// void mNpc_SetAnimalTitleDemo();
-// void func_800AA8C4_jp();
-// void func_800AA9F4_jp();
-// void func_800AAA40_jp();
-// void func_800AAB48_jp();
-// void func_800AAC88_jp();
-// void func_800AADE8_jp();
-// void func_800AAEFC_jp();
-void func_800AB054_jp(void);
-void func_800AB09C_jp(void);
-void mNpc_SetNpcList(NpcList* npclist, Animal_c* animals, s32 count, s32 malloc_flag);
-void mNpc_SetNpcinfo(struct Actor* actor, s8 arg1);
-// void func_800AB498_jp();
-// void func_800AB62C_jp();
-// void func_800AB6C8_jp();
-// void func_800AB734_jp();
-// void func_800AB7D0_jp();
-// void func_800AB80C_jp();
-// void func_800AB8A0_jp();
-// void func_800ABA14_jp();
-// void func_800ABAA8_jp();
-// void func_800ABAF0_jp();
-s32 mNpc_GetInAnimalP(void);
-// void func_800ABB24_jp();
-// void func_800ABCF8_jp();
+s32 mNpc_GetOldAnimalMemoryIdx(Anmmem_c* memory, s32 num);
+s32 mNpc_GetFreeAnimalMemoryIdx(Anmmem_c* memory, s32 num);
+s32 mNpc_ForceGetFreeAnimalMemoryIdx(Anmmem_c* memory, s32 num);
+void mNpc_SetAnimalMemory_NotSetDay(PersonalID_c* pid, Anmmem_c* memory);
+void mNpc_SetAnimalMemory(PersonalID_c* pid, Anmmem_c* memory);
+s32 mNpc_GetAnimalMemoryIdx(PersonalID_c* pid, Anmmem_c* memory, s32 num);
+void mNpc_SetAnimalLastTalk(Animal_c* animal);
+void mNpc_SetAnimalPersonalID2Memory(AnmPersonalID_c* anmId);
+s32 mNpc_GetHighestFriendshipIdx(Anmmem_c* memory, s32 num);
+s32 mNpc_SelectBestFriend(Anmmem_c** bestFriendMem, Anmmem_c* memory, s8* bestFriendFriendShip);
+s32 mNpc_GetAnimalMemoryBestFriend(Anmmem_c* memory, s32 num);
+s32 mNpc_GetAnimalMemoryFriend_Land_Sex(Anmmem_c* memory, s32 num, s32 sex);
+s32 mNpc_GetAnimalMemoryNum(Anmmem_c* memory, s32 count);
+s32 mNpc_GetAnimalMemoryLetterNum(Anmmem_c* memory, s32 count);
+s32 mNpc_GetAnimalMemoryLandKindNum(Anmmem_c* memory, s32 count);
+void mNpc_ClearAnimalInfo(Animal_c* animal);
+void mNpc_ClearAnyAnimalInfo(Animal_c* animals, s32 count);
+s32 mNpc_CheckFreeAnimalInfo(Animal_c* animal);
+s32 mNpc_GetFreeAnimalInfo(Animal_c* animal, s32 count);
+s32 mNpc_UseFreeAnimalInfo(Animal_c* animal, s32 count);
+void mNpc_CopyAnimalInfo(Animal_c* dst, Animal_c* src);
+s32 mNpc_SearchAnimalinfo(Animal_c* animal, u16 npcName, s32 count);
+Animal_c* mNpc_GetAnimalInfoP(u16 id);
+s32 mNpc_SearchAnimalPersonalID(AnmPersonalID_c* id);
+AnmPersonalID_c* mNpc_GetOtherAnimalPersonalIDOtherBlock(AnmPersonalID_c* pids, s32 count, s32 blockX, s32 blockY, s32 flag);
+AnmPersonalID_c* mNpc_GetOtherAnimalPersonalID(AnmPersonalID_c* pids, s32 count);
+void mNpc_SetAnimalThisLand(Animal_c* animal, s32 count);
+s32 mNpc_GetSameLooksNum(u8 looks);
+s32 mNpc_CheckNpcExistBlock(s32 idx, s32 checkBx, s32 checkBz);
+void mNpc_Mail2AnimalMail(Anmplmail_c* animalMail, Mail_c* mail);
+void mNpc_AnimalMail2Mail(Mail_c* mail, Anmplmail_c* animal_mail, PersonalID_c* pid, AnmPersonalID_c* anmId);
+s32 mNpc_CheckMailChar(u8 c);
+s32 mNpc_CheckNormalMail_sub(s32* num, u8* body);
+u8 mNpc_CheckNormalMail_length(s32* len, u8* body);
+u8 mNpc_CheckNormalMail(u8* body);
+s32 mNpc_SetMailCondThisLand(Anmmem_c* memory, u8* body);
+s32 mNpc_SetMailCondOtherLand(Animal_c* animal, u8* body);
+s32 mNpc_SetRemailCond(Animal_c* animal, Anmmem_c* memory, u8* body);
+s32 mNpc_SendMailtoNpc(Mail_c* mail);
+void mNpc_ClearRemail(Anmremail* remail);
+void mNpc_GetRemailPresent(u16* present);
+s32 mNpc_GetHandbillz(Mail_c* mail, s32 superNum, s32 mailANum, s32 mailBNum, s32 mailCNum, s32 psNum);
+void mNpc_SetRemailFreeString(PersonalID_c* pid, AnmPersonalID_c* anmId, Anmremail* remail);
+void mNpc_GetRemailGoodData(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* anmId, Anmremail* remail, u8 foreign);
+void mNpc_GetRemailWrongData(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* anmId, Anmremail* remail, u8 foreign);
+void mNpc_GetRemailData(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* anmId, Anmremail* remail, s32 cond, u8 foreign);
+s32 mNpc_SendRemailPostOffice(PersonalID_c* pid, AnmPersonalID_c* anmId, Anmremail* remail, s32 cond, u8 foreign);
+s32 mNpc_CheckLetterTime(lbRTC_ymd_t* letterDate, lbRTC_time_c* rtcTime);
+void mNpc_Remail(void);
+u8 mNpc_GetPaperType(void);
+void mNpc_LoadMailDataCommon2(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* amnId, u16 present, u8 paperType, s32 mailNo);
+void mNpc_GetEventPresent(u16* present, s32 type);
+void mNpc_GetEventMail(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* anmId, s32 type, s32 looks);
+s32 mNpc_SendEventPresentMail(PersonalID_c* pid, s32 playerNo, AnmPersonalID_c* anmId, s32 type);
+void mNpc_SendEventPresentMailSex(s32* selected, u8* type, Animal_c* animal, NpcSex sex);
+s32 mNpc_SendEventPresentMail_common(NpcSex sexType);
+void mNpc_GetBirthdayPresent(u16* present);
+void mNpc_GetBirthdayCard(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* anmId);
+s32 mNpc_SendBirthdayCard(PersonalID_c* pid, s32 playerNo, AnmPersonalID_c* anm_id);
+s32 mNpc_SendEventBirthdayCard(PersonalID_c* pid);
+s32 mNpc_SendEventBirthdayCard2(PersonalID_c* pid, s32 playerNo);
+void mNpc_GetXmasCardData(Mail_c* mail, PersonalID_c* pid);
+s32 mNpc_SendEventXmasCard(PersonalID_c* pid, s32 playerNo);
+void mNpc_SetWordEnding(Animal_c* animal, char* catchphrase);
+char* mNpc_GetWordEnding(Actor* actor);
+void mNpc_ResetWordEnding(Actor* actor);
+s32 mNpc_GetFreeEventNpcIdx(void);
+s32 mNpc_RegistEventNpc(u16 eventId, u16 textureId, u16 npcId, u16 clothId);
+void mNpc_UnRegistEventNpc(u16 eventId);
+void mNpc_ClearEventNpc(void);
+NpcEvent* mNpc_GetSameEventNpc(u16 eventId);
+u8 mNpc_GetLooks(u16 npcId);
+void mNpc_SetDefAnimalInfo(Animal_c* animal, u16 npcId, u8 looks, NpcDefaultData* defaultData);
+void mNpc_SetDefAnimal(Animal_c* animal, u16 npcId, NpcDefaultData* defaultData);
+void mNpc_SetHaveAppeared(u16 npcId);
+s32 mNpc_GetHaveAppeared_idx(s32 idx);
+s32 mNpc_GetLooks2NotHaveAppearedNum(u8 id);
+void mNpc_ResetHaveAppeared_common(u8* npcUsedTable, Animal_c* animal);
+void mNpc_ResetHaveAppeared(void);
+s32 mNpc_GetDefGrowPermission(s32 idx, s8* growList, s32 count);
+void mNpc_DecideLivingNpcMax(Animal_c* animal, u8 count, s32 mallocFlag);
+void mNpc_SetAnimalTitleDemo(DemoNpc* demo, Animal_c* animal, struct Game* game);
+s32 mNpc_GetReservedUtNum(s32* utX, s32* utZ, u16* item);
+s32 mNpc_BlockNum2ReservedUtNum(s32* utX, s32* utZ, s32 bx, s32 bz);
+void mNpc_MakeReservedListBeforeFieldct(Anmhome_c* reserved, s32 reservedNum, u8* reservedCount);
+void mNpc_MakeReservedListAfterFieldct(Anmhome_c* reserved, s32 reservedNum, u8* reserved_count, u8 bxMax, u8 bzMax);
+void mNpc_BuildHouseBeforeFieldct(u16 npcId, s32 bx, s32 bz, s32 utX, s32 utZ);
+void mNpc_DestroyHouse(Anmhome_c* home);
+void mNpc_SetNpcHome(Animal_c* animal, Anmhome_c* reserved, u8 reserved_num);
+void mNpc_InitNpcData(void);
+void mNpc_InitNpcList(void);
+void mNpc_SetNpcList(NpcList* npclist, Animal_c* animal, s32 count, s32 mallocFlag);
+void mNpc_SetNpcinfo(Actor* actor, s8 npcInfoIdx);
+void mNpc_AddNpc_inNpcRoom(FieldMakeMoveActor* moveActor, u8 bx, u8 bz);
+void mNpc_RenewalNpcRoom(s16* wallFloor);
+void mNpc_RenewalSetNpc(Actor* actor);
+s32 mNpc_GetFriendAnimalNum(PersonalID_c* pid);
+s32 mNpc_CheckFriendAllAnimal(PersonalID_c* pid);
+s32 mNpc_CheckSelectFurniture(u16 item);
+u16 func_800AB8A0_jp(FieldMakeFGData**, NpcList*, s32);
+void mNpc_SetNpcFurnitureRandom(FieldMakeFGData** data, s32 base);
+u16 mNpc_GetNpcFurniture(AnmPersonalID_c* anmId);
+void mNpc_ClearInAnimal(void);
+Animal_c* mNpc_GetInAnimalP(void);
+u8 mNpc_DecideRemoveAnimalNo(Animal_c* animal, s32 max);
+
void mNpc_SetRemoveAnimalNo(Animal_c* animal);
-// void func_800ABE30_jp();
-// void func_800ABF40_jp();
-// void func_800AC1A0_jp();
-// void func_800AC1C8_jp();
-// void func_800AC1EC_jp();
-// void func_800AC284_jp();
-// void func_800AC358_jp();
-// void func_800AC488_jp();
+s32 mNpc_CheckGoodbyAnimalMemoryNum(Animal_c* a0, Animal_c* a1);
+s32 mNpc_GetGoodbyAnimalIdx(void);
+void mNpc_ClearGoodbyMail(AnmGoodbyeMail* mail);
+void mNpc_FirstClearGoodbyMail(void);
+void mNpc_SetGoodbyAnimalMail(AnmGoodbyeMail* mail, Animal_c* animal);
+s32 mNpc_SetGoodbyMailData(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* anm_id);
+s32 mNpc_SendGoodbyAnimalMailOne(Mail_c* mail, struct PrivateInfo* priv, s32 playerNo, AnmPersonalID_c* anmId);
+void mNpc_SendGoodbyAnimalMail(AnmGoodbyeMail* mail);
void mNpc_SendRegisteredGoodbyMail(void);
-// void func_800AC57C_jp();
-// void func_800AC804_jp();
-void mNpc_SetReturnAnimal(s32 arg0);
-// void func_800ACB24_jp();
-// void func_800ACB54_jp();
-// void func_800ACC38_jp();
-// void func_800ACCAC_jp();
-void mNpc_GetNpcWorldNameAnm(PlayerName* arg0, struct mMl_get_npcinfo_from_mail_name_arg0* arg1);
-// void func_800ACD74_jp();
-// void func_800ACDF8_jp();
-// void func_800ACE90_jp();
-void mNpc_GetAnimalPlateName(char* arg0, xyz_t arg1);
-// void func_800AD084_jp();
-// void func_800AD0B8_jp();
-// void func_800AD104_jp();
-// void func_800AD154_jp();
-// void func_800AD188_jp();
-// void func_800AD1E0_jp();
-// void func_800AD22C_jp();
-// void func_800AD2B8_jp();
-void mNpc_InitNpcAllInfo(s32 arg0);
-// void func_800AD338_jp();
-// void func_800AD3BC_jp();
-// void func_800AD4B8_jp();
-// void func_800AD614_jp();
-// void func_800AD6D4_jp();
-// void func_800AD8C4_jp();
-// void func_800AD954_jp();
-void func_800AD9FC_jp(void);
-// void func_800ADBE4_jp();
-// void func_800ADC28_jp();
-// void func_800ADC8C_jp();
-// void func_800ADD20_jp();
-// void func_800ADEFC_jp();
-// void func_800AE110_jp();
+void mNpc_GetRemoveAnimal(Animal_c* transferAnimal, s32 movingOut);
+s32 mNpc_CheckBuildHouse(s32 blockX, s32 blockZ, u8 utX, u8 utZ);
+void mNpc_SetReturnAnimal(Animal_c* returnAnimal);
+void mNpc_AddActor_inBlock(FieldMakeMoveActor* moveActor, u8 bx, u8 bz);
+void mNpc_SetNpcNameID(Animal_c* animal, s32 count);
+void mNpc_LoadNpcNameString(char* name, u8 npcId);
+void mNpc_GetNpcWorldNameTableNo(char* name, u16 npcId);
+void mNpc_GetNpcWorldNameAnm(char* name, AnmPersonalID_c* anmId);
+void mNpc_GetNpcWorldNameP(char* name, u16 npcId);
+void mNpc_GetNpcWorldName(char* name,Npc* npc);
+void mNpc_GetRandomAnimalName(char* dst);
+void mNpc_GetAnimalPlateName(char* dst, xyz_t wpos);
+NpcLooks mNpc_GetNpcLooks(Actor* actor);
+NpcSex mNpc_GetActorSex(u16 npcId);
+NpcSex mNpc_GetLooks2Sex(NpcLooks looks);
+NpcSex mNpc_GetAnimalSex(Animal_c* animal);
+NpcSex mNpc_GetNpcSex(Actor* actor);
+s32 mNpc_GetNpcSoundSpecNotAnimal(u16 npcId);
+s32 mNpc_GetNpcSoundSpec(Actor* actor);
+void mNpc_GetMsg(s32 arg);
+void mNpc_InitNpcAllInfo(s32 mallocFlag);
+s32 mNpc_CheckGrowFieldRank(void);
+s32 mNpc_CheckGrow(void);
+u8 mNpc_GetMinLooks(u8* bitfield, s32* minLooksNum);
+NpcSex mNpc_GetMinSex(void);
+s32 mNpc_GrowLooksNpcIdx(u8 looks);
+void mNpc_SetAnimalInfoNpcIdx(Animal_c* animal, s32 idx);
+s32 mNpc_SetGrowNpc(u8 looks);
+void mNpc_Grow(void);
+s32 mNpc_CheckNpcSet_fgcol(u16 arg0, u32 arg1);
+s32 mNpc_CheckNpcSet_fgcol_hard(u16 arg0, u32 arg1);
+s32 mNpc_CheckNpcSet(s32 bx, s32 bz, s32 ut_x, s32 ut_z);
+s32 mNpc_GetMakeUtNuminBlock_hard_area(s32* utX, s32* utZ, s32 bx, s32 bz, s32 restrictArea);
+s32 mNpc_GetMakeUtNuminBlock_area(s32* utX, s32* utZ, s32 bx, s32 bz, s32 restrictArea);
+s32 mNpc_GetMakeUtNuminBlock(s32* utX, s32* utZ, s32 bx, s32 bz);
void mNpc_ClearTalkInfo(void);
-// void func_800AE1A0_jp();
-// void func_800AE1B8_jp();
-// void func_800AE1D8_jp();
-// void func_800AE23C_jp();
-// void func_800AE284_jp();
-// void func_800AE2E8_jp();
-// void func_800AE320_jp();
-// void func_800AE37C_jp();
-// void func_800AE3B4_jp();
-// void func_800AE4B4_jp();
-// void func_800AE558_jp();
-// void func_800AE5C8_jp();
-// void func_800AE64C_jp();
-// void func_800AE670_jp();
-// void func_800AE694_jp();
-// void func_800AE6B0_jp();
-// void func_800AE6CC_jp();
-// void func_800AE76C_jp();
-// void func_800AE898_jp();
-// void mNpc_PrintFriendship_fdebug();
+void mNpc_TimerCountDown(NpcTalkInfo* talkInfo);
+void mNpc_SetUnlockTimer(u16* unlockTimer, u16* resetTimer, s32 feel);
+s32 mNpc_CountTalkNum(s32 animalIdx, s32 feel);
+s32 mNpc_CheckOverImpatient(s32 animalIdx, s32 feel);
+s32 mNpc_GetOverImpatient(s32 animalIdx, s32 feel);
+s32 mNpc_CheckQuestRequest(s32 animalIdx);
+void mNpc_SetQuestRequestOFF(s32 animalIdx, s32 feel);
+void mNpc_UnlockTimerCountDown(NpcTalkInfo* talkInfo);
+void mNpc_TalkInfoMove(void);
+void mNpc_TalkEndMove(s32 animalIdx, s32 feel);
+s32 mNpc_GetNpcFloorNo(void);
+void mNpc_SetTalkBee(void);
+u8 mNpc_GetFishCompleteTalk(NpcList* npclist);
+u8 mNpc_GetInsectCompleteTalk(NpcList* npclist);
+void mNpc_SetFishCompleteTalk(NpcList* npclist);
+void mNpc_SetInsectCompleteTalk(NpcList* npclist);
+void mNpc_SetNpcHomeYpos(void);
+void mNpc_PrintRemoveInfo(gfxprint* gfxprint);
+void mNpc_SetTalkAnimalIdx_fdebug(AnmPersonalID_c* anm_id);
+void mNpc_PrintFriendship_fdebug(gfxprint* gfxprint);
+
#endif