More decomp, organization of variables.h (#21)

* 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

* let
's try bss

* too much?

* one fix

* even more things

* one quick thing

* oh come on

* graph complete?

* format and such

* decomp and such

* small cleanup
This commit is contained in:
petrie911 2023-11-14 21:34:10 -06:00 committed by GitHub
parent 59475cd4f6
commit 8f695918e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 571 additions and 139 deletions

View File

@ -44,7 +44,7 @@ void Matrix_GetXYZAngles(Matrix*, Vec3f*);
void Matrix_LookAt(Matrix*, f32, f32, f32, f32, f32, f32, f32, f32, f32, u8); void Matrix_LookAt(Matrix*, f32, f32, f32, f32, f32, f32, f32, f32, f32, u8);
void Matrix_SetGfxMtx(Gfx**); void Matrix_SetGfxMtx(Gfx**);
s32 func_80006FD8(u64 arg0, void* arg2, s32 arg3, s32 arg4); s32 func_80006FD8(u64 arg0, void* arg2, s32* arg3, s32 arg4);
void func_80006F20(void); void func_80006F20(void);
void* func_80006F38(s32); void* func_80006F38(s32);
@ -172,8 +172,8 @@ void func_80094D20(f32, f32);
void func_8009F574(Gfx **, s32, s32, s32, s32, u8, u8, u8, u8); void func_8009F574(Gfx **, s32, s32, s32, s32, u8, u8, u8, u8);
f32 func_8009BC2C(f32*, f32, f32, f32, f32); f32 func_8009BC2C(f32*, f32, f32, f32, f32);
f32 func_8009BD38(f32*, f32, f32, f32, f32); f32 func_8009BD38(f32*, f32, f32, f32, f32);
void func_8009D418(Gfx**, void*, u32, u32, f32, f32, f32, f32); void func_8009D418(Gfx**, u16*, u32, u32, f32, f32, f32, f32);
void func_8009D994(Gfx**, void*, u32, u32, f32, f32, f32, f32); void func_8009D994(Gfx**, u16*, u32, u32, f32, f32, f32, f32);
void func_8009F6CC(Vec3f*, f32, f32, f32); void func_8009F6CC(Vec3f*, f32, f32, f32);
void func_8009FC0C(s32, s32, s32); void func_8009FC0C(s32, s32, s32);
f32 func_8009F768(f32); f32 func_8009F768(f32);
@ -208,7 +208,7 @@ void func_800B9358(void);
void func_800C1ED4(void); void func_800C1ED4(void);
void func_800C20B0(void); void func_800C20B0(void);
void func_800C2190(void); void func_800C2190(void);
s32 func_800C2890(u16*); u16 func_800C2890(u16*);
s32 func_800C2F30(u16*, s32); s32 func_800C2F30(u16*, s32);
s32 func_800C3084(void); s32 func_800C3084(void);
s32 func_800C3194(void); s32 func_800C3194(void);

View File

@ -36,7 +36,6 @@ s32 func_80090E8C(UnkStruct_func_80090A00* arg0);
s32 func_800910C0(UnkStruct_func_80090A00* arg0); s32 func_800910C0(UnkStruct_func_80090A00* arg0);
void func_8009C320(Gfx**, void*, void*, s32, s32, f32, f32, f32, f32); void func_8009C320(Gfx**, void*, void*, s32, s32, f32, f32, f32, f32);
void func_8009D0BC(Gfx**, void*, void*, u32, u32, f32, f32, f32, f32); void func_8009D0BC(Gfx**, void*, void*, u32, u32, f32, f32, f32, f32);
void func_8009D994(Gfx**, void*, u32, u32, f32, f32, f32, f32);
void func_8009E1E8(Gfx**, s32*, s32, s32, f32, f32, f32, f32); void func_8009E1E8(Gfx**, s32*, s32, s32, f32, f32, f32, f32);
// Weird addresses, assets maybe? // Weird addresses, assets maybe?

View File

@ -4,6 +4,11 @@
#include "global.h" #include "global.h"
#include "sf64math.h" #include "sf64math.h"
typedef struct {
s32 unk0;
u16* unk4;
} UnkStruct_D_80185CBC;
typedef struct { typedef struct {
/* 0x0 */ void* start; /* 0x0 */ void* start;
/* 0x4 */ void* end; /* 0x4 */ void* end;
@ -23,13 +28,13 @@ typedef struct {
/* 0xC */ s32 compFlag; /* 0xC */ s32 compFlag;
} DmaEntry; // size = 0x10; } DmaEntry; // size = 0x10;
typedef void (*unkFunc_80007088)(s32, s32); typedef void (*unkFunc_80007088)(s32*, s32);
typedef struct { typedef struct {
/* 0x00 */ u8 unk0; /* 0x00 */ u8 unk0;
/* 0x08 */ OSTimer unk8; /* 0x08 */ OSTimer unk8;
/* 0x28 */ unkFunc_80007088 unk28; /* 0x28 */ unkFunc_80007088 unk28;
/* 0x2C */ s32 unk2C; /* 0x2C */ s32* unk2C;
/* 0x30 */ s32 unk30; /* 0x30 */ s32 unk30;
} UnkStruct_func_80007088; // size = 0x38, 0x8 aligned } UnkStruct_func_80007088; // size = 0x38, 0x8 aligned
@ -126,7 +131,8 @@ typedef struct UnkStruct_D_80178280 {
/* 0x1C8 */ s32 unk_1C8; /* 0x1C8 */ s32 unk_1C8;
/* 0x1CC */ char pad_1CC[0x44]; /* 0x1CC */ char pad_1CC[0x44];
/* 0x210 */ s32 unk_210; /* 0x210 */ s32 unk_210;
/* 0x214 */ char pad_214[0x14]; /* 0x214 */ char pad_214[0x10];
/* 0x224 */ s32 unk_224;
/* 0x228 */ s32 unk_228; /* 0x228 */ s32 unk_228;
/* 0x22C */ char pad_22C[0x38]; /* 0x22C */ char pad_22C[0x38];
/* 0x264 */ s32 unk_264; /* 0x264 */ s32 unk_264;

View File

@ -6,30 +6,20 @@
extern u64 __rspboot_start[]; extern u64 __rspboot_start[];
extern u64 __rspboot_end[]; extern u64 __rspboot_end[];
extern u64 __f3dex_start[]; 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 u8 gF3dexData;
extern s32 D_800C45D0; extern s32 D_800C45D0;
extern f32 D_800C45E0[]; extern f32 D_800C45E0[];
extern Mtx gIdentityMtx; // 800C4620 extern Mtx gIdentityMtx; // 800C4620
extern Matrix gIdentityMatrix; //800C4660 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 u8 sFaultCharIndex[];
extern s32 sFaultCharPixelFlags[]; extern s32 sFaultCharPixelFlags[];
extern const char* D_800C4870[]; extern const char* D_800C4870[];
extern const char* D_800C48B8[]; extern const char* D_800C48B8[];
extern f32 D_800C5D28[];
extern f32 D_800C5D34; extern f32 D_800C5D34;
extern s8 D_800C5D3C; extern s8 D_800C5D3C;
extern s8 D_800C7C50; extern s8 D_800C7C50;
@ -41,40 +31,16 @@ extern OSMesgQueue* D_800C7C64;
extern char D_800C7C80[]; extern char D_800C7C80[];
extern u8 D_800CA3B0; extern OSContPad D_800DD880[4];
extern OSContPad D_800DD898[4];
extern OverlayInit D_800CA3B4[]; extern u8 D_800DD8B0[4];
extern OverlayInit D_800CA44C[]; extern s32 D_800DD8B4;
extern OverlayInit D_800CA7DC[]; extern u8 D_800DD8B8[4];
extern OverlayInit D_800CA874[]; extern u8 D_800DD8BC[4]; // Fake symbol. Only exists as loop terminator for D_800DD8B8
extern OverlayInit D_800CA90C[]; // extern OSContPad D_800DD8C0[4];
extern OverlayInit D_800CA9A4[]; // extern OSContPad D_800DD8D8[4];
extern OverlayInit D_800CAA3C[]; // extern OSContStatus D_800DD8F0[4];
extern OverlayInit D_800CAAD4[]; // extern OSPfs D_800DD900[4];
extern OverlayInit D_800CAC04[];
extern OverlayInit D_800CAF94[];
extern OverlayInit D_800CB0C4[];
extern OverlayInit D_800CB15C[];
extern OverlayInit D_800CB1F4[];
extern OverlayInit D_800CB28C[];
extern OverlayInit D_800CB3BC[];
extern OverlayInit D_800CB454[];
extern OverlayInit D_800CB4EC[];
extern OverlayInit D_800CB584[];
extern OverlayInit D_800CB61C[];
extern OverlayInit D_800CB6B4[];
extern OverlayInit D_800CB74C[];
extern OverlayInit D_800CB87C[];
extern OverlayInit D_800CB914[];
extern OverlayInit D_800CB9AC[];
extern OverlayInit D_800CBA44[];
extern OverlayInit D_800CBB74[];
extern OverlayInit D_800CBC0C[];
extern UnkStruct_90A00_1C D_800CC124[400];
extern u16 D_800DD8AA;
extern s32 D_800D4A70;
extern u8 gAudioThreadStack[0x1000]; // 800DDAA0 extern u8 gAudioThreadStack[0x1000]; // 800DDAA0
extern OSThread gGraphicsThread; // 800DEAA0 extern OSThread gGraphicsThread; // 800DEAA0
@ -122,6 +88,8 @@ extern void *D_800E2350[16];
extern OSMesgQueue D_800E2390; extern OSMesgQueue D_800E2390;
extern void *D_800E23A8[1]; extern void *D_800E23A8[1];
extern GfxPool gGfxPools[2]; // 800E23B0
extern GfxPool* gGfxPool; extern GfxPool* gGfxPool;
extern SPTask* gGfxTask; extern SPTask* gGfxTask;
extern Vp* gViewport; extern Vp* gViewport;
@ -142,37 +110,17 @@ extern u8 D_80137E84[4];
extern u16 D_80137E88; extern u16 D_80137E88;
extern u16 D_80137E8A; extern u16 D_80137E8A;
extern DmaEntry gDmaTable[];
extern s32 D_80178580;
extern s32 *D_80178710;
extern s32 D_80178728;
extern s32 D_8017872C;
extern f32 D_80178730;
extern f32 D_80178734;
extern f32 D_80178738;
extern f32 D_8017873C;
extern f32 D_80178740;
extern s32 D_80387800;
extern u16 D_8038F080[];
extern u16 D_8038F300[];
extern FrameBuffer D_80282000; // z buffer
extern FrameBuffer gFrameBuffers[3]; // 8038F800
extern Gfx D_Gfx_800DBAA0[];
extern GfxPool gGfxPools[2]; // 800E23B0
extern Matrix* D_8013B3C0;
extern Matrix D_8013B3C8[0x20];
extern Matrix* D_8013BBC8;
extern Matrix D_8013BBD0[0x20];
extern OSThread sIdleThread; // 80138E90 extern OSThread sIdleThread; // 80138E90
extern u8 sIdleThreadStack[0x1000]; // 801390A0 extern u8 sIdleThreadStack[0x1000]; // 801390A0
extern OSThread gMainThread; // 8013A040 extern OSThread gMainThread; // 8013A040
extern u8 sMainThreadStack[0x1000]; // 8013A1F0 extern u8 sMainThreadStack[0x1000]; // 8013A1F0
extern OSThread gAudioThread; //8013B1F0 extern OSThread gAudioThread; //8013B1F0
extern Matrix* D_8013B3C0;
extern Matrix D_8013B3C8[0x20];
extern Matrix* D_8013BBC8;
extern Matrix D_8013BBD0[0x20];
extern SaveFile D_80144F60; extern SaveFile D_80144F60;
extern SaveFile D_80145160; extern SaveFile D_80145160;
extern FaultMgr gFaultMgr; extern FaultMgr gFaultMgr;
@ -181,9 +129,37 @@ extern OSMesg D_80156600[1];
extern OSMesg D_80156608[4]; extern OSMesg D_80156608[4];
extern OSMesg D_80156618[1]; extern OSMesg D_80156618[1];
extern OSMesg D_8015661C[1]; extern OSMesg D_8015661C[1];
extern s32 D_8015F928;
extern u8 D_800CA3B0;
extern OverlayInit D_800CA3B4[1]; // sets segment 15 with no overlay
extern OverlayInit D_800CA44C[6]; // overlay EF0260
extern OverlayInit D_800CA7DC[1]; // EBFBE0
extern OverlayInit D_800CA874[1]; // EBFBE0
extern OverlayInit D_800CA90C[1]; // EBFBE0
extern OverlayInit D_800CA9A4[1]; // EBFBE0
extern OverlayInit D_800CAA3C[1]; // DF4260
extern OverlayInit D_800CAAD4[2]; // E08400
extern OverlayInit D_800CAC04[6]; // E6A810
extern OverlayInit D_800CAF94[2]; // E08400
extern OverlayInit D_800CB0C4[1]; // E51970
extern OverlayInit D_800CB15C[1]; // E16C50
extern OverlayInit D_800CB1F4[1]; // E16C50
extern OverlayInit D_800CB28C[2]; // E51970
extern OverlayInit D_800CB3BC[1]; // E16C50
extern OverlayInit D_800CB454[1]; // E9F1D0
extern OverlayInit D_800CB4EC[1]; // E16C50
extern OverlayInit D_800CB584[1]; // E16C50
extern OverlayInit D_800CB61C[1]; // DF4260
extern OverlayInit D_800CB6B4[1]; // E9F1D0
extern OverlayInit D_800CB74C[2]; // E9F1D0
extern OverlayInit D_800CB87C[1]; // E08400
extern OverlayInit D_800CB914[1]; // E51970
extern OverlayInit D_800CB9AC[1]; // E51970
extern OverlayInit D_800CBA44[2]; // E6A810
extern OverlayInit D_800CBB74[1]; // DF4260
extern OverlayInit D_800CBC0C[1]; // E08400
extern OverlayInit D_800CBD3C[1]; // EFFA40
extern UnkStruct_90A00_1C D_800CC124[400];
extern s32 D_800CFF90; extern s32 D_800CFF90;
extern f32 D_800D19AC[]; extern f32 D_800D19AC[];
extern f32 D_800D19E0[]; extern f32 D_800D19E0[];
@ -196,32 +172,30 @@ extern s32 D_800D2180[];
extern s32 D_800D2190[]; extern s32 D_800D2190[];
extern f32 D_800D21A0; extern f32 D_800D21A0;
extern f32 D_800D21A4; extern f32 D_800D21A4;
extern s32 D_800D2860[];
extern s32 D_800D2870; extern s32 D_800D2870;
extern s32 D_800D2874[];
extern s32 D_800D2884[];
extern s32 D_800D2894[];
extern s32 D_800D28A4[];
extern s32 D_800D28B4[]; extern s32 D_800D28B4[];
extern u8 D_800D2908; extern u8 D_800D2908;
extern u8 D_800D290C; extern u8 D_800D290C;
extern u8 D_800D2910; extern u8 D_800D2910;
extern u8 D_800D2914; extern u8 D_800D2914;
extern u16 D_Tex_800D99F8[]; extern u8 D_800D3180[0x1E];
extern s32 D_800D4A70;
extern OSContPad D_800DD880[4]; extern Save D_800D4D10;
extern OSContPad D_800DD898[4];
extern u8 D_800DD8B0[4];
extern s32 D_800DD8B4;
extern u8 D_800DD8B8[4];
extern u8 D_800DD8BC[4]; // Fake symbol. Only exists as loop terminator for D_800DD8B8
// extern OSContPad D_800DD8C0[4];
// extern OSContPad D_800DD8D8[4];
// extern OSContStatus D_800DD8F0[4];
// extern OSPfs D_800DD900[4];
extern s32 D_8015F924; extern s32 D_8015F924;
extern s32 D_8015F928;
extern s32 D_80161690; extern s32 D_80161690;
extern f32 D_801616BC; extern f32 D_801616BC;
extern f32 D_801616C0; extern f32 D_801616C0;
extern f32 D_801616C4; extern f32 D_801616C4;
extern f32 D_801616C8; extern f32 D_801616C8;
extern s32 D_80161708; extern s32 D_80161708;
extern s32 D_8016170C;
extern s32 D_80161730; extern s32 D_80161730;
extern s32 D_80161734; extern s32 D_80161734;
extern s32 D_80161788; extern s32 D_80161788;
@ -240,41 +214,53 @@ extern s32 D_801617B8;
extern s32 D_80161810[]; extern s32 D_80161810[];
extern f32 D_80161A10; extern f32 D_80161A10;
extern f32 D_80161A14; extern f32 D_80161A14;
extern u8 D_80161A2C;
extern u16 D_80161A2E; extern u16 D_80161A2E;
extern u16 D_80161A30; extern u16 D_80161A30;
extern u16 D_80161A32; extern u16 D_80161A32;
extern s16 D_80161A34; extern u16 D_80161A34;
extern u16 D_80161A36; extern u16 D_80161A36;
extern u8 D_80161A38; extern u8 D_80161A38;
extern s8 D_80161A39; extern u8 D_80161A39;
extern f32 D_80161A3C; extern f32 D_80161A3C;
extern f32 D_80161A40; extern f32 D_80161A40;
extern f32 D_80161A44; extern f32 D_80161A44;
extern s32 D_80161A5C;
extern u8 D_80161A90[]; extern u8 D_80161A90[];
extern s16 D_80161AA0[]; extern s16 D_80161AA0[];
extern UnkStruct_func_80090A00 D_80163FE0[60]; extern UnkStruct_func_80090A00 D_80163FE0[60];
extern UnkStruct_D_8016F110 D_8016F110[]; extern UnkStruct_D_8016F110 D_8016F110[];
extern UnkStruct_D_80175A10 D_80175A10[]; extern UnkStruct_D_80175A10 D_80175A10[];
extern UnkStruct_D_80178280* D_80178280;
extern s32 D_801774F8; extern s32 D_801774F8;
extern s32 D_80177820; extern s32 D_80177820;
extern s32 D_80177824;
extern s32 D_8017782C; extern s32 D_8017782C;
extern u8 D_80177830; extern u8 D_80177830;
extern s32 D_80177834; extern s32 D_80177834;
extern s32 D_80177838; extern s32 D_80177838;
extern s32 D_8017783C; extern s32 D_8017783C;
extern s32 D_80177840;
extern s32 D_80177848; extern s32 D_80177848;
extern s32 D_8017784C;
extern s32 D_80177854; extern s32 D_80177854;
extern s32 D_80177858[];
extern s32 D_80177868; extern s32 D_80177868;
extern s32 D_80177870[];
extern s32 D_80177898; extern s32 D_80177898;
extern s32 D_8017789C;
extern s32 D_801778A0; extern s32 D_801778A0;
extern s32 D_801778A4;
extern s32 D_801778A8; extern s32 D_801778A8;
extern u8 D_801778AB;
extern s32 D_801778B0[]; extern s32 D_801778B0[];
extern s32 D_801778B8; extern s32 D_801778B8;
extern s32 D_801778E8; extern s32 D_801778E8;
extern u16 D_80177908[];
extern u16 D_80177928[];
extern u16 D_80177938[];
extern f32 D_80177940; extern f32 D_80177940;
extern u16 D_80177948[];
extern f32 D_80177958[];
extern f32 D_80177978; extern f32 D_80177978;
extern UnkStruct_D_8017797C* D_8017797C; extern UnkStruct_D_8017797C* D_8017797C;
extern f32 D_80177980; extern f32 D_80177980;
@ -283,16 +269,28 @@ extern f32 D_801779A0;
extern f32 D_801779B8; extern f32 D_801779B8;
extern f32 D_801779C0; extern f32 D_801779C0;
extern s32 D_801779F8; extern s32 D_801779F8;
extern s32 D_80177A80;
extern s32 D_80177AE0; extern s32 D_80177AE0;
extern s32 D_80177AF8; extern s32 D_80177AF8;
extern s32 D_80177B40; extern s32 D_80177B40;
extern s32 D_80177C50;
extern u8 D_80177C74;
extern s32 D_80177C80[];
extern s32 D_80177C94;
extern u8 D_80177C98; extern u8 D_80177C98;
extern s32 D_80177C9C;
extern s32 D_80177CA4;
extern s32 D_80177CAC;
extern s32 D_80177CB4;
extern s32 D_80177CBC;
extern s32 D_80177CC4;
extern f32 D_80177D08; extern f32 D_80177D08;
extern f32 D_80177D20; extern f32 D_80177D20;
extern f32 D_80177D50; extern f32 D_80177D50;
extern f32 D_80177D68; extern f32 D_80177D68;
extern s32 D_80177DA0[]; extern s32 D_80177DA0[];
extern s32 D_80177DB0; extern s32 D_80177DB0;
extern UnkStruct_D_80178280* D_80178280;
extern s32 D_80178234; extern s32 D_80178234;
extern s32 D_8017827C; extern s32 D_8017827C;
extern s32 D_8017829C; extern s32 D_8017829C;
@ -308,7 +306,10 @@ extern s32 D_80178340;
extern s32 D_80178348; extern s32 D_80178348;
extern s32 D_80178350; extern s32 D_80178350;
extern s32 D_80178354; extern s32 D_80178354;
extern s32 D_80178380; extern s32 D_80178380[];
extern s32 D_80178390[];
extern s32 D_801783A0[];
extern s32 D_801783B0[];
extern s32 D_80178410; extern s32 D_80178410;
extern f32 D_80178420; extern f32 D_80178420;
extern f32 D_80178424; extern f32 D_80178424;
@ -320,7 +321,26 @@ extern s32 D_80178550;
extern s32 D_80178554; extern s32 D_80178554;
extern s32 D_80178558; extern s32 D_80178558;
extern s32 D_8017855C; extern s32 D_8017855C;
extern s32 D_80178580;
extern s32 *D_80178710;
extern s32 D_80178728;
extern s32 D_8017872C;
extern f32 D_80178730;
extern f32 D_80178734;
extern f32 D_80178738;
extern f32 D_8017873C;
extern f32 D_80178740;
extern s32 D_80178754;
extern s32 D_80178758;
extern SaveFile D_80178870;
extern u16 D_Tex_800D99F8[];
extern u16 D_Tex_800DBA20[];
extern Gfx D_Gfx_800DBAA0[];
extern DmaEntry gDmaTable[]; // 178A70
extern u8 D_80179010[][16 * 13 / 2];
extern UnkStruct_D_80185CBC D_80185CBC[];
extern u16 D_80183630[]; extern u16 D_80183630[];
extern u16 D_8018366C[]; extern u16 D_8018366C[];
extern u16 D_80183690[]; extern u16 D_80183690[];
@ -377,12 +397,20 @@ extern f32 D_801B905C;
extern f32 D_801B9060; extern f32 D_801B9060;
extern f32 D_801B9064; extern f32 D_801B9064;
extern f32 D_800C5D28[];
extern char D_801ADA44_EE6104[]; extern char D_801ADA44_EE6104[];
extern s32 D_801ADA84_EE6144[]; extern s32 D_801ADA84_EE6144[];
extern s32 D_801ADA94_EE6154; extern s32 D_801ADA94_EE6154;
extern u8 D_80281000[0x400];
extern u8 D_80281400[0xC00];
extern FrameBuffer D_80282000; // z buffer
extern u8 D_802A7800;
extern u8 D_802D7800;
extern s32 D_80387800;
extern u16 D_8038F080[];
extern u16 D_8038F300[];
extern FrameBuffer gFrameBuffers[3]; // 8038F800
extern u16 D_1002040[]; extern u16 D_1002040[];
extern u16 D_10050E0[]; extern u16 D_10050E0[];
extern u16 D_100BAC0[]; extern u16 D_100BAC0[];
@ -408,7 +436,6 @@ extern u8 D_1024A58[];
extern Gfx D_102A8A0[]; extern Gfx D_102A8A0[];
extern Gfx D_1024AC0[]; extern Gfx D_1024AC0[];
extern Gfx D_2000000[]; extern Gfx D_2000000[];
extern Gfx D_2000890[]; extern Gfx D_2000890[];
extern Gfx D_2001090[]; extern Gfx D_2001090[];
@ -462,6 +489,11 @@ extern Gfx D_6004570[];
extern Gfx D_D0098B0[]; extern Gfx D_D0098B0[];
extern Gfx D_F014180[]; extern Gfx D_F014180[];
extern u16 D_F000000[];
extern u16 D_F000800[];
extern u16 D_F001000[];
extern u16 D_F001800[];
extern u16 D_F002000[];
#endif // VARIABLES_H #endif // VARIABLES_H

View File

@ -45,6 +45,7 @@ D_80163FE0 = 0x80163FE0; //size:0xB130
gDmaTable = 0x80178A70; gDmaTable = 0x80178A70;
D_800D3180 = 0x800D3180; // size:0x1E
gSetupDLs = 0x800D31B0; // size:0x18C0 gSetupDLs = 0x800D31B0; // size:0x18C0
D_800DD880 = 0x800DD880; // size:0x18 D_800DD880 = 0x800DD880; // size:0x18

View File

@ -13,7 +13,7 @@ UnkStruct_func_80007088* func_80006F60(void) {
return NULL; return NULL;
} }
s32 func_80006FD8(u64 arg0, void* arg2, s32 arg3, s32 arg4) { s32 func_80006FD8(u64 arg0, void* arg2, s32* arg3, s32 arg4) {
UnkStruct_func_80007088* temp_v0; UnkStruct_func_80007088* temp_v0;
temp_v0 = func_80006F60(); temp_v0 = func_80006F60();

View File

@ -48,4 +48,4 @@
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_2F300/func_80035448.s") #pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_2F300/func_80035448.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_2F300/D_800D4D20.s") #pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_2F300/D_800D4E10.s")

View File

@ -174,7 +174,6 @@ u8 func_80058F14(u8 arg0, u8 arg1) {
return var_v1; return var_v1;
} }
extern DmaEntry D_80179010[];
extern u8 D_DE480[]; extern u8 D_DE480[];
extern u8 D_DE5D50[]; extern u8 D_DE5D50[];
extern u8 D_DEA20[]; extern u8 D_DEA20[];

View File

@ -1,6 +1,9 @@
#include "global.h" #include "global.h"
extern void func_80187520(s32, void*); extern void func_80187520(s32, void*);
#define RGBA16_RED(color16) ((((color16) >> 0xB) & 0x1F) * 8)
#define RGBA16_GREEN(color16) ((((color16) >> 6) & 0x1F) * 8)
#define RGBA16_BLUE(color16) ((((color16) >> 1) & 0x1F) * 8)
void func_800A18B0(void) { void func_800A18B0(void) {
func_80006F20(); func_80006F20();
@ -23,7 +26,7 @@ void func_800A18B0(void) {
void func_800A1980(void) { void func_800A1980(void) {
u16 temp; u16 temp;
D_80161A14 = D_80161A10; D_80161A14 = D_80161A10;
temp = D_80161A32; temp = D_80161A32; // fake?
switch (temp) { switch (temp) {
case 7: case 7:
@ -62,7 +65,7 @@ void func_800A1980(void) {
func_8001DBD0(1); func_8001DBD0(1);
} }
D_80178340 = 0xFF; D_80178340 = 0xFF;
D_80178380 = 0; D_80178380[0] = 0;
D_8017829C = 0; D_8017829C = 0;
D_80178428 = 0.0f; D_80178428 = 0.0f;
D_80161A38 = 0xFF; D_80161A38 = 0xFF;
@ -100,8 +103,6 @@ s32 func_800A1B6C(void) {
#endif #endif
void func_800A1C14(Gfx** arg0) { void func_800A1C14(Gfx** arg0) {
s32 temp_t9;
gSPDisplayList((*arg0)++, D_Gfx_800DBAA0); gSPDisplayList((*arg0)++, D_Gfx_800DBAA0);
gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 8, 8, 312, 232); gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 8, 8, 312, 232);
gDPSetDepthImage((*arg0)++, &D_80282000); gDPSetDepthImage((*arg0)++, &D_80282000);
@ -115,8 +116,8 @@ void func_800A1C14(Gfx** arg0) {
gDPSetCycleType((*arg0)++, G_CYC_1CYCLE); gDPSetCycleType((*arg0)++, G_CYC_1CYCLE);
gDPSetCombineMode((*arg0)++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); gDPSetCombineMode((*arg0)++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
gDPSetRenderMode((*arg0)++, G_RM_XLU_SURF, G_RM_XLU_SURF2); gDPSetRenderMode((*arg0)++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gDPSetPrimColor((*arg0)++, 0x00, 0x00, (u8) (D_80161A36 >> 0xB) * 8, (u8) (D_80161A36 >> 6) * 8, gDPSetPrimColor((*arg0)++, 0x00, 0x00, RGBA16_RED(D_80161A36), RGBA16_GREEN(D_80161A36),
(u8) (D_80161A36 >> 1) * 8, D_80161A38); RGBA16_BLUE(D_80161A36), D_80161A38);
} else { } else {
gDPSetFillColor((*arg0)++, (((D_80161A36 | 1) << 0x10) | (D_80161A36 | 1))); gDPSetFillColor((*arg0)++, (((D_80161A36 | 1) << 0x10) | (D_80161A36 | 1)));
} }
@ -136,9 +137,9 @@ void func_800A1E68(Gfx** arg0) {
} }
void func_800A1F44(void) { void func_800A1F44(void) {
gViewport->vp.vscale[0] = gViewport->vp.vtrans[0] = 0x280; gViewport->vp.vscale[0] = gViewport->vp.vtrans[0] = 640;
gViewport->vp.vscale[1] = gViewport->vp.vtrans[1] = 0x1E0; gViewport->vp.vscale[1] = gViewport->vp.vtrans[1] = 480;
gViewport->vp.vscale[2] = gViewport->vp.vtrans[2] = 0x1FF; gViewport->vp.vscale[2] = gViewport->vp.vtrans[2] = G_MAXZ / 2;
gViewport->vp.vscale[3] = gViewport->vp.vtrans[3] = 0; gViewport->vp.vscale[3] = gViewport->vp.vtrans[3] = 0;
} }
@ -148,44 +149,44 @@ void func_800A1FB0(Gfx** arg0, u8 arg1, u8 arg2) {
case 0: case 0:
gViewport->vp.vscale[0] = 320 * (D_80161A14 - 1.0f) * 2; gViewport->vp.vscale[0] = 320 * (D_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[1] = 240 * (D_80161A14 - 1.0f) * 2; gViewport->vp.vscale[1] = 240 * (D_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[2] = 0x1FF; gViewport->vp.vscale[2] = G_MAXZ / 2;
gViewport->vp.vscale[3] = 0; gViewport->vp.vscale[3] = 0;
gViewport->vp.vtrans[0] = 320 * (2.0f - D_80161A14) * 2; gViewport->vp.vtrans[0] = 320 * (2.0f - D_80161A14) * 2;
gViewport->vp.vtrans[1] = 240 * (2.0f - D_80161A14) * 2; gViewport->vp.vtrans[1] = 240 * (2.0f - D_80161A14) * 2;
gViewport->vp.vtrans[2] = 0x1FF; gViewport->vp.vtrans[2] = G_MAXZ / 2;
gViewport->vp.vtrans[3] = 0; gViewport->vp.vtrans[3] = 0;
gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 8, 8, 160, 120); gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 8, 8, 160, 120);
break; break;
case 1: case 1:
gViewport->vp.vscale[0] = 320 * (D_80161A14 - 1.0f) * 2; gViewport->vp.vscale[0] = 320 * (D_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[1] = 240 * (D_80161A14 - 1.0f) * 2; gViewport->vp.vscale[1] = 240 * (D_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[2] = 0x1FF; gViewport->vp.vscale[2] = G_MAXZ / 2;
gViewport->vp.vscale[3] = 0; gViewport->vp.vscale[3] = 0;
gViewport->vp.vtrans[0] = 320 * D_80161A14 * 2; gViewport->vp.vtrans[0] = 320 * D_80161A14 * 2;
gViewport->vp.vtrans[1] = (2.0f - D_80161A14) * 240 * 2; gViewport->vp.vtrans[1] = 240 * (2.0f - D_80161A14) * 2;
gViewport->vp.vtrans[2] = 0x1FF; gViewport->vp.vtrans[2] = G_MAXZ / 2;
gViewport->vp.vtrans[3] = 0; gViewport->vp.vtrans[3] = 0;
gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 160, 8, 312, 120); gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 160, 8, 312, 120);
break; break;
case 2: case 2:
gViewport->vp.vscale[0] = 320 * (D_80161A14 - 1.0f) * 2; gViewport->vp.vscale[0] = 320 * (D_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[1] = 240 * (D_80161A14 - 1.0f) * 2; gViewport->vp.vscale[1] = 240 * (D_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[2] = 0x1FF; gViewport->vp.vscale[2] = G_MAXZ / 2;
gViewport->vp.vscale[3] = 0; gViewport->vp.vscale[3] = 0;
gViewport->vp.vtrans[0] = 320 * (2.0f - D_80161A14) * 2; gViewport->vp.vtrans[0] = 320 * (2.0f - D_80161A14) * 2;
gViewport->vp.vtrans[1] = 240 * D_80161A14 * 2; gViewport->vp.vtrans[1] = 240 * D_80161A14 * 2;
gViewport->vp.vtrans[2] = 0x1FF; gViewport->vp.vtrans[2] = G_MAXZ / 2;
gViewport->vp.vtrans[3] = 0; gViewport->vp.vtrans[3] = 0;
gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 8, 120, 160, 232); gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 8, 120, 160, 232);
break; break;
case 3: case 3:
gViewport->vp.vscale[0] = 320 * (D_80161A14 - 1.0f) * 2; gViewport->vp.vscale[0] = 320 * (D_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[1] = 240 * (D_80161A14 - 1.0f) * 2; gViewport->vp.vscale[1] = 240 * (D_80161A14 - 1.0f) * 2;
gViewport->vp.vscale[2] = 0x1FF; gViewport->vp.vscale[2] = G_MAXZ / 2;
gViewport->vp.vscale[3] = 0; gViewport->vp.vscale[3] = 0;
gViewport->vp.vtrans[0] = 320 * D_80161A14 * 2; gViewport->vp.vtrans[0] = 320 * D_80161A14 * 2;
gViewport->vp.vtrans[1] = 240 * D_80161A14 * 2; gViewport->vp.vtrans[1] = 240 * D_80161A14 * 2;
gViewport->vp.vtrans[2] = 0x1FF; gViewport->vp.vtrans[2] = G_MAXZ / 2;
gViewport->vp.vtrans[3] = 0; gViewport->vp.vtrans[3] = 0;
gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 160, 120, 312, 232); gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 160, 120, 312, 232);
break; break;
@ -258,7 +259,7 @@ void func_800A25DC(void) {
D_80177820 = 0; D_80177820 = 0;
return; return;
case 6: case 6:
D_801774F8 = 0x32; D_801774F8 = 50;
break; break;
case 7: case 7:
D_801774F8 = D_800D28B4[D_80178234]; D_801774F8 = D_800D28B4[D_80178234];
@ -273,7 +274,229 @@ void func_800A25DC(void) {
} }
} }
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_A24B0/func_800A26C0.s") void func_800A26C0(void) {
s32 i;
u8 spBB;
u16 var_v0_3;
func_800A1980();
if (D_80161A39 != 0) {
func_800A1E68(&gUnkDisp1);
D_80161A39 = 0;
return;
}
func_800A1C14(&gUnkDisp1);
func_800A25DC();
if (func_800A1B6C() != 1) {
func_8000316C(&gUnkDisp1);
func_800A1FB0(&gUnkDisp1, D_801778AB, 0);
if (D_8017783C != 0) {
D_8017783C--;
}
switch (D_80177834) {
case 0x64:
D_8017783C = 2;
D_80177834++;
break;
case 0x65:
if (D_8017783C == 0) {
D_80177834++;
}
break;
case 0x66:
func_800B8DD0(&gMasterDisp, 0x4C);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255);
func_8009D994(&gMasterDisp, D_F000000, 0x80, 0x10, 100.0f, 86.0f, 1.0f, 1.0f);
func_8009D994(&gMasterDisp, D_F000800, 0x80, 0x10, 100.0f, 102.0f, 1.0f, 1.0f);
func_8009D994(&gMasterDisp, D_F001000, 0x80, 0x10, 100.0f, 118.0f, 1.0f, 1.0f);
func_8009D994(&gMasterDisp, D_F001800, 0x80, 0x10, 100.0f, 134.0f, 1.0f, 1.0f);
func_8009D994(&gMasterDisp, D_F002000, 0x80, 0xA, 100.0f, 150.0f, 1.0f, 1.0f);
D_80177834++;
break;
case 0x67:
if (func_800C3194() != 0) {
D_80178870 = *((SaveFile*) &D_800D4D10);
func_800C3084();
}
D_80177834++;
func_80006FD8(MSEC_TO_CYCLES(1000), func_80007068, &D_80177834, 1);
case 0x68:
func_800B8DD0(&gMasterDisp, 0x4C);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255);
func_8009D994(&gMasterDisp, D_F000000, 0x80, 0x10, 100.0f, 86.0f, 1.0f, 1.0f);
func_8009D994(&gMasterDisp, D_F000800, 0x80, 0x10, 100.0f, 102.0f, 1.0f, 1.0f);
func_8009D994(&gMasterDisp, D_F001000, 0x80, 0x10, 100.0f, 118.0f, 1.0f, 1.0f);
func_8009D994(&gMasterDisp, D_F001800, 0x80, 0x10, 100.0f, 134.0f, 1.0f, 1.0f);
func_8009D994(&gMasterDisp, D_F002000, 0x80, 0xA, 100.0f, 150.0f, 1.0f, 1.0f);
break;
case 0x69:
D_80177834 = 1;
D_801774F8 = 0;
D_80177820 = 0;
break;
case 0x1:
D_80177834 = 2;
D_80177AE0 = 1;
D_80177824 = 1;
func_80006F20();
func_800A6148();
D_801778A8 = 1;
D_80161AA0[0] = 2;
D_80177D20 = 0.0f;
D_8016170C = D_80177A80 = D_80177830 = D_80177838 = D_80177840 = D_80178754 = D_801778E8 = D_80177AE0 =
D_80178410 = D_80177B40 = D_80177854 = D_8017784C = D_80177898 = D_80161734 = D_80161A2C =
D_80161A36 = D_80178340 = 0;
D_80161A32 = D_80177C94 = D_80177CAC = D_80177CB4 = D_80177CBC = D_80177CC4 = D_80177C9C = D_80177CA4 =
D_80161A5C = D_80161A34 = 0;
for (i = 0; i < 4; i++) {
D_80177908[i] = 2;
D_80177928[i] = 4;
D_80177938[i] = 0x8000;
D_80177948[i] = 0x4000;
D_80177958[i] = 1.0f;
D_80177858[i] = 3;
D_80177870[i] = 0;
D_800D2860[i] = 1;
D_80178380[i] = 0;
}
D_8017789C = 0;
D_801778A4 = 3;
D_80161A38 = 0xFF;
for (i = 0; i < 30; i++) {
D_800D3180[i] = 0;
}
D_801779F8 = 0;
D_80177C74 = D_80178870.raw[0x14];
switch (D_80177C74) {
case 0:
var_v0_3 = 0;
break;
case 1:
var_v0_3 = 3;
break;
case 2:
var_v0_3 = 1;
break;
default:
D_80177C74 = 0;
var_v0_3 = 0;
break;
}
func_800182F4(var_v0_3 | 0xE0000000);
D_80177C80[0] = D_80178870.raw[0x15];
D_80177C80[1] = D_80178870.raw[0x16];
D_80177C80[2] = D_80178870.raw[0x17];
if (D_80177C80[0] > 99) {
D_80177C80[0] = 99;
}
if (D_80177C80[1] > 99) {
D_80177C80[1] = 99;
}
if (D_80177C80[2] > 99) {
D_80177C80[2] = 99;
}
func_8001D8A8(0, D_80177C80[0]);
func_8001D8A8(1, D_80177C80[1]);
func_8001D8A8(2, D_80177C80[2]);
break;
case 0x2:
func_80187520(0x67, NULL);
break;
case 0x3:
func_80187520(0x6B, NULL);
break;
case 0x4:
func_8019E8D0();
break;
case 0x6:
func_800C20B0();
break;
case 0x7:
func_800B86CC();
break;
case 0x5:
func_80187520(0x6D, NULL);
break;
case 0x8:
D_80177898 = 8;
func_8018A96C();
break;
default:
break;
}
func_800A24DC(0);
if (D_801778A8 == 2) {
func_800A1FB0(&gMasterDisp, D_801778A8, 1);
func_800A24DC(1);
gDPPipeSync(gMasterDisp++);
gDPSetScissor(gMasterDisp++, G_SC_NON_INTERLACE, 8, 8, 312, 232);
} else if ((D_801778A8 == 4) && (D_80177898 != 0)) {
func_800A1FB0(&gMasterDisp, D_801778A8, 3);
func_800A24DC(3);
func_800A1FB0(&gMasterDisp, D_801778AB, 2);
func_800A24DC(2);
func_800A1FB0(&gMasterDisp, D_801778AB, 1);
func_800A24DC(1);
gDPPipeSync(gMasterDisp++);
gDPSetScissor(gMasterDisp++, G_SC_NON_INTERLACE, 8, 8, 312, 232);
gDPSetColorDither(gMasterDisp++, G_CD_NOISE);
gDPSetAlphaDither(gMasterDisp++, G_AD_NOISE);
gDPSetCycleType(gMasterDisp++, G_CYC_1CYCLE);
gDPSetCombineMode(gMasterDisp++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
gDPSetRenderMode(gMasterDisp++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x0, 0, 0, 0, 0);
gDPFillRectangle(gMasterDisp++, 157, 8, 162, 232);
gDPFillRectangle(gMasterDisp++, 8, 117, 312, 122);
if (D_80177C98 == 0) {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x0, 0, 0, 0, 255);
} else {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x0, 100, 100, 255, 255);
}
gDPFillRectangle(gMasterDisp++, 158, 8, 161, 232);
gDPFillRectangle(gMasterDisp++, 8, 118, 312, 121);
func_8008CB8C();
}
spBB = 0;
if (D_801778A8 == 1) {
func_8009F574(&gMasterDisp, 0, 0, 319, 239, D_80178390[0], D_801783A0[0], D_801783B0[0], D_80178380[0]);
if ((D_80177898 == 4) || (D_80177898 == 8)) {
func_800BB5D0();
if (D_80161A2C != 0) {
func_8008FA84();
func_8008CA44();
}
func_8008DE68();
}
} else {
for (i = 0; i < D_801778A8; i++) {
if (D_80178280[i].unk_224 != 0) {
func_8009F574(&gMasterDisp, D_800D2874[i], D_800D2894[i], D_800D2884[i], D_800D28A4[i], D_80178348,
D_80178350, D_80178354, D_80178340);
spBB = 1;
} else {
func_8009F574(&gMasterDisp, D_800D2874[i], D_800D2894[i], D_800D2884[i], D_800D28A4[i],
D_80178390[i], D_801783A0[i], D_801783B0[i], D_80178380[i]);
}
}
}
func_80040CDC();
func_8008865C();
func_8002E548();
if ((D_80177834 == 7) && (D_801778E8 != 0)) {
func_800C1ED4();
}
func_80084688(0, D_80177C50);
if (spBB == 0) {
func_8009F574(&gMasterDisp, 0, 0, 0x13F, 0xEF, D_80178348, D_80178350, D_80178354, D_80178340);
}
func_80016A50();
}
}
UnkStruct_func_80090A00* func_800A3608(s32 arg0) { UnkStruct_func_80090A00* func_800A3608(s32 arg0) {
UnkStruct_func_80090A00* var_a2 = D_80163FE0; UnkStruct_func_80090A00* var_a2 = D_80163FE0;

View File

@ -1,17 +1,189 @@
#include "global.h" #include "global.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C2830.s") u16* func_800C2830(u16 arg0) {
s32 i;
UnkStruct_D_80185CBC* ptr = D_80185CBC;
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C2890.s") while (ptr->unk0 != -1) {
if (ptr->unk0 == arg0) {
return ptr->unk4;
}
ptr++;
}
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C28DC.s") u16 func_800C2890(u16* arg0) {
s32 i;
UnkStruct_D_80185CBC* ptr = D_80185CBC;
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C2928.s") while (ptr->unk4 != NULL) {
if (ptr->unk4 == arg0) {
return ptr->unk0;
}
ptr++;
}
return -1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C295C.s") s32 func_800C28DC(u16* arg0) {
s32 var_v1 = 0;
u16* ptr = arg0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C2AF0.s") while (*ptr != 0) {
if (*ptr > 15 || *ptr == 12) {
var_v1++;
}
ptr++;
}
return var_v1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C2D3C.s") s32 func_800C2928(u16* arg0) {
s32 var_v1 = 0;
u16* ptr = arg0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C2F30.s") while (*ptr != 0) {
var_v1++;
ptr++;
}
return var_v1;
}
void func_800C295C(Gfx** arg0, u16 arg1, s32 arg2, s32 arg3) {
gDPLoadTextureBlock_4b((*arg0)++, D_80179010[arg1 >> 2], G_IM_FMT_CI, 16, 13, arg1 & 3, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle((*arg0)++, arg2 << 2, arg3 << 2, (arg2 + 13) << 2, (arg3 + 13) << 2, G_TX_RENDERTILE, 0x40, 0,
0x400, 0x400);
}
s32 func_800C2AF0(Gfx** arg0, u16* arg1, s32 arg2, s32 arg3, s32 arg4) {
s32 var_s2 = arg2;
s32 var_s4 = arg3;
s32 i;
s32 var_v1;
gDPSetPrimColor((*arg0)++, 0x00, 0x00, 255, 255, 255, 255);
gDPSetTextureLUT((*arg0)++, G_TT_RGBA16);
gDPLoadTLUT((*arg0)++, 64, 0x100, D_Tex_800DBA20);
// bug: if the for loop is skipped, var_v1 is never initialized
for (i = 0; arg1[i] != 0 && i < arg4; i++) {
var_v1 = 0;
switch (arg1[i]) {
case 1:
var_s2 = arg2;
var_s4 += 13;
break;
case 16:
case 17:
case 18:
case 19:
gDPSetPrimColor((*arg0)++, 0x00, 0x00, 255, 255, 0, 255);
func_800C295C(arg0, arg1[i], var_s2, var_s4);
var_s2 += 14;
var_v1 = 1;
gDPSetPrimColor((*arg0)++, 0x00, 0x00, 255, 255, 255, 255);
break;
case 12:
default:
func_800C295C(arg0, arg1[i], var_s2, var_s4);
var_s2 += 7;
var_v1 = 1;
break;
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 13:
case 14:
case 15:
break;
}
}
return var_v1;
}
void func_800C2D3C(Gfx** arg0, u16* arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6) {
s32 var_s2 = arg2;
s32 var_s4 = arg3;
s32 i;
s32 var_v1;
gDPSetTextureLUT((*arg0)++, G_TT_RGBA16);
gDPLoadTLUT((*arg0)++, 64, 0x100, D_Tex_800DBA20);
for (i = 0; arg1[i] != 0 && i < arg6; i++) {
switch (arg1[i]) {
case 1:
var_s2 = arg2;
var_s4 += 15;
break;
case 13:
var_s2 += 2;
break;
case 14:
var_s2 += 3;
break;
case 12:
var_s2 += 7;
break;
default:
if ((arg5 < var_s4) && (var_s4 < arg4)) {
func_800C295C(arg0, arg1[i], var_s2, var_s4);
}
var_s2 += 7;
break;
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 15:
break;
}
}
}
s32 func_800C2F30(u16* arg0, s32 arg1) {
s32 i;
s32 var_v1;
// bug: if the for loop is skipped, var_v1 is never initialized
for (i = 0; arg0[i] != 0 && i < arg1; i++) {
var_v1 = 0;
switch (arg0[i]) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
break;
default:
var_v1 = 1;
break;
}
}
return var_v1;
}

View File

@ -33,8 +33,8 @@ def calculate_crcs(buffer: bytearray, seed=0xF8CA4DDC, start=0x1000, end=0x10100
def mio0_comp_bytes(decomp_bytes, mio0): def mio0_comp_bytes(decomp_bytes, mio0):
#possibly replace with a python implementation later #possibly replace with a python implementation later
decomp_path = os.path.dirname(mio0) + 'TempComp.bin.mio0' decomp_path = os.path.dirname(mio0) + '/TempComp.bin.mio0'
comp_path = os.path.dirname(mio0) + 'TempComp.bin' comp_path = os.path.dirname(mio0) + '/TempComp.bin'
with open(decomp_path, 'wb') as decomp_file: with open(decomp_path, 'wb') as decomp_file:
decomp_file.write(decomp_bytes) decomp_file.write(decomp_bytes)
@ -50,8 +50,8 @@ def mio0_comp_bytes(decomp_bytes, mio0):
def mio0_dec_bytes(comp_bytes, mio0): def mio0_dec_bytes(comp_bytes, mio0):
#possibly replace with a python implementation later #possibly replace with a python implementation later
decomp_path = os.path.dirname(mio0) + 'TempComp.bin.mio0' decomp_path = os.path.dirname(mio0) + '/TempComp.bin.mio0'
comp_path = os.path.dirname(mio0) + 'TempComp.bin' comp_path = os.path.dirname(mio0) + '/TempComp.bin'
with open(comp_path, 'wb') as comp_file: with open(comp_path, 'wb') as comp_file:
comp_file.write(comp_bytes) comp_file.write(comp_bytes)

Binary file not shown.

View File

@ -276,10 +276,10 @@
# - [0xD3DB0, data, fox_rcp] # - [0xD3DB0, data, fox_rcp]
# - [0xD5670, data, sf_BB360] # - [0xD5670, data, sf_BB360]
# - [0xD5690, data, sf_versus] # - [0xD5690, data, sf_versus]
# - [0xD5910, data, ???] # - [0xD5910, data, sf_C3BB0]
# RODATA - game engine # RODATA - game engine
- [0xD5920, .rodata, sf_2F300] - [0xD5A10, .rodata, sf_2F300]
- [0xD5CF0, .rodata, sf_36930] - [0xD5CF0, .rodata, sf_36930]
- [0xD61D0, .rodata, sf_43AC0] - [0xD61D0, .rodata, sf_43AC0]
- [0xD61F0, .rodata, sf_43E80] - [0xD61F0, .rodata, sf_43E80]