diff options
| -rw-r--r-- | include/m_collision_bg.h | 24 | ||||
| -rw-r--r-- | include/m_field_info.h | 48 | ||||
| -rw-r--r-- | include/m_flashrom.h | 51 | ||||
| -rw-r--r-- | linker_scripts/jp/symbol_addrs_code.txt | 2 | ||||
| -rw-r--r-- | src/code/m_common_data.c | 2 | ||||
| -rw-r--r-- | src/code/m_field_info.c | 429 | ||||
| -rw-r--r-- | src/code/m_start_data_init.c | 1 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_play/m_play.c | 1 | ||||
| -rw-r--r-- | yamls/jp/code.yaml | 5 |
9 files changed, 512 insertions, 51 deletions
diff --git a/include/m_collision_bg.h b/include/m_collision_bg.h index 896da7c..182ebf3 100644 --- a/include/m_collision_bg.h +++ b/include/m_collision_bg.h @@ -3,6 +3,10 @@ #include "ultra64.h" #include "z64math.h" +#include "unk.h" + +struct Actor; +struct PosRot; typedef struct mCoBG_OffsetTable { /* 0x00 */ u8 unitAttribute; @@ -14,6 +18,22 @@ typedef struct mCoBG_OffsetTable { /* 0x06 */ s8 slateSwitch; } mCoBG_OffsetTable; // size = 0x7 +// collision bg data +typedef struct mCoBG_unkStruct { + /* 0x0 */ u32 unk0:1; // [31] shape + /* 0x0 */ u32 unk1:5; // [30:25] center + /* 0x0 */ u32 unk2:5; // [25:20] top_left + /* 0x0 */ u32 unk3:5; // [20:15] bot_left + /* 0x0 */ u32 unk4:5; // [15:10] top_right + /* 0x0 */ u32 unk5:5; // [10:5] bot_right + /* 0x0 */ u32 unk6:6; // [5:0] unit_attribute +} mCoBG_unkStruct; // size = 0x4 + +typedef union mCoBG_unkStructUnion { + mCoBG_unkStruct data; + u32 raw; +} mCoBG_unkStructUnion; + // void func_80067430_jp(); // void func_800674B0_jp(); // void func_800674D8_jp(); @@ -99,7 +119,7 @@ typedef struct mCoBG_OffsetTable { // void func_8006B5C0_jp(); // void func_8006B664_jp(); // void func_8006B92C_jp(); -s32 mCoBG_RegistMoveBg(s8 *arg0, PosRot *arg1, xyz_t *arg2, s16 *arg3, f32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, s32 argA, f32 argB); +s32 mCoBG_RegistMoveBg(s8 *arg0, struct PosRot *arg1, xyz_t *arg2, s16 *arg3, f32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, s32 argA, f32 argB); // void func_8006BAA8_jp(); void mCoBG_CrossOffMoveBg(s32 arg0, struct Actor *actor); void func_8006BB64_jp(void); @@ -254,7 +274,7 @@ void mCoBG_SetPluss5PointOffset_file(xyz_t pos, mCoBG_OffsetTable offsetData, ch // void func_80076270_jp(); // void func_80076280_jp(); // void func_80076290_jp(); -// void func_80076358_jp(); +s32 func_80076358_jp(u32 attribute); // void func_8007638C_jp(); // void func_800763F0_jp(); // void func_800763FC_jp(); diff --git a/include/m_field_info.h b/include/m_field_info.h index 755c7c2..52deaa6 100644 --- a/include/m_field_info.h +++ b/include/m_field_info.h @@ -3,8 +3,8 @@ #include "ultra64.h" #include "z64math.h" +#include "m_collision_bg.h" -struct CommonData; struct Game_Play; // void func_80087C30_jp(); @@ -65,7 +65,7 @@ u8 mFI_BkNum2BlockType(s32,s32); // void func_80089404_jp(); void mFI_BlockKind2BkNum(s32*,s32*,s32); // void func_800894D0_jp(); -// void func_80089538_jp(); +mCoBG_unkStructUnion* func_80089538_jp(s32 arg0, s32 arg1); // void func_800895B8_jp(); // void func_80089698_jp(); // void func_80089704_jp(); @@ -180,7 +180,7 @@ void mFI_Wpos2DepositOFF(xyz_t); // void func_8008D6E0_jp(); // void func_8008D7B0_jp(); // void func_8008D884_jp(); -// void func_8008D928_jp(); +s32 mFI_GetWaveUtinBlock(s32* arg0, s32* arg1, s32 arg2, s32 arg3); // void func_8008DA4C_jp(); void func_8008DCF8_jp(void); // void func_8008DD0C_jp(); @@ -195,47 +195,5 @@ void func_8008E5F4_jp(xyz_t arg0); // void func_8008E8E0_jp(); // void func_8008E9C4_jp(); // void func_8008EA5C_jp(); -// void func_8008ECA0_jp(); -// void func_8008ECC8_jp(); -// void func_8008ECF0_jp(); -// void func_8008ED14_jp(); -// void func_8008EE24_jp(); -// void func_8008EE5C_jp(); -// void func_8008EE6C_jp(); -// void func_8008EE7C_jp(); -// void func_8008EEB4_jp(); -// void func_8008EEE8_jp(); -// void func_8008EF0C_jp(); -s32 mFRm_CheckSaveData(void); -void mFRm_ClearSaveCheckData(struct CommonData* common_data); -// void func_8008EFDC_jp(); -// void func_8008F020_jp(); -// void func_8008F040_jp(); -// void func_8008F0A0_jp(); -// void func_8008F1BC_jp(); -// void func_8008F210_jp(); -// void func_8008F23C_jp(); -// void func_8008F24C_jp(); -// void func_8008F530_jp(); -// void func_8008F5FC_jp(); -// void func_8008F648_jp(); -// void func_8008F768_jp(); -// void func_8008F7C8_jp(); -// void func_8008F8A0_jp(); -// void func_8008F938_jp(); -// void func_8008F968_jp(); -// void func_8008FA28_jp(); -// void func_8008FA50_jp(); -// void func_8008FA74_jp(); -// void func_8008FAB4_jp(); -// void func_8008FAE0_jp(); -// void func_8008FB64_jp(); -// void func_8008FBEC_jp(); -// void func_8008FCE8_jp(); -// void func_8008FDD4_jp(); -// void func_8008FE74_jp(); -// void func_8008FF60_jp(); -// void func_80090044_jp(); -// void func_800900B0_jp(); #endif diff --git a/include/m_flashrom.h b/include/m_flashrom.h new file mode 100644 index 0000000..0fdf0ca --- /dev/null +++ b/include/m_flashrom.h @@ -0,0 +1,51 @@ +#ifndef M_FLASHROM_H +#define M_FLASHROM_H + +#include "ultra64.h" + +struct CommonData; + +// void func_8008ECA0_jp(); +// void func_8008ECC8_jp(); +// void func_8008ECF0_jp(); +// void func_8008ED14_jp(); +// void func_8008EE24_jp(); +// void func_8008EE5C_jp(); +// void func_8008EE6C_jp(); +// void func_8008EE7C_jp(); +// void func_8008EEB4_jp(); +// void func_8008EEE8_jp(); +// void func_8008EF0C_jp(); +s32 mFRm_CheckSaveData(void); +void mFRm_ClearSaveCheckData(struct CommonData* common_data); +// void func_8008EFDC_jp(); +// void func_8008F020_jp(); +// void func_8008F040_jp(); +// void func_8008F0A0_jp(); +// void func_8008F1BC_jp(); +// void func_8008F210_jp(); +// void func_8008F23C_jp(); +// void func_8008F24C_jp(); +// void func_8008F530_jp(); +// void func_8008F5FC_jp(); +// void func_8008F648_jp(); +// void func_8008F768_jp(); +// void func_8008F7C8_jp(); +// void func_8008F8A0_jp(); +// void func_8008F938_jp(); +// void func_8008F968_jp(); +// void func_8008FA28_jp(); +// void func_8008FA50_jp(); +// void func_8008FA74_jp(); +// void func_8008FAB4_jp(); +// void func_8008FAE0_jp(); +// void func_8008FB64_jp(); +// void func_8008FBEC_jp(); +// void func_8008FCE8_jp(); +// void func_8008FDD4_jp(); +// void func_8008FE74_jp(); +// void func_8008FF60_jp(); +// void func_80090044_jp(); +// void func_800900B0_jp(); + +#endif diff --git a/linker_scripts/jp/symbol_addrs_code.txt b/linker_scripts/jp/symbol_addrs_code.txt index 0ae845d..a546c56 100644 --- a/linker_scripts/jp/symbol_addrs_code.txt +++ b/linker_scripts/jp/symbol_addrs_code.txt @@ -1468,7 +1468,7 @@ func_8008D574_jp = 0x8008D574; // type:func func_8008D6E0_jp = 0x8008D6E0; // type:func func_8008D7B0_jp = 0x8008D7B0; // type:func func_8008D884_jp = 0x8008D884; // type:func -func_8008D928_jp = 0x8008D928; // type:func +mFI_GetWaveUtinBlock = 0x8008D928; // type:func func_8008DA4C_jp = 0x8008DA4C; // type:func func_8008DCF8_jp = 0x8008DCF8; // type:func func_8008DD0C_jp = 0x8008DD0C; // type:func diff --git a/src/code/m_common_data.c b/src/code/m_common_data.c index 31eea11..5fec9cd 100644 --- a/src/code/m_common_data.c +++ b/src/code/m_common_data.c @@ -1,6 +1,6 @@ #include "global.h" #include "m_common_data.h" -#include "m_field_info.h" +#include "m_flashrom.h" #include "68AAF0.h" CommonData common_data; diff --git a/src/code/m_field_info.c b/src/code/m_field_info.c new file mode 100644 index 0000000..d52fc4d --- /dev/null +++ b/src/code/m_field_info.c @@ -0,0 +1,429 @@ +#include "global.h" +#include "m_field_info.h" +#include "m_collision_bg.h" +#include "libc64/qrand.h" + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80087C30_jp.s") + +#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_GetFieldId.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80087C9C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80087D30_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80087DC8_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80087E14_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80087E58_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80087E94_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80087ED0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088018_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088160_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008819C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800881AC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088270_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800882AC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800882FC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088320_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088344_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088458_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800884E0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800885A8_jp.s") + +#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/func_8008883C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800888AC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088938_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800889D8_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088A58_jp.s") + +#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/func_80088BFC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088C74_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088CBC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088CD0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088CE4_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088D00_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088D30_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088D78_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088D9C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088E08_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088E34_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088E74_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088F14_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088F94_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008902C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008907C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089114_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800891AC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_BkNum2BlockType.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800892CC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008930C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089348_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800893C8_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089404_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_BlockKind2BkNum.s") + +#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/func_800895B8_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089698_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089704_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800897D0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089888_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800898F4_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800899CC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089A34_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089AAC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089B1C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089B94_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089C0C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089CA0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089D18_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089D6C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089E84_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089EF8_jp.s") + +#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/func_8008A3BC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008A410_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008A4F8_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_GetUnitFG.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008A608_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008A670_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008A74C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008A81C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008A960_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_SetFG_common.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008AA98_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008AB14_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008AC74_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008ACA0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008ACBC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008ACD8_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008ADCC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008AE70_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B1A0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B200_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B238_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B26C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B29C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B2D0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B300_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B318_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_SetBearActor.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B3E8_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B4C0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B598_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B66C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B774_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B7F4_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B878_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008B9F8_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008BA74_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008BAEC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008BB64_jp.s") + +#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/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/func_8008BDCC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008BE00_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008BE38_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008BF34_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008BFC4_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C058_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C0FC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C120_jp.s") + +#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/func_8008C344_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C390_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C3B0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C3D4_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C3E8_jp.s") + +#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/func_8008C498_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C4B8_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C504_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C524_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C548_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C56C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C5F0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C610_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C630_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C650_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_Wpos2DepositOFF.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C708_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C764_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C798_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C830_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C84C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C8C4_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C938_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C964_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008CA14_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008CAD8_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008CC1C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008CCFC_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008CD24_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008CD74_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008CE00_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008CE38_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008CEC0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008CFF4_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008D12C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008D268_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008D3A4_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008D574_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008D6E0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008D7B0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008D884_jp.s") + +s32 mFI_GetWaveUtinBlock(s32* arg0, s32* arg1, s32 arg2, s32 arg3) { + UNUSED s32 pad[4]; + s32 i; + s32 ret = 0; + s32 var_s2; + s32 var_s3 = 0; + mCoBG_unkStructUnion* temp_v0; + mCoBG_unkStructUnion* var_s1; + + arg0[0] = 0; + arg1[0] = 0; + + temp_v0 = var_s1 = func_80089538_jp(arg2, arg3); + + if (temp_v0 != NULL) { + + for (i = 0; i < 0x100; i++) { + + if (func_80076358_jp(var_s1->data.unk6) == 1) { + var_s3 += 1; + } + + var_s1++; + } + + if (var_s3 > 0) { + var_s1 = temp_v0; + var_s2 = fqrand() * var_s3; + + for (i = 0; i < 0x100; i++) { + + if (func_80076358_jp(var_s1->data.unk6) == 1) { + + if (var_s2 <= 0) { + arg0[0] = i & 0xF; + arg1[0] = i >> 4; + ret = 1; + break; + } + + var_s2 -= 1; + } + + var_s1++; + } + } + } + + return ret; +} + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008DA4C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008DCF8_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008DD0C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008DD3C_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008DDC8_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008DF04_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008E058_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008E514_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008E5F4_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_PrintNowBGNum.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_PrintFgAttr.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008E8E0_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008E9C4_jp.s") + +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008EA5C_jp.s") diff --git a/src/code/m_start_data_init.c b/src/code/m_start_data_init.c index 519e519..40a16f4 100644 --- a/src/code/m_start_data_init.c +++ b/src/code/m_start_data_init.c @@ -38,6 +38,7 @@ #include "m_time.h" #include "overlays/gamestates/ovl_play/m_play.h" #include "sys_math.h" +#include "m_flashrom.h" void famicom_emu_initial_common_data(void) { FamicomEmuCommonData* famicom = &common_data.famicom_emu_common_data; diff --git a/src/overlays/gamestates/ovl_play/m_play.c b/src/overlays/gamestates/ovl_play/m_play.c index e6c038c..e4f8501 100644 --- a/src/overlays/gamestates/ovl_play/m_play.c +++ b/src/overlays/gamestates/ovl_play/m_play.c @@ -40,6 +40,7 @@ #include "6A7D20.h" #include "m_scene_table.h" #include "zurumode.h" +#include "prevent_bss_reordering.h" void play_main(Game* game); void Gameplay_Scene_Read(Game_Play* game_play, s16 arg1); diff --git a/yamls/jp/code.yaml b/yamls/jp/code.yaml index 005cad3..f0b19d1 100644 --- a/yamls/jp/code.yaml +++ b/yamls/jp/code.yaml @@ -35,7 +35,8 @@ - [0x6A8180, asm, code/m_fbdemo_fade] - [0x6A83A0, asm, code/m_field_assessment] - [0x6A8B70, asm, code/m_field_make] - - [0x6AB8D0, asm, code/m_field_info] + - [0x6AB8D0, c, code/m_field_info] + - [0x6B2940, asm, code/m_flashrom] - [0x6B3DC0, asm, code/6B3DC0] - [0x6B6560, asm, code/m_handbill] - [0x6B81C0, asm, code/m_home] @@ -192,7 +193,7 @@ - [0x73A9D0, rodata, code/73A9D0] - [0x73A9E0, rodata, code/73A9E0] - [0x73AA10, rodata, code/73AA10] - - [0x73AAE0, rodata, code/73AAE0] + - [0x73AAE0, .rodata, code/m_field_info] - [0x73ABB0, rodata, code/73ABB0] - [0x73ABD0, rodata, code/73ABD0] - [0x73AC50, rodata, code/73AC50] |
