mirror of
https://github.com/izzy2lost/Starship.git
synced 2026-07-05 15:19:42 -07:00
Non-audio threads. Some data importation. (#17)
* threads galore * something's up * try this * I don't even * who knows * I can't stop it * let's try data for fun * ok I think I've gone far enough * well maybe a little more * visual assets somewhat documented * just keeps going * forgot formatting
This commit is contained in:
Vendored
+2
-1
@@ -15,7 +15,8 @@
|
||||
],
|
||||
"defines": [
|
||||
"_LANGUAGE_C",
|
||||
"_MIPS_SZLONG=32"
|
||||
"_MIPS_SZLONG=32",
|
||||
"F3DEX_GBI"
|
||||
],
|
||||
"cStandard": "gnu89", // C89 + some GNU extensions from C99 like C++ comments
|
||||
"cppStandard": "${default}"
|
||||
|
||||
Vendored
+2
-1
@@ -30,6 +30,7 @@
|
||||
"xstdio.h": "c",
|
||||
"controller.h": "c",
|
||||
"os_version.h": "c",
|
||||
"stdbool.h": "c"
|
||||
"stdbool.h": "c",
|
||||
"variables.h": "c"
|
||||
},
|
||||
}
|
||||
+23
-8
@@ -3,6 +3,13 @@
|
||||
|
||||
#include "structs.h"
|
||||
|
||||
void func_8000291C(void);
|
||||
void func_800029A8(void);
|
||||
void func_80002AF4(void);
|
||||
void func_80002BE8(void);
|
||||
void func_80002C50(void);
|
||||
void func_80002CB8(void);
|
||||
|
||||
f32 Math_ModF(f32 value, f32 mod);
|
||||
void Rand_Init(void);
|
||||
f32 Rand_ZeroOne(void);
|
||||
@@ -24,13 +31,13 @@ void func_80006A20(Matrix*, Vec3f*, Vec3f*);
|
||||
void func_80006EB8(Gfx**);
|
||||
void func_80006F20(void);
|
||||
|
||||
void func_800070C8(s64);
|
||||
void func_800070C8(u64);
|
||||
|
||||
s32 func_800071FC(s32*);
|
||||
s32 func_800072E0(s32*);
|
||||
|
||||
void func_80007D58(void*);
|
||||
s32 func_800071FC(UnkStruct_7D30*);
|
||||
s32 func_800072E0(UnkStruct_7D30*);
|
||||
|
||||
void Fault_ThreadEntry(void*);
|
||||
void func_80007FE4(FrameBuffer*, u16, u16);
|
||||
void func_80008018(void);
|
||||
|
||||
void func_800182F4(s32);
|
||||
@@ -39,7 +46,14 @@ void func_8001A838(u32 arg0);
|
||||
void func_8001AF40(s32 arg0);
|
||||
void func_8001DC6C(s32, s32);
|
||||
|
||||
s32 func_8001EF10(void);
|
||||
void func_8000FFCC(void);
|
||||
void func_8001DCE0(void);
|
||||
void func_8001DECC(void);
|
||||
SPTask* func_8001DF50(void);
|
||||
|
||||
void RdRam_CheckIPL3(void);
|
||||
|
||||
void Mio0_Decompress(void* header, u8* dst);
|
||||
|
||||
s32 vsprintf(char* dst, char* fmt, va_list args);
|
||||
|
||||
@@ -85,8 +99,6 @@ s64 __ull_div(s64, s64);
|
||||
s64 __ll_mul(s64, s64);
|
||||
s64 __ll_rshift(s64, s64);
|
||||
|
||||
s32 func_8002DE78(void*, s32, s32); // Not real signature
|
||||
|
||||
void func_80060FBC(u8*, f32*);
|
||||
void func_8006EEFC(s32, f32, f32, f32, f32, f32, f32, f32, f32, f32);
|
||||
|
||||
@@ -121,6 +133,8 @@ void func_8009FC0C(s32, s32, s32);
|
||||
f32 func_8009F768(f32);
|
||||
void func_8009FEA0(s32, s32, s32);
|
||||
void func_800A1200(s32, s32, f32, f32, char*);
|
||||
void func_800A18B0(void);
|
||||
void func_800A26C0(void);
|
||||
s32 func_800A3F50(s32);
|
||||
void func_800A5D6C(void);
|
||||
void func_800B8DD0(Gfx**, s16);
|
||||
@@ -128,6 +142,7 @@ void func_800BA490(void);
|
||||
void func_800BA4F0(void);
|
||||
void func_800BA808(u16*, s32);
|
||||
void func_800BB5D0(void);
|
||||
void func_800BC4B0(void);
|
||||
void func_800B6F50(f32, f32, f32, f32, f32, f32);
|
||||
void func_800B9358(void);
|
||||
|
||||
|
||||
+12
-4
@@ -17,11 +17,19 @@
|
||||
#include "macros.h"
|
||||
#include "sf64math.h"
|
||||
|
||||
extern Gfx* D_80137E64;
|
||||
|
||||
extern OSDevMgr __osPiDevMgr;
|
||||
|
||||
#define SCREEN_WIDTH 320
|
||||
#define SCREEN_HEIGHT 240
|
||||
|
||||
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_8,
|
||||
} ThreadID;
|
||||
|
||||
#endif // GLOBAL_H
|
||||
|
||||
+10
-1
@@ -25,7 +25,16 @@ typedef union {
|
||||
f32 f;
|
||||
} fu;
|
||||
|
||||
typedef float Matrix[4][4];
|
||||
typedef union {
|
||||
float m[4][4];
|
||||
struct {
|
||||
float xx, yx, zx, wx,
|
||||
xy, yy, zy, wy,
|
||||
xz, yz, zz, wz,
|
||||
xw, yw, zw, ww;
|
||||
};
|
||||
// u64 force_struct_alignment;
|
||||
} Matrix;
|
||||
|
||||
extern f32 __libm_qnan_f;
|
||||
|
||||
|
||||
@@ -4,4 +4,7 @@
|
||||
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
|
||||
#define SQ(x) ((x) * (x))
|
||||
|
||||
#define USEC_TO_CYCLES(n) (((u64)(n)*(osClockRate/15625LL))/(1000000LL/15625LL))
|
||||
#define MSEC_TO_CYCLES(n) (USEC_TO_CYCLES((n) * 1000LL))
|
||||
|
||||
#endif // MACROS_H
|
||||
|
||||
+1
-1
@@ -55,4 +55,4 @@ extern int __osDpDeviceBusy(void);
|
||||
extern void* __printfunc;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -4,6 +4,49 @@
|
||||
#include "global.h"
|
||||
#include "sf64math.h"
|
||||
|
||||
typedef struct {
|
||||
u16 data[240 * 320];
|
||||
} FrameBuffer;
|
||||
|
||||
typedef struct {
|
||||
u8 data[0x40][8];
|
||||
} UnkStruct_7D30;
|
||||
|
||||
typedef struct {
|
||||
OSThread thread;
|
||||
char stack[0x800];
|
||||
OSMesgQueue msgQueue;
|
||||
OSMesg msg;
|
||||
FrameBuffer* fb;
|
||||
u16 width;
|
||||
u16 height;
|
||||
} FaultMgr;
|
||||
|
||||
typedef enum {
|
||||
SPTASK_STATE_NOT_STARTED,
|
||||
SPTASK_STATE_RUNNING,
|
||||
SPTASK_STATE_INTERRUPTED,
|
||||
SPTASK_STATE_FINISHED,
|
||||
SPTASK_STATE_FINISHED_DP
|
||||
} SpTaskState;
|
||||
|
||||
typedef struct {
|
||||
OSTask task;
|
||||
OSMesgQueue* msgQueue;
|
||||
OSMesg msg;
|
||||
SpTaskState state;
|
||||
} SPTask;
|
||||
|
||||
typedef struct {
|
||||
SPTask task;
|
||||
Vp viewports[0x10];
|
||||
Mtx mtx[0x480];
|
||||
Gfx unkDL1[0x180];
|
||||
Gfx masterDL[0x1380];
|
||||
Gfx unkDL2[0xD80];
|
||||
Lightsn lights[0x100];
|
||||
} GfxPool;
|
||||
|
||||
typedef struct UnkStruct_D_801B8350 {
|
||||
/* 0x00 */ Vec3f unk0;
|
||||
/* 0x0C */ char pad_0C[0x4C];
|
||||
|
||||
+138
-37
@@ -3,18 +3,141 @@
|
||||
|
||||
#include "structs.h"
|
||||
|
||||
extern OSThread D_800DEAA0;
|
||||
extern OSThread D_800DFC50; // no gap
|
||||
extern OSThread D_800E0E00; // 0x1000 gap
|
||||
extern s32 D_800E1FB0; // 0x1000 gap, probably OSScTask
|
||||
extern OSMesgQueue D_800E2010;
|
||||
extern OSMesg D_800E2028;
|
||||
extern OSMesgQueue D_800E2148;
|
||||
extern OSMesgQueue D_800E2238;
|
||||
extern OSMesgQueue D_800E2278;
|
||||
extern u64 __rspboot_start[];
|
||||
extern u64 __rspboot_end[];
|
||||
extern u64 __f3dex_start[];
|
||||
extern u8 D_80281000[0x400];
|
||||
extern u8 D_80281400[0xC00];
|
||||
extern u8 D_802A7800;
|
||||
extern u8 D_802D7800;
|
||||
extern u8 gF3dexData;
|
||||
|
||||
extern s32 D_800C45D0;
|
||||
|
||||
extern f32 D_800C45E0[];
|
||||
|
||||
extern Mtx gIdentityMtx; // 800C4620
|
||||
extern Matrix gIdentityMatrix; //800C4660
|
||||
extern Vec3f D_800C46A0;
|
||||
extern Vec3f D_800C46AC;
|
||||
extern Vec3f D_800C46B8;
|
||||
extern Vec3f D_800C46C4;
|
||||
extern Vec3f D_800C46D0;
|
||||
extern Vec3f D_800C46DC;
|
||||
|
||||
extern u8 sFaultCharIndex[];
|
||||
extern s32 sFaultCharPixelFlags[];
|
||||
extern char* D_800C4870[];
|
||||
extern char* D_800C48B8[];
|
||||
|
||||
extern f32 D_800C5D34;
|
||||
extern s8 D_800C5D3C;
|
||||
extern s8 D_800C7C50;
|
||||
extern s8 D_800C7C54;
|
||||
extern OSMesgQueue* D_800C7C58;
|
||||
extern OSMesgQueue* D_800C7C5C;
|
||||
extern OSMesgQueue* D_800C7C60;
|
||||
extern OSMesgQueue* D_800C7C64;
|
||||
|
||||
extern char D_800C7C80[];
|
||||
|
||||
extern u16 D_800DD8AA;
|
||||
extern u8 gAudioThreadStack[0x1000]; // 800DDAA0
|
||||
extern OSThread gGraphicsThread; // 800DEAA0
|
||||
extern u8 gGraphicsThreadStack[0x1000]; // 800DEC50
|
||||
extern OSThread gUnkThread3; // 800DFC50
|
||||
extern u8 gUnkThread3Stack[0x1000]; // 800DFE00
|
||||
extern OSThread gUnkThread4; // 800E0E00
|
||||
extern u8 gUnkThread4Stack[0x1000]; // 800E0FB0
|
||||
|
||||
extern SPTask* gCurrentTask;
|
||||
extern SPTask* D_800E1FB4[1];
|
||||
extern SPTask* D_800E1FB8[2];
|
||||
extern SPTask* D_800E1FC0[2];
|
||||
extern SPTask* D_800E1FC8[2];
|
||||
extern u32 gSegments[16]; // 800E1FD0
|
||||
extern OSMesgQueue gPiMgrCmdQueue; // 800E2010
|
||||
extern OSMesg sPiMgrCmdBuff[50]; // 800E2028
|
||||
|
||||
extern OSMesgQueue D_800E20F0;
|
||||
extern void *D_800E2108[1];
|
||||
extern OSIoMesg D_800E2110;
|
||||
extern OSMesgQueue D_800E2128;
|
||||
extern void *D_800E2140[1];
|
||||
extern OSMesgQueue D_800E2148;
|
||||
extern void *D_800E2160[32];
|
||||
extern OSMesgQueue D_800E21E0;
|
||||
extern void *D_800E21F8[16];
|
||||
extern OSMesgQueue D_800E2238;
|
||||
extern void *D_800E2250[1];
|
||||
extern OSMesgQueue D_800E2258;
|
||||
extern void *D_800E2270[1];
|
||||
extern OSMesgQueue D_800E2278;
|
||||
extern void *D_800E2290[4];
|
||||
extern OSMesgQueue D_800E22A0;
|
||||
extern void *D_800E22B8[2];
|
||||
extern OSMesgQueue D_800E22C0;
|
||||
extern void *D_800E22D8[8];
|
||||
extern OSMesgQueue D_800E22F8;
|
||||
extern void *D_800E2310[1];
|
||||
extern OSMesgQueue D_800E2318;
|
||||
extern void *D_800E2330[1];
|
||||
extern OSMesgQueue D_800E2338;
|
||||
extern void *D_800E2350[16];
|
||||
extern OSMesgQueue D_800E2390;
|
||||
extern void *D_800E23A8[1];
|
||||
|
||||
extern GfxPool* gGfxPool;
|
||||
extern SPTask* gGfxTask;
|
||||
extern Vp* gViewport;
|
||||
extern Mtx* gGfxMtx;
|
||||
extern Gfx* gUnkDisp1;
|
||||
extern Gfx* gMasterDisp;
|
||||
extern Gfx* gUnkDisp2;
|
||||
extern Lightsn* gLight;
|
||||
extern FrameBuffer *gFrameBuffer;
|
||||
extern s32* D_80137E74;
|
||||
|
||||
// some sort of struct I think
|
||||
extern u8 D_80137E78;
|
||||
extern u32 D_80137E7C;
|
||||
extern u8 D_80137E80;
|
||||
extern u8 D_80137E81;
|
||||
extern u8 D_80137E84[4];
|
||||
extern u16 D_80137E88;
|
||||
extern u16 D_80137E8A;
|
||||
|
||||
extern s32 D_80178580;
|
||||
extern s32 *D_80178710;
|
||||
extern s32 D_80387800;
|
||||
extern u16 D_8038F080[];
|
||||
extern u16 D_8038F300[];
|
||||
|
||||
extern FrameBuffer gFrameBuffers[3]; // 8038F800
|
||||
extern GfxPool gGfxPools[2]; // 800E23B0
|
||||
|
||||
extern Matrix* D_8013B3C0;
|
||||
extern Matrix D_8013B3C8[0x20];
|
||||
extern Matrix* D_8013BBC8;
|
||||
extern Matrix D_8013BBD0[];
|
||||
|
||||
extern OSThread sIdleThread; // 80138E90
|
||||
extern u8 sIdleThreadStack[0x1000]; // 801390A0
|
||||
extern OSThread gMainThread; // 8013A040
|
||||
extern u8 sMainThreadStack[0x1000]; // 8013A1F0
|
||||
extern OSThread gAudioThread; //8013B1F0
|
||||
|
||||
extern UnkStruct_7D30 D_80144F60;
|
||||
extern UnkStruct_7D30 D_80145160;
|
||||
extern FaultMgr gFaultMgr;
|
||||
|
||||
extern OSMesg D_80156600;
|
||||
extern OSMesg D_80156608;
|
||||
extern OSMesg D_80156618;
|
||||
extern OSMesg D_8015661C;
|
||||
extern s32 D_8015F928;
|
||||
|
||||
|
||||
extern s32 D_800CFF90;
|
||||
extern f32 D_800D19AC[];
|
||||
extern f32 D_800D19E0[];
|
||||
@@ -28,7 +151,7 @@ extern s32 D_800D2190[];
|
||||
extern f32 D_800D21A0;
|
||||
extern f32 D_800D21A4;
|
||||
extern s32 D_800D2870;
|
||||
extern u16 D_800D99F8[];
|
||||
extern u16 D_Tex_800D99F8[];
|
||||
|
||||
extern OSContPad D_800DD880[4];
|
||||
extern OSContPad D_800DD898[4];
|
||||
@@ -41,8 +164,7 @@ extern u8 D_800DD8BC[4]; // Fake symbol. Only exists as loop terminator for D_80
|
||||
// extern OSContStatus D_800DD8F0[4];
|
||||
// extern OSPfs D_800DD900[4];
|
||||
|
||||
extern Gfx* D_80137E64;
|
||||
extern u8 D_80137E78;
|
||||
|
||||
|
||||
extern s32 D_80161690;
|
||||
extern f32 D_801616BC;
|
||||
@@ -68,6 +190,9 @@ extern s32 D_801617B8;
|
||||
extern s32 D_80161810[];
|
||||
extern s16 D_80161A34;
|
||||
extern s16 D_80161A36;
|
||||
extern f32 D_80161A3C;
|
||||
extern f32 D_80161A40;
|
||||
extern f32 D_80161A44;
|
||||
extern u8 D_80161A90[];
|
||||
extern s16 D_80161AA0[];
|
||||
extern UnkStruct_D_8016F110 D_8016F110[];
|
||||
@@ -177,11 +302,9 @@ extern f32 D_801B905C;
|
||||
extern f32 D_801B9060;
|
||||
extern f32 D_801B9064;
|
||||
|
||||
extern Matrix* D_8013B3C0;
|
||||
extern Matrix* D_8013BBC8;
|
||||
extern f32 D_800C5D28[];
|
||||
|
||||
extern s32 D_801ADA44_EE6104[];
|
||||
extern char D_801ADA44_EE6104[];
|
||||
extern s32 D_801ADA84_EE6144[];
|
||||
extern s32 D_801ADA94_EE6154;
|
||||
|
||||
@@ -265,27 +388,5 @@ extern Gfx D_D0098B0[];
|
||||
extern Gfx D_F014180[];
|
||||
|
||||
|
||||
extern u8 D_80137E84[];
|
||||
extern OSMesgQueue D_800E2128;
|
||||
extern OSMesgQueue D_800E22F8;
|
||||
extern OSMesgQueue D_800E2318;
|
||||
extern u8 D_80137E80;
|
||||
extern s32 D_80144F60;
|
||||
|
||||
extern s8 D_800C7C50;
|
||||
extern s8 D_800C7C54;
|
||||
extern OSMesgQueue* D_800C7C58;
|
||||
extern OSMesgQueue* D_800C7C5C;
|
||||
extern OSMesgQueue* D_800C7C60;
|
||||
extern OSMesgQueue* D_800C7C64;
|
||||
extern OSMesg D_80156600;
|
||||
extern OSMesg D_80156608;
|
||||
extern OSMesg D_80156618;
|
||||
extern OSMesg D_8015661C;
|
||||
extern s32 D_8015F928;
|
||||
|
||||
extern OSThread D_80138E90;
|
||||
extern OSThread D_8013A040; // 0x1000 gap
|
||||
extern OSThread D_8013B1F0; // 0x1000 gap
|
||||
#endif // VARIABLES_H
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
bootproc = 0x80004DA8;
|
||||
D_800C90F0 = 0x800C90F0;
|
||||
__libm_qnan_f = 0x800C9570;
|
||||
D_1 = 0x1; //ignore:true
|
||||
|
||||
Math_ModF = 0x80004E20;
|
||||
Rand_Init = 0x80004E4C;
|
||||
@@ -16,13 +17,71 @@ Math_PowF = 0x800055DC;
|
||||
Math_MinMax = 0x80005604;
|
||||
D_800C45E0 = 0x800C45E0;
|
||||
|
||||
D_800C57EC = 0x800C57EC;
|
||||
D_800C7380 = 0x800C7380;
|
||||
D_800C5FF4 = 0x800C5FF4; //type:u16 size:5000
|
||||
|
||||
gIdentityMtx = 0x800C4620;
|
||||
gIdentityMatrix = 0x800C4660;
|
||||
|
||||
sFaultCharPixelFlags = 0x800C4770;
|
||||
sFaultCharIndex = 0x800C46F0;
|
||||
|
||||
Math_FAtanF = 0x8001FBE8;
|
||||
Math_FAtan2F = 0x8001FD0C;
|
||||
Math_FAsinF = 0x8001FE00;
|
||||
Math_FAcosF = 0x8001FE30;
|
||||
|
||||
D_800E23B0 = 0x800E23B0; // size:0x55AA0
|
||||
Idle_ThreadEntry = 0x80004D00;
|
||||
Main_ThreadEntry = 0x80004ABC;
|
||||
Audio_ThreadEntry = 0x80003B48;
|
||||
Graphics_ThreadEntry = 0x80004144;
|
||||
|
||||
__rspboot_start = 0x80000450;
|
||||
__rspboot_end = 0x80000520;
|
||||
__f3dex_start = 0x80001410;
|
||||
gF3dexData = 0x800C3DD0;
|
||||
|
||||
gAudioThreadStack = 0x800DDAA0;
|
||||
gGraphicsThread = 0x800DEAA0;
|
||||
gGraphicsThreadStack = 0x800DEC50;
|
||||
gUnkThread3 = 0x800DFC50;
|
||||
gUnkThread3Stack = 0x800DFE00;
|
||||
gUnkThread4 = 0x800E0E00;
|
||||
gUnkThread4Stack = 0x800E0FB0;
|
||||
|
||||
gCurrentTask = 0x800E1FB0;
|
||||
D_800E1FB4 = 0x800E1FB4;
|
||||
D_800E1FB8 = 0x800E1FB8;
|
||||
D_800E1FC0 = 0x800E1FC0;
|
||||
D_800E1FC8 = 0x800E1FC8;
|
||||
|
||||
gPiMgrCmdQueue = 0x800E2010;
|
||||
sPiMgrCmdBuff = 0x800E2028;
|
||||
sIdleThread = 0x80138E90;
|
||||
sIdleThreadStack = 0x80139040;
|
||||
gMainThread = 0x8013A040;
|
||||
sMainThreadStack = 0x8013A1F0;
|
||||
gAudioThread = 0x8013B1F0;
|
||||
|
||||
gSegments = 0x800E1FD0;
|
||||
gGfxPools = 0x800E23B0; // size:0x55AA0
|
||||
gGfxPool = 0x80137E50;
|
||||
gGfxTask = 0x80137E54;
|
||||
gViewport = 0x80137E58;
|
||||
gGfxMtx = 0x80137E5C;
|
||||
gUnkDisp1 = 0x80137E60;
|
||||
gMasterDisp = 0x80137E64;
|
||||
gUnkDisp2 = 0x80137E68;
|
||||
gLight = 0x80137E6C;
|
||||
gFrameBuffer = 0x80137E70;
|
||||
D_80137E74 = 0x80137E74;
|
||||
gFrameBuffers = 0x8038F800;
|
||||
D_8013C3D0 = 0x8013C3D0; // size:0x8800
|
||||
gFaultMgr = 0x80145360; // size:0x9D8
|
||||
|
||||
Mio0_Decompress = 0x8001EE70;
|
||||
RdRam_CheckIPL3 = 0x8001EF10;
|
||||
|
||||
D_800D934C = 0x800D934C; // force_migration:True
|
||||
D_800D503C = 0x800D503C; // force_migration:True
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
D_Gfx_800D94D0 = 0x800D94D0; // type:Gfx
|
||||
D_Gfx_800D95E8 = 0x800D95E8; // type:Gfx
|
||||
D_Gfx_800D9688 = 0x800D9688; // type:Gfx
|
||||
D_Gfx_800D96D0 = 0x800D96D0; // type:Gfx
|
||||
D_Gfx_800D9860 = 0x800D9860; // type:Gfx
|
||||
D_Gfx_800D9990 = 0x800D9990; // type:Gfx
|
||||
D_Gfx_800DA9F8 = 0x800DA9F8; // type:Gfx
|
||||
D_Gfx_800DAA98 = 0x800DAA98; // type:Gfx
|
||||
D_Gfx_800DAB28 = 0x800DAB28; // type:Gfx
|
||||
D_Gfx_800DAB80 = 0x800DAB80; // type:Gfx
|
||||
D_Gfx_800DAC20 = 0x800DAC20; // type:Gfx
|
||||
D_Gfx_800DACA0 = 0x800DACA0; // type:Gfx
|
||||
D_Gfx_800DBAA0 = 0x800DBAA0; // type:Gfx
|
||||
|
||||
D_Tex_800DA1F8 = 0x800DA1F8;
|
||||
D_Tex_800D99F8 = 0x800D99F8;
|
||||
D_Tex_800DBA20 = 0x800DBA20;
|
||||
|
||||
D_Vtx_800D94A0 = 0x800D94A0;
|
||||
D_Vtx_800D94E8 = 0x800D94E8;
|
||||
D_Vtx_800D9658 = 0x800D9658;
|
||||
D_Vtx_800D96A0 = 0x800D96A0;
|
||||
D_Vtx_800D9760 = 0x800D9760;
|
||||
D_Vtx_800D9950 = 0x800D9950;
|
||||
D_Vtx_800D9910 = 0x800D9910;
|
||||
D_Vtx_800DAA58 = 0x800DAA58;
|
||||
D_Vtx_800DAAF8 = 0x800DAAF8;
|
||||
D_Vtx_800DAB40 = 0x800DAB40;
|
||||
D_Vtx_800DABE0 = 0x800DABE0;
|
||||
D_Vtx_800DAC80 = 0x800DAC80;
|
||||
|
||||
D_Unk_800DACB8 = 0x800DACB8;
|
||||
D_Unk_800DB4B8 = 0x800DB4B8;
|
||||
D_Unk_800D96E4 = 0x800D96E4; // type:s16
|
||||
@@ -67,7 +67,7 @@ void guLookAtF(float mf[4][4], float xEye, float yEye, float zEye, float xAt, fl
|
||||
|
||||
void guLookAt(Mtx* m, float xEye, float yEye, float zEye, float xAt, float yAt, float zAt, float xUp, float yUp,
|
||||
float zUp) {
|
||||
Matrix mf;
|
||||
float mf[4][4];
|
||||
|
||||
guLookAtF(mf, xEye, yEye, zEye, xAt, yAt, zAt, xUp, yUp, zUp);
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ void guOrthoF(float mf[4][4], float l, float r, float b, float t, float n, float
|
||||
}
|
||||
|
||||
void guOrtho(Mtx* m, float l, float r, float b, float t, float n, float f, float scale) {
|
||||
Matrix mf;
|
||||
float mf[4][4];
|
||||
|
||||
guOrthoF(mf, l, r, b, t, n, f, scale);
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
extern s32 __osContinitialized;
|
||||
|
||||
#define USEC_TO_CYCLES(n, clock) ((n) * (u64) (clock) / 1000000)
|
||||
#define USEC_TO_CYCLES_OLD(n, clock) ((n) * (u64) (clock) / 1000000)
|
||||
|
||||
s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* data) {
|
||||
OSMesg dummy;
|
||||
@@ -20,9 +20,9 @@ s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* data) {
|
||||
__osContinitialized = 1;
|
||||
t = osGetTime();
|
||||
|
||||
if (t < USEC_TO_CYCLES(500000, osClockRate)) {
|
||||
if (t < USEC_TO_CYCLES_OLD(500000, osClockRate)) {
|
||||
osCreateMesgQueue(&timerMesgQueue, &dummy, 1);
|
||||
osSetTimer(&mytimer, USEC_TO_CYCLES(500000, osClockRate) - t, 0, &timerMesgQueue, &dummy);
|
||||
osSetTimer(&mytimer, USEC_TO_CYCLES_OLD(500000, osClockRate) - t, 0, &timerMesgQueue, &dummy);
|
||||
osRecvMesg(&timerMesgQueue, &dummy, OS_MESG_BLOCK);
|
||||
}
|
||||
__osMaxControllers = 4;
|
||||
|
||||
@@ -63,7 +63,7 @@ s32 osMotorStart(OSPfs* pfs) {
|
||||
}
|
||||
|
||||
void _MakeMotorData(s32 channel, u16 address, u8* buffer, OSPifRam* mdata) {
|
||||
u8* ptr = mdata->ramarray;
|
||||
u8* ptr = (u8*) mdata->ramarray;
|
||||
__OSContRamReadFormat ramreadformat;
|
||||
s32 i;
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
#include "piint.h"
|
||||
#include "PR/rdb.h"
|
||||
|
||||
void ramromMain(void* /*arg*/);
|
||||
extern char piEventBuf[];
|
||||
void ramromMain(void* arg);
|
||||
extern OSMesg piEventBuf[];
|
||||
extern OSMesgQueue piEventQueue;
|
||||
extern OSThread piThread;
|
||||
extern char piThreadStack[];
|
||||
@@ -22,7 +22,7 @@ void osCreatePiMgr(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgCnt)
|
||||
return;
|
||||
}
|
||||
osCreateMesgQueue(cmdQ, cmdBuf, cmdMsgCnt);
|
||||
osCreateMesgQueue(&piEventQueue, (OSMesg*) piEventBuf, 1);
|
||||
osCreateMesgQueue(&piEventQueue, piEventBuf, 1);
|
||||
|
||||
if (!__osPiAccessQueueEnabled) {
|
||||
__osPiCreateAccessQueue();
|
||||
@@ -60,9 +60,9 @@ void osCreatePiMgr(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgCnt)
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/pimgr/osCreatePiMgr.s")
|
||||
#endif
|
||||
|
||||
extern char freeRamromBuf[];
|
||||
extern OSMesg freeRamromBuf[];
|
||||
extern OSMesgQueue freeRamromQ;
|
||||
extern char getRamromBuf[];
|
||||
extern OSMesg getRamromBuf[];
|
||||
extern OSMesgQueue getRamromQ;
|
||||
|
||||
void ramromMain(void* arg) {
|
||||
@@ -71,8 +71,10 @@ void ramromMain(void* arg) {
|
||||
|
||||
osCreateMesgQueue(&getRamromQ, getRamromBuf, 1);
|
||||
osCreateMesgQueue(&freeRamromQ, freeRamromBuf, 1);
|
||||
osSetEventMesg(18 /*OS_EVENT_RDB_REQ_RAMROM*/, &getRamromQ, NULL);
|
||||
osSetEventMesg(19 /*OS_EVENT_RDB_FREE_RAMROM*/, &freeRamromQ, NULL);
|
||||
|
||||
// For some reason the compiler thinks these macros are undefined
|
||||
osSetEventMesg(18 /* OS_EVENT_RDB_REQ_RAMROM */, &getRamromQ, NULL);
|
||||
osSetEventMesg(19 /*OS_EVENT_RDB_FREE_RAMROM */, &freeRamromQ, NULL);
|
||||
|
||||
while (TRUE) {
|
||||
osRecvMesg(&getRamromQ, NULL, OS_MESG_BLOCK);
|
||||
|
||||
@@ -3,10 +3,13 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/__rmonregs_LoadStoreSU.s")
|
||||
|
||||
void __rmonregs_LoadStoreSU(int opcode, int regno);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/LoadStoreVU.s")
|
||||
|
||||
void SetUpForRCPop(int isVector);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/SetUpForRCPop.s")
|
||||
|
||||
void CleanupFromRCPop(int isVector);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/CleanupFromRCPop.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/__rmonGetGRegisters.s")
|
||||
@@ -26,7 +29,7 @@ s32 rmonGetRcpRegister(s32 arg0) {
|
||||
SetUpForRCPop(0);
|
||||
__rmonregs_LoadStoreSU(0x2B, arg0);
|
||||
__rmonStepRCP();
|
||||
ret = __rmonReadWordAt(0x04000000);
|
||||
ret = __rmonReadWordAt((u32*) SP_DMEM_START);
|
||||
CleanupFromRCPop(0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
+6
-6
@@ -47,7 +47,7 @@ void func_8000291C(void) {
|
||||
u8 sp1F;
|
||||
s32 i;
|
||||
|
||||
osContInit(&D_800E2128, &sp1F, &D_800DD8F0);
|
||||
osContInit(&D_800E2128, &sp1F, D_800DD8F0);
|
||||
for (i = 0; i < 4; i++) {
|
||||
D_800DD8B0[i] = (sp1F >> i) & 1;
|
||||
D_800DD8B8[i] = 0;
|
||||
@@ -84,7 +84,7 @@ void func_80002AF4(void) {
|
||||
osRecvMesg(&D_800E2128, NULL, 1);
|
||||
osContGetReadData(D_800DD8C0);
|
||||
}
|
||||
osSendMesg(&D_800E22F8, 16, 0);
|
||||
osSendMesg(&D_800E22F8, (OSMesg) 16, 0);
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3440/func_80002AF4.s")
|
||||
@@ -92,18 +92,18 @@ void func_80002AF4(void) {
|
||||
|
||||
void func_80002BE8(void) {
|
||||
if ((D_80137E80 == 0) && (func_800072E0(&D_80144F60) == 0)) {
|
||||
osSendMesg(&D_800E2318, 15, 0);
|
||||
osSendMesg(&D_800E2318, (OSMesg) 15, 0);
|
||||
return;
|
||||
}
|
||||
osSendMesg(&D_800E2318, 14, 0);
|
||||
osSendMesg(&D_800E2318, (OSMesg) 14, 0);
|
||||
}
|
||||
|
||||
void func_80002C50(void) {
|
||||
if ((D_80137E80 == 0) && (func_800071FC(&D_80144F60) == 0)) {
|
||||
osSendMesg(&D_800E2318, 15, 0);
|
||||
osSendMesg(&D_800E2318, (OSMesg) 15, 0);
|
||||
return;
|
||||
}
|
||||
osSendMesg(&D_800E2318, 14, 0);
|
||||
osSendMesg(&D_800E2318, (OSMesg) 14, 0);
|
||||
}
|
||||
|
||||
void func_80002CB8(void) {
|
||||
|
||||
+135
-7
@@ -4,16 +4,144 @@ s32 func_80002E80(char* dst, char* fmt, va_list args) {
|
||||
return vsprintf(dst, fmt, args);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_80002EA0.s")
|
||||
void func_80002EA0(s32 arg0, void (**arg1)(s32, s32), s32 arg2, s32 arg3) {
|
||||
void (*temp)(s32, s32) = arg1[arg0];
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_80002EE4.s")
|
||||
temp(arg2, arg3);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_80002F88.s")
|
||||
void func_80002EE4(u8* buf1, u8* buf2, s32 len) {
|
||||
s32 i;
|
||||
u8 temp;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_8000316C.s")
|
||||
for (i = 0; i < len; i++) {
|
||||
temp = buf2[i];
|
||||
buf2[i] = buf1[i];
|
||||
buf1[i] = temp;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_800032B4.s")
|
||||
typedef s32 (*CompareFunc)(void*, void*);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_800033E0.s")
|
||||
void func_80002F88(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
|
||||
u32 splitIdx;
|
||||
u8* last;
|
||||
u8* right;
|
||||
u8* left;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_800034E8.s")
|
||||
while (1) {
|
||||
last = first + (curLen - 1) * size;
|
||||
|
||||
if (curLen == 2) {
|
||||
if (cFunc(first, last) > 0) {
|
||||
func_80002EE4(first, last, size);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (size && size && size) {} //! FAKE: must be here with at least 3 && operands.
|
||||
left = first;
|
||||
right = last - size;
|
||||
|
||||
while (1) {
|
||||
while (cFunc(left, last) < 0) {
|
||||
left += size;
|
||||
}
|
||||
while ((cFunc(right, last) >= 0) && (left < right)) {
|
||||
right -= size;
|
||||
}
|
||||
if (left >= right) {
|
||||
break;
|
||||
}
|
||||
func_80002EE4(left, right, size);
|
||||
left += size;
|
||||
right -= size;
|
||||
}
|
||||
func_80002EE4(last, left, size);
|
||||
splitIdx = (left - first) / size;
|
||||
if (curLen / 2 < splitIdx) {
|
||||
if ((curLen - splitIdx) > 2) {
|
||||
func_80002F88(left + size, curLen - splitIdx - 1, size, cFunc);
|
||||
}
|
||||
|
||||
if (splitIdx < 2) {
|
||||
return;
|
||||
}
|
||||
left = first;
|
||||
curLen = splitIdx;
|
||||
} else {
|
||||
if (splitIdx >= 2) {
|
||||
func_80002F88(first, splitIdx, size, cFunc);
|
||||
}
|
||||
|
||||
if ((curLen - splitIdx) <= 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
first = left + size;
|
||||
curLen -= splitIdx + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_8000316C(Gfx** dList) {
|
||||
u16 norm;
|
||||
|
||||
guPerspective(gGfxMtx, &norm, D_80161A3C, 1.3333334f, D_80161A40, D_80161A44, 1.0f);
|
||||
gSPPerspNormalize((*dList)++, norm);
|
||||
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
||||
guLookAt(gGfxMtx, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -12800.0f, 0.0f, 1.0f, 0.0f);
|
||||
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
|
||||
func_80005680(D_8013B3C0, &gIdentityMatrix);
|
||||
}
|
||||
|
||||
void func_800032B4(Gfx** dList) {
|
||||
void* temp_t0;
|
||||
void* temp_t0_2;
|
||||
|
||||
guOrtho(gGfxMtx, -160.0f, 160.0f, -120.0f, 120.0f, D_80161A40, D_80161A44, 1.0f);
|
||||
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
||||
guLookAt(gGfxMtx, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -12800.0f, 0.0f, 1.0f, 0.0f);
|
||||
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
|
||||
func_80005680(D_8013B3C0, &gIdentityMatrix);
|
||||
}
|
||||
|
||||
void func_800033E0(u32 var_s2, u8* var_s1, s32 var_s0) {
|
||||
osInvalICache(var_s1, var_s0);
|
||||
osInvalDCache(var_s1, var_s0);
|
||||
while (var_s0 > 0x100) {
|
||||
osPiStartDma(&D_800E2110, 0, 0, var_s2, var_s1, 0x100, &D_800E20F0);
|
||||
var_s0 -= 0x100;
|
||||
var_s2 += 0x100;
|
||||
var_s1 += 0x100;
|
||||
osRecvMesg(&D_800E20F0, NULL, 1);
|
||||
}
|
||||
if (var_s0 != 0) {
|
||||
osPiStartDma(&D_800E2110, 0, 0, var_s2, var_s1, var_s0, &D_800E20F0);
|
||||
osRecvMesg(&D_800E20F0, NULL, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void func_800034E8(u8 arg0) {
|
||||
s32 i;
|
||||
|
||||
D_80137E88 |= 1;
|
||||
if (arg0 == 1) {
|
||||
if (D_80137E8A == 0) {
|
||||
if (D_80137E88 == 1) {
|
||||
osViBlack(1);
|
||||
} else {
|
||||
for (i = 0; i < 0x3C0; i++) {
|
||||
D_8038F080[i] = D_80137E88;
|
||||
}
|
||||
osWritebackDCacheAll();
|
||||
osViSwapBuffer(&D_8038F300);
|
||||
osViRepeatLine(1);
|
||||
}
|
||||
D_80137E8A = 1;
|
||||
}
|
||||
} else if (D_80137E8A == 1) {
|
||||
osViRepeatLine(0);
|
||||
osViBlack(0);
|
||||
D_80137E8A = 0;
|
||||
}
|
||||
}
|
||||
|
||||
+81
-4
@@ -1,7 +1,84 @@
|
||||
#include "common.h"
|
||||
#include "global.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/41D0/func_800035D0.s")
|
||||
void func_800035D0(Gfx** dList) {
|
||||
gSPNumLights((*dList)++, 7);
|
||||
gSPLight((*dList)++, &gLight->l[0], 1);
|
||||
gSPLight((*dList)++, &gLight->l[1], 2);
|
||||
gSPLight((*dList)++, &gLight->l[2], 3);
|
||||
gSPLight((*dList)++, &gLight->l[3], 4);
|
||||
gSPLight((*dList)++, &gLight->l[4], 5);
|
||||
gSPLight((*dList)++, &gLight->l[5], 6);
|
||||
gSPLight((*dList)++, &gLight->l[6], 7);
|
||||
gSPLight((*dList)++, &gLight->a, 8);
|
||||
gLight++;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/41D0/func_8000372C.s")
|
||||
void func_8000372C(Gfx** dList, s32 dirX, s32 dirY, s32 dirZ, s32 colR, s32 colG, s32 colB, s32 ambR, s32 ambG,
|
||||
s32 ambB) {
|
||||
s32 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/41D0/func_800038AC.s")
|
||||
for (i = 0; i < 4; i++) {
|
||||
gLight->l[i].l.dir[0] = dirX;
|
||||
gLight->l[i].l.dir[1] = dirY;
|
||||
gLight->l[i].l.dir[2] = dirZ;
|
||||
gLight->l[i].l.col[0] = colR;
|
||||
gLight->l[i].l.col[1] = colG;
|
||||
gLight->l[i].l.col[2] = colB;
|
||||
gLight->l[i].l.colc[0] = colR;
|
||||
gLight->l[i].l.colc[1] = colG;
|
||||
gLight->l[i].l.colc[2] = colB;
|
||||
}
|
||||
for (i = 4; i < 7; i++) {
|
||||
gLight->l[i].l.dir[0] = dirX;
|
||||
gLight->l[i].l.dir[1] = dirY;
|
||||
gLight->l[i].l.dir[2] = dirZ;
|
||||
gLight->l[i].l.col[0] = 0;
|
||||
gLight->l[i].l.col[1] = 0;
|
||||
gLight->l[i].l.col[2] = 0;
|
||||
gLight->l[i].l.colc[0] = 0;
|
||||
gLight->l[i].l.colc[1] = 0;
|
||||
gLight->l[i].l.colc[2] = 0;
|
||||
}
|
||||
gLight->a.l.col[0] = ambR;
|
||||
gLight->a.l.col[1] = ambG;
|
||||
gLight->a.l.col[2] = ambB;
|
||||
gLight->a.l.colc[0] = ambR;
|
||||
gLight->a.l.colc[1] = ambG;
|
||||
gLight->a.l.colc[2] = ambB;
|
||||
func_800035D0(dList);
|
||||
}
|
||||
|
||||
void func_800038AC(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) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
gLight->l[i].l.dir[0] = dir1x;
|
||||
gLight->l[i].l.dir[1] = dir1y;
|
||||
gLight->l[i].l.dir[2] = dir1z;
|
||||
gLight->l[i].l.col[0] = col1r;
|
||||
gLight->l[i].l.col[1] = col1g;
|
||||
gLight->l[i].l.col[2] = col1b;
|
||||
gLight->l[i].l.colc[0] = col1r;
|
||||
gLight->l[i].l.colc[1] = col1g;
|
||||
gLight->l[i].l.colc[2] = col1b;
|
||||
}
|
||||
for (i = 4; i < 7; i++) {
|
||||
gLight->l[i].l.dir[0] = dir2x;
|
||||
gLight->l[i].l.dir[1] = dir2y;
|
||||
gLight->l[i].l.dir[2] = dir2z;
|
||||
gLight->l[i].l.col[0] = col2r;
|
||||
gLight->l[i].l.col[1] = col2g;
|
||||
gLight->l[i].l.col[2] = col2b;
|
||||
gLight->l[i].l.colc[0] = col2r;
|
||||
gLight->l[i].l.colc[1] = col2g;
|
||||
gLight->l[i].l.colc[2] = col2b;
|
||||
}
|
||||
gLight->a.l.col[0] = ambR;
|
||||
gLight->a.l.col[1] = ambG;
|
||||
gLight->a.l.col[2] = ambB;
|
||||
gLight->a.l.colc[0] = ambR;
|
||||
gLight->a.l.colc[1] = ambG;
|
||||
gLight->a.l.colc[2] = ambB;
|
||||
func_800035D0(dList);
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user