|
|
|
@@ -33,6 +33,17 @@ static int wait_for_input(nes_Input_Reader* reader, |
|
|
|
return status; |
|
|
|
} |
|
|
|
|
|
|
|
static int wait_for_input_quiet(nes_Input_Reader* reader, |
|
|
|
nes_input* input) { |
|
|
|
int status = 0; |
|
|
|
while ( input_Result_Quit != status && |
|
|
|
input->controllers[0].buttons) { |
|
|
|
time_sleep(US_PER_S / 60); |
|
|
|
status = nes_input_update(reader, input); |
|
|
|
} |
|
|
|
return ( input_Result_Quit == status ? |
|
|
|
input_Result_Quit : 0); |
|
|
|
} |
|
|
|
|
|
|
|
static int count_files(DIR* dir) { |
|
|
|
int count = 0; |
|
|
|
@@ -170,7 +181,8 @@ static int run_menu(menu_state* state, const file_list* files, |
|
|
|
if (input_Result_Quit == special) { |
|
|
|
status = special; |
|
|
|
|
|
|
|
} else if (buttons & (1 << Button_B)) { |
|
|
|
} else if ( input_Result_Menu == special || |
|
|
|
(buttons & (1 << Button_B))) { |
|
|
|
status = input_Result_Cancel; |
|
|
|
|
|
|
|
} else if (buttons & ( (1 << Button_A) | |
|
|
|
@@ -277,10 +289,16 @@ int run_game_menu(menu_state* state, nes_Renderer* rend, |
|
|
|
int status = run_menu(&menu, &options, 100, |
|
|
|
rend, input, sys); |
|
|
|
|
|
|
|
if (NULL != state) *state = menu; |
|
|
|
if (input_Result_Menu == status) { |
|
|
|
status = input_Result_Cancel; |
|
|
|
} |
|
|
|
|
|
|
|
if (0 == status) status = choices[menu.cursor]; |
|
|
|
|
|
|
|
wait_for_input_quiet(input, &sys->input); |
|
|
|
|
|
|
|
if (NULL != state) *state = menu; |
|
|
|
|
|
|
|
return status; |
|
|
|
} |
|
|
|
|
|
|
|
|