The NPC PR 3/3 OK (#119)

* npc werk

* atleast it builds

* m_npc OK

* forgor format

* review

* format

* fix warns?
This commit is contained in:
Prakxo
2023-11-23 18:03:30 +01:00
committed by GitHub
parent bd8169465a
commit e1fcb33cef
46 changed files with 5161 additions and 890 deletions
+1 -1
View File
@@ -283,7 +283,7 @@ s32 lbRTC_IsOverWeekRTC(const lbRTC_time_c* t0, lbRTC_weekday_t week) {
lbRTC_IsOverRTC(&t1);
}
void func_800D5480_jp(lbRTC_time_c* t0, lbRTC_time_c* t1) {
s32 lbRTC_IntervalTime(lbRTC_time_c* t0, lbRTC_time_c* t1) {
lbRTC_time_c t2;
lbRTC_time_c t3;
+10 -10
View File
@@ -7,7 +7,7 @@
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80087C40_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80087C64_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_GetBlockTopP.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_GetFieldId.s")
@@ -51,7 +51,7 @@
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_Wpos2BlockNum.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088780_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_Wpos2BkandUtNuminBlock.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008883C_jp.s")
@@ -65,7 +65,7 @@
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088B3C_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088BC0_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_UtNum2PosXZInBk.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088BFC_jp.s")
@@ -119,7 +119,7 @@
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800894D0_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089538_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_GetBkNum2ColTop.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800895B8_jp.s")
@@ -157,7 +157,7 @@
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008A000_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008A33C_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_BkNumtoUtFGTop.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008A3BC_jp.s")
@@ -237,11 +237,11 @@
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008BBF0_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008BC64_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_SetMoveActorBitData_ON.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008BCFC_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008BD98_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_MyMoveActorBitData_ON.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008BDCC_jp.s")
@@ -261,7 +261,7 @@
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C130_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C1E0_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_GetDepositP.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C344_jp.s")
@@ -275,7 +275,7 @@
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C458_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C478_jp.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_BlockDepositOFF.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C498_jp.s")
@@ -361,7 +361,7 @@ s32 mFI_GetWaveUtinBlock(s32* arg0, s32* arg1, s32 arg2, s32 arg3) {
arg0[0] = 0;
arg1[0] = 0;
temp_v0 = var_s1 = func_80089538_jp(arg2, arg3);
temp_v0 = var_s1 = mFI_GetBkNum2ColTop(arg2, arg3);
if (temp_v0 != NULL) {
+54 -54
View File
@@ -2,7 +2,7 @@
#include "m_common_data.h"
#include "m_lib.h"
#include "m_npc.h"
#include "6B8A70.h"
#include "m_land.h"
#include "unknown_structs.h"
#include "macros.h"
@@ -50,21 +50,21 @@ void mMl_strcpy_back(char* dst, const char* src, s32 size) {
}
}
void mMl_clear_mail_header(Mail* mail) {
mPr_ClearPersonalID(&mail->unk_00.unk_00);
mail->unk_00.unk_10 = 0xFF;
mPr_ClearPersonalID(&mail->unk_12.unk_00);
mail->unk_12.unk_10 = 0xFF;
void mMl_clear_mail_header(Mail_c* mail) {
mPr_ClearPersonalID(&mail->header.recipient.personalID);
mail->header.recipient.type = 0xFF;
mPr_ClearPersonalID(&mail->header.sender.personalID);
mail->header.sender.type = 0xFF;
}
void mMl_clear_mail(Mail* mail) {
bzero(mail, sizeof(Mail));
void mMl_clear_mail(Mail_c* mail) {
bzero(mail, sizeof(Mail_c));
mMl_clear_mail_header(mail);
mem_clear((u8*)&mail->unk_2A, sizeof(mMl_unk_2A), 0x20);
mail->unk_26 = 0xFF;
mem_clear(mail->content.header, MAIL_HEADER_LEN + MAIL_BODY_LEN + MAIL_FOOTER_LEN, 0x20);
mail->content.font = 0xFF;
}
void mMl_clear_mail_box(Mail mail[], s32 arg1) {
void mMl_clear_mail_box(Mail_c mail[], s32 arg1) {
while (arg1 != 0) {
arg1--;
mMl_clear_mail(mail);
@@ -72,47 +72,47 @@ void mMl_clear_mail_box(Mail mail[], s32 arg1) {
}
}
s32 mMl_check_not_used_mail(Mail* mail) {
s32 mMl_check_not_used_mail(Mail_c* mail) {
s32 ret = 0;
if (mail->unk_26 == 0xFF) {
if (mail->content.font == 0xFF) {
ret = 1;
}
return ret;
}
void mMl_copy_header_name(mMl_unk_00* arg0, mMl_unk_00* arg1) {
arg0->unk_10 = arg1->unk_10;
mPr_CopyPersonalID(&arg0->unk_00, &arg1->unk_00);
arg0->type = arg1->type;
mPr_CopyPersonalID(&arg0->personalID, &arg1->personalID);
}
void mMl_set_from_name(Mail* arg0, Mail* arg1) {
mMl_copy_header_name(&arg0->unk_12, &arg1->unk_00);
void mMl_set_from_name(Mail_c* arg0, Mail_c* arg1) {
mMl_copy_header_name(&arg0->header.sender, &arg1->header.recipient);
}
void mMl_set_to_name(Mail* arg0, Mail* arg1) {
mMl_copy_header_name(&arg0->unk_00, &arg1->unk_00);
void mMl_set_to_name(Mail_c* arg0, Mail_c* arg1) {
mMl_copy_header_name(&arg0->header.recipient, &arg1->header.recipient);
}
void mMl_set_to_plname(Mail* arg0, Mail* arg1) {
mPr_CopyPersonalID(&arg0->unk_00.unk_00, &arg1->unk_00.unk_00);
arg0->unk_00.unk_10 = 0;
void mMl_set_to_plname(Mail_c* arg0, Mail_c* arg1) {
mPr_CopyPersonalID(&arg0->header.recipient.personalID, &arg1->header.recipient.personalID);
arg0->header.recipient.type = 0;
}
void mMl_set_playername(Mail* mail, PersonalID* arg1) {
mPr_CopyPersonalID(&mail->unk_12.unk_00, arg1);
mail->unk_12.unk_10 = 0;
void mMl_set_playername(Mail_c* mail, PersonalID_c* arg1) {
mPr_CopyPersonalID(&mail->header.sender.personalID, arg1);
mail->header.sender.type = 0;
}
void mMl_init_mail(Mail* mail, PersonalID* arg1) {
void mMl_init_mail(Mail_c* mail, PersonalID_c* arg1) {
mMl_clear_mail(mail);
mMl_set_playername(mail, arg1);
mail->unk_26 = 1;
mail->unk_28 = 0;
mail->unk_29 = 0;
mail->content.font = 1;
mail->content.mailType = 0;
mail->content.paperType = 0;
}
s32 mMl_chk_mail_free_space(Mail mail[], s32 arg1) {
s32 mMl_chk_mail_free_space(Mail_c mail[], s32 arg1) {
s32 i;
for (i = 0; i < arg1; i++) {
@@ -124,7 +124,7 @@ s32 mMl_chk_mail_free_space(Mail mail[], s32 arg1) {
return -1;
}
s32 mMl_use_mail_space(Mail mail[], s32 arg1, PersonalID* arg2) {
s32 mMl_use_mail_space(Mail_c mail[], s32 arg1, PersonalID_c* arg2) {
s32 index = mMl_chk_mail_free_space(mail, arg1);
if (index != -1) {
@@ -133,7 +133,7 @@ s32 mMl_use_mail_space(Mail mail[], s32 arg1, PersonalID* arg2) {
return index;
}
s32 mMl_count_use_mail_space(Mail mail[], s32 arg1) {
s32 mMl_count_use_mail_space(Mail_c mail[], s32 arg1) {
s32 i;
s32 ret = 0;
@@ -146,8 +146,8 @@ s32 mMl_count_use_mail_space(Mail mail[], s32 arg1) {
return ret;
}
void mMl_copy_mail(Mail* dst, Mail* src) {
mem_copy((u8*)dst, (u8*)src, sizeof(Mail));
void mMl_copy_mail(Mail_c* dst, Mail_c* src) {
mem_copy((u8*)dst, (u8*)src, sizeof(Mail_c));
}
void mMl_clear_mail_header_common(MailHeaderCommon* arg0) {
@@ -161,40 +161,40 @@ void mMl_copy_mail_header_common(MailHeaderCommon* arg0, MailHeaderCommon* arg1)
mem_copy((u8*)arg0, (u8*)arg1, sizeof(MailHeaderCommon));
}
void mMl_set_mail_name_npcinfo(mMl_unk_00* arg0, mMl_get_npcinfo_from_mail_name_arg0* arg1) {
PlayerName sp20;
void mMl_set_mail_name_npcinfo(mMl_unk_00* arg0, AnmPersonalID_c* arg1) {
char name[PLAYER_NAME_LEN];
arg0->unk_10 = 1;
mNpc_GetNpcWorldNameAnm(&sp20, arg1);
mPr_CopyPlayerName(&arg0->unk_00.unk_0, &sp20);
arg0->unk_00.unk_E = arg1->unk_2;
mLd_CopyLandName(&arg0->unk_00.unk_6, &arg1->unk_4);
arg0->unk_00.unk_C = ((arg1->unk_0 & 0xFF) << 8) | (arg1->unk_A & 0xFF);
arg0->type = 1;
mNpc_GetNpcWorldNameAnm(name, arg1);
mPr_CopyPlayerName(arg0->personalID.playerName, name);
arg0->personalID.landId = arg1->landId;
mLd_CopyLandName(arg0->personalID.landName, arg1->landName);
arg0->personalID.playerId = ((arg1->npcId & 0xFF) << 8) | (arg1->nameId & 0xFF);
}
s32 mMl_get_npcinfo_from_mail_name(mMl_get_npcinfo_from_mail_name_arg0* arg0, mMl_unk_00* arg1) {
s32 mMl_get_npcinfo_from_mail_name(AnmPersonalID_c* arg0, mMl_unk_00* arg1) {
s32 var_v1 = 0;
if (arg1->unk_10 == 1) {
arg0->unk_0 = (((arg1->unk_00.unk_C & 0xFF00) >> 8) | 0xE000);
arg0->unk_2 = arg1->unk_00.unk_E;
mLd_CopyLandName(&arg0->unk_4, &arg1->unk_00.unk_6);
arg0->unk_A = arg1->unk_00.unk_C & 0xFFFF;
arg0->unk_B = mNpc_GetLooks(arg0->unk_0);
if (arg1->type == 1) {
arg0->npcId = (((arg1->personalID.playerId & 0xFF00) >> 8) | 0xE000);
arg0->landId = arg1->personalID.landId;
mLd_CopyLandName(arg0->landName, arg1->personalID.landName);
arg0->nameId = arg1->personalID.playerId & 0xFFFF;
arg0->looks = mNpc_GetLooks(arg0->npcId);
var_v1 = 1;
}
return var_v1;
}
s32 mMl_hunt_for_send_address(Mail* mail) {
s32 mMl_hunt_for_send_address(Mail_c* mail) {
s32 i;
if (mail->unk_00.unk_10 != 0) {
if (mail->header.recipient.type != 0) {
return -1;
}
for (i = 0; i < ARRAY_COUNT(common_data.homes); i++) {
if (mPr_CheckCmpPersonalID(&common_data.homes[i].unk_000, &mail->unk_00.unk_00) == 1) {
if (mPr_CheckCmpPersonalID(&common_data.homes[i].ownerID, &mail->header.recipient.personalID) == 1) {
return i;
}
}
@@ -212,8 +212,8 @@ s32 mMl_check_send_mail(struct_func_8085CE18_jp_arg4* arg0) {
}
}
s32 mMl_check_set_present_myself(Mail* mail) {
switch (mail->unk_26) {
s32 mMl_check_set_present_myself(Mail_c* mail) {
switch (mail->content.font) {
case 1:
case 3:
case 4:
+3984
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -407,7 +407,7 @@ void mNpcW_GetBlockXZNumExceptHome(s32* goalBlockX, s32* goalBlockZ, Animal_c* a
s32 mNpcW_CheckDiffBlockWalkNpcHome(s32 blockX, s32 blockZ, NpcWalkInfo* info) {
s32 res = FALSE;
AnmHome_c* home;
Anmhome_c* home;
s32 i;
s32 idx;
@@ -445,7 +445,7 @@ void mNpcW_SetHomeBlockSource(NpcWalking* walk, Animal_c* animal) {
for (i = 0; i < ANIMAL_NUM_MAX; i++) {
if (mNpc_CheckFreeAnimalPersonalID(&animal->id) == FALSE) {
AnmHome_c* home = &animal->homeInfo;
Anmhome_c* home = &animal->homeInfo;
if (mNpcW_CheckDiffBlockWalkNpcHome(home->blockX, home->blockZ, walk->info) == TRUE) {
field |= (1 << i);
@@ -458,7 +458,7 @@ void mNpcW_SetHomeBlockSource(NpcWalking* walk, Animal_c* animal) {
if (num > 0) {
s32 chosen = RANDOM(num);
AnmHome_c* homeInfo;
Anmhome_c* homeInfo;
for (i = 0; i < ANIMAL_NUM_MAX; i++) {
if (((field >> i) & 1) == 1) {
+11 -12
View File
@@ -4,15 +4,14 @@
#include "69CB30.h"
#include "6A83A0.h"
#include "6B81C0.h"
#include "6B8A70.h"
#include "m_land.h"
#include "6BA500.h"
#include "6C0690.h"
#include "6C97F0.h"
#include "m_npc_schedule.h"
#include "6D9D80.h"
#include "6DA460.h"
#include "6DB420.h"
#include "6DE300.h"
#include "m_quest.h"
#include "6E30B0.h"
#include "6E7AD0.h"
#include "6ECD90.h"
@@ -75,16 +74,16 @@ void decide_fish_location(u8* fish_location) {
void title_game_haniwa_data_init(void) {
s32 i;
u8 haniwa_buf[HANIWA_MESSAGE_LEN];
char haniwa_buf[HANIWA_MESSAGE_LEN];
s32 j;
Haniwa_c* haniwa;
func_800C3F70_jp(haniwa_buf, HANIWA_MESSAGE_LEN, 0x55C);
mString_Load_StringFromRom(haniwa_buf, HANIWA_MESSAGE_LEN, 0x55C);
for (i = 0; i < mHS_HOUSE_NUM; i++) {
haniwa = &common_data.homes[i].haniwa;
mem_copy(common_data.homes[i].haniwa.message, haniwa_buf, HANIWA_MESSAGE_LEN);
mem_copy(common_data.homes[i].haniwa.message, (u8*)haniwa_buf, HANIWA_MESSAGE_LEN);
for (j = 0; j < HANIWA_ITEM_HOLD_NUM; j++) {
haniwa->items[j].item = EMPTY_NO;
@@ -127,7 +126,7 @@ void mSDI_ClearMoneyPlayerHomeStationBlock(void) {
*items = EMPTY_NO;
if (deposit != NULL) {
func_8008C478_jp(deposit, ut_x, ut_z);
mFI_BlockDepositOFF(deposit, ut_x, ut_z);
}
}
@@ -237,7 +236,7 @@ s32 mSDI_StartInitNew(Game* game2, s32 player_no, s32 malloc_flag) {
mSN_snowman_init();
mHS_house_init();
lbRTC_TimeCopy(&common_data.unk_0F7FC, &mTM_rtcTime_clear_code);
lbRTC_TimeCopy(&common_data.lastGrowTime, &mTM_rtcTime_clear_code);
lbRTC_TimeCopy(&common_data.unk_0F89C, &mTM_rtcTime_clear_code);
lbRTC_TimeCopy(&common_data.unk_0F8A4, &mTM_rtcTime_clear_code);
@@ -401,10 +400,10 @@ void mSDI_StartInitAfter(Game* game, s32 renewal_reserve_flag, s32 malloc_flag)
mTM_set_season();
func_80084DA4_jp();
mEv_2nd_init(&game_play->event);
func_800AD9FC_jp();
mNpc_Grow();
func_80096B64_jp();
func_800AB054_jp();
func_800AB09C_jp();
mNpc_InitNpcData();
mNpc_InitNpcList();
mNpc_SetNpcList(common_data.npclist, common_data.animals, ANIMAL_NUM_MAX, malloc_flag);
mNpc_ClearTalkInfo();
if (renewal_reserve_flag == 1) {
@@ -419,7 +418,7 @@ void mSDI_StartInitAfter(Game* game, s32 renewal_reserve_flag, s32 malloc_flag)
common_data.gokiShockedFlag = FALSE;
func_800A6548_jp();
func_800B9B2C_jp();
func_800A91DC_jp();
mNpc_Remail();
mPr_SendForeingerAnimalMail(common_data.privateInfo);
mPr_StartSetCompleteTalkInfo();
mMsm_SendInformationMail();
+1 -1
View File
@@ -9,7 +9,7 @@
#include "game.h"
#include "sys_math3d.h"
#include "m_scene.h"
#include "6DE300.h"
#include "m_quest.h"
#include "6F5550.h"
#include "libc/stddef.h"
#include "attributes.h"