#include <string.h>
#include "gpu.h"
-#include "cspace.h"
#include "../../frontend/plugin_lib.h"
static const struct rearmed_cbs *cbs;
static void check_mode_change(int force)
{
- static uint32_t old_status;
- static int old_h;
int w = gpu.screen.hres;
int h = gpu.screen.h;
int w_out = w;
gpu.state.enhancement_active =
gpu.get_enhancement_bufer != NULL && gpu.state.enhancement_enable
- && w <= 512 && h <= 256 && !gpu.status.rgb24;
+ && w <= 512 && h <= 256 && !(gpu.status & PSX_GPU_STATUS_RGB24);
if (gpu.state.enhancement_active) {
w_out *= 2;
}
// width|rgb24 change?
- if (force || (gpu.status.reg ^ old_status) & ((7<<16)|(1<<21)) || h != old_h)
+ if (force || (gpu.status ^ gpu.state.status_vo_old) & ((7<<16)|(1<<21))
+ || w_out != gpu.state.w_out_old || h_out != gpu.state.h_out_old)
{
- old_status = gpu.status.reg;
- old_h = h;
+ gpu.state.status_vo_old = gpu.status;
+ gpu.state.w_out_old = w_out;
+ gpu.state.h_out_old = h_out;
cbs->pl_vout_set_mode(w_out, h_out, w, h,
- (gpu.status.rgb24 && !cbs->only_16bpp) ? 24 : 16);
+ (gpu.status & PSX_GPU_STATUS_RGB24) ? 24 : 16);
}
}
void vout_update(void)
{
- int x = gpu.screen.x & ~1; // alignment needed by blitter
+ int x = gpu.screen.x;
int y = gpu.screen.y;
int w = gpu.screen.w;
int h = gpu.screen.h;
vram += y * 1024 + x;
- cbs->pl_vout_flip(vram, 1024, gpu.status.rgb24, w, h);
+ cbs->pl_vout_flip(vram, 1024, !!(gpu.status & PSX_GPU_STATUS_RGB24), w, h);
}
void vout_blank(void)
{
int w = gpu.screen.hres;
int h = gpu.screen.h;
+
+ check_mode_change(0);
if (gpu.state.enhancement_active) {
w *= 2;
h *= 2;
}
- check_mode_change(0);
- cbs->pl_vout_flip(NULL, 1024, gpu.status.rgb24, w, h);
+ cbs->pl_vout_flip(NULL, 1024, !!(gpu.status & PSX_GPU_STATUS_RGB24), w, h);
}
long GPUopen(void **unused)