Merge pull request #226 from fjtrujy/improveSCEGUInit

Use the same GU Init as official doc
This commit is contained in:
Francisco Javier Trujillo Mata
2024-08-12 19:03:56 +02:00
committed by GitHub
3 changed files with 221 additions and 259 deletions

View File

@@ -463,10 +463,10 @@ typedef enum GECommand
/* Texture buffer width 7 */ /* Texture buffer width 7 */
TEX_BUF_WIDTH7 = 0xaf, TEX_BUF_WIDTH7 = 0xaf,
/* CLUT address */ /* CLUT buffer pointer */
CLUT_ADDR = 0xb0, CLUT_BUF_PTR = 0xb0,
/* CLUT address upper */ /* CLUT buffer width */
CLUT_ADDR_UPPER = 0xb1, CLUT_BUF_WIDTH = 0xb1,
/* Transfer source */ /* Transfer source */
TRANSFER_SRC = 0xb2, TRANSFER_SRC = 0xb2,
@@ -503,7 +503,7 @@ typedef enum GECommand
/* Texture format */ /* Texture format */
TEX_FORMAT = 0xc3, TEX_FORMAT = 0xc3,
/* Load CLUT */ /* Load CLUT */
LOAD_CLUT = 0xc4, CLUT_LOAD = 0xc4,
/* CLUT format */ /* CLUT format */
CLUT_FORMAT = 0xc5, CLUT_FORMAT = 0xc5,
/* Texture filter */ /* Texture filter */

View File

@@ -10,7 +10,7 @@
void sceGuClutLoad(int num_blocks, const void *cbp) void sceGuClutLoad(int num_blocks, const void *cbp)
{ {
sendCommandi(CLUT_ADDR, ((unsigned int)cbp) & 0xffffff); sendCommandi(CLUT_BUF_PTR, ((unsigned int)cbp) & 0xffffff);
sendCommandi(CLUT_ADDR_UPPER, (((unsigned int)cbp) >> 8) & 0xf0000); sendCommandi(CLUT_BUF_WIDTH, (((unsigned int)cbp) >> 8) & 0xf0000);
sendCommandi(LOAD_CLUT, num_blocks); sendCommandi(CLUT_LOAD, num_blocks);
} }

View File

