Decompile game.c

This commit is contained in:
MMDecomp
2020-06-23 01:08:52 +02:00
committed by Kenix3
parent 2d191e301a
commit 7d61d4e6ff
16 changed files with 598 additions and 83 deletions
+24
View File
@@ -0,0 +1,24 @@
#ifndef _ULTRA64_CONVERT_H_
#define _ULTRA64_CONVERT_H_
#define OS_CLOCK_RATE 62500000LL
#define OS_CPU_COUNTER (OS_CLOCK_RATE*3/4)
/* Macros */
#define OS_NSEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625000LL))/(1000000000LL/15625000LL))
#define OS_USEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625LL))/(1000000LL/15625LL))
#define OS_CYCLES_TO_NSEC(c) (((u64)(c)*(1000000000LL/15625000LL))/(OS_CPU_COUNTER/15625000LL))
#define OS_CYCLES_TO_USEC(c) (((u64)(c)*(1000000LL/15625LL))/(OS_CPU_COUNTER/15625LL))
#define OS_K0_TO_PHYSICAL(x) (u32)(((char*)(x)-0x80000000))
#define OS_K1_TO_PHYSICAL(x) (u32)(((char*)(x)-0xA0000000))
#define OS_PHYSICAL_TO_K0(x) (void*)(((u32)(x)+0x80000000))
#define OS_PHYSICAL_TO_K1(x) (void*)(((u32)(x)+0xA0000000))
/* Functions */
extern u32 osVirtualToPhysical(void*);
extern void* osPhysicalToVirtual(u32);
#endif
+28 -28
View File
@@ -1530,7 +1530,7 @@ s32 func_800E8F08(Vec3s* param_1, Vec3s* param_2); // func_800E8F08
s32 func_800E8FA4(Actor* actor, Vec3f* param_2, Vec3s* param_3, Vec3s* param_4); // func_800E8FA4
s32 func_800E9138(GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* param_4, f32 param_5); // func_800E9138
s32 func_800E9250(GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* param_4, Vec3f param_5); // func_800E9250
void func_800E9360(void); // func_800E9360
u8 func_800E9360(void); // func_800E9360
void static_context_init(void); // func_800E93E0
void func_800E9470(void); // func_800E9470
void func_800E9488(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE1 param_10, UNK_TYPE1 param_11, UNK_TYPE1 param_12, UNK_TYPE1 param_13, UNK_TYPE2 param_14, UNK_TYPE4 param_15); // func_800E9488
@@ -2760,13 +2760,13 @@ void func_80140260(OSViMode* vimode); // func_80140260
void func_8014026C(OSViMode* param_1, UNK_TYPE1 param_2, int param_3, int param_4, int param_5, int param_6, int param_7, int param_8, UNK_TYPE4 param_9, int param_10, short param_11, unsigned int param_12, UNK_TYPE4 param_13); // func_8014026C
void func_80140730(void); // func_80140730
void func_80140810(void); // func_80140810
void func_80140898(void); // func_80140898
void func_80140900(void); // func_80140900
void func_80140898(void* arg0); // func_80140898
void func_80140900(void* arg0); // func_80140900
void func_8014090C(void); // func_8014090C
void func_80140970(void); // func_80140970
void func_80140CE0(void); // func_80140CE0
void func_80140D04(void); // func_80140D04
void func_80140D10(void); // func_80140D10
void func_80140CE0(void* arg0); // func_80140CE0
void func_80140D04(void* arg0); // func_80140D04
void func_80140D10(void* arg0, Gfx** gfx, u32 arg2); // func_80140D10
void func_80140E80(void* param_1); // func_80140E80
void func_80140EA0(void); // func_80140EA0
void func_80140EAC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // func_80140EAC
@@ -2777,15 +2777,15 @@ void func_80141200(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_
void func_8014151C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); // func_8014151C
void func_80141678(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_80141678
void func_80141778(void); // func_80141778
void func_801418B0(void); // func_801418B0
void func_80141900(void); // func_80141900
void func_801418B0(void* arg0); // func_801418B0
void func_80141900(void* arg0); // func_80141900
void func_80141924(void); // func_80141924
void func_80141C34(void); // func_80141C34
void func_80141E60(void); // func_80141E60
void VisMono_Draw(void* arg0, Gfx** gfx, u32 arg2); // VisMono_Draw
void func_8014204C(void); // func_8014204C
void func_801420C0(void); // func_801420C0
void func_801420F4(void); // func_801420F4
void func_80142100(void); // func_80142100
void func_801420C0(void* arg0); // func_801420C0
void func_801420F4(void* arg0); // func_801420F4
void func_80142100(void* arg0, Gfx** gfx, u32 arg2); // func_80142100
void func_80142440(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5, UNK_TYPE1 param_6, UNK_TYPE1 param_7, UNK_TYPE1 param_8, UNK_TYPE4 param_9); // func_80142440
void func_80143148(void); // func_80143148
void func_801431E8(void); // func_801431E8
@@ -3121,15 +3121,15 @@ void Audio_Stop(void); // func_80172EAC
void Audio_ThreadEntry(AudioThreadStruct* audio); // func_80172ED0
void Audio_WaitForInit(AudioThreadStruct* param_1); // func_80173048
void Audio_Start(AudioThreadStruct* audio, s32* audioThreadStackEnd, OSPri pri, OSId id, SchedThreadStruct* sched, IrqMgr* irq); // func_80173074
void func_80173130(void); // func_80173130
void Initial_Init2(GameState* ctxt); // func_801732DC
void Initial_Fini(void); // func_8017332C
void Initial_Init(GameState* ctxt); // func_80173338
void TitleSetup_GameStateResetContext(void); // func_80173130
void TitleSetup_InitImpl(GameState* gameState); // func_801732DC
void TitleSetup_Destroy(GameState* gameState); // func_8017332C
void TitleSetup_Init(GameState* gameState); // func_80173338
void Game_UpdateFramerateVariables(s32 divisor); // func_80173360
void Game_SetFramerateDivisor(GameState* iParm1, u32 divisor); // func_801733A8
void func_801733DC(void); // func_801733DC
void Game_SetFramerateDivisor(GameState* gameState, s32 divisor); // func_801733A8
void GameState_SetFBFilter(Gfx** gfx, u32 arg1); // func_801733DC
void Game_Nop80173534(GameState* ctxt); // func_80173534
void func_80173540(GameState* ctxt, GraphicsContext* gCtxt); // func_80173540
void GameState_Draw(GameState* ctxt, GraphicsContext* gCtxt); // func_80173540
void Game_ResetSegments(GraphicsContext* gCtxt); // func_80173644
void func_801736DC(GraphicsContext* gCtxt); // func_801736DC
void Game_UpdateInput(GameState* ctxt); // func_80173754
@@ -3137,13 +3137,13 @@ void Game_Update(GameState* ctxt); // func_8017377C
void Game_IncrementFrameCount(GameState* ctxt); // func_801737E4
void Game_InitHeap(GameState* ctxt, u32 size); // func_80173810
void Game_ResizeHeap(GameState* ctxt, u32 size); // func_80173880
void Game_StateInit(GameState* ctxt, func_ptr gameStateInit, GraphicsContext* gCtxt); // func_80173950
void Game_StateInit(GameState* ctxt, GameStateFunc gameStateInit, GraphicsContext* gCtxt); // func_80173950
void Game_StateFini(GameState* ctxt); // func_80173A50
UNK_TYPE4 Game_GetNextStateInit(GameState* ctxt); // func_80173B00
GameStateFunc Game_GetNextStateInit(GameState* ctxt); // func_80173B00
u32 Game_GetNextStateSize(GameState* ctxt); // func_80173B0C
u32 Game_GetShouldContinue(GameState* ctxt); // func_80173B18
void Game_GetHeapFreeSize(GameState* ctxt); // func_80173B24
int func_80173B48(GameState* ctxt); // func_80173B48
s32 Game_GetHeapFreeSize(GameState* ctxt); // func_80173B24
s32 func_80173B48(GameState* ctxt); // func_80173B48
GameAlloc* func_80173BF0(GameAlloc* heap); // func_80173BF0
void* Gamealloc_Alloc(GameAlloc* heap, u32 size); // func_80173C10
void Gamealloc_Free(GameAlloc* heap, void* ptr); // func_80173C7C
@@ -3222,12 +3222,12 @@ void Sched_ThreadEntry(SchedThreadStruct* sched); // func_8017715C
void func_80177280(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5, UNK_TYPE1 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12); // func_80177280
void Sched_Start(SchedThreadStruct* sched, void* stack, OSPri pri, UNK_TYPE4 param_4, UNK_TYPE4 param_5, IrqMgr* irqmgrStruct); // func_801772A0
void func_80177390(void); // func_80177390
void func_801773A0(void); // func_801773A0
void func_801773C4(void); // func_801773C4
void func_801773D0(void); // func_801773D0
void func_801773A0(void* arg0); // func_801773A0
void func_801773C4(void* arg0); // func_801773C4
void SpeedMeter_DrawTimeEntries(void* displayList, GraphicsContext* gCtx); // func_801773D0
void func_80177A84(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9); // func_80177A84
void func_80177AC8(void); // func_80177AC8
void func_80177E58(void); // func_80177E58
void SpeedMeter_DrawAllocEntries(void* displayList, GraphicsContext *gCtx, GameState *ctx); // func_80177E58
void func_801780F0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7); // func_801780F0
void func_801781EC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_801781EC
void func_8017842C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11); // func_8017842C
@@ -3455,7 +3455,7 @@ void func_801857A0(void); // func_801857A0
void func_801857C0(void); // func_801857C0
char* func_801857D0(void); // func_801857D0
void func_80185864(void); // func_80185864
void func_80185908(void); // func_80185908
u32 func_80185908(void); // func_80185908
void func_80185968(void); // func_80185968
void func_801859F0(void); // func_801859F0
void func_80185A2C(void); // func_80185A2C
+2
View File
@@ -1,8 +1,10 @@
#ifndef _GLOBAL_H_
#define _GLOBAL_H_
#include "macros.h"
#include "structs.h"
#include "functions.h"
#include "regs.h"
#include "variables.h"
#include "macros.h"
+10 -1
View File
@@ -1,6 +1,8 @@
#ifndef _MACROS_H_
#define _MACROS_H_
#include "convert.h"
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
#define ARRAY_COUNTU(arr) (u32)(sizeof(arr) / sizeof(arr[0]))
@@ -12,4 +14,11 @@
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
#endif
// Currently most often called ctxt in MM, TODO: Refactor names when its used
#define ACTIVE_CAM globalCtx->cameraPtrs[globalCtx->activeCamera]
#define SET_NEXT_GAMESTATE(curState, newInit, newStruct) \
(curState)->nextGameStateInit = (GameStateFunc)newInit; \
(curState)->nextGameStateSize = sizeof(newStruct);
#endif // _MACROS_H_
+103
View File
@@ -0,0 +1,103 @@
/* Header taken as placeholder from OoT sister project */
/* Confirm as needed */
#ifndef _REGS_H_
#define _REGS_H_
#define REG_GROUPS 29 // number of REG groups, i.e. REG, SREG, OREG, etc.
#define REG_PAGES 6
#define REG_PER_PAGE 16
#define REG_PER_GROUP REG_PAGES * REG_PER_PAGE
/* We probably want a better name for gStaticContext based on OoT discussions */
#define BASE_REG(n, r) gStaticContext->data[n * REG_PER_GROUP + r]
#define REG(r) BASE_REG(0, r)
#define SREG(r) BASE_REG(1, r)
#define OREG(r) BASE_REG(2, r)
#define PREG(r) BASE_REG(3, r)
#define QREG(r) BASE_REG(4, r)
#define MREG(r) BASE_REG(5, r)
#define YREG(r) BASE_REG(6, r)
#define DREG(r) BASE_REG(7, r)
#define UREG(r) BASE_REG(8, r)
#define IREG(r) BASE_REG(9, r)
#define ZREG(r) BASE_REG(10, r)
#define CREG(r) BASE_REG(11, r)
#define NREG(r) BASE_REG(12, r)
#define KREG(r) BASE_REG(13, r)
#define XREG(r) BASE_REG(14, r)
#define cREG(r) BASE_REG(15, r)
#define sREG(r) BASE_REG(16, r)
#define iREG(r) BASE_REG(17, r)
#define WREG(r) BASE_REG(18, r)
#define AREG(r) BASE_REG(19, r)
#define VREG(r) BASE_REG(20, r)
#define HREG(r) BASE_REG(21, r)
#define GREG(r) BASE_REG(22, r)
#define mREG(r) BASE_REG(23, r)
#define nREG(r) BASE_REG(24, r)
#define BREG(r) BASE_REG(25, r)
#define dREG(r) BASE_REG(26, r)
#define kREG(r) BASE_REG(27, r)
#define bREG(r) BASE_REG(28, r)
/* TODO: Actually confirm these, in case of miss-match it's at least a simple list to `sed` */
#define R_ENABLE_ARENA_DBG SREG(0)
#define R_RUN_SPEED_LIMIT REG(45)
#define R_UPDATE_RATE SREG(30)
#define R_PAUSE_MENU_MODE SREG(94)
#define R_C_UP_ICON_X YREG(88)
#define R_C_UP_ICON_Y YREG(89)
#define R_MAGIC_FILL_COLOR(i) ZREG(0 + i)
#define R_C_BTN_COLOR(i) ZREG(39 + i)
#define R_B_BTN_COLOR(i) ZREG(43 + i)
#define R_START_LABEL_DD(i) ZREG(48 + i)
#define R_START_LABEL_Y(i) ZREG(51 + i)
#define R_START_LABEL_X(i) ZREG(54 + i)
#define R_C_UP_BTN_X ZREG(62)
#define R_C_UP_BTN_Y ZREG(63)
#define R_START_BTN_X ZREG(68)
#define R_START_BTN_Y ZREG(69)
#define R_ITEM_BTN_X(i) ZREG(70 + i)
#define R_ITEM_BTN_Y(i) ZREG(74 + i)
#define R_ITEM_BTN_DD(i) ZREG(78 + i)
#define R_ITEM_ICON_X(i) ZREG(82 + i)
#define R_ITEM_ICON_Y(i) ZREG(86 + i)
#define R_ITEM_ICON_DD(i) ZREG(90 + i)
#define R_A_BTN_Y XREG(16)
#define R_A_BTN_X XREG(17)
#define R_A_ICON_Y XREG(19)
#define R_A_ICON_X XREG(20)
#define R_A_BTN_COLOR(i) XREG(22 + i)
#define R_MAGIC_BAR_SMALL_Y XREG(48)
#define R_MAGIC_BAR_X XREG(49)
#define R_MAGIC_BAR_LARGE_Y XREG(50)
#define R_MAGIC_FILL_X XREG(51)
#define R_B_LABEL_DD WREG(0)
#define R_OW_MINIMAP_X WREG(29)
#define R_OW_MINIMAP_Y WREG(30)
#define R_MINIMAP_TOGGLED WREG(31)
#define R_B_LABEL_X(i) WREG(40 + i)
#define R_B_LABEL_Y(i) WREG(43 + i)
#define R_DGN_MINIMAP_X WREG(68)
#define R_DGN_MINIMAP_Y WREG(69)
#define R_MAP_INDEX VREG(11)
#define R_MAP_TEX_INDEX_BASE VREG(12)
#define R_MAP_TEX_INDEX VREG(13)
#define R_COMPASS_SCALE_X VREG(14)
#define R_COMPASS_SCALE_Y VREG(15)
#define R_COMPASS_OFFSET_X VREG(16)
#define R_COMPASS_OFFSET_Y VREG(17)
#define R_MINIMAP_COLOR(i) VREG(18 + i)
#define R_ITEM_AMMO_X(i) VREG(64 + i)
#define R_ITEM_AMMO_Y(i) VREG(68 + i)
#define R_ITEM_ICON_WIDTH(i) VREG(76 + i)
#define R_ITEM_BTN_WIDTH(i) VREG(80 + i)
#define R_FB_FILTER_TYPE SREG(80)
#define R_FB_FILTER_PRIM_COLOR(c) SREG(81 + c)
#define R_FB_FILTER_A SREG(84)
#define R_FB_FILTER_ENV_COLOR(c) SREG(85 + c)
#endif
+31 -6
View File
@@ -496,11 +496,13 @@ typedef struct {
/* 0x2B8 */ DispBuf polyXlu;
/* 0x2C8 */ s32 displaylistCounter;
/* 0x2CC */ void* framebuffer;
/* 0x2D0 */ UNK_TYPE1 pad2D0[0xB];
/* 0x2D0 */ int pad2D0;
/* 0x2D4 */ u32 viConfigFeatures;
/* 0x2D8 */ UNK_TYPE1 gap2D8[0x3];
/* 0x2DB */ u8 framebufferCounter;
/* 0x2DC */ UNK_TYPE1 pad2DC[0x8];
/* 0x2E4 */ f32 unk2E4;
/* 0x2E8 */ f32 unk2E8;
/* 0x2E4 */ f32 viConfigXScale;
/* 0x2E8 */ f32 viConfigYScale;
/* 0x2EC */ UNK_TYPE1 pad2EC[0x4];
} GraphicsContext; // size = 0x2F0
@@ -2134,11 +2136,12 @@ struct GameAlloc {
/* 0x10 */ GameAllocNode* head;
}; // size = 0x14
typedef void (*GameStateFunc)(struct GameState* gameState);
struct GameState {
/* 0x00 */ GraphicsContext* gfxCtx;
/* 0x04 */ func_ptr main;
/* 0x08 */ func_ptr destroy;
/* 0x0C */ func_ptr nextGameStateInit;
/* 0x04 */ GameStateFunc main;
/* 0x08 */ GameStateFunc destroy;
/* 0x0C */ GameStateFunc nextGameStateInit;
/* 0x10 */ u32 nextGameStateSize;
/* 0x14 */ Input input[4];
/* 0x74 */ GameStateHeap heap;
@@ -3100,5 +3103,27 @@ struct ActorBgIknvObj {
/* 0x1AC */ actor_func updateFunc;
}; // size = 0x1B0
typedef struct {
/* 0x00 */ u32 type;
/* 0x04 */ u32 setScissor;
/* 0x08 */ ColorRGBA8 color;
/* 0x0C */ ColorRGBA8 envColor;
} struct_801F8010; // size = 0x10
typedef struct {
/* 0x00 */ u32 useRgba;
/* 0x04 */ u32 setScissor;
/* 0x08 */ ColorRGBA8 primColor;
/* 0x08 */ ColorRGBA8 envColor;
} struct_801F8020; // size = 0x10
typedef struct {
/* 0x00 */ u32 unk_00;
/* 0x04 */ u32 setScissor;
/* 0x08 */ ColorRGBA8 primColor;
/* 0x0C */ ColorRGBA8 envColor;
/* 0x10 */ u16* tlut;
/* 0x14 */ Gfx* monoDl;
} VisMono; // size = 0x18
#endif
+8 -8
View File
@@ -2319,12 +2319,12 @@ extern UNK_TYPE2 D_801D14E0; // D_801D14E0
extern UNK_TYPE2 D_801D14E4; // D_801D14E4
extern UNK_TYPE2 D_801D14E8; // D_801D14E8
extern UNK_TYPE4 D_801D14F0; // D_801D14F0
extern UNK_TYPE4 gFramerateDivisor; // D_801D1500
extern s32 gFramerateDivisor; // D_801D1500
extern f32 gFramerateDivisorF; // D_801D1504
extern f32 gFramerateDivisorHalf; // D_801D1508
extern f32 gFramerateDivisorThird; // D_801D150C
extern UNK_TYPE4 D_801D1510; // D_801D1510
extern UNK_TYPE4 D_801D1514; // D_801D1514
extern u32 D_801D1510; // D_801D1510
extern u32 D_801D1514[3]; // D_801D1514
extern s32 gScreenWidth; // D_801D1520
extern s32 gScreenHeight; // D_801D1524
extern UNK_TYPE4 startHeapSize; // D_801D1528
@@ -4098,9 +4098,9 @@ extern StackEntry slowlyStackEntry; // D_801F6FC8
extern u8 slowlyStack[4096]; // D_801F6FE8
extern UNK_TYPE1 D_801F7FE8; // D_801F7FE8
extern UNK_TYPE1 D_801F7FF0; // D_801F7FF0
extern UNK_TYPE1 D_801F8010; // D_801F8010
extern UNK_TYPE1 D_801F8020; // D_801F8020
extern UNK_TYPE1 D_801F8030; // D_801F8030
extern struct_801F8010 D_801F8010; // D_801F8010
extern struct_801F8020 D_801F8020; // D_801F8020
extern VisMono sMonoColors; // sMonoColors
extern UNK_TYPE1 D_801F8048; // D_801F8048
extern FaultAddrConvClient grapgFaultAddrConvClient; // D_801F80D0
extern FaultClient graphFaultClient; // D_801F80E0
@@ -4138,8 +4138,8 @@ extern UNK_TYPE1 D_801FBAD0; // D_801FBAD0
extern UNK_TYPE1 D_801FBAD4; // D_801FBAD4
extern UNK_TYPE1 D_801FBAE0; // D_801FBAE0
extern UNK_TYPE1 D_801FBAE8; // D_801FBAE8
extern u64 D_801FBAF0; // D_801FBAF0
extern u64 lastRenderFrameDuration; // D_801FBAF8
extern volatile OSTime D_801FBAF0; // D_801FBAF0
extern volatile OSTime lastRenderFrameDuration; // D_801FBAF8
extern UNK_TYPE1 D_801FBB00; // D_801FBB00
extern UNK_TYPE1 D_801FBB04; // D_801FBB04
extern UNK_TYPE1 D_801FBB08; // D_801FBB08