diff --git a/hw/xbox/nv2a/pgraph.c b/hw/xbox/nv2a/pgraph.c index 35c7a676a6..d058646e14 100644 --- a/hw/xbox/nv2a/pgraph.c +++ b/hw/xbox/nv2a/pgraph.c @@ -694,7 +694,7 @@ static const struct { }, #define DEF_METHOD_RANGE(gclass, name, range) \ [METHOD_ADDR_TO_INDEX(METHOD_ADDR(gclass, name)) \ - ... METHOD_ADDR_TO_INDEX(METHOD_ADDR(gclass, name) + range)] = \ + ... METHOD_ADDR_TO_INDEX(METHOD_ADDR(gclass, name) + 4*range - 1)] = \ { \ METHOD_ADDR(gclass, name), \ METHOD_NAME_STR(gclass, name), \ @@ -741,7 +741,7 @@ static const struct { METHOD_ADDR(gclass, name) + 4; #define DEF_METHOD_RANGE(gclass, name, range) \ static const size_t METHOD_RANGE_END_NAME(gclass, name) = \ - METHOD_ADDR(gclass, name) + range + 4; + METHOD_ADDR(gclass, name) + 4*range; #define DEF_METHOD_CASE_4_OFFSET(gclass, name, offset, stride) /* drop */ #define DEF_METHOD_CASE_4(gclass, name, stride) \ static const size_t METHOD_RANGE_END_NAME(gclass, name) = \ diff --git a/hw/xbox/nv2a/pgraph_methods.h b/hw/xbox/nv2a/pgraph_methods.h index 1fe0a543be..bd058e2717 100644 --- a/hw/xbox/nv2a/pgraph_methods.h +++ b/hw/xbox/nv2a/pgraph_methods.h @@ -22,7 +22,7 @@ DEF_METHOD(NV097, SET_SURFACE_FORMAT) DEF_METHOD(NV097, SET_SURFACE_PITCH) DEF_METHOD(NV097, SET_SURFACE_COLOR_OFFSET) DEF_METHOD(NV097, SET_SURFACE_ZETA_OFFSET) -DEF_METHOD_RANGE(NV097, SET_COMBINER_ALPHA_ICW, 28) +DEF_METHOD_RANGE(NV097, SET_COMBINER_ALPHA_ICW, 8) DEF_METHOD(NV097, SET_COMBINER_SPECULAR_FOG_CW0) DEF_METHOD(NV097, SET_COMBINER_SPECULAR_FOG_CW1) DEF_METHOD_CASE_4(NV097, SET_TEXTURE_ADDRESS, 64) @@ -33,8 +33,8 @@ DEF_METHOD(NV097, SET_FOG_GEN_MODE) DEF_METHOD(NV097, SET_FOG_ENABLE) DEF_METHOD(NV097, SET_FOG_COLOR) DEF_METHOD(NV097, SET_WINDOW_CLIP_TYPE) -DEF_METHOD_RANGE(NV097, SET_WINDOW_CLIP_HORIZONTAL, 0x1c) -DEF_METHOD_RANGE(NV097, SET_WINDOW_CLIP_VERTICAL, 0x1c) +DEF_METHOD_RANGE(NV097, SET_WINDOW_CLIP_HORIZONTAL, 8) +DEF_METHOD_RANGE(NV097, SET_WINDOW_CLIP_VERTICAL, 8) DEF_METHOD(NV097, SET_ALPHA_TEST_ENABLE) DEF_METHOD(NV097, SET_BLEND_ENABLE) DEF_METHOD(NV097, SET_CULL_FACE_ENABLE) @@ -75,7 +75,7 @@ DEF_METHOD(NV097, SET_CLIP_MAX) DEF_METHOD(NV097, SET_CULL_FACE) DEF_METHOD(NV097, SET_FRONT_FACE) DEF_METHOD(NV097, SET_NORMALIZATION_ENABLE) -DEF_METHOD_RANGE(NV097, SET_MATERIAL_EMISSION, 8) +DEF_METHOD_RANGE(NV097, SET_MATERIAL_EMISSION, 3) DEF_METHOD(NV097, SET_LIGHT_ENABLE_MASK) DEF_METHOD_CASE_4(NV097, SET_TEXGEN_S, 16) DEF_METHOD_CASE_4(NV097, SET_TEXGEN_T, 16) @@ -83,38 +83,38 @@ DEF_METHOD_CASE_4(NV097, SET_TEXGEN_R, 16) DEF_METHOD_CASE_4(NV097, SET_TEXGEN_Q, 16) DEF_METHOD_CASE_4(NV097, SET_TEXTURE_MATRIX_ENABLE, 4) DEF_METHOD(NV097, SET_POINT_SIZE) -DEF_METHOD_RANGE(NV097, SET_PROJECTION_MATRIX, 0x3c) -DEF_METHOD_RANGE(NV097, SET_MODEL_VIEW_MATRIX, 0xfc) -DEF_METHOD_RANGE(NV097, SET_INVERSE_MODEL_VIEW_MATRIX, 0xfc) -DEF_METHOD_RANGE(NV097, SET_COMPOSITE_MATRIX, 0x3c) -DEF_METHOD_RANGE(NV097, SET_TEXTURE_MATRIX, 0xfc) -DEF_METHOD_RANGE(NV097, SET_FOG_PARAMS, 8) -DEF_METHOD_RANGE(NV097, SET_TEXGEN_PLANE_S, 0xfc) +DEF_METHOD_RANGE(NV097, SET_PROJECTION_MATRIX, 16) +DEF_METHOD_RANGE(NV097, SET_MODEL_VIEW_MATRIX, 16*4) +DEF_METHOD_RANGE(NV097, SET_INVERSE_MODEL_VIEW_MATRIX, 16*4) +DEF_METHOD_RANGE(NV097, SET_COMPOSITE_MATRIX, 16) +DEF_METHOD_RANGE(NV097, SET_TEXTURE_MATRIX, 16*4) +DEF_METHOD_RANGE(NV097, SET_FOG_PARAMS, 3) +DEF_METHOD_RANGE(NV097, SET_TEXGEN_PLANE_S, 4*4*4) DEF_METHOD(NV097, SET_TEXGEN_VIEW_MODEL) -DEF_METHOD_RANGE(NV097, SET_FOG_PLANE, 12) -DEF_METHOD_RANGE(NV097, SET_SCENE_AMBIENT_COLOR, 8) -DEF_METHOD_RANGE(NV097, SET_VIEWPORT_OFFSET, 12) -DEF_METHOD_RANGE(NV097, SET_POINT_PARAMS, 32) -DEF_METHOD_RANGE(NV097, SET_EYE_POSITION, 12) -DEF_METHOD_RANGE(NV097, SET_COMBINER_FACTOR0, 28) -DEF_METHOD_RANGE(NV097, SET_COMBINER_FACTOR1, 28) -DEF_METHOD_RANGE(NV097, SET_COMBINER_ALPHA_OCW, 28) -DEF_METHOD_RANGE(NV097, SET_COMBINER_COLOR_ICW, 28) -DEF_METHOD_RANGE(NV097, SET_VIEWPORT_SCALE, 12) -DEF_METHOD_RANGE(NV097, SET_TRANSFORM_PROGRAM, 0x7c) -DEF_METHOD_RANGE(NV097, SET_TRANSFORM_CONSTANT, 0x7c) -DEF_METHOD_RANGE(NV097, SET_VERTEX3F, 8) -DEF_METHOD_RANGE(NV097, SET_BACK_LIGHT_AMBIENT_COLOR, 0x1C8) -DEF_METHOD_RANGE(NV097, SET_LIGHT_AMBIENT_COLOR, 0x38C) -DEF_METHOD_RANGE(NV097, SET_VERTEX4F, 12) -DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA_ARRAY_FORMAT, 0x3c) -DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA_ARRAY_OFFSET, 0x3c) +DEF_METHOD_RANGE(NV097, SET_FOG_PLANE, 4) +DEF_METHOD_RANGE(NV097, SET_SCENE_AMBIENT_COLOR, 3) +DEF_METHOD_RANGE(NV097, SET_VIEWPORT_OFFSET, 4) +DEF_METHOD_RANGE(NV097, SET_POINT_PARAMS, 8) +DEF_METHOD_RANGE(NV097, SET_EYE_POSITION, 4) +DEF_METHOD_RANGE(NV097, SET_COMBINER_FACTOR0, 8) +DEF_METHOD_RANGE(NV097, SET_COMBINER_FACTOR1, 8) +DEF_METHOD_RANGE(NV097, SET_COMBINER_ALPHA_OCW, 8) +DEF_METHOD_RANGE(NV097, SET_COMBINER_COLOR_ICW, 8) +DEF_METHOD_RANGE(NV097, SET_VIEWPORT_SCALE, 4) +DEF_METHOD_RANGE(NV097, SET_TRANSFORM_PROGRAM, 32) +DEF_METHOD_RANGE(NV097, SET_TRANSFORM_CONSTANT, 32) +DEF_METHOD_RANGE(NV097, SET_VERTEX3F, 3) +DEF_METHOD_RANGE(NV097, SET_BACK_LIGHT_AMBIENT_COLOR, 8*16) +DEF_METHOD_RANGE(NV097, SET_LIGHT_AMBIENT_COLOR, 8*32) +DEF_METHOD_RANGE(NV097, SET_VERTEX4F, 4) +DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA_ARRAY_FORMAT, 16) +DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA_ARRAY_OFFSET, 16) DEF_METHOD(NV097, SET_LOGIC_OP_ENABLE) DEF_METHOD(NV097, SET_LOGIC_OP) DEF_METHOD(NV097, CLEAR_REPORT_VALUE) DEF_METHOD(NV097, SET_ZPASS_PIXEL_COUNT_ENABLE) DEF_METHOD(NV097, GET_REPORT) -DEF_METHOD_RANGE(NV097, SET_EYE_DIRECTION, 8) +DEF_METHOD_RANGE(NV097, SET_EYE_DIRECTION, 3) DEF_METHOD(NV097, SET_BEGIN_END) DEF_METHOD_CASE_4(NV097, SET_TEXTURE_OFFSET, 64) DEF_METHOD_CASE_4(NV097, SET_TEXTURE_FORMAT, 64) @@ -134,12 +134,12 @@ DEF_METHOD(NV097, ARRAY_ELEMENT16) DEF_METHOD(NV097, ARRAY_ELEMENT32) DEF_METHOD(NV097, DRAW_ARRAYS) DEF_METHOD(NV097, INLINE_ARRAY) -DEF_METHOD_RANGE(NV097, SET_EYE_VECTOR, 8) -DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA2F_M, 0x7c) -DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA4F_M, 0xfc) -DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA2S, 0x3c) -DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA4UB, 0x3c) -DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA4S_M, 0x7c) +DEF_METHOD_RANGE(NV097, SET_EYE_VECTOR, 3) +DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA2F_M, 32) +DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA4F_M, 64) +DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA2S, 16) +DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA4UB, 16) +DEF_METHOD_RANGE(NV097, SET_VERTEX_DATA4S_M, 32) DEF_METHOD(NV097, SET_SEMAPHORE_OFFSET) DEF_METHOD(NV097, BACK_END_WRITE_SEMAPHORE_RELEASE) DEF_METHOD(NV097, SET_ZSTENCIL_CLEAR_VALUE) @@ -147,9 +147,9 @@ DEF_METHOD(NV097, SET_COLOR_CLEAR_VALUE) DEF_METHOD(NV097, CLEAR_SURFACE) DEF_METHOD(NV097, SET_CLEAR_RECT_HORIZONTAL) DEF_METHOD(NV097, SET_CLEAR_RECT_VERTICAL) -DEF_METHOD_RANGE(NV097, SET_SPECULAR_FOG_FACTOR, 4) +DEF_METHOD_RANGE(NV097, SET_SPECULAR_FOG_FACTOR, 2) DEF_METHOD(NV097, SET_SHADER_CLIP_PLANE_MODE) -DEF_METHOD_RANGE(NV097, SET_COMBINER_COLOR_OCW, 28) +DEF_METHOD_RANGE(NV097, SET_COMBINER_COLOR_OCW, 8) DEF_METHOD(NV097, SET_COMBINER_CONTROL) DEF_METHOD(NV097, SET_SHADOW_ZSLOPE_THRESHOLD) DEF_METHOD(NV097, SET_SHADER_STAGE_PROGRAM)