X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plugins%2Fgpu_unai%2Fgpulib_if.cpp;h=087bb42501e65c39833c0ed9cc7a765f8c24f13d;hb=1bedbd6f272bd83af54c80eb0089ae1d6f4561a2;hp=d66589523bf6a4c5792b366633b2b9b8a003c282;hpb=42a261f1abb21841442aa3e366201565b3143480;p=pcsx_rearmed.git diff --git a/plugins/gpu_unai/gpulib_if.cpp b/plugins/gpu_unai/gpulib_if.cpp index d6658952..087bb425 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 @@ -111,12 +112,10 @@ static u32 GPU_GP1; // GPU Raster Macros #define GPU_RGB16(rgb) ((((rgb)&0xF80000)>>9)|(((rgb)&0xF800)>>6)|(((rgb)&0xF8)>>3)) -#define GPU_EXPANDSIGN_POLY(x) (((s32)(x)<<20)>>20) -//#define GPU_EXPANDSIGN_POLY(x) (((s32)(x)<<21)>>21) -#define GPU_EXPANDSIGN_SPRT(x) (((s32)(x)<<21)>>21) +#define GPU_EXPANDSIGN(x) (((s32)(x)<<21)>>21) -//#define GPU_TESTRANGE(x) { if((u32)(x+1024) > 2047) return; } -#define GPU_TESTRANGE(x) { if ((x<-1023) || (x>1023)) return; } +#define CHKMAX_X 1024 +#define CHKMAX_Y 512 #define GPU_SWAP(a,b,t) {(t)=(a);(a)=(b);(b)=(t);} @@ -156,6 +155,14 @@ int renderer_init(void) return 0; } +void renderer_finish(void) +{ +} + +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) @@ -165,7 +172,7 @@ int do_cmd_list(unsigned int *list, int list_len, int *last_cmd) unsigned int *list_end = list + list_len; linesInterlace = force_interlace; -#ifndef __ARM_ARCH_7A__ /* XXX */ +#ifdef HAVE_PRE_ARMV7 /* XXX */ linesInterlace |= gpu.status.interlace; #endif @@ -290,7 +297,7 @@ int do_cmd_list(unsigned int *list, int list_len, int *last_cmd) case 0x48 ... 0x4F: { u32 num_vertexes = 1; - u32 *list_position = &(list[2]); + u32 *list_position = (u32*)&(list[2]); gpuDrawLF(gpuPixelDrivers [ (Blending_Mode | Masking | Blending | (PixelMSB>>3)) >> 1]); @@ -301,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 >= (u32*)list_end) { + cmd = -1; + goto breakloop; + } + if((*list_position & 0xf000f000) == 0x50005000) break; } @@ -319,7 +330,7 @@ int do_cmd_list(unsigned int *list, int list_len, int *last_cmd) case 0x58 ... 0x5F: { u32 num_vertexes = 1; - u32 *list_position = &(list[2]); + u32 *list_position = (u32*)&(list[2]); gpuDrawLG(gpuPixelDrivers [ (Blending_Mode | Masking | Blending | (PixelMSB>>3)) >> 1]); @@ -332,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 >= (u32*)list_end) { + cmd = -1; + goto breakloop; + } + if((*list_position & 0xf000f000) == 0x50005000) break; } @@ -476,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; } @@ -527,6 +542,8 @@ void renderer_set_config(const struct rearmed_cbs *cbs) enableAbbeyHack = cbs->gpu_unai.abe_hack; light = !cbs->gpu_unai.no_light; blend = !cbs->gpu_unai.no_blend; + + GPU_FrameBuffer = (u16 *)gpu.vram; } #endif