diff options
author | notaz | 2012-11-13 19:19:36 +0200 |
---|---|---|
committer | notaz | 2012-11-18 01:40:00 +0200 |
commit | e4c83ca67cf7ad13db3995909605ce01ff915824 (patch) | |
tree | 58f361fada24be7fa23f402b7eedb012326b90a3 /plugins/dfinput | |
parent | c65553d0cafc353daad3fdcc0aab63bb8427a809 (diff) | |
download | pcsx_rearmed-e4c83ca67cf7ad13db3995909605ce01ff915824.tar.gz pcsx_rearmed-e4c83ca67cf7ad13db3995909605ce01ff915824.tar.bz2 pcsx_rearmed-e4c83ca67cf7ad13db3995909605ce01ff915824.zip |
fix gun handling in enhancement mode
Diffstat (limited to 'plugins/dfinput')
-rw-r--r-- | plugins/dfinput/externals.h | 14 | ||||
-rw-r--r-- | plugins/dfinput/guncon.c | 6 | ||||
-rw-r--r-- | plugins/dfinput/main.h | 14 |
3 files changed, 18 insertions, 16 deletions
diff --git a/plugins/dfinput/externals.h b/plugins/dfinput/externals.h new file mode 100644 index 0000000..5419977 --- /dev/null +++ b/plugins/dfinput/externals.h @@ -0,0 +1,14 @@ + +void dfinput_activate(void); + +/* get gunstate from emu frontend, + * xn, yn - layer position normalized to 0..1023 */ +#define GUNIN_TRIGGER (1<<0) +#define GUNIN_BTNA (1<<1) +#define GUNIN_BTNB (1<<2) +#define GUNIN_TRIGGER2 (1<<3) /* offscreen trigger */ +extern void pl_update_gun(int *xn, int *yn, int *xres, int *yres, int *in); + +/* vibration trigger to frontend */ +extern int in_enable_vibration; +extern void plat_trigger_vibrate(int is_strong); diff --git a/plugins/dfinput/guncon.c b/plugins/dfinput/guncon.c index b4f103c..981a757 100644 --- a/plugins/dfinput/guncon.c +++ b/plugins/dfinput/guncon.c @@ -29,17 +29,17 @@ unsigned char PADpoll_guncon(unsigned char value) unsigned char PADstartPoll_guncon(int pad) { - int x, xn = 0, y = 0, in = 0, xres = 256; + int x, y, xn = 0, yn = 0, in = 0, xres = 256, yres = 240; CurByte = 0; buf[2] = buf[3] = 0xff; - pl_update_gun(&xn, &xres, &y, &in); + pl_update_gun(&xn, &yn, &xres, &yres, &in); // while y = const + line counter, what is x? // for 256 mode, hw dumped offsets x, y: 0x5a, 0x20 //x = 0x5a + (356 * xn >> 10); x = 0x5a - (xres - 256) / 3 + (((xres - 256) / 3 + 356) * xn >> 10); - y = 0x20 + y; + y = 0x20 + (yres * yn >> 10); if (in & GUNIN_TRIGGER) buf[3] &= ~0x20; diff --git a/plugins/dfinput/main.h b/plugins/dfinput/main.h index 8e2d5ae..15d05e7 100644 --- a/plugins/dfinput/main.h +++ b/plugins/dfinput/main.h @@ -1,4 +1,5 @@ #include "../../libpcsxcore/psemu_plugin_defs.h" +#include "externals.h" extern unsigned char CurPad, CurByte, CurCmd, CmdLen; @@ -12,19 +13,6 @@ unsigned char PADpoll_guncon(unsigned char value); unsigned char PADstartPoll_guncon(int pad); void guncon_init(void); -void dfinput_activate(void); - /* get button state and pad type from main emu */ extern long (*PAD1_readPort1)(PadDataS *pad); extern long (*PAD2_readPort2)(PadDataS *pad); - -/* get gunstate from emu frontend, x range 0-1023 */ -#define GUNIN_TRIGGER (1<<0) -#define GUNIN_BTNA (1<<1) -#define GUNIN_BTNB (1<<2) -#define GUNIN_TRIGGER2 (1<<3) /* offscreen trigger */ -extern void pl_update_gun(int *xn, int *xres, int *y, int *in); - -/* vibration trigger to frontend */ -extern int in_enable_vibration; -extern void plat_trigger_vibrate(int is_strong); |