mirror of
https://github.com/Pecusx/libretro-atari800.git
synced 2026-05-21 14:49:36 +02:00
Fix first run crashing on Xbox One. Added savestate support. Rewind … (#87)
* Fix first run crashing on Xbox One. * Added savestate support. * Rewind works. Fixes issue #83 and possibly #49. * Added Disc Control menu. Supports Disks, Tapes and M3U files (issue #66). * Added in support for 5200 Super Carts. * Better support for 5200 controller. * Added Paddle support. * Converted Core Options menu to v2. * Moved some core options into submenus. * Added controller mappings for Ports 2-4. * Added options for Dual Stick and Swap Ports. Fixes issue #76. * Joystick/Console now controlled more easily with device type Atari Keyboard. * Added 4 Hi-Res Artifacting modes. Restart does something now. * When core option changed only reboot if necessary. Removed several hardcoded controller binds. Fixed issue #29. Joypad input ignored when virtual keyboard active. * SIO Acceleration now defaults to enabled. Fix for Bounty Bob (5200 & lift fix A800). * Added Atari 800 carts to autodetect DB. * Added more Carts to DB. * Fixed Drive Index not being reset on 'restart'. * Changed Atari Joystick default mappings to something more reasonable.
This commit is contained in:
+236
-90
@@ -3,22 +3,17 @@
|
||||
#include "retroscreen.h"
|
||||
#include "platform.h"
|
||||
#include "vkbd.h"
|
||||
#include "input.h"
|
||||
#include "pokey.h"
|
||||
|
||||
//CORE VAR
|
||||
#ifdef _WIN32
|
||||
char slash = '\\';
|
||||
#else
|
||||
char slash = '/';
|
||||
#endif
|
||||
extern const char *retro_save_directory;
|
||||
extern const char *retro_system_directory;
|
||||
extern const char *retro_content_directory;
|
||||
char RETRO_DIR[512];
|
||||
|
||||
char DISKA_NAME[512]="\0";
|
||||
char DISKB_NAME[512]="\0";
|
||||
char TAPE_NAME[512]="\0";
|
||||
|
||||
extern void Screen_SetFullUpdate(int scr);
|
||||
//extern void retro_message(const char* text, unsigned int frames, int alt);
|
||||
|
||||
long frame=0;
|
||||
unsigned long Ktime=0 , LastFPSTime=0;
|
||||
@@ -35,48 +30,64 @@ short signed int SNDBUF[1024*2];
|
||||
int snd_sampler_pal = 44100 / 50;
|
||||
int snd_sampler_ntsc = 44100 / 60;
|
||||
|
||||
//PATH
|
||||
char RPATH[512];
|
||||
|
||||
//EMU FLAGS
|
||||
int NPAGE=-1, KCOL=1, BKGCOLOR=0;
|
||||
int SHOWKEY=-1;
|
||||
int VKBD_OPACITY=-1;
|
||||
int NPAGE = -1, KCOL = 1, BKGCOLOR = 0;
|
||||
int SHOWKEY = -1, SHOWKEYDELAY = 0;
|
||||
int VKBD_OPACITY = -1;
|
||||
|
||||
#if defined(ANDROID) || defined(__ANDROID__)
|
||||
int MOUSE_EMULATED=1;
|
||||
int MOUSE_EMULATED = 1;
|
||||
#else
|
||||
int MOUSE_EMULATED=-1;
|
||||
int MOUSE_EMULATED = -1;
|
||||
#endif
|
||||
|
||||
int SHIFTON=-1,MOUSEMODE=-1,PAS=4;
|
||||
int SND=1; //SOUND ON/OFF
|
||||
int pauseg=0; //enter_gui
|
||||
int touch=-1; // gui mouse btn
|
||||
|
||||
//JOY
|
||||
int al[2][2];//left analog1
|
||||
int ar[2][2];//right analog1
|
||||
unsigned char MXjoy[4]; // joy
|
||||
int16_t joypad_bits[4];
|
||||
extern UBYTE consol_mask;
|
||||
|
||||
#define JOYRANGE_UP_VALUE -16384 /* Joystick ranges in XY */
|
||||
#define JOYRANGE_DOWN_VALUE 16383
|
||||
#define JOYRANGE_LEFT_VALUE -16384
|
||||
#define JOYRANGE_RIGHT_VALUE 16383
|
||||
|
||||
extern int a5200_joyhack;
|
||||
|
||||
// retro core option variables
|
||||
extern int atari_joyhack;
|
||||
extern int keyboard_type;
|
||||
extern int pot_analog_deadzone;
|
||||
extern int paddle_mode;
|
||||
extern int paddle_speed;
|
||||
|
||||
//MOUSE
|
||||
extern int INPUT_joy_5200_center;
|
||||
extern int INPUT_joy_5200_min;
|
||||
extern int INPUT_joy_5200_max;
|
||||
extern int INPUT_digital_5200_min;
|
||||
extern int INPUT_digital_5200_center;
|
||||
extern int INPUT_digital_5200_max;
|
||||
|
||||
//MOUSE Is this even tied to anything?
|
||||
extern int pushi; // gui mouse btn
|
||||
int gmx,gmy; //gui mouse
|
||||
int mouse_wu=0,mouse_wd=0;
|
||||
//KEYBOARD
|
||||
char Key_Sate[512];
|
||||
char Key_Sate2[512];
|
||||
static char old_Key_Sate[512];
|
||||
|
||||
int mbt[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||
//Atari800 EMU mouse
|
||||
extern UBYTE POKEY_POT_input[8];
|
||||
extern int INPUT_mouse_pot_min;
|
||||
extern int INPUT_mouse_pot_max;
|
||||
|
||||
//KEYBOARD
|
||||
char Key_State[512];
|
||||
static char old_Key_State[512];
|
||||
|
||||
int mbt[4][16] = { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
|
||||
, { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } };
|
||||
|
||||
//STATS GUI
|
||||
int BOXDEC= 32+2;
|
||||
@@ -84,7 +95,6 @@ int STAT_BASEY;
|
||||
|
||||
/*static*/ retro_input_state_t input_state_cb;
|
||||
static retro_input_poll_t input_poll_cb;
|
||||
extern void retro_audio_cb( short l, short r);
|
||||
|
||||
extern bool libretro_supports_bitmasks;
|
||||
|
||||
@@ -114,13 +124,14 @@ int slowdown=0;
|
||||
|
||||
#define RETRO_DEVICE_ATARI_KEYBOARD RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_KEYBOARD, 0)
|
||||
#define RETRO_DEVICE_ATARI_JOYSTICK RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_JOYPAD, 1)
|
||||
#define RETRO_DEVICE_ATARI_5200_JOYSTICK RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_JOYPAD, 2)
|
||||
|
||||
void texture_uninit(void) { }
|
||||
|
||||
void texture_init(void)
|
||||
{
|
||||
memset(Retro_Screen, 0, sizeof(Retro_Screen));
|
||||
memset(old_Key_Sate ,0, sizeof(old_Key_Sate));
|
||||
memset(old_Key_State ,0, sizeof(old_Key_State));
|
||||
|
||||
gmx=(retrow/2)-1;
|
||||
gmy=(retroh/2)-1;
|
||||
@@ -151,7 +162,13 @@ void retro_sound_update(void)
|
||||
}
|
||||
}
|
||||
|
||||
extern void vkbd_key(int key,int pressed);
|
||||
//extern void vkbd_key(int key,int pressed);
|
||||
|
||||
void Screen_SetFullUpdate(int scr)
|
||||
{
|
||||
if (scr == 0 || scr > 1)
|
||||
memset(Retro_Screen, 0, sizeof(Retro_Screen));
|
||||
}
|
||||
|
||||
void vkbd_key(int key,int pressed)
|
||||
{
|
||||
@@ -159,14 +176,14 @@ void vkbd_key(int key,int pressed)
|
||||
{
|
||||
if(SHIFTON==1)
|
||||
;
|
||||
Key_Sate[key]=1;
|
||||
Key_State[key]=1;
|
||||
// key is being held down
|
||||
}
|
||||
else
|
||||
{
|
||||
if(SHIFTON==1)
|
||||
;
|
||||
Key_Sate[key]=0;
|
||||
Key_State[key]=0;
|
||||
// key is being RELEASE
|
||||
}
|
||||
}
|
||||
@@ -229,7 +246,7 @@ void retro_virtualkb(void)
|
||||
|
||||
virtual_kdb(( char *)Retro_Screen,vkx,vky);
|
||||
|
||||
i=8;
|
||||
i=0; // swapped Button 1 and 2 definitions ( used to be 8 )
|
||||
if( (joypad_bits[0] & (1 << i)) && vkflag[4]==0 )
|
||||
vkflag[4]=1;
|
||||
else if( !(joypad_bits[0] & (1 << i)) && vkflag[4]==1 )
|
||||
@@ -310,12 +327,6 @@ void retro_virtualkb(void)
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_SetFullUpdate(int scr)
|
||||
{
|
||||
if(scr==0 ||scr>1)
|
||||
memset(Retro_Screen, 0, sizeof(Retro_Screen));
|
||||
}
|
||||
|
||||
void Process_key(void)
|
||||
{
|
||||
int i;
|
||||
@@ -324,13 +335,13 @@ void Process_key(void)
|
||||
return;
|
||||
|
||||
for(i=0;i<320;i++)
|
||||
Key_Sate[i]=input_state_cb(0, RETRO_DEVICE_KEYBOARD, 0,i) ? 0x80: 0;
|
||||
Key_State[i]=input_state_cb(0, RETRO_DEVICE_KEYBOARD, 0,i) ? 0x80: 0;
|
||||
|
||||
if(memcmp( Key_Sate,old_Key_Sate , sizeof(Key_Sate) ) )
|
||||
if(memcmp( Key_State,old_Key_State , sizeof(Key_State) ) )
|
||||
{
|
||||
for(i=0;i<320;i++)
|
||||
for(i=0;i<320;i++)
|
||||
{
|
||||
if(Key_Sate[i] && Key_Sate[i]!=old_Key_Sate[i] )
|
||||
if(Key_State[i] && Key_State[i]!=old_Key_State[i] )
|
||||
{
|
||||
if(i==RETROK_RCTRL)
|
||||
{
|
||||
@@ -352,7 +363,7 @@ void Process_key(void)
|
||||
//retro_key_down(i);
|
||||
|
||||
}
|
||||
else if ( !Key_Sate[i] && Key_Sate[i]!=old_Key_Sate[i] )
|
||||
else if ( !Key_State[i] && Key_State[i]!=old_Key_State[i] )
|
||||
{
|
||||
if(i==RETROK_RCTRL)
|
||||
{
|
||||
@@ -378,7 +389,52 @@ void Process_key(void)
|
||||
}
|
||||
}
|
||||
|
||||
memcpy(old_Key_Sate,Key_Sate , sizeof(Key_Sate) );
|
||||
memcpy(old_Key_State,Key_State , sizeof(Key_State) );
|
||||
}
|
||||
|
||||
int Atari_POT(int input)
|
||||
{
|
||||
int which = input / 2;
|
||||
int xval, yval, pval, result;
|
||||
|
||||
//if (consol_mask == 0x0f)
|
||||
// return 228;
|
||||
|
||||
/* account for Joystick swap enabled */
|
||||
if (atari_joyhack == 2)
|
||||
which = (which + 1) % 2;
|
||||
|
||||
xval = input_state_cb(which, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_X);
|
||||
yval = input_state_cb(which, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_Y);
|
||||
|
||||
pval = (input & 1) ? yval : xval;
|
||||
|
||||
if ((pval > -pot_analog_deadzone) && (pval < pot_analog_deadzone))
|
||||
return INPUT_joy_5200_center;
|
||||
|
||||
/* Convert to amplitude */
|
||||
float amplitude = (float)((pval > pot_analog_deadzone) ?
|
||||
(pval - pot_analog_deadzone) :
|
||||
(pval + pot_analog_deadzone)) /
|
||||
(float)(LIBRETRO_ANALOG_RANGE - pot_analog_deadzone);
|
||||
|
||||
/* Map to Atari 5200 values */
|
||||
if (amplitude >= 0.0f)
|
||||
result = (JOY_5200_CENTER + (unsigned int)(((float)(INPUT_joy_5200_max - JOY_5200_CENTER) * amplitude) + 0.5f));
|
||||
else
|
||||
result = (JOY_5200_CENTER - (unsigned int)(((float)(JOY_5200_CENTER - INPUT_joy_5200_min) * -amplitude) + 0.5f));
|
||||
|
||||
/* for debug purposes */
|
||||
//if (input == 1)
|
||||
//{
|
||||
// char msg[256];
|
||||
|
||||
// //sprintf(msg, "X=%f, Y=%f, Deadzone=%f. Result- %i\n", xval / (float)LIBRETRO_ANALOG_RANGE, yval / (float)LIBRETRO_ANALOG_RANGE, (float)pot_analog_deadzone, result);
|
||||
// sprintf(msg, "Joy Min=%i, Joy Max=%i. Result- %i\n", INPUT_joy_5200_max, INPUT_joy_5200_min, result);
|
||||
// retro_message(msg, 60, 0);
|
||||
//}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
int Retro_PollEvent()
|
||||
@@ -386,13 +442,12 @@ int Retro_PollEvent()
|
||||
// RETRO B Y SLT STA UP DWN LEFT RGT A X L R L2 R2 L3 R3
|
||||
// INDEX 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
||||
|
||||
int SAVPAS=PAS;
|
||||
int i,j;
|
||||
static int vbt[4][16]={
|
||||
{0x0,0x0,0x0,0x0,0x01,0x02,0x04,0x08,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0},
|
||||
{0x0,0x0,0x0,0x0,0x01,0x02,0x04,0x08,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0},
|
||||
{0x0,0x0,0x0,0x0,0x01,0x02,0x04,0x08,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0},
|
||||
{0x0,0x0,0x0,0x0,0x01,0x02,0x04,0x08,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0},
|
||||
{0x80,0x0,0x0,0x0,0x01,0x02,0x04,0x08,0x10,0x40,0x0,0x0,0x0,0x0,0x0,0x0},
|
||||
{0x80,0x0,0x0,0x0,0x01,0x02,0x04,0x08,0x10,0x40,0x0,0x0,0x0,0x0,0x0,0x0},
|
||||
{0x80,0x0,0x0,0x0,0x01,0x02,0x04,0x08,0x10,0x40,0x0,0x0,0x0,0x0,0x0,0x0},
|
||||
{0x80,0x0,0x0,0x0,0x01,0x02,0x04,0x08,0x10,0x40,0x0,0x0,0x0,0x0,0x0,0x0},
|
||||
};
|
||||
|
||||
input_poll_cb();
|
||||
@@ -414,12 +469,13 @@ int Retro_PollEvent()
|
||||
int16_t mouse_x,mouse_y;
|
||||
mouse_x=mouse_y=0;
|
||||
|
||||
if(SHOWKEY==-1 && pauseg==0)Process_key();
|
||||
if (SHOWKEY==-1 && pauseg==0)
|
||||
Process_key();
|
||||
|
||||
//Joy mode
|
||||
for(j=0;j<4;j++)
|
||||
{
|
||||
for(i=4;i<10;i++)
|
||||
for(i=0;i<16;i++)
|
||||
{
|
||||
if(joypad_bits[j] & (1 << i))
|
||||
MXjoy[j] |= vbt[j][i]; // Joy press
|
||||
@@ -428,21 +484,12 @@ int Retro_PollEvent()
|
||||
}
|
||||
}
|
||||
|
||||
if(a5200_joyhack) //hack for robotron right analog act as Joy1
|
||||
if (atari_joyhack == 1 && !paddle_mode) //hack for robotron right analog act as Joy1
|
||||
{
|
||||
#if 0
|
||||
int x,y;
|
||||
#endif
|
||||
|
||||
//emulate Joy1 with joy analog right
|
||||
ar[0][0] = (input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X));
|
||||
ar[0][1] = (input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y));
|
||||
|
||||
#if 0
|
||||
x=ar[0][0];
|
||||
y=ar[0][1];
|
||||
#endif
|
||||
|
||||
/* Directions */
|
||||
|
||||
if (ar[0][1] <= JOYRANGE_UP_VALUE)
|
||||
@@ -455,40 +502,141 @@ int Retro_PollEvent()
|
||||
else if (ar[0][0] >= JOYRANGE_RIGHT_VALUE)
|
||||
MXjoy[1] |= 0x08;
|
||||
}
|
||||
else if (atari_joyhack == 2 && !paddle_mode) //hack for Joy 1 / 2 swap.
|
||||
{
|
||||
//emulate Joy1 with joy analog right
|
||||
al[0][0] = (input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_X));
|
||||
al[0][1] = (input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_Y));
|
||||
|
||||
if (libretro_supports_bitmasks)
|
||||
joypad_bits[1] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_MASK);
|
||||
else
|
||||
{
|
||||
joypad_bits[1] = 0;
|
||||
joypad_bits[1] |= input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_MASK) ? 1 : 0;
|
||||
}
|
||||
|
||||
if(atari_devices[0]==RETRO_DEVICE_ATARI_JOYSTICK)
|
||||
for (i = 0 ; i < 16; i++)
|
||||
{
|
||||
if (joypad_bits[1] & (1 << i))
|
||||
MXjoy[1] |= vbt[0][i]; // Joy press
|
||||
else if (MXjoy[1] & vbt[0][i])
|
||||
MXjoy[1] &= ~vbt[0][i]; // Joy press
|
||||
}
|
||||
|
||||
/* Directions */
|
||||
|
||||
if (al[0][1] <= JOYRANGE_UP_VALUE)
|
||||
MXjoy[1] |= 0x01;
|
||||
else if (al[0][1] >= JOYRANGE_DOWN_VALUE)
|
||||
MXjoy[1] |= 0x02;
|
||||
|
||||
if (al[0][0] <= JOYRANGE_LEFT_VALUE)
|
||||
MXjoy[1] |= 0x04;
|
||||
else if (al[0][0] >= JOYRANGE_RIGHT_VALUE)
|
||||
MXjoy[1] |= 0x08;
|
||||
}
|
||||
|
||||
if ( atari_devices[0] != RETRO_DEVICE_ATARI_KEYBOARD)
|
||||
{
|
||||
//shortcut for joy mode only
|
||||
|
||||
//Button B Y SLT STA
|
||||
// 0 1 2 3
|
||||
for(i=0;i<4;i++)
|
||||
{
|
||||
if ( (joypad_bits[0] & (1 << i)) && mbt[i]==0 )
|
||||
mbt[i]=1;
|
||||
else if (mbt[i]==1 && !(joypad_bits[0] & (1 << i)) )
|
||||
{
|
||||
mbt[i]=0;
|
||||
if(i==2)
|
||||
MOUSE_EMULATED = -MOUSE_EMULATED;
|
||||
}
|
||||
}
|
||||
//Button L R L2 R2 L3 R3
|
||||
// 10 11 12 13 14 15
|
||||
for(i=10;i<16;i++)
|
||||
{
|
||||
if ( (joypad_bits[0] & (1 << i)) && mbt[i]==0 )
|
||||
mbt[i]=1;
|
||||
else if ( mbt[i]==1 && !(joypad_bits[0] & (1 << i)) )
|
||||
{
|
||||
mbt[i]=0;
|
||||
if(i==14)
|
||||
SHOWKEY = -SHOWKEY;
|
||||
}
|
||||
}
|
||||
}//if atari_devices=joy
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
for (int j = 0; j < 4; j++)
|
||||
{
|
||||
if ((joypad_bits[j] & (1 << i)) && mbt[j][i] == 0)
|
||||
mbt[j][i] = 1;
|
||||
else if (mbt[j][i] == 1 && !(joypad_bits[j] & (1 << i)))
|
||||
{
|
||||
mbt[j][i] = 0;
|
||||
#if defined(ANDROID) || defined(__ANDROID__)
|
||||
/* apparently this is used by the ANDROID port? Keep in for now. Android only*/
|
||||
if(i==2)
|
||||
MOUSE_EMULATED = -MOUSE_EMULATED;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Huh? */
|
||||
//for(i=0;i<4;i++)
|
||||
//{
|
||||
// if ( (joypad_bits[0] & (1 << i)) && mbt[i]==0 )
|
||||
// mbt[i]=1;
|
||||
// else if (mbt[i]==1 && !(joypad_bits[0] & (1 << i)) )
|
||||
// {
|
||||
// mbt[i]=0;
|
||||
// //if(i==2) /* hard coded? android only? */
|
||||
// // MOUSE_EMULATED = -MOUSE_EMULATED;
|
||||
// }
|
||||
//}
|
||||
////Button L R L2 R2 L3 R3
|
||||
//// 10 11 12 13 14 15
|
||||
//for(i=10;i<16;i++)
|
||||
//{
|
||||
// if ( (joypad_bits[0] & (1 << i)) && mbt[i]==0 )
|
||||
// mbt[i]=1;
|
||||
// else if ( mbt[i]==1 && !(joypad_bits[0] & (1 << i)) )
|
||||
// {
|
||||
// mbt[i]=0;
|
||||
// //if(i==14) /* removed can be defined in controller settings screen? */
|
||||
// //SHOWKEY = -SHOWKEY;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
else //Emulate joystick controls with keyboard/retro_keyboard only Joy 1 atm... experimental
|
||||
{
|
||||
// these are the same for both computer and 5200
|
||||
if (Key_State[RETROK_KP8]) // up
|
||||
MXjoy[0] |= 0x01;
|
||||
else if (Key_State[RETROK_KP2]) // down
|
||||
MXjoy[0] |= 0x02;
|
||||
if (Key_State[RETROK_KP4]) // left
|
||||
MXjoy[0] |= 0x04;
|
||||
else if (Key_State[RETROK_KP6]) // right
|
||||
MXjoy[0] |= 0x08;
|
||||
|
||||
if (Key_State[RETROK_RALT]) // fire 1
|
||||
MXjoy[0] |= 0x80;
|
||||
|
||||
// 5200 fire button 2
|
||||
if (Atari800_machine_type == Atari800_MACHINE_5200 && !UI_is_active)
|
||||
if ( Key_State[RETROK_RCTRL])
|
||||
INPUT_key_shift = 1;
|
||||
}
|
||||
|
||||
if (paddle_mode)
|
||||
{
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
int pval = input_state_cb(i, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_X);
|
||||
|
||||
if ((pval < -pot_analog_deadzone) || (pval > pot_analog_deadzone))
|
||||
{
|
||||
if (pval > 0)
|
||||
POKEY_POT_input[i] -= paddle_speed;
|
||||
else
|
||||
POKEY_POT_input[i] += paddle_speed;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT))
|
||||
POKEY_POT_input[i] -= paddle_speed;
|
||||
if (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT))
|
||||
POKEY_POT_input[i] += paddle_speed;
|
||||
}
|
||||
|
||||
if (POKEY_POT_input[i] < INPUT_mouse_pot_min)
|
||||
POKEY_POT_input[i] = INPUT_mouse_pot_min;
|
||||
|
||||
if (POKEY_POT_input[i] > INPUT_mouse_pot_max)
|
||||
POKEY_POT_input[i] = INPUT_mouse_pot_max;
|
||||
}
|
||||
}
|
||||
|
||||
if(MOUSE_EMULATED==1)
|
||||
{
|
||||
@@ -503,10 +651,8 @@ int Retro_PollEvent()
|
||||
mouse_y += PAS;
|
||||
if (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_UP))
|
||||
mouse_y -= PAS;
|
||||
mouse_l = (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_A)) ? 1 : 0;
|
||||
mouse_r = (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_B)) ? 1 : 0;
|
||||
|
||||
PAS=SAVPAS;
|
||||
mouse_l = (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_B)) ? 1 : 0;
|
||||
mouse_r = (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_A)) ? 1 : 0;
|
||||
|
||||
slowdown=1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user