Migrated a lot of boot bss, matched a few NON_MATCHINGs in boot (#266)

* Import bss to boot_main and idle, match last function in idle

* Some pointer cleanup in idle, spec

* Clean up idle, add build.c, add bss to CIC6105

* Import rand bss

* sptask bss and a macro

* sptask updated to use libultra macros

* siacs.c bss

* Macros in CIC and idle

* controller bss

* seteventmesg bss

* spec

* pimgr and piacs bss

* initialize OK, threadsave, initialize, pimgr bss

* Match DmaMgr_Start

* Fix bss reorder using separate file

* Small cleanup of hex/dec in buffer sizes

* Add comment, remove unused bss from spec

* Merge remote-tracking branch 'upstream/master' into boot_bss

* Format

* Delete files

* remove commented-out structs

* Bit more cleanup

* Addressed reviews

* Format
This commit is contained in:
EllipticEllipsis
2021-08-18 16:12:35 +01:00
committed by GitHub
parent 49922b4856
commit fa95f9e6e8
33 changed files with 389 additions and 269 deletions
+2 -9
View File
@@ -11,13 +11,6 @@ double sqrt(double d);
#pragma intrinsic(sqrt)
void bootproc(void);
void Idle_ClearMemory(void* begin, void* end);
void Idle_InitFramebuffer(u32* ptr, u32 numBytes, u32 value);
void Idle_InitScreen(void);
void Idle_InitMemory(void);
void Idle_InitCodeAndMemory(void);
void Main_ThreadEntry(void* arg);
void Idle_InitVideo(void);
void Idle_ThreadEntry(void* arg);
void ViConfig_UpdateVi(u32 arg0);
void ViConfig_UpdateBlack(void);
@@ -315,7 +308,7 @@ void __osInitialize_autodetect(void);
void* osViGetNextFramebuffer(void);
void guPerspectiveF(float mf[4][4], u16* perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale);
void guPerspective(Mtx* m, u16* perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale);
s32 __osSpRawStartDma(s32 direction, u32 devAddr, void* dramAddr, u32 size);
s32 __osSpRawStartDma(s32 direction, void* devAddr, void* dramAddr, u32 size);
s32 __osSiRawStartDma(s32 direction, void* dramAddr);
// void osEPiLinkHandle(void);
void osViBlack(u8 active);
@@ -494,7 +487,7 @@ float __ull_to_f(unsigned long long l);
// void osVoiceControlGain(void);
// void osVoiceStartReadData(void);
void* osViGetCurrentFramebuffer(void);
s32 __osSpSetPc(u32 data);
s32 __osSpSetPc(void* data);
// void __osVoiceContWrite4(void);
void __osGetHWIntrRoutine(s32 idx, OSMesgQueue** outQueue, OSMesg* outMsg);
// void __osSetHWIntrRoutine(void);
+12 -40
View File
@@ -18,7 +18,7 @@ typedef struct {
/* 0x0C */ u32 sectorSize;
/* 0x10 */ u32 C1ErrNum;
/* 0x14 */ u32 C1ErrSector[4];
} __OSBlockInfo;
} __OSBlockInfo; // size = 0x24
typedef struct {
@@ -30,7 +30,7 @@ typedef struct {
/* 0x10 */ u32 bmCtlShadow;
/* 0x14 */ u32 seqCtlShadow;
/* 0x18 */ __OSBlockInfo block[2];
} __OSTranxInfo;
} __OSTranxInfo; // size = 0x60
typedef struct OSPiHandle_s {
@@ -44,13 +44,13 @@ typedef struct OSPiHandle_s {
/* 0x0C */ u32 baseAddress;
/* 0x10 */ u32 speed;
/* 0x14 */ __OSTranxInfo transferInfo;
} OSPiHandle;
} OSPiHandle; // size = 0x74
typedef struct {
/* 0x0 */ u8 type;
/* 0x4 */ u32 address;
} OSPiInfo;
} OSPiInfo; // size = 0x8
typedef struct {
@@ -58,7 +58,7 @@ typedef struct {
/* 0x2 */ u8 pri;
/* 0x3 */ u8 status;
/* 0x4 */ OSMesgQueue* retQueue;
} OSIoMesgHdr;
} OSIoMesgHdr; // size = 0x8
typedef struct {
@@ -67,7 +67,7 @@ typedef struct {
/* 0x0C */ u32 devAddr;
/* 0x10 */ u32 size;
/* 0x14 */ OSPiHandle* piHandle;
} OSIoMesg;
} OSIoMesg; // size = 0x88
typedef struct {
@@ -78,37 +78,9 @@ typedef struct {
/* 0x10 */ OSMesgQueue* acsQueue;
/* 0x14 */ s32 (*piDmaCallback)(s32, u32, void*, u32);
/* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, u32, void*, u32);
} OSDevMgr;
} OSDevMgr; // size = 0x1C
typedef struct {
/* 0x00 */ u32 ctrl;
/* 0x04 */ u32 width;
/* 0x08 */ u32 burst;
/* 0x0C */ u32 vSync;
/* 0x10 */ u32 hSync;
/* 0x14 */ u32 leap;
/* 0x18 */ u32 hStart;
/* 0x1C */ u32 xScale;
/* 0x20 */ u32 vCurrent;
} OSViCommonRegs;
typedef struct {
/* 0x00 */ u32 origin;
/* 0x04 */ u32 yScale;
/* 0x08 */ u32 vStart;
/* 0x0C */ u32 vBurst;
/* 0x10 */ u32 vIntr;
} OSViFieldRegs;
typedef struct {
/* 0x00 */ u8 type;
/* 0x04 */ OSViCommonRegs comRegs;
/* 0x28 */ OSViFieldRegs fldRegs[2];
} OSViMode;
typedef u64 OSTime;
@@ -119,14 +91,14 @@ typedef struct OSTimer_s {
/* 0x10 */ OSTime value;
/* 0x18 */ OSMesgQueue* mq;
/* 0x1C */ OSMesg msg;
} OSTimer;
} OSTimer; // size = 0x20
typedef struct {
/* 0x0 */ u16 type;
/* 0x2 */ u8 status;
/* 0x3 */ u8 errno;
} OSContStatus;
} OSContStatus; // size = 0x4
typedef struct {
@@ -134,7 +106,7 @@ typedef struct {
/* 0x2 */ s8 stick_x;
/* 0x3 */ s8 stick_y;
/* 0x4 */ u8 errno;
} OSContPad;
} OSContPad; // size = 0x6
typedef struct {
@@ -143,14 +115,14 @@ typedef struct {
/* 0x24 */ u8 addressCrc;
/* 0x25 */ u8 dataCrc;
/* 0x26 */ u8 errno;
} OSContRamIo;
} OSContRamIo; // size = 0x28
typedef struct {
/* 0x0 */ u16* histo_base;
/* 0x4 */ u32 histo_size;
/* 0x8 */ u32* text_start;
/* 0xC */ u32* text_end;
} OSProf;
} OSProf; // size = 0x10
typedef struct {
/* 0x0 */ OSMesgQueue* mq;
+2
View File
@@ -10,6 +10,8 @@
#include "ultra64/message.h"
#include "ultra64/sptask.h"
#include "ultra64/thread.h"
#include "ultra64/rcp.h"
#include "ultra64/rsp.h"
#include "ultra64/vi.h"
#endif
+14
View File
@@ -0,0 +1,14 @@
#ifndef _ULTRA64_RCP_H_
#define _ULTRA64_RCP_H_
#define VI_NTSC_CLOCK 48681812 /* Hz = 48.681812 MHz */
#define VI_PAL_CLOCK 49656530 /* Hz = 49.656530 MHz */
#define VI_MPAL_CLOCK 48628316 /* Hz = 48.628316 MHz */
#define DEVICE_TYPE_CART 0 /* ROM cartridge */
#define DEVICE_TYPE_BULK 1 /* ROM bulk */
#define DEVICE_TYPE_64DD 2 /* 64 Disk Drive */
#define DEVICE_TYPE_SRAM 3 /* SRAM */
#define DEVICE_TYPE_INIT 7 /* initial value */
#endif
+105
View File
@@ -0,0 +1,105 @@
#ifndef _ULTRA64_VI_H_
#define _ULTRA64_VI_H_
/* Special Features */
#define OS_VI_GAMMA_ON 0x0001
#define OS_VI_GAMMA_OFF 0x0002
#define OS_VI_GAMMA_DITHER_ON 0x0004
#define OS_VI_GAMMA_DITHER_OFF 0x0008
#define OS_VI_DIVOT_ON 0x0010
#define OS_VI_DIVOT_OFF 0x0020
#define OS_VI_DITHER_FILTER_ON 0x0040
#define OS_VI_DITHER_FILTER_OFF 0x0080
#define OS_VI_GAMMA 0x08
#define OS_VI_GAMMA_DITHER 0x04
#define OS_VI_DIVOT 0x10
#define OS_VI_DITHER_FILTER 0x10000
#define OS_VI_UNK1 0x1
#define OS_VI_UNK2 0x2
#define OS_VI_UNK40 0x40
#define OS_VI_UNK100 0x100
#define OS_VI_UNK200 0x200
#define OS_VI_UNK1000 0x1000
#define OS_VI_UNK2000 0x2000
typedef struct {
/* 0x00 */ u32 ctrl;
/* 0x04 */ u32 width;
/* 0x08 */ u32 burst;
/* 0x0C */ u32 vSync;
/* 0x10 */ u32 hSync;
/* 0x14 */ u32 leap;
/* 0x18 */ u32 hStart;
/* 0x1C */ u32 xScale;
/* 0x20 */ u32 vCurrent;
} OSViCommonRegs; // size = 0x20
typedef struct {
/* 0x00 */ u32 origin;
/* 0x04 */ u32 yScale;
/* 0x08 */ u32 vStart;
/* 0x0C */ u32 vBurst;
/* 0x10 */ u32 vIntr;
} OSViFieldRegs; // size = 0x14
typedef struct {
/* 0x00 */ u8 type;
/* 0x04 */ OSViCommonRegs comRegs;
/* 0x24 */ OSViFieldRegs fldRegs[2];
} OSViMode; // size = 0x4C
typedef struct {
/* 0x0 */ f32 factor;
/* 0x4 */ u16 offset;
/* 0x8 */ u32 scale;
} __OSViScale; // size = 0x0C
typedef struct {
/* 0x00 */ u16 state;
/* 0x02 */ u16 retraceCount;
/* 0x04 */ void* buffer;
/* 0x08 */ OSViMode* modep;
/* 0x0c */ u32 features;
/* 0x10 */ OSMesgQueue* mq;
/* 0x14 */ OSMesg* msg;
/* 0x18 */ __OSViScale x;
/* 0x24 */ __OSViScale y;
} OSViContext; // size = 0x30
#define OS_VI_NTSC_LPN1 0 /* NTSC */
#define OS_VI_NTSC_LPF1 1
#define OS_VI_NTSC_LAN1 2
#define OS_VI_NTSC_LAF1 3
#define OS_VI_NTSC_LPN2 4
#define OS_VI_NTSC_LPF2 5
#define OS_VI_NTSC_LAN2 6
#define OS_VI_NTSC_LAF2 7
#define OS_VI_NTSC_HPN1 8
#define OS_VI_NTSC_HPF1 9
#define OS_VI_NTSC_HAN1 10
#define OS_VI_NTSC_HAF1 11
#define OS_VI_NTSC_HPN2 12
#define OS_VI_NTSC_HPF2 13
#define OS_VI_PAL_LPN1 14 /* PAL */
#define OS_VI_PAL_LPF1 15
#define OS_VI_PAL_LAN1 16
#define OS_VI_PAL_LAF1 17
#define OS_VI_PAL_LPN2 18
#define OS_VI_PAL_LPF2 19
#define OS_VI_PAL_LAN2 20
#define OS_VI_PAL_LAF2 21
#define OS_VI_PAL_HPN1 22
#define OS_VI_PAL_HPF1 23
#define OS_VI_PAL_HAN1 24
#define OS_VI_PAL_HAF1 25
#define OS_VI_PAL_HPN2 26
#define OS_VI_PAL_HPF2 27
#define OS_TV_PAL 0
#define OS_TV_NTSC 1
#define OS_TV_MPAL 2
#define OS_VI_UNK28 28
#endif
+46 -46
View File
@@ -44,10 +44,10 @@ extern StackEntry* sStackInfoListEnd;
// extern UNK_TYPE1 sGfxPrintFontData;
// extern UNK_TYPE4 D_80097500;
// extern UNK_TYPE4 D_80097524;
extern u32 sRandInt;
// extern u32 sRandInt;
extern OSViMode osViModeNtscHpf1;
extern OSViMode osViModePalLan1;
extern s16 sintable[1024];
extern s16 sintable[0x400];
extern __osHwInt __osHwIntTable[];
// extern UNK_TYPE1 D_80097DE4;
// extern UNK_TYPE4 D_80097E08;
@@ -280,21 +280,22 @@ extern char D_800994B0[];
extern f64 D_800994B8;
extern f64 D_800994C0;
extern f64 D_800994C8;
extern char D_800994D0[];
extern char D_800994DC[];
extern StackEntry sBootThreadInfo;
extern OSThread sIdleThread;
extern u8 sIdleThreadStack[1024];
extern StackEntry sIdleThreadInfo;
extern u8 sBootThreadStack[1024];
extern IrqMgr gIrqMgr;
extern u8 sIrqMgrStack[1280];
extern StackEntry sIrqMgrStackInfo;
extern OSThread gMainThread;
extern u8 sMainStack[2304];
extern StackEntry sMainStackInfo;
extern OSMesg sPiMgrCmdBuff[50];
extern OSMesgQueue gPiMgrCmdQ;
extern char gBuildTeam[];
extern char gBuildDate[];
extern char gBuildMakeOption[];
// extern StackEntry sBootThreadInfo;
// extern OSThread sIdleThread;
// extern u8 sIdleThreadStack[0x400];
// extern StackEntry sIdleThreadInfo;
// extern u8 sBootThreadStack[0x400];
// extern IrqMgr gIrqMgr;
// extern u8 sIrqMgrStack[0x500];
// extern StackEntry sIrqMgrStackInfo;
// extern OSThread gMainThread;
// extern u8 sMainStack[0x900];
// extern StackEntry sMainStackInfo;
// extern OSMesg sPiMgrCmdBuff[50];
// extern OSMesgQueue gPiMgrCmdQ;
extern OSViMode gViConfigMode;
extern u8 D_8009B290;
extern StackEntry sDmaMgrStackInfo;
@@ -302,51 +303,50 @@ extern u16 numDmaEntries;
extern OSMesgQueue sDmaMgrMsgQueue;
extern OSMesg sDmaMgrMsgs[32];
extern OSThread sDmaMgrThread;
extern u8 sDmaMgrStack[1280];
// extern UNK_TYPE1 D_8009BA08;
extern u8 sDmaMgrStack[0x500];
extern u8 sYaz0DataBuffer[0x400];
extern u8* sYaz0CurDataEnd;
extern u32 sYaz0CurRomStart;
extern u32 sYaz0CurSize;
extern u8* sYaz0MaxPtr;
extern u8* D_8009BE20;
extern UNK_TYPE4 D_8009BE30;
extern UNK_TYPE4 D_8009BE34;
extern FaultClient romInfoFaultClient;
// extern UNK_TYPE4 D_8009BE30;
// extern UNK_TYPE4 D_8009BE34;
// extern FaultClient romInfoFaultClient;
extern FaultThreadStruct* sFaultContext;
extern f32 D_8009BE54;
extern u32 faultCustomOptions;
extern u32 faultCopyToLog;
extern u8 sFaultStack[1536];
extern u8 sFaultStack[0x600];
extern StackEntry sFaultThreadInfo;
extern FaultThreadStruct gFaultStruct;
extern FaultDrawer sFaultDrawerStruct;
// extern UNK_TYPE4 D_8009CD10;
extern Arena gSystemArena;
// extern Arena gSystemArena;
extern u32 sRandFloat;
// extern UNK_TYPE4 sArenaLockMsg;
extern OSTask tmp_task;
// extern OSTask tmp_task;
// extern UNK_TYPE1 D_8009CDB0;
extern OSMesg siAccessBuf[1];
extern OSMesgQueue __osSiAccessQueue;
// extern OSMesg siAccessBuf[1];
// extern OSMesgQueue __osSiAccessQueue;
extern OSPifRam __osContPifRam;
// extern UNK_TYPE1 D_8009CF0C;
extern u8 __osContLastCmd;
extern u8 __osMaxControllers;
extern OSMesgQueue D_8009CF38;
extern OSMesg D_8009CF50[1];
// extern UNK_TYPE1 D_8009CF60;
extern UNK_TYPE4 D_8009CF70;
// extern OSMesgQueue D_8009CF38;
// extern OSMesg D_8009CF50;
extern UNK_TYPE1 D_8009CF60;
// extern UNK_TYPE4 D_8009CF70;
extern OSThread __osThreadSave;
extern OSPiHandle D_8009D130;
extern OSPiHandle D_8009D1A8;
extern OSThread D_8009D220;
extern u8 piManagerStack[4096];
extern OSMesgQueue D_8009E3D0;
extern OSMesg D_8009E3E8[1];
// extern OSThread D_8009D220;
// extern u8 piManagerStack[0x1000];
// extern OSMesgQueue D_8009E3D0;
// extern OSMesg D_8009E3E8[1];
extern OSMesg D_8009E3F0[1];
extern OSMesgQueue __osPiAccessQueue;
// extern UNK_TYPE1 D_8009E410;
extern __OSInode __osPfsInodeCache;
extern __OSEventState __osEventStateTab[16];
extern OSTimer D_8009E590;
extern OSTime __osCurrentTime;
@@ -356,7 +356,7 @@ extern u32 __osTimerCounter;
extern OSPifRam __osPfsPifRam;
extern OSPiHandle CartRomHandle;
extern OSThread viThread;
extern u8 viThreadStack[4096];
extern u8 viThreadStack[0x1000];
extern OSMesgQueue viEventQueue;
extern OSMesg viEventBuf[5];
extern OSIoMesg viRetraceMsg;
@@ -3425,7 +3425,7 @@ extern u8 D_801F6DFC;
extern SlowlyTask D_801F6E00;
extern s32 D_801F6FC0;
extern StackEntry slowlyStackEntry;
extern u8 slowlyStack[4096];
extern u8 slowlyStack[0x1000];
extern UNK_TYPE1 D_801F7FE8;
extern UNK_TYPE1 D_801F7FF0;
extern struct_801F8010 D_801F8010;
@@ -3445,10 +3445,10 @@ extern IrqMgrClient mainIrqmgrCallbackNode;
extern OSMesgQueue mainIrqmgrCallbackQueue;
extern OSMesg mainIrqCallbackBuffer[60];
extern OSThread graphOSThread;
extern u8 graphStack[6144];
extern u8 schedStack[1536];
extern u8 audioStack[2048];
extern u8 padmgrStack[1280];
extern u8 graphStack[0x1800];
extern u8 schedStack[0x600];
extern u8 audioStack[0x800];
extern u8 padmgrStack[0x500];
extern StackEntry graphStackEntry;
extern StackEntry schedStackEntry;
extern StackEntry audioStackEntry;
@@ -3575,7 +3575,7 @@ extern MtxF* sCurrentMatrix;
// extern UNK_TYPE1 D_801FBE28;
// extern UNK_TYPE1 D_801FBE2C;
// extern UNK_TYPE4 D_801FBE30;
extern u8 sys_flashromStack[4096];
extern u8 sys_flashromStack[0x1000];
extern StackEntry sys_flashromStackEntry;
extern OSThread sys_flashromOSThread;
extern s80185D40 D_801FD008;
@@ -3739,11 +3739,11 @@ extern s801FE7C0 D_801FE7C0[1];
extern OSMesgQueue D_80202980;
// extern UNK_TYPE1 D_802029D8;
extern OSMesgQueue D_80202AB0;
extern OSMesg D_80202AC8[16];
extern OSMesg D_80202AC8[0x10];
extern OSMesgQueue D_80202B08;
extern OSMesg D_80202B20[16];
extern OSMesg D_80202B20[0x10];
extern OSMesgQueue D_80202B60;
extern OSMesg D_80202B78[64];
extern OSMesg D_80202B78[0x40];
extern OSMesgQueue D_80203278;
extern OSMesg D_80203290[1];
// extern UNK_TYPE1 D_80203294;
+5 -5
View File
@@ -6,11 +6,11 @@
#include "PR/ultratypes.h"
#include "os.h"
typedef struct {
/* 0x0 */ f32 factor;
/* 0x4 */ u16 offset;
/* 0x8 */ u32 scale;
} __OSViScale;
// typedef struct {
// /* 0x0 */ f32 factor;
// /* 0x4 */ u16 offset;
// /* 0x8 */ u32 scale;
// } __OSViScale;
typedef struct {
-7
View File
@@ -390,13 +390,6 @@ typedef struct {
/* 0xC */ s32 rightX;
} Viewport; // size = 0x10
typedef struct {
/* 0x0 */ unsigned int inst1;
/* 0x4 */ unsigned int inst2;
/* 0x8 */ unsigned int inst3;
/* 0xC */ unsigned int inst4;
} __osExceptionVector; // size = 0x10
typedef void*(*fault_address_converter_func)(void* addr, void* arg);
typedef void(*fault_client_func)(void* arg1, void* arg2);