浏览代码

Add reset key (escape)

master
Nathaniel Walizer 11 个月前
父节点
当前提交
e95bd27755
共有 3 个文件被更改,包括 22 次插入5 次删除
  1. +7
    -0
      src/input.h
  2. +6
    -1
      src/nese.c
  3. +9
    -4
      src/sdl_input.c

+ 7
- 0
src/input.h 查看文件

@@ -7,6 +7,13 @@


// Emulator Implementation // Emulator Implementation


typedef enum {
input_Result_Error = -1,
input_Result_OK = 0,
input_Result_Quit = 1,
input_Result_Reset = 2,
} nes_Input_Result;

#define nes_controller_num_buttons (8U) #define nes_controller_num_buttons (8U)


typedef enum { typedef enum {


+ 6
- 1
src/nese.c 查看文件

@@ -142,7 +142,12 @@ int main(int argc, char* argv[]) {
// Update button states every rendered frame // Update button states every rendered frame
status = nes_input_update(input, &sys.input); status = nes_input_update(input, &sys.input);


if (status >= 0) {
if (input_Result_Reset == status) {
nes_reset(&sys);
status = 0;
}

if (status == 0) {
// Update audio, too // Update audio, too
status = nes_audio_fill(audio, &sys.apu); status = nes_audio_fill(audio, &sys.apu);
} }


+ 9
- 4
src/sdl_input.c 查看文件

@@ -48,6 +48,8 @@ static void sdl_input_done(nes_Input_Reader* input) {
sdl_lose_gamepad(input->data); sdl_lose_gamepad(input->data);
} }


static const int sdl_reset_key = SDLK_ESCAPE;

static const int sdl_keycodes[nes_controller_num_buttons] = { static const int sdl_keycodes[nes_controller_num_buttons] = {
SDLK_a, SDLK_a,
SDLK_s, SDLK_s,
@@ -78,13 +80,12 @@ static int button_index(int keycode, const int* codes) {


static int sdl_input_update(nes_Input_Reader* reader, static int sdl_input_update(nes_Input_Reader* reader,
nes_input* input) { nes_input* input) {
int status = 0;
int status = input_Result_OK;


SDL_Event event = {0}; SDL_Event event = {0};
while (0 != SDL_PollEvent(&event)) {
while (0 == status && 0 != SDL_PollEvent(&event)) {
if (SDL_QUIT == event.type) { if (SDL_QUIT == event.type) {
status = -1;
break;
status = input_Result_Quit;


} else if ( SDL_KEYDOWN == event.type || } else if ( SDL_KEYDOWN == event.type ||
SDL_KEYUP == event.type) { SDL_KEYUP == event.type) {
@@ -97,6 +98,10 @@ static int sdl_input_update(nes_Input_Reader* reader,
} else { } else {
input->controllers[0].buttons &= ~mask; input->controllers[0].buttons &= ~mask;
} }

} else if ( event.key.keysym.sym == sdl_reset_key &&
SDL_KEYDOWN == event.type) {
status = input_Result_Reset;
} }


} else if ( SDL_CONTROLLERBUTTONDOWN == event.type || } else if ( SDL_CONTROLLERBUTTONDOWN == event.type ||


正在加载...
取消
保存