mirror of
https://github.com/0ldsk00l/nestopia.git
synced 2025-04-02 10:31:51 -04:00
123 lines
2.5 KiB
C++
123 lines
2.5 KiB
C++
#ifndef _INPUT_H_
|
|
#define _INPUT_H_
|
|
|
|
#define NUMGAMEPADS 2
|
|
#define NUMBUTTONS 10
|
|
#define TOTALBUTTONS (NUMGAMEPADS*NUMBUTTONS)
|
|
#define DEADZONE (32768/3)
|
|
|
|
#include <SDL.h>
|
|
#include "core/api/NstApiInput.hpp"
|
|
#include "core/api/NstApiVideo.hpp"
|
|
|
|
using namespace Nes::Api;
|
|
|
|
typedef struct {
|
|
SDL_Scancode u;
|
|
SDL_Scancode d;
|
|
SDL_Scancode l;
|
|
SDL_Scancode r;
|
|
SDL_Scancode select;
|
|
SDL_Scancode start;
|
|
SDL_Scancode a;
|
|
SDL_Scancode b;
|
|
SDL_Scancode ta;
|
|
SDL_Scancode tb;
|
|
|
|
SDL_Event ju;
|
|
SDL_Event jd;
|
|
SDL_Event jl;
|
|
SDL_Event jr;
|
|
SDL_Event jselect;
|
|
SDL_Event jstart;
|
|
SDL_Event ja;
|
|
SDL_Event jb;
|
|
SDL_Event jta;
|
|
SDL_Event jtb;
|
|
} gamepad_t;
|
|
|
|
typedef struct {
|
|
// Player 1
|
|
char *kb_p1u;
|
|
char *kb_p1d;
|
|
char *kb_p1l;
|
|
char *kb_p1r;
|
|
char *kb_p1select;
|
|
char *kb_p1start;
|
|
char *kb_p1a;
|
|
char *kb_p1b;
|
|
char *kb_p1ta;
|
|
char *kb_p1tb;
|
|
|
|
char *js_p1u;
|
|
char *js_p1d;
|
|
char *js_p1l;
|
|
char *js_p1r;
|
|
char *js_p1select;
|
|
char *js_p1start;
|
|
char *js_p1a;
|
|
char *js_p1b;
|
|
char *js_p1ta;
|
|
char *js_p1tb;
|
|
|
|
// Player 2
|
|
char *kb_p2u;
|
|
char *kb_p2d;
|
|
char *kb_p2l;
|
|
char *kb_p2r;
|
|
char *kb_p2select;
|
|
char *kb_p2start;
|
|
char *kb_p2a;
|
|
char *kb_p2b;
|
|
char *kb_p2ta;
|
|
char *kb_p2tb;
|
|
|
|
char *js_p2u;
|
|
char *js_p2d;
|
|
char *js_p2l;
|
|
char *js_p2r;
|
|
char *js_p2select;
|
|
char *js_p2start;
|
|
char *js_p2a;
|
|
char *js_p2b;
|
|
char *js_p2ta;
|
|
char *js_p2tb;
|
|
} inputsettings_t;
|
|
|
|
typedef struct {
|
|
unsigned char player;
|
|
unsigned char nescode;
|
|
unsigned char pressed;
|
|
unsigned char turboa;
|
|
unsigned char turbob;
|
|
} nesinput_t;
|
|
|
|
typedef struct {
|
|
int p1a;
|
|
int p1b;
|
|
int p2a;
|
|
int p2b;
|
|
} turbo_t;
|
|
|
|
void input_init();
|
|
void input_joysticks_detect();
|
|
void input_joysticks_close();
|
|
void input_process(Input::Controllers *controllers, SDL_Event event);
|
|
void input_pulse_turbo(Input::Controllers *controllers);
|
|
void input_inject(Input::Controllers *controllers, nesinput_t input);
|
|
void input_match_joystick(Input::Controllers *controllers, SDL_Event event);
|
|
void input_match_keyboard(Input::Controllers *controllers, SDL_Event event);
|
|
void input_match_mouse(Input::Controllers *controllers, SDL_Event event);
|
|
char* input_translate_event(SDL_Event event);
|
|
SDL_Event input_translate_string(char *string);
|
|
int input_checksign(int axisvalue);
|
|
void input_config_read_new();
|
|
void input_config_read();
|
|
void input_config_write();
|
|
void input_set_default();
|
|
static int input_config_match(void* user, const char* section, const char* name, const char* value);
|
|
|
|
int input_configure_item(int pnum, int bnum, int type);
|
|
void input_set_item(SDL_Event event, int type, int pnum, int counter);
|
|
|
|
#endif
|