diff --git a/include/PR/gbi.h b/include/PR/gbi.h index 1e83e197f4..49f03b6da1 100644 --- a/include/PR/gbi.h +++ b/include/PR/gbi.h @@ -2769,7 +2769,7 @@ _DW({ \ #define gSPClearGeometryMode(pkt, word) gSPGeometryMode((pkt),(word),0) #define gsSPClearGeometryMode(word) gsSPGeometryMode((word),0) #define gSPLoadGeometryMode(pkt, word) gSPGeometryMode((pkt),-1,(word)) -#define gsSPLoadGeometryMode(pkt, word) gsSPGeometryMode(-1,(word)) +#define gsSPLoadGeometryMode(word) gsSPGeometryMode(-1,(word)) #else /* F3DEX_GBI_2 */ #define gSPSetGeometryMode(pkt, word) \ @@ -2922,13 +2922,13 @@ _DW({ \ (c0) | (c1)) #define gSetImage(pkt, cmd, fmt, siz, width, i) \ -{ \ +_DW({ \ Gfx *_g = (Gfx *)(pkt); \ \ _g->words.w0 = _SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) | \ _SHIFTL(siz, 19, 2) | _SHIFTL((width)-1, 0, 12); \ _g->words.w1 = (unsigned int)(i); \ -} +}) #define gsSetImage(cmd, fmt, siz, width, i) \ { \ @@ -4212,7 +4212,7 @@ _DW({ \ #define gDPSetScissorFrac(pkt, mode, ulx, uly, lrx, lry) \ -{ \ +_DW({ \ Gfx *_g = (Gfx *)pkt; \ \ _g->words.w0 = _SHIFTL(G_SETSCISSOR, 24, 8) | \ @@ -4221,7 +4221,7 @@ _DW({ \ _g->words.w1 = _SHIFTL(mode, 24, 2) | \ _SHIFTL((int)((lrx)), 12, 12) | \ _SHIFTL((int)((lry)), 0, 12); \ -} +}) #define gsDPSetScissor(mode, ulx, uly, lrx, lry) \ { \ @@ -4245,13 +4245,13 @@ _DW({ \ /* Fraction never used in fill */ #define gDPFillRectangle(pkt, ulx, uly, lrx, lry) \ -{ \ +_DW({ \ Gfx *_g = (Gfx *)(pkt); \ \ _g->words.w0 = (_SHIFTL(G_FILLRECT, 24, 8) | \ _SHIFTL((lrx), 14, 10) | _SHIFTL((lry), 2, 10));\ _g->words.w1 = (_SHIFTL((ulx), 14, 10) | _SHIFTL((uly), 2, 10));\ -} +}) #define gsDPFillRectangle(ulx, uly, lrx, lry) \ { \ diff --git a/include/functions.h b/include/functions.h index f1a1ccda62..38b0f5e3ea 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2321,85 +2321,85 @@ void func_8012AF18(void); // func_8012AF18 void func_8012AF38(void); // func_8012AF38 void func_8012AF9C(void); // func_8012AF9C void func_8012BBE8(void); // func_8012BBE8 -void func_8012BC50(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_8012BC50 -void func_8012BD8C(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_8012BD8C -void func_8012BF08(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_8012BF08 -Gfx* func_8012BF3C(Gfx* param_1, s32 param_2); // func_8012BF3C -void func_8012BF78(void); // func_8012BF78 -void func_8012BF98(void); // func_8012BF98 -void func_8012BFC4(void); // func_8012BFC4 -UNK_PTR func_8012BFEC(UNK_PTR param_1); // func_8012BFEC -void func_8012C014(void); // func_8012C014 -void func_8012C058(int param_1); // func_8012C058 -void func_8012C080(void); // func_8012C080 -void func_8012C0A8(int param_1); // func_8012C0A8 -void func_8012C0D0(int param_1); // func_8012C0D0 -void func_8012C0F8(int param_1); // func_8012C0F8 -void func_8012C120(int param_1); // func_8012C120 -void func_8012C148(void); // func_8012C148 -void func_8012C170(int param_1); // func_8012C170 -void func_8012C198(void); // func_8012C198 -void func_8012C1C0(void); // func_8012C1C0 -void func_8012C1EC(void); // func_8012C1EC -void func_8012C214(void); // func_8012C214 -void func_8012C240(void); // func_8012C240 +Gfx* Gfx_SetFog(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f); // func_8012BC50 +Gfx* Gfx_SetFogWithSync(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f); // func_8012BD8C +Gfx* Gfx_SetFog2(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f); // func_8012BF08 +Gfx* Gfx_CallSetupDLImpl(Gfx* gfx, u32 i); // func_8012BF3C +Gfx* Gfx_CallSetupDL(Gfx* gfx, u32 i); // func_8012BF78 +void Gfx_CallSetupDLAtPtr(Gfx** gfxp, u32 i); // func_8012BF98 +Gfx* func_8012BFC4(Gfx* gfx); // func_8012BFC4 +Gfx* func_8012BFEC(Gfx* gfx); // func_8012BFEC +Gfx* func_8012C014(Gfx* gfx); // func_8012C014 +void func_8012C058(GraphicsContext* gCtxt); // func_8012C058 +void func_8012C080(GraphicsContext* gCtxt); // func_8012C080 +void func_8012C0A8(GraphicsContext* gCtxt); // func_8012C0A8 +void func_8012C0D0(GraphicsContext* gCtxt); // func_8012C0D0 +void func_8012C0F8(GraphicsContext* gCtxt); // func_8012C0F8 +void func_8012C120(GraphicsContext* gCtxt); // func_8012C120 +void func_8012C148(GraphicsContext* gCtxt); // func_8012C148 +void func_8012C170(GraphicsContext* gCtxt); // func_8012C170 +Gfx* func_8012C198(Gfx* gfx); // func_8012C198 +void func_8012C1C0(GraphicsContext* gCtxt); // func_8012C1C0 +Gfx* func_8012C1EC(Gfx* gfx); // func_8012C1EC +void func_8012C214(GraphicsContext* gCtxt); // func_8012C214 +void func_8012C240(GraphicsContext* gCtxt); // func_8012C240 void func_8012C268(GlobalContext* ctxt); // func_8012C268 void func_8012C28C(GraphicsContext* gCtxt); // func_8012C28C -void func_8012C2B4(void); // func_8012C2B4 +Gfx* func_8012C2B4(Gfx* gfx); // func_8012C2B4 void func_8012C2DC(GraphicsContext* gCtxt); // func_8012C2DC -void func_8012C304(void); // func_8012C304 -void func_8012C32C(int param_1); // func_8012C32C -void func_8012C354(int param_1); // func_8012C354 -void func_8012C37C(int param_1); // func_8012C37C -void func_8012C3A4(void); // func_8012C3A4 -void func_8012C3CC(void); // func_8012C3CC -void func_8012C3F4(void); // func_8012C3F4 -void func_8012C420(int param_1); // func_8012C420 +Gfx* func_8012C304(Gfx* gfx); // func_8012C304 +void func_8012C32C(GraphicsContext* gCtxt); // func_8012C32C +void func_8012C354(GraphicsContext* gCtxt); // func_8012C354 +void func_8012C37C(GraphicsContext* gCtxt); // func_8012C37C +Gfx* func_8012C3A4(Gfx* gfx); // func_8012C3A4 +Gfx* func_8012C3CC(Gfx* gfx); // func_8012C3CC +void func_8012C3F4(GraphicsContext* gCtxt); // func_8012C3F4 +void func_8012C420(GraphicsContext* gCtxt); // func_8012C420 void func_8012C448(GraphicsContext* gCtxt); // func_8012C448 -void func_8012C470(void); // func_8012C470 -UNK_PTR func_8012C498(UNK_PTR param_1); // func_8012C498 -void func_8012C4C0(void); // func_8012C4C0 -void func_8012C4E8(int param_1); // func_8012C4E8 -void func_8012C510(int param_1); // func_8012C510 -void func_8012C538(int param_1); // func_8012C538 +void func_8012C470(GraphicsContext* gCtxt); // func_8012C470 +Gfx* func_8012C498(Gfx* gfx); // func_8012C498 +void func_8012C4C0(GraphicsContext* gCtxt); // func_8012C4C0 +void func_8012C4E8(GraphicsContext* gCtxt); // func_8012C4E8 +void func_8012C510(GraphicsContext* gCtxt); // func_8012C510 +void func_8012C538(GraphicsContext* gCtxt); // func_8012C538 void func_8012C560(GraphicsContext* gCtxt); // func_8012C560 -void func_8012C588(void); // func_8012C588 -void func_8012C5B0(void); // func_8012C5B0 -void func_8012C5D8(int param_1); // func_8012C5D8 -void func_8012C600(void); // func_8012C600 +void func_8012C588(GraphicsContext* gCtxt); // func_8012C588 +void func_8012C5B0(GraphicsContext* gCtxt); // func_8012C5B0 +void func_8012C5D8(GraphicsContext* gCtxt); // func_8012C5D8 +Gfx* func_8012C600(Gfx* gfx); // func_8012C600 void func_8012C628(GraphicsContext* gCtxt); // func_8012C628 -void func_8012C654(void); // func_8012C654 -void func_8012C680(void); // func_8012C680 -void func_8012C6AC(void); // func_8012C6AC -void func_8012C6D4(int param_1); // func_8012C6D4 -void func_8012C6FC(void); // func_8012C6FC -void func_8012C724(void); // func_8012C724 -UNK_PTR func_8012C74C(UNK_PTR param_1); // func_8012C74C -UNK_PTR func_8012C774(UNK_PTR param_1); // func_8012C774 -UNK_PTR func_8012C7B8(UNK_PTR param_1); // func_8012C7B8 -Gfx* func_8012C7FC(Gfx* puParm1); // func_8012C7FC -UNK_PTR func_8012C840(UNK_PTR param_1); // func_8012C840 -void func_8012C868(void); // func_8012C868 +void func_8012C654(GraphicsContext* gCtxt); // func_8012C654 +void func_8012C680(Gfx** gfxp); // func_8012C680 +void func_8012C6AC(GraphicsContext* gCtxt); // func_8012C6AC +void func_8012C6D4(GraphicsContext* gCtxt); // func_8012C6D4 +void func_8012C6FC(GraphicsContext* gCtxt); // func_8012C6FC +Gfx* func_8012C724(Gfx* gfx); // func_8012C724 +Gfx* func_8012C74C(Gfx* gfx); // func_8012C74C +Gfx* func_8012C774(Gfx* gfx); // func_8012C774 +Gfx* func_8012C7B8(Gfx* gfx); // func_8012C7B8 +Gfx* func_8012C7FC(Gfx* gfx); // func_8012C7FC +Gfx* func_8012C840(Gfx* gfx); // func_8012C840 +Gfx* func_8012C868(Gfx* gfx); // func_8012C868 void func_8012C8AC(GraphicsContext* gCtxt); // func_8012C8AC -void func_8012C8D4(void); // func_8012C8D4 -void func_8012C8FC(int param_1); // func_8012C8FC -void func_8012C924(int param_1); // func_8012C924 -void func_8012C94C(void); // func_8012C94C -void func_8012C974(void); // func_8012C974 -void func_8012C9BC(void); // func_8012C9BC -void func_8012C9E4(int param_1); // func_8012C9E4 -void func_8012CA0C(void); // func_8012CA0C -void func_8012CA38(int param_1); // func_8012CA38 -void func_8012CA60(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_8012CA60 -void func_8012CB04(void); // func_8012CB04 -void func_8012CB28(void); // func_8012CB28 -Gfx* Rcp_GenerateSetTileSizeDl(GraphicsContext* gCtxt, u32 upperS, u32 upperT, u32 lengthS, u32 lengthT); // func_8012CB4C -Gfx* Rcp_GenerateSetTileSize2Dl(GraphicsContext* gCtxt, u32 tile1, u32 upperS1, u32 upperT1, u32 lengthS1, u32 lengthT1, u32 tile2, u32 upperS2, u32 upperT2, u32 lengthS2, u32 lengthT2); // func_8012CBD0 -void func_8012CCF0(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, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14, UNK_TYPE4 param_15); // func_8012CCF0 -void func_8012CE50(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // func_8012CE50 -void func_8012CEA8(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_8012CEA8 -void func_8012CF0C(GraphicsContext* gCtxt, int iParm2, int iParm3, unsigned int uParm4, u8 param_5, u8 param_6); // func_8012CF0C -void func_8012D374(void); // func_8012D374 +void func_8012C8D4(GraphicsContext* gCtxt); // func_8012C8D4 +void func_8012C8FC(GraphicsContext* gCtxt); // func_8012C8FC +void func_8012C924(GraphicsContext* gCtxt); // func_8012C924 +void func_8012C94C(GraphicsContext* gCtxt); // func_8012C94C +void func_8012C974(GraphicsContext* gCtxt); // func_8012C974 +void func_8012C9BC(GraphicsContext* gCtxt); // func_8012C9BC +void func_8012C9E4(GraphicsContext* gCtxt); // func_8012C9E4 +void func_8012CA0C(Gfx** gfxp); // func_8012CA0C +void func_8012CA38(GraphicsContext* gCtxt); // func_8012CA38 +Gfx* Gfx_BranchTexScroll(Gfx** gfxp, u32 x, u32 y, s32 width, s32 height); // func_8012CA60 +void func_8012CB04(Gfx** gfxp, u32 x, u32 y); // func_8012CB04 +Gfx* func_8012CB28(GraphicsContext* gfxCtx, u32 x, u32 y); // func_8012CB28 +Gfx* Gfx_TexScroll(GraphicsContext* gfxCtx, u32 x, u32 y, s32 width, s32 height); // func_8012CB4C +Gfx* Gfx_TwoTexScroll(GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 width1, s32 height1, s32 tile2, u32 x2, u32 y2, s32 width2, s32 height2); // func_8012CBD0 +Gfx* Gfx_TwoTexScrollEnvColor(GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 width1, s32 height1, s32 tile2, u32 x2, u32 y2, s32 width2, s32 height2, s32 r, s32 g, s32 b, s32 a); // func_8012CCF0 +Gfx* Gfx_EnvColor(GraphicsContext* gfxCtx, s32 r, s32 g, s32 b, s32 a); // func_8012CE50 +Gfx* Gfx_PrimColor(GraphicsContext* gfxCtx, s32 lodfrac, s32 r, s32 g, s32 b, s32 a); // func_8012CEA8 +void func_8012CF0C(GraphicsContext* gCtxt, s32 iParm2, s32 iParm3, u8 r, u8 g, u8 b); // func_8012CF0C +void func_8012D374(GraphicsContext* gCtxt, u8 r, u8 g, u8 b); // func_8012D374 void func_8012D40C(f32* param_1, f32* param_2, s16* param_3); // func_8012D40C void Room_nop8012D510(GlobalContext* ctxt, Room* room, UNK_PTR param_3, UNK_TYPE1 param_4); // func_8012D510 void Room_DrawType3Mesh(GlobalContext* ctxt, Room* room, u32 flags); // func_8012D528 @@ -3149,21 +3149,21 @@ void* Gamealloc_Alloc(GameAlloc* heap, u32 size); // func_80173C10 void Gamealloc_Free(GameAlloc* heap, void* ptr); // func_80173C7C void Gamealloc_FreeAll(GameAlloc* heap); // func_80173CC8 void Gamealloc_Init(GameAlloc* iParm1); // func_80173D18 -void Graph_FaultDrawFunc(void); // func_80173D30 +void Graph_FaultClient(void); // func_80173D30 void Graph_DlAlloc(DispBuf* dl, void* memoryBlock, u32 size); // func_80173DAC -void Graph_RenderSetup(GraphicsContext* gCtxt); // func_80173DCC -GameStateOverlay* Graph_GetNextGameStateMetaInfo(GameState* ctxt); // func_80173F98 +void Graph_InitTHGA(GraphicsContext* gCtxt); // func_80173DCC +GameStateOverlay* Graph_GetNextGameState(GameState* ctxt); // func_80173F98 void* Graph_FaultAddrConvFunc(void* addr); // func_80174060 -void Graph_ContextInit(GraphicsContext* gCtxt); // func_801740D0 -void Graph_Fini(void); // func_80174174 +void Graph_Init(GraphicsContext* gCtxt); // func_801740D0 +void Graph_Destroy(void); // func_80174174 void Graph_Render(GraphicsContext* gCtxt, GameState* ctxt); // func_801741A8 void Graph_FrameSetup(GameState* ctxt); // func_801744AC void Graph_RenderFrame(GraphicsContext* gCtxt, GameState* ctxt); // func_801744F8 void Graph_DoFrame(GraphicsContext* gCtxt, GameState* ctxt); // func_80174868 void Graph_ThreadEntry(void* arg); // func_801748A0 -void func_80174A40(void); // func_80174A40 -void func_80174A4C(void); // func_80174A4C -void func_80174A64(void); // func_80174A64 +Gfx* Graph_GfxPlusOne(Gfx* gfx); // func_80174A40 +Gfx* Graph_BranchDlist(Gfx* gfx, Gfx* dst); // func_80174A4C +void* Graph_DlistAlloc(Gfx** gfx, u32 size); // func_80174A64 void func_80174AA0(void); // func_80174AA0 void func_80174AB4(void); // func_80174AB4 void func_80174B20(void); // func_80174B20 @@ -3236,7 +3236,7 @@ void func_80178818(void); // func_80178818 void func_80178978(void); // func_80178978 void func_801789D4(void); // func_801789D4 u32* get_framebuffer(s32 index); // func_801789EC -void func_80178A14(void); // func_80178A14 +u16* get_zbuffer(void); // func_80178A14 UNK_TYPE4 func_80178A24(void); // func_80178A24 void func_80178A34(void); // func_80178A34 s32 func_80178A94(s32 param_1, s32 param_2); // func_80178A94 diff --git a/include/segment.h b/include/segment.h index 272777a304..780f593ed5 100644 --- a/include/segment.h +++ b/include/segment.h @@ -6,6 +6,12 @@ extern UNK_TYPE D_04029CB0; // D_04029CB0 extern UNK_TYPE D_04029CF0; // D_04029CF0 +extern UNK_TYPE D_0E000048; +extern UNK_TYPE D_0E000088; +extern UNK_TYPE D_0E000140; +extern UNK_TYPE D_0E0001C8; +extern UNK_TYPE D_0E0002C8; + extern Gfx object_ikana_obj_001100[]; extern AnimatedTexture object_ikana_obj_001228[]; diff --git a/include/structs.h b/include/structs.h index e59d187ef7..9d40432a85 100644 --- a/include/structs.h +++ b/include/structs.h @@ -489,7 +489,8 @@ typedef struct { /* 0x1B8 */ DispBuf unk1B8; /* 0x1C8 */ UNK_TYPE1 pad1C8[0xAC]; /* 0x274 */ OSViMode* unk274; -/* 0x278 */ UNK_TYPE1 pad278[0x20]; +/* 0x278 */ void* zbuffer; +/* 0x27C */ UNK_TYPE1 pad27C[0x1C]; /* 0x298 */ DispBuf overlay; /* 0x2A8 */ DispBuf polyOpa; /* 0x2B8 */ DispBuf polyXlu; diff --git a/include/variables.h b/include/variables.h index 85aa09b026..4f0d4fa207 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1389,57 +1389,9 @@ extern UNK_TYPE1 D_801C0EC8; // D_801C0EC8 extern UNK_TYPE2 D_801C0EE4; // D_801C0EE4 extern UNK_TYPE2 D_801C0EE8; // D_801C0EE8 extern UNK_TYPE2 D_801C0EEC; // D_801C0EEC -extern Gfx D_801C0EF0[6]; // D_801C0EF0 -extern Gfx D_801C0F50[6]; // D_801C0F50 -extern Gfx D_801C0FB0[6]; // D_801C0FB0 -extern Gfx D_801C12B0[6]; // D_801C12B0 -extern Gfx D_801C1340[6]; // D_801C1340 -extern Gfx D_801C13A0[6]; // D_801C13A0 -extern Gfx D_801C13D0[6]; // D_801C13D0 -extern Gfx D_801C1400[6]; // D_801C1400 -extern Gfx D_801C1430[6]; // D_801C1430 -extern Gfx D_801C14C0[6]; // D_801C14C0 -extern Gfx D_801C14F0[6]; // D_801C14F0 -extern Gfx D_801C1520[6]; // D_801C1520 -extern Gfx D_801C1550[6]; // D_801C1550 -extern Gfx D_801C1580[6]; // D_801C1580 -extern Gfx D_801C15B0[6]; // D_801C15B0 -extern Gfx D_801C15E0[6]; // D_801C15E0 -extern Gfx D_801C1610[6]; // D_801C1610 -extern Gfx D_801C1640[6]; // D_801C1640 -extern Gfx D_801C1670[6]; // D_801C1670 -extern Gfx D_801C16A0[6]; // D_801C16A0 -extern Gfx D_801C16D0[6]; // D_801C16D0 -extern Gfx D_801C1700[6]; // D_801C1700 -extern Gfx D_801C1730[6]; // D_801C1730 -extern Gfx D_801C1760[6]; // D_801C1760 -extern Gfx D_801C1790[6]; // D_801C1790 -extern Gfx D_801C17C0[6]; // D_801C17C0 -extern Gfx D_801C17F0[6]; // D_801C17F0 -extern Gfx D_801C1820[6]; // D_801C1820 -extern Gfx D_801C1850[6]; // D_801C1850 -extern Gfx D_801C1880[6]; // D_801C1880 -extern Gfx D_801C18B0[6]; // D_801C18B0 -extern Gfx D_801C18E0[6]; // D_801C18E0 -extern Gfx D_801C1910[6]; // D_801C1910 -extern Gfx D_801C1940[6]; // D_801C1940 -extern Gfx D_801C1970[6]; // D_801C1970 -extern Gfx D_801C19A0[6]; // D_801C19A0 -extern Gfx D_801C19D0[6]; // D_801C19D0 -extern Gfx D_801C1A00[6]; // D_801C1A00 -extern Gfx D_801C1A30[6]; // D_801C1A30 -extern Gfx D_801C1A60[6]; // D_801C1A60 -extern Gfx D_801C1AF0[6]; // D_801C1AF0 -extern Gfx D_801C1B20[6]; // D_801C1B20 -extern Gfx D_801C1B50[6]; // D_801C1B50 -extern Gfx D_801C1B80[6]; // D_801C1B80 -extern Gfx D_801C1BB0[6]; // D_801C1BB0 -extern Gfx D_801C1BE0[6]; // D_801C1BE0 -extern Gfx D_801C1C10[6]; // D_801C1C10 -extern Gfx D_801C1C40[6]; // D_801C1C40 -extern Gfx D_801C1C70[6]; // D_801C1C70 -extern Gfx D_801C1CA0[12]; // D_801C1CA0 -extern Gfx D_801C1D00[1]; // D_801C1D00 +extern Gfx sSetupDL[438]; // D_801C0EF0 +extern Gfx sFillSetupDL[12]; // D_801C1CA0 +extern Gfx gEmptyDL[1]; // D_801C1D00 extern Vec3f D_801C1D10; // D_801C1D10 extern room_draw_func roomDrawFuncs[4]; // D_801C1D1C extern u32 gBitFlags[32]; // D_801C1D30 @@ -2373,8 +2325,8 @@ 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 screenWidth; // D_801D1520 -extern u32 screenHeight; // D_801D1524 +extern s32 gScreenWidth; // D_801D1520 +extern s32 gScreenHeight; // D_801D1524 extern UNK_TYPE4 startHeapSize; // D_801D1528 extern PadmgrThreadStruct* padmgrContext; // D_801D1530 extern UNK_TYPE4 controllerInputsCaptured; // D_801D1534 @@ -4206,7 +4158,7 @@ extern UNK_TYPE1 D_801FBB28; // D_801FBB28 extern OSViMode D_801FBB30; // D_801FBB30 extern u32* gFramebuffers[2]; // D_801FBB80 extern OSViMode* D_801FBB88; // D_801FBB88 -extern UNK_TYPE1 D_801FBB8C; // D_801FBB8C +extern u16* gZBufferPtr; // D_801FBB8C extern UNK_TYPE4 D_801FBB90; // D_801FBB90 extern UNK_TYPE1 D_801FBB94; // D_801FBB94 extern UNK_TYPE1 D_801FBB98; // D_801FBB98 diff --git a/linker_scripts/code_script.txt b/linker_scripts/code_script.txt index 93a41c87dc..c8c9c540ec 100644 --- a/linker_scripts/code_script.txt +++ b/linker_scripts/code_script.txt @@ -335,7 +335,7 @@ SECTIONS build/asm/code_0x800CB000.o(.text) build/asm/z_camera.o(.text) build/src/code/code_0x800E03A0.o(.text) - . += 0x10; /* XXX pad with NOPs*/ + . += 0x10; build/asm/z_collision_check.o(.text) build/src/code/code_0x800E8EA0.o(.text) build/asm/code_0x800E9360.o(.text) @@ -373,7 +373,8 @@ SECTIONS build/asm/z_player_lib.o(.text) build/asm/z_prenmi.o(.text) build/asm/code_0x8012A080.o(.text) - build/asm/z_rcp.o(.text) + build/src/code/z_rcp.o(.text) + . += 0x10; build/src/code/z_room.o(.text) build/asm/code_0x8012EC80.o(.text) build/src/code/z_scene.o(.text) @@ -490,7 +491,7 @@ SECTIONS build/asm/code_data_z_parameter.o(.text) build/asm/code_data_z_player_lib.o(.text) build/asm/code_data_0x8012A080.o(.text) - build/asm/code_data_z_rcp.o(.text) + build/src/code/z_rcp.o(.data) build/asm/code_data_z_room.o(.text) build/asm/code_data_0x801C1D30.o(.text) build/asm/code_data_z_scene.o(.text) diff --git a/linker_scripts/object_script.txt b/linker_scripts/object_script.txt index 33ea86d500..a2e546ceae 100644 --- a/linker_scripts/object_script.txt +++ b/linker_scripts/object_script.txt @@ -5,4 +5,10 @@ object_ikana_obj_001100 = 0x06001100; object_ikana_obj_001228 = 0x06001228; object_fu_kaiten_0005D0 = 0x060005D0; -object_fu_kaiten_002D30 = 0x06002D30; \ No newline at end of file +object_fu_kaiten_002D30 = 0x06002D30; + +D_0E000048 = 0x0E000048; +D_0E000088 = 0x0E000088; +D_0E000140 = 0x0E000140; +D_0E0001C8 = 0x0E0001C8; +D_0E0002C8 = 0x0E0002C8; \ No newline at end of file diff --git a/src/code/z_rcp.c b/src/code/z_rcp.c new file mode 100644 index 0000000000..f56a26eeac --- /dev/null +++ b/src/code/z_rcp.c @@ -0,0 +1,1329 @@ +#include +#include + +Gfx sSetupDL[438] = { + /* 0x00 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, PRIMITIVE, 0, TEXEL0, 0, 0, 0, 0, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetOtherMode(G_AD_NOISE | G_CD_NOISE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_ZB_CLD_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x01 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_OPA_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x02 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_OPA_SURF | G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x03 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x04 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineLERP(PRIMITIVE, 0, SHADE, 0, 0, 0, 0, PRIMITIVE, PRIMITIVE, 0, SHADE, 0, 0, 0, 0, PRIMITIVE), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_XLU_SURF | G_RM_AA_ZB_XLU_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x05 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_XLU_SURF | G_RM_AA_ZB_XLU_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x06 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_TEX_EDGE2), + gsSPLoadGeometryMode(G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x07 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x08 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_OPA_SURF | G_RM_AA_OPA_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x09 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_XLU_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x0A */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_OPA_SURF | G_RM_AA_OPA_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x0B */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_OPA_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x0C */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_OPA_SURF | G_RM_AA_OPA_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x0D */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_XLU_SURF | G_RM_XLU_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x0E */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_TEX_EDGE | G_RM_AA_ZB_TEX_EDGE2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x0F */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_ZB_TEX_EDGE2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x10 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x11 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_TEX_EDGE | G_RM_AA_ZB_TEX_EDGE2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x12 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_ZB_TEX_EDGE2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x13 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | AA_EN | Z_CMP | IM_RD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | + FORCE_BL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x14 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_ZB_CLD_SURF | G_RM_ZB_CLD_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x15 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_XLU_SURF | G_RM_AA_ZB_XLU_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x16 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x17 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_OPA_SURF | G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x18 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x19 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x1A */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_PASS | G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x1B */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_XLU_SURF | G_RM_AA_ZB_XLU_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x1C */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA_PRIM, G_CC_MODULATEIDECALA_PRIM), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_RGBA16 | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_AA_TEX_EDGE | G_RM_AA_TEX_EDGE2), + gsSPLoadGeometryMode(G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x1D */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0, NOISE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_PASS | G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x1E */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_XLU_LINE | G_RM_AA_ZB_XLU_LINE2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x1F */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_HILITERGBA, G_CC_HILITERGBA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_OPA_SURF | G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x20 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_HILITERGBA, G_CC_HILITERGBA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_OPA_SURF | G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | + G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x21 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, PRIMITIVE, SHADE, 1, 0, TEXEL0, SHADE, ENVIRONMENT, COMBINED, TEXEL0, COMBINED, + ENVIRONMENT, COMBINED, TEXEL0, COMBINED), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_PASS | G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | + G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x22 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_OPA_SURF | G_RM_OPA_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x23 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_XLU_DECAL | G_RM_AA_ZB_XLU_DECAL2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x24 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_FILL | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_NOOP | G_RM_NOOP2), + gsSPLoadGeometryMode(G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x25 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineLERP(PRIMITIVE, 0, SHADE, 0, 0, 0, 0, PRIMITIVE, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x26 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_XLU_SURF | G_RM_AA_ZB_XLU_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x27 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_XLU_SURF | G_RM_XLU_SURF2), + gsSPLoadGeometryMode(G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x28 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIMITIVE_ALPHA, TEXEL0, TEXEL1, TEXEL0, PRIMITIVE, TEXEL0, 0, 0, 0, COMBINED, 0, + 0, 0, COMBINED), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_OPA_SURF | G_RM_OPA_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_CULL_FRONT | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x29 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_ZB_XLU_SURF | G_RM_ZB_XLU_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x2A */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_XLU_SURF | G_RM_XLU_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x2B */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA_PRIM, G_CC_MODULATEIDECALA_PRIM), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_RGBA16 | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_XLU_SURF | G_RM_XLU_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x2C */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_PASS2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_ZB_OVL_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x2D */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0, 0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_XLU_SURF | G_RM_XLU_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x2E */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0, 0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_XLU_SURF | G_RM_XLU_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x2F */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_ZB_XLU_SURF | G_RM_ZB_XLU_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x30 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x31 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineLERP(PRIMITIVE, 0, SHADE, 0, 0, 0, 0, PRIMITIVE, PRIMITIVE, 0, SHADE, 0, 0, 0, 0, PRIMITIVE), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_AA_XLU_SURF | G_RM_AA_XLU_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x32 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_OPA_SURF | G_RM_OPA_SURF2), + gsSPLoadGeometryMode(G_CULL_BACK), + gsSPEndDisplayList(), + + /* 0x33 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_XLU_SURF | G_RM_XLU_SURF2), + gsSPLoadGeometryMode(G_CULL_BACK), + gsSPEndDisplayList(), + + /* 0x34 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_XLU_SURF | G_RM_XLU_SURF2), + gsSPLoadGeometryMode(G_CULL_BACK), + gsSPEndDisplayList(), + + /* 0x35 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineLERP(TEXEL1, TEXEL0, ENV_ALPHA, TEXEL0, TEXEL1, TEXEL0, ENVIRONMENT, TEXEL0, PRIMITIVE, ENVIRONMENT, + COMBINED, ENVIRONMENT, COMBINED, 0, PRIMITIVE, 0), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_OPA_SURF | G_RM_OPA_SURF2), + gsSPLoadGeometryMode(G_CULL_BACK), + gsSPEndDisplayList(), + + /* 0x36 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineLERP(TEXEL1, TEXEL0, ENV_ALPHA, TEXEL0, TEXEL1, TEXEL0, ENVIRONMENT, TEXEL0, PRIMITIVE, ENVIRONMENT, + COMBINED, ENVIRONMENT, COMBINED, 0, PRIMITIVE, 0), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_PASS | G_RM_XLU_SURF2), + gsSPLoadGeometryMode(G_CULL_BACK), + gsSPEndDisplayList(), + + /* 0x37 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineLERP(TEXEL1, TEXEL0, ENV_ALPHA, TEXEL0, TEXEL1, TEXEL0, ENVIRONMENT, TEXEL0, PRIMITIVE, ENVIRONMENT, + COMBINED, ENVIRONMENT, COMBINED, 0, PRIMITIVE, 0), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_PASS | G_RM_XLU_SURF2), + gsSPLoadGeometryMode(G_CULL_BACK), + gsSPEndDisplayList(), + + /* 0x38 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_POINT | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_XLU_SURF | G_RM_XLU_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x39 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_CLD_SURF | G_RM_CLD_SURF2), + gsSPLoadGeometryMode(G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x3A */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineLERP(PRIMITIVE, 0, SHADE, 0, PRIMITIVE, 0, SHADE, 0, PRIMITIVE, 0, SHADE, 0, PRIMITIVE, 0, SHADE, 0), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_CLD_SURF | G_RM_CLD_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x3B */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, PRIMITIVE, SHADE, 1, 0, TEXEL0, SHADE, ENVIRONMENT, COMBINED, TEXEL0, COMBINED, + ENVIRONMENT, COMBINED, TEXEL0, COMBINED), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_PASS | G_RM_AA_OPA_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x3C */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, ENVIRONMENT, + TEXEL0, ENVIRONMENT, PRIMITIVE, 0, TEXEL0, 0), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_ZB_CLD_SURF | G_RM_ZB_CLD_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x3D */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, ENVIRONMENT, + TEXEL0, ENVIRONMENT, PRIMITIVE, 0, TEXEL0, 0), + gsDPSetOtherMode(G_AD_NOISE | G_CD_NOISE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_ZB_CLD_SURF | G_RM_ZB_CLD_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x3E */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x3F */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | Z_UPD | IM_RD | CVG_DST_SAVE | ZMODE_OPA | FORCE_BL | + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x40 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_PASS | G_RM_XLU_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x41 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_CLD_SURF | G_RM_CLD_SURF2), + gsSPLoadGeometryMode(G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x42 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | + ALPHA_CVG_SEL | G_RM_PASS | GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x43 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | + ALPHA_CVG_SEL | G_RM_PASS | GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x44 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | + ALPHA_CVG_SEL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x45 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | + ALPHA_CVG_SEL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x46 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, + G_AC_THRESHOLD | G_ZS_PIXEL | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | + ALPHA_CVG_SEL | G_RM_PASS | GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x47 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_BAYER | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_ZB_XLU_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), + + /* 0x48 */ + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM2), + gsDPSetOtherMode(G_AD_PATTERN | G_CD_BAYER | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_ZB_CLD_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPEndDisplayList(), +}; + +Gfx sFillSetupDL[] = { + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_FILL | G_PM_NPRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_NOOP | G_RM_NOOP2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPDisplayList(&D_0E0001C8), + gsDPSetBlendColor(0x00, 0x00, 0x00, 0x08), + gsSPClipRatio(FRUSTRATIO_2), + gsSPEndDisplayList(), +}; + +Gfx gEmptyDL[] = { + gsSPEndDisplayList(), +}; + +Gfx* Gfx_SetFog(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f) { + gDPSetFogColor(gfx, r, g, b, a); + + if (n >= 997) { + if (n >= 1000) { + gSPFogFactor(gfx + 1, 0, 0); // gSPFogPosition(gfx++, ?, ?) + } else { + gSPFogFactor(gfx + 1, 0x7FFF, 0x8100); // gSPFogPosition(gfx++, ?, ?) + } + } else { + if (n < 0) { + gSPFogFactor(gfx + 1, 0, 255); // gSPFogPosition(gfx++, ?, ?) + } else { + gSPFogPosition(gfx + 1, n, f); + } + } + + return gfx + 2; +} + +Gfx* Gfx_SetFogWithSync(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f) { + gDPPipeSync(gfx++); + gDPSetFogColor(gfx++, r, g, b, a); + + if (n >= 1000) { + gSPFogFactor(gfx++, 0, 0); // gSPFogPosition(gfx++, ?, ?) + } else if (n >= 997) { + gSPFogFactor(gfx++, 0x7FFF, 0x8100); // gSPFogPosition(gfx++, ?, ?) + } else if (n < 0) { + gSPFogFactor(gfx++, 0, 255); // gSPFogPosition(gfx++, ?, ?) + } else { + gSPFogPosition(gfx++, n, f); + } + + return gfx; +} + +Gfx* Gfx_SetFog2(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f) { + return Gfx_SetFog(gfx, r, g, b, a, n, f); +} + +Gfx* Gfx_CallSetupDLImpl(Gfx* gfx, u32 i) { + gSPDisplayList(gfx++, &sSetupDL[6 * i]); + return gfx; +} + +Gfx* Gfx_CallSetupDL(Gfx* gfx, u32 i) { + return Gfx_CallSetupDLImpl(gfx, i); +} + +void Gfx_CallSetupDLAtPtr(Gfx** gfxp, u32 i) { + *gfxp = Gfx_CallSetupDL(*gfxp, i); +} + +Gfx* func_8012BFC4(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x39]); + return gfx; +} + +Gfx* func_8012BFEC(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x39]); + return gfx; +} + +Gfx* func_8012C014(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x34]); + gDPSetColorDither(gfx++, G_CD_DISABLE); + return gfx; +} + +void func_8012C058(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x3A]); +} + +void func_8012C080(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x39]); +} + +void func_8012C0A8(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x32]); +} + +void func_8012C0D0(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x33]); +} + +void func_8012C0F8(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyXlu.p++, &sSetupDL[6 * 0x34]); +} + +void func_8012C120(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x35]); +} + +void func_8012C148(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x36]); +} + +void func_8012C170(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyXlu.p++, &sSetupDL[6 * 0x37]); +} + +Gfx* func_8012C198(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x1A]); + return gfx; +} + +void func_8012C1C0(GraphicsContext* gCtxt) { + gCtxt->polyOpa.p = func_8012C198(gCtxt->polyOpa.p); +} + +Gfx* func_8012C1EC(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x17]); + return gfx; +} + +void func_8012C214(GraphicsContext* gCtxt) { + gCtxt->polyOpa.p = func_8012C1EC(gCtxt->polyOpa.p); +} + +void func_8012C240(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyXlu.p++, &sSetupDL[6 * 0x19]); +} + +void func_8012C268(GlobalContext* ctxt) { + func_8012C28C(ctxt->state.gfxCtx); +} + +void func_8012C28C(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x19]); +} + +Gfx* func_8012C2B4(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x47]); + return gfx; +} + +void func_8012C2DC(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyXlu.p++, &sSetupDL[6 * 0x19]); +} + +Gfx* func_8012C304(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x48]); + return gfx; +} + +void func_8012C32C(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x1F]); +} + +void func_8012C354(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x20]); +} + +void func_8012C37C(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x21]); +} + +Gfx* func_8012C3A4(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x40]); + return gfx; +} + +Gfx* func_8012C3CC(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x22]); + return gfx; +} + +void func_8012C3F4(GraphicsContext* gCtxt) { + gCtxt->polyOpa.p = func_8012C3CC(gCtxt->polyOpa.p); +} + +void func_8012C420(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x23]); +} + +void func_8012C448(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyXlu.p++, &sSetupDL[6 * 0x2C]); +} + +void func_8012C470(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x24]); +} + +Gfx* func_8012C498(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x1C]); + return gfx; +} + +void func_8012C4C0(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x1C]); +} + +void func_8012C4E8(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x2B]); +} + +void func_8012C510(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x2D]); +} + +void func_8012C538(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->overlay.p++, &sSetupDL[6 * 0x2E]); +} + +void func_8012C560(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyXlu.p++, &sSetupDL[6 * 0x26]); +} + +void func_8012C588(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyXlu.p++, &sSetupDL[6 * 0x4]); +} + +void func_8012C5B0(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x25]); +} + +void func_8012C5D8(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x2]); +} + +Gfx* func_8012C600(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x27]); + return gfx; +} + +void func_8012C628(GraphicsContext* gCtxt) { + gCtxt->polyOpa.p = func_8012C600(gCtxt->polyOpa.p); +} + +void func_8012C654(GraphicsContext* gCtxt) { + gCtxt->overlay.p = func_8012C600(gCtxt->overlay.p); +} + +void func_8012C680(Gfx** gfxp) { + Gfx* gfx = *gfxp; + gSPDisplayList(gfx++, &sSetupDL[6 * 0x27]); + *gfxp = gfx; +} + +void func_8012C6AC(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x28]); +} + +void func_8012C6D4(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyOpa.p++, &sSetupDL[6 * 0x29]); +} + +void func_8012C6FC(GraphicsContext* gCtxt) { + gSPDisplayList(gCtxt->polyXlu.p++, &sSetupDL[6 * 0x2F]); +} + +Gfx* func_8012C724(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x42]); + return gfx; +} + +Gfx* func_8012C74C(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x43]); + return gfx; +} + +Gfx* func_8012C774(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x44]); + gDPSetColorDither(gfx++, G_CD_DISABLE); + return gfx; +} + +Gfx* func_8012C7B8(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x45]); + gDPSetColorDither(gfx++, G_CD_DISABLE); + return gfx; +} + +Gfx* func_8012C7FC(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x41]); + gDPSetColorDither(gfx++, G_CD_DISABLE); + return gfx; +} + +Gfx* func_8012C840(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x46]); + return gfx; +} + +Gfx* func_8012C868(Gfx* gfx) { + gSPDisplayList(gfx++, &sSetupDL[6 * 0x14]); + gDPSetColorDither(gfx++, G_CD_DISABLE); + return gfx; +} + +void func_8012C8AC(GraphicsContext* gfxCtx) { + gSPDisplayList(gfxCtx->polyOpa.p++, &sSetupDL[6 * 0x2A]); +} + +void func_8012C8D4(GraphicsContext* gfxCtx) { + gSPDisplayList(gfxCtx->overlay.p++, &sSetupDL[6 * 0x2A]); +} + +void func_8012C8FC(GraphicsContext* gfxCtx) { + gSPDisplayList(gfxCtx->polyOpa.p++, &sSetupDL[6 * 0x30]); +} + +void func_8012C924(GraphicsContext* gfxCtx) { + gSPDisplayList(gfxCtx->polyXlu.p++, &sSetupDL[6 * 0x31]); +} + +void func_8012C94C(GraphicsContext* gfxCtx) { + gSPDisplayList(gfxCtx->polyXlu.p++, &sSetupDL[6 * 0x1B]); +} + +void func_8012C974(GraphicsContext* gfxCtx) { + gSPDisplayList(gfxCtx->polyXlu.p++, &sSetupDL[6 * 0x3C]); + gDPSetColorDither(gfxCtx->polyXlu.p++, G_CD_DISABLE); +} + +void func_8012C9BC(GraphicsContext* gfxCtx) { + gSPDisplayList(gfxCtx->polyXlu.p++, &sSetupDL[6 * 0x3D]); +} + +void func_8012C9E4(GraphicsContext* gfxCtx) { + gSPDisplayList(gfxCtx->polyOpa.p++, &sSetupDL[6 * 0x38]); +} + +void func_8012CA0C(Gfx** gfxp) { + Gfx* gfx = *gfxp; + gSPDisplayList(gfx++, &sSetupDL[6 * 0x38]); + *gfxp = gfx; +} + +void func_8012CA38(GraphicsContext* gfxCtx) { + gSPDisplayList(gfxCtx->polyOpa.p++, &sSetupDL[6 * 0x3B]); +} + +Gfx* Gfx_BranchTexScroll(Gfx** gfxp, u32 x, u32 y, s32 width, s32 height) { + Gfx* displayList = Graph_DlistAlloc(gfxp, 3 * sizeof(Gfx)); + + gDPTileSync(displayList); + gDPSetTileSize(displayList + 1, 0, x, y, (x + ((width - 1) << 2)), (y + ((height - 1) << 2))); + gSPEndDisplayList(displayList + 2); + + return displayList; +} + +void func_8012CB04(Gfx** gfxp, u32 x, u32 y) { + Gfx_BranchTexScroll(gfxp, x, y, 0, 0); +} + +Gfx* func_8012CB28(GraphicsContext* gfxCtx, u32 x, u32 y) { + return Gfx_TexScroll(gfxCtx, x, y, 0, 0); +} + +Gfx* Gfx_TexScroll(GraphicsContext* gfxCtx, u32 x, u32 y, s32 width, s32 height) { + Gfx* displayList; + + { + Gfx* _g = (Gfx*)gfxCtx->polyOpa.d - 4; + displayList = _g; + gfxCtx->polyOpa.d = _g; + } + + x %= 2048; + y %= 2048; + + gDPTileSync(displayList); + gDPSetTileSize(displayList + 1, 0, x, y, (x + ((width - 1) << 2)), (y + ((height - 1) << 2))); + gSPEndDisplayList(displayList + 2); + + return displayList; +} + +Gfx* Gfx_TwoTexScroll(GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 width1, s32 height1, s32 tile2, u32 x2, + u32 y2, s32 width2, s32 height2) { + Gfx* displayList; + + { + Gfx* _g = (Gfx*)gfxCtx->polyOpa.d - 6; + displayList = _g; + gfxCtx->polyOpa.d = _g; + } + + x1 %= 2048; + y1 %= 2048; + x2 %= 2048; + y2 %= 2048; + + gDPTileSync(displayList); + gDPSetTileSize(displayList + 1, tile1, x1, y1, (x1 + ((width1 - 1) << 2)), (y1 + ((height1 - 1) << 2))); + gDPTileSync(displayList + 2); + gDPSetTileSize(displayList + 3, tile2, x2, y2, (x2 + ((width2 - 1) << 2)), (y2 + ((height2 - 1) << 2))); + gSPEndDisplayList(displayList + 4); + + return displayList; +} + +Gfx* Gfx_TwoTexScrollEnvColor(GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 width1, s32 height1, s32 tile2, + u32 x2, u32 y2, s32 width2, s32 height2, s32 r, s32 g, s32 b, s32 a) { + Gfx* displayList; + + { + Gfx* _g = (Gfx*)gfxCtx->polyOpa.d - 6; + displayList = _g; + gfxCtx->polyOpa.d = _g; + } + + x1 %= 2048; + y1 %= 2048; + x2 %= 2048; + y2 %= 2048; + + gDPTileSync(displayList); + gDPSetTileSize(displayList + 1, tile1, x1, y1, (x1 + ((width1 - 1) << 2)), (y1 + ((height1 - 1) << 2))); + gDPTileSync(displayList + 2); + gDPSetTileSize(displayList + 3, tile2, x2, y2, (x2 + ((width2 - 1) << 2)), (y2 + ((height2 - 1) << 2))); + gDPSetEnvColor(displayList + 4, r, g, b, a); + gSPEndDisplayList(displayList + 5); + + return displayList; +} + +Gfx* Gfx_EnvColor(GraphicsContext* gfxCtx, s32 r, s32 g, s32 b, s32 a) { + Gfx* displayList; + + { + Gfx* _g = (Gfx*)gfxCtx->polyOpa.d - 2; + displayList = _g; + gfxCtx->polyOpa.d = _g; + } + + gDPSetEnvColor(displayList, r, g, b, a); + gSPEndDisplayList(displayList + 1); + + return displayList; +} + +Gfx* Gfx_PrimColor(GraphicsContext* gfxCtx, s32 lodfrac, s32 r, s32 g, s32 b, s32 a) { + Gfx* displayList; + + { + Gfx* _g = (Gfx*)gfxCtx->polyOpa.d - 2; + displayList = _g; + gfxCtx->polyOpa.d = _g; + } + + gDPSetPrimColor(displayList, 0, lodfrac, r, g, b, a); + gSPEndDisplayList(displayList + 1); + + return displayList; +} + +#ifdef NON_MATCHING +// regalloc, some reorderings +void func_8012CF0C(GraphicsContext* gCtxt, s32 iParm2, s32 iParm3, u8 r, u8 g, u8 b) { + s32 i; + Gfx* gfx; + + gRspSegmentPhysAddrs[0] = 0; + gRspSegmentPhysAddrs[14] = (u32)graphDlEntry; + gRspSegmentPhysAddrs[15] = (u32)gCtxt->framebuffer; + + gfx = graphDlEntry + 0x16; + gSPDisplayList(gfx + 0, &D_0E000140); + gSPDisplayList(gfx + 1, D_801C1CA0); + gDPSetColorImage(gfx + 2, G_IM_FMT_RGBA, G_IM_SIZ_16b, D_801FBBCC, 0x0F000000); + if (gCtxt->zbuffer != NULL) { + gDPSetDepthImage(gfx + 3, gCtxt->zbuffer); + } else { + gDPSetDepthImage(gfx + 3, 0x0F000000); + } + gSPEndDisplayList(gfx + 4); + + gfx = graphDlEntry + 0x39; + gDPSetScissor(gfx + 0, G_SC_NON_INTERLACE, 0, 0, D_801FBBCC, D_801FBBCE); + gSPEndDisplayList(gfx + 1); + + gfx = graphDlEntry + 0x9; + if (gCtxt->zbuffer == NULL) { + gSPEndDisplayList(gfx + 0); + } else { + gDPSetColorImage(gfx + 0, G_IM_FMT_RGBA, G_IM_SIZ_16b, D_801FBBCC, gCtxt->zbuffer); + gDPPipeSync(gfx + 1); + gDPSetCycleType(gfx + 2, G_CYC_FILL); + gDPSetRenderMode(gfx + 3, G_RM_NOOP, G_RM_NOOP2); + gDPSetFillColor(gfx + 4, + (GPACK_RGBA5551(0xFF, 0xFF, 0xF0, 0) << 16) | GPACK_RGBA5551(0xFF, 0xFF, 0xF0, 0)); + gSPDisplayList(gfx + 5, &D_0E0002C8); + gDPSetColorImage(gfx + 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, D_801FBBCC, gCtxt->zbuffer); + gSPEndDisplayList(gfx + 7); + } + + gfx = graphDlEntry + 0x11; + gDPSetColorImage(gfx + 0, G_IM_FMT_RGBA, G_IM_SIZ_16b, D_801FBBCC, 0x0F000000); + gDPSetCycleType(gfx + 1, G_CYC_FILL); + gDPSetRenderMode(gfx + 2, G_RM_NOOP, G_RM_NOOP2); + gDPSetFillColor(gfx + 3, GPACK_RGBA5551(r, g, b, 0)); + gSPBranchList(gfx + 4, &D_0E0002C8); + + gfx = graphDlEntry + 0x59; + gDPFillRectangle(gfx + 0, 0, 0, D_801FBBCC - 1, D_801FBBCE - 1); + gDPPipeSync(gfx + 1); + gSPEndDisplayList(gfx + 2); + + gfx = graphDlEntry + 0x5C; + gDPFillRectangle(gfx + 0, 0, 0, D_801FBBCC, D_801FBBCE); + gDPPipeSync(gfx + 1); + gSPEndDisplayList(gfx + 2); + + gfx = graphDlEntry + 0x28; + for (i = 0; i < 0x10; i++) { + if (i == 0xE) { + gSPNoOp(gfx + i); + } else { + gSPSegment(gfx + i, i, gRspSegmentPhysAddrs[i]); + } + } + gSPEndDisplayList(gfx + i); + + gSPDisplayList(gCtxt->polyOpa.p++, graphDlEntry + 0x16); + gSPDisplayList(gCtxt->polyXlu.p++, graphDlEntry + 0x16); + gSPDisplayList(gCtxt->overlay.p++, graphDlEntry + 0x16); + gSPDisplayList(gCtxt->unk1B8.p++, graphDlEntry + 0x16); + + if (iParm3) { + gSPDisplayList(gCtxt->polyOpa.p++, &D_0E000048); + } + if (iParm2) { + gSPDisplayList(gCtxt->polyOpa.p++, &D_0E000088); + } +} +#else +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)) { + func_8012CF0C(gCtxt, 1, 1, r, g, b); + } + else { + func_8012CF0C(gCtxt, 0, 0, r, g, b); + } +} + +void func_8012D40C(f32* param_1, f32* param_2, s16* param_3) { + param_1[0] = param_3[0] * 0.25f; + param_1[1] = param_3[1] * 0.25f; + param_1[2] = param_3[4] * 0.25f; + param_1[3] = param_3[5] * 0.25f; + + param_2[0] = param_1[0] / (gScreenWidth / 2); + param_2[2] = param_1[2] - param_1[0]; + param_2[1] = param_1[1] / (gScreenHeight / 2); + param_2[3] = param_1[3] - param_1[1]; +} + diff --git a/src/code/z_scene_proc.c b/src/code/z_scene_proc.c index bfe3f38601..7d054ff4b6 100644 --- a/src/code/z_scene_proc.c +++ b/src/code/z_scene_proc.c @@ -13,11 +13,11 @@ void SceneProc_DrawSceneConfig0(GlobalContext* ctxt) { } Gfx* SceneProc_SetTile1Layer(GlobalContext* ctxt, ScrollingTextureParams* params) { - return Rcp_GenerateSetTileSizeDl((ctxt->state).gfxCtx, - params->xStep * gSceneProcStep, - -(params->yStep * gSceneProcStep), - params->width, - params->height); + return Gfx_TexScroll((ctxt->state).gfxCtx, + params->xStep * gSceneProcStep, + -(params->yStep * gSceneProcStep), + params->width, + params->height); } void SceneProc_DrawType0Texture(GlobalContext* ctxt, u32 segment, ScrollingTextureParams* params) { @@ -36,17 +36,17 @@ void SceneProc_DrawType0Texture(GlobalContext* ctxt, u32 segment, ScrollingTextu } Gfx* SceneProc_SetTile2Layers(GlobalContext* ctxt, ScrollingTextureParams* params) { - return Rcp_GenerateSetTileSize2Dl((ctxt->state).gfxCtx, - 0, - params[0].xStep * gSceneProcStep, - -(params[0].yStep * gSceneProcStep), - params[0].width, - params[0].height, - 1, - params[1].xStep * gSceneProcStep, - -(params[1].yStep * gSceneProcStep), - params[1].width, - params[1].height); + return Gfx_TwoTexScroll((ctxt->state).gfxCtx, + 0, + params[0].xStep * gSceneProcStep, + -(params[0].yStep * gSceneProcStep), + params[0].width, + params[0].height, + 1, + params[1].xStep * gSceneProcStep, + -(params[1].yStep * gSceneProcStep), + params[1].width, + params[1].height); } void SceneProc_DrawType1Texture(GlobalContext* ctxt, u32 segment, ScrollingTextureParams* params) { @@ -307,23 +307,23 @@ void SceneProc_DrawSceneConfig3(GlobalContext* ctxt) { gSPSegment(gfxCtx->polyXlu.p++, 8, Rcp_GenerateSetTileSizeDl(ctxt->state.gfxCtx, 0, frames & 0x3f, 0x100, 0x10)); gSPSegment(gfxCtx->polyXlu.p++, 9, - Rcp_GenerateSetTileSize2Dl(ctxt->state.gfxCtx, - 0, 0x7F - (frames & 0x7F), frames & 0x7F, 0x20, 0x20, - 1, frames & 0x7F, frames & 0x7F, 0x20, 0x20)); + Gfx_TwoTexScroll(ctxt->state.gfxCtx, + 0, 0x7F - (frames & 0x7F), frames & 0x7F, 0x20, 0x20, + 1, frames & 0x7F, frames & 0x7F, 0x20, 0x20)); gSPSegment(gfxCtx->polyOpa.p++, 10, - Rcp_GenerateSetTileSize2Dl(ctxt->state.gfxCtx, - 0, 0, 0, 0x20, 0x20, - 1, 0, 0x7F - (frames & 0x7F), 0x20, 0x20)); + Gfx_TwoTexScroll(ctxt->state.gfxCtx, + 0, 0, 0, 0x20, 0x20, + 1, 0, 0x7F - (frames & 0x7F), 0x20, 0x20)); gSPSegment(gfxCtx->polyOpa.p++, 11, Rcp_GenerateSetTileSizeDl(ctxt->state.gfxCtx, 0, frames & 0x7F, 0x20, 0x20)); gSPSegment(gfxCtx->polyXlu.p++, 12, - Rcp_GenerateSetTileSize2Dl(ctxt->state.gfxCtx, - 0, 0, frames * 0x32 & 0x7Ff, 8, 0x200, - 1, 0, frames * 0x3c & 0x7Ff, 8, 0x200)); + Gfx_TwoTexScroll(ctxt->state.gfxCtx, + 0, 0, frames * 0x32 & 0x7Ff, 8, 0x200, + 1, 0, frames * 0x3c & 0x7Ff, 8, 0x200)); gSPSegment(gfxCtx->polyOpa.p++, 13, - Rcp_GenerateSetTileSize2Dl(ctxt->state.gfxCtx, - 0, 0, 0, 0x20, 0x40, - 1, 0, frames & 0x7F, 0x20, 0x20)); + Gfx_TwoTexScroll(ctxt->state.gfxCtx, + 0, 0, 0, 0x20, 0x40, + 1, 0, frames & 0x7F, 0x20, 0x20)); gDPPipeSync(gfxCtx->polyXlu.p++); gDPSetEnvColor(gfxCtx->polyXlu.p++, 0x80, 0x80, 0x80, 0x80); @@ -344,9 +344,9 @@ void SceneProc_DrawSceneConfig4(GlobalContext* ctxt) { frames2 = frames * 1; gSPSegment(gfxCtx->polyXlu.p++, 8, - Rcp_GenerateSetTileSize2Dl(ctxt->state.gfxCtx, - 0, 0x7F - (frames & 0x7F), frames2 & 0x7F, 0x20, 0x20, - 1, (frames & 0x7F), frames2 & 0x7F, 0x20, 0x20)); + Gfx_TwoTexScroll(ctxt->state.gfxCtx, + 0, 0x7F - (frames & 0x7F), frames2 & 0x7F, 0x20, 0x20, + 1, (frames & 0x7F), frames2 & 0x7F, 0x20, 0x20)); gDPPipeSync(gfxCtx->polyOpa.p++); gDPSetEnvColor(gfxCtx->polyOpa.p++, 0x80, 0x80, 0x80, 0x80); diff --git a/tables/files_with_nonmatching.txt b/tables/files_with_nonmatching.txt index 83f5c93c58..4d2c2b0b75 100644 --- a/tables/files_with_nonmatching.txt +++ b/tables/files_with_nonmatching.txt @@ -18,3 +18,4 @@ z_scene_proc z_std_dma z_scene z_view +z_rcp diff --git a/tables/functions.txt b/tables/functions.txt index a2f8889b1f..9ba37ab102 100644 --- a/tables/functions.txt +++ b/tables/functions.txt @@ -2318,85 +2318,85 @@ 0x8012AF38:("func_8012AF38","void","void"), 0x8012AF9C:("func_8012AF9C","void","void"), 0x8012BBE8:("func_8012BBE8","void","void"), - 0x8012BC50:("func_8012BC50","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"), - 0x8012BD8C:("func_8012BD8C","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"), - 0x8012BF08:("func_8012BF08","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"), - 0x8012BF3C:("func_8012BF3C","Gfx*","Gfx* param_1, s32 param_2"), - 0x8012BF78:("func_8012BF78","void","void"), - 0x8012BF98:("func_8012BF98","void","void"), - 0x8012BFC4:("func_8012BFC4","void","void"), - 0x8012BFEC:("func_8012BFEC","UNK_PTR","UNK_PTR param_1"), - 0x8012C014:("func_8012C014","void","void"), - 0x8012C058:("func_8012C058","void","int param_1"), - 0x8012C080:("func_8012C080","void","void"), - 0x8012C0A8:("func_8012C0A8","void","int param_1"), - 0x8012C0D0:("func_8012C0D0","void","int param_1"), - 0x8012C0F8:("func_8012C0F8","void","int param_1"), - 0x8012C120:("func_8012C120","void","int param_1"), - 0x8012C148:("func_8012C148","void","void"), - 0x8012C170:("func_8012C170","void","int param_1"), - 0x8012C198:("func_8012C198","void","void"), - 0x8012C1C0:("func_8012C1C0","void","void"), - 0x8012C1EC:("func_8012C1EC","void","void"), - 0x8012C214:("func_8012C214","void","void"), - 0x8012C240:("func_8012C240","void","void"), + 0x8012BC50:("Gfx_SetFog","Gfx*","Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f"), + 0x8012BD8C:("Gfx_SetFogWithSync","Gfx*","Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f"), + 0x8012BF08:("Gfx_SetFog2","Gfx*","Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f"), + 0x8012BF3C:("Gfx_CallSetupDLImpl","Gfx*","Gfx* gfx, u32 i"), + 0x8012BF78:("Gfx_CallSetupDL","Gfx*","Gfx* gfx, u32 i"), + 0x8012BF98:("Gfx_CallSetupDLAtPtr","void","Gfx** gfxp, u32 i"), + 0x8012BFC4:("func_8012BFC4","Gfx*","Gfx* gfx"), + 0x8012BFEC:("func_8012BFEC","Gfx*","Gfx* gfx"), + 0x8012C014:("func_8012C014","Gfx*","Gfx* gfx"), + 0x8012C058:("func_8012C058","void","GraphicsContext* gCtxt"), + 0x8012C080:("func_8012C080","void","GraphicsContext* gCtxt"), + 0x8012C0A8:("func_8012C0A8","void","GraphicsContext* gCtxt"), + 0x8012C0D0:("func_8012C0D0","void","GraphicsContext* gCtxt"), + 0x8012C0F8:("func_8012C0F8","void","GraphicsContext* gCtxt"), + 0x8012C120:("func_8012C120","void","GraphicsContext* gCtxt"), + 0x8012C148:("func_8012C148","void","GraphicsContext* gCtxt"), + 0x8012C170:("func_8012C170","void","GraphicsContext* gCtxt"), + 0x8012C198:("func_8012C198","Gfx*","Gfx* gfx"), + 0x8012C1C0:("func_8012C1C0","void","GraphicsContext* gCtxt"), + 0x8012C1EC:("func_8012C1EC","Gfx*","Gfx* gfx"), + 0x8012C214:("func_8012C214","void","GraphicsContext* gCtxt"), + 0x8012C240:("func_8012C240","void","GraphicsContext* gCtxt"), 0x8012C268:("func_8012C268","void","GlobalContext* ctxt"), 0x8012C28C:("func_8012C28C","void","GraphicsContext* gCtxt"), - 0x8012C2B4:("func_8012C2B4","void","void"), + 0x8012C2B4:("func_8012C2B4","Gfx*","Gfx* gfx"), 0x8012C2DC:("func_8012C2DC","void","GraphicsContext* gCtxt"), - 0x8012C304:("func_8012C304","void","void"), - 0x8012C32C:("func_8012C32C","void","int param_1"), - 0x8012C354:("func_8012C354","void","int param_1"), - 0x8012C37C:("func_8012C37C","void","int param_1"), - 0x8012C3A4:("func_8012C3A4","void","void"), - 0x8012C3CC:("func_8012C3CC","void","void"), - 0x8012C3F4:("func_8012C3F4","void","void"), - 0x8012C420:("func_8012C420","void","int param_1"), + 0x8012C304:("func_8012C304","Gfx*","Gfx* gfx"), + 0x8012C32C:("func_8012C32C","void","GraphicsContext* gCtxt"), + 0x8012C354:("func_8012C354","void","GraphicsContext* gCtxt"), + 0x8012C37C:("func_8012C37C","void","GraphicsContext* gCtxt"), + 0x8012C3A4:("func_8012C3A4","Gfx*","Gfx* gfx"), + 0x8012C3CC:("func_8012C3CC","Gfx*","Gfx* gfx"), + 0x8012C3F4:("func_8012C3F4","void","GraphicsContext* gCtxt"), + 0x8012C420:("func_8012C420","void","GraphicsContext* gCtxt"), 0x8012C448:("func_8012C448","void","GraphicsContext* gCtxt"), - 0x8012C470:("func_8012C470","void","void"), - 0x8012C498:("func_8012C498","UNK_PTR","UNK_PTR param_1"), - 0x8012C4C0:("func_8012C4C0","void","void"), - 0x8012C4E8:("func_8012C4E8","void","int param_1"), - 0x8012C510:("func_8012C510","void","int param_1"), - 0x8012C538:("func_8012C538","void","int param_1"), + 0x8012C470:("func_8012C470","void","GraphicsContext* gCtxt"), + 0x8012C498:("func_8012C498","Gfx*","Gfx* gfx"), + 0x8012C4C0:("func_8012C4C0","void","GraphicsContext* gCtxt"), + 0x8012C4E8:("func_8012C4E8","void","GraphicsContext* gCtxt"), + 0x8012C510:("func_8012C510","void","GraphicsContext* gCtxt"), + 0x8012C538:("func_8012C538","void","GraphicsContext* gCtxt"), 0x8012C560:("func_8012C560","void","GraphicsContext* gCtxt"), - 0x8012C588:("func_8012C588","void","void"), - 0x8012C5B0:("func_8012C5B0","void","void"), - 0x8012C5D8:("func_8012C5D8","void","int param_1"), - 0x8012C600:("func_8012C600","void","void"), + 0x8012C588:("func_8012C588","void","GraphicsContext* gCtxt"), + 0x8012C5B0:("func_8012C5B0","void","GraphicsContext* gCtxt"), + 0x8012C5D8:("func_8012C5D8","void","GraphicsContext* gCtxt"), + 0x8012C600:("func_8012C600","Gfx*","Gfx* gfx"), 0x8012C628:("func_8012C628","void","GraphicsContext* gCtxt"), - 0x8012C654:("func_8012C654","void","void"), - 0x8012C680:("func_8012C680","void","void"), - 0x8012C6AC:("func_8012C6AC","void","void"), - 0x8012C6D4:("func_8012C6D4","void","int param_1"), - 0x8012C6FC:("func_8012C6FC","void","void"), - 0x8012C724:("func_8012C724","void","void"), - 0x8012C74C:("func_8012C74C","UNK_PTR","UNK_PTR param_1"), - 0x8012C774:("func_8012C774","UNK_PTR","UNK_PTR param_1"), - 0x8012C7B8:("func_8012C7B8","UNK_PTR","UNK_PTR param_1"), - 0x8012C7FC:("func_8012C7FC","Gfx*","Gfx* puParm1"), - 0x8012C840:("func_8012C840","UNK_PTR","UNK_PTR param_1"), - 0x8012C868:("func_8012C868","void","void"), + 0x8012C654:("func_8012C654","void","GraphicsContext* gCtxt"), + 0x8012C680:("func_8012C680","void","Gfx** gfxp"), + 0x8012C6AC:("func_8012C6AC","void","GraphicsContext* gCtxt"), + 0x8012C6D4:("func_8012C6D4","void","GraphicsContext* gCtxt"), + 0x8012C6FC:("func_8012C6FC","void","GraphicsContext* gCtxt"), + 0x8012C724:("func_8012C724","Gfx*","Gfx* gfx"), + 0x8012C74C:("func_8012C74C","Gfx*","Gfx* gfx"), + 0x8012C774:("func_8012C774","Gfx*","Gfx* gfx"), + 0x8012C7B8:("func_8012C7B8","Gfx*","Gfx* gfx"), + 0x8012C7FC:("func_8012C7FC","Gfx*","Gfx* gfx"), + 0x8012C840:("func_8012C840","Gfx*","Gfx* gfx"), + 0x8012C868:("func_8012C868","Gfx*","Gfx* gfx"), 0x8012C8AC:("func_8012C8AC","void","GraphicsContext* gCtxt"), - 0x8012C8D4:("func_8012C8D4","void","void"), - 0x8012C8FC:("func_8012C8FC","void","int param_1"), - 0x8012C924:("func_8012C924","void","int param_1"), - 0x8012C94C:("func_8012C94C","void","void"), - 0x8012C974:("func_8012C974","void","void"), - 0x8012C9BC:("func_8012C9BC","void","void"), - 0x8012C9E4:("func_8012C9E4","void","int param_1"), - 0x8012CA0C:("func_8012CA0C","void","void"), - 0x8012CA38:("func_8012CA38","void","int param_1"), - 0x8012CA60:("func_8012CA60","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5"), - 0x8012CB04:("func_8012CB04","void","void"), - 0x8012CB28:("func_8012CB28","void","void"), - 0x8012CB4C:("Rcp_GenerateSetTileSizeDl","Gfx*","GraphicsContext* gCtxt, u32 upperS, u32 upperT, u32 lengthS, u32 lengthT"), - 0x8012CBD0:("Rcp_GenerateSetTileSize2Dl","Gfx*","GraphicsContext* gCtxt, u32 tile1, u32 upperS1, u32 upperT1, u32 lengthS1, u32 lengthT1, u32 tile2, u32 upperS2, u32 upperT2, u32 lengthS2, u32 lengthT2"), - 0x8012CCF0:("func_8012CCF0","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, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14, UNK_TYPE4 param_15"), - 0x8012CE50:("func_8012CE50","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5"), - 0x8012CEA8:("func_8012CEA8","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"), - 0x8012CF0C:("func_8012CF0C","void","GraphicsContext* gCtxt, int iParm2, int iParm3, unsigned int uParm4, u8 param_5, u8 param_6"), - 0x8012D374:("func_8012D374","void","void"), + 0x8012C8D4:("func_8012C8D4","void","GraphicsContext* gCtxt"), + 0x8012C8FC:("func_8012C8FC","void","GraphicsContext* gCtxt"), + 0x8012C924:("func_8012C924","void","GraphicsContext* gCtxt"), + 0x8012C94C:("func_8012C94C","void","GraphicsContext* gCtxt"), + 0x8012C974:("func_8012C974","void","GraphicsContext* gCtxt"), + 0x8012C9BC:("func_8012C9BC","void","GraphicsContext* gCtxt"), + 0x8012C9E4:("func_8012C9E4","void","GraphicsContext* gCtxt"), + 0x8012CA0C:("func_8012CA0C","void","Gfx** gfxp"), + 0x8012CA38:("func_8012CA38","void","GraphicsContext* gCtxt"), + 0x8012CA60:("Gfx_BranchTexScroll","Gfx*","Gfx** gfxp, u32 x, u32 y, s32 width, s32 height"), + 0x8012CB04:("func_8012CB04","void","Gfx** gfxp, u32 x, u32 y"), + 0x8012CB28:("func_8012CB28","Gfx*","GraphicsContext* gfxCtx, u32 x, u32 y"), + 0x8012CB4C:("Gfx_TexScroll","Gfx*","GraphicsContext* gfxCtx, u32 x, u32 y, s32 width, s32 height"), + 0x8012CBD0:("Gfx_TwoTexScroll","Gfx*","GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 width1, s32 height1, s32 tile2, u32 x2, u32 y2, s32 width2, s32 height2"), + 0x8012CCF0:("Gfx_TwoTexScrollEnvColor","Gfx*","GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 width1, s32 height1, s32 tile2, u32 x2, u32 y2, s32 width2, s32 height2, s32 r, s32 g, s32 b, s32 a"), + 0x8012CE50:("Gfx_EnvColor","Gfx*","GraphicsContext* gfxCtx, s32 r, s32 g, s32 b, s32 a"), + 0x8012CEA8:("Gfx_PrimColor","Gfx*","GraphicsContext* gfxCtx, s32 lodfrac, s32 r, s32 g, s32 b, s32 a"), + 0x8012CF0C:("func_8012CF0C","void","GraphicsContext* gCtxt, s32 iParm2, s32 iParm3, u8 r, u8 g, u8 b"), + 0x8012D374:("func_8012D374","void","GraphicsContext* gCtxt, u8 r, u8 g, u8 b"), 0x8012D40C:("func_8012D40C","void","f32* param_1, f32* param_2, s16* param_3"), 0x8012D510:("Room_nop8012D510","void","GlobalContext* ctxt, Room* room, UNK_PTR param_3, UNK_TYPE1 param_4"), 0x8012D528:("Room_DrawType3Mesh","void","GlobalContext* ctxt, Room* room, u32 flags"), @@ -3146,21 +3146,21 @@ 0x80173C7C:("Gamealloc_Free","void","GameAlloc* heap, void* ptr"), 0x80173CC8:("Gamealloc_FreeAll","void","GameAlloc* heap"), 0x80173D18:("Gamealloc_Init","void","GameAlloc* iParm1"), - 0x80173D30:("Graph_FaultDrawFunc","void","void"), + 0x80173D30:("Graph_FaultClient","void","void"), 0x80173DAC:("Graph_DlAlloc","void","DispBuf* dl, void* memoryBlock, u32 size"), - 0x80173DCC:("Graph_RenderSetup","void","GraphicsContext* gCtxt"), - 0x80173F98:("Graph_GetNextGameStateMetaInfo","GameStateOverlay*","GameState* ctxt"), + 0x80173DCC:("Graph_InitTHGA","void","GraphicsContext* gCtxt"), + 0x80173F98:("Graph_GetNextGameState","GameStateOverlay*","GameState* ctxt"), 0x80174060:("Graph_FaultAddrConvFunc","void*","void* addr"), - 0x801740D0:("Graph_ContextInit","void","GraphicsContext* gCtxt"), - 0x80174174:("Graph_Fini","void","void"), + 0x801740D0:("Graph_Init","void","GraphicsContext* gCtxt"), + 0x80174174:("Graph_Destroy","void","void"), 0x801741A8:("Graph_Render","void","GraphicsContext* gCtxt, GameState* ctxt"), 0x801744AC:("Graph_FrameSetup","void","GameState* ctxt"), 0x801744F8:("Graph_RenderFrame","void","GraphicsContext* gCtxt, GameState* ctxt"), 0x80174868:("Graph_DoFrame","void","GraphicsContext* gCtxt, GameState* ctxt"), 0x801748A0:("Graph_ThreadEntry","void","void* arg"), - 0x80174A40:("func_80174A40","void","void"), - 0x80174A4C:("func_80174A4C","void","void"), - 0x80174A64:("func_80174A64","void","void"), + 0x80174A40:("Graph_GfxPlusOne","Gfx*","Gfx* gfx"), + 0x80174A4C:("Graph_BranchDlist","Gfx*","Gfx* gfx, Gfx* dst"), + 0x80174A64:("Graph_DlistAlloc","void*","Gfx** gfx, u32 size"), 0x80174AA0:("func_80174AA0","void","void"), 0x80174AB4:("func_80174AB4","void","void"), 0x80174B20:("func_80174B20","void","void"), @@ -3233,7 +3233,7 @@ 0x80178978:("func_80178978","void","void"), 0x801789D4:("func_801789D4","void","void"), 0x801789EC:("get_framebuffer","u32*","s32 index"), - 0x80178A14:("func_80178A14","void","void"), + 0x80178A14:("get_zbuffer","u16*","void"), 0x80178A24:("func_80178A24","UNK_TYPE4","void"), 0x80178A34:("func_80178A34","void","void"), 0x80178A94:("func_80178A94","s32","s32 param_1, s32 param_2"), diff --git a/tables/variables.txt b/tables/variables.txt index bd9a31ff3a..64652cb598 100644 --- a/tables/variables.txt +++ b/tables/variables.txt @@ -1386,57 +1386,9 @@ 0x801C0EE4:("D_801C0EE4","UNK_TYPE2","",0x2), 0x801C0EE8:("D_801C0EE8","UNK_TYPE2","",0x2), 0x801C0EEC:("D_801C0EEC","UNK_TYPE2","",0x2), - 0x801C0EF0:("D_801C0EF0","Gfx","[6]",0x30), - 0x801C0F50:("D_801C0F50","Gfx","[6]",0x30), - 0x801C0FB0:("D_801C0FB0","Gfx","[6]",0x30), - 0x801C12B0:("D_801C12B0","Gfx","[6]",0x30), - 0x801C1340:("D_801C1340","Gfx","[6]",0x30), - 0x801C13A0:("D_801C13A0","Gfx","[6]",0x30), - 0x801C13D0:("D_801C13D0","Gfx","[6]",0x30), - 0x801C1400:("D_801C1400","Gfx","[6]",0x30), - 0x801C1430:("D_801C1430","Gfx","[6]",0x30), - 0x801C14C0:("D_801C14C0","Gfx","[6]",0x30), - 0x801C14F0:("D_801C14F0","Gfx","[6]",0x30), - 0x801C1520:("D_801C1520","Gfx","[6]",0x30), - 0x801C1550:("D_801C1550","Gfx","[6]",0x30), - 0x801C1580:("D_801C1580","Gfx","[6]",0x30), - 0x801C15B0:("D_801C15B0","Gfx","[6]",0x30), - 0x801C15E0:("D_801C15E0","Gfx","[6]",0x30), - 0x801C1610:("D_801C1610","Gfx","[6]",0x30), - 0x801C1640:("D_801C1640","Gfx","[6]",0x30), - 0x801C1670:("D_801C1670","Gfx","[6]",0x30), - 0x801C16A0:("D_801C16A0","Gfx","[6]",0x30), - 0x801C16D0:("D_801C16D0","Gfx","[6]",0x30), - 0x801C1700:("D_801C1700","Gfx","[6]",0x30), - 0x801C1730:("D_801C1730","Gfx","[6]",0x30), - 0x801C1760:("D_801C1760","Gfx","[6]",0x30), - 0x801C1790:("D_801C1790","Gfx","[6]",0x30), - 0x801C17C0:("D_801C17C0","Gfx","[6]",0x30), - 0x801C17F0:("D_801C17F0","Gfx","[6]",0x30), - 0x801C1820:("D_801C1820","Gfx","[6]",0x30), - 0x801C1850:("D_801C1850","Gfx","[6]",0x30), - 0x801C1880:("D_801C1880","Gfx","[6]",0x30), - 0x801C18B0:("D_801C18B0","Gfx","[6]",0x30), - 0x801C18E0:("D_801C18E0","Gfx","[6]",0x30), - 0x801C1910:("D_801C1910","Gfx","[6]",0x30), - 0x801C1940:("D_801C1940","Gfx","[6]",0x30), - 0x801C1970:("D_801C1970","Gfx","[6]",0x30), - 0x801C19A0:("D_801C19A0","Gfx","[6]",0x30), - 0x801C19D0:("D_801C19D0","Gfx","[6]",0x30), - 0x801C1A00:("D_801C1A00","Gfx","[6]",0x30), - 0x801C1A30:("D_801C1A30","Gfx","[6]",0x30), - 0x801C1A60:("D_801C1A60","Gfx","[6]",0x30), - 0x801C1AF0:("D_801C1AF0","Gfx","[6]",0x30), - 0x801C1B20:("D_801C1B20","Gfx","[6]",0x30), - 0x801C1B50:("D_801C1B50","Gfx","[6]",0x30), - 0x801C1B80:("D_801C1B80","Gfx","[6]",0x30), - 0x801C1BB0:("D_801C1BB0","Gfx","[6]",0x30), - 0x801C1BE0:("D_801C1BE0","Gfx","[6]",0x30), - 0x801C1C10:("D_801C1C10","Gfx","[6]",0x30), - 0x801C1C40:("D_801C1C40","Gfx","[6]",0x30), - 0x801C1C70:("D_801C1C70","Gfx","[6]",0x30), - 0x801C1CA0:("D_801C1CA0","Gfx","[12]",0x60), - 0x801C1D00:("D_801C1D00","Gfx","[1]",0x8), + 0x801C0EF0:("sSetupDL","Gfx","[438]",0xdb0), + 0x801C1CA0:("sFillSetupDL","Gfx","[12]",0x60), + 0x801C1D00:("gEmptyDL","Gfx","[1]",0x8), 0x801C1D10:("D_801C1D10","Vec3f","",0xc), 0x801C1D1C:("roomDrawFuncs","room_draw_func","[4]",0x10), 0x801C1D30:("gBitFlags","u32","[32]",0x80), @@ -2370,8 +2322,8 @@ 0x801D150C:("gFramerateDivisorThird","f32","",0x4), 0x801D1510:("D_801D1510","UNK_TYPE4","",0x4), 0x801D1514:("D_801D1514","UNK_TYPE4","",0x4), - 0x801D1520:("screenWidth","u32","",0x4), - 0x801D1524:("screenHeight","u32","",0x4), + 0x801D1520:("gScreenWidth","s32","",0x4), + 0x801D1524:("gScreenHeight","s32","",0x4), 0x801D1528:("startHeapSize","UNK_TYPE4","",0x4), 0x801D1530:("padmgrContext","PadmgrThreadStruct*","",0x4), 0x801D1534:("controllerInputsCaptured","UNK_TYPE4","",0x4), @@ -4325,7 +4277,7 @@ 0x801FBB30:("D_801FBB30","OSViMode","",0x50), 0x801FBB80:("gFramebuffers","u32*","[2]",0x8), 0x801FBB88:("D_801FBB88","OSViMode*","",0x4), - 0x801FBB8C:("D_801FBB8C","UNK_TYPE1","",0x1), + 0x801FBB8C:("gZBufferPtr","u16*","",0x4), 0x801FBB90:("D_801FBB90","UNK_TYPE4","",0x4), 0x801FBB94:("D_801FBB94","UNK_TYPE1","",0x1), 0x801FBB98:("D_801FBB98","UNK_TYPE1","",0x1), diff --git a/tools/parse_dl.py b/tools/parse_dl.py index 265db73e9d..9c74edadef 100644 --- a/tools/parse_dl.py +++ b/tools/parse_dl.py @@ -132,6 +132,38 @@ def generate_output(self, path): '\n' ) +def parse_geometry_mode_flags(flags): + flag_strs = [] + if flags & 0x00000001 == 0x00000001: + flag_strs.append('G_ZBUFFER') + if flags & 0x00000004 == 0x00000004: + flag_strs.append('G_SHADE') + if flags & 0x00000600 == 0x00000600: + flag_strs.append('G_CULL_BOTH') + elif flags & 0x00000600 == 0x00000200: + flag_strs.append('G_CULL_FRONT') + elif flags & 0x00000600 == 0x00000400: + flag_strs.append('G_CULL_BACK') + if flags & 0x00010000 == 0x00010000: + flag_strs.append('G_FOG') + if flags & 0x00020000 == 0x00020000: + flag_strs.append('G_LIGHTING') + if flags & 0x00040000 == 0x00040000: + flag_strs.append('G_TEXTURE_GEN') + if flags & 0x00080000 == 0x00080000: + flag_strs.append('G_TEXTURE_GEN_LINEAR') + if flags & 0x00200000 == 0x00200000: + flag_strs.append('G_SHADING_SMOOTH') + + result = '' + for flag_str in flag_strs: + if result == '': + result = flag_str + else: + result += ' | ' + flag_str + + return result + class Parser: class VertexList: @@ -548,7 +580,14 @@ class Parser: scaleT = (w1 & 0x0000FFFF) if on != 0 and on != 1: return invalid - return (True, False, 'gsSPTexture(0x{:04X}, 0x{:04X}, {}, {}, {})'.format(scaleS, scaleT, level, tile, on)) + onStr = 'G_OFF' if on == 0 else 'G_ON' + if tile == 0: + tileStr = 'G_TX_RENDERTILE' + elif tile == 7: + tileStr = 'G_TX_LOADTILE' + else: + tileStr = str(tile) + return (True, False, 'gsSPTexture(0x{:04X}, 0x{:04X}, {}, {}, {})'.format(scaleS, scaleT, level, tileStr, onStr)) else: return invalid @@ -560,7 +599,19 @@ class Parser: return invalid if cmd == 0xD9: # G_GEOMETRYMODE - return (True, False, 'gsDPNoOp() # TODO G_GEOMETRYMODE') + if w1 & 0xFF000000 == 0: + clear_str = parse_geometry_mode_flags(~w0) + set_str = parse_geometry_mode_flags(w1) + if (w0 == 0xD9FFFFFF): + return (True, False, 'gsSPSetGeometryMode({})'.format(set_str)) + elif (w1 == 0): + return (True, False, 'gsSPClearGeometryMode({})'.format(clear_str)) + elif (w0 == 0xD9000000): + return (True, False, 'gsSPLoadGeometryMode({})'.format(set_str)) + else: + return (True, False, 'gsSPGeometryMode({}, {})'.format(clear_str, set_str)) + else: + return invalid if cmd == 0xDA: # G_MTX if (w0 & 0xFFFFFF00) == 0xDA380000: @@ -966,7 +1017,7 @@ class Parser: green = (w1 & 0x00FF0000) >> 16 blue = (w1 & 0x0000FF00) >> 8 alpha = (w1 & 0x000000FF) - return (True, False, 'gsDPBlendColor({}, {}, {}, {})'.format(red, green, blue, alpha)) + return (True, False, 'gsDPSetBlendColor({}, {}, {}, {})'.format(red, green, blue, alpha)) else: return invalid diff --git a/undef.txt b/undef.txt index 46272c9295..cbeb142285 100644 --- a/undef.txt +++ b/undef.txt @@ -437,7 +437,7 @@ D_801FBB28 = code_bss_start + 0x00017B88; D_801FBB30 = code_bss_start + 0x00017B90; gFramebuffers = code_bss_start + 0x00017BE0; D_801FBB88 = code_bss_start + 0x00017BE8; -D_801FBB8C = code_bss_start + 0x00017BEC; +gZBufferPtr = code_bss_start + 0x00017BEC; D_801FBB90 = code_bss_start + 0x00017BF0; D_801FBB94 = code_bss_start + 0x00017BF4; D_801FBB98 = code_bss_start + 0x00017BF8;