X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fplugin_lib.c;h=163d4f1aa5ce97c912c15c5aa119f6b816f925e1;hp=472a1b2c1e0737a2e2ec4a2547d300016646b1ec;hb=35d3fd2efb47352edf794255da3e4745f6bd0a0d;hpb=0fed3dc3d9799a9db68dd8be4172aafb0e161957 diff --git a/frontend/plugin_lib.c b/frontend/plugin_lib.c index 472a1b2c..163d4f1a 100644 --- a/frontend/plugin_lib.c +++ b/frontend/plugin_lib.c @@ -28,10 +28,10 @@ #include "plat.h" #include "pcnt.h" #include "pl_gun_ts.h" +#include "cspace.h" #include "psemu_plugin_defs.h" #include "../libpcsxcore/new_dynarec/new_dynarec.h" #include "../libpcsxcore/psxmem_map.h" -#include "../plugins/gpulib/cspace.h" #include "../plugins/dfinput/externals.h" int in_type1, in_type2; @@ -180,6 +180,14 @@ static void update_layer_size(int w, int h) g_layer_w = w; g_layer_h = h; break; + case SCALE_2_2: + g_layer_w = w; g_layer_h = h; + if (w * 2 <= g_menuscreen_w) + g_layer_w = w * 2; + if (h * 2 <= g_menuscreen_h) + g_layer_h = h * 2; + break; + case SCALE_4_3v2: if (h > g_menuscreen_h || (240 < h && h <= 360)) goto fractional_4_3; @@ -240,9 +248,12 @@ static void pl_vout_set_mode(int w, int h, int raw_w, int raw_h, int bpp) psx_w = raw_w; psx_h = raw_h; + psx_bpp = bpp; vout_w = w; vout_h = h; - vout_bpp = psx_bpp = bpp; + vout_bpp = bpp; + if (pl_rearmed_cbs.only_16bpp) + vout_bpp = 16; // don't use very low heights if (vout_h < 192) { @@ -270,7 +281,7 @@ static void pl_vout_set_mode(int w, int h, int raw_w, int raw_h, int bpp) pl_vout_buf = plat_gvideo_set_mode(&vout_w, &vout_h, &vout_bpp); if (pl_vout_buf == NULL && pl_plat_blit == NULL) fprintf(stderr, "failed to set mode %dx%d@%d\n", - vout_w, vout_h, psx_bpp); + vout_w, vout_h, vout_bpp); else { pl_vout_w = vout_w; pl_vout_h = vout_h; @@ -360,6 +371,19 @@ static void pl_vout_flip(const void *vram, int stride, int bgr24, int w, int h) neon_eagle2x_16_16(src, (void *)dest, w, stride * 2, dstride * 2, h); } + else if (scanlines != 0 && scanline_level != 100) + { + int l = scanline_level * 2048 / 100; + + for (; h1 >= 2; h1 -= 2) + { + bgr555_to_rgb565(dest, src, w * 2); + dest += dstride * 2, src += stride; + + bgr555_to_rgb565_b(dest, src, w * 2, l); + dest += dstride * 2, src += stride; + } + } #endif else { @@ -579,9 +603,7 @@ static void update_input(void) in_keystate = actions[IN_BINDTYPE_PLAYER12]; } #else /* MAEMO */ -static void update_input(void) -{ -} +extern void update_input(void); #endif void pl_update_gun(int *xn, int *yn, int *xres, int *yres, int *in) @@ -606,6 +628,9 @@ void pl_frame_limit(void) struct timeval now; int diff, usadj; + if (g_emu_resetting) + return; + vsync_cnt++; /* doing input here because the pad is polled