fox_6B3B0 and a bunch of names for things (#50)

* stuff

* three whole files

* format

* format and such

* a switch in time

* merge prep

* nintendo switch

* format

* the great switch statement of our time

* 43AC0 matched

* stuff

* Enums everywhere

* oh god the switch

* knakyo

* new headers

* format

* fox

* everyone hates recursion

* format

* one more thing

* one more one more thing

* renames
This commit is contained in:
petrie911
2023-12-14 11:41:43 -03:00
committed by GitHub
parent 2b051a0828
commit 89ae8dff96
46 changed files with 9738 additions and 4714 deletions
+145 -176
View File
File diff suppressed because it is too large Load Diff
+148 -137
View File
@@ -7,12 +7,20 @@
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
#define FILL_COLOR(rgba) (((rgba) << 0x10) | (rgba))
#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))
// used for convenience while decopming. You should find/replace them with the full macros before PRing
#define GDL(dl) gSPDisplayList(gMasterDisp++, dl) // 06000000 dl
#define GPC(r, g, b, a) gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, r, g, b, a) // FA000000 RRGGBBAA
#define GEC(r, g, b, a) gDPSetEnvColor(gMasterDisp++, r, g, b, a) // FB000000 RRGGBBAA
#define GSGM_BACK(mode) gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK) // B7000000 00002000, most common geometry mode changed
#define GCGM_BACK(mode) gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK) // B6000000 00002000
#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)
@@ -20,6 +28,146 @@
#define VTX_T(x,y,z,s,t,cr,cg,cb,a) { { x, y, z }, 0, { s, t }, { cr, cg, cb, a } }
typedef union {
u16 data[SCREEN_HEIGHT * SCREEN_WIDTH];
u16 array[SCREEN_HEIGHT][SCREEN_WIDTH];
} FrameBuffer; // size = 0x25800
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
typedef Limb* SkelAnime;
typedef struct {
/* 0x00 */ AnimationHeader* unk_0;
/* 0x04 */ AnimationHeader* unk_4;
/* 0x08 */ SkelAnime* skelanime;
} Animation; // size = 0x0C
void Lights_SetOneLight(Gfx** dList, s32 dirX, s32 dirY, s32 dirZ, s32 colR, s32 colG, s32 colB, s32 ambR, s32 ambG, s32 ambB);
void Lights_SetTwoLights(Gfx** dList, s32 dir1x, s32 dir1y, s32 dir1z, s32 dir2x, s32 dir2y, s32 dir2z, s32 col1r, s32 col1g,
s32 col1b, s32 col2r, s32 col2g, s32 col2b, s32 ambR, s32 ambG, s32 ambB);
char* Graphics_ClearPrintBuffer(char *buf, s32 fill, s32 len);
s32 Graphics_Printf(const char *fmt, ...);
void Texture_Scroll(void *texture, s32 width, s32 height, u8 mode);
void Texture_Mottle(void *dst, void *src, u8 mode);
s32 Animation_GetLimbIndex(Limb* limb, Limb** skeleton);
void Animation_DrawLimb(s32 mode, Limb * limb, Limb* *skeleton, Vec3f* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, void* data);
void Animation_DrawSkeleton(s32 mode, Limb** skeletonSegment, Vec3f* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, void* data, Matrix* transform);
s16 Animation_GetFrameData(AnimationHeader *animationSegmemt, s32 frame, Vec3f *frameTable);
s16 Animation_GetFrameCount(AnimationHeader *animationSegment);
void Animation_FindBoundingBox(Gfx* dList, s32 len, Vec3f *min, Vec3f *max, s32 *vtxFound, s32 *vtxCount, Vtx* *vtxList);
void Animation_GetDListBoundingBox(Gfx *dList, s32 len, Vec3f *min, Vec3f *max);
void Animation_GetSkeletonBoundingBox(Limb **skeletonSegment, AnimationHeader *animationSegment, s32 frame, Vec3f *min, Vec3f* max);
void TextureRect_4bCI(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_4bCI_Flip(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_4bCI_MirX(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_4bCI_MirY(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_8bCI(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_16bRGBA(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_16bRGBA_MirX(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_8bIA(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_8bIA_FilpMirX(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_8bIA_FilpMirY(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_8bIA_MirX(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_8bIA_MirY(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_16bIA(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_16bIA_MirX(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_16bIA_MirY(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_16bIA_MirXY(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_32bRGBA(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void Graphics_FillRectangle(Gfx **gfxPtr, s32 ulx, s32 uly, s32 lrx, s32 lry, u8 r, u8 g, u8 b, u8 a);
u16* func_8009F7B4(Gfx **gfxPtr, u8 width, u8 height);
void Graphics_DisplayHUDNumber(s32 xPos, s32 yPos, s32 number);
void Graphics_DisplaySmallNumber(s32 xPos, s32 yPos, s32 number);
void Graphics_DisplayLargeText(s32 xPos, s32 yPos, f32 xScale, f32 yScale, char *text);
s32 Graphics_GetLargeTextWidth(char *text);
void Graphics_DisplayLargeNumber(s32 xPos, s32 yPos, s32 number);
void Graphics_DisplaySmallText(s32 xPos, s32 yPos, f32 xScale, f32 yScale, char *text);
s32 Graphics_GetSmallTextWidth(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 RCP_SetupDL(Gfx** gfxP, s16 i);
void RCP_SetFog(Gfx** gfxP, s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_0(void);
void RCP_SetupDL_1(void);
void RCP_SetupDL_11(void);
void RCP_SetupDL_12(void);
void RCP_SetupDL_2(void);
void RCP_SetupDL_3(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_4(void);
void RCP_SetupDL_7(void);
void RCP_SetupDL_9(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_8(void);
void RCP_SetupDL_13(void);
void RCP_SetupDL_14(void);
void RCP_SetupDL_17(void);
void RCP_SetupDL_36(void);
void RCP_SetupDL_52(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_62(void);
void RCP_SetupDL_37(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_18(void);
void RCP_SetupDL_20(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_19(void);
void RCP_SetupDL_21(void);
void RCP_SetupDL_33(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_34(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_40(void);
void RCP_SetupDL_42(void);
void RCP_SetupDL_43(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_60(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_47(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_66(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_55(void);
void RCP_SetupDL_57(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_45(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_46(void);
void RCP_SetupDL_41(void);
void RCP_SetupDL_64(void);
void RCP_SetupDL_64_2(void);
void RCP_SetupDL_23(void);
void RCP_SetupDL_29(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_30(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_27(void);
void RCP_SetupDL_32(void);
void RCP_SetupDL_73(void);
void RCP_SetupDL_76(void);
void RCP_SetupDL_74(void);
void RCP_SetupDL_78(void);
void RCP_SetupDL_81(void);
void RCP_SetupDL_48(void);
void RCP_SetupDL_68(void);
void RCP_SetupDL_49(void);
void RCP_SetupDL_44(void);
void RCP_SetupDL_50(void);
void RCP_SetupDL_61(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
typedef enum SetupDL {
/* 0x00 */ SETUPDL_0,
/* 0x01 */ SETUPDL_1,
@@ -114,141 +262,4 @@ 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
typedef Limb* SkelAnime;
typedef struct {
/* 0x00 */ AnimationHeader* unk_0;
/* 0x04 */ AnimationHeader* unk_4;
/* 0x08 */ SkelAnime* skelanime;
} Animation; // size = 0x0C
char* Graphics_ClearPrintBuffer(char *buf, s32 fill, s32 len);
s32 Graphics_Printf(const char *fmt, ...);
void Texture_Scroll(void *texture, s32 width, s32 height, u8 mode);
void Texture_Mottle(void *dst, void *src, u8 mode);
s32 Animation_GetLimbIndex(Limb* limb, Limb** skeleton);
void Animation_DrawLimb(s32 mode, Limb * limb, Limb* *skeleton, Vec3f* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, void* data);
void Animation_DrawSkeleton(s32 mode, Limb** skeletonSegment, Vec3f* jointTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, void* data, Matrix* transform);
s16 Animation_GetFrameData(AnimationHeader *animationSegmemt, s32 frame, Vec3f *frameTable);
s16 Animation_GetFrameCount(AnimationHeader *animationSegment);
void Animation_FindBoundingBox(Gfx* dList, s32 len, Vec3f *min, Vec3f *max, s32 *vtxFound, s32 *vtxCount, Vtx* *vtxList);
void Animation_GetDListBoundingBox(Gfx *dList, s32 len, Vec3f *min, Vec3f *max);
void Animation_GetSkeletonBoundingBox(Limb **skeletonSegment, AnimationHeader *animationSegment, s32 frame, Vec3f *min, Vec3f* max);
f32 Math_SmoothStepToF(f32 *value, f32 target, f32 scale, f32 maxStep, f32 minStep);
f32 Math_SmoothStepToAngle(f32 *angle, f32 target, f32 scale, f32 maxStep, f32 minStep);
void Math_SmoothStepToVec3fArray(Vec3f *src, Vec3f *dst, s32 mode, s32 count, f32 scale, f32 maxStep, f32 minStep);
s32 Math_PursueVec3f(Vec3f *pos, Vec3f *target, Vec3f *rot, f32 stepSize, f32 scaleTurn, f32 maxTurn, f32 dist);
void TextureRect_4bCI(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_4bCI_Flip(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_4bCI_MirX(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_4bCI_MirY(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_8bCI(Gfx **gfxPtr, void* texture, void* palette, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_16bRGBA(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_16bRGBA_MirX(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_8bIA(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_8bIA_FilpMirX(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_8bIA_FilpMirY(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_8bIA_MirX(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_8bIA_MirY(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_16bIA(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_16bIA_MirX(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_16bIA_MirY(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_16bIA_MirXY(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void TextureRect_32bRGBA(Gfx **gfxPtr, void* texture, u32 width, u32 height, f32 xPos, f32 yPos, f32 xScale, f32 yScale);
void Graphics_FillRectangle(Gfx **gfxPtr, s32 ulx, s32 uly, s32 lrx, s32 lry, u8 r, u8 g, u8 b, u8 a);
void Math_Vec3fFromAngles(Vec3f *step, f32 xRot, f32 yRot, f32 stepsize);
f32 Math_RadToDeg(f32 rAngle);
u16* func_8009F7B4(Gfx **gfxPtr, u8 width, u8 height);
void Graphics_DisplayHUDNumber(s32 xPos, s32 yPos, s32 number);
void Graphics_DisplaySmallNumber(s32 xPos, s32 yPos, s32 number);
void Graphics_DisplayLargeText(s32 xPos, s32 yPos, f32 xScale, f32 yScale, char *text);
s32 Graphics_GetLargeTextWidth(char *text);
void Graphics_DisplayLargeNumber(s32 xPos, s32 yPos, s32 number);
void Graphics_DisplaySmallText(s32 xPos, s32 yPos, f32 xScale, f32 yScale, char *text);
s32 Graphics_GetSmallTextWidth(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 RCP_SetupDL(Gfx** gfxP, s16 i);
void RCP_SetFog(Gfx** gfxP, s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_0(void);
void RCP_SetupDL_1(void);
void RCP_SetupDL_11(void);
void RCP_SetupDL_12(void);
void RCP_SetupDL_2(void);
void RCP_SetupDL_3(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_4(void);
void RCP_SetupDL_7(void);
void RCP_SetupDL_9(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_8(void);
void RCP_SetupDL_13(void);
void RCP_SetupDL_14(void);
void RCP_SetupDL_17(void);
void RCP_SetupDL_36(void);
void RCP_SetupDL_52(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_62(void);
void RCP_SetupDL_37(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_18(void);
void RCP_SetupDL_20(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_19(void);
void RCP_SetupDL_21(void);
void RCP_SetupDL_33(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_34(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_40(void);
void RCP_SetupDL_42(void);
void RCP_SetupDL_43(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_60(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_47(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_66(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_55(void);
void RCP_SetupDL_57(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_45(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_46(void);
void RCP_SetupDL_41(void);
void RCP_SetupDL_64(void);
void RCP_SetupDL_64_2(void);
void RCP_SetupDL_23(void);
void RCP_SetupDL_29(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_30(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
void RCP_SetupDL_27(void);
void RCP_SetupDL_32(void);
void RCP_SetupDL_73(void);
void RCP_SetupDL_76(void);
void RCP_SetupDL_74(void);
void RCP_SetupDL_78(void);
void RCP_SetupDL_81(void);
void RCP_SetupDL_48(void);
void RCP_SetupDL_68(void);
void RCP_SetupDL_49(void);
void RCP_SetupDL_44(void);
void RCP_SetupDL_50(void);
void RCP_SetupDL_61(s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
#endif
+3 -35
View File
@@ -17,41 +17,9 @@
#include "macros.h"
#include "sf64math.h"
#include "sf64mesg.h"
#include "sf64object.h"
#include "sf64level.h"
#include "sf64thread.h"
#include "gfx.h"
typedef enum {
SI_READ_CONTROLLER = 10,
SI_READ_SAVE,
SI_WRITE_SAVE,
SI_RUMBLE,
SI_SAVE_FAILED,
SI_SAVE_SUCCESS,
SI_CONT_READ_DONE,
} SerialMesg;
#define MSG_QUEUE_EMPTY -1
#define FAULT_MESG_BREAK 1
#define FAULT_MESG_FAULT 2
#define TASK_MESG_1 1
#define TASK_MESG_2 2
#define EVENT_MESG_SP 1
#define EVENT_MESG_DP 2
#define EVENT_MESG_VI 3
#define EVENT_MESG_PRENMI 4
typedef enum {
THREAD_ID_SYSTEM,
THREAD_ID_IDLE,
THREAD_ID_FAULT,
THREAD_ID_MAIN,
THREAD_ID_4,
THREAD_ID_AUDIO,
THREAD_ID_GRAPHICS,
THREAD_ID_7,
THREAD_ID_SERIAL,
} ThreadID;
#endif // GLOBAL_H
+2 -2
View File
@@ -64,7 +64,7 @@ extern s32 D_80161718;
extern s32 D_8016171C;
extern s32 D_801617E8[];
extern s32 D_801617FC;
extern s32 D_80161A98;
extern s32 gHitCount;
extern s32 D_80177838;
extern s32 D_80177854;
extern s32 D_80177880;
@@ -75,7 +75,7 @@ extern s32 D_80177B48;
extern s32 D_80177B50[];
extern s32 D_80177B70[];
extern s32 D_80177E7C;
extern s32 D_80178234;
extern s32 gCurrentLevel;
extern s32 D_80178750;
#endif
+27 -27
View File
@@ -92,33 +92,33 @@ typedef struct {
extern DmaEntry gDmaTable[]; // 178A70
extern OverlayInit sLogoOverlay[1]; // sets segment 15 with no overlay
extern OverlayInit sCreditsOverlay_6[6]; // overlay EF0260
extern OverlayInit sEBFBE0_Overlay1[1]; // EBFBE0
extern OverlayInit sEBFBE0_Overlay2[1]; // EBFBE0
extern OverlayInit sEBFBE0_Overlay3[1]; // EBFBE0
extern OverlayInit sEBFBE0_Overlay4[1]; // EBFBE0
extern OverlayInit sDF4260_Overlay1[1]; // DF4260
extern OverlayInit sE08400_Overlay1_2[2]; // E08400
extern OverlayInit sE6A810_Overlay1_6[6]; // E6A810
extern OverlayInit sE08400_Overlay2_2[2]; // E08400
extern OverlayInit sE51970_Overlay1[1]; // E51970
extern OverlayInit sE16C50_Overlay1[1]; // E16C50
extern OverlayInit sE16C50_Overlay2[1]; // E16C50
extern OverlayInit sE51970_Overlay2_2[2]; // E51970
extern OverlayInit sE16C50_Overlay3[1]; // E16C50
extern OverlayInit sE9F1D0_Overlay1[1]; // E9F1D0
extern OverlayInit sE16C50_Overlay4[1]; // E16C50
extern OverlayInit sE16C50_Overlay5[1]; // E16C50
extern OverlayInit sDF4260_Overlay2[1]; // DF4260
extern OverlayInit sE9F1D0_Overlay2[1]; // E9F1D0
extern OverlayInit sE9F1D0_Overlay3_2[2]; // E9F1D0
extern OverlayInit sE08400_Overlay3[1]; // E08400
extern OverlayInit sE51970_Overlay3[1]; // E51970
extern OverlayInit sE51970_Overlay4[1]; // E51970
extern OverlayInit sE6A810_Overlay2_2[2]; // E6A810
extern OverlayInit sDF4260_Overlay3[1]; // DF4260
extern OverlayInit sE08400_Overlay4_2[2]; // E08400
extern OverlayInit sNoOvl_Logo[1]; // sets segment 15 with no overlay
extern OverlayInit sOvlEF0260_Credits[6]; // overlay EF0260
extern OverlayInit sOvlEBFBE0_Title[1]; // EBFBE0
extern OverlayInit sOvlEBFBE0_Menu[1]; // EBFBE0
extern OverlayInit sOvlEBFBE0_Map[1]; // EBFBE0
extern OverlayInit sOvlEBFBE0_State5[1]; // EBFBE0
extern OverlayInit sOvlDF4260_Corneria[1]; // DF4260
extern OverlayInit sOvlE08400_Meteo[2]; // E08400
extern OverlayInit sOvlE6A810_Titania[6]; // E6A810
extern OverlayInit sOvlE08400_SectorX[2]; // E08400
extern OverlayInit sOvlE51970_SectorZ[1]; // E51970
extern OverlayInit sOvlE16C50_Aquas[1]; // E16C50
extern OverlayInit sOvlE16C50_Area6[1]; // E16C50
extern OverlayInit sOvlE51970_Fortuna[2]; // E51970
extern OverlayInit sOvlE16C50_Unk4[1]; // E16C50
extern OverlayInit sOvlE9F1D0_SectorY[1]; // E9F1D0
extern OverlayInit sOvlE16C50_Solar[1]; // E16C50
extern OverlayInit sOvlE16C50_Zoness[1]; // E16C50
extern OverlayInit sOvlDF4260_Venom1[1]; // DF4260
extern OverlayInit sOvlE9F1D0_Venom2[1]; // E9F1D0
extern OverlayInit sOvlE9F1D0_VenomSW[2]; // E9F1D0
extern OverlayInit sOvlE08400_Setup20[1]; // E08400
extern OverlayInit sOvlE51970_Bolse[1]; // E51970
extern OverlayInit sOvlE51970_Katina[1]; // E51970
extern OverlayInit sOvlE6A810_Macbeth[2]; // E6A810
extern OverlayInit sOvlDF4260_Training[1]; // DF4260
extern OverlayInit sOvlE08400_Versus[2]; // E08400
extern OverlayInit sEFFA40_Overlay[1]; // EFFA40
DECLARE_SEGMENT(makerom);
+86
View File
@@ -0,0 +1,86 @@
#ifndef SF64_LEVEL
#define SF64_LEVEL
#include "structs.h"
typedef enum {
LEVELTYPE_GROUND,
LEVELTYPE_SPACE,
LEVELTYPE_UNK2,
LEVELTYPE_UNK3,
} LevelType;
typedef struct {
/* 0x00 */ s32 type;
/* 0x04 */ s32 unk_04;
/* 0x08 */ u16 bgColor;
/* 0x0A */ u16 unk_0A;
/* 0x0C */ s32 fogR;
/* 0x10 */ s32 fogG;
/* 0x14 */ s32 fogB;
/* 0x18 */ s32 fogN;
/* 0x1C */ s32 fogF;
/* 0x20 */ Vec3f unk_20;
/* 0x2C */ s32 lightR;
/* 0x30 */ s32 lightG;
/* 0x34 */ s32 lightB;
/* 0x38 */ s32 ambR;
/* 0x3C */ s32 ambG;
/* 0x40 */ s32 ambB;
} EnvSettings; // size = 0x44?
typedef enum {
OVL_SETUP_TITLE,
OVL_SETUP_MENU,
OVL_SETUP_MAP,
OVL_SETUP_STATE_5,
OVL_SETUP_CREDITS,
OVL_SETUP_CORNERIA,
OVL_SETUP_METEO,
OVL_SETUP_TITANIA,
OVL_SETUP_SECTOR_X,
OVL_SETUP_AQUAS,
OVL_SETUP_AREA_6,
OVL_SETUP_FORTUNA,
OVL_SETUP_UNK_4,
OVL_SETUP_SECTOR_Y,
OVL_SETUP_SOLAR,
OVL_SETUP_ZONESS,
OVL_SETUP_VENOM_2,
OVL_SETUP_TRAINING,
OVL_SETUP_VENOM_1,
OVL_SETUP_KATINA,
OVL_SETUP_20,
OVL_SETUP_MACBETH,
OVL_SETUP_BOLSE,
OVL_SETUP_SECTOR_Z,
OVL_SETUP_VENOM_SW,
OVL_SETUP_VERSUS = 50,
OVL_SETUP_LOGO = 99,
} OverlaySetups;
typedef enum {
LEVEL_CORNERIA,
LEVEL_METEO,
LEVEL_SECTOR_X,
LEVEL_AREA_6,
LEVEL_UNK_4,
LEVEL_SECTOR_Y,
LEVEL_VENOM_1,
LEVEL_SOLAR,
LEVEL_ZONESS,
LEVEL_VENOM_2,
LEVEL_TRAINING,
LEVEL_MACBETH,
LEVEL_TITANIA,
LEVEL_AQUAS,
LEVEL_FORTUNA,
LEVEL_UNK_15,
LEVEL_KATINA,
LEVEL_BOLSE,
LEVEL_SECTOR_Z,
LEVEL_VENOM_SW,
LEVEL_VERSUS,
} LevelId;
#endif
+54
View File
@@ -9,6 +9,11 @@ typedef struct {
/* 0x8 */ f32 z;
} Vec3f; // size = 0xC
typedef struct {
Vec3f normal;
f32 dist;
} Plane;
typedef struct {
/* 0x0 */ s16 x;
/* 0x2 */ s16 y;
@@ -26,4 +31,53 @@ typedef union {
// u64 force_struct_alignment;
} Matrix; // size = 0x40
f32 Math_ModF(f32 value, f32 mod);
void Rand_Init(void);
f32 Rand_ZeroOne(void);
void Rand_SetSeed(s32 seed1, s32 seed2, s32 seed3);
f32 Rand_ZeroOneSeeded(void);
f32 Math_Atan2F(f32 y, f32 x);
f32 Math_Atan2F_XY(f32 x, f32 y);
f32 Math_Atan2F_XYAlt(f32 x, f32 y);
f32 Math_PowF(f32 base, s32 exp);
void Math_MinMax(s32* min, s32* max, s32 val1, s32 val2, s32 val3);
f32 Math_SmoothStepToF(f32 *value, f32 target, f32 scale, f32 maxStep, f32 minStep);
f32 Math_SmoothStepToAngle(f32 *angle, f32 target, f32 scale, f32 maxStep, f32 minStep);
void Math_SmoothStepToVec3fArray(Vec3f *src, Vec3f *dst, s32 mode, s32 count, f32 scale, f32 maxStep, f32 minStep);
s32 Math_PursueVec3f(Vec3f *pos, Vec3f *target, Vec3f *rot, f32 stepSize, f32 scaleTurn, f32 maxTurn, f32 dist);
void Math_Vec3fFromAngles(Vec3f *step, f32 xRot, f32 yRot, f32 stepsize);
f32 Math_RadToDeg(f32 rAngle);
void Matrix_Copy(Matrix*, Matrix*);
void Matrix_Push(Matrix** mtxStack);
void Matrix_Pop(Matrix** mtxStack);
void Matrix_Mult(Matrix*, Matrix*, u8);
void Matrix_Translate(Matrix*, f32, f32, f32, u8);
void Matrix_Scale(Matrix*, f32, f32, f32, u8);
void Matrix_RotateX(Matrix*, f32, u8);
void Matrix_RotateY(Matrix*, f32, u8);
void Matrix_RotateZ(Matrix*, f32, u8);
void Matrix_RotateAxis(Matrix*, f32, f32, f32, f32, u8);
void Matrix_ToMtx(Mtx *dest);
void Matrix_FromMtx(Mtx *src, Matrix *dest);
void Matrix_MultVec3f(Matrix*, Vec3f*, Vec3f*);
void Matrix_MultVec3fNoTranslate(Matrix*, Vec3f*, Vec3f*);
void Matrix_GetYRPAngles(Matrix*, Vec3f*);
void Matrix_GetXYZAngles(Matrix*, Vec3f*);
void Matrix_LookAt(Matrix*, f32, f32, f32, f32, f32, f32, f32, f32, f32, u8);
void Matrix_SetGfxMtx(Gfx**);
f32 Math_FAtanF(f32);
f32 Math_FAtan2F(f32, f32);
f32 Math_FAsinF(f32);
f32 Math_FAcosF(f32);
f32 __sinf(f32);
f32 __cosf(f32);
s64 __ull_div(s64, s64);
s64 __ll_mul(s64, s64);
s64 __ll_rshift(s64, s64);
#endif
+85 -4
View File
@@ -21,6 +21,87 @@ bool Message_DisplayText(Gfx** gfxPtr, u16* msgPtr, s32 xPos, s32 yPos, s32 len)
void Message_DisplayScrollingText(Gfx** gfxPtr, u16* msgPtr, s32 xPos, s32 yPos, s32 yRangeHi, s32 yRangeLo, s32 len);
bool Message_IsPrintingChar(u16* msgPtr, s32 charPos);
typedef enum {
RCID_FOX = 0,
RCID_FOX_OPEN,
RCID_FOX_RED = 5,
RCID_FOX_RED_OPEN,
RCID_STATIC = 2,
RCID_STATIC_FLIP,
RCID_FALCO = 10,
RCID_FALCO_OPEN,
RCID_FALCO_RED = 15,
RCID_FALCO_RED_OPEN,
RCID_SLIPPY = 20,
RCID_SLIPPY_OPEN,
RCID_SLIPPY_RED = 25,
RCID_SLIPPY_RED_OPEN,
RCID_PEPPY = 30,
RCID_PEPPY_OPEN,
RCID_PEPPY_RED = 35,
RCID_PEPPY_RED_OPEN,
RCID_KATT = 40,
RCID_KATT_OPEN,
RCID_ANDROSS = 50,
RCID_ANDROSS_OPEN,
RCID_ANDROSS_RED = 55,
RCID_ANDROSS_RED_OPEN,
RCID_JAMES = 60,
RCID_JAMES_OPEN,
RCID_PEPPER = 70,
RCID_PEPPER_OPEN,
RCID_BOSS_CORNERIA = 80,
RCID_BOSS_CORNERIA_OPEN,
RCID_ROB64 = 90,
RCID_ROB64_OPEN,
RCID_ROB64_RED = 95,
RCID_ROB64_RED_OPEN,
RCID_BOSS_METEO = 100,
RCID_BOSS_METEO_OPEN,
RCID_BOSS_CORNERIA2 = 110,
RCID_BOSS_CORNERIA2_OPEN,
RCID_BOSS_AREA6 = 120,
RCID_BOSS_AREA6_OPEN,
RCID_BOSS_ZONESS = 130,
RCID_BOSS_ZONESS_OPEN,
RCID_ROB64_2 = 140,
RCID_ROB64_2_OPEN,
RCID_BOSS_SECTORX = 150,
RCID_BOSS_SECTORX_OPEN,
RCID_BOSS_SECTORY = 160,
RCID_BOSS_SECTORY_OPEN,
RCID_BILL = 170,
RCID_BILL_OPEN,
RCID_CAIMAN_AREA6 = 180,
RCID_CAIMAN_AREA6_OPEN,
RCID_BOSS_MACBETH = 190,
RCID_BOSS_MACBETH_OPEN,
RCID_WOLF = 200,
RCID_WOLF_OPEN,
RCID_PIGMA = 210,
RCID_PIGMA_OPEN,
RCID_LEON = 220,
RCID_LEON_OPEN,
RCID_ANDREW = 230,
RCID_ANDREW_OPEN,
RCID_WOLF_2 = 240,
RCID_WOLF_2_OPEN,
RCID_PIGMA_2 = 250,
RCID_PIGMA_2_OPEN,
RCID_LEON_2 = 260,
RCID_LEON_2_OPEN,
RCID_ANDREW_2 = 270,
RCID_ANDREW_2_OPEN,
RCID_ROB64_TITLE = 300,
RCID_ROB64_TITLE_OPEN,
RCID_PEPPER_TITLE = 310,
RCID_PEPPER_TITLE_OPEN,
RCID_TRAINING = 350,
RCID_TRAINING_OPEN,
RCID_FOX_EXPERT = 400,
RCID_FOX_EXPERT_OPEN,
} RadioCharacterId;
typedef enum {
MSGCHAR_END,
MSGCHAR_NWL,
@@ -30,10 +111,10 @@ typedef enum {
MSGCHAR_NP5,
MSGCHAR_NP6,
MSGCHAR_NP7,
MSGCHAR_NP8,
MSGCHAR_NP9,
MSGCHAR_NPA,
MSGCHAR_NPB,
MSGCHAR_PRI0,
MSGCHAR_PRI1,
MSGCHAR_PRI2,
MSGCHAR_PRI3,
MSGCHAR_SPC,
MSGCHAR_QSP,
MSGCHAR_HSP,
File diff suppressed because it is too large Load Diff
+125
View File
@@ -0,0 +1,125 @@
#ifndef SF64_THREAD
#define SF64_THREAD
#include "libultra/ultra64.h"
#include "gfx.h"
typedef enum {
GSTATE_NONE,
GSTATE_INIT,
GSTATE_TITLE,
GSTATE_MENU,
GSTATE_MAP,
GSTATE_STATE_5,
GSTATE_VS_INIT,
GSTATE_PLAY,
GSTATE_CREDITS,
GSTATE_BOOT = 100,
GSTATE_BOOT_WAIT,
GSTATE_SHOW_LOGO,
GSTATE_CHECK_SAVE,
GSTATE_LOGO_WAIT,
GSTATE_START,
} GameStates;
typedef void (*TimerAction)(s32*, s32);
typedef struct {
/* 0x00 */ u8 active;
/* 0x08 */ OSTimer timer;
/* 0x28 */ TimerAction action;
/* 0x2C */ s32* address;
/* 0x30 */ s32 value;
} TimerTask; // size = 0x38, 0x8 aligned
typedef struct {
/* 0x000 */ OSThread thread;
/* 0x1B0 */ char stack[0x800];
/* 0x9B0 */ OSMesgQueue msgQueue;
/* 0x9C8 */ OSMesg msg;
/* 0x9CC */ FrameBuffer* fb;
/* 0x9D0 */ u16 width;
/* 0x9D2 */ u16 height;
} FaultMgr; // size = 0x9D8, 0x8 aligned
typedef enum {
SPTASK_STATE_NOT_STARTED,
SPTASK_STATE_RUNNING,
SPTASK_STATE_INTERRUPTED,
SPTASK_STATE_FINISHED,
SPTASK_STATE_FINISHED_DP
} SpTaskState;
typedef struct {
/* 0x00 */ OSTask task;
/* 0x40 */ OSMesgQueue* msgQueue;
/* 0x44 */ OSMesg msg;
/* 0x48 */ SpTaskState state;
} SPTask; // size = 0x50, 0x8 aligned
typedef struct {
/* 0x00000 */ SPTask task;
/* 0x00050 */ Vp viewports[0x10];
/* 0x00150 */ Mtx mtx[0x480];
/* 0x12150 */ Gfx unkDL1[0x180];
/* 0x12D50 */ Gfx masterDL[0x1380];
/* 0x1C950 */ Gfx unkDL2[0xD80];
/* 0x23550 */ Lightsn lights[0x100];
} GfxPool; // size = 0x2AD50, 0x8 aligned
void Controller_Init(void);
void Controller_UpdateInput(void);
void Controller_ReadData(void);
void Save_ReadData(void);
void Save_WriteData(void);
void Controller_Rumble(void);
s32 Timer_CreateTask(u64, TimerAction, s32*, s32);
void Timer_Increment(s32* address, s32 value);
void Timer_SetValue(s32* address, s32 value);
void Timer_CompleteTask(TimerTask*);
void Timer_Wait(u64);
s32 Save_WriteEeprom(SaveFile*);
s32 Save_ReadEeprom(SaveFile*);
void Fault_ThreadEntry(void*);
void func_80007FE4(FrameBuffer*, u16, u16);
void Fault_Init(void);
typedef enum {
SI_READ_CONTROLLER = 10,
SI_READ_SAVE,
SI_WRITE_SAVE,
SI_RUMBLE,
SI_SAVE_FAILED,
SI_SAVE_SUCCESS,
SI_CONT_READ_DONE,
} SerialMesg;
#define MSG_QUEUE_EMPTY -1
#define FAULT_MESG_BREAK 1
#define FAULT_MESG_FAULT 2
#define TASK_MESG_1 1
#define TASK_MESG_2 2
#define EVENT_MESG_SP 1
#define EVENT_MESG_DP 2
#define EVENT_MESG_VI 3
#define EVENT_MESG_PRENMI 4
typedef enum {
THREAD_ID_SYSTEM,
THREAD_ID_IDLE,
THREAD_ID_FAULT,
THREAD_ID_MAIN,
THREAD_ID_4,
THREAD_ID_AUDIO,
THREAD_ID_GRAPHICS,
THREAD_ID_7,
THREAD_ID_SERIAL,
} ThreadID;
#endif
+68 -391
View File
File diff suppressed because it is too large Load Diff
+196 -102
View File
File diff suppressed because it is too large Load Diff
+21 -18
View File
@@ -1,6 +1,24 @@
D_800C90F0 = 0x800C90F0;
__libm_qnan_f = 0x800C9570;
D_1 = 0x1; //ignore:true
D_80120000 = 0x80120000;//ignore:true
D_80130001 = 0x80130001;//ignore:true
D_80000000 = 0x80000000;//ignore:true
D_80000001 = 0x80000001;//ignore:true
D_80000002 = 0x80000002;//ignore:true
D_80000003 = 0x80000003;//ignore:true
D_80000004 = 0x80000004;//ignore:true
D_80000005 = 0x80000005;//ignore:true
D_80000006 = 0x80000006;//ignore:true
D_80000007 = 0x80000007;//ignore:true
D_80000008 = 0x80000008;//ignore:true
D_80000009 = 0x80000009;//ignore:true
D_8000000A = 0x8000000A;//ignore:true
D_8000000B = 0x8000000B;//ignore:true
D_8000000C = 0x8000000C;//ignore:true
D_8000000D = 0x8000000D;//ignore:true
D_8000000E = 0x8000000E;//ignore:true
D_8000000F = 0x8000000F;//ignore:true
D_800C45E0 = 0x800C45E0;
@@ -12,31 +30,19 @@ gZBuffer = 0x80282000;
gFrameBuffers = 0x8038F800;
gDmaTable = 0x80178A70; //size:0x5A0
D_80178A70 = 0x80178A78; //ignore:true
D_80151650 = 0x80151650; //ignore:true
D_80161A18 = 0x80161A18;//size:0x10
D_801615D0 = 0x801615D0;//size:0xC
D_801615E0 = 0x801615E0;//size:0xC
D_800CFF80 = 0x800CFF80;//size:0x10
D_80161578 = 0x80161578;//size:0x30
D_80161AA8 = 0x80161AA8;//size:0x10
D_800CA23C = 0x800CA23C;//size:0x18
D_800CA26C = 0x800CA26C;//size:0x20
D_800CA260 = 0x800CA260;//size:0xC
D_801613E0 = 0x801613E0;//size:0x18
D_800CC124 = 0x800CC124;//type:u8
D_80161B00 = 0x80161B00; //size:0x1900
D_80163400 = 0x80163400; //size:0xBE0
D_80163FE0 = 0x80163FE0; //size:0xB130
D_8016F110 = 0x8016F110; //size:0x1020
D_80170130 = 0x80170130; //size:0x36B0
D_801737E0 = 0x801737E0; //size:0x870
D_80174050 = 0x80174050; //size:0x700
D_80174750 = 0x80174750; //size:0x12C0
D_80175A10 = 0x80175A10; //size:0xA28
D_80176438 = 0x80176438; //size:0x18
gExpertMode = 0x801779F8;
D_800C9E90 = 0x800C9E90;//size:0x70
D_800D3180 = 0x800D3180; // size:0x1E
gSetupDLs = 0x800D31B0; // size:0x18C0
@@ -79,7 +85,6 @@ __pos_z = 0x8016199C;//type:f32
Save_Checksum = 0x800C2FB0;
Save_Write = 0x800C3084;
Save_Read = 0x800C3194;
gSaveFile = 0x80178870; //size:0x200
__rspboot_start = 0x80000450;//name_end:__rspboot_end
__aspmain_start = 0x80000520;//name_end:__aspmain_end
@@ -88,7 +93,6 @@ gF3dexData = 0x800C3DD0;
sEFFA40_Overlay = 0x800CBD3C;
D_80177E88 = 0x80177E88; // size:0xC
D_800CFA54 = 0x800CFA54;
D_800D934C = 0x800D934C; // force_migration:True
@@ -100,7 +104,6 @@ D_800D55E4_fake = 0x800D55E4; // force_migration:True
D_800D8570 = 0x800D8570; // force_migration:True
D_800D8594 = 0x800D8594; // force_migration:True
D_800C93EC = 0x800C93EC; // force_migration:True
D_80177B90 = 0x80177B90; // force_migration:True
D_DF4260_8019B1EC = 0x8019B1EC; // force_migration:True segment:ovl_DF4260
D_E16C50_801C171C = 0x801C171C; // force_migration:True segment:ovl_E16C50
+339 -2
View File
@@ -1,3 +1,7 @@
// fox_enmy1
Object_Kill = 0x80060FBC;
//fox_display
Graphics_ClearPrintBuffer = 0x80099980;
Graphics_Printf = 0x800999D8;
Texture_Scroll = 0x80099A2C;
@@ -45,6 +49,7 @@ Graphics_GetSmallTextWidth = 0x800A13EC;
func_800A1540 = 0x800A1540;
func_800A1558 = 0x800A1558;
// fox_rcp
RCP_SetupDL = 0x800B8DD0;
RCP_SetFog = 0x800B8E14;
RCP_SetupDL_0 = 0x800b8f18;
@@ -100,10 +105,30 @@ RCP_SetupDL_44 = 0x800BA5E0;
RCP_SetupDL_50 = 0x800BA610;
RCP_SetupDL_61 = 0x800BA640;
gTextCharTextures = 0x80179010;
// fox_radio
D_80178720 = 0x80178720;
D_80178724 = 0x80178724;
D_80178728 = 0x80178728;
D_8017872C = 0x8017872C;
D_80178730 = 0x80178730;
D_80178734 = 0x80178734;
D_80178738 = 0x80178738;
D_8017873C = 0x8017873C;
D_80178740 = 0x80178740;
D_80178744 = 0x80178744;
D_80178748 = 0x80178748;
sCurrentMsgPri = 0x800D4A70;
func_800BA760 = 0x800BA760;
func_800BA7BC = 0x800BA7BC;
func_800BA808 = 0x800BA808;
func_800BAAE8 = 0x800BAAE8;
func_800BB388 = 0x800BB388;
func_800BB5D0 = 0x800BB5D0;
// fox_message
gTextCharTextures = 0x80179010;
gMsgLookup = 0x80185CBC;
gDefaultSave = 0x800D4D10;
Message_PtrFromId = 0x800C2830;
Message_IdFromPtr = 0x800C2890;
@@ -113,3 +138,315 @@ Message_DisplayChar = 0x800C295C;
Message_DisplayText = 0x800C2AF0;
Message_DisplayScrollingText = 0x800C2D3C;
Message_IsPrintingChar = 0x800C2F30;
// fox_save
gDefaultSave = 0x800D4D10;
gSaveFile = 0x80178870; //size:0x200
// fox_enmy1
Object_80_Initialize = 0x80061364;
Object_4C_Initialize = 0x80061394;
Object_2F4_Initialize = 0x800613C4;
Object_408_Initialize = 0x80061404;
Object_6C_Initialize = 0x80061444;
Object_8C_Initialize = 0x80061474;
// fox_A24B0
D_80161A10 = 0x80161A10;
D_80161A14 = 0x80161A14;
D_80161A18 = 0x80161A18; //size:0x10
D_80161A28 = 0x80161A28;
D_80161A2C = 0x80161A2C;
D_80161A2E = 0x80161A2E;
gNextLevel = 0x80161A30;
gNextGameState = 0x80161A32;
D_80161A34 = 0x80161A34;
gBgColor = 0x80161A36;
gBlurAlpha = 0x80161A38;
D_80161A39 = 0x80161A39;
D_80161A3C = 0x80161A3C;
D_80161A40 = 0x80161A40;
D_80161A44 = 0x80161A44;
D_800D2860 = 0x800D2860;
D_800D2870 = 0x800D2870;
D_800D2874 = 0x800D2874;
D_800D2884 = 0x800D2884;
D_800D2894 = 0x800D2894;
D_800D28A4 = 0x800D28A4;
sOverlaySetups = 0x800D28B4;
Game_Initialize = 0x800A18B0;
Game_SetGameState = 0x800A1980;
func_800A1B6C = 0x800A1B6C;
func_800A1C14 = 0x800A1C14;
func_800A1E68 = 0x800A1E68;
func_800A1F44 = 0x800A1F44;
func_800A1FB0 = 0x800A1FB0;
func_800A24DC = 0x800A24DC;
func_800A25DC = 0x800A25DC;
func_800A26C0 = 0x800A26C0;
func_800A3608 = 0x800A3608;
// sf_hud
gMedalFlashTimer = 0x801617B8;
gMedalStatus = 0x801617B4;
// sf_A4B50
D_80161A50 = 0x80161A50;
D_80161A54 = 0x80161A54;
D_80161A5C = 0x80161A5C;
D_80161A60 = 0x80161A60;
D_80161A62 = 0x80161A62;
D_80161A64 = 0x80161A64;
sEnvSettings = 0x80161A68;
D_80161A70 = 0x80161A70;
D_80161A74 = 0x80161A74;
D_80161A78 = 0x80161A78;
D_80161A7C = 0x80161A7C;
D_80161A80 = 0x80161A80;
D_80161A84 = 0x80161A84;
D_80161A88 = 0x80161A88;
D_80161A8C = 0x80161A8C;
gGoldRingCount = 0x80161A90;
gHitCount = 0x80161A98;
D_80161A9C = 0x80161A9C;
gLifeCount = 0x80161AA0;
gLaserStrength = 0x80161AA8;//size:0x10
D_80161AB8 = 0x80161AB8;
gObjects80 = 0x80161B00; //size:0x1900
gObjects4C = 0x80163400; //size:0xBE0
gObjects2F4 = 0x80163FE0; //size:0xB130
gObjects408 = 0x8016F110; //size:0x1020
gObjects8C = 0x80170130; //size:0x36B0
gObjects6C = 0x801737E0; //size:0x870
gObjects70 = 0x80174050; //size:0x700
gUnkEntities30 = 0x80174750; //size:0x12C0
gUnkEntities28 = 0x80175A10; //size:0xA28
gUnkEntities1C = 0x80176438; //size:0x18
D_80176550 = 0x80176550;
D_80176558 = 0x80176558;
D_80176878 = 0x80176878;
D_80176B98 = 0x80176B98;
D_80176EB8 = 0x80176EB8;
D_801771D8 = 0x801771D8;
gOverlaySetup = 0x801774F8;
D_80177500 = 0x80177500;
gOverlayStage = 0x80177820;
D_80177824 = 0x80177824;
D_80177828 = 0x80177828;
D_8017782C = 0x8017782C;
D_80177830 = 0x80177830;
gGameState = 0x80177834;
D_80177838 = 0x80177838;
D_8017783C = 0x8017783C;
D_80177840 = 0x80177840;
D_80177848 = 0x80177848;
D_8017784C = 0x8017784C;
D_80177850 = 0x80177850;
D_80177854 = 0x80177854;
D_80177858 = 0x80177858;
D_80177868 = 0x80177868;
D_80177870 = 0x80177870;
D_80177880 = 0x80177880;
D_80177888 = 0x80177888;
D_80177898 = 0x80177898;
D_8017789C = 0x8017789C;
D_801778A0 = 0x801778A0;
D_801778A4 = 0x801778A4;
gCamCount = 0x801778A8;
D_801778AB = 0x801778AB;
D_801778AC = 0x801778AC;
D_801778B0 = 0x801778B0;
D_801778C8 = 0x801778C8;
D_801778D0 = 0x801778D0;
D_801778E8 = 0x801778E8;
D_80177908 = 0x80177908;
D_80177910 = 0x80177910;
D_80177928 = 0x80177928;
D_80177930 = 0x80177930;
D_80177938 = 0x80177938;
D_80177940 = 0x80177940;
D_80177948 = 0x80177948;
D_80177950 = 0x80177950;
D_80177958 = 0x80177958;
D_80177978 = 0x80177978;
D_8017797C = 0x8017797C;
D_80177980 = 0x80177980;
D_80177988 = 0x80177988;
D_80177990 = 0x80177990;
D_801779A0 = 0x801779A0;
D_801779A8 = 0x801779A8;
D_801779B8 = 0x801779B8;
D_801779C0 = 0x801779C0;
D_801779C8 = 0x801779C8;
D_801779D8 = 0x801779D8;
D_801779E8 = 0x801779E8;
gExpertMode = 0x801779F8;
D_80177A10 = 0x80177A10;//size:0x28
D_80177A48 = 0x80177A48;//size:0x28
D_80177A70 = 0x80177A70;//size:0x10
D_80177A80 = 0x80177A80;
D_80177A88 = 0x80177A88;//size:0x10
D_80177A98 = 0x80177A98;
D_80177AA0 = 0x80177AA0;
D_80177AB0 = 0x80177AB0;
D_80177AB8 = 0x80177AB8;
D_80177AC8 = 0x80177AC8;
D_80177AD0 = 0x80177AD0;
D_80177AE0 = 0x80177AE0;
D_80177AE8 = 0x80177AE8;
D_80177AF8 = 0x80177AF8;
D_80177B00 = 0x80177B00;
D_80177B40 = 0x80177B40;
D_80177B48 = 0x80177B48;
D_80177B50 = 0x80177B50;
D_80177B70 = 0x80177B70;
D_80177B8C = 0x80177B8C;
D_80177B90 = 0x80177B90;
D_80177BB0 = 0x80177BB0;
D_80177C30 = 0x80177C30;
D_80177C50 = 0x80177C50;
gSoundMode = 0x80177C74;
gVolumeSettings = 0x80177C80;
D_80177C90 = 0x80177C90;
D_80177C94 = 0x80177C94;
gLevelType = 0x80177C98;
D_80177C9C = 0x80177C9C;
D_80177CA0 = 0x80177CA0;
D_80177CA4 = 0x80177CA4;
D_80177CAC = 0x80177CAC;
D_80177CB0 = 0x80177CB0;
D_80177CB4 = 0x80177CB4;
D_80177CBC = 0x80177CBC;
D_80177CC4 = 0x80177CC4;
D_80177CC8 = 0x80177CC8;
D_80177D08 = 0x80177D08;
gRightWingHealth = 0x80177D10;
D_80177D20 = 0x80177D20;
gLeftWingHealth = 0x80177D28;
D_80177D38 = 0x80177D38;
D_80177D40 = 0x80177D40;
D_80177D50 = 0x80177D50;
D_80177D58 = 0x80177D58;
D_80177D68 = 0x80177D68;
D_80177D70 = 0x80177D70;
D_80177D88 = 0x80177D88;
gBombCount = 0x80177DA0;
gFrameCount = 0x80177DB0;
D_80177DC8 = 0x80177DC8;
D_80177E70 = 0x80177E70;
D_80177E78 = 0x80177E78;
D_80177E80 = 0x80177E80;
D_80177E88 = 0x80177E88; // size:0xC
D_80177E98 = 0x80177E98;
D_80177F10 = 0x80177F10;
D_8017812C = 0x8017812C;
gCurrentLevel = 0x80178234;
D_80178238 = 0x80178238;//size:4 type:u8
D_8017827C = 0x8017827C;
gPlayer = 0x80178280;
D_80178284 = 0x80178284;
D_80178288 = 0x80178288;
D_8017828C = 0x8017828C;
D_80178290 = 0x80178290;
D_80178294 = 0x80178294;
D_80178298 = 0x80178298;
D_8017829C = 0x8017829C;
D_801782A4 = 0x801782A4;
D_801782AC = 0x801782AC;
D_801782B4 = 0x801782B4;
D_801782B8 = 0x801782B8;
D_801782BC = 0x801782BC;
D_801782C0 = 0x801782C0;
D_801782D0 = 0x801782D0;
D_801782D4 = 0x801782D4;
D_801782D8 = 0x801782D8;
D_801782E8 = 0x801782E8;
D_801782F8 = 0x801782F8;
D_801782FC = 0x801782FC;
D_80178300 = 0x80178300;
D_80178308 = 0x80178308;
D_80178310 = 0x80178310;
gFogRed = 0x80178320;
gFogGreen = 0x80178328;
gFogBlue = 0x80178330;
gFogAlpha = 0x80178338;
D_80178340 = 0x80178340;
D_80178348 = 0x80178348;
D_80178350 = 0x80178350;
D_80178354 = 0x80178354;
D_80178358 = 0x80178358;
D_8017835C = 0x8017835C;
D_80178360 = 0x80178360;
D_80178364 = 0x80178364;
D_80178368 = 0x80178368;
D_8017836C = 0x8017836C;
D_80178370 = 0x80178370;
D_80178374 = 0x80178374;
D_80178378 = 0x80178378;
D_80178380 = 0x80178380;
D_80178390 = 0x80178390;
D_801783A0 = 0x801783A0;
D_801783B0 = 0x801783B0;
D_801783D0 = 0x801783D0;
D_801783D4 = 0x801783D4;
gFogNear = 0x801783D8;
gFogFar = 0x801783DC;
D_80178410 = 0x80178410;
D_80178420 = 0x80178420;
D_80178424 = 0x80178424;
D_80178428 = 0x80178428;
D_8017842C = 0x8017842C;
D_80178430 = 0x80178430;
D_80178440 = 0x80178440;
D_80178444 = 0x80178444;
D_80178448 = 0x80178448;
D_8017847C = 0x8017847C;
D_80178480 = 0x80178480;
D_80178488 = 0x80178488;
D_801784A4 = 0x801784A4;
D_801784AC = 0x801784AC;
D_801784B8 = 0x801784B8;
D_801784BC = 0x801784BC;
D_801784C0 = 0x801784C0;
D_801784C4 = 0x801784C4;
D_801784C8 = 0x801784C8;
D_801784CC = 0x801784CC;
D_801784D0 = 0x801784D0;
D_801784D4 = 0x801784D4;
D_801784D8 = 0x801784D8;
gLight1x = 0x801784DC;
gLight1y = 0x801784E0;
gLight1z = 0x801784E4;
D_801784E8 = 0x801784E8;
D_801784EC = 0x801784EC;
D_801784F0 = 0x801784F0;
D_801784F4 = 0x801784F4;
D_801784F8 = 0x801784F8;
D_801784FC = 0x801784FC;
D_80178500 = 0x80178500;
gLight2x = 0x80178504;
gLight2y = 0x80178508;
gLight2z = 0x8017850C;
D_80178520 = 0x80178520;
D_80178524 = 0x80178524;
D_80178528 = 0x80178528;
D_80178538 = 0x80178538;
D_8017853C = 0x8017853C;
D_80178540 = 0x80178540;
D_80178544 = 0x80178544;
gLight1R = 0x80178548;
gLight1G = 0x8017854C;
gLight1B = 0x80178550;
gAmbientR = 0x80178554;
gAmbientG = 0x80178558;
gAmbientB = 0x8017855C;
gLight2R = 0x80178564;
gLight2G = 0x80178568;
gLight2B = 0x8017856C;
D_80178570 = 0x80178570;
D_80178574 = 0x80178574;
D_80178578 = 0x80178578;
Play_GetMaxHealth = 0x800A3FC4;
Play_CheckMedalStatus = 0x800A3F50;
+1
View File
@@ -401,6 +401,7 @@ D_600683C = 0x0600683C;
D_6006858 = 0x06006858;
D_6006890_f32 = 0x06006890;
D_6006890_Gfx = 0x06006890;
D_6030B14_f32 = 0x6030B14;
D_60068BC = 0x060068BC;
D_60068F0 = 0x060068F0;
D_6006A3C = 0x06006A3C;
+726 -726
View File
File diff suppressed because it is too large Load Diff
+117
View File
@@ -0,0 +1,117 @@
#include "global.h"
s32 D_801613A0;
s32 D_800C9E90[28] = {
0x8012, 0x8013, 0x8015, 0x8017, 0x8017, 0x8019, 0x8018, 0x801B, 0x8016, 0x8018, 0x8012, 0x8020, 0x8014, 0x801E,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
};
const f32 D_800D55D0[] = { 6000.0f, 18000.0f, -6000.0f, -18000.0f };
void func_80042EC0(Object_408* arg0) {
s32 var_a3;
f32 var_fv0;
if (D_801613A0 < 0xF00) {
var_a3 = 10;
} else if (D_801613A0 < 0x1680) {
var_a3 = 5;
} else if (D_801613A0 < 0x1E00) {
var_a3 = 2;
} else if (D_801613A0 < 0x2580) {
var_a3 = 1;
} else {
var_a3 = 0;
}
if (var_a3 != 0) {
var_fv0 = 0.0f;
if (arg0->obj.id == OBJECT_292) {
var_fv0 = 300.0f;
} else if (arg0->obj.id == OBJECT_306) {
var_fv0 = 200.0f;
}
func_80077240(arg0->obj.pos.x, arg0->obj.pos.y + var_fv0, arg0->obj.pos.z, var_a3);
}
gHitCount += var_a3 + 1;
D_80177850 = 0xF;
}
void func_80042FAC(Object_408* arg0) {
}
void func_80042FB8(Object_408* arg0) {
}
void func_80042FC4(Object_408* arg0) {
}
void func_80042FD0(Object_408* arg0) {
}
void func_80042FDC(Object_408* arg0) {
}
void func_80042FE8(Object_408* arg0) {
}
void func_80042FF4(Object_2F4* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8,
f32 arg9, f32 argA, s32 argB, s32 argC) {
Object_2F4_Initialize(arg0);
arg0->obj.status = 1;
arg0->obj.id = OBJECT_189;
arg0->unk_0B8 = argB;
arg0->obj.pos.x = arg1;
arg0->obj.pos.y = arg2;
arg0->obj.pos.z = arg3;
arg0->obj.rot.x = arg4;
arg0->obj.rot.y = arg5;
arg0->obj.rot.z = arg6;
arg0->unk_0E8.x = arg7;
arg0->unk_0E8.y = arg8;
arg0->unk_0E8.z = arg9;
arg0->unk_110 = argA;
arg0->unk_0BC = argC;
arg0->unk_0BE = 20;
func_800612B8(&arg0->unk_01C, arg0->obj.id);
if (gLevelType == 0) {
arg0->unk_10C = 0.5f;
}
}
void func_800430DC(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8, f32 arg9,
s32 argA, s32 argB) {
s32 i;
for (i = 59; i >= 0; i--) {
if (gObjects2F4[i].obj.status == 0) {
func_80042FF4(&gObjects2F4[i], arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, argA, argB);
return;
}
}
}
void func_80043188(Object_2F4* arg0) {
arg0->unk_01C.unk_10 = 30000.0f;
}
void func_8004319C(Player* arg0, f32 arg1, f32 arg2, f32 arg3) {
func_800182F4(0x105000FF);
func_800182F4(0x115000FF);
D_80177A80 = 0;
D_80178448 = arg3 + D_80177D20;
D_80178440 = arg1;
D_80178444 = arg2;
arg0->unk_1C8 = 7;
arg0->unk_1D0 = 10;
arg0->unk_1F8 = 50;
arg0->unk_1FC = 50;
arg0->unk_000 = 0.0f;
arg0->unk_004 = 1.0f;
if (arg0->unk_074 < arg0->unk_0AC) {
arg0->unk_004 = -1.0f;
}
gPlayer[0].unk_0C0.x = 0.0f;
}
+157 -154
View File
File diff suppressed because it is too large Load Diff
+3889
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -551,7 +551,7 @@ s32 func_80099254(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2, CollisionHeader* arg3,
sp108.dist = var_s0->dist;
if ((DOT_XYZ(sp108.normal, temp_V3f1) + sp108.dist) <= 0.0f) {
temp_fs0 = sp108.normal.x * arg2->x + sp108.normal.y * arg2->y + sp108.normal.z * arg2->z;
if (Math_FAcosF(temp_fs0 / (sqrtf(VEC3F_SQ(sp108.normal)) * spEC)) > 1.5707964f) {
if (Math_FAcosF(temp_fs0 / (sqrtf(VEC3F_SQ(sp108.normal)) * spEC)) > M_PI / 2.0f) {
temp_fs0 = (DOT_XYZ(sp108.normal, temp_V3f1) + sp108.dist) / temp_fs0;
spDC.x = temp_V3f1.x - (arg2->x * temp_fs0);
spDC.y = temp_V3f1.y - (arg2->y * temp_fs0);
@@ -574,7 +574,7 @@ s32 func_80099254(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2, CollisionHeader* arg3,
arg5[1] =
-Math_Atan2F_XY(__sinf(Math_Atan2F_XY(sp108.normal.y, sp108.normal.z)) * sp108.normal.z,
sp108.normal.x);
} else if (arg5[0] >= 3.1415927f) {
} else if (arg5[0] >= M_PI) {
arg5[1] = Math_Atan2F_XY(sp108.normal.y, sp108.normal.x);
} else {
arg5[1] = -Math_Atan2F_XY(sp108.normal.y, sp108.normal.x);

Some files were not shown because too many files have changed in this diff Show More