diff --git a/hw/xbox/nv2a/pgraph/pgraph.c b/hw/xbox/nv2a/pgraph/pgraph.c index 0f17fde184..f0cc6d8ace 100644 --- a/hw/xbox/nv2a/pgraph/pgraph.c +++ b/hw/xbox/nv2a/pgraph/pgraph.c @@ -1710,6 +1710,7 @@ DEF_METHOD(NV097, SET_POINT_SIZE) DEF_METHOD_INC(NV097, SET_PROJECTION_MATRIX) { int slot = (method - NV097_SET_PROJECTION_MATRIX) / 4; + NV2A_DPRINTF("NV097_SET_PROJECTION_MATRIX[%d] 0x%X\n", slot, parameter); // pg->projection_matrix[slot] = *(float*)¶meter; unsigned int row = NV_IGRAPH_XF_XFCTX_PMAT0 + slot/4; pg->vsh_constants[row][slot%4] = parameter; @@ -1719,6 +1720,7 @@ DEF_METHOD_INC(NV097, SET_PROJECTION_MATRIX) DEF_METHOD_INC(NV097, SET_MODEL_VIEW_MATRIX) { int slot = (method - NV097_SET_MODEL_VIEW_MATRIX) / 4; + NV2A_DPRINTF("NV097_SET_MODEL_VIEW_MATRIX[%d] 0x%X\n", slot, parameter); unsigned int matnum = slot / 16; unsigned int entry = slot % 16; unsigned int row = NV_IGRAPH_XF_XFCTX_MMAT0 + matnum*8 + entry/4; @@ -1729,6 +1731,8 @@ DEF_METHOD_INC(NV097, SET_MODEL_VIEW_MATRIX) DEF_METHOD_INC(NV097, SET_INVERSE_MODEL_VIEW_MATRIX) { int slot = (method - NV097_SET_INVERSE_MODEL_VIEW_MATRIX) / 4; + NV2A_DPRINTF("NV097_SET_INVERSE_MODEL_VIEW_MATRIX[%d] 0x%X\n", slot, + parameter); unsigned int matnum = slot / 16; unsigned int entry = slot % 16; unsigned int row = NV_IGRAPH_XF_XFCTX_IMMAT0 + matnum*8 + entry/4; @@ -1739,6 +1743,7 @@ DEF_METHOD_INC(NV097, SET_INVERSE_MODEL_VIEW_MATRIX) DEF_METHOD_INC(NV097, SET_COMPOSITE_MATRIX) { int slot = (method - NV097_SET_COMPOSITE_MATRIX) / 4; + NV2A_DPRINTF("NV097_SET_COMPOSITE_MATRIX[%d] 0x%X\n", slot, parameter); unsigned int row = NV_IGRAPH_XF_XFCTX_CMAT0 + slot/4; pg->vsh_constants[row][slot%4] = parameter; pg->vsh_constants_dirty[row] = true; @@ -1747,6 +1752,7 @@ DEF_METHOD_INC(NV097, SET_COMPOSITE_MATRIX) DEF_METHOD_INC(NV097, SET_TEXTURE_MATRIX) { int slot = (method - NV097_SET_TEXTURE_MATRIX) / 4; + NV2A_DPRINTF("NV097_SET_TEXTURE_MATRIX[%d] 0x%X\n", slot, parameter); unsigned int tex = slot / 16; unsigned int entry = slot % 16; unsigned int row = NV_IGRAPH_XF_XFCTX_T0MAT + tex*8 + entry/4; @@ -1757,6 +1763,7 @@ DEF_METHOD_INC(NV097, SET_TEXTURE_MATRIX) DEF_METHOD_INC(NV097, SET_FOG_PARAMS) { int slot = (method - NV097_SET_FOG_PARAMS) / 4; + NV2A_DPRINTF("NV097_SET_FOG_PARAMS[%d] 0x%X\n", slot, parameter); if (slot < 2) { pgraph_reg_w(pg, NV_PGRAPH_FOGPARAM0 + slot*4, parameter); } else { @@ -1771,6 +1778,7 @@ DEF_METHOD_INC(NV097, SET_FOG_PARAMS) DEF_METHOD_INC(NV097, SET_TEXGEN_PLANE_S) { int slot = (method - NV097_SET_TEXGEN_PLANE_S) / 4; + NV2A_DPRINTF("NV097_SET_TEXGEN_PLANE_S[%d] 0x%X\n", slot, parameter); unsigned int tex = slot / 16; unsigned int entry = slot % 16; unsigned int row = NV_IGRAPH_XF_XFCTX_TG0MAT + tex*8 + entry/4; @@ -1787,6 +1795,7 @@ DEF_METHOD(NV097, SET_TEXGEN_VIEW_MODEL) DEF_METHOD_INC(NV097, SET_FOG_PLANE) { int slot = (method - NV097_SET_FOG_PLANE) / 4; + NV2A_DPRINTF("NV097_SET_FOG_PLANE[%d] 0x%X\n", slot, parameter); pg->vsh_constants[NV_IGRAPH_XF_XFCTX_FOG][slot] = parameter; pg->vsh_constants_dirty[NV_IGRAPH_XF_XFCTX_FOG] = true; } @@ -1794,6 +1803,7 @@ DEF_METHOD_INC(NV097, SET_FOG_PLANE) DEF_METHOD_INC(NV097, SET_SCENE_AMBIENT_COLOR) { int slot = (method - NV097_SET_SCENE_AMBIENT_COLOR) / 4; + NV2A_DPRINTF("NV097_SET_SCENE_AMBIENT_COLOR[%d] 0x%X\n", slot, parameter); // ?? pg->ltctxa[NV_IGRAPH_XF_LTCTXA_FR_AMB][slot] = parameter; pg->ltctxa_dirty[NV_IGRAPH_XF_LTCTXA_FR_AMB] = true; @@ -1802,6 +1812,7 @@ DEF_METHOD_INC(NV097, SET_SCENE_AMBIENT_COLOR) DEF_METHOD_INC(NV097, SET_VIEWPORT_OFFSET) { int slot = (method - NV097_SET_VIEWPORT_OFFSET) / 4; + NV2A_DPRINTF("NV097_SET_VIEWPORT_OFFSET[%d] 0x%X\n", slot, parameter); pg->vsh_constants[NV_IGRAPH_XF_XFCTX_VPOFF][slot] = parameter; pg->vsh_constants_dirty[NV_IGRAPH_XF_XFCTX_VPOFF] = true; } @@ -1809,12 +1820,14 @@ DEF_METHOD_INC(NV097, SET_VIEWPORT_OFFSET) DEF_METHOD_INC(NV097, SET_POINT_PARAMS) { int slot = (method - NV097_SET_POINT_PARAMS) / 4; + NV2A_DPRINTF("NV097_SET_POINT_PARAMS[%d] 0x%X\n", slot, parameter); pg->point_params[slot] = *(float *)¶meter; /* FIXME: Where? */ } DEF_METHOD_INC(NV097, SET_EYE_POSITION) { int slot = (method - NV097_SET_EYE_POSITION) / 4; + NV2A_DPRINTF("NV097_SET_EYE_POSITION[%d] 0x%X\n", slot, parameter); pg->vsh_constants[NV_IGRAPH_XF_XFCTX_EYEP][slot] = parameter; pg->vsh_constants_dirty[NV_IGRAPH_XF_XFCTX_EYEP] = true; } @@ -1822,30 +1835,35 @@ DEF_METHOD_INC(NV097, SET_EYE_POSITION) DEF_METHOD_INC(NV097, SET_COMBINER_FACTOR0) { int slot = (method - NV097_SET_COMBINER_FACTOR0) / 4; + NV2A_DPRINTF("NV097_SET_COMBINER_FACTOR0[%d] 0x%X\n", slot, parameter); pgraph_reg_w(pg, NV_PGRAPH_COMBINEFACTOR0 + slot*4, parameter); } DEF_METHOD_INC(NV097, SET_COMBINER_FACTOR1) { int slot = (method - NV097_SET_COMBINER_FACTOR1) / 4; + NV2A_DPRINTF("NV097_SET_COMBINER_FACTOR1[%d] 0x%X\n", slot, parameter); pgraph_reg_w(pg, NV_PGRAPH_COMBINEFACTOR1 + slot*4, parameter); } DEF_METHOD_INC(NV097, SET_COMBINER_ALPHA_OCW) { int slot = (method - NV097_SET_COMBINER_ALPHA_OCW) / 4; + NV2A_DPRINTF("NV097_SET_COMBINER_ALPHA_OCW[%d] 0x%X\n", slot, parameter); pgraph_reg_w(pg, NV_PGRAPH_COMBINEALPHAO0 + slot*4, parameter); } DEF_METHOD_INC(NV097, SET_COMBINER_COLOR_ICW) { int slot = (method - NV097_SET_COMBINER_COLOR_ICW) / 4; + NV2A_DPRINTF("SET_COMBINER_COLOR_ICW[%d] 0x%X\n", slot, parameter); pgraph_reg_w(pg, NV_PGRAPH_COMBINECOLORI0 + slot*4, parameter); } DEF_METHOD_INC(NV097, SET_VIEWPORT_SCALE) { int slot = (method - NV097_SET_VIEWPORT_SCALE) / 4; + NV2A_DPRINTF("SET_VIEWPORT_SCALE[%d] 0x%X\n", slot, parameter); pg->vsh_constants[NV_IGRAPH_XF_XFCTX_VPSCL][slot] = parameter; pg->vsh_constants_dirty[NV_IGRAPH_XF_XFCTX_VPSCL] = true; } @@ -1856,6 +1874,8 @@ DEF_METHOD_INC(NV097, SET_TRANSFORM_PROGRAM) int program_load = PG_GET_MASK(NV_PGRAPH_CHEOPS_OFFSET, NV_PGRAPH_CHEOPS_OFFSET_PROG_LD_PTR); + NV2A_DPRINTF("NV097_SET_TRANSFORM_PROGRAM[%d][%d] 0x%X\n", program_load, + slot, parameter); assert(program_load < NV2A_MAX_TRANSFORM_PROGRAM_LENGTH); pg->program_data[program_load][slot%4] = parameter; @@ -1872,6 +1892,8 @@ DEF_METHOD_INC(NV097, SET_TRANSFORM_CONSTANT) int slot = (method - NV097_SET_TRANSFORM_CONSTANT) / 4; int const_load = PG_GET_MASK(NV_PGRAPH_CHEOPS_OFFSET, NV_PGRAPH_CHEOPS_OFFSET_CONST_LD_PTR); + NV2A_DPRINTF("NV097_SET_TRANSFORM_CONSTANT[%d][%d] 0x%X\n", const_load, + slot % 4, parameter); assert(const_load < NV2A_VERTEXSHADER_CONSTANTS); // VertexShaderConstant *constant = &pg->constants[const_load]; @@ -1888,6 +1910,7 @@ DEF_METHOD_INC(NV097, SET_TRANSFORM_CONSTANT) DEF_METHOD_INC(NV097, SET_VERTEX3F) { int slot = (method - NV097_SET_VERTEX3F) / 4; + NV2A_DPRINTF("NV097_SET_VERTEX3F[%d] 0x%X\n", slot, parameter); VertexAttribute *attribute = &pg->vertex_attributes[NV2A_VERTEX_ATTR_POSITION]; pgraph_allocate_inline_buffer_vertices(pg, NV2A_VERTEX_ATTR_POSITION); @@ -1902,6 +1925,7 @@ DEF_METHOD_INC(NV097, SET_VERTEX3F) DEF_METHOD_INC(NV097, SET_BACK_LIGHT_AMBIENT_COLOR) { int slot = (method - NV097_SET_BACK_LIGHT_AMBIENT_COLOR) / 4; + NV2A_DPRINTF("NV097_SET_BACK_LIGHT_AMBIENT_COLOR 0x%X\n", parameter); unsigned int part = NV097_SET_BACK_LIGHT_AMBIENT_COLOR / 4 + slot % 16; slot /= 16; /* [Light index] */ assert(slot < 8); @@ -1940,55 +1964,65 @@ DEF_METHOD_INC(NV097, SET_LIGHT_AMBIENT_COLOR) switch(part * 4) { case NV097_SET_LIGHT_AMBIENT_COLOR ... NV097_SET_LIGHT_AMBIENT_COLOR + 8: + NV2A_DPRINTF("NV097_SET_LIGHT_AMBIENT_COLOR 0x%X\n", parameter); part -= NV097_SET_LIGHT_AMBIENT_COLOR / 4; pg->ltctxb[NV_IGRAPH_XF_LTCTXB_L0_AMB + slot*6][part] = parameter; pg->ltctxb_dirty[NV_IGRAPH_XF_LTCTXB_L0_AMB + slot*6] = true; break; case NV097_SET_LIGHT_DIFFUSE_COLOR ... NV097_SET_LIGHT_DIFFUSE_COLOR + 8: + NV2A_DPRINTF("NV097_SET_LIGHT_DIFFUSE_COLOR 0x%X\n", parameter); part -= NV097_SET_LIGHT_DIFFUSE_COLOR / 4; pg->ltctxb[NV_IGRAPH_XF_LTCTXB_L0_DIF + slot*6][part] = parameter; pg->ltctxb_dirty[NV_IGRAPH_XF_LTCTXB_L0_DIF + slot*6] = true; break; case NV097_SET_LIGHT_SPECULAR_COLOR ... NV097_SET_LIGHT_SPECULAR_COLOR + 8: + NV2A_DPRINTF("NV097_SET_LIGHT_SPECULAR_COLOR 0x%X\n", parameter); part -= NV097_SET_LIGHT_SPECULAR_COLOR / 4; pg->ltctxb[NV_IGRAPH_XF_LTCTXB_L0_SPC + slot*6][part] = parameter; pg->ltctxb_dirty[NV_IGRAPH_XF_LTCTXB_L0_SPC + slot*6] = true; break; case NV097_SET_LIGHT_LOCAL_RANGE: + NV2A_DPRINTF("NV097_SET_LIGHT_LOCAL_RANGE 0x%X\n", parameter); pg->ltc1[NV_IGRAPH_XF_LTC1_r0 + slot][0] = parameter; pg->ltc1_dirty[NV_IGRAPH_XF_LTC1_r0 + slot] = true; break; case NV097_SET_LIGHT_INFINITE_HALF_VECTOR ... NV097_SET_LIGHT_INFINITE_HALF_VECTOR + 8: + NV2A_DPRINTF("NV097_SET_LIGHT_INFINITE_HALF_VECTOR 0x%X\n", parameter); part -= NV097_SET_LIGHT_INFINITE_HALF_VECTOR / 4; pg->light_infinite_half_vector[slot][part] = *(float*)¶meter; break; case NV097_SET_LIGHT_INFINITE_DIRECTION ... NV097_SET_LIGHT_INFINITE_DIRECTION + 8: + NV2A_DPRINTF("NV097_SET_LIGHT_INFINITE_DIRECTION 0x%X\n", parameter); part -= NV097_SET_LIGHT_INFINITE_DIRECTION / 4; pg->light_infinite_direction[slot][part] = *(float*)¶meter; break; case NV097_SET_LIGHT_SPOT_FALLOFF ... NV097_SET_LIGHT_SPOT_FALLOFF + 8: + NV2A_DPRINTF("NV097_SET_LIGHT_SPOT_FALLOFF 0x%X\n", parameter); part -= NV097_SET_LIGHT_SPOT_FALLOFF / 4; pg->ltctxa[NV_IGRAPH_XF_LTCTXA_L0_K + slot*2][part] = parameter; pg->ltctxa_dirty[NV_IGRAPH_XF_LTCTXA_L0_K + slot*2] = true; break; case NV097_SET_LIGHT_SPOT_DIRECTION ... NV097_SET_LIGHT_SPOT_DIRECTION + 12: + NV2A_DPRINTF("NV097_SET_LIGHT_SPOT_DIRECTION 0x%X\n", parameter); part -= NV097_SET_LIGHT_SPOT_DIRECTION / 4; pg->ltctxa[NV_IGRAPH_XF_LTCTXA_L0_SPT + slot*2][part] = parameter; pg->ltctxa_dirty[NV_IGRAPH_XF_LTCTXA_L0_SPT + slot*2] = true; break; case NV097_SET_LIGHT_LOCAL_POSITION ... NV097_SET_LIGHT_LOCAL_POSITION + 8: + NV2A_DPRINTF("NV097_SET_LIGHT_LOCAL_POSITION 0x%X\n", parameter); part -= NV097_SET_LIGHT_LOCAL_POSITION / 4; pg->light_local_position[slot][part] = *(float*)¶meter; break; case NV097_SET_LIGHT_LOCAL_ATTENUATION ... NV097_SET_LIGHT_LOCAL_ATTENUATION + 8: + NV2A_DPRINTF("NV097_SET_LIGHT_LOCAL_ATTENUATION 0x%X\n", parameter); part -= NV097_SET_LIGHT_LOCAL_ATTENUATION / 4; pg->light_local_attenuation[slot][part] = *(float*)¶meter; break; @@ -2001,6 +2035,7 @@ DEF_METHOD_INC(NV097, SET_LIGHT_AMBIENT_COLOR) DEF_METHOD_INC(NV097, SET_VERTEX4F) { int slot = (method - NV097_SET_VERTEX4F) / 4; + NV2A_DPRINTF("NV097_SET_VERTEX4F[%d] 0x%X\n", slot, parameter); VertexAttribute *attribute = &pg->vertex_attributes[NV2A_VERTEX_ATTR_POSITION]; pgraph_allocate_inline_buffer_vertices(pg, NV2A_VERTEX_ATTR_POSITION); @@ -2220,6 +2255,8 @@ DEF_METHOD_INC(NV097, SET_SPECULAR_COLOR4UB) DEF_METHOD_INC(NV097, SET_VERTEX_DATA_ARRAY_FORMAT) { int slot = (method - NV097_SET_VERTEX_DATA_ARRAY_FORMAT) / 4; + NV2A_DPRINTF("NV097_SET_VERTEX_DATA_ARRAY_FORMAT[%d] 0x%X\n", slot, + parameter); VertexAttribute *attr = &pg->vertex_attributes[slot]; attr->format = GET_MASK(parameter, NV097_SET_VERTEX_DATA_ARRAY_FORMAT_TYPE); attr->count = GET_MASK(parameter, NV097_SET_VERTEX_DATA_ARRAY_FORMAT_SIZE); @@ -2267,6 +2304,8 @@ DEF_METHOD_INC(NV097, SET_VERTEX_DATA_ARRAY_FORMAT) DEF_METHOD_INC(NV097, SET_VERTEX_DATA_ARRAY_OFFSET) { int slot = (method - NV097_SET_VERTEX_DATA_ARRAY_OFFSET) / 4; + NV2A_DPRINTF("NV097_SET_VERTEX_DATA_ARRAY_OFFSET[%d] 0x%X\n", slot, + parameter); pg->vertex_attributes[slot].dma_select = parameter & 0x80000000; pg->vertex_attributes[slot].offset = parameter & 0x7fffffff; @@ -2495,6 +2534,7 @@ void pgraph_check_within_begin_end_block(PGRAPHState *pg) DEF_METHOD_NON_INC(NV097, ARRAY_ELEMENT16) { + NV2A_DPRINTF("ARRAY_ELEMENT16 0x%X\n", parameter); pgraph_check_within_begin_end_block(pg); if (pg->draw_arrays_length) { @@ -2508,6 +2548,7 @@ DEF_METHOD_NON_INC(NV097, ARRAY_ELEMENT16) DEF_METHOD_NON_INC(NV097, ARRAY_ELEMENT32) { + NV2A_DPRINTF("ARRAY_ELEMENT32 0x%X\n", parameter); pgraph_check_within_begin_end_block(pg); if (pg->draw_arrays_length) { @@ -2561,6 +2602,7 @@ DEF_METHOD(NV097, DRAW_ARRAYS) DEF_METHOD_NON_INC(NV097, INLINE_ARRAY) { + NV2A_DPRINTF("INLINE_ARRAY 0x%X\n", parameter); pgraph_check_within_begin_end_block(pg); assert(pg->inline_array_length < NV2A_MAX_BATCH_LENGTH); pg->inline_array[pg->inline_array_length++] = parameter; @@ -2577,6 +2619,8 @@ DEF_METHOD_INC(NV097, SET_VERTEX_DATA2F_M) int slot = (method - NV097_SET_VERTEX_DATA2F_M) / 4; unsigned int part = slot % 2; slot /= 2; + NV2A_DPRINTF("NV097_SET_VERTEX_DATA2F_M[%d][%d] 0x%X\n", slot, part, + parameter); VertexAttribute *attribute = &pg->vertex_attributes[slot]; pgraph_allocate_inline_buffer_vertices(pg, slot); attribute->inline_value[part] = *(float*)¶meter; @@ -2593,6 +2637,8 @@ DEF_METHOD_INC(NV097, SET_VERTEX_DATA4F_M) int slot = (method - NV097_SET_VERTEX_DATA4F_M) / 4; unsigned int part = slot % 4; slot /= 4; + NV2A_DPRINTF("NV097_SET_VERTEX_DATA4F_M[%d][%d] 0x%X\n", slot, part, + parameter); VertexAttribute *attribute = &pg->vertex_attributes[slot]; pgraph_allocate_inline_buffer_vertices(pg, slot); attribute->inline_value[part] = *(float*)¶meter; @@ -2604,6 +2650,7 @@ DEF_METHOD_INC(NV097, SET_VERTEX_DATA4F_M) DEF_METHOD_INC(NV097, SET_VERTEX_DATA2S) { int slot = (method - NV097_SET_VERTEX_DATA2S) / 4; + NV2A_DPRINTF("NV097_SET_VERTEX_DATA2S[%d] 0x%X\n", slot, parameter); VertexAttribute *attribute = &pg->vertex_attributes[slot]; pgraph_allocate_inline_buffer_vertices(pg, slot); attribute->inline_value[0] = (float)(int16_t)(parameter & 0xFFFF); @@ -2618,6 +2665,7 @@ DEF_METHOD_INC(NV097, SET_VERTEX_DATA2S) DEF_METHOD_INC(NV097, SET_VERTEX_DATA4UB) { int slot = (method - NV097_SET_VERTEX_DATA4UB) / 4; + NV2A_DPRINTF("NV097_SET_VERTEX_DATA4UB[%d] 0x%X\n", slot, parameter); VertexAttribute *attribute = &pg->vertex_attributes[slot]; pgraph_allocate_inline_buffer_vertices(pg, slot); attribute->inline_value[0] = (parameter & 0xFF) / 255.0; @@ -2634,6 +2682,8 @@ DEF_METHOD_INC(NV097, SET_VERTEX_DATA4S_M) int slot = (method - NV097_SET_VERTEX_DATA4S_M) / 4; unsigned int part = slot % 2; slot /= 2; + NV2A_DPRINTF("NV097_SET_VERTEX_DATA4S_M[%d][%d] 0x%X\n", slot, part, + parameter); VertexAttribute *attribute = &pg->vertex_attributes[slot]; pgraph_allocate_inline_buffer_vertices(pg, slot);