Use the same GU Init as official doc

This commit is contained in:
Francisco Javier Trujillo Mata
2024-08-09 16:53:20 +02:00
parent 0b50f4cebb
commit a04e1a79ae
3 changed files with 221 additions and 259 deletions

View File

@@ -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 */

View File

@@ -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);
}

View File

@@ -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)