mirror of https://github.com/zeldaret/mm.git
Decompile `game.c`
This commit is contained in:
parent
2d191e301a
commit
7d61d4e6ff
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -416,7 +416,8 @@ SECTIONS
|
|||
build/asm/code_0x80172A00.o(.text)
|
||||
build/asm/code_0x80172BC0.o(.text)
|
||||
build/asm/code_0x80172C30.o(.text)
|
||||
build/asm/game.o(.text)
|
||||
build/src/code/title_setup.o(.text)
|
||||
build/src/code/game.o(.text)
|
||||
build/asm/gamealloc.o(.text)
|
||||
build/asm/graph.o(.text)
|
||||
build/asm/code_0x80174A40.o(.text)
|
||||
|
|
@ -515,7 +516,7 @@ SECTIONS
|
|||
build/asm/code_data_z_play.o(.text)
|
||||
build/asm/code_data_z_play_hireso.o(.text)
|
||||
build/asm/code_data_0x80172C30.o(.text)
|
||||
build/asm/code_data_game.o(.text)
|
||||
build/src/code/game.o(.data)
|
||||
build/asm/code_data_graph.o(.text)
|
||||
build/asm/code_data_padmgr.o(.text)
|
||||
build/asm/code_data_speed_meter.o(.text)
|
||||
|
|
@ -587,7 +588,7 @@ SECTIONS
|
|||
build/asm/code_rodata_PreRender.o(.text)
|
||||
build/asm/code_rodata_0x80172BC0.o(.text)
|
||||
build/asm/code_rodata_0x80172C30.o(.text)
|
||||
build/asm/code_rodata_game.o(.text)
|
||||
build/src/code/game.o(.rodata)
|
||||
build/asm/code_rodata_graph.o(.text)
|
||||
build/asm/code_rodata_main.o(.text)
|
||||
build/asm/code_rodata_padmgr.o(.text)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,262 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
s32 gFramerateDivisor = 1;
|
||||
f32 gFramerateDivisorF = 1.0f;
|
||||
f32 gFramerateDivisorHalf = 1.0f / 2.0f;
|
||||
f32 gFramerateDivisorThird = 1.0f / 3.0f;
|
||||
|
||||
u32 D_801D1510 = 0x0000000A;
|
||||
u32 D_801D1514[3] = { 0 };
|
||||
|
||||
void Game_UpdateFramerateVariables(s32 divisor) {
|
||||
gFramerateDivisor = divisor;
|
||||
gFramerateDivisorF = (f32) divisor;
|
||||
gFramerateDivisorHalf = (f32) (divisor * 0.5f);
|
||||
gFramerateDivisorThird = (f32) (divisor / 3.0f);
|
||||
}
|
||||
|
||||
void Game_SetFramerateDivisor(GameState *gameState, s32 divisor) {
|
||||
R_UPDATE_RATE = (s16) divisor;
|
||||
gameState->framerateDivisor = divisor;
|
||||
Game_UpdateFramerateVariables(divisor);
|
||||
}
|
||||
|
||||
void GameState_SetFBFilter(Gfx** gfx, u32 arg1) {
|
||||
Gfx* _gfx = *gfx;
|
||||
|
||||
if ((R_FB_FILTER_TYPE > 0) && (R_FB_FILTER_TYPE < 5)) {
|
||||
D_801F8010.type = R_FB_FILTER_TYPE;
|
||||
D_801F8010.color.red = R_FB_FILTER_PRIM_COLOR(0);
|
||||
D_801F8010.color.green = R_FB_FILTER_PRIM_COLOR(1);
|
||||
D_801F8010.color.blue = R_FB_FILTER_PRIM_COLOR(2);
|
||||
D_801F8010.color.alpha = R_FB_FILTER_A;
|
||||
func_80140D10(&D_801F8010, &_gfx, arg1);
|
||||
} else {
|
||||
if ((R_FB_FILTER_TYPE == 5) || (R_FB_FILTER_TYPE == 6)) {
|
||||
D_801F8020.useRgba = (R_FB_FILTER_TYPE == 6);
|
||||
D_801F8020.primColor.red = R_FB_FILTER_PRIM_COLOR(0);
|
||||
D_801F8020.primColor.green = R_FB_FILTER_PRIM_COLOR(1);
|
||||
D_801F8020.primColor.blue = R_FB_FILTER_PRIM_COLOR(2);
|
||||
D_801F8020.primColor.alpha = R_FB_FILTER_A;
|
||||
D_801F8020.envColor.red = R_FB_FILTER_ENV_COLOR(0);
|
||||
D_801F8020.envColor.green = R_FB_FILTER_ENV_COLOR(1);
|
||||
D_801F8020.envColor.blue = R_FB_FILTER_ENV_COLOR(2);
|
||||
D_801F8020.envColor.alpha = R_FB_FILTER_A;
|
||||
func_80142100(&D_801F8020, &_gfx, arg1);
|
||||
} else {
|
||||
if (R_FB_FILTER_TYPE == 7) {
|
||||
sMonoColors.unk_00 = 0;
|
||||
sMonoColors.primColor.red = R_FB_FILTER_PRIM_COLOR(0);
|
||||
sMonoColors.primColor.green = R_FB_FILTER_PRIM_COLOR(1);
|
||||
sMonoColors.primColor.blue = R_FB_FILTER_PRIM_COLOR(2);
|
||||
sMonoColors.primColor.alpha = R_FB_FILTER_A;
|
||||
sMonoColors.envColor.red = R_FB_FILTER_ENV_COLOR(0);
|
||||
sMonoColors.envColor.green = R_FB_FILTER_ENV_COLOR(1);
|
||||
sMonoColors.envColor.blue = R_FB_FILTER_ENV_COLOR(2);
|
||||
sMonoColors.envColor.alpha = R_FB_FILTER_A;
|
||||
VisMono_Draw(&sMonoColors, &_gfx, arg1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*gfx = _gfx;
|
||||
}
|
||||
|
||||
void Game_Nop80173534(GameState *ctxt) {
|
||||
;
|
||||
}
|
||||
|
||||
void GameState_Draw(GameState *ctxt, GraphicsContext *gCtxt) {
|
||||
Gfx* nextDisplayList;
|
||||
Gfx* _polyOpa;
|
||||
// Unused vars impact regalloc
|
||||
Gfx* temp_t2;
|
||||
u32 temp_v1;
|
||||
|
||||
_polyOpa = gCtxt->polyOpa.p;
|
||||
nextDisplayList = Graph_GfxPlusOne(gCtxt->polyOpa.p);
|
||||
gSPDisplayList(gCtxt->overlay.p++, nextDisplayList);
|
||||
|
||||
if (R_FB_FILTER_TYPE && R_FB_FILTER_ENV_COLOR(3) == 0) {
|
||||
GameState_SetFBFilter(&nextDisplayList, (u32) gCtxt->zbuffer);
|
||||
}
|
||||
|
||||
if (R_ENABLE_ARENA_DBG < 0) {
|
||||
R_ENABLE_ARENA_DBG = 0;
|
||||
}
|
||||
|
||||
gSPEndDisplayList(nextDisplayList++);
|
||||
Graph_BranchDlist(_polyOpa, nextDisplayList);
|
||||
gCtxt->polyOpa.p = nextDisplayList;
|
||||
|
||||
lblUnk:; // Label prevents reordering, if(1) around the above block don't seem to help unlike in OoT
|
||||
func_800E9F78(gCtxt);
|
||||
|
||||
if (R_ENABLE_ARENA_DBG != 0) {
|
||||
SpeedMeter_DrawTimeEntries(&D_801F7FF0, gCtxt);
|
||||
SpeedMeter_DrawAllocEntries(&D_801F7FF0, gCtxt, ctxt);
|
||||
}
|
||||
}
|
||||
|
||||
void Game_ResetSegments(GraphicsContext *gCtxt) {
|
||||
gSPSegment(gCtxt->polyOpa.p++, 0, 0);
|
||||
gSPSegment(gCtxt->polyOpa.p++, 0xF, gCtxt->framebuffer);
|
||||
gSPSegment(gCtxt->polyXlu.p++, 0, 0);
|
||||
gSPSegment(gCtxt->polyXlu.p++, 0xF, gCtxt->framebuffer);
|
||||
gSPSegment(gCtxt->overlay.p++, 0, 0);
|
||||
gSPSegment(gCtxt->overlay.p++, 0xF, gCtxt->framebuffer);
|
||||
}
|
||||
|
||||
void func_801736DC(GraphicsContext *gCtxt) {
|
||||
Gfx* nextDisplayList;
|
||||
Gfx* _polyOpa;
|
||||
|
||||
nextDisplayList = Graph_GfxPlusOne(_polyOpa = gCtxt->polyOpa.p);
|
||||
gSPDisplayList(gCtxt->overlay.p++, nextDisplayList);
|
||||
gSPEndDisplayList(nextDisplayList++);
|
||||
Graph_BranchDlist(_polyOpa, nextDisplayList);
|
||||
|
||||
gCtxt->polyOpa.p = nextDisplayList;
|
||||
}
|
||||
|
||||
void Game_UpdateInput(GameState *ctxt) {
|
||||
Padmgr_GetInput(ctxt->input, 1);
|
||||
}
|
||||
|
||||
void Game_Update(GameState *ctxt) {
|
||||
GraphicsContext* _gCtx;
|
||||
_gCtx = ctxt->gfxCtx;
|
||||
|
||||
Game_ResetSegments(ctxt->gfxCtx);
|
||||
|
||||
ctxt->main(ctxt);
|
||||
|
||||
if (R_PAUSE_MENU_MODE != 2) {
|
||||
GameState_Draw(ctxt, _gCtx);
|
||||
func_801736DC(_gCtx);
|
||||
}
|
||||
}
|
||||
|
||||
void Game_IncrementFrameCount(GameState *ctxt) {
|
||||
Game_Nop80173534(ctxt);
|
||||
ctxt->frames++;
|
||||
}
|
||||
|
||||
void Game_InitHeap(GameState *ctxt, u32 size) {
|
||||
GameState *_ctx;
|
||||
void *buf;
|
||||
|
||||
_ctx = ctxt;
|
||||
buf = Gamealloc_Alloc(&_ctx->alloc, size);
|
||||
|
||||
if (buf) {
|
||||
GameStateHeap_Init(&ctxt->heap, buf, size);
|
||||
return;
|
||||
}
|
||||
|
||||
GameStateHeap_Init(&ctxt->heap, NULL, 0);
|
||||
assert_fail("../game.c", 0x40B);
|
||||
}
|
||||
|
||||
void Game_ResizeHeap(GameState *ctxt, u32 size)
|
||||
{
|
||||
GameAlloc *alloc;
|
||||
void *buf;
|
||||
u32 systemMaxFree;
|
||||
u32 bytesFree;
|
||||
u32 bytesAllocated;
|
||||
void *heapStart;
|
||||
|
||||
heapStart = ctxt->heap.heapStart;
|
||||
alloc = &ctxt->alloc;
|
||||
GameStateHeap_Clear(&ctxt->heap);
|
||||
Gamealloc_Free(alloc, heapStart);
|
||||
StartHeap_AnalyzeArena(&systemMaxFree, &bytesFree, &bytesAllocated);
|
||||
size = ((systemMaxFree - (sizeof(ArenaNode))) < size) ? (0) : (size);
|
||||
if (!size)
|
||||
{
|
||||
size = systemMaxFree - (sizeof(ArenaNode));
|
||||
}
|
||||
|
||||
if (buf = Gamealloc_Alloc(alloc, size))
|
||||
{
|
||||
GameStateHeap_Init(&ctxt->heap, buf, size);
|
||||
}
|
||||
else
|
||||
{
|
||||
GameStateHeap_Init(&ctxt->heap, 0, 0);
|
||||
assert_fail("../game.c", 0x432);
|
||||
}
|
||||
}
|
||||
|
||||
void Game_StateInit(GameState *ctxt, GameStateFunc gameStateInit, GraphicsContext *gCtxt) {
|
||||
ctxt->gfxCtx = gCtxt;
|
||||
ctxt->frames = 0U;
|
||||
ctxt->main = NULL;
|
||||
ctxt->destroy = NULL;
|
||||
ctxt->running = 1;
|
||||
gCtxt->unk274 = D_801FBB88;
|
||||
gCtxt->viConfigFeatures = gViConfigFeatures;
|
||||
gCtxt->viConfigXScale = gViConfigXScale;
|
||||
gCtxt->viConfigYScale = gViConfigYScale;
|
||||
ctxt->nextGameStateInit = NULL;
|
||||
ctxt->nextGameStateSize = 0U;
|
||||
|
||||
lblUnk:;
|
||||
Gamealloc_Init(&ctxt->alloc);
|
||||
Game_InitHeap(ctxt, 0x100000);
|
||||
Game_SetFramerateDivisor(ctxt, 3);
|
||||
|
||||
gameStateInit(ctxt);
|
||||
|
||||
func_80140CE0(&D_801F8010);
|
||||
func_801420C0(&D_801F8020);
|
||||
func_801418B0(&sMonoColors);
|
||||
func_80140898(&D_801F8048);
|
||||
func_801773A0(&D_801F7FF0);
|
||||
func_8013ED9C();
|
||||
|
||||
osSendMesg(&ctxt->gfxCtx->unk5C, NULL, 1);
|
||||
}
|
||||
|
||||
void Game_StateFini(GameState *ctxt) {
|
||||
func_80172BC0();
|
||||
func_8019E014();
|
||||
osRecvMesg(&ctxt->gfxCtx->unk5C, 0, 1);
|
||||
|
||||
if (ctxt->destroy != 0) {
|
||||
ctxt->destroy(ctxt);
|
||||
}
|
||||
|
||||
func_8013EDD0();
|
||||
func_801773C4(&D_801F7FF0);
|
||||
func_80140D04(&D_801F8010);
|
||||
func_801420F4(&D_801F8020);
|
||||
func_80141900(&sMonoColors);
|
||||
func_80140900(&D_801F8048);
|
||||
GameStateHeap_Clear(&ctxt->heap);
|
||||
Gamealloc_FreeAll(&ctxt->alloc);
|
||||
}
|
||||
|
||||
GameStateFunc Game_GetNextStateInit(GameState *ctxt) {
|
||||
return ctxt->nextGameStateInit;
|
||||
}
|
||||
|
||||
u32 Game_GetNextStateSize(GameState *ctxt) {
|
||||
return ctxt->nextGameStateSize;
|
||||
}
|
||||
|
||||
u32 Game_GetShouldContinue(GameState *ctxt) {
|
||||
return ctxt->running;
|
||||
}
|
||||
|
||||
s32 Game_GetHeapFreeSize(GameState *ctxt) {
|
||||
return GameStateHeap_GetFreeSize(&ctxt->heap);
|
||||
}
|
||||
|
||||
s32 func_80173B48(GameState *ctxt) {
|
||||
s32 result;
|
||||
result = OS_CYCLES_TO_NSEC(ctxt->framerateDivisor * sIrqMgrRetraceTime) - OS_CYCLES_TO_NSEC(D_801FBAF0);
|
||||
return result;
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
void TitleSetup_GameStateResetContext(void) {
|
||||
XREG(2) = 0;
|
||||
XREG(10) = 0x1A;
|
||||
XREG(11) = 0x14;
|
||||
XREG(12) = 0xE;
|
||||
XREG(13) = 0;
|
||||
XREG(31) = 0;
|
||||
XREG(41) = 0x50;
|
||||
XREG(43) = 0xFFFFFC54;
|
||||
|
||||
XREG(44) = 0xD7;
|
||||
XREG(45) = 0xDA;
|
||||
XREG(68) = 0x61;
|
||||
XREG(69) = 0x93;
|
||||
XREG(70) = 0x28;
|
||||
XREG(73) = 0x1E;
|
||||
XREG(74) = 0x42;
|
||||
XREG(75) = 0x1E;
|
||||
XREG(76) = 0x1C;
|
||||
XREG(77) = 0x3C;
|
||||
XREG(78) = 0x2F;
|
||||
XREG(79) = 0x62;
|
||||
XREG(87) = 0;
|
||||
XREG(88) = 0x56;
|
||||
XREG(89) = 0x258;
|
||||
XREG(90) = 0x1C2;
|
||||
XREG(91) = 0;
|
||||
XREG(94) = 0;
|
||||
XREG(95) = 0;
|
||||
|
||||
YREG(32) = 0x50;
|
||||
YREG(33) = 0x3C;
|
||||
YREG(34) = 0xDC;
|
||||
YREG(35) = 0x3C;
|
||||
YREG(36) = 0x50;
|
||||
YREG(37) = 0xA0;
|
||||
YREG(38) = 0xDC;
|
||||
YREG(39) = 0xA0;
|
||||
YREG(40) = 0x8E;
|
||||
YREG(41) = 0x6C;
|
||||
YREG(42) = 0xCC;
|
||||
YREG(43) = 0xB1;
|
||||
}
|
||||
|
||||
void TitleSetup_InitImpl(GameState *gameState) {
|
||||
func_80185908();
|
||||
func_800E9360();
|
||||
TitleSetup_GameStateResetContext();
|
||||
|
||||
gameState->running = 0;
|
||||
|
||||
setNextGamestate:; // This label is probably a leftover of a debug ifdef, it's essential to not have gameState->running reordered!
|
||||
SET_NEXT_GAMESTATE(gameState, &Title_Init, TitleContext);
|
||||
}
|
||||
|
||||
void TitleSetup_Destroy(GameState *gameState) {
|
||||
;
|
||||
}
|
||||
|
||||
void TitleSetup_Init(GameState *gameState) {
|
||||
gameState->destroy = &TitleSetup_Destroy;
|
||||
TitleSetup_InitImpl(gameState);
|
||||
}
|
||||
|
|
@ -43,8 +43,8 @@ void PreNMI_Main(PreNMIContext* prenmiCtx) {
|
|||
void PreNMI_Destroy(PreNMIContext* prenmiCtx) {}
|
||||
|
||||
void PreNMI_Init(PreNMIContext* prenmiCtx) {
|
||||
prenmiCtx->state.main = (func_ptr)PreNMI_Main;
|
||||
prenmiCtx->state.destroy = (func_ptr)PreNMI_Destroy;
|
||||
prenmiCtx->state.main = (GameStateFunc)PreNMI_Main;
|
||||
prenmiCtx->state.destroy = (GameStateFunc)PreNMI_Destroy;
|
||||
prenmiCtx->timer = 30;
|
||||
prenmiCtx->unkA8 = 10;
|
||||
|
||||
|
|
|
|||
|
|
@ -1307,7 +1307,7 @@ GLOBAL_ASM("asm/non_matchings/z_rcp/func_8012CF0C.asm")
|
|||
#endif
|
||||
|
||||
void func_8012D374(GraphicsContext* gCtxt, u8 r, u8 g, u8 b) {
|
||||
if ((gStaticContext->data[0xbe] < 2) && (D_801F6D10 < 2)) {
|
||||
if ((R_PAUSE_MENU_MODE < 2) && (D_801F6D10 < 2)) {
|
||||
func_8012CF0C(gCtxt, 1, 1, r, g, b);
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -1527,7 +1527,7 @@
|
|||
0x800E8FA4:("func_800E8FA4","s32","Actor* actor, Vec3f* param_2, Vec3s* param_3, Vec3s* param_4"),
|
||||
0x800E9138:("func_800E9138","s32","GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* param_4, f32 param_5"),
|
||||
0x800E9250:("func_800E9250","s32","GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* param_4, Vec3f param_5"),
|
||||
0x800E9360:("func_800E9360","void","void"),
|
||||
0x800E9360:("func_800E9360","u8","void"),
|
||||
0x800E93E0:("static_context_init","void","void"),
|
||||
0x800E9470:("func_800E9470","void","void"),
|
||||
0x800E9488:("func_800E9488","void","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"),
|
||||
|
|
@ -2757,13 +2757,13 @@
|
|||
0x8014026C:("func_8014026C","void","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"),
|
||||
0x80140730:("func_80140730","void","void"),
|
||||
0x80140810:("func_80140810","void","void"),
|
||||
0x80140898:("func_80140898","void","void"),
|
||||
0x80140900:("func_80140900","void","void"),
|
||||
0x80140898:("func_80140898","void","void* arg0"),
|
||||
0x80140900:("func_80140900","void","void* arg0"),
|
||||
0x8014090C:("func_8014090C","void","void"),
|
||||
0x80140970:("func_80140970","void","void"),
|
||||
0x80140CE0:("func_80140CE0","void","void"),
|
||||
0x80140D04:("func_80140D04","void","void"),
|
||||
0x80140D10:("func_80140D10","void","void"),
|
||||
0x80140CE0:("func_80140CE0","void","void* arg0"),
|
||||
0x80140D04:("func_80140D04","void","void* arg0"),
|
||||
0x80140D10:("func_80140D10","void","void* arg0, Gfx** gfx, u32 arg2"),
|
||||
0x80140E80:("func_80140E80","void","void* param_1"),
|
||||
0x80140EA0:("func_80140EA0","void","void"),
|
||||
0x80140EAC:("func_80140EAC","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6"),
|
||||
|
|
@ -2774,15 +2774,15 @@
|
|||
0x8014151C:("func_8014151C","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6"),
|
||||
0x80141678:("func_80141678","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5"),
|
||||
0x80141778:("func_80141778","void","void"),
|
||||
0x801418B0:("func_801418B0","void","void"),
|
||||
0x80141900:("func_80141900","void","void"),
|
||||
0x801418B0:("func_801418B0","void","void* arg0"),
|
||||
0x80141900:("func_80141900","void","void* arg0"),
|
||||
0x80141924:("func_80141924","void","void"),
|
||||
0x80141C34:("func_80141C34","void","void"),
|
||||
0x80141E60:("func_80141E60","void","void"),
|
||||
0x80141E60:("VisMono_Draw","void","void* arg0, Gfx** gfx, u32 arg2"),
|
||||
0x8014204C:("func_8014204C","void","void"),
|
||||
0x801420C0:("func_801420C0","void","void"),
|
||||
0x801420F4:("func_801420F4","void","void"),
|
||||
0x80142100:("func_80142100","void","void"),
|
||||
0x801420C0:("func_801420C0","void","void* arg0"),
|
||||
0x801420F4:("func_801420F4","void","void* arg0"),
|
||||
0x80142100:("func_80142100","void","void* arg0, Gfx** gfx, u32 arg2"),
|
||||
0x80142440:("func_80142440","void","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"),
|
||||
0x80143148:("func_80143148","void","void"),
|
||||
0x801431E8:("func_801431E8","void","void"),
|
||||
|
|
@ -3118,15 +3118,15 @@
|
|||
0x80172ED0:("Audio_ThreadEntry","void","AudioThreadStruct* audio"),
|
||||
0x80173048:("Audio_WaitForInit","void","AudioThreadStruct* param_1"),
|
||||
0x80173074:("Audio_Start","void","AudioThreadStruct* audio, s32* audioThreadStackEnd, OSPri pri, OSId id, SchedThreadStruct* sched, IrqMgr* irq"),
|
||||
0x80173130:("func_80173130","void","void"),
|
||||
0x801732DC:("Initial_Init2","void","GameState* ctxt"),
|
||||
0x8017332C:("Initial_Fini","void","void"),
|
||||
0x80173338:("Initial_Init","void","GameState* ctxt"),
|
||||
0x80173130:("TitleSetup_GameStateResetContext","void","void"),
|
||||
0x801732DC:("TitleSetup_InitImpl","void","GameState* gameState"),
|
||||
0x8017332C:("TitleSetup_Destroy","void","GameState* gameState"),
|
||||
0x80173338:("TitleSetup_Init","void","GameState* gameState"),
|
||||
0x80173360:("Game_UpdateFramerateVariables","void","s32 divisor"),
|
||||
0x801733A8:("Game_SetFramerateDivisor","void","GameState* iParm1, u32 divisor"),
|
||||
0x801733DC:("func_801733DC","void","void"),
|
||||
0x801733A8:("Game_SetFramerateDivisor","void","GameState* gameState, s32 divisor"),
|
||||
0x801733DC:("GameState_SetFBFilter","void","Gfx** gfx, u32 arg1"),
|
||||
0x80173534:("Game_Nop80173534","void","GameState* ctxt"),
|
||||
0x80173540:("func_80173540","void","GameState* ctxt, GraphicsContext* gCtxt"),
|
||||
0x80173540:("GameState_Draw","void","GameState* ctxt, GraphicsContext* gCtxt"),
|
||||
0x80173644:("Game_ResetSegments","void","GraphicsContext* gCtxt"),
|
||||
0x801736DC:("func_801736DC","void","GraphicsContext* gCtxt"),
|
||||
0x80173754:("Game_UpdateInput","void","GameState* ctxt"),
|
||||
|
|
@ -3134,13 +3134,13 @@
|
|||
0x801737E4:("Game_IncrementFrameCount","void","GameState* ctxt"),
|
||||
0x80173810:("Game_InitHeap","void","GameState* ctxt, u32 size"),
|
||||
0x80173880:("Game_ResizeHeap","void","GameState* ctxt, u32 size"),
|
||||
0x80173950:("Game_StateInit","void","GameState* ctxt, func_ptr gameStateInit, GraphicsContext* gCtxt"),
|
||||
0x80173950:("Game_StateInit","void","GameState* ctxt, GameStateFunc gameStateInit, GraphicsContext* gCtxt"),
|
||||
0x80173A50:("Game_StateFini","void","GameState* ctxt"),
|
||||
0x80173B00:("Game_GetNextStateInit","UNK_TYPE4","GameState* ctxt"),
|
||||
0x80173B00:("Game_GetNextStateInit","GameStateFunc","GameState* ctxt"),
|
||||
0x80173B0C:("Game_GetNextStateSize","u32","GameState* ctxt"),
|
||||
0x80173B18:("Game_GetShouldContinue","u32","GameState* ctxt"),
|
||||
0x80173B24:("Game_GetHeapFreeSize","void","GameState* ctxt"),
|
||||
0x80173B48:("func_80173B48","int","GameState* ctxt"),
|
||||
0x80173B24:("Game_GetHeapFreeSize","s32","GameState* ctxt"),
|
||||
0x80173B48:("func_80173B48","s32","GameState* ctxt"),
|
||||
0x80173BF0:("func_80173BF0","GameAlloc*","GameAlloc* heap"),
|
||||
0x80173C10:("Gamealloc_Alloc","void*","GameAlloc* heap, u32 size"),
|
||||
0x80173C7C:("Gamealloc_Free","void","GameAlloc* heap, void* ptr"),
|
||||
|
|
@ -3219,12 +3219,12 @@
|
|||
0x80177280:("func_80177280","void","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"),
|
||||
0x801772A0:("Sched_Start","void","SchedThreadStruct* sched, void* stack, OSPri pri, UNK_TYPE4 param_4, UNK_TYPE4 param_5, IrqMgr* irqmgrStruct"),
|
||||
0x80177390:("func_80177390","void","void"),
|
||||
0x801773A0:("func_801773A0","void","void"),
|
||||
0x801773C4:("func_801773C4","void","void"),
|
||||
0x801773D0:("func_801773D0","void","void"),
|
||||
0x801773A0:("func_801773A0","void","void* arg0"),
|
||||
0x801773C4:("func_801773C4","void","void* arg0"),
|
||||
0x801773D0:("SpeedMeter_DrawTimeEntries","void","void* displayList, GraphicsContext* gCtx"),
|
||||
0x80177A84:("func_80177A84","void","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"),
|
||||
0x80177AC8:("func_80177AC8","void","void"),
|
||||
0x80177E58:("func_80177E58","void","void"),
|
||||
0x80177E58:("SpeedMeter_DrawAllocEntries","void","void* displayList, GraphicsContext *gCtx, GameState *ctx"),
|
||||
0x801780F0:("func_801780F0","void","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"),
|
||||
0x801781EC:("func_801781EC","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5"),
|
||||
0x8017842C:("func_8017842C","void","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"),
|
||||
|
|
@ -3452,7 +3452,7 @@
|
|||
0x801857C0:("func_801857C0","void","void"),
|
||||
0x801857D0:("func_801857D0","char*","void"),
|
||||
0x80185864:("func_80185864","void","void"),
|
||||
0x80185908:("func_80185908","void","void"),
|
||||
0x80185908:("func_80185908","u32","void"),
|
||||
0x80185968:("func_80185968","void","void"),
|
||||
0x801859F0:("func_801859F0","void","void"),
|
||||
0x80185A2C:("func_80185A2C","void","void"),
|
||||
|
|
|
|||
|
|
@ -4217,9 +4217,9 @@
|
|||
0x801F6FE8:("slowlyStack","u8","[4096]",0x1000),
|
||||
0x801F7FE8:("D_801F7FE8","UNK_TYPE1","",0x1),
|
||||
0x801F7FF0:("D_801F7FF0","UNK_TYPE1","",0x1),
|
||||
0x801F8010:("D_801F8010","UNK_TYPE1","",0x1),
|
||||
0x801F8020:("D_801F8020","UNK_TYPE1","",0x1),
|
||||
0x801F8030:("D_801F8030","UNK_TYPE1","",0x1),
|
||||
0x801F8010:("D_801F8010","struct_801F8010","",0x10),
|
||||
0x801F8020:("D_801F8020","struct_801F8020","",0x10),
|
||||
0x801F8030:("sMonoColors","VisMono","",0x18),
|
||||
0x801F8048:("D_801F8048","UNK_TYPE1","",0x1),
|
||||
0x801F80D0:("grapgFaultAddrConvClient","FaultAddrConvClient","",0xc),
|
||||
0x801F80E0:("graphFaultClient","FaultClient","",0x10),
|
||||
|
|
@ -4257,8 +4257,8 @@
|
|||
0x801FBAD4:("D_801FBAD4","UNK_TYPE1","",0x1),
|
||||
0x801FBAE0:("D_801FBAE0","UNK_TYPE1","",0x1),
|
||||
0x801FBAE8:("D_801FBAE8","UNK_TYPE1","",0x1),
|
||||
0x801FBAF0:("D_801FBAF0","u64","",0x8),
|
||||
0x801FBAF8:("lastRenderFrameDuration","u64","",0x8),
|
||||
0x801FBAF0:("D_801FBAF0","volatile OSTime","",0x8),
|
||||
0x801FBAF8:("lastRenderFrameDuration","volatile OSTime","",0x8),
|
||||
0x801FBB00:("D_801FBB00","UNK_TYPE1","",0x1),
|
||||
0x801FBB04:("D_801FBB04","UNK_TYPE1","",0x1),
|
||||
0x801FBB08:("D_801FBB08","UNK_TYPE1","",0x1),
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
|
||||
GROUP_SIZE = 0x60
|
||||
DATA_OFFSET = 0x14
|
||||
|
||||
REGISTER_NAMES = " SOPQMYDUIZCNKXcsiWAVHGmnBdkb"
|
||||
|
||||
def get_reg_macro(offset):
|
||||
reg = (offset - DATA_OFFSET) // 2
|
||||
group = reg // GROUP_SIZE
|
||||
reg_in_group = reg % GROUP_SIZE
|
||||
return "%cREG(%d)\n" % (REGISTER_NAMES[group], reg_in_group)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Converts a GameInfo offset to a REG macro.")
|
||||
parser.add_argument("offset", help="offset to GameInfo in hexadecimal")
|
||||
args = parser.parse_args()
|
||||
print(get_reg_macro(int(args.offset, 16)))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -379,7 +379,7 @@ D_801F7FE8 = code_bss_start + 0x00014048;
|
|||
D_801F7FF0 = code_bss_start + 0x00014050;
|
||||
D_801F8010 = code_bss_start + 0x00014070;
|
||||
D_801F8020 = code_bss_start + 0x00014080;
|
||||
D_801F8030 = code_bss_start + 0x00014090;
|
||||
sMonoColors = code_bss_start + 0x00014090;
|
||||
D_801F8048 = code_bss_start + 0x000140A8;
|
||||
grapgFaultAddrConvClient = code_bss_start + 0x00014130;
|
||||
graphFaultClient = code_bss_start + 0x00014140;
|
||||
|
|
|
|||
Loading…
Reference in New Issue