Senryoku / Deecy

Experimental Dreamcast emulator written in Zig
3 stars 0 forks source link

Soulcalibur weird single vertex strips #12

Open Senryoku opened 7 months ago

Senryoku commented 7 months ago

Soulcalibur sometimes pushes single vertex with the end of strip flag, very easy to trigger by playing Taki. I don't know if ignoring them in the renderer actually causes any issue, but this might be the symptom of another issue, as the vertex parameters look fine otherwise.

Some logs:

Previous Command: 
holly.ParameterControlWord{ .obj_control = holly.ObjControl{ .uv_16bit = 0, .gouraud = 0, .offset = 0, .texture = 0, .col_type = holly.ColorType.PackedColor, .volume = 0, .shadow = 0, ._ = 0 }, .group_control = holly.GroupControl{ .user_clip = holly.UserClipUsage.Disable, .strip_len = 0, ._ = 0, .en = 0 }, .list_type = holly.ListType.Opaque, ._ = 0, .end_of_strip = 1, .parameter_type = holly.ParameterType.VertexParameter }
(Command Buffer, only the first 8 u32 were actually used)
  F0000000
  4310651F
  43941F1A
  3E3E7CD9
  3EBD0F5F
  3EDF6000
  FFFFFF96
  00191D00
  43F00000
  45505000
  00000000
  43F00000
  FF000000
  00000000
  00000000
  00000000

Previous Vertex Parameter:

holly.VertexParameter{ .Type3 = holly.VertexParameter_3{
 .parameter_control_word = holly.ParameterControlWord{ .obj_control = holly.ObjControl{ .uv_16bit = 0, .gouraud = 0, .offset = 0, .texture = 0, .col_type = holly.ColorType.PackedColor, .volume = 0, .shadow = 0, ._ = 0 }, .group_control = holly.GroupControl{ .user_clip = holly.UserClipUsage.Disable, .strip_len = 0, ._ = 0, .en = 0 }, .list_type = holly.ListType.Opaque, ._ = 0, .end_of_strip = 1, .parameter_type = holly.ParameterType.VertexParameter },
.x = 1.44395004e+02, .y = 2.96242980e+02, .z = 1.86023131e-01, .u = 3.69257897e-01, .v = 4.36279296e-01, .base_color = holly.PackedColor{ .b = 150, .g = 255, .r = 255, .a = 255 }, .offset_color = holly.PackedColor{ .b = 0, .g = 29, .r = 25, .a = 0 } } }

First Problematic Vertex Parameter:

holly.VertexParameter{ .Type3 = holly.VertexParameter_3{
 .parameter_control_word = holly.ParameterControlWord{ .obj_control = holly.ObjControl{ .uv_16bit = 0, .gouraud = 0, .offset = 0, .texture = 0, .col_type = holly.ColorType.PackedColor, .volume = 0, .shadow = 0, ._ = 0 }, .group_control = holly.GroupControl{ .user_clip = holly.UserClipUsage.Disable, .strip_len = 0, ._ = 0, .en = 0 }, .list_type = holly.ListType.Opaque, ._ = 0, .end_of_strip = 1, .parameter_type = holly.ParameterType.VertexParameter },
.x = 1.51825042e+02, .y = 2.94236816e+02, .z = 1.84038162e-01, .u = 4.08437669e-01, .v = 4.36279296e-01, .base_color = holly.PackedColor{ .b = 149, .g = 255, .r = 255, .a = 255 }, .offset_color = holly.PackedColor{ .b = 0, .g = 27, .r = 24, .a = 0 } } }

Next Vertex Parameter:

holly.VertexParameter{ .Type3 = holly.VertexParameter_3{
 .parameter_control_word = holly.ParameterControlWord{ .obj_control = holly.ObjControl{ .uv_16bit = 0, .gouraud = 0, .offset = 0, .texture = 0, .col_type = holly.ColorType.PackedColor, .volume = 0, .shadow = 0, ._ = 0 }, .group_control = holly.GroupControl{ .user_clip = holly.UserClipUsage.Disable, .strip_len = 0, ._ = 0, .en = 0 }, .list_type = holly.ListType.Opaque, ._ = 0, .end_of_strip = 1, .parameter_type = holly.ParameterType.VertexParameter },
.x = 1.44395004e+02, .y = 2.96242980e+02, .z = 1.86023131e-01, .u = 3.69257897e-01, .v = 4.36279296e-01, .base_color = holly.PackedColor{ .b = 150, .g = 255, .r = 255, .a = 255 }, .offset_color = holly.PackedColor{ .b = 0, .g = 29, .r = 25, .a = 0 } } }