X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fplugin_lib.c;h=bde4f9c1b706d38983b10a9ef1c872bd5d32a601;hp=58c67d27a850790001fbdbe0a8a329b90d78d10f;hb=4c08b9e7dd350a48fc3e0515913d6ccc8b15e5ae;hpb=e64dc4c54e96643522dc4b8c205d143c7d9b2f1d diff --git a/frontend/plugin_lib.c b/frontend/plugin_lib.c index 58c67d27..bde4f9c1 100644 --- a/frontend/plugin_lib.c +++ b/frontend/plugin_lib.c @@ -25,18 +25,23 @@ #include "menu.h" #include "main.h" #include "pcnt.h" +#include "pl_gun_ts.h" #include "../libpcsxcore/new_dynarec/new_dynarec.h" #include "../libpcsxcore/psemu_plugin_defs.h" void *pl_fbdev_buf; int pl_frame_interval; -int in_type, in_keystate, in_a1[2] = { 127, 127 }, in_a2[2] = { 127, 127 }; +int in_type1, in_type2; +int in_a1[2] = { 127, 127 }, in_a2[2] = { 127, 127 }; +int in_keystate, in_state_gun; +static void *ts; static int pl_fbdev_w, pl_fbdev_h, pl_fbdev_bpp; static int flip_cnt, vsync_cnt, flips_per_sec, tick_per_sec; static float vsps_cur; static int vsync_usec_time; -static int get_cpu_ticks(void) + +static __attribute__((noinline)) int get_cpu_ticks(void) { static unsigned long last_utime; static int fd; @@ -74,6 +79,35 @@ static void print_cpu_usage(void) pl_text_out16(pl_fbdev_w - 28, pl_fbdev_h - 10, "%3d", tick_per_sec); } +// draw 192x8 status of 24 sound channels +static __attribute__((noinline)) void draw_active_chans(void) +{ + extern void spu_get_debug_info(int *chans_out, int *fmod_chans_out, int *noise_chans_out); // hack + int live_chans, fmod_chans, noise_chans; + + static const unsigned short colors[2] = { 0x1fe3, 0x0700 }; + unsigned short *dest = (unsigned short *)pl_fbdev_buf + + pl_fbdev_w * (pl_fbdev_h - 10) + pl_fbdev_w / 2 - 192/2; + unsigned short *d, p; + int c, x, y; + + if (pl_fbdev_bpp != 16) + return; + + spu_get_debug_info(&live_chans, &fmod_chans, &noise_chans); + + for (c = 0; c < 24; c++) { + d = dest + c * 8; + p = !(live_chans & (1<> SACTION_GUN_TRIGGER; + + emu_act &= ~SACTION_GUN_MASK; if (emu_act) { int which = 0; for (; !(emu_act & 1); emu_act >>= 1, which++) @@ -173,6 +213,15 @@ static void update_input(void) #endif } +void pl_update_gun(int *xn, int *xres, int *y, int *in) +{ + if (ts) + pl_gun_ts_update(ts, xn, y, in); + + *xres = pl_fbdev_w; + *y = *y * pl_fbdev_h >> 10; +} + #define MAX_LAG_FRAMES 3 #define tvdiff(tv, tv_old) \ @@ -364,3 +413,7 @@ void pl_start_watchdog(void) fprintf(stderr, "could not start watchdog: %d\n", ret); } +void pl_init(void) +{ + ts = pl_gun_ts_init(); +}