Created
March 18, 2022 12:05
-
-
Save Dragorn421/4e73105907c5df1d84ed884d42cacc4f to your computer and use it in GitHub Desktop.
python script for making sense of oot decomp's setup DLs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| setupDLsSource = """ | |
| { | |
| /* SETUPDL_0 */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_1 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), | |
| gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_2 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), | |
| gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_3 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), | |
| gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_4 */ | |
| 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_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_5 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_6 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_7 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_SHADE__AA_OPA_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), | |
| gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIA__MODULATEIA2__AA__FOG_SHADE_A__XLU_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIDECALA__AA_OPA_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIDECALA__MODULATEIA_PRIM2__AA__FOG_SHADE_A__OPA_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEI_PRIM__AA_OPA_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIA_PRIM__XLU_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_DECALRGBA__AA_ZB_TEX_EDGE */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_DECALRGBA__AA__FOG_SHADE_A__TEX_EDGE */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIA_PRIM__MODULATEIA_PRIM2__AA__FOG_SHADE_A__XLU_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIDECALA__AA_ZB_TEX_EDGE */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIDECALA__AA__FOG_SHADE_A__TEX_EDGE */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_19 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIA_PRIM__ACT_ZB_CLD_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_21 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIA__MODULATEIA2__AA__FOG_SHADE_A__XLU_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIDECALA__AA_ZB_OPA_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIDECALA__MODULATEIA2__AA__FOG_SHADE_A__OPA_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIDECALA__MODULATEIA_PRIM2__AA__FOG_SHADE_A__OPA_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEI_PRIM__AA_ZB_OPA_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_27 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIDECALA_PRIM__ACT_AA_TEX_EDGE */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_29 */ | |
| 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_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_PRIMITIVE__AA_ZB_XLU_LINE */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), | |
| gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_HILITERGBA__AA_ZB_OPA_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_HILITERGBA, G_CC_HILITERGBA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_HILITERGBA__AA_ZB_OPA_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_HILITERGBA, G_CC_HILITERGBA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_33 */ | |
| 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_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_DECALRGB__ACT_OPA_SURF */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_DECALRGBA__AA_ZB_XLU_DECAL */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_36 */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_37 */ | |
| 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_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_38 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), | |
| gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIA_PRIM__ACT_XLU_SURF */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_40 */ | |
| 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_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_41 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIDECALA__XLU_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIDECALA_PRIM__ACT_XLU_SURF */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIA_PRIM__ZB__FOG_SHADE_A__OVL_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_PASS2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_45 */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_46 */ | |
| 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_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEI_PRIM__ZB_XLU_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_PRIMITIVE__AA_XLU_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), | |
| gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_49 */ | |
| 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_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIA_PRIM__ACT_OPA_SURF */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIA_PRIM__XLU_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIA_PRIM__ACT_XLU_SURF */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_53 */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_54 */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_55 */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIA_PRIM__ACT_XLU_SURF */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_PRIMITIVE__ACT_CLD_SURF */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_58 */ | |
| 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_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_59 */ | |
| 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_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_60 */ | |
| 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_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_61 */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIDECALA__MODULATEIA_PRIM2__AA__FOG_SHADE_A__OPA_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIA_PRIM2), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_63 */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_DECALRGBA__ACT_XLU_SURF */ | |
| 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(), | |
| }, | |
| { | |
| /* SETUPDL_MODULATEIA_PRIM__ACT_CLD_SURF */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_66 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_67 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_68 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_69 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| { | |
| /* SETUPDL_70 */ | |
| gsDPPipeSync(), | |
| gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), | |
| gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), | |
| gsDPSetOtherMode(G_AD_NOTPATTERN | 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(), | |
| }, | |
| """ | |
| import re | |
| from typing import Iterable | |
| SINGLE_CHARS_TOKENS = set("{}(),|") | |
| class Tokenizer: | |
| def __init__(self) -> None: | |
| self.tokens = [] | |
| self.current_token = "" | |
| def feed(self, source: str) -> None: | |
| for c in source: | |
| if c.isspace(): | |
| self.token_end() | |
| elif c in SINGLE_CHARS_TOKENS: | |
| self.token_end() | |
| self.token_extend(c) | |
| self.token_end() | |
| else: | |
| self.token_extend(c) | |
| def token_end(self): | |
| if self.current_token: | |
| self.tokens.append(self.current_token) | |
| self.current_token = "" | |
| def token_extend(self, s): | |
| self.current_token += s | |
| NODE_TOKENS = { | |
| "{": "}", | |
| "(": ")", | |
| } | |
| def as_separated(tokens, sep_token): | |
| args = [] | |
| cur_args = [] | |
| for child in tokens: | |
| if child == sep_token: | |
| args.append(cur_args) | |
| cur_args = [] | |
| else: | |
| cur_args.append(child) | |
| if cur_args: | |
| args.append(cur_args) | |
| return args | |
| class Node: | |
| def __init__(self, start_token) -> None: | |
| self.start_token = start_token | |
| self.children = [] | |
| self.parent = None | |
| def as_separated(self, sep_token): | |
| return as_separated(self.children, sep_token) | |
| def __str__(self) -> str: | |
| childrenStr = " ".join( | |
| "\n" + str(child) + "\n" if isinstance(child, Node) else str(child) | |
| for child in self.children | |
| ) | |
| if self.start_token: | |
| return self.start_token + childrenStr + NODE_TOKENS[self.start_token] | |
| else: | |
| return childrenStr | |
| class Parser: | |
| def __init__(self) -> None: | |
| self.root_node = Node(None) | |
| self.cur_node = self.root_node | |
| def feed(self, tokens: Iterable[str]) -> None: | |
| for token in tokens: | |
| if token in NODE_TOKENS: | |
| self.node_push(Node(token)) | |
| elif ( | |
| self.cur_node.start_token | |
| and token == NODE_TOKENS[self.cur_node.start_token] | |
| ): | |
| self.node_pop() | |
| else: | |
| self.cur_node.children.append(token) | |
| def node_push(self, node: Node): | |
| self.cur_node.children.append(node) | |
| node.parent = self.cur_node | |
| self.cur_node = node | |
| def node_pop(self): | |
| self.cur_node = self.cur_node.parent | |
| setupDLsSource_nocomments = re.sub(r"\/\*.*?\*\/", "", setupDLsSource) | |
| tokenizer = Tokenizer() | |
| tokenizer.feed(setupDLsSource_nocomments) | |
| print(tokenizer.tokens) | |
| print( | |
| "".join(token + "\n" if token in set("{,") else token for token in tokenizer.tokens) | |
| ) | |
| parser = Parser() | |
| parser.feed(tokenizer.tokens) | |
| root_node = parser.root_node | |
| print(root_node) | |
| setupDLs_nodes = root_node.as_separated(",") | |
| assert all(len(setupDL_nodes) == 1 for setupDL_nodes in setupDLs_nodes) | |
| setupDLs_nodes: list[Node] = [setupDL_nodes[0] for setupDL_nodes in setupDLs_nodes] | |
| print(len(setupDLs_nodes), "setup DLs") | |
| expected_cmds_names = [ | |
| "gsDPPipeSync", | |
| "gsSPTexture", | |
| {"gsDPSetCombineMode", "gsDPSetCombineLERP"}, | |
| "gsDPSetOtherMode", | |
| "gsSPLoadGeometryMode", | |
| "gsSPEndDisplayList", | |
| ] | |
| OTHERMODE0FLAGS = { | |
| "AD": {"G_AD_NOTPATTERN", "G_AD_DISABLE", "G_AD_NOISE"}, | |
| "CD": {"G_CD_NOISE", "G_CD_MAGICSQ", "G_CD_DISABLE"}, | |
| "CK": {"G_CK_NONE"}, | |
| "CYC": {"G_CYC_1CYCLE", "G_CYC_2CYCLE", "G_CYC_FILL"}, | |
| "TC": {"G_TC_FILT"}, | |
| "TF": {"G_TF_BILERP", "G_TF_POINT"}, | |
| "TT": {"G_TT_NONE", "G_TT_RGBA16"}, | |
| "TL": {"G_TL_TILE"}, | |
| "TD": {"G_TD_CLAMP"}, | |
| "TP": {"G_TP_PERSP", "G_TP_NONE"}, | |
| "PM": {"G_PM_NPRIMITIVE"}, | |
| } | |
| OTHERMODE1FLAGS_setorclear = { | |
| "ALPHA_CVG_SEL", | |
| "CVG_X_ALPHA", | |
| "AA_EN", | |
| "Z_CMP", | |
| "IM_RD", | |
| "FORCE_BL", | |
| "Z_UPD", | |
| "CLR_ON_CVG", | |
| } | |
| OTHERMODE1FLAGS_opts = { | |
| "AC": {"G_AC_THRESHOLD", "G_AC_NONE"}, | |
| "ZS": {"G_ZS_PIXEL"}, | |
| "CVG_DST": {"CVG_DST_FULL", "CVG_DST_SAVE"}, | |
| "ZMODE": {"ZMODE_OPA"}, | |
| } | |
| OTHERMODE1PRESETS = { | |
| # opa | |
| "G_RM_OPA_SURF", | |
| "G_RM_OPA_SURF2", | |
| "G_RM_AA_OPA_SURF", | |
| "G_RM_AA_OPA_SURF2", | |
| "G_RM_AA_ZB_OPA_SURF", | |
| "G_RM_AA_ZB_OPA_SURF2", | |
| # xlu | |
| "G_RM_XLU_SURF", | |
| "G_RM_XLU_SURF2", | |
| "G_RM_AA_XLU_SURF", | |
| "G_RM_AA_XLU_SURF2", | |
| "G_RM_ZB_XLU_SURF", | |
| "G_RM_ZB_XLU_SURF2", | |
| "G_RM_AA_ZB_XLU_SURF", | |
| "G_RM_AA_ZB_XLU_SURF2", | |
| "G_RM_AA_ZB_XLU_DECAL", | |
| "G_RM_AA_ZB_XLU_DECAL2", | |
| "G_RM_AA_ZB_XLU_LINE", | |
| "G_RM_AA_ZB_XLU_LINE2", | |
| # other | |
| "G_RM_PASS", | |
| "G_RM_NOOP", | |
| "G_RM_NOOP2", | |
| "G_RM_FOG_SHADE_A", | |
| "G_RM_ZB_OVL_SURF2", | |
| "G_RM_CLD_SURF", | |
| "G_RM_CLD_SURF2", | |
| "G_RM_ZB_CLD_SURF", | |
| "G_RM_ZB_CLD_SURF2", | |
| "G_RM_AA_TEX_EDGE", | |
| "G_RM_AA_TEX_EDGE2", | |
| "G_RM_AA_ZB_TEX_EDGE", | |
| "G_RM_AA_ZB_TEX_EDGE2", | |
| } | |
| OTHERMODE1PRESETS_DATA1 = { | |
| # opa | |
| "G_RM_OPA_SURF": { | |
| "CVG_DST": "CLAMP", | |
| "FORCE_BL": "set", | |
| "ZMODE": "OPA", | |
| "blender 1": "G_BL_CLR_IN,G_BL_0,G_BL_CLR_IN,G_BL_1", | |
| }, | |
| "G_RM_AA_OPA_SURF": { | |
| "AA_EN": "set", | |
| "IM_RD": "set", | |
| "ALPHA_CVG_SEL": "set", | |
| "CVG_DST": "CLAMP", | |
| "ZMODE": "OPA", | |
| "blender 1": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_A_MEM", | |
| }, | |
| "G_RM_AA_ZB_OPA_SURF": { | |
| "AA_EN": "set", | |
| "Z_CMP": "set", | |
| "Z_UPD": "set", | |
| "IM_RD": "set", | |
| "ALPHA_CVG_SEL": "set", | |
| "CVG_DST": "CLAMP", | |
| "ZMODE": "OPA", | |
| "blender 1": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_A_MEM", | |
| }, | |
| # xlu | |
| "G_RM_XLU_SURF": { | |
| "IM_RD": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "FULL", | |
| "ZMODE": "OPA", | |
| "blender 1": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_AA_XLU_SURF": { | |
| "AA_EN": "set", | |
| "IM_RD": "set", | |
| "CLR_ON_CVG": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "WRAP", | |
| "ZMODE": "OPA", | |
| "blender 1": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_ZB_XLU_SURF": { | |
| "Z_CMP": "set", | |
| "IM_RD": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "FULL", | |
| "ZMODE": "XLU", | |
| "blender 1": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_AA_ZB_XLU_SURF": { | |
| "AA_EN": "set", | |
| "Z_CMP": "set", | |
| "IM_RD": "set", | |
| "CLR_ON_CVG": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "WRAP", | |
| "ZMODE": "XLU", | |
| "blender 1": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_AA_ZB_XLU_DECAL": { | |
| "AA_EN": "set", | |
| "Z_CMP": "set", | |
| "IM_RD": "set", | |
| "CLR_ON_CVG": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "WRAP", | |
| "ZMODE": "DEC", | |
| "blender 1": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_AA_ZB_XLU_LINE": { | |
| "AA_EN": "set", | |
| "Z_CMP": "set", | |
| "IM_RD": "set", | |
| "CVG_X_ALPHA": "set", | |
| "ALPHA_CVG_SEL": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "CLAMP", | |
| "ZMODE": "XLU", | |
| "blender 1": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| # other | |
| "G_RM_PASS": {"blender 1": "G_BL_CLR_IN,G_BL_0,G_BL_CLR_IN,G_BL_1"}, | |
| "G_RM_NOOP": {"blender 1": "0,0,0,0"}, | |
| "G_RM_FOG_SHADE_A": {"blender 1": "G_BL_CLR_FOG,G_BL_A_SHADE,G_BL_CLR_IN,G_BL_1MA"}, | |
| "G_RM_CLD_SURF": { | |
| "IM_RD": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "SAVE", | |
| "ZMODE": "OPA", | |
| "blender 1": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_ZB_CLD_SURF": { | |
| "Z_CMP": "set", | |
| "IM_RD": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "SAVE", | |
| "ZMODE": "XLU", | |
| "blender 1": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_AA_TEX_EDGE": { | |
| "AA_EN": "set", | |
| "IM_RD": "set", | |
| "CVG_X_ALPHA": "set", | |
| "ALPHA_CVG_SEL": "set", | |
| "CVG_DST": "CLAMP", | |
| "ZMODE": "OPA", | |
| "blender 1": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_A_MEM", | |
| }, | |
| "G_RM_AA_ZB_TEX_EDGE": { | |
| "AA_EN": "set", | |
| "Z_CMP": "set", | |
| "Z_UPD": "set", | |
| "IM_RD": "set", | |
| "CVG_X_ALPHA": "set", | |
| "ALPHA_CVG_SEL": "set", | |
| "CVG_DST": "CLAMP", | |
| "ZMODE": "OPA", | |
| "blender 1": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_A_MEM", | |
| }, | |
| } | |
| OTHERMODE1PRESETS_DATA2 = { | |
| # opa | |
| "G_RM_OPA_SURF2": { | |
| "CVG_DST": "CLAMP", | |
| "FORCE_BL": "set", | |
| "ZMODE": "OPA", | |
| "blender 2": "G_BL_CLR_IN,G_BL_0,G_BL_CLR_IN,G_BL_1", | |
| }, | |
| "G_RM_AA_OPA_SURF2": { | |
| "AA_EN": "set", | |
| "IM_RD": "set", | |
| "ALPHA_CVG_SEL": "set", | |
| "CVG_DST": "CLAMP", | |
| "ZMODE": "OPA", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_A_MEM", | |
| }, | |
| "G_RM_AA_ZB_OPA_SURF2": { | |
| "AA_EN": "set", | |
| "Z_CMP": "set", | |
| "Z_UPD": "set", | |
| "IM_RD": "set", | |
| "ALPHA_CVG_SEL": "set", | |
| "CVG_DST": "CLAMP", | |
| "ZMODE": "OPA", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_A_MEM", | |
| }, | |
| # xlu | |
| "G_RM_XLU_SURF2": { | |
| "IM_RD": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "FULL", | |
| "ZMODE": "OPA", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_AA_XLU_SURF2": { | |
| "AA_EN": "set", | |
| "IM_RD": "set", | |
| "CLR_ON_CVG": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "WRAP", | |
| "ZMODE": "OPA", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_ZB_XLU_SURF2": { | |
| "Z_CMP": "set", | |
| "IM_RD": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "FULL", | |
| "ZMODE": "XLU", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_AA_ZB_XLU_SURF2": { | |
| "AA_EN": "set", | |
| "Z_CMP": "set", | |
| "IM_RD": "set", | |
| "CLR_ON_CVG": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "WRAP", | |
| "ZMODE": "XLU", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_AA_ZB_XLU_DECAL2": { | |
| "AA_EN": "set", | |
| "Z_CMP": "set", | |
| "IM_RD": "set", | |
| "CLR_ON_CVG": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "WRAP", | |
| "ZMODE": "DEC", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_AA_ZB_XLU_LINE2": { | |
| "AA_EN": "set", | |
| "Z_CMP": "set", | |
| "IM_RD": "set", | |
| "CVG_X_ALPHA": "set", | |
| "ALPHA_CVG_SEL": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "CLAMP", | |
| "ZMODE": "XLU", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| # other | |
| "G_RM_NOOP2": {"blender 2": "0,0,0,0"}, | |
| "G_RM_ZB_OVL_SURF2": { | |
| "Z_CMP": "set", | |
| "IM_RD": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "SAVE", | |
| "ZMODE": "DEC", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_CLD_SURF2": { | |
| "IM_RD": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "SAVE", | |
| "ZMODE": "OPA", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_ZB_CLD_SURF2": { | |
| "Z_CMP": "set", | |
| "IM_RD": "set", | |
| "FORCE_BL": "set", | |
| "CVG_DST": "SAVE", | |
| "ZMODE": "XLU", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_1MA", | |
| }, | |
| "G_RM_AA_TEX_EDGE2": { | |
| "AA_EN": "set", | |
| "IM_RD": "set", | |
| "CVG_X_ALPHA": "set", | |
| "ALPHA_CVG_SEL": "set", | |
| "CVG_DST": "CLAMP", | |
| "ZMODE": "OPA", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_A_MEM", | |
| }, | |
| "G_RM_AA_ZB_TEX_EDGE2": { | |
| "AA_EN": "set", | |
| "Z_CMP": "set", | |
| "Z_UPD": "set", | |
| "IM_RD": "set", | |
| "CVG_X_ALPHA": "set", | |
| "ALPHA_CVG_SEL": "set", | |
| "CVG_DST": "CLAMP", | |
| "ZMODE": "OPA", | |
| "blender 2": "G_BL_CLR_IN,G_BL_A_IN,G_BL_CLR_MEM,G_BL_A_MEM", | |
| }, | |
| } | |
| expected_info_dict_keys = { | |
| "gsSPTexture on", | |
| "combiner 1 name", | |
| "combiner 2 name", | |
| "combiner C1 custom", | |
| "combiner C2 custom", | |
| "combiner A1 custom", | |
| "combiner A2 custom", | |
| "blender 1", | |
| "blender 2", | |
| "othermode1 preset 1", | |
| "othermode1 preset 2", | |
| } | |
| expected_info_dict_keys |= OTHERMODE0FLAGS.keys() | |
| expected_info_dict_keys |= OTHERMODE1FLAGS_setorclear | |
| expected_info_dict_keys |= OTHERMODE1FLAGS_opts.keys() | |
| setupDL_info_dicts = {} | |
| for setupDL_index, setupDL_node in enumerate(setupDLs_nodes): | |
| info_dict = dict() | |
| print("\n" * 4) | |
| print(setupDL_index, setupDL_node) | |
| assert setupDL_node.start_token == "{" | |
| setupDL_cmds = setupDL_node.as_separated(",") | |
| for setupDL_cmd_i, setupDL_cmd in enumerate(setupDL_cmds): | |
| assert len(setupDL_cmd) == 2 | |
| setupDL_cmd_name, setupDL_cmd_args_node = setupDL_cmd | |
| assert ( | |
| setupDL_cmd_name == expected_cmds_names[setupDL_cmd_i] | |
| if isinstance(expected_cmds_names[setupDL_cmd_i], str) | |
| else setupDL_cmd_name in expected_cmds_names[setupDL_cmd_i] | |
| ) | |
| print(setupDL_cmd_i, setupDL_cmd_name, setupDL_cmd_args_node) | |
| setupDL_cmd_args = setupDL_cmd_args_node.as_separated(",") | |
| print(setupDL_cmd_args) | |
| if all(len(setupDL_cmd_arg) == 1 for setupDL_cmd_arg in setupDL_cmd_args): | |
| setupDL_cmd_args_single = [ | |
| setupDL_cmd_arg[0] for setupDL_cmd_arg in setupDL_cmd_args | |
| ] | |
| print(setupDL_cmd_args_single) | |
| else: | |
| setupDL_cmd_args_single = None | |
| if ( | |
| setupDL_cmd_name == "gsDPPipeSync" | |
| or setupDL_cmd_name == "gsSPEndDisplayList" | |
| ): | |
| assert len(setupDL_cmd_args) == 0 | |
| elif setupDL_cmd_name == "gsSPTexture": | |
| assert setupDL_cmd_args_single is not None | |
| assert len(setupDL_cmd_args_single) == 5 | |
| assert setupDL_cmd_args_single[:4] == [ | |
| "0xFFFF", | |
| "0xFFFF", | |
| "0", | |
| "G_TX_RENDERTILE", | |
| ] | |
| assert setupDL_cmd_args_single[4] in {"G_ON", "G_OFF"} | |
| info_dict["gsSPTexture on"] = setupDL_cmd_args_single[4] | |
| elif setupDL_cmd_name == "gsDPSetCombineMode": | |
| assert setupDL_cmd_args_single is not None | |
| assert len(setupDL_cmd_args_single) == 2 | |
| info_dict["combiner 1 name"] = setupDL_cmd_args_single[0] | |
| info_dict["combiner 2 name"] = setupDL_cmd_args_single[1] | |
| info_dict["combiner C1 custom"] = "" | |
| info_dict["combiner C2 custom"] = "" | |
| info_dict["combiner A1 custom"] = "" | |
| info_dict["combiner A2 custom"] = "" | |
| elif setupDL_cmd_name == "gsDPSetCombineLERP": | |
| assert setupDL_cmd_args_single is not None | |
| assert len(setupDL_cmd_args_single) == 16 | |
| info_dict["combiner 1 name"] = "custom" | |
| info_dict["combiner 2 name"] = "custom" | |
| info_dict["combiner C1 custom"] = ",".join(setupDL_cmd_args_single[0:4]) | |
| info_dict["combiner C2 custom"] = ",".join(setupDL_cmd_args_single[4:8]) | |
| info_dict["combiner A1 custom"] = ",".join(setupDL_cmd_args_single[8:12]) | |
| info_dict["combiner A2 custom"] = ",".join(setupDL_cmd_args_single[12:16]) | |
| elif setupDL_cmd_name == "gsDPSetOtherMode": | |
| assert len(setupDL_cmd_args) == 2 | |
| # mode 0 | |
| flags0 = as_separated(setupDL_cmd_args[0], "|") | |
| assert all(len(flag0) == 1 for flag0 in flags0) | |
| flags0 = [flag0[0] for flag0 in flags0] | |
| for flag0 in flags0: | |
| flag0_group = None | |
| for othermode0flag_group, othermode0flags in OTHERMODE0FLAGS.items(): | |
| if flag0 in othermode0flags: | |
| flag0_group = othermode0flag_group | |
| break | |
| assert flag0_group is not None | |
| assert flag0_group not in info_dict | |
| group_prefix = "G_" + flag0_group + "_" | |
| assert flag0.startswith(group_prefix) | |
| info_dict[flag0_group] = flag0[len(group_prefix) :] | |
| # mode 1 | |
| for flag1 in OTHERMODE1FLAGS_setorclear: | |
| info_dict[flag1] = "clear" | |
| info_dict["CVG_DST"] = "?" | |
| info_dict["ZMODE"] = "?" | |
| info_dict["othermode1 preset 1"] = "?" | |
| info_dict["othermode1 preset 2"] = "?" | |
| custom_blender = [None, None] | |
| for arg1 in as_separated(setupDL_cmd_args[1], "|"): | |
| if len(arg1) == 1: | |
| flag1 = arg1[0] | |
| if flag1 in OTHERMODE1FLAGS_setorclear: | |
| info_dict[flag1] = "set" | |
| elif flag1.startswith("G_RM_"): | |
| assert flag1 in OTHERMODE1PRESETS | |
| if flag1.endswith("2"): | |
| assert info_dict["othermode1 preset 2"] == "?" | |
| info_dict["othermode1 preset 2"] = flag1 | |
| else: | |
| assert info_dict["othermode1 preset 1"] == "?" | |
| info_dict["othermode1 preset 1"] = flag1 | |
| else: | |
| flag1_group = None | |
| for ( | |
| othermode1flag_group, | |
| othermode1flags, | |
| ) in OTHERMODE1FLAGS_opts.items(): | |
| if flag1 in othermode1flags: | |
| flag1_group = othermode1flag_group | |
| break | |
| assert flag1_group is not None | |
| if flag1_group == "CVG_DST": | |
| assert info_dict["CVG_DST"] == "?" | |
| group_prefix = "CVG_DST_" | |
| elif flag1_group == "ZMODE": | |
| assert info_dict["ZMODE"] == "?" | |
| group_prefix = "ZMODE_" | |
| else: | |
| assert flag1_group not in info_dict | |
| group_prefix = "G_" + flag1_group + "_" | |
| assert flag1.startswith(group_prefix) | |
| info_dict[flag1_group] = flag1[len(group_prefix) :] | |
| else: | |
| assert len(arg1) == 2 | |
| assert arg1[0] in {"GBL_c1", "GBL_c2"} | |
| assert isinstance(arg1[1], Node) | |
| macro_name = arg1[0] | |
| macro_args = arg1[1].as_separated(",") | |
| assert len(macro_args) == 4 | |
| assert all(len(macro_arg) for macro_arg in macro_args) == 1 | |
| macro_args = [macro_arg[0] for macro_arg in macro_args] | |
| assert len(macro_args) == 4 | |
| blender_cycle = 0 if macro_name == "GBL_c1" else 1 | |
| custom_blender[blender_cycle] = macro_args | |
| if custom_blender[0] is None: | |
| info_dict["blender 1"] = "?" | |
| else: | |
| info_dict["blender 1"] = ",".join(custom_blender[0]) | |
| if custom_blender[1] is None: | |
| info_dict["blender 2"] = "?" | |
| else: | |
| info_dict["blender 2"] = ",".join(custom_blender[1]) | |
| if info_dict["othermode1 preset 1"] != "?": | |
| assert info_dict["othermode1 preset 1"] in OTHERMODE1PRESETS_DATA1 | |
| preset_data = OTHERMODE1PRESETS_DATA1[info_dict["othermode1 preset 1"]] | |
| for key, val in preset_data.items(): | |
| if key in OTHERMODE1FLAGS_setorclear: | |
| assert val == "set" | |
| assert info_dict[key] in {"clear", val} | |
| info_dict[key] = val | |
| else: | |
| assert info_dict[key] in {"?", val} | |
| info_dict[key] = val | |
| if info_dict["othermode1 preset 2"] != "?": | |
| assert info_dict["othermode1 preset 2"] in OTHERMODE1PRESETS_DATA2 | |
| preset_data = OTHERMODE1PRESETS_DATA2[info_dict["othermode1 preset 2"]] | |
| for key, val in preset_data.items(): | |
| if key in OTHERMODE1FLAGS_setorclear: | |
| assert val == "set" | |
| assert info_dict[key] in {"clear", val} | |
| info_dict[key] = val | |
| else: | |
| assert info_dict[key] in {"?", val} | |
| info_dict[key] = val | |
| elif setupDL_cmd_name == "gsSPLoadGeometryMode": | |
| ... | |
| if info_dict.keys() != expected_info_dict_keys: | |
| print("unexpected keys:", info_dict.keys() - expected_info_dict_keys) | |
| print("missing keys:", expected_info_dict_keys - info_dict.keys()) | |
| assert False | |
| setupDL_info_dicts[setupDL_index] = info_dict | |
| # setupDL_info_dicts = [setupDL_info_dicts[i] for i in range(len(setupDL_info_dicts))] | |
| print(setupDL_info_dicts) | |
| tsv = [] | |
| cols_key = [ | |
| "gsSPTexture on", | |
| "combiner 1 name", | |
| "combiner 2 name", | |
| "combiner C1 custom", | |
| "combiner C2 custom", | |
| "combiner A1 custom", | |
| "combiner A2 custom", | |
| "AD", | |
| "CD", | |
| "CYC", | |
| "TT", | |
| "CK", | |
| "TC", | |
| "TF", | |
| "TL", | |
| "TD", | |
| "TP", | |
| "PM", | |
| "othermode1 preset 1", | |
| "othermode1 preset 2", | |
| "AA_EN", | |
| "IM_RD", | |
| "FORCE_BL", | |
| "Z_CMP", | |
| "Z_UPD", | |
| "ALPHA_CVG_SEL", | |
| "CVG_X_ALPHA", | |
| "CLR_ON_CVG", | |
| "AC", | |
| "ZS", | |
| "CVG_DST", | |
| "ZMODE", | |
| "blender 1", | |
| "blender 2", | |
| ] | |
| if not (set(cols_key) == expected_info_dict_keys): | |
| print("unexpected keys:", set(cols_key) - expected_info_dict_keys) | |
| print("missing keys:", expected_info_dict_keys - set(cols_key)) | |
| assert set(cols_key) == expected_info_dict_keys | |
| tsv.append("i\t" + "\t".join(cols_key)) | |
| for setupDL_i, info_dict in setupDL_info_dicts.items(): | |
| tsv.append(str(setupDL_i) + "\t" + "\t".join(info_dict[key] for key in cols_key)) | |
| with open("setupDLs_info.tsv", "w") as f: | |
| f.writelines(l + "\n" for l in tsv) | |
| def stripCC(cc: str): | |
| assert cc.startswith("G_CC_") | |
| cc = cc[len("G_CC_") :] | |
| return cc | |
| def stripRM(rm: str): | |
| assert rm.startswith("G_RM_") | |
| rm = rm[len("G_RM_") :] | |
| if rm.endswith("2"): | |
| rm = rm[:-1] | |
| return rm | |
| def mergeRM(rm1: str, rm2: str): | |
| rm1 = stripRM(rm1) | |
| rm2 = stripRM(rm2) | |
| aa = rm1.startswith("AA_") or rm2.startswith("AA_") | |
| if rm1.startswith("AA_"): | |
| rm1 = rm1[len("AA_") :] | |
| if rm2.startswith("AA_"): | |
| rm2 = rm2[len("AA_") :] | |
| zb = rm1.startswith("ZB_") or rm2.startswith("ZB_") | |
| if rm1.startswith("ZB_"): | |
| rm1 = rm1[len("ZB_") :] | |
| if rm2.startswith("ZB_"): | |
| rm2 = rm2[len("ZB_") :] | |
| if rm1 == rm2: | |
| rm = rm1 | |
| else: | |
| rm = rm1 + "__" + rm2 | |
| pre = "" | |
| if aa: | |
| pre += "AA_" | |
| if zb: | |
| pre += "ZB_" | |
| return pre + "_" + rm | |
| def makename(info_dict: dict, lod): | |
| rm_pre = "" | |
| if lod >= 1: | |
| if info_dict["CD"] == "DISABLE": | |
| rm_pre += "CD_DISABLE__" | |
| if info_dict["AC"] == "THRESHOLD": | |
| rm_pre += "ACT_" | |
| if info_dict["CYC"] == "1CYCLE": | |
| if info_dict["combiner 1 name"] == "custom": | |
| name = "skip (1CYC) (c1 custom)" | |
| elif info_dict["combiner 2 name"] == "custom": | |
| name = "skip (1CYC) (c2 custom)" | |
| elif info_dict["othermode1 preset 1"] == "?": | |
| name = "skip (1CYC) (othermode1 preset 1 ?)" | |
| elif info_dict["othermode1 preset 2"] == "?": | |
| name = "skip (1CYC) (othermode1 preset 2 ?)" | |
| else: | |
| assert info_dict["combiner 1 name"] == info_dict["combiner 2 name"] | |
| assert stripRM(info_dict["othermode1 preset 1"]) == stripRM( | |
| info_dict["othermode1 preset 2"] | |
| ) | |
| name = ( | |
| "SETUPDL_" | |
| + stripCC(info_dict["combiner 1 name"]) | |
| + "__" | |
| + rm_pre | |
| + stripRM(info_dict["othermode1 preset 1"]) | |
| ) | |
| elif info_dict["CYC"] == "2CYCLE": | |
| if info_dict["combiner 1 name"] == "custom": | |
| name = "skip (2CYC) (c1 custom)" | |
| elif info_dict["combiner 2 name"] == "custom": | |
| name = "skip (2CYC) (c2 custom)" | |
| elif info_dict["othermode1 preset 1"] == "?": | |
| name = "skip (2CYC) (othermode1 preset 1 ?)" | |
| elif info_dict["othermode1 preset 2"] == "?": | |
| name = "skip (2CYC) (othermode1 preset 2 ?)" | |
| else: | |
| name = "SETUPDL_" | |
| if info_dict["combiner 2 name"] != "G_CC_PASS2": | |
| name += ( | |
| stripCC(info_dict["combiner 1 name"]) | |
| + "__" | |
| + stripCC(info_dict["combiner 2 name"]) | |
| + "__" | |
| ) | |
| else: | |
| name += stripCC(info_dict["combiner 1 name"]) + "__" | |
| name += rm_pre | |
| if info_dict["othermode1 preset 1"] != "G_RM_PASS": | |
| name += mergeRM( | |
| info_dict["othermode1 preset 1"], info_dict["othermode1 preset 2"] | |
| ) | |
| else: | |
| name += stripRM(info_dict["othermode1 preset 2"]) | |
| else: | |
| name = "skip (CYC)" | |
| return name | |
| for i in range(10): | |
| print() | |
| indices_by_name = dict() | |
| names_by_index = dict() | |
| exact_duplicates = dict() | |
| skipped_indices = dict() | |
| go = True | |
| lod = 0 | |
| while go: | |
| go_again = False | |
| for setupDL_i, info_dict in setupDL_info_dicts.items(): | |
| name = makename(info_dict, lod) | |
| if "skip" not in name: | |
| if name in indices_by_name: | |
| is_exact_duplicate = False | |
| for i in indices_by_name[name]: | |
| if setupDL_info_dicts[i] == setupDL_info_dicts[setupDL_i]: | |
| if i not in exact_duplicates: | |
| exact_duplicates[i] = set() | |
| exact_duplicates[i].add(setupDL_i) | |
| if setupDL_i not in exact_duplicates: | |
| exact_duplicates[setupDL_i] = set() | |
| exact_duplicates[setupDL_i].add(i) | |
| is_exact_duplicate = True | |
| if not is_exact_duplicate: | |
| print("go again: ", setupDL_i, indices_by_name[name]) | |
| go_again = True | |
| else: | |
| indices_by_name[name] = set() | |
| indices_by_name[name].add(setupDL_i) | |
| if setupDL_i not in names_by_index: | |
| names_by_index[setupDL_i] = name | |
| else: | |
| skipped_indices[setupDL_i] = name | |
| if not go_again: | |
| go = False | |
| lod += 1 | |
| for inds in indices_by_name.values(): | |
| if len(inds) >= 2: | |
| for ind in inds: | |
| if ind in names_by_index: | |
| del names_by_index[ind] | |
| if lod > 10: | |
| print("Cant make different names") | |
| for name, inds in indices_by_name.items(): | |
| if len(inds) >= 2: | |
| print(name, inds) | |
| exit() | |
| missing_indices = set(setupDL_info_dicts.keys()) | |
| print("exact_duplicates =") | |
| for i, dups in exact_duplicates.items(): | |
| if dups != {i}: | |
| print(i, dups) | |
| missing_indices.discard(i) | |
| print() | |
| print("names_by_index =") | |
| for i, name in names_by_index.items(): | |
| print(i, name) | |
| missing_indices.discard(i) | |
| print() | |
| print("skipped_indices =") | |
| for i, name in skipped_indices.items(): | |
| print(i, name) | |
| missing_indices.discard(i) | |
| print() | |
| print("missing_indices =") | |
| print(missing_indices) | |
| print() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment