From a04e1a79aeede57883bb67c85785850cfe3f2180 Mon Sep 17 00:00:00 2001 From: Francisco Javier Trujillo Mata Date: Fri, 9 Aug 2024 16:53:20 +0200 Subject: [PATCH] Use the same GU Init as official doc --- src/gu/guInternal.h | 10 +- src/gu/sceGuClutLoad.c | 6 +- src/gu/sceGuInit.c | 464 +++++++++++++++++++---------------------- 3 files changed, 221 insertions(+), 259 deletions(-) diff --git a/src/gu/guInternal.h b/src/gu/guInternal.h index a983a42f..8c3b5eb2 100644 --- a/src/gu/guInternal.h +++ b/src/gu/guInternal.h @@ -463,10 +463,10 @@ typedef enum GECommand /* Texture buffer width 7 */ TEX_BUF_WIDTH7 = 0xaf, - /* CLUT address */ - CLUT_ADDR = 0xb0, - /* CLUT address upper */ - CLUT_ADDR_UPPER = 0xb1, + /* CLUT buffer pointer */ + CLUT_BUF_PTR = 0xb0, + /* CLUT buffer width */ + CLUT_BUF_WIDTH = 0xb1, /* Transfer source */ TRANSFER_SRC = 0xb2, @@ -503,7 +503,7 @@ typedef enum GECommand /* Texture format */ TEX_FORMAT = 0xc3, /* Load CLUT */ - LOAD_CLUT = 0xc4, + CLUT_LOAD = 0xc4, /* CLUT format */ CLUT_FORMAT = 0xc5, /* Texture filter */ diff --git a/src/gu/sceGuClutLoad.c b/src/gu/sceGuClutLoad.c index 566ef9b1..97c64074 100644 --- a/src/gu/sceGuClutLoad.c +++ b/src/gu/sceGuClutLoad.c @@ -10,7 +10,7 @@ void sceGuClutLoad(int num_blocks, const void *cbp) { - sendCommandi(CLUT_ADDR, ((unsigned int)cbp) & 0xffffff); - sendCommandi(CLUT_ADDR_UPPER, (((unsigned int)cbp) >> 8) & 0xf0000); - sendCommandi(LOAD_CLUT, num_blocks); + sendCommandi(CLUT_BUF_PTR, ((unsigned int)cbp) & 0xffffff); + sendCommandi(CLUT_BUF_WIDTH, (((unsigned int)cbp) >> 8) & 0xf0000); + sendCommandi(CLUT_LOAD, num_blocks); } diff --git a/src/gu/sceGuInit.c b/src/gu/sceGuInit.c index 062dd4a0..80c5b8f6 100644 --- a/src/gu/sceGuInit.c +++ b/src/gu/sceGuInit.c @@ -18,259 +18,221 @@ // Concrete 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(VADDR), - ZV(IADDR), - ZV(BASE), - ZV(VERTEX_TYPE), - ZV(OFFSET_ADDR), - ZV(REGION1), - ZV(REGION2), - ZV(LIGHTING_ENABLE), + ZV(NOP), + ZV(VADDR), + ZV(IADDR), + ZV(BASE), + ZV(VERTEX_TYPE), + ZV(OFFSET_ADDR), + ZV(REGION1), + ZV(REGION2), + ZV(LIGHTING_ENABLE), + ZV(LIGHT_ENABLE0), + ZV(LIGHT_ENABLE1), + ZV(LIGHT_ENABLE2), + ZV(LIGHT_ENABLE3), + ZV(DEPTH_CLIP_ENABLE), + ZV(CULL_FACE_ENABLE), + ZV(TEXTURE_ENABLE), + ZV(FOG_ENABLE), + ZV(DITHER_ENABLE), + ZV(ALPHA_BLEND_ENABLE), + ZV(ALPHA_TEST_ENABLE), + ZV(Z_TEST_ENABLE), + ZV(STENCIL_TEST_ENABLE), + ZV(ANTI_ALIAS_ENABLE), + ZV(PATCH_CULL_ENABLE), + ZV(COLOR_TEST_ENABLE), + ZV(LOGIC_OP_ENABLE), + ZV(BONE_MATRIX_NUMBER), + ZV(BONE_MATRIX_DATA), + ZV(MORPH_WEIGHT0), + ZV(MORPH_WEIGHT1), + ZV(MORPH_WEIGHT2), + ZV(MORPH_WEIGHT3), + ZV(MORPH_WEIGHT4), + ZV(MORPH_WEIGHT5), + ZV(MORPH_WEIGHT6), + ZV(MORPH_WEIGHT7), + ZV(PATCH_DIVISION), + ZV(PATCH_PRIMITIVE), + ZV(PATCH_FACING), + ZV(WORLD_MATRIX_NUMBER), + ZV(WORLD_MATRIX_DATA), + ZV(VIEW_MATRIX_NUMBER), + ZV(VIEW_MATRIX_DATA), + ZV(PROJ_MATRIX_NUMBER), + ZV(PROJ_MATRIX_DATA), + ZV(TGEN_MATRIX_NUMBER), + ZV(TGEN_MATRIX_DATA), + ZV(VIEWPORT_X_SCALE), + ZV(VIEWPORT_Y_SCALE), + ZV(VIEWPORT_Z_SCALE), + ZV(VIEWPORT_X_CENTER), + ZV(VIEWPORT_Y_CENTER), + ZV(VIEWPORT_Z_CENTER), + ZV(TEX_SCALE_U), + ZV(TEX_SCALE_V), + ZV(TEX_OFFSET_U), + ZV(TEX_OFFSET_V), + ZV(OFFSET_X), + ZV(OFFSET_Y), + ZV(SHADE_MODE), + ZV(NORMAL_REVERSE), + ZV(MATERIAL_COLOR), + ZV(MATERIAL_EMISSIVE), + ZV(AMBIENT_COLOR), + ZV(MATERIAL_DIFFUSE), + ZV(MATERIAL_SPECULAR), + ZV(AMBIENT_ALPHA), + ZV(MATERIAL_SPECULAR_COEF), + ZV(AMBIENT_LIGHT_COLOR), + ZV(AMBIENT_LIGHT_ALPHA), + ZV(LIGHT_MODE), + ZV(LIGHT_TYPE0), + ZV(LIGHT_TYPE1), + ZV(LIGHT_TYPE2), + ZV(LIGHT_TYPE3), + ZV(LIGHT0_X), + ZV(LIGHT0_Y), + ZV(LIGHT0_Z), + ZV(LIGHT1_X), + ZV(LIGHT1_Y), + ZV(LIGHT1_Z), + ZV(LIGHT2_X), + ZV(LIGHT2_Y), + ZV(LIGHT2_Z), + ZV(LIGHT3_X), + ZV(LIGHT3_Y), + ZV(LIGHT3_Z), + ZV(LIGHT0_DIRECTION_X), + ZV(LIGHT0_DIRECTION_Y), + ZV(LIGHT0_DIRECTION_Z), + ZV(LIGHT1_DIRECTION_X), + ZV(LIGHT1_DIRECTION_Y), + ZV(LIGHT1_DIRECTION_Z), + ZV(LIGHT2_DIRECTION_X), + ZV(LIGHT2_DIRECTION_Y), + ZV(LIGHT2_DIRECTION_Z), + ZV(LIGHT3_DIRECTION_X), + ZV(LIGHT3_DIRECTION_Y), + ZV(LIGHT3_DIRECTION_Z), + ZV(LIGHT0_CONSTANT_ATTEN), + ZV(LIGHT0_LINEAR_ATTEN), + ZV(LIGHT0_QUADRATIC_ATTEN), + ZV(LIGHT1_CONSTANT_ATTEN), + ZV(LIGHT1_LINEAR_ATTEN), + ZV(LIGHT1_QUADRATIC_ATTEN), + ZV(LIGHT2_CONSTANT_ATTEN), + ZV(LIGHT2_LINEAR_ATTEN), + ZV(LIGHT2_QUADRATIC_ATTEN), + ZV(LIGHT3_CONSTANT_ATTEN), + ZV(LIGHT3_LINEAR_ATTEN), + ZV(LIGHT3_QUADRATIC_ATTEN), + ZV(LIGHT0_EXPONENT_ATTEN), + ZV(LIGHT1_EXPONENT_ATTEN), + ZV(LIGHT2_EXPONENT_ATTEN), + ZV(LIGHT3_EXPONENT_ATTEN), + ZV(LIGHT0_CUTOFF_ATTEN), + ZV(LIGHT1_CUTOFF_ATTEN), + ZV(LIGHT2_CUTOFF_ATTEN), + ZV(LIGHT3_CUTOFF_ATTEN), + ZV(LIGHT0_AMBIENT), + ZV(LIGHT0_DIFFUSE), + ZV(LIGHT0_SPECULAR), + ZV(LIGHT1_AMBIENT), + ZV(LIGHT1_DIFFUSE), + ZV(LIGHT1_SPECULAR), + ZV(LIGHT2_AMBIENT), + ZV(LIGHT2_DIFFUSE), + ZV(LIGHT2_SPECULAR), + ZV(LIGHT3_AMBIENT), + ZV(LIGHT3_DIFFUSE), + ZV(LIGHT3_SPECULAR), + ZV(CULL), + ZV(FRAME_BUF_PTR), + ZV(FRAME_BUF_WIDTH), + ZV(Z_BUF_PTR), + ZV(Z_BUF_WIDTH), + ZV(TEX_ADDR0), + ZV(TEX_ADDR1), + ZV(TEX_ADDR2), + ZV(TEX_ADDR3), + ZV(TEX_ADDR4), + ZV(TEX_ADDR5), + ZV(TEX_ADDR6), + ZV(TEX_ADDR7), + ZV(TEX_BUF_WIDTH0), + ZV(TEX_BUF_WIDTH1), + ZV(TEX_BUF_WIDTH2), + ZV(TEX_BUF_WIDTH3), + ZV(TEX_BUF_WIDTH4), + ZV(TEX_BUF_WIDTH5), + ZV(TEX_BUF_WIDTH6), + ZV(TEX_BUF_WIDTH7), + ZV(CLUT_BUF_PTR), + ZV(CLUT_BUF_WIDTH), + ZV(TRANSFER_SRC), + ZV(TRANSFER_SRC_W), + ZV(TRANSFER_DST), + ZV(TRANSFER_DST_W), + ZV(TEX_SIZE0), + ZV(TEX_SIZE1), + ZV(TEX_SIZE2), + ZV(TEX_SIZE3), + ZV(TEX_SIZE4), + ZV(TEX_SIZE5), + ZV(TEX_SIZE6), + ZV(TEX_SIZE7), + ZV(TEX_MAP_MODE), + ZV(TEX_SHADE_MAPPING), + ZV(TEX_MODE), + ZV(TEX_FORMAT), + ZV(CLUT_LOAD), + ZV(CLUT_FORMAT), + ZV(TEX_FILTER), + ZV(TEX_WRAP), + ZV(TEX_LEVEL), + ZV(TEX_FUNC), + ZV(TEX_ENV_COLOR), + ZV(TEX_FLUSH), + ZV(TEX_SYNC), + ZV(FOG1), + ZV(FOG2), + ZV(FOG_COLOR), + ZV(TEX_LOD_SLOPE), + ZV(FRAMEBUF_PIX_FORMAT), + ZV(CLEAR_MODE), + ZV(SCISSOR1), + ZV(SCISSOR2), + ZV(MIN_Z), + ZV(MAX_Z), + ZV(COLOR_TEST), + ZV(COLOR_REF), + ZV(COLOR_TESTMASK), + ZV(ALPHA_TEST), + ZV(STENCIL_TEST), + ZV(STENCIL_OP), + ZV(Z_TEST), + ZV(BLEND_MODE), + ZV(BLEND_FIXED_A), + ZV(BLEND_FIXED_B), + ZV(DITH0), + ZV(DITH1), + ZV(DITH2), + ZV(DITH3), + ZV(LOGIC_OP), + ZV(Z_MASK), + ZV(MASK_COLOR), + ZV(MASK_ALPHA), + ZV(TRANSFER_SRC_OFFSET), + ZV(TRANSFER_DST_OFFSET), + ZV(TRANSFER_SIZE), - ZV(LIGHT_ENABLE0), - ZV(LIGHT_ENABLE1), - ZV(LIGHT_ENABLE2), - ZV(LIGHT_ENABLE3), - ZV(DEPTH_CLIP_ENABLE), - ZV(CULL_FACE_ENABLE), - ZV(TEXTURE_ENABLE), - ZV(FOG_ENABLE), - - ZV(DITHER_ENABLE), - ZV(ALPHA_BLEND_ENABLE), - ZV(ALPHA_TEST_ENABLE), - ZV(Z_TEST_ENABLE), - ZV(STENCIL_TEST_ENABLE), - ZV(ANTI_ALIAS_ENABLE), - ZV(PATCH_CULL_ENABLE), - ZV(COLOR_TEST_ENABLE), - - ZV(LOGIC_OP_ENABLE), - ZV(BONE_MATRIX_NUMBER), - ZV(BONE_MATRIX_DATA), - ZV(MORPH_WEIGHT0), - ZV(MORPH_WEIGHT1), - ZV(MORPH_WEIGHT2), - ZV(MORPH_WEIGHT3), - ZV(MORPH_WEIGHT4), - - ZV(MORPH_WEIGHT5), - ZV(MORPH_WEIGHT6), - ZV(MORPH_WEIGHT7), - ZV(PATCH_DIVISION), - ZV(PATCH_PRIMITIVE), - ZV(PATCH_FACING), - ZV(WORLD_MATRIX_NUMBER), - ZV(WORLD_MATRIX_DATA), - - ZV(VIEW_MATRIX_NUMBER), - ZV(VIEW_MATRIX_DATA), - ZV(PROJ_MATRIX_NUMBER), - ZV(PROJ_MATRIX_DATA), - ZV(TGEN_MATRIX_NUMBER), - ZV(TGEN_MATRIX_DATA), - ZV(VIEWPORT_X_SCALE), - ZV(VIEWPORT_Y_SCALE), - - ZV(VIEWPORT_Z_SCALE), - ZV(VIEWPORT_X_CENTER), - ZV(VIEWPORT_Y_CENTER), - ZV(VIEWPORT_Z_CENTER), - ZV(TEX_SCALE_U), - ZV(TEX_SCALE_V), - ZV(TEX_OFFSET_U), - ZV(TEX_OFFSET_V), - - ZV(OFFSET_X), - ZV(OFFSET_Y), - ZV(SHADE_MODE), - ZV(NORMAL_REVERSE), - ZV(MATERIAL_COLOR), - ZV(MATERIAL_EMISSIVE), - ZV(AMBIENT_COLOR), - ZV(MATERIAL_DIFFUSE), - - ZV(MATERIAL_SPECULAR), - ZV(AMBIENT_ALPHA), - ZV(MATERIAL_SPECULAR_COEF), - ZV(AMBIENT_LIGHT_COLOR), - ZV(AMBIENT_LIGHT_ALPHA), - ZV(LIGHT_MODE), - ZV(LIGHT_TYPE0), - ZV(LIGHT_TYPE1), - - ZV(LIGHT_TYPE2), - ZV(LIGHT_TYPE3), - ZV(LIGHT0_X), - ZV(LIGHT0_Y), - ZV(LIGHT0_Z), - ZV(LIGHT1_X), - ZV(LIGHT1_Y), - ZV(LIGHT1_Z), - - ZV(LIGHT2_X), - ZV(LIGHT2_Y), - ZV(LIGHT2_Z), - ZV(LIGHT3_X), - ZV(LIGHT3_Y), - ZV(LIGHT3_Z), - ZV(LIGHT0_DIRECTION_X), - ZV(LIGHT0_DIRECTION_Y), - - ZV(LIGHT0_DIRECTION_Z), - ZV(LIGHT1_DIRECTION_X), - ZV(LIGHT1_DIRECTION_Y), - ZV(LIGHT1_DIRECTION_Z), - ZV(LIGHT2_DIRECTION_X), - ZV(LIGHT2_DIRECTION_Y), - ZV(LIGHT2_DIRECTION_Z), - ZV(LIGHT3_DIRECTION_X), - - ZV(LIGHT3_DIRECTION_Y), - ZV(LIGHT3_DIRECTION_Z), - ZV(LIGHT0_CONSTANT_ATTEN), - ZV(LIGHT0_LINEAR_ATTEN), - ZV(LIGHT0_QUADRATIC_ATTEN), - ZV(LIGHT1_CONSTANT_ATTEN), - ZV(LIGHT1_LINEAR_ATTEN), - ZV(LIGHT1_QUADRATIC_ATTEN), - - ZV(LIGHT2_CONSTANT_ATTEN), - ZV(LIGHT2_LINEAR_ATTEN), - ZV(LIGHT2_QUADRATIC_ATTEN), - ZV(LIGHT3_CONSTANT_ATTEN), - ZV(LIGHT3_LINEAR_ATTEN), - ZV(LIGHT3_QUADRATIC_ATTEN), - ZV(LIGHT0_EXPONENT_ATTEN), - ZV(LIGHT1_EXPONENT_ATTEN), - - ZV(LIGHT2_EXPONENT_ATTEN), - ZV(LIGHT3_EXPONENT_ATTEN), - ZV(LIGHT0_CUTOFF_ATTEN), - ZV(LIGHT1_CUTOFF_ATTEN), - ZV(LIGHT2_CUTOFF_ATTEN), - ZV(LIGHT3_CUTOFF_ATTEN), - ZV(LIGHT0_AMBIENT), - ZV(LIGHT0_DIFFUSE), - - ZV(LIGHT0_SPECULAR), - ZV(LIGHT1_AMBIENT), - ZV(LIGHT1_DIFFUSE), - ZV(LIGHT1_SPECULAR), - ZV(LIGHT2_AMBIENT), - ZV(LIGHT2_DIFFUSE), - ZV(LIGHT2_SPECULAR), - ZV(LIGHT3_AMBIENT), - - ZV(LIGHT3_DIFFUSE), - ZV(LIGHT3_SPECULAR), - ZV(CULL), - ZV(FRAME_BUF_PTR), - ZV(FRAME_BUF_WIDTH), - ZV(Z_BUF_PTR), - ZV(Z_BUF_WIDTH), - ZV(TEX_ADDR0), - - ZV(TEX_ADDR1), - ZV(TEX_ADDR2), - ZV(TEX_ADDR3), - ZV(TEX_ADDR4), - ZV(TEX_ADDR5), - ZV(TEX_ADDR6), - ZV(TEX_ADDR7), - CV(TEX_BUF_WIDTH0, ((512 * 512) + 4)), - - ZV(TEX_BUF_WIDTH1), - ZV(TEX_BUF_WIDTH2), - ZV(TEX_BUF_WIDTH3), - ZV(TEX_BUF_WIDTH4), - ZV(TEX_BUF_WIDTH5), - ZV(TEX_BUF_WIDTH6), - ZV(TEX_BUF_WIDTH7), - ZV(CLUT_ADDR), - - ZV(CLUT_ADDR_UPPER), - ZV(TRANSFER_SRC), - ZV(TRANSFER_SRC_W), - ZV(TRANSFER_DST), - ZV(TRANSFER_DST_W), - CV(TEX_SIZE0, 257), - ZV(TEX_SIZE1), - ZV(TEX_SIZE2), - - ZV(TEX_SIZE3), - ZV(TEX_SIZE4), - ZV(TEX_SIZE5), - ZV(TEX_SIZE6), - ZV(TEX_SIZE7), - ZV(TEX_MAP_MODE), - ZV(TEX_SHADE_MAPPING), - ZV(TEX_MODE), - - ZV(TEX_FORMAT), - ZV(LOAD_CLUT), - ZV(CLUT_FORMAT), - ZV(TEX_FILTER), - ZV(TEX_WRAP), - ZV(TEX_LEVEL), - ZV(TEX_FUNC), - ZV(TEX_ENV_COLOR), - - ZV(TEX_FLUSH), - ZV(TEX_SYNC), - ZV(FOG1), - ZV(FOG2), - ZV(FOG_COLOR), - ZV(TEX_LOD_SLOPE), - ZV(FRAMEBUF_PIX_FORMAT), - ZV(CLEAR_MODE), - - ZV(SCISSOR1), - ZV(SCISSOR2), - ZV(MIN_Z), - ZV(MAX_Z), - ZV(COLOR_TEST), - ZV(COLOR_REF), - ZV(COLOR_TESTMASK), - ZV(ALPHA_TEST), - - ZV(STENCIL_TEST), - ZV(STENCIL_OP), - ZV(Z_TEST), - ZV(BLEND_MODE), - ZV(BLEND_FIXED_A), - ZV(BLEND_FIXED_B), - ZV(DITH0), - ZV(DITH1), - - ZV(DITH2), - ZV(DITH3), - ZV(LOGIC_OP), - ZV(Z_MASK), - ZV(MASK_COLOR), - ZV(MASK_ALPHA), - ZV(TRANSFER_SRC_OFFSET), - ZV(TRANSFER_DST_OFFSET), - - 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(END), - ZV(NOP), - ZV(NOP), + ZV(FINISH), + ZV(END), }; void sceGuInit(void)