steady progress on all fronts

completed .bss
new functions: Hu3DModelHiliteMapSet to Hu3DLLightSpotSet
This commit is contained in:
CreateSource 2023-12-12 23:15:29 -05:00
parent 86e2a041df
commit a12b53f9fb
7 changed files with 902 additions and 126 deletions

View file

@ -5426,6 +5426,7 @@ Hu3DCameraMtx = .bss:0x8018C89C; // type:object size:0x30
Hu3DCameraMtxXPose = .bss:0x8018C8CC; // type:object size:0x30 Hu3DCameraMtxXPose = .bss:0x8018C8CC; // type:object size:0x30
Hu3DGlobalLight = .bss:0x8018C8FC; // type:object size:0x220 data:2byte Hu3DGlobalLight = .bss:0x8018C8FC; // type:object size:0x220 data:2byte
Hu3DLocalLight = .bss:0x8018CB1C; // type:object size:0x8B4 data:2byte Hu3DLocalLight = .bss:0x8018CB1C; // type:object size:0x8B4 data:2byte
lbl_8018D39C = .bss:0x8018D39C; // type:object size:0x48
Hu3DMotion = .bss:0x8018D3D0; // type:object size:0x800 data:2byte Hu3DMotion = .bss:0x8018D3D0; // type:object size:0x800 data:2byte
Hu3DTexAnimData = .bss:0x8018DBD0; // type:object size:0x1400 data:2byte Hu3DTexAnimData = .bss:0x8018DBD0; // type:object size:0x1400 data:2byte
Hu3DTexScrData = .bss:0x8018EFD0; // type:object size:0x6C0 data:2byte Hu3DTexScrData = .bss:0x8018EFD0; // type:object size:0x6C0 data:2byte

View file

@ -8,9 +8,9 @@ void Hu3DLayerHookSet(short layer, void (*func)(short layer));
void Hu3D2Dto3D(Vec*, s32, Vec*); void Hu3D2Dto3D(Vec*, s32, Vec*);
void Hu3DModelLightInfoSet(s32, s32); void Hu3DModelLightInfoSet(s32, s32);
void Hu3DBGColorSet(u8, u8, u8); void Hu3DBGColorSet(u8, u8, u8);
void Hu3DCameraCreate(s16); void Hu3DCameraCreate(s32);
void Hu3DCameraPerspectiveSet(s16, f32, f32, f32, f32); void Hu3DCameraPerspectiveSet(s32, f32, f32, f32, f32);
void Hu3DCameraViewportSet(s16, f32, f32, f32, f32, f32, f32); void Hu3DCameraViewportSet(s32, f32, f32, f32, f32, f32, f32);
void HuAudFadeOut(int arg0); void HuAudFadeOut(int arg0);
void WipeCreate(char dir, char type, short duration); void WipeCreate(char dir, char type, short duration);

View file

