mirror of
https://github.com/dwsJason/xrick2gs.git
synced 2025-01-20 02:33:05 +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
|
||||
paddle1 entry
|
||||
ds 2
|
||||
paddle_button_0 entry
|
||||
paddle_button0 entry
|
||||
ds 2
|
||||
|
||||
ReadPaddles entry
|
||||
@ -37,7 +37,7 @@ ReadPaddles entry
|
||||
|
||||
lda >$E0C061
|
||||
and #$0080
|
||||
sta paddle_button_0
|
||||
sta paddle_button0
|
||||
|
||||
plb
|
||||
rtl
|
||||
@ -55,7 +55,11 @@ ReadPaddles entry
|
||||
* Return: X=JoyX, Y=JoyY
|
||||
GetJoyXY start ASMCODE
|
||||
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
|
||||
pea $C000 ;DP to I/O
|
||||
pld ;DP=$C000
|
||||
|
@ -17,6 +17,10 @@ segment "screen";
|
||||
|
||||
extern char joys_lz4;
|
||||
|
||||
#define J_KEY 0x26
|
||||
#define K_KEY 0x28
|
||||
|
||||
extern U16 bUseJoy;
|
||||
|
||||
/*
|
||||
* Display (J)oystick or (K)eyboard screen
|
||||
@ -26,8 +30,10 @@ extern char joys_lz4;
|
||||
U8
|
||||
screen_joykey(void)
|
||||
{
|
||||
static U8 seq = 0;
|
||||
static U8 wait = 0;
|
||||
static U16 seq = 0;
|
||||
static U16 wait = 0;
|
||||
|
||||
U16 bChosen = 0;
|
||||
|
||||
if (seq == 0) {
|
||||
sysvid_clearPalette();
|
||||
@ -42,26 +48,24 @@ screen_joykey(void)
|
||||
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 */
|
||||
return SCREEN_EXIT;
|
||||
|
||||
#if 0
|
||||
if (seq == 99) { /* we're done */
|
||||
if (KeyArray[ J_KEY ])
|
||||
{
|
||||
// Choose JoyStick
|
||||
bUseJoy = 1;
|
||||
bChosen = 1;
|
||||
}
|
||||
|
||||
if (KeyArray[ K_KEY ])
|
||||
{
|
||||
// Choose Keyboard
|
||||
bUseJoy = 0;
|
||||
bChosen = 1;
|
||||
}
|
||||
|
||||
if (bChosen) { /* we're done */
|
||||
sysvid_clear();
|
||||
sysvid_setGamePalette();
|
||||
sysvid_clearPalette();
|
||||
@ -70,9 +74,9 @@ screen_joykey(void)
|
||||
PresentSCB();
|
||||
PresentFrameBuffer();
|
||||
seq = 0;
|
||||
wait = 0;
|
||||
return SCREEN_DONE;
|
||||
}
|
||||
#endif
|
||||
|
||||
return SCREEN_RUNNING;
|
||||
}
|
||||
|
185
src/sysevt.c
185
src/sysevt.c
@ -70,6 +70,12 @@ extern U16 paddle_button0;
|
||||
|
||||
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
|
||||
|
||||
/*
|
||||
@ -105,71 +111,138 @@ processEvent()
|
||||
|
||||
control_status = 0;
|
||||
|
||||
// ADB Keyboard Driver
|
||||
if (KeyArray[ LARROW ])
|
||||
if (bUseJoy)
|
||||
{
|
||||
control_status |= CONTROL_LEFT;
|
||||
if (!(control_last & CONTROL_LEFT))
|
||||
ReadPaddles();
|
||||
|
||||
if (paddle0 <= JOY_LEFT)
|
||||
{
|
||||
control_last |= CONTROL_LEFT;
|
||||
KeyArray[ RARROW ] = 0;
|
||||
control_status |= CONTROL_LEFT;
|
||||
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
|
||||
{
|
||||
control_last &= ~CONTROL_LEFT;
|
||||
}
|
||||
if (KeyArray[ RARROW ])
|
||||
{
|
||||
control_status |= CONTROL_RIGHT;
|
||||
if (!(control_last & CONTROL_RIGHT))
|
||||
// ADB Keyboard Driver
|
||||
if (KeyArray[ A_KEY ] || KeyArray[ J_KEY ])
|
||||
{
|
||||
control_last |= CONTROL_RIGHT;
|
||||
KeyArray[ LARROW ] = 0;
|
||||
control_status |= CONTROL_LEFT;
|
||||
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 ])
|
||||
{
|
||||
control_status |= CONTROL_END;
|
||||
|
Loading…
x
Reference in New Issue
Block a user