mirror of
https://github.com/zeldaret/af.git
synced 2026-09-26 13:33:16 -04:00
m_land OK (#212)
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@
|
||||
#include "ultra64.h"
|
||||
|
||||
// void func_80094520_jp();
|
||||
// void func_80094690_jp();
|
||||
void mHm_ClearAllHomeInfo(void);
|
||||
void mHm_SetNowHome(void);
|
||||
// void func_80094744_jp();
|
||||
// void func_800947C0_jp();
|
||||
|
||||
+14
-12
@@ -5,6 +5,7 @@
|
||||
#include "unk.h"
|
||||
|
||||
#define mLd_CHECK_LAND_ID(id) (((id) & 0xFF00) == 0x3000)
|
||||
#define mLd_CHECK_ID(id) ((id & 0x3000) == 0x3000)
|
||||
|
||||
// Town name character count
|
||||
#define LAND_NAME_SIZE 6
|
||||
@@ -16,21 +17,22 @@ typedef struct LandInfo {
|
||||
/* 0x8 */ u16 id;
|
||||
} LandInfo; // size = 0xA
|
||||
|
||||
s32 mLd_NullCheckLandName(char*);
|
||||
s32 mLd_CheckId(u16);
|
||||
s32 mLd_CheckCmpLandName(char* name1, char* name2);
|
||||
s32 mLd_CheckCmpLand(char* name1, u16 id1, char* name2, u16 id2);
|
||||
s32 mLd_NullCheckLandName(char* landName);
|
||||
s32 mLd_CheckId(u16 landId);
|
||||
s32 mLd_CheckCmpLandName(char* nameA, char* nameB);
|
||||
s32 mLd_CheckCmpLand(char* nameA, u16 idA, char* nameB, u16 idB);
|
||||
void mLd_ClearLandName(char* name);
|
||||
void mLd_CopyLandName(char* arg0, char* arg1);
|
||||
// void func_80094F24_jp();
|
||||
// void func_80094F84_jp();
|
||||
// void func_8009504C_jp();
|
||||
void mLd_CopyLandName(char* nameA, char* nameB);
|
||||
size_t mLd_AddMuraString(char* name, size_t len);
|
||||
size_t mLd_GetLandNameStringAddMura(char* buf);
|
||||
void mLd_SetFreeStrLandMuraName(char* name, s32 freeStr);
|
||||
char* mLd_GetLandName(void);
|
||||
// void func_800950E8_jp();
|
||||
s32 mLd_PlayerManKindCheckNo(u8 playerNumber);
|
||||
u16 mLd_MakeLandId(void);
|
||||
s32 mLd_PlayerManKindCheckNo(u8 playerNo);
|
||||
s32 mLd_PlayerManKindCheck(void);
|
||||
s32 mLd_CheckThisLand(char* arg0, u16 arg1);
|
||||
// void func_80095218_jp();
|
||||
s32 mLd_CheckThisLand(char* otherName, u16 otherId);
|
||||
void mLd_LandInfoInit(void);
|
||||
void mLd_LandDataInit(void);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1638,7 +1638,7 @@ func_800942A0_jp = 0x800942A0; // type:func
|
||||
func_80094400_jp = 0x80094400; // type:func
|
||||
mHandbillz_load = 0x800944B8; // type:func
|
||||
func_80094520_jp = 0x80094520; // type:func
|
||||
func_80094690_jp = 0x80094690; // type:func
|
||||
mHm_ClearAllHomeInfo = 0x80094690; // type:func
|
||||
mHm_SetNowHome = 0x800946D0; // type:func
|
||||
func_80094744_jp = 0x80094744; // type:func
|
||||
func_800947C0_jp = 0x800947C0; // type:func
|
||||
@@ -1658,15 +1658,15 @@ mLd_CheckCmpLandName = 0x80094E38; // type:func
|
||||
mLd_CheckCmpLand = 0x80094E90; // type:func
|
||||
mLd_ClearLandName = 0x80094EE0; // type:func
|
||||
mLd_CopyLandName = 0x80094F04; // type:func
|
||||
func_80094F24_jp = 0x80094F24; // type:func
|
||||
func_80094F84_jp = 0x80094F84; // type:func
|
||||
func_8009504C_jp = 0x8009504C; // type:func
|
||||
mLd_AddMuraString = 0x80094F24; // type:func
|
||||
mLd_GetLandNameStringAddMura = 0x80094F84; // type:func
|
||||
mLd_SetFreeStrLandMuraName = 0x8009504C; // type:func
|
||||
mLd_GetLandName = 0x800950D8; // type:func
|
||||
func_800950E8_jp = 0x800950E8; // type:func
|
||||
mLd_MakeLandId = 0x800950E8; // type:func
|
||||
mLd_PlayerManKindCheckNo = 0x8009519C; // type:func
|
||||
mLd_PlayerManKindCheck = 0x800951C0; // type:func
|
||||
mLd_CheckThisLand = 0x800951E4; // type:func
|
||||
func_80095218_jp = 0x80095218; // type:func
|
||||
mLd_LandInfoInit = 0x80095218; // type:func
|
||||
mLd_LandDataInit = 0x8009524C; // type:func
|
||||
func_80095280_jp = 0x80095280; // type:func
|
||||
func_800952A4_jp = 0x800952A4; // type:func
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
#include "m_land.h"
|
||||
#include "m_string.h"
|
||||
#include "m_lib.h"
|
||||
#include "m_msg_main.h"
|
||||
#include "6B81C0.h"
|
||||
|
||||
s32 mLd_NullCheckLandName(char* landName) {
|
||||
s32 isNull = FALSE;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < LAND_NAME_SIZE; i++) {
|
||||
if (*landName != ' ') {
|
||||
break;
|
||||
}
|
||||
landName++;
|
||||
}
|
||||
|
||||
if (i == LAND_NAME_SIZE) {
|
||||
isNull = TRUE;
|
||||
}
|
||||
return isNull;
|
||||
}
|
||||
|
||||
s32 mLd_CheckId(u16 landId) {
|
||||
s32 res = FALSE;
|
||||
|
||||
if (mLd_CHECK_ID(landId)) {
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
s32 mLd_CheckCmpLandName(char* nameA, char* nameB) {
|
||||
s32 equal = FALSE;
|
||||
|
||||
if (mLd_NullCheckLandName(nameA) == FALSE && mLd_NullCheckLandName(nameB) == FALSE) {
|
||||
equal = mem_cmp((u8*)nameA, (u8*)nameB, LAND_NAME_SIZE);
|
||||
}
|
||||
|
||||
return equal;
|
||||
}
|
||||
|
||||
s32 mLd_CheckCmpLand(char* nameA, u16 idA, char* nameB, u16 idB) {
|
||||
s32 equal = FALSE;
|
||||
|
||||
if (idA == idB && mLd_CheckCmpLandName(nameA, nameB) == TRUE) {
|
||||
equal = TRUE;
|
||||
}
|
||||
|
||||
return equal;
|
||||
}
|
||||
|
||||
void mLd_ClearLandName(char* name) {
|
||||
mem_clear((u8*)name, LAND_NAME_SIZE, ' ');
|
||||
}
|
||||
|
||||
void mLd_CopyLandName(char* nameA, char* nameB) {
|
||||
mem_copy((u8*)nameA, (u8*)nameB, LAND_NAME_SIZE);
|
||||
}
|
||||
|
||||
size_t mLd_AddMuraString(char* name, size_t len) {
|
||||
char buf[10];
|
||||
size_t size;
|
||||
UNUSED s32 pad;
|
||||
size_t lenNew;
|
||||
|
||||
mString_Load_StringFromRom(buf, sizeof(buf), 484);
|
||||
size = mMsg_Get_Length_String(buf, sizeof(buf));
|
||||
lenNew = size + len;
|
||||
|
||||
mem_copy((u8*)(name + len), (u8*)buf, size);
|
||||
|
||||
return lenNew;
|
||||
}
|
||||
|
||||
size_t mLd_GetLandNameStringAddMura(char* buf) {
|
||||
char* name;
|
||||
size_t size;
|
||||
size_t muraSize;
|
||||
s32 i;
|
||||
|
||||
name = mLd_GetLandName();
|
||||
size = mMsg_Get_Length_String(name, LAND_NAME_SIZE);
|
||||
|
||||
mem_copy((u8*)buf, (u8*)name, size);
|
||||
muraSize = mLd_AddMuraString(buf, size);
|
||||
|
||||
for (i = muraSize; i < LAND_NAME_MURA_SIZE; i++) {
|
||||
buf[i] = ' ';
|
||||
}
|
||||
|
||||
return muraSize;
|
||||
}
|
||||
|
||||
void mLd_SetFreeStrLandMuraName(char* name, s32 freeStr) {
|
||||
char str[8];
|
||||
size_t nameLen;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < LAND_NAME_MURA_SIZE; i++) {
|
||||
str[i] = ' ';
|
||||
}
|
||||
|
||||
nameLen = mMsg_Get_Length_String(name, LAND_NAME_SIZE);
|
||||
mem_copy((u8*)str, (u8*)name, nameLen);
|
||||
nameLen = mLd_AddMuraString(str, nameLen);
|
||||
mMsg_Set_free_str(mMsg_Get_base_window_p(), freeStr, str, nameLen);
|
||||
}
|
||||
|
||||
char* mLd_GetLandName() {
|
||||
return common_data.save.landInfo.name;
|
||||
}
|
||||
|
||||
u16 mLd_MakeLandId() {
|
||||
return (u16)(RANDOM_F(256)) | 0x3000;
|
||||
}
|
||||
|
||||
s32 mLd_PlayerManKindCheckNo(u8 playerNo) {
|
||||
s32 foreigner = TRUE;
|
||||
|
||||
if (playerNo < PLAYER_NUM) {
|
||||
foreigner = FALSE;
|
||||
}
|
||||
|
||||
return foreigner;
|
||||
}
|
||||
|
||||
s32 mLd_PlayerManKindCheck() {
|
||||
return mLd_PlayerManKindCheckNo(common_data.playerNumber);
|
||||
}
|
||||
|
||||
s32 mLd_CheckThisLand(char* otherName, u16 otherId) {
|
||||
return mLd_CheckCmpLand(otherName, otherId, common_data.save.landInfo.name, common_data.save.landInfo.id);
|
||||
}
|
||||
|
||||
void mLd_LandInfoInit() {
|
||||
LandInfo* landInfo = &common_data.save.landInfo;
|
||||
|
||||
landInfo->id = mLd_MakeLandId();
|
||||
landInfo->exists = TRUE;
|
||||
}
|
||||
|
||||
void mLd_LandDataInit() {
|
||||
mLd_LandInfoInit();
|
||||
mHm_ClearAllHomeInfo();
|
||||
}
|
||||
+1
-1
@@ -42,7 +42,7 @@
|
||||
- [0x6B6560, asm, code/m_handbill]
|
||||
- [0x6B81C0, asm, code/m_home]
|
||||
- [0x6B8880, asm, code/m_house]
|
||||
- [0x6B8A70, asm, code/m_land]
|
||||
- [0x6B8A70, c, code/m_land]
|
||||
- [0x6B8F20, asm, code/6B8F20]
|
||||
- [0x6BA3B0, asm, code/m_item_name]
|
||||
- [0x6BA500, asm, code/6BA500]
|
||||
|
||||
Reference in New Issue
Block a user