X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plugins%2Fgpu_unai%2Fgpulib_if.cpp;h=e9a199c2a0b4dbd4a1c399bd7e21c0e3ed358229;hb=03fc8e9043246716a36a152750c9c69cce301d73;hp=de16721437689b932cc514837a616ef59c442f5d;hpb=2857d72e4ca743bba3cf55e298949e24d97dff02;p=pcsx_rearmed.git diff --git a/plugins/gpu_unai/gpulib_if.cpp b/plugins/gpu_unai/gpulib_if.cpp index de167214..e9a199c2 100644 --- a/plugins/gpu_unai/gpulib_if.cpp +++ b/plugins/gpu_unai/gpulib_if.cpp @@ -23,6 +23,7 @@ #include #include #include "../gpulib/gpu.h" +#include "arm_features.h" #define u8 uint8_t #define s8 int8_t @@ -164,14 +165,14 @@ void renderer_notify_res_change(void) extern const unsigned char cmd_lengths[256]; -int do_cmd_list(unsigned int *list, int list_len, int *last_cmd) +int do_cmd_list(u32 *list, int list_len, int *last_cmd) { - unsigned int cmd = 0, len, i; - unsigned int *list_start = list; - unsigned int *list_end = list + list_len; + u32 cmd = 0, len, i; + u32 *list_start = list; + u32 *list_end = list + list_len; linesInterlace = force_interlace; -#ifndef __ARM_ARCH_7A__ /* XXX */ +#ifdef HAVE_PRE_ARMV7 /* XXX */ linesInterlace |= gpu.status.interlace; #endif @@ -307,7 +308,11 @@ int do_cmd_list(unsigned int *list, int list_len, int *last_cmd) gpuDrawLF(gpuPixelDrivers [ (Blending_Mode | Masking | Blending | (PixelMSB>>3)) >> 1]); num_vertexes++; - if((*list_position & 0xf000f000) == 0x50005000 || list_position >= list_end) + if(list_position >= list_end) { + cmd = -1; + goto breakloop; + } + if((*list_position & 0xf000f000) == 0x50005000) break; } @@ -338,7 +343,11 @@ int do_cmd_list(unsigned int *list, int list_len, int *last_cmd) gpuDrawLG(gpuPixelDrivers [ (Blending_Mode | Masking | Blending | (PixelMSB>>3)) >> 1]); num_vertexes++; - if((*list_position & 0xf000f000) == 0x50005000 || list_position >= list_end) + if(list_position >= list_end) { + cmd = -1; + goto breakloop; + } + if((*list_position & 0xf000f000) == 0x50005000) break; } @@ -482,8 +491,8 @@ int do_cmd_list(unsigned int *list, int list_len, int *last_cmd) } case 0xE5: { const u32 temp = PacketBuffer.U4[0]; - DrawingOffset[0] = ((long)temp<<(32-11))>>(32-11); - DrawingOffset[1] = ((long)temp<<(32-22))>>(32-11); + DrawingOffset[0] = ((s32)temp<<(32-11))>>(32-11); + DrawingOffset[1] = ((s32)temp<<(32-22))>>(32-11); gpu.ex_regs[5] = temp; break; }