mirror of
https://github.com/dwsJason/xrick2gs.git
synced 2024-06-06 11:29:29 +00:00
Working Joypad support, and rejiggered keyboard inputs
This commit is contained in:
parent
897ab34451
commit
878dda2444
|
@ -22,7 +22,7 @@ paddle0 start ASMCODE
|
||||||
ds 2
|
ds 2
|
||||||
paddle1 entry
|
paddle1 entry
|
||||||
ds 2
|
ds 2
|
||||||
paddle_button_0 entry
|
paddle_button0 entry
|
||||||
ds 2
|
ds 2
|
||||||
|
|
||||||
ReadPaddles entry
|
ReadPaddles entry
|
||||||
|
@ -37,7 +37,7 @@ ReadPaddles entry
|
||||||
|
|
||||||
lda >$E0C061
|
lda >$E0C061
|
||||||
and #$0080
|
and #$0080
|
||||||
sta paddle_button_0
|
sta paddle_button0
|
||||||
|
|
||||||
plb
|
plb
|
||||||
rtl
|
rtl
|
||||||
|
@ -55,7 +55,11 @@ ReadPaddles entry
|
||||||
* Return: X=JoyX, Y=JoyY
|
* Return: X=JoyX, Y=JoyY
|
||||||
GetJoyXY start ASMCODE
|
GetJoyXY start ASMCODE
|
||||||
php ;Save irq & mx reg size
|
php ;Save irq & mx reg size
|
||||||
sep #$34 ;sei & 8-bit mx
|
sep #$34 ;sei & 8-bit mx
|
||||||
|
|
||||||
|
longa off
|
||||||
|
longi off
|
||||||
|
|
||||||
phd ;Save DPage
|
phd ;Save DPage
|
||||||
pea $C000 ;DP to I/O
|
pea $C000 ;DP to I/O
|
||||||
pld ;DP=$C000
|
pld ;DP=$C000
|
||||||
|
|
|
@ -17,6 +17,10 @@ segment "screen";
|
||||||
|
|
||||||
extern char joys_lz4;
|
extern char joys_lz4;
|
||||||
|
|
||||||
|
#define J_KEY 0x26
|
||||||
|
#define K_KEY 0x28
|
||||||
|
|
||||||
|
extern U16 bUseJoy;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Display (J)oystick or (K)eyboard screen
|
* Display (J)oystick or (K)eyboard screen
|
||||||
|
@ -26,8 +30,10 @@ extern char joys_lz4;
|
||||||
U8
|
U8
|
||||||
screen_joykey(void)
|
screen_joykey(void)
|
||||||
{
|
{
|
||||||
static U8 seq = 0;
|
static U16 seq = 0;
|
||||||
static U8 wait = 0;
|
static U16 wait = 0;
|
||||||
|
|
||||||
|
U16 bChosen = 0;
|
||||||
|
|
||||||
if (seq == 0) {
|
if (seq == 0) {
|
||||||
sysvid_clearPalette();
|
sysvid_clearPalette();
|
||||||
|
@ -42,26 +48,24 @@ screen_joykey(void)
|
||||||
seq = 1;
|
seq = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (seq) {
|
|
||||||
case 1: /* wait */
|
|
||||||
if (wait++ > 0x2) {
|
|
||||||
seq = 2;
|
|
||||||
wait = 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: /* wait */
|
|
||||||
if (wait++ > 0x20) {
|
|
||||||
seq = 99;
|
|
||||||
wait = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (control_status & CONTROL_EXIT) /* check for exit request */
|
if (control_status & CONTROL_EXIT) /* check for exit request */
|
||||||
return SCREEN_EXIT;
|
return SCREEN_EXIT;
|
||||||
|
|
||||||
#if 0
|
if (KeyArray[ J_KEY ])
|
||||||
if (seq == 99) { /* we're done */
|
{
|
||||||
|
// Choose JoyStick
|
||||||
|
bUseJoy = 1;
|
||||||
|
bChosen = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (KeyArray[ K_KEY ])
|
||||||
|
{
|
||||||
|
// Choose Keyboard
|
||||||
|
bUseJoy = 0;
|
||||||
|
bChosen = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bChosen) { /* we're done */
|
||||||
sysvid_clear();
|
sysvid_clear();
|
||||||
sysvid_setGamePalette();
|
sysvid_setGamePalette();
|
||||||
sysvid_clearPalette();
|
sysvid_clearPalette();
|
||||||
|
@ -70,9 +74,9 @@ screen_joykey(void)
|
||||||
PresentSCB();
|
PresentSCB();
|
||||||
PresentFrameBuffer();
|
PresentFrameBuffer();
|
||||||
seq = 0;
|
seq = 0;
|
||||||
|
wait = 0;
|
||||||
return SCREEN_DONE;
|
return SCREEN_DONE;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
return SCREEN_RUNNING;
|
return SCREEN_RUNNING;
|
||||||
}
|
}
|
||||||
|
|
185
src/sysevt.c
185
src/sysevt.c
|
@ -70,6 +70,12 @@ extern U16 paddle_button0;
|
||||||
|
|
||||||
U16 bUseJoy = 0;
|
U16 bUseJoy = 0;
|
||||||
|
|
||||||
|
#define TOLERANCE 48
|
||||||
|
#define JOY_LEFT (128-TOLERANCE)
|
||||||
|
#define JOY_RIGHT (128+TOLERANCE)
|
||||||
|
#define JOY_UP (128-TOLERANCE)
|
||||||
|
#define JOY_DOWN (128+TOLERANCE)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -105,71 +111,138 @@ processEvent()
|
||||||
|
|
||||||
control_status = 0;
|
control_status = 0;
|
||||||
|
|
||||||
// ADB Keyboard Driver
|
if (bUseJoy)
|
||||||
if (KeyArray[ LARROW ])
|
|
||||||
{
|
{
|
||||||
control_status |= CONTROL_LEFT;
|
ReadPaddles();
|
||||||
if (!(control_last & CONTROL_LEFT))
|
|
||||||
|
if (paddle0 <= JOY_LEFT)
|
||||||
{
|
{
|
||||||
control_last |= CONTROL_LEFT;
|
control_status |= CONTROL_LEFT;
|
||||||
KeyArray[ RARROW ] = 0;
|
if (!(control_last & CONTROL_LEFT))
|
||||||
|
control_last |= CONTROL_LEFT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
control_last &= ~CONTROL_LEFT;
|
||||||
|
}
|
||||||
|
if (paddle0 >= JOY_RIGHT)
|
||||||
|
{
|
||||||
|
control_status |= CONTROL_RIGHT;
|
||||||
|
if (!(control_last & CONTROL_RIGHT))
|
||||||
|
control_last |= CONTROL_RIGHT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
control_last &= ~CONTROL_RIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (paddle1 <= JOY_UP)
|
||||||
|
{
|
||||||
|
control_status |= CONTROL_UP;
|
||||||
|
if (!(control_last & CONTROL_UP))
|
||||||
|
control_last |= CONTROL_UP;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
control_last &= ~CONTROL_UP;
|
||||||
|
}
|
||||||
|
if (paddle1 >= JOY_DOWN)
|
||||||
|
{
|
||||||
|
control_status |= CONTROL_DOWN;
|
||||||
|
if (!(control_last & CONTROL_DOWN))
|
||||||
|
control_last |= CONTROL_DOWN;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
control_last &= ~CONTROL_DOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (paddle_button0 >= 128)
|
||||||
|
{
|
||||||
|
control_status |= CONTROL_FIRE;
|
||||||
|
if (!(control_last & CONTROL_FIRE))
|
||||||
|
{
|
||||||
|
control_last |= CONTROL_FIRE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
control_last &= ~CONTROL_FIRE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
control_last &= ~CONTROL_LEFT;
|
// ADB Keyboard Driver
|
||||||
}
|
if (KeyArray[ A_KEY ] || KeyArray[ J_KEY ])
|
||||||
if (KeyArray[ RARROW ])
|
|
||||||
{
|
|
||||||
control_status |= CONTROL_RIGHT;
|
|
||||||
if (!(control_last & CONTROL_RIGHT))
|
|
||||||
{
|
{
|
||||||
control_last |= CONTROL_RIGHT;
|
control_status |= CONTROL_LEFT;
|
||||||
KeyArray[ LARROW ] = 0;
|
if (!(control_last & CONTROL_LEFT))
|
||||||
|
{
|
||||||
|
control_last |= CONTROL_LEFT;
|
||||||
|
KeyArray[ D_KEY ] = 0;
|
||||||
|
KeyArray[ L_KEY ] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
control_last &= ~CONTROL_LEFT;
|
||||||
|
}
|
||||||
|
if (KeyArray[ D_KEY ] || KeyArray[ L_KEY ])
|
||||||
|
{
|
||||||
|
control_status |= CONTROL_RIGHT;
|
||||||
|
if (!(control_last & CONTROL_RIGHT))
|
||||||
|
{
|
||||||
|
control_last |= CONTROL_RIGHT;
|
||||||
|
KeyArray[ A_KEY ] = 0;
|
||||||
|
KeyArray[ J_KEY ] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
control_last &= ~CONTROL_RIGHT;
|
||||||
|
}
|
||||||
|
if (KeyArray[ S_KEY ] || KeyArray[ K_KEY ])
|
||||||
|
{
|
||||||
|
control_status |= CONTROL_DOWN;
|
||||||
|
if (!(control_last & CONTROL_DOWN))
|
||||||
|
{
|
||||||
|
control_last |= CONTROL_DOWN;
|
||||||
|
KeyArray[ W_KEY ] = 0;
|
||||||
|
KeyArray[ I_KEY ] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
control_last &= ~CONTROL_DOWN;
|
||||||
|
}
|
||||||
|
if (KeyArray[ W_KEY ] || KeyArray[ I_KEY ])
|
||||||
|
{
|
||||||
|
control_status |= CONTROL_UP;
|
||||||
|
if (!(control_last & CONTROL_UP))
|
||||||
|
{
|
||||||
|
control_last |= CONTROL_UP;
|
||||||
|
KeyArray[ S_KEY ] = 0;
|
||||||
|
KeyArray[ K_KEY ] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
control_last &= ~CONTROL_UP;
|
||||||
|
}
|
||||||
|
if (KeyArray[ SPACEBAR ])
|
||||||
|
{
|
||||||
|
control_status |= CONTROL_FIRE;
|
||||||
|
if (!(control_last & CONTROL_FIRE))
|
||||||
|
{
|
||||||
|
control_last |= CONTROL_FIRE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
control_last &= ~CONTROL_FIRE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
control_last &= ~CONTROL_RIGHT;
|
|
||||||
}
|
|
||||||
if (KeyArray[ DARROW ])
|
|
||||||
{
|
|
||||||
control_status |= CONTROL_DOWN;
|
|
||||||
if (!(control_last & CONTROL_DOWN))
|
|
||||||
{
|
|
||||||
control_last |= CONTROL_DOWN;
|
|
||||||
KeyArray[ UARROW ] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
control_last &= ~CONTROL_DOWN;
|
|
||||||
}
|
|
||||||
if (KeyArray[ UARROW ])
|
|
||||||
{
|
|
||||||
control_status |= CONTROL_UP;
|
|
||||||
if (!(control_last & CONTROL_UP))
|
|
||||||
{
|
|
||||||
control_last |= CONTROL_UP;
|
|
||||||
KeyArray[ DARROW ] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
control_last &= ~CONTROL_UP;
|
|
||||||
}
|
|
||||||
if (KeyArray[ SPACEBAR ])
|
|
||||||
{
|
|
||||||
control_status |= CONTROL_FIRE;
|
|
||||||
if (!(control_last & CONTROL_FIRE))
|
|
||||||
{
|
|
||||||
control_last |= CONTROL_FIRE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
control_last &= ~CONTROL_FIRE;
|
|
||||||
}
|
|
||||||
if (KeyArray[ ESC ])
|
if (KeyArray[ ESC ])
|
||||||
{
|
{
|
||||||
control_status |= CONTROL_END;
|
control_status |= CONTROL_END;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user