diff --git a/include/constants/bdhc.h b/include/constants/bdhc.h new file mode 100644 index 0000000000..b8699abeb0 --- /dev/null +++ b/include/constants/bdhc.h @@ -0,0 +1,8 @@ +#ifndef POKEPLATINUM_CONSTANTS_BDHC_H +#define POKEPLATINUM_CONSTANTS_BDHC_H + +#define BDHC_BUFFER_SIZE 0x9000 + +#define BDHC_MAGIC_LENGTH 4 + +#endif // POKEPLATINUM_CONSTANTS_BDHC_H diff --git a/include/overlay005/bdhc.h b/include/overlay005/bdhc.h new file mode 100644 index 0000000000..85a87f5c09 --- /dev/null +++ b/include/overlay005/bdhc.h @@ -0,0 +1,35 @@ +#ifndef POKEPLATINUM_OV5_BDHC_H +#define POKEPLATINUM_OV5_BDHC_H + +#include + +typedef struct BDHCPlate { + u16 firstPointIndex; + u16 secondPointIndex; + u16 normalIndex; + u16 heightIndex; +} BDHCPlate; + +typedef struct BDHCPoint { + fx32 x; + fx32 y; +} BDHCPoint; + +typedef struct BDHCStrip { + fx32 lowerBound; + u16 accessListElementCount; + u16 accessListStartIndex; +} BDHCStrip; + +typedef struct BDHC { + BDHCPlate *plates; + fx32 *heights; + BDHCStrip *strips; + u16 *accessList; + BDHCPoint *points; + VecFx32 *slopes; + BOOL loaded; + int stripsSize; +} BDHC; + +#endif // POKEPLATINUM_OV5_BDHC_H diff --git a/include/overlay005/bdhc_loader.h b/include/overlay005/bdhc_loader.h new file mode 100644 index 0000000000..a03da6a2d9 --- /dev/null +++ b/include/overlay005/bdhc_loader.h @@ -0,0 +1,18 @@ +#ifndef POKEPLATINUM_OV5_BDHC_LOADER_H +#define POKEPLATINUM_OV5_BDHC_LOADER_H + +#include "overlay005/bdhc.h" + +#include "narc.h" +#include "sys_task_manager.h" + +void BDHCLoader_Load(NARC *narc, const int bdhcSize, BDHC *bdhc, u8 *buffer); +SysTask *BDHCLoader_StartTask(NARC *landDataNARC, const int param1, BDHC *bdhc, int *param3, u8 **buffer, int *param5); +void BDHCLoader_ForceExitTask(SysTask *sysTask); +void BDHCLoader_MarkBDHCNotLoaded(BDHC *bdhc); + +BDHC *BDHC_New(void); +void BDHC_Free(BDHC *bdhc); +void BDHC_Reset(BDHC *bdhc); + +#endif // POKEPLATINUM_OV5_BDHC_LOADER_H diff --git a/include/overlay005/ov5_021E779C.h b/include/overlay005/ov5_021E779C.h index b67c45e563..f7ffc7bf20 100644 --- a/include/overlay005/ov5_021E779C.h +++ b/include/overlay005/ov5_021E779C.h @@ -4,12 +4,12 @@ #include #include "field/field_system_decl.h" +#include "overlay005/bdhc.h" #include "overlay005/funcptr_ov5_021E9630.h" #include "overlay005/struct_ov5_021D3CAC_decl.h" #include "overlay005/struct_ov5_021D5894.h" #include "overlay005/struct_ov5_021E1608_decl.h" #include "overlay005/struct_ov5_021E8F60_decl.h" -#include "overlay005/struct_ov5_021EF13C_decl.h" #include "overlay005/struct_ov5_021EF76C_decl.h" #include "map_matrix.h" @@ -33,7 +33,7 @@ u8 ov5_021E935C(const u32 param0, const int param1); u8 ov5_021E9390(const int param0, const u8 param1, const UnkStruct_ov5_021E8F60 *param2); int ov5_021E9560(const UnkStruct_ov5_021E8F60 *param0, const u8 param1); BOOL ov5_021E9580(const UnkStruct_ov5_021E8F60 *param0, const int param1, const int param2, u8 *param3); -const UnkStruct_ov5_021EF13C *ov5_021E9610(const UnkStruct_ov5_021E8F60 *param0, const u8 param1); +const BDHC *ov5_021E9610(const UnkStruct_ov5_021E8F60 *param0, const u8 param1); u16 const *ov5_021E9624(const UnkStruct_ov5_021E8F60 *param0, const u8 param1); void ov5_021E9630(UnkStruct_ov5_021E8F60 *param0, UnkFuncPtr_ov5_021E9630 param1, void *param2); NARC *ov5_021E9828(UnkStruct_ov5_021E8F60 *param0); diff --git a/include/overlay005/ov5_021EEC68.h b/include/overlay005/ov5_021EEC68.h index b15579f074..abb484e15b 100644 --- a/include/overlay005/ov5_021EEC68.h +++ b/include/overlay005/ov5_021EEC68.h @@ -1,8 +1,8 @@ #ifndef POKEPLATINUM_OV5_021EEC68_H #define POKEPLATINUM_OV5_021EEC68_H -#include "overlay005/struct_ov5_021EF13C_decl.h" +#include "overlay005/bdhc.h" -BOOL ov5_021EED9C(const fx32 param0, const fx32 param1, const fx32 param2, const UnkStruct_ov5_021EF13C *param3, fx32 *param4); +BOOL ov5_021EED9C(const fx32 param0, const fx32 param1, const fx32 param2, const BDHC *param3, fx32 *param4); #endif // POKEPLATINUM_OV5_021EEC68_H diff --git a/include/overlay005/ov5_021EEF34.h b/include/overlay005/ov5_021EEF34.h deleted file mode 100644 index 0f03c05d0b..0000000000 --- a/include/overlay005/ov5_021EEF34.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef POKEPLATINUM_OV5_021EEF34_H -#define POKEPLATINUM_OV5_021EEF34_H - -#include "overlay005/struct_ov5_021EF13C_decl.h" - -#include "narc.h" -#include "sys_task_manager.h" - -UnkStruct_ov5_021EF13C *ov5_021EF13C(void); -void ov5_021EF158(NARC *param0, const int param1, UnkStruct_ov5_021EF13C *param2, u8 *param3); -void ov5_021EF1D0(UnkStruct_ov5_021EF13C *param0); -void ov5_021EF1DC(UnkStruct_ov5_021EF13C *param0); -SysTask *ov5_021EF1F0(NARC *param0, const int param1, UnkStruct_ov5_021EF13C *param2, int *param3, u8 **param4, int *param5); -void ov5_021EF23C(SysTask *param0); -void ov5_021EF248(UnkStruct_ov5_021EF13C *param0); - -#endif // POKEPLATINUM_OV5_021EEF34_H diff --git a/include/overlay005/struct_ov5_021EEC68.h b/include/overlay005/struct_ov5_021EEC68.h deleted file mode 100644 index 17cce26c3e..0000000000 --- a/include/overlay005/struct_ov5_021EEC68.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_OV5_021EEC68_H -#define POKEPLATINUM_STRUCT_OV5_021EEC68_H - -typedef struct UnkStruct_ov5_021EEC68_t { - fx32 unk_00; - fx32 unk_04; -} UnkStruct_ov5_021EEC68; - -#endif // POKEPLATINUM_STRUCT_OV5_021EEC68_H diff --git a/include/overlay005/struct_ov5_021EED38.h b/include/overlay005/struct_ov5_021EED38.h deleted file mode 100644 index d54c6d0f9f..0000000000 --- a/include/overlay005/struct_ov5_021EED38.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_OV5_021EED38_H -#define POKEPLATINUM_STRUCT_OV5_021EED38_H - -typedef struct UnkStruct_ov5_021EED38_t { - fx32 unk_00; - u16 unk_04; - u16 unk_06; -} UnkStruct_ov5_021EED38; - -#endif // POKEPLATINUM_STRUCT_OV5_021EED38_H diff --git a/include/overlay005/struct_ov5_021EF13C.h b/include/overlay005/struct_ov5_021EF13C.h deleted file mode 100644 index 4257774e94..0000000000 --- a/include/overlay005/struct_ov5_021EF13C.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_OV5_021EF13C_H -#define POKEPLATINUM_STRUCT_OV5_021EF13C_H - -#include - -#include "overlay005/struct_ov5_021EEC68.h" -#include "overlay005/struct_ov5_021EED38.h" -#include "overlay005/struct_ov5_021EF13C_sub1.h" - -typedef struct UnkStruct_ov5_021EF13C_t { - UnkStruct_ov5_021EF13C_sub1 *unk_00; - fx32 *unk_04; - UnkStruct_ov5_021EED38 *unk_08; - u16 *unk_0C; - UnkStruct_ov5_021EEC68 *unk_10; - VecFx32 *unk_14; - BOOL unk_18; - int unk_1C; -} UnkStruct_ov5_021EF13C; - -#endif // POKEPLATINUM_STRUCT_OV5_021EF13C_H diff --git a/include/overlay005/struct_ov5_021EF13C_decl.h b/include/overlay005/struct_ov5_021EF13C_decl.h deleted file mode 100644 index b29e22d7ad..0000000000 --- a/include/overlay005/struct_ov5_021EF13C_decl.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_OV5_021EF13C_DECL_H -#define POKEPLATINUM_STRUCT_OV5_021EF13C_DECL_H - -typedef struct UnkStruct_ov5_021EF13C_t UnkStruct_ov5_021EF13C; - -#endif // POKEPLATINUM_STRUCT_OV5_021EF13C_DECL_H diff --git a/include/overlay005/struct_ov5_021EF13C_sub1.h b/include/overlay005/struct_ov5_021EF13C_sub1.h deleted file mode 100644 index 6af6542567..0000000000 --- a/include/overlay005/struct_ov5_021EF13C_sub1.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_OV5_021EF13C_SUB1_H -#define POKEPLATINUM_STRUCT_OV5_021EF13C_SUB1_H - -typedef struct { - u16 unk_00; - u16 unk_02; - u16 unk_04; - u16 unk_06; -} UnkStruct_ov5_021EF13C_sub1; - -#endif // POKEPLATINUM_STRUCT_OV5_021EF13C_SUB1_H diff --git a/platinum.us/main.lsf b/platinum.us/main.lsf index 28becb79e5..7c8a27410b 100644 --- a/platinum.us/main.lsf +++ b/platinum.us/main.lsf @@ -509,7 +509,7 @@ Overlay overlay5 Object main.nef.p/src_overlay005_ov5_021EE7D4.c.o Object main.nef.p/src_overlay005_ov5_021EEAC8.c.o Object main.nef.p/src_overlay005_ov5_021EEC68.c.o - Object main.nef.p/src_overlay005_ov5_021EEF34.c.o + Object main.nef.p/src_overlay005_bdhc_loader.c.o Object main.nef.p/src_overlay005_ov5_021EF250.c.o Object main.nef.p/src_overlay005_hblank_system.c.o Object main.nef.p/src_overlay005_ov5_021EF4BC.c.o diff --git a/src/meson.build b/src/meson.build index f968922f89..7a56f1267f 100644 --- a/src/meson.build +++ b/src/meson.build @@ -402,7 +402,7 @@ pokeplatinum_c = files( 'overlay005/ov5_021EE7D4.c', 'overlay005/ov5_021EEAC8.c', 'overlay005/ov5_021EEC68.c', - 'overlay005/ov5_021EEF34.c', + 'overlay005/bdhc_loader.c', 'overlay005/ov5_021EF250.c', 'overlay005/hblank_system.c', 'overlay005/ov5_021EF4BC.c', diff --git a/src/overlay005/bdhc_loader.c b/src/overlay005/bdhc_loader.c new file mode 100644 index 0000000000..a79d9e00c7 --- /dev/null +++ b/src/overlay005/bdhc_loader.c @@ -0,0 +1,269 @@ +#include "overlay005/bdhc_loader.h" + +#include +#include + +#include "constants/bdhc.h" +#include "constants/heap.h" + +#include "overlay005/bdhc.h" + +#include "heap.h" +#include "narc.h" +#include "sys_task.h" +#include "sys_task_manager.h" + +enum BDHCSubTask { + BDHC_LOADER_SUBTASK_PREPARE_FILE_LOAD = 0, + BDHC_LOADER_SUBTASK_LOAD_FILE, + BDHC_LOADER_SUBTASK_END_TASK, +}; + +typedef struct { + int pointsSize; + int slopesSize; + int heightsSize; + int platesSize; + int stripsSize; + int accessListSize; +} BDHCHeader; + +typedef struct { + FSFile unk_00; + int unk_AC; + BDHCHeader bdhcHeader; + BOOL unk_C8; + u8 currentSubTask; + u8 *buffer; + BDHC *bdhc; + BOOL forceExit; + int *unk_DC; + NARC *landDataNARC; + int unk_E4; + int *unk_E8; +} BDHCLoaderTaskContext; + +static void BDHCLoader_PrepareBuffers(const BDHCHeader *bdhcHeader, BDHC *bdhc, void **buffer); +static void BDHCLoader_LoadPoints(NARC *narc, BDHC *bdhc, const BDHCHeader *bdhcHeader); +static void BDHCLoader_LoadSlopes(NARC *narc, BDHC *bdhc, const BDHCHeader *bdhcHeader); +static void BDHCLoader_LoadHeights(NARC *narc, BDHC *bdhc, const BDHCHeader *bdhcHeader); +static void BDHCLoader_LoadPlates(NARC *narc, BDHC *bdhc, const BDHCHeader *bdhcHeader); +static void BDHCLoader_LoadStrips(NARC *narc, BDHC *bdhc, const BDHCHeader *bdhcHeader); +static void BDHCLoader_LoadAccessList(NARC *narc, BDHC *bdhc, const BDHCHeader *bdhcHeader); + +static void BDHCLoader_LoadHeader(NARC *narc, BDHCHeader *bdhcHeader) +{ + u16 magic[BDHC_MAGIC_LENGTH]; + + MI_CpuClear32(bdhcHeader, sizeof(BDHCHeader)); + + NARC_ReadFile(narc, BDHC_MAGIC_LENGTH, magic); + NARC_ReadFile(narc, 2, &bdhcHeader->pointsSize); + NARC_ReadFile(narc, 2, &bdhcHeader->slopesSize); + NARC_ReadFile(narc, 2, &bdhcHeader->heightsSize); + NARC_ReadFile(narc, 2, &bdhcHeader->platesSize); + NARC_ReadFile(narc, 2, &bdhcHeader->stripsSize); + NARC_ReadFile(narc, 2, &bdhcHeader->accessListSize); +} + +static void BDHCLoader_PrepareBuffers(const BDHCHeader *bdhcHeader, BDHC *bdhc, void **buffer) +{ + void *ptr; + int offset = 0; + + ptr = (u8 *)*buffer; + bdhc->points = ptr; + offset += (sizeof(BDHCPoint) * bdhcHeader->pointsSize); + + ptr = (u8 *)*buffer + offset; + bdhc->slopes = ptr; + offset += (sizeof(VecFx32) * bdhcHeader->slopesSize); + + ptr = (u8 *)*buffer + offset; + bdhc->heights = ptr; + offset += (sizeof(fx32) * bdhcHeader->heightsSize); + + ptr = (u8 *)*buffer + offset; + bdhc->plates = ptr; + offset += (sizeof(BDHCPlate) * bdhcHeader->platesSize); + + ptr = (u8 *)*buffer + offset; + bdhc->strips = ptr; + offset += sizeof(BDHCStrip) * bdhcHeader->stripsSize; + + ptr = (u8 *)*buffer + offset; + bdhc->accessList = ptr; + offset += sizeof(u16) * bdhcHeader->accessListSize; + + GF_ASSERT(offset <= BDHC_BUFFER_SIZE); +} + +static void BDHCLoader_LoadPoints(NARC *narc, BDHC *bdhc, const BDHCHeader *bdhcHeader) +{ + NARC_ReadFile(narc, sizeof(BDHCPoint) * bdhcHeader->pointsSize, bdhc->points); +} + +static void BDHCLoader_LoadSlopes(NARC *narc, BDHC *bdhc, const BDHCHeader *bdhcHeader) +{ + NARC_ReadFile(narc, sizeof(VecFx32) * bdhcHeader->slopesSize, bdhc->slopes); +} + +static void BDHCLoader_LoadHeights(NARC *narc, BDHC *bdhc, const BDHCHeader *bdhcHeader) +{ + NARC_ReadFile(narc, sizeof(fx32) * bdhcHeader->heightsSize, bdhc->heights); +} + +static void BDHCLoader_LoadPlates(NARC *narc, BDHC *bdhc, const BDHCHeader *bdhcHeader) +{ + NARC_ReadFile(narc, sizeof(BDHCPlate) * bdhcHeader->platesSize, bdhc->plates); +} + +static void BDHCLoader_LoadStrips(NARC *narc, BDHC *bdhc, const BDHCHeader *bdhcHeader) +{ + NARC_ReadFile(narc, sizeof(BDHCStrip) * bdhcHeader->stripsSize, bdhc->strips); +} + +static void BDHCLoader_LoadAccessList(NARC *narc, BDHC *bdhc, const BDHCHeader *bdhcHeader) +{ + NARC_ReadFile(narc, sizeof(u16) * bdhcHeader->accessListSize, bdhc->accessList); +} + +static void BDHCLoader_RunTask(SysTask *sysTask, void *sysTaskParam) +{ + BOOL subTaskCompleted; + BDHCLoaderTaskContext *ctx = (BDHCLoaderTaskContext *)sysTaskParam; + + if (ctx->forceExit == TRUE) { + ctx->currentSubTask = BDHC_LOADER_SUBTASK_END_TASK; + } + + switch (ctx->currentSubTask) { + case BDHC_LOADER_SUBTASK_PREPARE_FILE_LOAD: + if (*ctx->unk_E8) { + subTaskCompleted = FALSE; + break; + } + + BDHCLoader_LoadHeader(ctx->landDataNARC, &ctx->bdhcHeader); + ctx->bdhc->stripsSize = ctx->bdhcHeader.stripsSize; + BDHCLoader_PrepareBuffers(&ctx->bdhcHeader, ctx->bdhc, (void **)&ctx->buffer); + + subTaskCompleted = TRUE; + break; + + case BDHC_LOADER_SUBTASK_LOAD_FILE: + BDHCLoader_LoadPoints(ctx->landDataNARC, ctx->bdhc, &ctx->bdhcHeader); + BDHCLoader_LoadSlopes(ctx->landDataNARC, ctx->bdhc, &ctx->bdhcHeader); + BDHCLoader_LoadHeights(ctx->landDataNARC, ctx->bdhc, &ctx->bdhcHeader); + BDHCLoader_LoadPlates(ctx->landDataNARC, ctx->bdhc, &ctx->bdhcHeader); + BDHCLoader_LoadStrips(ctx->landDataNARC, ctx->bdhc, &ctx->bdhcHeader); + BDHCLoader_LoadAccessList(ctx->landDataNARC, ctx->bdhc, &ctx->bdhcHeader); + + subTaskCompleted = TRUE; + break; + + case BDHC_LOADER_SUBTASK_END_TASK: + *ctx->unk_DC = 0; + + Heap_FreeToHeap((void *)sysTaskParam); + SysTask_Done(sysTask); + + return; + } + + if (subTaskCompleted == TRUE) { + ctx->currentSubTask++; + + if (ctx->currentSubTask == BDHC_LOADER_SUBTASK_END_TASK) { + ctx->bdhc->loaded = TRUE; + } + } +} + +BDHC *BDHC_New(void) +{ + BDHC *bdhc = Heap_AllocFromHeap(HEAP_ID_FIELD, sizeof(BDHC)); + + bdhc->points = NULL; + bdhc->slopes = NULL; + bdhc->plates = NULL; + bdhc->strips = NULL; + bdhc->accessList = NULL; + bdhc->accessList = NULL; + bdhc->loaded = FALSE; + bdhc->stripsSize = 0; + + return bdhc; +} + +void BDHCLoader_Load(NARC *narc, const int bdhcSize, BDHC *bdhc, u8 *buffer) +{ + BDHCHeader *bdhcHeader = Heap_AllocFromHeapAtEnd(HEAP_ID_FIELD, sizeof(BDHCHeader)); + + BDHCLoader_LoadHeader(narc, bdhcHeader); + bdhc->stripsSize = bdhcHeader->stripsSize; + BDHCLoader_PrepareBuffers(bdhcHeader, bdhc, (void **)&buffer); + + BDHCLoader_LoadPoints(narc, bdhc, bdhcHeader); + BDHCLoader_LoadSlopes(narc, bdhc, bdhcHeader); + BDHCLoader_LoadHeights(narc, bdhc, bdhcHeader); + BDHCLoader_LoadPlates(narc, bdhc, bdhcHeader); + BDHCLoader_LoadStrips(narc, bdhc, bdhcHeader); + BDHCLoader_LoadAccessList(narc, bdhc, bdhcHeader); + + Heap_FreeToHeap(bdhcHeader); + bdhc->loaded = TRUE; +} + +void BDHC_Free(BDHC *bdhc) +{ + if (bdhc == NULL) { + return; + } + + Heap_FreeToHeap(bdhc); + bdhc = NULL; +} + +void BDHC_Reset(BDHC *bdhc) +{ + if (bdhc == NULL) { + return; + } + + bdhc->loaded = FALSE; + bdhc->points = NULL; + bdhc->slopes = NULL; + bdhc->plates = NULL; + bdhc->strips = NULL; + bdhc->accessList = NULL; +} + +SysTask *BDHCLoader_StartTask(NARC *landDataNARC, const int param1, BDHC *bdhc, int *param3, u8 **buffer, int *param5) +{ + BDHCLoaderTaskContext *ctx = Heap_AllocFromHeapAtEnd(HEAP_ID_FIELD, sizeof(BDHCLoaderTaskContext)); + + ctx->currentSubTask = BDHC_LOADER_SUBTASK_PREPARE_FILE_LOAD; + ctx->landDataNARC = landDataNARC; + ctx->unk_E4 = param1; + ctx->bdhc = bdhc; + ctx->unk_DC = param3; + ctx->forceExit = FALSE; + ctx->unk_C8 = FALSE; + ctx->unk_AC = 0; + ctx->buffer = *buffer; + ctx->unk_E8 = param5; + + return SysTask_Start(BDHCLoader_RunTask, (void *)ctx, 1); +} + +void BDHCLoader_ForceExitTask(SysTask *sysTask) +{ + BDHCLoaderTaskContext *ctx = SysTask_GetParam(sysTask); + ctx->forceExit = TRUE; +} + +void BDHCLoader_MarkBDHCNotLoaded(BDHC *bdhc) +{ + bdhc->loaded = FALSE; +} diff --git a/src/overlay005/ov5_021E779C.c b/src/overlay005/ov5_021E779C.c index e5a271679e..1578dce951 100644 --- a/src/overlay005/ov5_021E779C.c +++ b/src/overlay005/ov5_021E779C.c @@ -4,17 +4,17 @@ #include #include "field/field_system.h" +#include "overlay005/bdhc.h" +#include "overlay005/bdhc_loader.h" #include "overlay005/funcptr_ov5_021E9630.h" #include "overlay005/ov5_021D521C.h" #include "overlay005/ov5_021E15F4.h" #include "overlay005/ov5_021EEAC8.h" -#include "overlay005/ov5_021EEF34.h" #include "overlay005/ov5_021EF75C.h" #include "overlay005/struct_ov5_021D3CAC_decl.h" #include "overlay005/struct_ov5_021D5894.h" #include "overlay005/struct_ov5_021E1608_decl.h" #include "overlay005/struct_ov5_021EEB48_decl.h" -#include "overlay005/struct_ov5_021EF13C_decl.h" #include "overlay005/struct_ov5_021EF76C_decl.h" #include "easy3d.h" @@ -35,8 +35,8 @@ typedef struct { u16 unk_00[1024]; NNSG3dRenderObj unk_800; NNSG3dResFileHeader *unk_854; - u8 *unk_858; - UnkStruct_ov5_021EF13C *unk_85C; + u8 *bdhcBuffer; + BDHC *bdhc; int unk_860; BOOL unk_864; UnkStruct_ov5_021E1608 *unk_868; @@ -215,7 +215,7 @@ static void ov5_021E77E4(UnkStruct_ov5_021E8F60 *param0, const u8 param1) } if (param0->unk_04[param1].unk_00.unk_10.unk_04 != 0) { - ov5_021EF23C(param0->unk_04[param1].unk_00.unk_0C); + BDHCLoader_ForceExitTask(param0->unk_04[param1].unk_00.unk_0C); } param0->unk_04[param1].unk_00.unk_24 = 1; @@ -228,7 +228,7 @@ static void ov5_021E7814(UnkStruct_ov5_021E7814 *param0) } if (param0->unk_10.unk_04 != 0) { - ov5_021EF23C(param0->unk_0C); + BDHCLoader_ForceExitTask(param0->unk_0C); } param0->unk_10.unk_00 = 0; @@ -356,7 +356,7 @@ static void ov5_021E79A8(UnkStruct_ov5_021E8F60 *param0) param0->unk_84[v0]->unk_864 = 0; ov5_021EEB84(v0, param0->unk_00, (void **)&(param0->unk_84[v0]->unk_854)); - ov5_021EEB90(v0, param0->unk_00, (void **)&(param0->unk_84[v0]->unk_858)); + ov5_021EEB90(v0, param0->unk_00, (void **)&(param0->unk_84[v0]->bdhcBuffer)); if (param0->unk_FC == 0) { param0->unk_84[v0]->unk_868 = ov5_021E15F4(4); @@ -500,7 +500,7 @@ static void ov5_021E7C00(const u8 param0, UnkStruct_ov5_021EF76C *const param1, { param6->unk_10.unk_04++; - param6->unk_0C = ov5_021EF1F0(param5->unk_EC, v3.unk_08, param6->unk_00[param0]->unk_85C, ¶m6->unk_10.unk_04, ¶m6->unk_00[param0]->unk_858, ¶m6->unk_10.unk_00); + param6->unk_0C = BDHCLoader_StartTask(param5->unk_EC, v3.unk_08, param6->unk_00[param0]->bdhc, ¶m6->unk_10.unk_04, ¶m6->unk_00[param0]->bdhcBuffer, ¶m6->unk_10.unk_00); } } @@ -610,7 +610,7 @@ static void ov5_021E7E28(const int param0, const u8 param1, UnkStruct_ov5_021EF7 } { - ov5_021EF158(param7->unk_EC, v2.unk_08, param7->unk_84[param1]->unk_85C, param7->unk_84[param1]->unk_858); + BDHCLoader_Load(param7->unk_EC, v2.unk_08, param7->unk_84[param1]->bdhc, param7->unk_84[param1]->bdhcBuffer); } param7->unk_84[param1]->unk_860 = param0; @@ -691,7 +691,7 @@ static void ov5_021E7FF0(const int param0, const u8 param1, UnkStruct_ov5_021EF7 NARC_Seek(param7->unk_EC, v1.unk_04); { - ov5_021EF158(param7->unk_EC, v1.unk_08, param7->unk_84[param1]->unk_85C, param7->unk_84[param1]->unk_858); + BDHCLoader_Load(param7->unk_EC, v1.unk_08, param7->unk_84[param1]->bdhc, param7->unk_84[param1]->bdhcBuffer); } param7->unk_84[param1]->unk_860 = param0; @@ -943,7 +943,7 @@ static void ov5_021E8558(const int param0, const int param1, const u8 param2, co static void ov5_021E8614(const u8 param0, UnkStruct_ov5_021E8F60 *param1) { param1->unk_84[param0]->unk_864 = 0; - ov5_021EF1DC(param1->unk_84[param0]->unk_85C); + BDHC_Reset(param1->unk_84[param0]->bdhc); if (param1->unk_84[param0]->unk_868 != NULL) { ov5_021E1610( @@ -1441,9 +1441,9 @@ static void ov5_021E8E28(UnkStruct_ov5_021E8F60 *param0, const int param1, const ov5_021E7838(param0->unk_F8, param1, param2, param3, param4, param0->unk_B4, param0->unk_B8, param5, v1); for (v0 = 0; v0 < 4; v0++) { - param0->unk_84[v0]->unk_85C = ov5_021EF13C(); + param0->unk_84[v0]->bdhc = BDHC_New(); - ov5_021EF248(param0->unk_84[v0]->unk_85C); + BDHCLoader_MarkBDHCNotLoaded(param0->unk_84[v0]->bdhc); ov5_021E7E28(v1[v0], v0, param0->unk_AC, param0->unk_B0, param0->unk_B4, param0->unk_B8, ov5_021EFAC0(param0->unk_AC), param0); } } @@ -1457,7 +1457,7 @@ static void ov5_021E8ECC(UnkStruct_ov5_021E8F60 *param0, const int param1, const ov5_021E7838(param0->unk_F8, param1, param2, param3, param4, param0->unk_B4, param0->unk_B8, param5, v1); for (v0 = 0; v0 < 4; v0++) { - param0->unk_84[v0]->unk_85C = NULL; + param0->unk_84[v0]->bdhc = NULL; ov5_021E7F1C(v1[v0], v0, param0->unk_AC, param0->unk_B0, param0->unk_B4, param0->unk_B8, ov5_021EFAC0(param0->unk_AC), param0); } } @@ -1628,7 +1628,7 @@ void ov5_021E924C(UnkStruct_ov5_021E8F60 *param0) for (v0 = 0; v0 < 4; v0++) { param0->unk_84[v0]->unk_864 = 0; - ov5_021EF1D0(param0->unk_84[v0]->unk_85C); + BDHC_Free(param0->unk_84[v0]->bdhc); if (param0->unk_84[v0]->unk_868 != NULL) { ov5_021E1608(param0->unk_84[v0]->unk_868); @@ -1813,9 +1813,9 @@ BOOL ov5_021E9580(const UnkStruct_ov5_021E8F60 *param0, const int param1, const } } -const UnkStruct_ov5_021EF13C *ov5_021E9610(const UnkStruct_ov5_021E8F60 *param0, const u8 param1) +const BDHC *ov5_021E9610(const UnkStruct_ov5_021E8F60 *param0, const u8 param1) { - return param0->unk_84[param1]->unk_85C; + return param0->unk_84[param1]->bdhc; } u16 const *ov5_021E9624(const UnkStruct_ov5_021E8F60 *param0, const u8 param1) @@ -2085,7 +2085,7 @@ static void ov5_021E9A14(UnkStruct_ov5_021E8F60 *param0, const int param1, const ov5_021E7838(param0->unk_F8, param1, param2, param0->unk_100, param0->unk_108, param0->unk_B4, param0->unk_B8, param5, v1); for (v0 = 0; v0 < 4; v0++) { - param0->unk_84[v0]->unk_85C = NULL; + param0->unk_84[v0]->bdhc = NULL; ov5_021E9B70(v1[v0], v0, param0->unk_AC, param0->unk_B0, param0->unk_B4, param0->unk_B8, ov5_021EFAC0(param0->unk_AC), param0); } } @@ -2104,7 +2104,7 @@ void ov5_021E9AAC(UnkStruct_ov5_021E8F60 *param0, const int param1, const int pa void ov5_021E9B10(UnkStruct_ov5_021E8F60 *param0, int param1, int param2) { - param0->unk_84[param1]->unk_85C = NULL; + param0->unk_84[param1]->bdhc = NULL; ov5_021E9B70(param2, param1, param0->unk_AC, param0->unk_B0, param0->unk_B4, param0->unk_B8, ov5_021EFAC0(param0->unk_AC), param0); param0->unk_84[param1]->unk_864 = 0; } @@ -2234,7 +2234,7 @@ void ov5_021E9D3C(MapMatrix *param0, UnkStruct_ov5_021EF76C *param1, UnkStruct_o for (v0 = 0; v0 < 4; v0++) { v1[v0] = param3->unk_84[v0]->unk_860; - ov5_021EF248(param3->unk_84[v0]->unk_85C); + BDHCLoader_MarkBDHCNotLoaded(param3->unk_84[v0]->bdhc); } for (v0 = 0; v0 < 4; v0++) { @@ -2481,12 +2481,12 @@ void ov5_021EA5E0(UnkStruct_ov5_021E8F60 *param0, int param1, int param2) { param0->unk_84[param1]->unk_864 = 0; ov5_021EEB84(param1, param0->unk_00, (void **)&(param0->unk_84[param1]->unk_854)); - ov5_021EEB90(param1, param0->unk_00, (void **)&(param0->unk_84[param1]->unk_858)); + ov5_021EEB90(param1, param0->unk_00, (void **)&(param0->unk_84[param1]->bdhcBuffer)); param0->unk_84[param1]->unk_860 = -1; MI_CpuFillFast(param0->unk_84[param1]->unk_00, 0xffffffff, 2 * 32 * 32); - ov5_021EF248(param0->unk_84[param1]->unk_85C); + BDHCLoader_MarkBDHCNotLoaded(param0->unk_84[param1]->bdhc); ov5_021E7E28(param2, param1, param0->unk_AC, param0->unk_B0, param0->unk_B4, param0->unk_B8, ov5_021EFAC0(param0->unk_AC), param0); } diff --git a/src/overlay005/ov5_021EEC68.c b/src/overlay005/ov5_021EEC68.c index 5b529a49da..f77e75e24c 100644 --- a/src/overlay005/ov5_021EEC68.c +++ b/src/overlay005/ov5_021EEC68.c @@ -3,56 +3,54 @@ #include #include -#include "overlay005/struct_ov5_021EEC68.h" +#include "overlay005/bdhc.h" #include "overlay005/struct_ov5_021EED20.h" -#include "overlay005/struct_ov5_021EED38.h" -#include "overlay005/struct_ov5_021EF13C.h" #include "fx_util.h" -static BOOL ov5_021EED38(const UnkStruct_ov5_021EED38 *param0, const u16 param1, const fx32 param2, u16 *param3); +static BOOL ov5_021EED38(const BDHCStrip *param0, const u16 param1, const fx32 param2, u16 *param3); -static BOOL ov5_021EEC68(const UnkStruct_ov5_021EEC68 *param0, const UnkStruct_ov5_021EEC68 *param1, const UnkStruct_ov5_021EEC68 *param2) +static BOOL ov5_021EEC68(const BDHCPoint *param0, const BDHCPoint *param1, const BDHCPoint *param2) { const fx32 *v0, *v1, *v2, *v3; - if (param0->unk_00 <= param1->unk_00) { - v0 = ¶m0->unk_00; - v1 = ¶m1->unk_00; + if (param0->x <= param1->x) { + v0 = ¶m0->x; + v1 = ¶m1->x; } else { - v0 = ¶m1->unk_00; - v1 = ¶m0->unk_00; + v0 = ¶m1->x; + v1 = ¶m0->x; } - if (param0->unk_04 <= param1->unk_04) { - v2 = ¶m0->unk_04; - v3 = ¶m1->unk_04; + if (param0->y <= param1->y) { + v2 = ¶m0->y; + v3 = ¶m1->y; } else { - v2 = ¶m1->unk_04; - v3 = ¶m0->unk_04; + v2 = ¶m1->y; + v3 = ¶m0->y; } - if (((*v0 <= param2->unk_00) && (param2->unk_00 <= *v1)) && ((*v2 <= param2->unk_04) && (param2->unk_04 <= *v3))) { + if (((*v0 <= param2->x) && (param2->x <= *v1)) && ((*v2 <= param2->y) && (param2->y <= *v3))) { return 1; } return 0; } -static void ov5_021EECB8(const UnkStruct_ov5_021EF13C *param0, u16 param1, UnkStruct_ov5_021EEC68 *param2) +static void ov5_021EECB8(const BDHC *param0, u16 param1, BDHCPoint *param2) { - param2[0] = param0->unk_10[param0->unk_00[param1].unk_00]; - param2[1] = param0->unk_10[param0->unk_00[param1].unk_02]; + param2[0] = param0->points[param0->plates[param1].firstPointIndex]; + param2[1] = param0->points[param0->plates[param1].secondPointIndex]; } -static void ov5_021EECE8(const UnkStruct_ov5_021EF13C *param0, u16 param1, VecFx32 *param2) +static void ov5_021EECE8(const BDHC *param0, u16 param1, VecFx32 *param2) { - *param2 = param0->unk_14[param0->unk_00[param1].unk_04]; + *param2 = param0->slopes[param0->plates[param1].normalIndex]; } -static void ov5_021EED08(const UnkStruct_ov5_021EF13C *param0, u16 param1, fx32 *param2) +static void ov5_021EED08(const BDHC *param0, u16 param1, fx32 *param2) { - *param2 = param0->unk_04[param0->unk_00[param1].unk_06]; + *param2 = param0->heights[param0->plates[param1].heightIndex]; } static void ov5_021EED20(UnkStruct_ov5_021EED20 *param0) @@ -66,7 +64,7 @@ static void ov5_021EED20(UnkStruct_ov5_021EED20 *param0) } } -static BOOL ov5_021EED38(const UnkStruct_ov5_021EED38 *param0, const u16 param1, const fx32 param2, u16 *param3) +static BOOL ov5_021EED38(const BDHCStrip *param0, const u16 param1, const fx32 param2, u16 *param3) { int v0, v1; u32 v2; @@ -84,7 +82,7 @@ static BOOL ov5_021EED38(const UnkStruct_ov5_021EED38 *param0, const u16 param1, v2 = v1 / 2; do { - v3 = param0[v2].unk_00; + v3 = param0[v2].lowerBound; if (v3 > param2) { if (v1 - 1 > v0) { @@ -108,10 +106,10 @@ static BOOL ov5_021EED38(const UnkStruct_ov5_021EED38 *param0, const u16 param1, return 0; } -BOOL ov5_021EED9C(const fx32 param0, const fx32 param1, const fx32 param2, const UnkStruct_ov5_021EF13C *param3, fx32 *param4) +BOOL ov5_021EED9C(const fx32 param0, const fx32 param1, const fx32 param2, const BDHC *param3, fx32 *param4) { - UnkStruct_ov5_021EEC68 v0[2]; - UnkStruct_ov5_021EEC68 v1; + BDHCPoint v0[2]; + BDHCPoint v1; VecFx32 v2; fx32 v3, v4; BOOL v5; @@ -125,31 +123,31 @@ BOOL ov5_021EED9C(const fx32 param0, const fx32 param1, const fx32 param2, const u16 v19; u16 v20; u16 v21; - const UnkStruct_ov5_021EED38 *v22; + const BDHCStrip *v22; - if (param3->unk_18 == 0) { + if (param3->loaded == 0) { return 0; } v5 = 0; - v1.unk_00 = param1; - v1.unk_04 = param2; + v1.x = param1; + v1.y = param2; v10 = 0; ov5_021EED20(v15); - v11 = param3->unk_1C; - v22 = param3->unk_08; + v11 = param3->stripsSize; + v22 = param3->strips; - if (ov5_021EED38(v22, v11, v1.unk_04, &v20) == 0) { + if (ov5_021EED38(v22, v11, v1.y, &v20) == 0) { return 0; } - v21 = v22[v20].unk_04; - v18 = v22[v20].unk_06; + v21 = v22[v20].accessListElementCount; + v18 = v22[v20].accessListStartIndex; for (v6 = 0; v6 < v21; v6++) { - v7 = param3->unk_0C[v18 + v6]; + v7 = param3->accessList[v18 + v6]; ov5_021EECB8(param3, v7, v0); v5 = ov5_021EEC68(&v0[0], &v0[1], &v1); @@ -157,7 +155,7 @@ BOOL ov5_021EED9C(const fx32 param0, const fx32 param1, const fx32 param2, const ov5_021EECE8(param3, v7, &v2); ov5_021EED08(param3, v7, &v8); - v9 = -(FX_Mul(v2.x, v1.unk_00) + FX_Mul(v2.z, v1.unk_04) + v8); + v9 = -(FX_Mul(v2.x, v1.x) + FX_Mul(v2.z, v1.y) + v8); v9 = FX_Div(v9, v2.y); v15[v10].unk_00 = v9; v10++; diff --git a/src/overlay005/ov5_021EEF34.c b/src/overlay005/ov5_021EEF34.c deleted file mode 100644 index 9d040ae8c1..0000000000 --- a/src/overlay005/ov5_021EEF34.c +++ /dev/null @@ -1,307 +0,0 @@ -#include "overlay005/ov5_021EEF34.h" - -#include -#include - -#include "overlay005/struct_ov5_021EEC68.h" -#include "overlay005/struct_ov5_021EED38.h" -#include "overlay005/struct_ov5_021EF13C.h" -#include "overlay005/struct_ov5_021EF13C_sub1.h" - -#include "heap.h" -#include "narc.h" -#include "sys_task.h" -#include "sys_task_manager.h" - -typedef struct { - int unk_00; - int unk_04; - int unk_08; - int unk_0C; - int unk_10; - int unk_14; -} UnkStruct_ov5_021EEF98; - -typedef struct { - FSFile unk_00; - int unk_AC; - UnkStruct_ov5_021EEF98 unk_B0; - BOOL unk_C8; - u8 unk_CC; - u8 *unk_D0; - UnkStruct_ov5_021EF13C *unk_D4; - BOOL unk_D8; - int *unk_DC; - NARC *unk_E0; - int unk_E4; - int *unk_E8; -} UnkStruct_ov5_021EF05C; - -static void ov5_021EEF98(const UnkStruct_ov5_021EEF98 *param0, UnkStruct_ov5_021EF13C *param1, void **param2); -static void ov5_021EEFF8(NARC *param0, UnkStruct_ov5_021EF13C *param1, const UnkStruct_ov5_021EEF98 *param2); -static void ov5_021EF008(NARC *param0, UnkStruct_ov5_021EF13C *param1, const UnkStruct_ov5_021EEF98 *param2); -static void ov5_021EF01C(NARC *param0, UnkStruct_ov5_021EF13C *param1, const UnkStruct_ov5_021EEF98 *param2); -static void ov5_021EF02C(NARC *param0, UnkStruct_ov5_021EF13C *param1, const UnkStruct_ov5_021EEF98 *param2); -static void ov5_021EF03C(NARC *param0, UnkStruct_ov5_021EF13C *param1, const UnkStruct_ov5_021EEF98 *param2); -static void ov5_021EF04C(NARC *param0, UnkStruct_ov5_021EF13C *param1, const UnkStruct_ov5_021EEF98 *param2); - -static void ov5_021EEF34(NARC *param0, UnkStruct_ov5_021EEF98 *param1) -{ - u16 v0[4]; - - MI_CpuClear32(param1, sizeof(UnkStruct_ov5_021EEF98)); - - NARC_ReadFile(param0, 4, v0); - NARC_ReadFile(param0, 2, ¶m1->unk_00); - NARC_ReadFile(param0, 2, ¶m1->unk_04); - NARC_ReadFile(param0, 2, ¶m1->unk_08); - NARC_ReadFile(param0, 2, ¶m1->unk_0C); - NARC_ReadFile(param0, 2, ¶m1->unk_10); - NARC_ReadFile(param0, 2, ¶m1->unk_14); -} - -static void ov5_021EEF98(const UnkStruct_ov5_021EEF98 *param0, UnkStruct_ov5_021EF13C *param1, void **param2) -{ - void *v0; - int v1; - u8 v2; - - v1 = 0; - - v0 = &((u8 *)(*param2))[0]; - param1->unk_10 = v0; - v1 += (sizeof(UnkStruct_ov5_021EEC68) * param0->unk_00); - - v0 = &((u8 *)(*param2))[v1]; - param1->unk_14 = v0; - v1 += (sizeof(VecFx32) * param0->unk_04); - - v0 = &((u8 *)(*param2))[v1]; - param1->unk_04 = v0; - v1 += (sizeof(fx32) * param0->unk_08); - - v0 = &((u8 *)(*param2))[v1]; - param1->unk_00 = v0; - v1 += (sizeof(UnkStruct_ov5_021EF13C_sub1) * param0->unk_0C); - - v0 = &((u8 *)(*param2))[v1]; - param1->unk_08 = v0; - v1 += sizeof(UnkStruct_ov5_021EED38) * param0->unk_10; - - v0 = &((u8 *)(*param2))[v1]; - param1->unk_0C = v0; - v1 += sizeof(u16) * param0->unk_14; - - GF_ASSERT(v1 <= 0x9000); -} - -static void ov5_021EEFF8(NARC *param0, UnkStruct_ov5_021EF13C *param1, const UnkStruct_ov5_021EEF98 *param2) -{ - NARC_ReadFile(param0, sizeof(UnkStruct_ov5_021EEC68) * param2->unk_00, param1->unk_10); -} - -static void ov5_021EF008(NARC *param0, UnkStruct_ov5_021EF13C *param1, const UnkStruct_ov5_021EEF98 *param2) -{ - NARC_ReadFile(param0, sizeof(VecFx32) * param2->unk_04, param1->unk_14); -} - -static void ov5_021EF01C(NARC *param0, UnkStruct_ov5_021EF13C *param1, const UnkStruct_ov5_021EEF98 *param2) -{ - NARC_ReadFile(param0, sizeof(fx32) * param2->unk_08, param1->unk_04); -} - -static void ov5_021EF02C(NARC *param0, UnkStruct_ov5_021EF13C *param1, const UnkStruct_ov5_021EEF98 *param2) -{ - NARC_ReadFile(param0, sizeof(UnkStruct_ov5_021EF13C_sub1) * param2->unk_0C, param1->unk_00); -} - -static void ov5_021EF03C(NARC *param0, UnkStruct_ov5_021EF13C *param1, const UnkStruct_ov5_021EEF98 *param2) -{ - NARC_ReadFile(param0, sizeof(UnkStruct_ov5_021EED38) * param2->unk_10, param1->unk_08); -} - -static void ov5_021EF04C(NARC *param0, UnkStruct_ov5_021EF13C *param1, const UnkStruct_ov5_021EEF98 *param2) -{ - NARC_ReadFile(param0, sizeof(u16) * param2->unk_14, param1->unk_0C); -} - -static void ov5_021EF05C(SysTask *param0, void *param1) -{ - BOOL v0; - UnkStruct_ov5_021EF05C *v1; - - v1 = (UnkStruct_ov5_021EF05C *)param1; - - if (v1->unk_D8 == 1) { - v1->unk_CC = 2; - } - - switch (v1->unk_CC) { - case 0: - if (*v1->unk_E8) { - v0 = 0; - break; - } - - ov5_021EEF34(v1->unk_E0, &v1->unk_B0); - v1->unk_D4->unk_1C = v1->unk_B0.unk_10; - ov5_021EEF98(&v1->unk_B0, v1->unk_D4, (void **)&v1->unk_D0); - v0 = 1; - break; - case 1: - ov5_021EEFF8(v1->unk_E0, v1->unk_D4, &v1->unk_B0); - ov5_021EF008(v1->unk_E0, v1->unk_D4, &v1->unk_B0); - ov5_021EF01C(v1->unk_E0, v1->unk_D4, &v1->unk_B0); - ov5_021EF02C(v1->unk_E0, v1->unk_D4, &v1->unk_B0); - ov5_021EF03C(v1->unk_E0, v1->unk_D4, &v1->unk_B0); - ov5_021EF04C(v1->unk_E0, v1->unk_D4, &v1->unk_B0); - v0 = 1; - break; - case 2: - *v1->unk_DC = 0; - Heap_FreeToHeap((void *)param1); - SysTask_Done(param0); - return; - } - - if (v0 == 1) { - v1->unk_CC++; - - if (v1->unk_CC == 2) { - v1->unk_D4->unk_18 = 1; - } - } -} - -UnkStruct_ov5_021EF13C *ov5_021EF13C(void) -{ - UnkStruct_ov5_021EF13C *v0; - - v0 = Heap_AllocFromHeap(4, sizeof(UnkStruct_ov5_021EF13C)); - - v0->unk_10 = NULL; - v0->unk_14 = NULL; - v0->unk_00 = NULL; - v0->unk_08 = NULL; - v0->unk_0C = NULL; - v0->unk_0C = NULL; - v0->unk_18 = 0; - v0->unk_1C = 0; - - return v0; -} - -void ov5_021EF158(NARC *param0, const int param1, UnkStruct_ov5_021EF13C *param2, u8 *param3) -{ - if (1) { - char v0[256]; - UnkStruct_ov5_021EEF98 *v1; - - v1 = Heap_AllocFromHeapAtEnd(4, sizeof(UnkStruct_ov5_021EEF98)); - - ov5_021EEF34(param0, v1); - param2->unk_1C = v1->unk_10; - ov5_021EEF98(v1, param2, (void **)¶m3); - - ov5_021EEFF8(param0, param2, v1); - ov5_021EF008(param0, param2, v1); - ov5_021EF01C(param0, param2, v1); - ov5_021EF02C(param0, param2, v1); - ov5_021EF03C(param0, param2, v1); - ov5_021EF04C(param0, param2, v1); - - { - int v2; - - for (v2 = 0; v2 < v1->unk_00; v2++) { - (void)0; - } - - for (v2 = 0; v2 < v1->unk_04; v2++) { - (void)0; - } - - for (v2 = 0; v2 < v1->unk_08; v2++) { - (void)0; - } - - for (v2 = 0; v2 < v1->unk_0C; v2++) { - (void)0; - } - - for (v2 = 0; v2 < v1->unk_10; v2++) { - (void)0; - } - - for (v2 = 0; v2 < v1->unk_14; v2++) { - (void)0; - } - } - - Heap_FreeToHeap(v1); - param2->unk_18 = 1; - } -} - -void ov5_021EF1D0(UnkStruct_ov5_021EF13C *param0) -{ - if (param0 == NULL) { - return; - } - - Heap_FreeToHeap(param0); - param0 = NULL; -} - -void ov5_021EF1DC(UnkStruct_ov5_021EF13C *param0) -{ - if (param0 == NULL) { - return; - } - - param0->unk_18 = 0; - param0->unk_10 = NULL; - param0->unk_14 = NULL; - param0->unk_00 = NULL; - param0->unk_08 = NULL; - param0->unk_0C = NULL; -} - -SysTask *ov5_021EF1F0(NARC *param0, const int param1, UnkStruct_ov5_021EF13C *param2, int *param3, u8 **param4, int *param5) -{ - SysTask *v0; - UnkStruct_ov5_021EF05C *v1; - - v1 = Heap_AllocFromHeapAtEnd(4, sizeof(UnkStruct_ov5_021EF05C)); - - if (v1 == NULL) { - (void)0; - } - - v1->unk_CC = 0; - v1->unk_E0 = param0; - v1->unk_E4 = param1; - v1->unk_D4 = param2; - v1->unk_DC = param3; - v1->unk_D8 = 0; - v1->unk_C8 = 0; - v1->unk_AC = 0; - v1->unk_D0 = *param4; - v1->unk_E8 = param5; - - v0 = SysTask_Start(ov5_021EF05C, (void *)v1, 1); - return v0; -} - -void ov5_021EF23C(SysTask *param0) -{ - UnkStruct_ov5_021EF05C *v0; - - v0 = (UnkStruct_ov5_021EF05C *)SysTask_GetParam(param0); - v0->unk_D8 = 1; -} - -void ov5_021EF248(UnkStruct_ov5_021EF13C *param0) -{ - param0->unk_18 = 0; -} diff --git a/src/unk_02054D00.c b/src/unk_02054D00.c index 77ed34eec4..fee981366b 100644 --- a/src/unk_02054D00.c +++ b/src/unk_02054D00.c @@ -6,6 +6,7 @@ #include "struct_defs/struct_02055130.h" #include "field/field_system.h" +#include "overlay005/bdhc.h" #include "overlay005/ov5_021E15F4.h" #include "overlay005/ov5_021E779C.h" #include "overlay005/ov5_021EEC68.h" @@ -13,7 +14,6 @@ #include "overlay005/struct_ov5_021E1608_decl.h" #include "overlay005/struct_ov5_021E1890_decl.h" #include "overlay005/struct_ov5_021E8F60_decl.h" -#include "overlay005/struct_ov5_021EF13C_decl.h" #include "map_matrix.h" #include "map_tile_behavior.h" @@ -104,7 +104,7 @@ static const fx32 sub_02054D0C(const FieldSystem *fieldSystem, const fx32 param1 v1 = 0; } else { { - const UnkStruct_ov5_021EF13C *v21 = ov5_021E9610(v18, v8); + const BDHC *v21 = ov5_021E9610(v18, v8); v1 = ov5_021EED9C(v16, v11.x, v11.z, v21, &v11.y); } }