mirror of
https://github.com/zeldaret/af.git
synced 2026-09-26 13:33:16 -04:00
a4d5910cdb
* 25 functions OK * 10 functions OK * Add block type and block kind enums/defines * Formatting/style pass * Move `FieldMakeBlockType` to `m_field_make` * Remove unused/duplicate defines * Split data out for `m_quest` and `m_random_field`; rename data symbols * Generate `m_random_field.c` and rename function symbols. * mRF_BlockTypeDirect2GateType, mRF_BlockTypeDirect2GateData OK * mRF_Type2BlockInfo, mRF_Info2BlockType, mRF_GateType2GateCount, mRF_SearchPond, mRF_Attr2BeastRoadAttr, mRF_CheckBeastRoad OK * mFI_GetUnitCol OK; mRF_PrintDebug and mRF_BlockInf2CheckBeastRoad OK (pending data import). * Fix `m_random_field` code split; all newly included functions OK * Fix mRF_Malloc return type; formatting pass * Name m_random_field_ovl * Rename data symbols (m_random_field_ovl). * Rename symbols (all functions named) * Import data * Declare overlay segment; rename symbols * mRF_MakeRandomField OK (all functions matching). * Extract asset `data_combi_table` * Clean up mRF_MakeRandomField; document m_field_make.h * Rename mCoBG_unkStruct->unk6 as unitAttribute * Misc cleanup and formatting. * Rename additional data symbols (m_random_field_ovl). * Formatting pass * Improve documentation of BackgroundAttribute enum. * Formatting pass; add omitted attribute.
87 lines
3.4 KiB
C
87 lines
3.4 KiB
C
#ifndef M_RANDOM_FIELD_H
|
|
#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
|
|
|
|
typedef enum RandomFieldDirection {
|
|
/* 0 */ RANDOM_FIELD_DIRECT_NORTH,
|
|
/* 1 */ RANDOM_FIELD_DIRECT_WEST,
|
|
/* 2 */ RANDOM_FIELD_DIRECT_SOUTH,
|
|
/* 3 */ RANDOM_FIELD_DIRECT_EAST,
|
|
|
|
/* 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;
|
|
} RandomFieldGate;
|
|
|
|
#define mRF_BLOCKKIND_NONE (0 << 0)
|
|
#define mRF_BLOCKKIND_PLAYER (1 << 0) // Player houses
|
|
#define mRF_BLOCKKIND_SHOP (1 << 1)
|
|
#define mRF_BLOCKKIND_SHRINE (1 << 2)
|
|
#define mRF_BLOCKKIND_POLICE (1 << 3)
|
|
#define mRF_BLOCKKIND_POSTOFFICE (1 << 4)
|
|
#define mRF_BLOCKKIND_STATION (1 << 5)
|
|
#define mRF_BLOCKKIND_CLIFF (1 << 6)
|
|
#define mRF_BLOCKKIND_RIVER (1 << 7)
|
|
#define mRF_BLOCKKIND_WATERFALL (1 << 8)
|
|
#define mRF_BLOCKKIND_BRIDGE (1 << 9)
|
|
#define mRF_BLOCKKIND_RAILROAD (1 << 10)
|
|
#define mRF_BLOCKKIND_MARINE (1 << 11) // Beach
|
|
#define mRF_BLOCKKIND_BORDER (1 << 12)
|
|
#define mRF_BLOCKKIND_TUNNEL (1 << 13)
|
|
#define mRF_BLOCKKIND_SLOPE (1 << 14)
|
|
#define mRF_BLOCKKIND_POOL (1 << 15) // The large pond, not the small pools
|
|
#define mRF_BLOCKKIND_DUMP (1 << 16)
|
|
#define mRF_BLOCKKIND_RIVER0 (1 << 17) // Flows south
|
|
#define mRF_BLOCKKIND_RIVER1 (1 << 18) // Flows east
|
|
#define mRF_BLOCKKIND_RIVER2 (1 << 19) // Flows west
|
|
#define mRF_BLOCKKIND_RIVER3 (1 << 20) // Flows south then east
|
|
#define mRF_BLOCKKIND_RIVER4 (1 << 21) // Flows east then south
|
|
#define mRF_BLOCKKIND_RIVER5 (1 << 22) // Flows south then west
|
|
#define mRF_BLOCKKIND_RIVER6 (1 << 23) // Flows west then south
|
|
#define mRF_BLOCKKIND_CLIFF0 (1 << 24) // Cliff that goes horizontally in an arc across entire block
|
|
#define mRF_BLOCKKIND_CLIFF1 (1 << 25) // Bottom part of cliff which juts out, valley on right
|
|
#define mRF_BLOCKKIND_CLIFF2 (1 << 26) // Cliff that goes vertically across entire block, valley on right
|
|
#define mRF_BLOCKKIND_CLIFF3 (1 << 27) // Top part of cliff which juts out, valley on right
|
|
#define mRF_BLOCKKIND_CLIFF4 (1 << 28) // Top part of cliff which juts out, valley on left
|
|
#define mRF_BLOCKKIND_CLIFF5 (1 << 29) // Cliff that goes vertically across entire block, valley on left
|
|
#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* 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
|