Change button name to proper name and add missing (Seriously why it was missing?) support for the Y buttons.

Removed the "flipped" flag as it should not be part of the IO logic.
This commit is contained in:
Godzil 2019-09-10 16:00:55 +01:00
parent ea6bfacb66
commit b2b066ba22
3 changed files with 93 additions and 73 deletions

View File

@ -66,12 +66,16 @@ uint8_t iee_Mode = EEPROM_READ;
uint8 *ws_ioRam=NULL;
uint8 ws_key_start;
uint8 ws_key_left;
uint8 ws_key_right;
uint8 ws_key_up;
uint8 ws_key_down;
uint8 ws_key_button_1;
uint8 ws_key_button_2;
uint8 ws_key_x4;
uint8 ws_key_x2;
uint8 ws_key_x1;
uint8 ws_key_x3;
uint8 ws_key_y4;
uint8 ws_key_y2;
uint8 ws_key_y1;
uint8 ws_key_y3;
uint8 ws_key_button_a;
uint8 ws_key_button_b;
uint8 ws_key_flipped;
int rtcDataRegisterReadCount=0;
@ -90,12 +94,16 @@ int rtcDataRegisterReadCount=0;
void ws_io_reset(void)
{
ws_key_start=0;
ws_key_left=0;
ws_key_right=0;
ws_key_up=0;
ws_key_down=0;
ws_key_button_1=0;
ws_key_button_2=0;
ws_key_x4=0;
ws_key_x2=0;
ws_key_x1=0;
ws_key_x3=0;
ws_key_y4=0;
ws_key_y2=0;
ws_key_y1=0;
ws_key_y3=0;
ws_key_button_a=0;
ws_key_button_b=0;
int i;
for (i=0; i<0x100; i++)
@ -372,44 +380,24 @@ BYTE cpu_readport(BYTE port)
if(w1&0x40)
{
w2=0x00;
if (ws_key_flipped)
{
w2=(ws_key_start<<1);
}
else
{
w2=(ws_key_start<<1)|(ws_key_button_1<<2)|(ws_key_button_2<<3);
}
w2=(ws_key_start<<1)|(ws_key_button_a<<2)|(ws_key_button_b<<3);
//printf("2 - %02X\n", w2);
return (uint8)((w1&0xf0)|w2);
}
if(w1&0x20)
{
w2=0x00;
if (ws_key_flipped)
{
w2=(ws_key_button_1)|(ws_key_button_2<<2);
}
else
{
w2=(ws_key_up<<0)|(ws_key_right<<1)|(ws_key_down<<2)|(ws_key_left<<3);
}
w2=(ws_key_x1<<0)|(ws_key_x2<<1)|(ws_key_x3<<2)|(ws_key_x4<<3);
//printf("2 - %02X\n", w2);
return (uint8)((w1&0xf0)|w2);
}
if(w1&0x10)
{
w2=0x00;
if (ws_key_flipped)
{
w2=(ws_key_up<<1)|(ws_key_right<<2)|(ws_key_down<<3)|(ws_key_left);
}
w2=(ws_key_y1<<0)|(ws_key_y2<<1)|(ws_key_y3<<2)|(ws_key_y4<<3);
//printf("1 - %02X\n", w2);
return (uint8)((w1&0xf0)|w2);
}

View File

@ -12,14 +12,18 @@
#ifndef __IO_H__
#define __IO_H__
extern uint8 *ws_ioRam;
extern uint8 ws_key_start;
extern uint8 ws_key_left;
extern uint8 ws_key_right;
extern uint8 ws_key_up;
extern uint8 ws_key_down;
extern uint8 ws_key_button_1;
extern uint8 ws_key_button_2;
extern uint8 *ws_ioRam;
extern uint8 ws_key_start;
extern uint8 ws_key_x4;
extern uint8 ws_key_x2;
extern uint8 ws_key_x1;
extern uint8 ws_key_x3;
extern uint8 ws_key_y4;
extern uint8 ws_key_y2;
extern uint8 ws_key_y1;
extern uint8 ws_key_y3;
extern uint8 ws_key_button_a;
extern uint8 ws_key_button_b;
void ws_io_init(void);
void ws_io_reset(void);

View File

@ -45,73 +45,81 @@ if (joystick)
if (SDL_JoystickGetButton(joystick,1))
{
ws_key_button_1=1;
ws_key_button_a=1;
}
else
{
ws_key_button_1=0;
ws_key_button_a=0;
}
if (SDL_JoystickGetButton(joystick,2))
{
ws_key_button_2=1;
ws_key_button_b=1;
}
else
{
ws_key_button_2=0;
ws_key_button_b=0;
}
if (SDL_JoystickGetAxis(joystick,0)<-7000)
{
ws_key_left=1;
ws_key_x4=1;
}
else
{
ws_key_left=0;
ws_key_x4=0;
}
if (SDL_JoystickGetAxis(joystick,0)>7000)
{
ws_key_right=1;
ws_key_x2=1;
}
else
{
ws_key_right=0;
ws_key_x2=0;
}
if (SDL_JoystickGetAxis(joystick,1)<-7000)
{
ws_key_up=1;
ws_key_x1=1;
}
else
{
ws_key_up=0;
ws_key_x1=0;
}
if (SDL_JoystickGetAxis(joystick,1)>7000)
{
ws_key_down=1;
ws_key_x3=1;
}
else
{
ws_key_down=0;
ws_key_x3=0;
}
ws_key_y4=0;
ws_key_y2=0;
ws_key_y1=0;
ws_key_y3=0;
}
else
{
ws_key_start=0;
ws_key_left=0;
ws_key_right=0;
ws_key_up=0;
ws_key_down=0;
ws_key_button_1=0;
ws_key_button_2=0;
ws_key_x4=0;
ws_key_x2=0;
ws_key_x1=0;
ws_key_x3=0;
ws_key_y4=0;
ws_key_y2=0;
ws_key_y1=0;
ws_key_y3=0;
ws_key_button_a=0;
ws_key_button_b=0;
}
uint8 *keystate = SDL_GetKeyState(NULL);
if ( keystate[SDLK_d])
if ( keystate[SDLK_e])
{
dump_memory();
}
@ -129,22 +137,22 @@ if ( keystate[SDLK_ESCAPE] )
if ( keystate[SDLK_UP] )
{
ws_key_up=1;
ws_key_x1=1;
}
if ( keystate[SDLK_DOWN] )
{
ws_key_down=1;
ws_key_x3=1;
}
if ( keystate[SDLK_RIGHT] )
{
ws_key_right=1;
ws_key_x2=1;
}
if ( keystate[SDLK_LEFT] )
{
ws_key_left=1;
ws_key_x4=1;
}
if (keystate[SDLK_RETURN])
@ -154,20 +162,40 @@ if (keystate[SDLK_RETURN])
if (keystate[SDLK_c])
{
ws_key_button_1=1;
ws_key_button_a=1;
}
if (keystate[SDLK_x])
{
ws_key_button_2=1;
ws_key_button_b=1;
}
if (keystate[SDLK_p])
if (keystate[SDLK_w])
{
ws_cyclesByLine+=10;
ws_key_y1=1;
}
if (keystate[SDLK_a])
{
ws_key_y4=1;
}
if (keystate[SDLK_s])
{
ws_key_y3=1;
}
if (keystate[SDLK_d])
{
ws_key_y2=1;
}
if (keystate[SDLK_o])
{
ws_cyclesByLine+=10;
}
if (keystate[SDLK_l])
{
ws_cyclesByLine-=10;
}