From b2b066ba223e35246e6bcea4603a404e2aba6ea3 Mon Sep 17 00:00:00 2001 From: Godzil Date: Tue, 10 Sep 2019 16:00:55 +0100 Subject: [PATCH] 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. --- oswan/source/io.cpp | 64 +++++++++++++------------------- oswan/source/io.h | 20 ++++++---- oswan/source/temp/key.h | 82 +++++++++++++++++++++++++++-------------- 3 files changed, 93 insertions(+), 73 deletions(-) diff --git a/oswan/source/io.cpp b/oswan/source/io.cpp index 06f5a83..890ba09 100644 --- a/oswan/source/io.cpp +++ b/oswan/source/io.cpp @@ -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); } diff --git a/oswan/source/io.h b/oswan/source/io.h index 02f6515..324efb8 100644 --- a/oswan/source/io.h +++ b/oswan/source/io.h @@ -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); diff --git a/oswan/source/temp/key.h b/oswan/source/temp/key.h index de6d22d..c21d112 100644 --- a/oswan/source/temp/key.h +++ b/oswan/source/temp/key.h @@ -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; }