diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/m_collision_bg.h | 141 | ||||
| -rw-r--r-- | include/m_common_data.h | 8 | ||||
| -rw-r--r-- | include/m_field_info.h | 17 | ||||
| -rw-r--r-- | include/m_field_make.h | 46 | ||||
| -rw-r--r-- | include/m_random_field.h | 44 | ||||
| -rw-r--r-- | include/segment_symbols.h | 2 | ||||
| -rw-r--r-- | include/tables/dmatables/dmadata_table_jp.h | 6 |
7 files changed, 209 insertions, 55 deletions
diff --git a/include/m_collision_bg.h b/include/m_collision_bg.h index 9401fda..9e5d84e 100644 --- a/include/m_collision_bg.h +++ b/include/m_collision_bg.h @@ -8,7 +8,87 @@ struct Actor; struct PosRot; -enum BackgroundAttribute { mCoBG_ATTRIBUTE_0, mCOBG_ATTRIBUTE_NONE = 100 }; +// TODO: focus further investigation on attributes WATER, 30, HOLE, WAVE, 59-63, and NONE +enum BackgroundAttribute { + /* 000 */ mCoBG_ATTRIBUTE_GRASS0, + /* 001 */ mCoBG_ATTRIBUTE_GRASS1, + /* 002 */ mCoBG_ATTRIBUTE_GRASS2, + /* 003 */ mCoBG_ATTRIBUTE_GRASS3, + /* 004 */ mCoBG_ATTRIBUTE_SOIL0, + /* 005 */ mCoBG_ATTRIBUTE_SOIL1, + /* 006 */ mCoBG_ATTRIBUTE_SOIL2, + /* 007 */ mCoBG_ATTRIBUTE_STONE, // stone path (not individual rocks) + /* 008 */ mCoBG_ATTRIBUTE_FLOOR, // seems to occupy all units in bottom row + /* 009 */ mCoBG_ATTRIBUTE_BUSH, + + /* 010 */ mCoBG_ATTRIBUTE_HOLE, // unconfirmed (from ac-decomp) + /* 011 */ mCoBG_ATTRIBUTE_WAVE, // unconfirmed (from ac-decomp) + + /* 012 */ mCoBG_ATTRIBUTE_WATER, // only used in small pond? + /* 013 */ mCoBG_ATTRIBUTE_WATERFALL, + /* 014 */ mCoBG_ATTRIBUTE_RIVER_N, + /* 015 */ mCoBG_ATTRIBUTE_RIVER_NW, + /* 016 */ mCoBG_ATTRIBUTE_RIVER_W, + /* 017 */ mCoBG_ATTRIBUTE_RIVER_SW, + /* 018 */ mCoBG_ATTRIBUTE_RIVER_S, + /* 019 */ mCoBG_ATTRIBUTE_RIVER_SE, + /* 020 */ mCoBG_ATTRIBUTE_RIVER_E, + /* 021 */ mCoBG_ATTRIBUTE_RIVER_NE, + + /* 022 */ mCoBG_ATTRIBUTE_SAND, + /* 023 */ mCoBG_ATTRIBUTE_WOOD, // fences (train tracks/dump), large signs, bridge edges + /* 024 */ mCoBG_ATTRIBUTE_SEA, // only seems to appear in row with beach + /* 025 */ mCoBG_ATTRIBUTE_SHALLOW0_NW, // shallower diagonal sea shallows, sea to SE + /* 026 */ mCoBG_ATTRIBUTE_SHALLOW0_NE, // shallower diagonal sea shallows, sea to SW + + /* 027 */ mCoBG_ATTRIBUTE_BRIDGE_NW, // diagonal bridge, river to NW + /* 028 */ mCoBG_ATTRIBUTE_BRIDGE_END, // "bridge" unit that ends above water (i.e. a pier) + /* 029 */ mCoBG_ATTRIBUTE_BRIDGE_SE, // diagonal bridge, river to SE + /* 030 */ mCoBG_ATTRIBUTE_30, + /* 031 */ mCoBG_ATTRIBUTE_BRIDGE_C, // diagonal bridge's central unit + /* 032 */ mCoBG_ATTRIBUTE_BRIDGE_N, // horizontal bridge, river/tracks to north (stone?) + /* 033 */ mCoBG_ATTRIBUTE_BRIDGE_E, // vertical bridge/steps, river/grass to east + /* 034 */ mCoBG_ATTRIBUTE_BRIDGE_W, // vertical bridge/steps, river/grass to west + /* 035 */ mCoBG_ATTRIBUTE_BRIDGE_S, // horizontal bridge, river to south + + /* 036 */ mCoBG_ATTRIBUTE_SHALLOW1_S, // deeper horizontal sea shallows, sea to south + /* 037 */ mCoBG_ATTRIBUTE_SHALLOW1_NW, // deeper diagonal sea shallows, sea to SE + /* 038 */ mCoBG_ATTRIBUTE_SHALLOW1_NE, // deeper diagonal sea shallows, sea to SW + + /* 039 */ mCoBG_ATTRIBUTE_BANK_SE, // diagonal riverbank, river to NW + /* 040 */ mCoBG_ATTRIBUTE_BANK_NE, // diagonal riverbank, river to SW + /* 041 */ mCoBG_ATTRIBUTE_BANK_NW, // diagonal riverbank, river to SE + /* 042 */ mCoBG_ATTRIBUTE_BANK_SW, // diagonal riverbank, river to NE + /* 043 */ mCoBG_ATTRIBUTE_BANK_N, // horizontal riverbank, river to north + /* 044 */ mCoBG_ATTRIBUTE_BANK_W, // vertical riverbank, river to east + /* 045 */ mCoBG_ATTRIBUTE_BANK_E, // vertical riverbank, river to west + /* 046 */ mCoBG_ATTRIBUTE_BANK_S, // horizontal riverbank, river to south + + /* 047 */ mCoBG_ATTRIBUTE_CLIFF_S, // vertical cliff edge, valley to north (only in south tunnel wall?) + /* 048 */ mCoBG_ATTRIBUTE_CLIFF_W, // vertical cliff edge, valley to west + /* 049 */ mCoBG_ATTRIBUTE_CLIFF_E, // vertical cliff edge, valley to west + /* 050 */ mCoBG_ATTRIBUTE_CLIFF_N, // horizontal cliff edge, valley to south (also appears in north tunnel wall) + + /* 051 */ mCoBG_ATTRIBUTE_TUNNEL_E_S, // east tunnel entrance, south corner + /* 052 */ mCoBG_ATTRIBUTE_TUNNEL_E_N, // east tunnel entrance, north corner + /* 053 */ mCoBG_ATTRIBUTE_TUNNEL_W_N, // west tunnel entrance, north corner + /* 054 */ mCoBG_ATTRIBUTE_TUNNEL_W_S, // west tunnel entrance, south corner + + /* 055 */ mCoBG_ATTRIBUTE_CLIFF_SE, // diagonal cliff edge, valley to NW + /* 056 */ mCoBG_ATTRIBUTE_CLIFF_NE, // diagonal cliff edge, valley to SW + /* 057 */ mCoBG_ATTRIBUTE_CLIFF_NW, // diagonal cliff edge, valley to SE + /* 058 */ mCoBG_ATTRIBUTE_CLIFF_SW, // diagonal cliff edge, valley to NE + + /* 059 */ mCoBG_ATTRIBUTE_BANK_WN, // corner riverbank, river/pond to north and west (need more data) + /* 060 */ mCoBG_ATTRIBUTE_BANK_UNK, // corner riverbank, unsure (found at beach on mini cliff with SAND to west, + // BANK_NE to east, BANK_E to north, SHALLOW1_NW to south) + + /* 061 */ mCoBG_ATTRIBUTE_61, + /* 062 */ mCoBG_ATTRIBUTE_62, + /* 063 */ mCoBG_ATTRIBUTE_63, // appears very sparingly at soil-grass boundaries + + /* 100 */ mCoBG_ATTRIBUTE_NONE = 100, // unconfirmed (from ac-decomp) +}; // offset table typedef struct mCoBG_unkStruct2 { @@ -21,16 +101,18 @@ typedef struct mCoBG_unkStruct2 { /* 0x06 */ s8 unk6; } mCoBG_unkStruct2; // size = 0x7 +// clang-format off // 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 + /* 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 unitAttribute : 6; // [5:0] unit_attribute } mCoBG_unkStruct; // size = 0x4 +// clang-format on typedef union mCoBG_unkStructUnion { mCoBG_unkStruct data; @@ -62,30 +144,32 @@ typedef struct mCoBG_WallInfo { * | ________ ________ ________ ___X____ | 0x1B | unk12 * | ________ ________ ________ ____XXXX | 0x1C | unk13 */ +// clang-format off typedef struct mCoBG_CheckResult { - u32 onGround : 1; // on_ground - u32 unk1 : 5; // hit_attribute_wall - u32 hitWall : 5; // hit_wall - u32 unk3 : 3; // hit_wall_count - u32 unk4 : 1; // unk_flag0 - u32 unk5 : 6; // unit_attribute - u32 unk6 : 1; // is_on_move_bg_obj - u32 inWater : 1; // is_in_water - u32 unk8 : 1; // unk_flag1 - u32 unk9 : 1; // unk_flag2 - u32 unk10 : 1; // unk_flag3 - u32 unk11 : 1; // unk_flag4 - u32 unk12 : 1; // unk_flag5 - u32 unk13 : 4; // unk_flag6 + u32 onGround : 1; // on_ground + u32 unk1 : 5; // hit_attribute_wall + u32 hitWall : 5; // hit_wall + u32 unk3 : 3; // hit_wall_count + u32 unk4 : 1; // unk_flag0 + u32 unk5 : 6; // unit_attribute + u32 unk6 : 1; // is_on_move_bg_obj + u32 inWater : 1; // is_in_water + u32 unk8 : 1; // unk_flag1 + u32 unk9 : 1; // unk_flag2 + u32 unk10 : 1; // unk_flag3 + u32 unk11 : 1; // unk_flag4 + u32 unk12 : 1; // unk_flag5 + u32 unk13 : 4; // unk_flag6 } mCoBG_CheckResult; +// clang-format on -typedef struct mCoBG_Check{ +typedef struct mCoBG_Check { /* 0x00 */ u8 unk0[0x11]; /* 0x14 */ mCoBG_CheckResult colResult; /* 0x18 */ u8 unk18[0xC]; /* 0x24 */ mCoBG_WallInfo wallInfo[2]; /* 0x2C */ s16 unk2C; -}mCoBG_Check; // size = 0x30 +} mCoBG_Check; // size = 0x30 // void func_80067430_jp(); // void func_800674B0_jp(); @@ -172,9 +256,10 @@ typedef struct mCoBG_Check{ // void func_8006B5C0_jp(); // void func_8006B664_jp(); // void func_8006B92C_jp(); -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); +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 mCoBG_CrossOffMoveBg(s32 arg0, struct Actor* actor); void func_8006BB64_jp(void); // void func_8006BB9C_jp(); // void func_8006BBE8_jp(); @@ -245,7 +330,7 @@ void func_8006C8D0_jp(void); // void func_80071064_jp(); // void func_800713CC_jp(); // void func_80071460_jp(); -f32 mCoBG_GetShadowBgY_AngleS_FromWpos(s_xyz*, xyz_t,f32); +f32 mCoBG_GetShadowBgY_AngleS_FromWpos(s_xyz*, xyz_t, f32); // void func_800715B4_jp(); // void func_80071604_jp(); // void func_80071728_jp(); @@ -259,7 +344,7 @@ void mCoBG_GetBgNorm_FromWpos(xyz_t*, xyz_t); // void func_800721C8_jp(); // void func_800721E4_jp(); // void func_80072238_jp(); -// void func_80072264_jp(); +s32 mCoBG_Attribute2CheckPlant(u32 attribute, const xyz_t* wpos); // void func_80072264_jp(); // void func_80072340_jp(); // void func_80072398_jp(); // void func_800723C4_jp(); diff --git a/include/m_common_data.h b/include/m_common_data.h index 23836cd..5223795 100644 --- a/include/m_common_data.h +++ b/include/m_common_data.h @@ -19,6 +19,14 @@ #include "m_scene.h" #include "m_demo.h" +#define COMMON_GET(name) (common_data.name) +#define COMMON_GET_POINTER(name) (&common_data.name) +#define COMMON_SET(name, value) (common_data.name = (value)) + +#define SAVE_GET(name) (COMMON_GET(save.name)) +#define SAVE_GET_POINTER(name) (COMMON_GET_POINTER(save.name)) +#define SAVE_SET(name, value) (COMMON_SET(save.name, value)) + typedef enum Season { /* 0 */ SPRING, /* 1 */ SUMMER, diff --git a/include/m_field_info.h b/include/m_field_info.h index a061f1a..56c13d6 100644 --- a/include/m_field_info.h +++ b/include/m_field_info.h @@ -40,6 +40,7 @@ struct Game; #define FI_BK_WORLDSIZE_HALF_X_F (FI_BK_WORLDSIZE_X_F / 2.0f) #define FI_BK_WORLDSIZE_HALF_Z_F (FI_BK_WORLDSIZE_Z_F / 2.0f) +#define mFI_NUM_SOUND_SOURCES 6 typedef enum FieldType { /* 0 */ FI_FIELDTYPE_FG, @@ -49,10 +50,10 @@ typedef enum FieldType { /* 4 */ FI_FIELDTYPE_NPC_ROOM, /* 5 */ FI_FIELDTYPE_DEMO, /* 6 */ FI_FIELDTYPE_PLAYER_ROOM, + /* 7 */ FI_FIELDTYPE_NUM } FieldType; - #define FI_TO_FIELD_ID(type, index) (((type) << 12) | (index)) #define FI_GET_TYPE(id) ((id) & 0xF000) @@ -83,6 +84,16 @@ typedef enum FieldDirection { /* 5 */ FI_MOVEDIR_MAX } FieldDirection; +// TODO: confirm 0 through 2 (POND and NUM confirmed) +typedef enum FieldSoundSource { + /* 0 */ mFI_SOUND_SOURCE_NONE, + /* 1 */ mFI_SOUND_SOURCE_RIVER, + /* 2 */ mFI_SOUND_SOURCE_OCEAN, + /* 3 */ mFI_SOUND_SOURCE_POND, + + /* 4 */ mFI_SOUND_SOURCE_NUM +} FieldSoundSource; + #define FI_GET_PLAYER_ROOM_NO(fieldId) (((fieldId)-FI_FIELD_PLAYER0_ROOM) & 3) #define FI_IS_PLAYER_ROOM(fieldId) \ ((fieldId) == FI_FIELD_PLAYER0_ROOM || (fieldId) == FI_FIELD_PLAYER1_ROOM || \ @@ -151,10 +162,10 @@ mCoBG_unkStructUnion* mFI_UtNum2UtCol(s32 utX, s32 utZ); // void func_80089698_jp(); // void func_80089704_jp(); // void func_800897D0_jp(); -// void func_80089888_jp(); +mCoBG_unkStructUnion* mFI_GetUnitCol(xyz_t wpos); // void func_800898F4_jp(); // void func_800899CC_jp(); -// void func_80089A34_jp(); +struct FieldMakeBGSoundSource* mFI_GetSoundSourcePBlockNum(s32 blockX, s32 blockZ); // void func_80089AAC_jp(); // void func_80089B1C_jp(); // void func_80089B94_jp(); diff --git a/include/m_field_make.h b/include/m_field_make.h index 695418d..45cf282 100644 --- a/include/m_field_make.h +++ b/include/m_field_make.h @@ -4,6 +4,8 @@ #include "ultra64.h" #include "unk.h" #include "m_collision_bg.h" +#include "m_field_info.h" +#include "other_types.h" struct Game; @@ -20,6 +22,10 @@ struct Game; #define UT_Z_NUM UT_BASE_NUM /* Spaces per block (acre) in z direction */ #define UT_TOTAL_NUM (UT_X_NUM * UT_Z_NUM) +#define mFM_SOUND_SOURCE_NUM 6 +#define mFM_MOVE_ACTOR_NUM 16 +#define mFM_HANIWA_STEP_NUM 4 + /* * Naming convention for `RIVER`/`POOL`: directions indicated are flow of river * (e.g. `RIVER_SOUTH` indicates a river that flows south through entire block, @@ -124,10 +130,21 @@ typedef enum FieldMakeBlockType { extern u8* g_block_type_p; extern u32* g_block_kind_p; // s32 in ac-decomp--if problems arise, try changing type +typedef struct FieldMakeCombination { + /* 0x0 */ u16 combinationType : 14; /* acre type index into `data_combi_table` */ + /* 0x0 */ u16 height : 2; /* 0, 1, 2, or 3 (unused) */ +} FieldMakeCombination; // size = 0x2 + typedef struct Foreground { /* 0x000 */ u16 items[UT_Z_NUM][UT_X_NUM]; } Foreground; // size = 0x200 +typedef struct FieldMakeComboInfo { + /* 0x00 */ u16 bgId; // perhaps should be `bgName`? + /* 0x02 */ u16 fgId; // perhaps should be `fgName`? + /* 0x05 */ u8 blockType; +} FieldMakeComboInfo; // size = 0x6 + typedef struct FieldMakeMoveActor { /* 0x0 */ u16 nameId; /* 0x2 */ s8 utX; @@ -142,19 +159,36 @@ typedef struct FieldMakeFGData { /* 0x202 */ UNK_TYPE1 unk_202[4]; } FieldMakeFGData; // size = 0x206 +typedef struct FieldMakeBGSoundSource { + /* 0x0 */ s16 kind; + /* 0x4 */ xyz_t pos; +} FieldMakeBGSoundSource; // size = 0x10 + typedef struct FieldMakeFGInfo { /* 0x00 */ u16 fgId; /* 0x04 */ u16* itemsPtr; - /* 0x08 */ UNK_TYPE1 unk_08[0x8C]; + /* 0x08 */ UNK_PTR unk_08; // ac-decomp: u16* deposit_p + /* 0x0C */ FieldMakeMoveActor moveActors[mFM_MOVE_ACTOR_NUM]; + /* 0x8C */ UNK_TYPE2 unk_08C; // ac-decomp: u16 move_actor_bit_data + /* 0x8E */ u8 haniwaStep[mFM_HANIWA_STEP_NUM]; } FieldMakeFGInfo; // size = 0x94 +// TODO: come up with better names to disambiguate the union `bgId` (which contains height data) +// from the plain u16 `bgId` used in `FieldMakeComboInfo` typedef struct FieldMakeBGInfo { - /* 0x000 */ UNK_TYPE1 unk_000[0x14]; + /* 0x000 */ FieldMakeCombination bgId; // stores `bgName` + height of corresponding block type from `data_combi_table` + /* 0x004 */ UNK_PTR unk_004; // ac-decomp: Gfx* opaque_gfx + /* 0x008 */ UNK_PTR unk_008; // ac-decomp: Gfx* translucent_gfx + /* 0x00C */ UNK_PTR unk_00C; // ac-decomp: EvwAnimeData* animation + /* 0x010 */ UNK_TYPE1 unk_010; // ac-decomp: s8 animation_count + /* 0x011 */ u8 blockType; /* 0x014 */ u32 blockKind; - /* 0x018 */ UNK_TYPE1 unk_018[0x08]; + /* 0x018 */ RomOffset romStartAddr; + /* 0x01C */ s32 romSize; /* 0x020 */ mCoBG_unkStructUnion collision[UT_Z_NUM][UT_X_NUM]; - /* 0x420 */ UNK_TYPE1 unk_024[0x160]; -} FieldMakeBGInfo; // size >= 0x57d + /* 0x420 */ u8 unk_420[UT_Z_NUM][UT_X_NUM]; // ac-decomp: u8 keep_h (holds `center` bitfield from corresponding `collision` entries) + /* 0x520 */ FieldMakeBGSoundSource soundSource[mFM_SOUND_SOURCE_NUM]; +} FieldMakeBGInfo; // size = 0x580 typedef struct FieldMakeBlockInfo { /* 0x000 */ FieldMakeBGInfo bgInfo; @@ -164,7 +198,7 @@ typedef struct FieldMakeBlockInfo { typedef struct FieldMakeInfo { /* 0x000 */ u16 fieldId; /* 0x002 */ UNK_TYPE1 unk_000[0x146]; - /* 0x148 */ FieldMakeBlockInfo* blockInfo; + /* 0x148 */ FieldMakeBlockInfo* blockInfo; // length: BLOCK_TOTAL_NUM /* 0x14C */ UNK_TYPE1 unk_14C[0x1A]; /* 0x166 */ u8 blockXMax; /* 0x167 */ u8 blockZMax; diff --git a/include/m_random_field.h b/include/m_random_field.h index 256edbb..3a9bdc6 100644 --- a/include/m_random_field.h +++ b/include/m_random_field.h @@ -2,6 +2,9 @@ #define M_RANDOM_FIELD_H #include "ultra64.h" +#include "m_collision_bg.h" +#include "game.h" +#include "m_field_make.h" #define RANDOM_FIELD_DIRECT_ERROR 100 @@ -14,6 +17,17 @@ typedef enum RandomFieldDirection { /* 4 */ RANDOM_FIELD_DIRECT_NUM } RandomFieldDirection; +typedef enum RandomFieldGateType { + /* 0 */ mRF_GATE_NONE, + /* 1 */ mRF_GATE1_TYPE0, + /* 2 */ mRF_GATE1_TYPE1, + /* 3 */ mRF_GATE2_TYPE0, + /* 4 */ mRF_GATE2_TYPE1, + /* 5 */ mRF_GATE3_TYPE0, + + /* 6 */ mRF_GATE_TYPE_NUM +} RandomFieldGateType; + typedef struct RandomFieldGate { /* 0x00 */ s32 ut0; /* 0x04 */ s32 ut1; @@ -53,20 +67,20 @@ typedef struct RandomFieldGate { #define mRF_BLOCKKIND_CLIFF6 (1 << 30) // Bottom part of cliff that juts out, valley on left #define mRF_BLOCKKIND_31 (1 << 31) // Not used in `mRF_block_info` -// void func_800BCBA0_jp(); -// void func_800BCBDC_jp(); -// void func_800BCC20_jp(); -// void func_800BCC30_jp(); -// void func_800BCC40_jp(); -// void func_800BCCFC_jp(); -s32 mRF_Type2BlockInfo(u8 type); -// void func_800BCDFC_jp(); -// void func_800BCE80_jp(); -// void func_800BCEA4_jp(); -// void func_800BCF64_jp(); -// void func_800BCFA4_jp(); -RandomFieldGate* mRF_BlockTypeDirect2GateData(s32*, u8, s32); -// void func_800BD02C_jp(); -// void func_800BD1E4_jp(); +// void* mRF_Malloc(Game* game, size_t size); +// void mRF_Free(Game* game, void* ptr); +s32* mRF_StepNo(void); +s32* mRF_TryCnt(void); +// void mRF_PrintDebug(gfxprint* gfxprint); +void mRF_MakeRandomField(FieldMakeCombination* combi_table, FieldMakeComboInfo* combi_info, s32 combi_count, Game* game); +u32 mRF_Type2BlockInfo(u8 blockType); +// u8 mRF_Info2BlockType(u32 blockInfo); +// s32 mRF_GateType2GateCount(s32 gateType); +s32 mRF_SearchPond(s32* utX, s32* utZ, s32 blockX, s32 blockZ); +// s32 mRF_Attr2BeastRoadAttr(s32 attribute); +// s32 mRF_BlockTypeDirect2GateType(u8 blockType, s32 direct); +RandomFieldGate* mRF_BlockTypeDirect2GateData(s32* gateCount, u8 blockType, s32 direct); +// s32 mRF_BlockInf2CheckBeastRoad(u8 blockType, mCoBG_unkStructUnion* collisionData); +void mRF_CheckBeastRoad(); #endif diff --git a/include/segment_symbols.h b/include/segment_symbols.h index bdea287..50d0a21 100644 --- a/include/segment_symbols.h +++ b/include/segment_symbols.h @@ -96,6 +96,8 @@ DECLARE_SEGMENT(ovl__0079F810); DECLARE_SEGMENT(ovl__007A10E0); DECLARE_SEGMENT(catalog_ovl); +DECLARE_SEGMENT(m_random_field_ovl); + DECLARE_SEGMENT(ac_set_ovl_insect); DECLARE_SEGMENT(ac_set_ovl_gyoei); diff --git a/include/tables/dmatables/dmadata_table_jp.h b/include/tables/dmatables/dmadata_table_jp.h index 733798b..b8df70f 100644 --- a/include/tables/dmatables/dmadata_table_jp.h +++ b/include/tables/dmatables/dmadata_table_jp.h @@ -116,8 +116,8 @@ DEFINE_DMA_ENTRY(ovl__00814FA0, "ovl__00814FA0") DEFINE_DMA_ENTRY(ovl__00814FA0_reloc, "ovl__00814FA0_reloc") DEFINE_DMA_ENTRY(ovl__00815B70, "ovl__00815B70") DEFINE_DMA_ENTRY(ovl__00815B70_reloc, "ovl__00815B70_reloc") -DEFINE_DMA_ENTRY(ovl__0081AA60, "ovl__0081AA60") -DEFINE_DMA_ENTRY(ovl__0081AA60_reloc, "ovl__0081AA60_reloc") +DEFINE_DMA_ENTRY(m_random_field_ovl, "m_random_field_ovl") +DEFINE_DMA_ENTRY(m_random_field_ovl_reloc, "m_random_field_ovl_reloc") DEFINE_DMA_ENTRY(ovl__0081D9D0, "ovl__0081D9D0") DEFINE_DMA_ENTRY(ovl__0081D9D0_reloc, "ovl__0081D9D0_reloc") DEFINE_DMA_ENTRY(ac_set_ovl_insect, "ac_set_ovl_insect") @@ -2288,7 +2288,7 @@ DEFINE_DMA_ENTRY(segment_01148000, "segment_01148000") DEFINE_DMA_ENTRY(segment_0114A000, "segment_0114A000") DEFINE_DMA_ENTRY(segment_01188000, "segment_01188000") DEFINE_DMA_ENTRY(segment_011AB000, "segment_011AB000") -DEFINE_DMA_ENTRY(segment_011E2000, "segment_011E2000") +DEFINE_DMA_ENTRY(data_combi, "data_combi") DEFINE_DMA_ENTRY(segment_011E3000, "segment_011E3000") DEFINE_DMA_ENTRY(segment_011E4000, "segment_011E4000") DEFINE_DMA_ENTRY(segment_011E5000, "segment_011E5000") |