@@ -18,8 +18,9 @@
// Concrete value // Concrete value
#define CV(command, value) (uint32_t)(command << 24 | value) #define CV(command, value) (uint32_t)(command << 24 | value)
unsigned int __attribute__((aligned(16))) ge_init_list[] = static unsigned int __attribute__((aligned(16))) ge_init_list[] =
{ {
ZV(NOP),
ZV(VADDR), ZV(VADDR),
ZV(IADDR), ZV(IADDR),
ZV(BASE), ZV(BASE),
@@ -28,7 +29,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(REGION1), ZV(REGION1),
ZV(REGION2), ZV(REGION2),
ZV(LIGHTING_ENABLE), ZV(LIGHTING_ENABLE),
ZV(LIGHT_ENABLE0), ZV(LIGHT_ENABLE0),
ZV(LIGHT_ENABLE1), ZV(LIGHT_ENABLE1),
ZV(LIGHT_ENABLE2), ZV(LIGHT_ENABLE2),
@@ -37,7 +37,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(CULL_FACE_ENABLE), ZV(CULL_FACE_ENABLE),
ZV(TEXTURE_ENABLE), ZV(TEXTURE_ENABLE),
ZV(FOG_ENABLE), ZV(FOG_ENABLE),
ZV(DITHER_ENABLE), ZV(DITHER_ENABLE),
ZV(ALPHA_BLEND_ENABLE), ZV(ALPHA_BLEND_ENABLE),
ZV(ALPHA_TEST_ENABLE), ZV(ALPHA_TEST_ENABLE),
@@ -46,7 +45,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(ANTI_ALIAS_ENABLE), ZV(ANTI_ALIAS_ENABLE),
ZV(PATCH_CULL_ENABLE), ZV(PATCH_CULL_ENABLE),
ZV(COLOR_TEST_ENABLE), ZV(COLOR_TEST_ENABLE),
ZV(LOGIC_OP_ENABLE), ZV(LOGIC_OP_ENABLE),
ZV(BONE_MATRIX_NUMBER), ZV(BONE_MATRIX_NUMBER),
ZV(BONE_MATRIX_DATA), ZV(BONE_MATRIX_DATA),
@@ -55,7 +53,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(MORPH_WEIGHT2), ZV(MORPH_WEIGHT2),
ZV(MORPH_WEIGHT3), ZV(MORPH_WEIGHT3),
ZV(MORPH_WEIGHT4), ZV(MORPH_WEIGHT4),
ZV(MORPH_WEIGHT5), ZV(MORPH_WEIGHT5),
ZV(MORPH_WEIGHT6), ZV(MORPH_WEIGHT6),
ZV(MORPH_WEIGHT7), ZV(MORPH_WEIGHT7),
@@ -64,7 +61,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(PATCH_FACING), ZV(PATCH_FACING),
ZV(WORLD_MATRIX_NUMBER), ZV(WORLD_MATRIX_NUMBER),
ZV(WORLD_MATRIX_DATA), ZV(WORLD_MATRIX_DATA),
ZV(VIEW_MATRIX_NUMBER), ZV(VIEW_MATRIX_NUMBER),
ZV(VIEW_MATRIX_DATA), ZV(VIEW_MATRIX_DATA),
ZV(PROJ_MATRIX_NUMBER), ZV(PROJ_MATRIX_NUMBER),
@@ -73,7 +69,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(TGEN_MATRIX_DATA), ZV(TGEN_MATRIX_DATA),
ZV(VIEWPORT_X_SCALE), ZV(VIEWPORT_X_SCALE),
ZV(VIEWPORT_Y_SCALE), ZV(VIEWPORT_Y_SCALE),
ZV(VIEWPORT_Z_SCALE), ZV(VIEWPORT_Z_SCALE),
ZV(VIEWPORT_X_CENTER), ZV(VIEWPORT_X_CENTER),
ZV(VIEWPORT_Y_CENTER), ZV(VIEWPORT_Y_CENTER),
@@ -82,7 +77,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(TEX_SCALE_V), ZV(TEX_SCALE_V),
ZV(TEX_OFFSET_U), ZV(TEX_OFFSET_U),
ZV(TEX_OFFSET_V), ZV(TEX_OFFSET_V),
ZV(OFFSET_X), ZV(OFFSET_X),
ZV(OFFSET_Y), ZV(OFFSET_Y),
ZV(SHADE_MODE), ZV(SHADE_MODE),
@@ -91,7 +85,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(MATERIAL_EMISSIVE), ZV(MATERIAL_EMISSIVE),
ZV(AMBIENT_COLOR), ZV(AMBIENT_COLOR),
ZV(MATERIAL_DIFFUSE), ZV(MATERIAL_DIFFUSE),
ZV(MATERIAL_SPECULAR), ZV(MATERIAL_SPECULAR),
ZV(AMBIENT_ALPHA), ZV(AMBIENT_ALPHA),
ZV(MATERIAL_SPECULAR_COEF), ZV(MATERIAL_SPECULAR_COEF),
@@ -100,7 +93,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(LIGHT_MODE), ZV(LIGHT_MODE),
ZV(LIGHT_TYPE0), ZV(LIGHT_TYPE0),
ZV(LIGHT_TYPE1), ZV(LIGHT_TYPE1),
ZV(LIGHT_TYPE2), ZV(LIGHT_TYPE2),
ZV(LIGHT_TYPE3), ZV(LIGHT_TYPE3),
ZV(LIGHT0_X), ZV(LIGHT0_X),
@@ -109,7 +101,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(LIGHT1_X), ZV(LIGHT1_X),
ZV(LIGHT1_Y), ZV(LIGHT1_Y),
ZV(LIGHT1_Z), ZV(LIGHT1_Z),
ZV(LIGHT2_X), ZV(LIGHT2_X),
ZV(LIGHT2_Y), ZV(LIGHT2_Y),
ZV(LIGHT2_Z), ZV(LIGHT2_Z),
@@ -118,7 +109,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(LIGHT3_Z), ZV(LIGHT3_Z),
ZV(LIGHT0_DIRECTION_X), ZV(LIGHT0_DIRECTION_X),
ZV(LIGHT0_DIRECTION_Y), ZV(LIGHT0_DIRECTION_Y),
ZV(LIGHT0_DIRECTION_Z), ZV(LIGHT0_DIRECTION_Z),
ZV(LIGHT1_DIRECTION_X), ZV(LIGHT1_DIRECTION_X),
ZV(LIGHT1_DIRECTION_Y), ZV(LIGHT1_DIRECTION_Y),
@@ -127,7 +117,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(LIGHT2_DIRECTION_Y), ZV(LIGHT2_DIRECTION_Y),
ZV(LIGHT2_DIRECTION_Z), ZV(LIGHT2_DIRECTION_Z),
ZV(LIGHT3_DIRECTION_X), ZV(LIGHT3_DIRECTION_X),
ZV(LIGHT3_DIRECTION_Y), ZV(LIGHT3_DIRECTION_Y),
ZV(LIGHT3_DIRECTION_Z), ZV(LIGHT3_DIRECTION_Z),
ZV(LIGHT0_CONSTANT_ATTEN), ZV(LIGHT0_CONSTANT_ATTEN),
@@ -136,7 +125,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(LIGHT1_CONSTANT_ATTEN), ZV(LIGHT1_CONSTANT_ATTEN),
ZV(LIGHT1_LINEAR_ATTEN), ZV(LIGHT1_LINEAR_ATTEN),
ZV(LIGHT1_QUADRATIC_ATTEN), ZV(LIGHT1_QUADRATIC_ATTEN),
ZV(LIGHT2_CONSTANT_ATTEN), ZV(LIGHT2_CONSTANT_ATTEN),
ZV(LIGHT2_LINEAR_ATTEN), ZV(LIGHT2_LINEAR_ATTEN),
ZV(LIGHT2_QUADRATIC_ATTEN), ZV(LIGHT2_QUADRATIC_ATTEN),
@@ -145,7 +133,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(LIGHT3_QUADRATIC_ATTEN), ZV(LIGHT3_QUADRATIC_ATTEN),
ZV(LIGHT0_EXPONENT_ATTEN), ZV(LIGHT0_EXPONENT_ATTEN),
ZV(LIGHT1_EXPONENT_ATTEN), ZV(LIGHT1_EXPONENT_ATTEN),
ZV(LIGHT2_EXPONENT_ATTEN), ZV(LIGHT2_EXPONENT_ATTEN),
ZV(LIGHT3_EXPONENT_ATTEN), ZV(LIGHT3_EXPONENT_ATTEN),
ZV(LIGHT0_CUTOFF_ATTEN), ZV(LIGHT0_CUTOFF_ATTEN),
@@ -154,7 +141,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(LIGHT3_CUTOFF_ATTEN), ZV(LIGHT3_CUTOFF_ATTEN),
ZV(LIGHT0_AMBIENT), ZV(LIGHT0_AMBIENT),
ZV(LIGHT0_DIFFUSE), ZV(LIGHT0_DIFFUSE),
ZV(LIGHT0_SPECULAR), ZV(LIGHT0_SPECULAR),
ZV(LIGHT1_AMBIENT), ZV(LIGHT1_AMBIENT),
ZV(LIGHT1_DIFFUSE), ZV(LIGHT1_DIFFUSE),
@@ -163,7 +149,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(LIGHT2_DIFFUSE), ZV(LIGHT2_DIFFUSE),
ZV(LIGHT2_SPECULAR), ZV(LIGHT2_SPECULAR),
ZV(LIGHT3_AMBIENT), ZV(LIGHT3_AMBIENT),
ZV(LIGHT3_DIFFUSE), ZV(LIGHT3_DIFFUSE),
ZV(LIGHT3_SPECULAR), ZV(LIGHT3_SPECULAR),
ZV(CULL), ZV(CULL),
@@ -172,7 +157,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(Z_BUF_PTR), ZV(Z_BUF_PTR),
ZV(Z_BUF_WIDTH), ZV(Z_BUF_WIDTH),
ZV(TEX_ADDR0), ZV(TEX_ADDR0),
ZV(TEX_ADDR1), ZV(TEX_ADDR1),
ZV(TEX_ADDR2), ZV(TEX_ADDR2),
ZV(TEX_ADDR3), ZV(TEX_ADDR3),
@@ -180,8 +164,7 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(TEX_ADDR5), ZV(TEX_ADDR5),
ZV(TEX_ADDR6), ZV(TEX_ADDR6),
ZV(TEX_ADDR7), ZV(TEX_ADDR7),
CV(TEX_BUF_WIDTH0, ((512 * 512) + 4)), ZV(TEX_BUF_WIDTH0),
ZV(TEX_BUF_WIDTH1), ZV(TEX_BUF_WIDTH1),
ZV(TEX_BUF_WIDTH2), ZV(TEX_BUF_WIDTH2),
ZV(TEX_BUF_WIDTH3), ZV(TEX_BUF_WIDTH3),
@@ -189,17 +172,15 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(TEX_BUF_WIDTH5), ZV(TEX_BUF_WIDTH5),
ZV(TEX_BUF_WIDTH6), ZV(TEX_BUF_WIDTH6),
ZV(TEX_BUF_WIDTH7), ZV(TEX_BUF_WIDTH7),
ZV(CLUT_ADDR), ZV(CLUT_BUF_PTR),
ZV(CLUT_BUF_WIDTH),
ZV(CLUT_ADDR_UPPER),
ZV(TRANSFER_SRC), ZV(TRANSFER_SRC),
ZV(TRANSFER_SRC_W), ZV(TRANSFER_SRC_W),
ZV(TRANSFER_DST), ZV(TRANSFER_DST),
ZV(TRANSFER_DST_W), ZV(TRANSFER_DST_W),
CV(TEX_SIZE0, 257), ZV(TEX_SIZE0),
ZV(TEX_SIZE1), ZV(TEX_SIZE1),
ZV(TEX_SIZE2), ZV(TEX_SIZE2),
ZV(TEX_SIZE3), ZV(TEX_SIZE3),
ZV(TEX_SIZE4), ZV(TEX_SIZE4),
ZV(TEX_SIZE5), ZV(TEX_SIZE5),
@@ -208,16 +189,14 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(TEX_MAP_MODE), ZV(TEX_MAP_MODE),
ZV(TEX_SHADE_MAPPING), ZV(TEX_SHADE_MAPPING),
ZV(TEX_MODE), ZV(TEX_MODE),
ZV(TEX_FORMAT), ZV(TEX_FORMAT),
ZV(LOAD_CLUT), ZV(CLUT_LOAD),
ZV(CLUT_FORMAT), ZV(CLUT_FORMAT),
ZV(TEX_FILTER), ZV(TEX_FILTER),
ZV(TEX_WRAP), ZV(TEX_WRAP),
ZV(TEX_LEVEL), ZV(TEX_LEVEL),
ZV(TEX_FUNC), ZV(TEX_FUNC),
ZV(TEX_ENV_COLOR), ZV(TEX_ENV_COLOR),
ZV(TEX_FLUSH), ZV(TEX_FLUSH),
ZV(TEX_SYNC), ZV(TEX_SYNC),
ZV(FOG1), ZV(FOG1),
@@ -226,7 +205,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(TEX_LOD_SLOPE), ZV(TEX_LOD_SLOPE),
ZV(FRAMEBUF_PIX_FORMAT), ZV(FRAMEBUF_PIX_FORMAT),
ZV(CLEAR_MODE), ZV(CLEAR_MODE),
ZV(SCISSOR1), ZV(SCISSOR1),
ZV(SCISSOR2), ZV(SCISSOR2),
ZV(MIN_Z), ZV(MIN_Z),
@@ -235,7 +213,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(COLOR_REF), ZV(COLOR_REF),
ZV(COLOR_TESTMASK), ZV(COLOR_TESTMASK),
ZV(ALPHA_TEST), ZV(ALPHA_TEST),
ZV(STENCIL_TEST), ZV(STENCIL_TEST),
ZV(STENCIL_OP), ZV(STENCIL_OP),
ZV(Z_TEST), ZV(Z_TEST),
@@ -244,7 +221,6 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(BLEND_FIXED_B), ZV(BLEND_FIXED_B),
ZV(DITH0), ZV(DITH0),
ZV(DITH1), ZV(DITH1),
ZV(DITH2), ZV(DITH2),
ZV(DITH3), ZV(DITH3),
ZV(LOGIC_OP), ZV(LOGIC_OP),
@@ -253,24 +229,10 @@ unsigned int __attribute__((aligned(16))) ge_init_list[] =
ZV(MASK_ALPHA), ZV(MASK_ALPHA),
ZV(TRANSFER_SRC_OFFSET), ZV(TRANSFER_SRC_OFFSET),
ZV(TRANSFER_DST_OFFSET), ZV(TRANSFER_DST_OFFSET),
ZV(TRANSFER_SIZE), ZV(TRANSFER_SIZE),
ZV(TRANSFER_OUT_SIZE),
ZV(TRANSFER_OUT_FORMAT),
ZV(VERTEX_WEIGHT),
ZV(VERTEX_WEIGHT_ADDR),
ZV(VERTEX_WEIGHT_SIZE),
ZV(VERTEX_WEIGHT_TYPE),
ZV(VERTEX_WEIGHT_MODEL),
ZV(VERTEX_WEIGHT_NORMALIZE),
ZV(VERTEX_WEIGHT_OFFSET),
ZV(VERTEX_WEIGHT_SCALE),
ZV(FINISH), ZV(FINISH),
ZV(END), ZV(END),
ZV(NOP),
ZV(NOP),
}; };
void sceGuInit(void) void sceGuInit(void)