From e161db6f7178e702d1fa38f0cd476db285bfd2a3 Mon Sep 17 00:00:00 2001 From: CreateSource Date: Thu, 28 Dec 2023 00:24:06 -0500 Subject: [PATCH 1/3] extern --- include/game/hsfman.h | 96 ++++++++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 47 deletions(-) diff --git a/include/game/hsfman.h b/include/game/hsfman.h index 7cbb468d..a0cb9364 100644 --- a/include/game/hsfman.h +++ b/include/game/hsfman.h @@ -113,52 +113,50 @@ typedef struct light_data { GXColor color; } LightData; -void ClusterMotionExec(ModelData*); /* extern */ -void ClusterProc(ModelData*); /* extern */ -void EnvelopeProc(HsfData*); /* extern */ -void GXWaitDrawDone(); /* extern */ -void Hu3DAnimExec(); /* extern */ -void Hu3DCameraMotionExec(s16); /* extern */ -void Hu3DDraw(ModelData*, f32*, f32*); /* extern */ -void Hu3DDrawPost(); /* extern */ -void Hu3DDrawPreInit(); /* extern */ -void Hu3DMotionNext(s16); /* extern */ -void Hu3DShadowExec(); /* extern */ -void Hu3DSubMotionExec(s16); /* extern */ -void HuPerfBegin(s32); /* extern */ -void HuPerfEnd(s32); /* extern */ -void HuSprBegin(void); /* extern */ -void HuSprDispInit(void); /* extern */ -void HuSprExec(s16); /* extern */ -void HuSprFinish(void); /* extern */ -void InitVtxParm(HsfData*); /* extern */ -void ShapeProc(HsfData*); /* extern */ -void mtxRot(Mtx, f32, f32, f32); /* extern */ -void mtxScaleCat(Mtx, f32, f32, f32); /* extern */ -void mtxTransCat(Mtx, f32, f32, f32); -void Hu3DAnimInit(void); -void Hu3DFogClear(void); -void Hu3DMotionInit(void); -void Hu3DParManInit(void); -void Hu3DFogSet(f32, f32, u8, u8, u8); /* extern */ -void Hu3DMotionClusterSet(s16, s16); /* extern */ -void Hu3DMotionExec(s16, s16, f32, s32); -f32 Hu3DMotionMaxTimeGet(s16); /* extern */ -s16 Hu3DMotionModelCreate(s16); /* extern */ -void Hu3DMotionShapeSet(s16, s16); /* extern */ -void MakeDisplayList(s16, HsfData*); /* extern */ -void ClusterAdjustObject(HsfData*, HsfData*); /* extern */ -HsfObject* Hu3DObjDuplicate(HsfData*, u32); /* extern */ -void Hu3DAnimModelKill(s16); /* extern */ -void Hu3DGLightKill(s16); /* extern */ -void Hu3DLLightKill(s16, s16); /* extern */ -s32 Hu3DMotionKill(s16); -void Hu3DModelKill(s16); -void Hu3DParManAllKill(void); -f32 Hu3DMotionMotionMaxTimeGet(s16); -void Hu3DMotionStartEndSet(s16, f32, f32); -void Hu3DMotionTimeSet(s16, f32); -void GXInitSpecularDir(GXLightObj*, f32, f32, f32); +extern void ClusterMotionExec(ModelData*); /* extern */ +extern void ClusterProc(ModelData*); /* extern */ +extern void EnvelopeProc(HsfData*); /* extern */ +extern void GXWaitDrawDone(); /* extern */ +extern void Hu3DAnimExec(); /* extern */ +extern void Hu3DCameraMotionExec(s16); /* extern */ +extern void Hu3DDraw(ModelData*, f32*, f32*); /* extern */ +extern void Hu3DDrawPost(); /* extern */ +extern void Hu3DDrawPreInit(); /* extern */ +extern void Hu3DMotionNext(s16); /* extern */ +extern void Hu3DShadowExec(); /* extern */ +extern void Hu3DSubMotionExec(s16); /* extern */ +extern void HuPerfBegin(s32); /* extern */ +extern void HuPerfEnd(s32); /* extern */ +extern void HuSprBegin(void); /* extern */ +extern void HuSprDispInit(void); /* extern */ +extern void HuSprExec(s16); /* extern */ +extern void HuSprFinish(void); /* extern */ +extern void InitVtxParm(HsfData*); /* extern */ +extern void ShapeProc(HsfData*); /* extern */ +extern void mtxRot(Mtx, f32, f32, f32); /* extern */ +extern void mtxScaleCat(Mtx, f32, f32, f32); /* extern */ +extern void mtxTransCat(Mtx, f32, f32, f32); +extern void Hu3DAnimInit(void); +extern void Hu3DMotionInit(void); +extern void Hu3DParManInit(void); +extern void Hu3DMotionClusterSet(s16, s16); /* extern */ +extern void Hu3DMotionExec(s16, s16, f32, s32); +extern f32 Hu3DMotionMaxTimeGet(s16); /* extern */ +extern s16 Hu3DMotionModelCreate(s16); /* extern */ +extern void Hu3DMotionShapeSet(s16, s16); /* extern */ +extern void MakeDisplayList(s16, HsfData*); /* extern */ +extern void ClusterAdjustObject(HsfData*, HsfData*); /* extern */ +extern HsfObject* Hu3DObjDuplicate(HsfData*, u32); /* extern */ +extern void Hu3DAnimModelKill(s16); /* extern */ +extern void Hu3DGLightKill(s16); /* extern */ +extern void Hu3DLLightKill(s16, s16); /* extern */ +extern s32 Hu3DMotionKill(s16); +extern void Hu3DModelKill(s16); +extern void Hu3DParManAllKill(void); +extern f32 Hu3DMotionMotionMaxTimeGet(s16); +extern void Hu3DMotionStartEndSet(s16, f32, f32); +extern void Hu3DMotionTimeSet(s16, f32); +extern void GXInitSpecularDir(GXLightObj*, f32, f32, f32); void Hu3DInit(void); void Hu3DPreProc(void); @@ -250,8 +248,12 @@ void Hu3DReflectMapSet(AnimData* arg0); void Hu3DReflectNoSet(s16 arg0); void Hu3DFogSet(f32, f32, u8, u8, u8); void Hu3DFogClear(void); -//... +void Hu3DShadowCreate(f32, f32, f32); +void Hu3DShadowPosSet(Vec*, Vec*, Vec*); +void Hu3DShadowTPLvlSet(f32); void Hu3DShadowSizeSet(u16); +void Hu3DShadowExec(void); +s16 Hu3DProjectionCreate(void*, f32, f32, f32); void Hu3DProjectionKill(s16); void Hu3DProjectionPosSet(s16, Vec, Vec, Vec); void Hu3DProjectionTPLvlSet(s16, f32); From 4eb19eb24316bc1afcb8a8eec588550f2e302d00 Mon Sep 17 00:00:00 2001 From: CreateSource Date: Thu, 28 Dec 2023 01:31:14 -0500 Subject: [PATCH 2/3] main file complete! --- src/game/main.c | 130 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 src/game/main.c diff --git a/src/game/main.c b/src/game/main.c new file mode 100644 index 00000000..158ff24b --- /dev/null +++ b/src/game/main.c @@ -0,0 +1,130 @@ +#include "common.h" +#include "game/dvd.h" +#include "game/printfunc.h" +#include "game/object.h" +#include "game/wipe.h" +#include "game/init.h" +#include "game/process.h" +#include "game/pad.h" +#include "game/data.h" +#include "game/sprite.h" +#include "game/hsfformat.h" +#include "game/hsfman.h" +#include "game/perf.h" +#include "game/gamework.h" + +extern s32 ViGetRetraceCount(void); + +extern GXRenderModeObj* RenderMode; +extern FileListEntry _ovltbl[]; +s32 lbl_801D3A00; +s32 HuDvdErrWait; +u32 lbl_801D3A08; +u32 lbl_801D3A0C; +u32 lbl_801D3A10; +u32 lbl_801D3A14; +u32 lbl_801D3A18; +u32 lbl_801D3A1C; +u32 lbl_801D3A20; +u32 lbl_801D3A24; +u32 lbl_801D3A28; +u32 lbl_801D3A2C; +u32 lbl_801D3A30; +u32 lbl_801D3A34; +u32 lbl_801D3A38; +u32 lbl_801D3A3C; +u32 lbl_801D3A40; +u32 lbl_801D3A44; +u32 lbl_801D3A48; +u32 lbl_801D3A4C; +u32 lbl_801D3A50; +s32 lbl_801D3A54; + +void main(void) { + u32 sp14; + u32 sp10; + s32 spC; + s32 sp8; + s16 var_r31; + s32 temp_r30; + + HuDvdErrWait = 0; + lbl_801D3A00 = 0; + HuSysInit(&GXNtsc480IntDf); + HuPrcInit(); + HuPadInit(); + GWInit(); + pfInit(); + lbl_801D3A54 = 0; + HuSprInit(); + Hu3DInit(); + HuDataInit(); + HuPerfInit(); + HuPerfCreate("USR0", 0xFF, 0xFF, 0xFF, 0xFF); + HuPerfCreate("USR1", 0, 0xFF, 0xFF, 0xFF); + WipeInit(RenderMode); + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + GWPlayerCfg[var_r31].character = -1; + } + + omMasterInit(0, _ovltbl, 0x63, 1); + VIWaitForRetrace(); + + if (VIGetNextField() == 0) { + OSReport("VI_FIELD_BELOW\n"); + VIWaitForRetrace(); + } + while (1) { + temp_r30 = VIGetRetraceCount(); + if (HuSoftResetButtonCheck() != 0 || HuDvdErrWait != 0) { + continue; + } + HuPerfZero(); + HuPerfBegin(2); + HuSysBeforeRender(); + GXSetGPMetric(GX_PERF0_CLIP_VTX, GX_PERF1_VERTICES); + GXClearGPMetric(); + GXSetVCacheMetric(GX_VC_ALL); + GXClearVCacheMetric(); + GXClearPixMetric(); + GXClearMemMetric(); + HuPerfBegin(0); + Hu3DPreProc(); + HuPadRead(); + pfClsScr(); + HuPrcCall(1); + MGSeqMain(); + HuPerfBegin(1); + Hu3DExec(); + HuDvdErrorWatch(); + WipeExecAlways(); + HuPerfEnd(0); + pfDrawFonts(); + HuPerfEnd(1); + msmMusFdoutEnd(); + HuSysDoneRender(temp_r30); + GXReadGPMetric(&sp14, &sp10); + GXReadVCacheMetric(&lbl_801D3A50, &lbl_801D3A4C, &lbl_801D3A48); + GXReadPixMetric(&lbl_801D3A44, &lbl_801D3A40, &lbl_801D3A3C, &lbl_801D3A38, &lbl_801D3A34, &lbl_801D3A30); + GXReadMemMetric(&lbl_801D3A2C, &lbl_801D3A28, &lbl_801D3A24, &lbl_801D3A20, &lbl_801D3A1C, &lbl_801D3A18, &lbl_801D3A14, &lbl_801D3A10, &lbl_801D3A0C, &lbl_801D3A08); + HuPerfEnd(2); + lbl_801D3A54++; + } +} + +void HuSysVWaitSet(s16 arg0) { + minimumVcount = arg0; + minimumVcountf = arg0; +} + +s16 HuSysVWaitGet(void) { + return (s16) minimumVcount; +} + +s32 rnd_seed = 0x0000D9ED; + +s32 rand8(void) { + rnd_seed = (rnd_seed * 0x41C64E6D) + 0x3039; + return (u8)(((rnd_seed + 1) >> 0x10) & 0xFF); +} From b150e793362e9de112ef189dec91770f72ab3623 Mon Sep 17 00:00:00 2001 From: CreateSource Date: Thu, 28 Dec 2023 16:58:54 -0500 Subject: [PATCH 3/3] it builds --- configure.py | 2 +- src/game/main.c | 42 +++++++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/configure.py b/configure.py index 55289681..a6342ca9 100644 --- a/configure.py +++ b/configure.py @@ -230,7 +230,7 @@ config.libs = [ "cflags": cflags_game, "host": False, "objects": [ - Object(NonMatching, "game/main.c"), + Object(Matching, "game/main.c"), Object(Matching, "game/pad.c"), Object(Matching, "game/dvd.c"), Object(NonMatching, "game/data.c"), diff --git a/src/game/main.c b/src/game/main.c index 158ff24b..4d8fd5f7 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -17,28 +17,28 @@ extern s32 ViGetRetraceCount(void); extern GXRenderModeObj* RenderMode; extern FileListEntry _ovltbl[]; -s32 lbl_801D3A00; -s32 HuDvdErrWait; -u32 lbl_801D3A08; -u32 lbl_801D3A0C; -u32 lbl_801D3A10; -u32 lbl_801D3A14; -u32 lbl_801D3A18; -u32 lbl_801D3A1C; -u32 lbl_801D3A20; -u32 lbl_801D3A24; -u32 lbl_801D3A28; -u32 lbl_801D3A2C; -u32 lbl_801D3A30; -u32 lbl_801D3A34; -u32 lbl_801D3A38; -u32 lbl_801D3A3C; -u32 lbl_801D3A40; -u32 lbl_801D3A44; -u32 lbl_801D3A48; -u32 lbl_801D3A4C; -u32 lbl_801D3A50; s32 lbl_801D3A54; +u32 lbl_801D3A50; +u32 lbl_801D3A4C; +u32 lbl_801D3A48; +u32 lbl_801D3A44; +u32 lbl_801D3A40; +u32 lbl_801D3A3C; +u32 lbl_801D3A38; +u32 lbl_801D3A34; +u32 lbl_801D3A30; +u32 lbl_801D3A2C; +u32 lbl_801D3A28; +u32 lbl_801D3A24; +u32 lbl_801D3A20; +u32 lbl_801D3A1C; +u32 lbl_801D3A18; +u32 lbl_801D3A14; +u32 lbl_801D3A10; +u32 lbl_801D3A0C; +u32 lbl_801D3A08; +s32 HuDvdErrWait; +s32 lbl_801D3A00; void main(void) { u32 sp14;