diff options
author | notaz | 2012-07-18 02:29:25 +0300 |
---|---|---|
committer | notaz | 2012-07-18 23:56:54 +0300 |
commit | c8eaa363acbafb84840b8d29b532ae1225d6d61c (patch) | |
tree | 8fea4e040140f1eb5720a907b7305bb489316dcc /plugins/gpu_neon | |
parent | b8d961effdd3fc2a00dc073cae06b6d937682420 (diff) | |
download | pcsx_rearmed-c8eaa363acbafb84840b8d29b532ae1225d6d61c.tar.gz pcsx_rearmed-c8eaa363acbafb84840b8d29b532ae1225d6d61c.tar.bz2 pcsx_rearmed-c8eaa363acbafb84840b8d29b532ae1225d6d61c.zip |
psx_gpu: change line parsing
fixes some Tenka problems
Diffstat (limited to 'plugins/gpu_neon')
-rw-r--r-- | plugins/gpu_neon/psx_gpu/psx_gpu_parse.c | 39 |
1 files changed, 18 insertions, 21 deletions
diff --git a/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c b/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c index e409aa5..920c638 100644 --- a/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c +++ b/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c @@ -412,31 +412,29 @@ u32 gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size, u32 *last_command) vertexes[1].x = (xy & 0xFFFF) + psx_gpu->offset_x; vertexes[1].y = (xy >> 16) + psx_gpu->offset_y; + xy = *list_position; while(1) { - xy = *list_position; - - if((xy & 0xF000F000) == 0x50005000) - break; - vertexes[0] = vertexes[1]; vertexes[1].x = (xy & 0xFFFF) + psx_gpu->offset_x; vertexes[1].y = (xy >> 16) + psx_gpu->offset_y; + render_line(psx_gpu, vertexes, current_command, list[0]); + list_position++; num_vertexes++; - if(list_position > list_end) + if(list_position >= list_end) break; - render_line(psx_gpu, vertexes, current_command, list[0]); + xy = *list_position; + if((xy & 0xF000F000) == 0x50005000) + break; } - if(num_vertexes > 2) - command_length += (num_vertexes - 2); - - break; + command_length += (num_vertexes - 2); + break; } case 0x50 ... 0x57: @@ -470,12 +468,9 @@ u32 gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size, u32 *last_command) vertexes[1].x = (xy & 0xFFFF) + psx_gpu->offset_x; vertexes[1].y = (xy >> 16) + psx_gpu->offset_y; + color = list_position[0]; while(1) { - color = list_position[0]; - if((color & 0xF000F000) == 0x50005000) - break; - xy = list_position[1]; vertexes[0] = vertexes[1]; @@ -486,19 +481,21 @@ u32 gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size, u32 *last_command) vertexes[1].x = (xy & 0xFFFF) + psx_gpu->offset_x; vertexes[1].y = (xy >> 16) + psx_gpu->offset_y; + render_line(psx_gpu, vertexes, current_command, 0); + list_position += 2; num_vertexes++; - if(list_position > list_end) + if(list_position >= list_end) break; - render_line(psx_gpu, vertexes, current_command, 0); + color = list_position[0]; + if((color & 0xF000F000) == 0x50005000) + break; } - if(num_vertexes > 2) - command_length += ((num_vertexes - 2) * 2); - - break; + command_length += ((num_vertexes - 2) * 2); + break; } case 0x60 ... 0x63: |