@ -2,6 +2,7 @@
#define _GAME_HSFFORMAT_H #define _GAME_HSFFORMAT_H
#include "dolphin.h" #include "dolphin.h"
#include "game/hsfanim.h"
#define HSF_OBJ_NULL1 0 #define HSF_OBJ_NULL1 0
#define HSF_OBJ_REPLICA 1 #define HSF_OBJ_REPLICA 1
@ -151,13 +152,15 @@ typedef struct hsf_face {
typedef struct hsf_const_data { typedef struct hsf_const_data {
u32 flags; u32 flags;
u8 unk4[64]; s16 hook;
u8 unk6[0x3A];
AnimData *hilite_map;
} HsfConstData; } HsfConstData;
typedef struct hsf_transform { typedef struct hsf_transform {
HsfVector3f pos; Vec pos;
HsfVector3f rot; Vec rot;
HsfVector3f scale; Vec scale;
} HsfTransform; } HsfTransform;
typedef struct hsf_cenv_single { typedef struct hsf_cenv_single {
@ -273,12 +276,24 @@ typedef struct hsf_object_data {
void *file[2]; void *file[2];
} HsfObjectData; } HsfObjectData;
typedef struct hsf_camera {
HsfVector3f target;
HsfVector3f pos;
float aspect_dupe;
float fov;
float near;
float far;
} HsfCamera;
typedef struct hsf_object { typedef struct hsf_object {
char *name; char *name;
s32 type; u32 type;
HsfConstData *constData; HsfConstData *constData;
u32 flags; u32 flags;
HsfObjectData data; union {
HsfObjectData data;
HsfCamera camera;
};
} HsfObject; } HsfObject;
typedef struct hsf_skeleton { typedef struct hsf_skeleton {

View file

@ -2,15 +2,17 @@
#define _GAME_HSFMAN_H #define _GAME_HSFMAN_H
#include "common.h" #include "common.h"
#include "math.h"
#include "game/memory.h" #include "game/memory.h"
#include "game/hsfanim.h" #include "game/hsfanim.h"
#include "game/hsfformat.h" #include "game/hsfformat.h"
#include "game/sprite.h" #include "game/sprite.h"
#include "game/init.h"
typedef struct model_data { typedef struct model_data {
u8 unk_00; u8 unk_00;
u8 unk_01; u8 unk_01;
s8 unk_02; u8 unk_02;
s8 unk_03; s8 unk_03;
s8 unk_04; s8 unk_04;
s8 unk_05; s8 unk_05;
@ -45,38 +47,58 @@ typedef struct model_data {
Vec scale; Vec scale;
Mtx unk_F0; Mtx unk_F0;
ParticleData *unk_120; ParticleData *unk_120;
} ModelData; } ModelData; // sizeof 0x124
typedef struct camera_data {
typedef struct ThreeDCameraStruct { f32 fov;
f32 unk_00; f32 near;
f32 start; f32 far;
f32 end; f32 aspect;
char unk_04[0x4C]; f32 aspect_dupe;
} ThreeDCameraStruct; Vec pos;
Vec up;
Vec target;
s16 scissor_x;
s16 scissor_y;
s16 scissor_w;
s16 scissor_h;
f32 viewport_x;
f32 viewport_y;
f32 viewport_w;
f32 viewport_h;
f32 near_z;
f32 far_z;
} CameraData; // sizeof 0x58
typedef struct ThreeDProjectionStruct { typedef struct ThreeDProjectionStruct {
s8 unk_00; u8 unk_00;
char unk_01[0x3]; char unk_01[0x3];
AnimData *unk_04; void *unk_04;
char unk_08[0xC]; Vec unk_08;
Point3d unk_14; Point3d unk_14;
Point3d unk_20; Point3d unk_20;
Vec unk_2C; Vec unk_2C;
Mtx unk_38; Mtx unk_38;
char unk_68[0x30]; Mtx unk_68;
} ThreeDProjectionStruct; } ThreeDProjectionStruct; // sizeof 0x98
typedef struct shadow_data { typedef struct shadow_data {
char unk_00[0x2]; char unk_00[0x2];
u16 unk_02; u16 unk_02;
void*unk_04; void*unk_04;
char unk_08[0x90]; char unk_08[0x90];
} ShadowData; } ShadowData; // sizeof 0x98
typedef struct motion_data { typedef struct motion_data {
s16 unk_00; s16 unk_00;
s16 unk_02; s16 unk_02;
HsfData *unk_04; HsfData *unk_04;
} MotionData; } MotionData;
typedef struct light_data { typedef struct light_data {
char unk_00[0x44]; s16 unk_00;
s16 unk_02;
f32 unk_04;
char unk_08[0x14];
Vec unk_1C;
Vec unk_28;
Vec unk_34;
GXColor color;
} LightData; } LightData;
void ClusterMotionExec(ModelData*); /* extern */ void ClusterMotionExec(ModelData*); /* extern */
@ -85,7 +107,6 @@ void EnvelopeProc(HsfData*); /* extern */
void GXWaitDrawDone(); /* extern */ void GXWaitDrawDone(); /* extern */
void Hu3DAnimExec(); /* extern */ void Hu3DAnimExec(); /* extern */
void Hu3DCameraMotionExec(s16); /* extern */ void Hu3DCameraMotionExec(s16); /* extern */
void Hu3DCameraSet(s16, void*); /* extern */
void Hu3DDraw(ModelData*, f32*, f32*); /* extern */ void Hu3DDraw(ModelData*, f32*, f32*); /* extern */
void Hu3DDrawPost(); /* extern */ void Hu3DDrawPost(); /* extern */
void Hu3DDrawPreInit(); /* extern */ void Hu3DDrawPreInit(); /* extern */
@ -105,7 +126,6 @@ void mtxScaleCat(Mtx, f32, f32, f32); /* extern */
void mtxTransCat(Mtx, f32, f32, f32); void mtxTransCat(Mtx, f32, f32, f32);
void Hu3DAnimInit(void); void Hu3DAnimInit(void);
void Hu3DFogClear(void); void Hu3DFogClear(void);
void Hu3DLighInit(void);
void Hu3DMotionInit(void); void Hu3DMotionInit(void);
void Hu3DParManInit(void); void Hu3DParManInit(void);
void Hu3DFogSet(f32, f32, u8, u8, u8); /* extern */ void Hu3DFogSet(f32, f32, u8, u8, u8); /* extern */
@ -125,6 +145,9 @@ s32 Hu3DMotionKill(s16);
void Hu3DModelKill(s16); void Hu3DModelKill(s16);
void Hu3DParManAllKill(void); void Hu3DParManAllKill(void);
s32 MakeObjectName(s32); s32 MakeObjectName(s32);
f32 Hu3DMotionMotionMaxTimeGet(s16);
void Hu3DMotionStartEndSet(s16, f32, f32);
void Hu3DMotionTimeSet(s16, f32);
void Hu3DInit(void); void Hu3DInit(void);
void Hu3DPreProc(void); void Hu3DPreProc(void);
@ -153,6 +176,41 @@ void Hu3DModelClusterAttrReset(s16, s16, s32);
void Hu3DModelCameraSet(s16, u16); void Hu3DModelCameraSet(s16, u16);
void Hu3DModelLayerSet(s16, s16); void Hu3DModelLayerSet(s16, s16);
HsfObject* Hu3DModelObjPtrGet(s16, s32); HsfObject* Hu3DModelObjPtrGet(s16, s32);
void Hu3DModelTPLvlSet(s16, f32);
void Hu3DModelHiliteMapSet(s16, AnimData*);
void Hu3DModelShadowSet(s16);
void Hu3DModelShadowReset(s16);
void Hu3DModelShadowDispOn(s16);
void Hu3DModelShadowDispOff(s16);
void Hu3DModelShadowMapSet(s16);
void Hu3DModelShadowMapObjSet(s16, s32);
void Hu3DModelAmbSet(s16, f32, f32, f32);
void Hu3DModelHookSet(s16, s32, s16);
void Hu3DModelHookReset(s16);
void Hu3DModelHookObjReset(s16, s32);
void Hu3DModelProjectionSet(s16, s16);
void Hu3DModelProjectionReset(s16, s16);
void Hu3DModelHiliteTypeSet(s16, s16);
void Hu3DModelReflectTypeSet(s16, s16);
void Hu3DCameraCreate(s32);
void Hu3DCameraPerspectiveSet(s32, f32, f32, f32, f32);
void Hu3DCameraViewportSet(s32, f32, f32, f32, f32, f32, f32);
void Hu3DCameraScissorSet(s32, s32, s32, s32, s32);
void Hu3DCameraPosSet(s32, f32, f32, f32, f32, f32, f32, f32, f32, f32);
void Hu3DCameraPosSetV(s32, Vec, Vec, Vec);
void Hu3DCameraKill(s32);
void Hu3DCameraAllKill(void);
void Hu3DCameraSet(s32, Mtx);
BOOL Hu3DModelCameraInfoSet(s16, u16);
s16 Hu3DModelCameraCreate(s16, u16);
void Hu3DCameraMotionOn(s16, s8);
void Hu3DCameraMotionStart(s16, u16);
void Hu3DCameraMotionOff(s16);
void Hu3DLighInit(void);
void Hu3DGLightCreate(f32, f32, f32, f32, f32, f32, u8, u8, u8);
s16 Hu3DGLightCreateV(Vec*, Vec*, GXColor*);
void Hu3DLLightCreate(s16, f32, f32, f32, f32, f32, f32, u8, u8, u8);
s16 Hu3DLLightCreateV(s16, Vec*, Vec*, GXColor*);
//... //...
void Hu3DShadowSizeSet(u16); void Hu3DShadowSizeSet(u16);
void Hu3DProjectionKill(s16); void Hu3DProjectionKill(s16);
@ -161,9 +219,6 @@ void Hu3DProjectionTPLvlSet(s16, f32);
void Hu3DMipMapSet(char*, s16, s32, f32); void Hu3DMipMapSet(char*, s16, s32, f32);
extern MotionData Hu3DMotion[0x100]; extern MotionData Hu3DMotion[0x100];
extern f32 lbl_801D4AB0;
extern f32 lbl_801D4AB4;
extern f32 lbl_801D4AB8;
extern f32 lbl_801D4AFC; extern f32 lbl_801D4AFC;
extern GXColor lbl_801D6BE0; extern GXColor lbl_801D6BE0;
extern u32 totalMatCnt; extern u32 totalMatCnt;

View file

@ -1,6 +1,8 @@
#ifndef _MATH_H #ifndef _MATH_H
#define _MATH_H #define _MATH_H
#define M_PI 3.141592653589793
extern inline float sqrtf(float x) extern inline float sqrtf(float x)
{ {
static const double _half=.5; static const double _half=.5;

View file

@ -4,8 +4,6 @@
#include "dolphin.h" #include "dolphin.h"
#include "common_structs.h" #include "common_structs.h"
#define M_PI 3.141592653589793
extern u16 HuPadBtnDown[4]; extern u16 HuPadBtnDown[4];
extern u8 HuPadDStk[4]; extern u8 HuPadDStk[4];

File diff suppressed because it is too large Load diff