a bunch of graphics related functions and data importation (#31)

* graphics?

* more stuff

* missed one

* headers

* data import and such
This commit is contained in:
petrie911
2023-11-26 15:27:05 -06:00
committed by GitHub
parent d6fc56adc0
commit 0205789a28
24 changed files with 2901 additions and 184 deletions
+3 -20
View File
@@ -10,6 +10,8 @@ void Controller_ReadData(void);
void Save_ReadData(void);
void Save_WriteData(void);
void Controller_Rumble(void);
s32 Lib_vsPrintf(char* dst, const char* fmt, va_list args);
void Lib_Perspective(Gfx** dList);
void Lib_Ortho(Gfx** dList);
void Lib_DmaRead(void* src, void* dst, s32 size);
@@ -117,7 +119,7 @@ f32 func_8001FBC8(f32);
void RdRam_CheckIPL3(void);
void Mio0_Decompress(void* header, u8* dst);
s32 vsprintf(char* dst, char* fmt, va_list args);
s32 vsprintf(char* dst, const char* fmt, va_list args);
f32 Math_FAtanF(f32);
f32 Math_FAtan2F(f32, f32);
@@ -257,25 +259,6 @@ s32 func_8009092C(Object_2F4*);
s32 func_800915FC(Object_2F4*);
void func_80092D48(Object_2F4 *);
void func_80094D20(f32, f32);
s32 func_800998FC(Vec3f*, Vec3f*, s32, s32, Vec3f*, Vec3f*);
void func_8009A72C(s32, void*, Vec3f*, OverrideLimbDraw, PostLimbDraw, s32*, Matrix*);
void func_8009AA20(void*, s32, Vec3f*);
s16 func_8009ACDC(s16 *);
f32 func_8009BC2C(f32*, f32, f32, f32, f32);
f32 func_8009BD38(f32*, f32, f32, f32, f32);
void func_8009C320(Gfx **, void *, void *, u32, u32, f32, f32, f32, f32);
void func_8009D0BC(Gfx**, void*, void*, u32, u32, f32, f32, f32, f32);
void func_8009D418(Gfx**, void*, u32, u32, f32, f32, f32, f32);
void func_8009D994(Gfx**, void*, u32, u32, f32, f32, f32, f32);
void func_8009E4B0(Gfx**, void*, u32, u32, f32, f32, f32, f32);
void func_8009F574(Gfx **, s32, s32, s32, s32, u8, u8, u8, u8);
void func_8009F6CC(Vec3f*, f32, f32, f32);
f32 func_8009F768(f32);
void func_8009FC0C(s32, s32, s32);
void func_8009FEA0(s32, s32, s32);
void func_800A0094(s32, s32, f32, f32, u8 *);
void func_800A1200(s32, s32, f32, f32, char*);
s32 func_800A13EC(s8*);
void func_800A18B0(void);
void func_800A1980(void);
s32 func_800A1B6C(void);
+90
View File
@@ -1,9 +1,25 @@
#ifndef GFX_H
#define GFX_H
#include "libultra/ultra64.h"
#include "sf64math.h"
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
#define RGBA16_RED(color16) (((color16) >> 0xB) & 0x1F)
#define RGBA16_GRN(color16) (((color16) >> 6) & 0x1F)
#define RGBA16_BLU(color16) (((color16) >> 1) & 0x1F)
// unclear what the right macro for this is
// #define RGBA16_PACK(r, g, b, a) (((u16) ((r) * 0x800) & 0xF800) | ((u16) ((g) * 0x40) & 0x7C0) | ((u16) ((b) * 2) & 0x3E) | ((a) & 1))
#define gSPSetOtherModeHi(pkt, settings) gSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_BLENDMASK, 24, settings)
#define gsSPSetOtherModeHi(settings) gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_BLENDMASK, 24, settings)
#define VTX(x,y,z,s,t,crnx,cgny,cbnz,a) { { { x, y, z }, 0, { s, t }, { crnx, cgny, cbnz, a } } }
#define VTX_T(x,y,z,s,t,cr,cg,cb,a) { { x, y, z }, 0, { s, t }, { cr, cg, cb, a } }
typedef enum SetupDL {
/* 0x00 */ SETUPDL_0,
/* 0x01 */ SETUPDL_1,
@@ -98,6 +114,80 @@ typedef enum SetupDL {
extern Gfx gSetupDLs[SETUPDL_MAX][9]; // 0x800D31B0
typedef s32 (*OverrideLimbDraw)(s32, Gfx**, Vec3f*, Vec3f*, void*);
typedef void (*PostLimbDraw)(s32, Vec3f*, void*);
typedef struct {
/* 0x0 */ u16 xLen;
/* 0x2 */ u16 x;
/* 0x4 */ u16 yLen;
/* 0x6 */ u16 y;
/* 0x8 */ u16 zLen;
/* 0xA */ u16 z;
} JointKey; // size = 0xC
typedef struct {
/* 0x00 */ s16 frameCount;
/* 0x02 */ s16 limbCount;
/* 0x04 */ u16* frameData;
/* 0x08 */ JointKey* jointKey;
} AnimationHeader; // size = 0xC
typedef struct Limb {
/* 0x000 */ Gfx* dList;
/* 0x004 */ Vec3f trans;
/* 0x010 */ Vec3s rot;
/* 0x018 */ struct Limb* sibling;
/* 0x01C */ struct Limb* child;
} Limb; // size = 0x20
char* func_80099980(char *buf, s32 fill, s32 len);
s32 func_800999D8(const char *fmt, ...);
void func_80099A2C(void *texture, s32 width, s32 height, u8 mode);
void func_80099E28(void *dst, void *src, u8 mode);
s32 func_8009A400(Limb* limb, Limb** skeleton);
void func_8009A440(s32 mode, Limb * limb, Limb* *skeleton, Vec3f* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, void* data);
void func_8009A72C(s32 mode, Limb** skeletonSegment, Vec3f* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, void* data, Matrix* transform);
s16 func_8009AA20(AnimationHeader *animationSegmemt, s32 frame, Vec3f *frameTable);
s16 func_8009ACDC(AnimationHeader *animationSegment);
void func_8009AD18(Gfx* dList, s32 len, Vec3f *min, Vec3f *max, s32 *vtxFound, s32 *vtxCount, Vtx* *vtxList);
void func_8009B74C(Gfx *dList, s32 len, Vec3f *min, Vec3f *max);
void func_8009B784(Limb **skeletonSegment, AnimationHeader *animationSegment, s32 frame, Vec3f *min, Vec3f* max);
f32 func_8009BC2C(f32 *value, f32 target, f32 scale, f32 maxStep, f32 minStep);
f32 func_8009BD38(f32 *angle, f32 target, f32 scale, f32 maxStep, f32 minStep);
void func_8009BEEC(Vec3f *src, Vec3f *dst, s32 mode, s32 count, f32 scale, f32 maxStep, f32 minStep);
s32 func_8009C124(Vec3f *pos, Vec3f *target, Vec3f *rot, f32 stepSize, f32 scaleTurn, f32 maxTurn, f32 dist);
void func_8009C320(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009C674(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009C9C8(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009CD3C(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009D0BC(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009D418(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009D6CC(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009D994(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009DC4C(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009DF14(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009E1E8(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009E4B0(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009E784(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009EA38(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009ED04(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009EFDC(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009F2C0(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void func_8009F574(Gfx **gfxPtr, s32 ulx, s32 uly, s32 lrx, s32 lry, u8 r, u8 g, u8 b, u8 a);
void func_8009F6CC(Vec3f *step, f32 xRot, f32 yRot, f32 stepsize);
f32 func_8009F768(f32 rAngle);
s32* func_8009F7B4(Gfx **gfxPtr, u8 width, u8 height);
void func_8009FC0C(s32 xPos, s32 yPos, s32 number);
void func_8009FEA0(s32 xPos, s32 yPos, s32 number);
void func_800A0094(s32 xPos, s32 yPos, f32 xScale, f32 yScale, char *text);
s32 func_800A06F8(char *text);
void func_800A100C(s32 xPos, s32 yPos, s32 number);
void func_800A1200(s32 xPos, s32 yPos, f32 xScale, f32 yScale, char *text);
s32 func_800A13EC(char *text);
void func_800A1540(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
void func_800A1558(f32 weight, u16 size, void *src1, void *src2, void *dst);
void func_800B8DD0(Gfx** gfxP, s16 i);
void func_800B8E14(Gfx** gfxP, s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void func_800B8F18(void);
+14 -16
View File
@@ -35,29 +35,27 @@ void func_8008DC34(void);
void func_8008E5E8(void);
s32 func_80090E8C(Object_2F4* arg0);
s32 func_800910C0(Object_2F4* arg0);
void func_8009D0BC(Gfx**, void*, void*, u32, u32, f32, f32, f32, f32);
void func_8009E1E8(Gfx**, u16*, s32, s32, f32, f32, f32, f32);
// Weird addresses, assets maybe?
extern u16 D_1000E80[];
extern u16 D_1002280[];
extern u16 D_10030D0[];
extern s32 D_1011280;
extern s32 D_10116A0;
extern s32 D_10116B0;
extern s32 D_1011730;
extern s32 D_1011AC0;
extern s32 D_1011B90;
extern s32 D_1011BB0;
extern s32 D_1011C80;
extern s32 D_1011CA0;
extern s32 D_1011D70;
extern s32 D_1011D90;
extern s32 D_1011E60;
extern s32 D_1011280[];
extern s32 D_10116A0[];
extern s32 D_10116B0[];
extern s32 D_1011730[];
extern s32 D_1011AC0[];
extern s32 D_1011B90[];
extern s32 D_1011BB0[];
extern s32 D_1011C80[];
extern s32 D_1011CA0[];
extern s32 D_1011D70[];
extern s32 D_1011D90[];
extern s32 D_1011E60[];
extern s32 D_1013170[];
extern s32 D_1013570[];
extern s32 D_1013580;
extern s32 D_1013700;
extern s32 D_1013580[];
extern s32 D_1013700[];
extern s32 D_20031B0[];
extern s32 D_2010A30[];
extern u16 D_3000B20[];
+6
View File
@@ -9,6 +9,12 @@ typedef struct {
/* 0x8 */ f32 z;
} Vec3f; // size = 0xC
typedef struct {
/* 0x0 */ s16 x;
/* 0x2 */ s16 y;
/* 0x4 */ s16 z;
} Vec3s; // size = 0x6;
typedef union {
float m[4][4];
struct {
+4 -6
View File
@@ -6,9 +6,6 @@
#define UNK_TYPE s32
typedef s32 (*OverrideLimbDraw)(s32, Gfx**, Vec3f*, Vec3f*, s32*);
typedef void (*PostLimbDraw)(s32, Vec3f*, s32*);
typedef struct {
s32 unk0;
u16* unk4;
@@ -43,8 +40,9 @@ typedef struct {
/* 0x30 */ s32 value;
} TimerTask; // size = 0x38, 0x8 aligned
typedef struct {
typedef union {
u16 data[240 * 320];
u16 array[240][320];
} FrameBuffer; // size = 0x25800
typedef struct {
@@ -84,8 +82,8 @@ typedef struct{
typedef struct {
/* 0x00 */ union {
SaveData data;
u8 raw[sizeof(SaveData)];
u8 raw[sizeof(SaveData)];
SaveData data;
};
/* 0xFE */ u16 checksum;
} Save; // size = 0x100
+11 -15
View File
@@ -2,6 +2,7 @@
#define VARIABLES_H
#include "structs.h"
#include "gfx.h"
extern u64 __rspboot_start[];
extern u64 __rspboot_end[];
@@ -100,7 +101,7 @@ extern Gfx* gMasterDisp;
extern Gfx* gUnkDisp2;
extern Lightsn* gLight;
extern FrameBuffer *gFrameBuffer;
extern s32* D_80137E74;
extern u16* D_80137E74;
// some sort of struct?
extern u8 D_80137E78;
@@ -179,7 +180,7 @@ extern Gfx* D_800CFC40[];
extern Gfx* D_800CFC50[];
extern Gfx* D_800CFC64[];
extern Gfx* D_800CFC7C[];
extern f32 D_800CFC98[];
extern f32 D_800CFCA0[];
extern Vec3f D_800CFCC0; // initializer in sf_5A240
extern f32 D_800CFCCC[];
extern Vec3f D_800CFCEC;
@@ -189,8 +190,8 @@ extern Vec3f D_800CFD10;
extern Vec3f D_800CFD1C;
extern Vec3f D_800CFD28;
extern Vec3f D_800CFD34;
extern ObjectInit* D_800CFDA0[];
extern Gfx D_800CFD80[];
extern ObjectInit* D_800CFDA0[];
extern s32 D_800CFDF4[];
extern f32 D_800CFE5C[];
extern Vec3f D_800CFEC4[6];
@@ -218,13 +219,9 @@ extern s32 D_800D2884[];
extern s32 D_800D2894[];
extern s32 D_800D28A4[];
extern s32 D_800D28B4[];
extern u8 D_800D2908;
extern u8 D_800D290C;
extern u8 D_800D2910;
extern u8 D_800D2914;
extern u8 D_800D3180[0x1E];
extern s32 D_800D4A70;
extern Save D_800D4D10;
extern Save gDefaultSave;
extern s32 D_8015F924;
extern s32 D_8015F928;
@@ -266,6 +263,7 @@ extern s32 D_801617B0;
extern s32 D_801617B4;
extern s32 D_801617B8;
extern s32 D_80161810[];
extern char D_801619A0[100];
extern f32 D_80161A10;
extern f32 D_80161A14;
extern u8 D_80161A2C;
@@ -474,6 +472,7 @@ extern u16 D_Tex_800D99F8[];
extern u16 D_Tex_800DBA20[];
extern Gfx D_Gfx_800DBAA0[];
extern Gfx D_Gfx_800DAC20[];
extern Gfx D_Gfx_800D9688[];
extern DmaEntry gDmaTable[]; // 178A70
extern u8 D_80179010[][16 * 13 / 2];
@@ -698,7 +697,6 @@ extern Gfx D_60148D0[];
extern Gfx D_60148B0[];
extern Gfx D_601AE40[];
extern Gfx D_6023AC0[];
extern s16 D_6029528[];
extern Gfx D_602A720[];
extern Gfx D_602DA20[];
extern Gfx D_602E380[];
@@ -724,7 +722,7 @@ extern Gfx D_6036840[];
extern Gfx D_6036CD0[];
extern Gfx D_6022920[];
extern Gfx D_6020B40[];
extern UNK_TYPE D_6029674;
extern Limb* D_6029674[];
extern ObjectInit* D_6010088[];
extern u8 D_6010090[];
extern u8 D_60106B0[];
@@ -732,13 +730,13 @@ extern u8 D_6010FA0[];
extern u8 D_6013470[];
extern u16 D_601B4B0[];
extern Gfx D_601D1F0[];
extern AnimationHeader D_6029528;
extern u8 D_601D750[];
extern u16 D_601DB50[];
extern s16 D_6029528[];
extern ObjectInit* D_602B148[];
extern ObjectInit* D_602F18C[];
extern UNK_TYPE D_601E8C4;
extern UNK_TYPE D_601E9D0;
extern AnimationHeader D_601E8C4;
extern Limb* D_601E9D0[];
extern Gfx D_6018C00[];
extern Gfx D_6018D40[];
extern Gfx D_6024B60[];
@@ -763,7 +761,6 @@ extern u8 D_8003A70[];
extern u8 D_8003AB8[];
extern u8 D_8003AE0[];
extern u8 D_8003B28[];
extern u8 D_800D070[];
extern u8 D_800D170[];
@@ -772,7 +769,6 @@ extern Gfx D_9010FD0[];
extern Gfx D_9023290[];
extern Gfx D_90234D0[];
extern ObjectInit* D_C0356A4[];
extern ObjectInit* D_C0356A4[];
extern Gfx D_C017440[];