Work in progress
This commit is contained in:
35
main.cpp
35
main.cpp
@@ -4,6 +4,35 @@
|
||||
#include "vdp.h"
|
||||
#include <SDL.h>
|
||||
|
||||
#define BTN_ANY 0
|
||||
#define BTN_UP 1
|
||||
#define BTN_DOWN 2
|
||||
#define BTN_LEFT 3
|
||||
#define BTN_RIGHT 4
|
||||
#define BTN_A 5
|
||||
#define BTN_B 6
|
||||
#define BTN_MENU 7
|
||||
|
||||
bool anykey = false;
|
||||
unsigned char data_in;
|
||||
|
||||
void input_data_in(const unsigned char& value) {
|
||||
data_in = value;
|
||||
}
|
||||
|
||||
unsigned char input_data_out() {
|
||||
const Uint8* keys = SDL_GetKeyboardState(nullptr);
|
||||
switch (data_in) {
|
||||
case BTN_ANY: return anykey; break;
|
||||
case BTN_UP: return keys[SDL_SCANCODE_UP]; break;
|
||||
case BTN_DOWN: return keys[SDL_SCANCODE_DOWN]; break;
|
||||
case BTN_LEFT: return keys[SDL_SCANCODE_LEFT]; break;
|
||||
case BTN_RIGHT: return keys[SDL_SCANCODE_RIGHT]; break;
|
||||
case BTN_A: return keys[SDL_SCANCODE_RCTRL]; break;
|
||||
case BTN_B: return keys[SDL_SCANCODE_RSHIFT]; break;
|
||||
case BTN_MENU: return keys[SDL_SCANCODE_RETURN]; break;
|
||||
};
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
|
||||
@@ -11,22 +40,26 @@ int main(int argc, char** argv) {
|
||||
vdp_init();
|
||||
vm_register_out_port(10, vdp_data_out);
|
||||
vm_register_out_port(11, vdp_cmd_out);
|
||||
vm_register_out_port(20, input_data_in);
|
||||
vm_register_in_port(21, input_data_out);
|
||||
|
||||
static bool should_quit = false;
|
||||
static SDL_Event sdlEvent;
|
||||
SDL_Scancode just_pressed;
|
||||
|
||||
//Uint32 ticks = SDL_GetTicks();
|
||||
while (!should_quit) {
|
||||
just_pressed = SDL_SCANCODE_UNKNOWN;
|
||||
while (SDL_PollEvent(&sdlEvent)) {
|
||||
if (sdlEvent.type == SDL_QUIT) { should_quit = true; break; }
|
||||
else if (sdlEvent.type == SDL_KEYDOWN) {
|
||||
//anyKey = true;
|
||||
anykey = true;
|
||||
just_pressed = sdlEvent.key.keysym.scancode;
|
||||
if (sdlEvent.key.keysym.scancode == SDL_SCANCODE_ESCAPE) { should_quit = true; }
|
||||
}
|
||||
}
|
||||
vm_step();
|
||||
//if (SDL_GetTicks() - ticks >= 15) { vdp_flip(); ticks = SDL_GetTicks(); }
|
||||
}
|
||||
|
||||
vdp_quit();
|
||||
|
||||
Reference in New Issue
Block a user