commit
9a763f3334
3 changed files with 180 additions and 48 deletions
|
|
@ -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"),
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
130
src/game/main.c
Normal file
130
src/game/main.c
Normal file
|
|
@ -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_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;
|
||||
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);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue