|
|
@@ -108,14 +108,10 @@ static int loadsave_tick(loadsave_state* loadsave) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
static int select_rom(menu_state* menu, |
|
|
static int select_rom(menu_state* menu, |
|
|
nese_Components* comp, |
|
|
|
|
|
cart_info* cur_cart) { |
|
|
|
|
|
|
|
|
nese_Components* comp) { |
|
|
int status = 0; |
|
|
int status = 0; |
|
|
cart_info cart = {0}; |
|
|
cart_info cart = {0}; |
|
|
cart_info ref_cart = { |
|
|
|
|
|
.filename = cur_cart->filename, |
|
|
|
|
|
.file = cur_cart->file, |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
cart_info ref_cart = comp->state->cart; |
|
|
nes_cart new_cart = {0}; |
|
|
nes_cart new_cart = {0}; |
|
|
|
|
|
|
|
|
while (0 == status && NULL == cart.file) { |
|
|
while (0 == status && NULL == cart.file) { |
|
|
@@ -124,7 +120,7 @@ static int select_rom(menu_state* menu, |
|
|
char message[1024]; |
|
|
char message[1024]; |
|
|
snprintf(message, sizeof(message) - 1, |
|
|
snprintf(message, sizeof(message) - 1, |
|
|
"Could not load\n%s", cart.filename + 4); |
|
|
"Could not load\n%s", cart.filename + 4); |
|
|
int button = modal_popup(message, comp, cur_cart); |
|
|
|
|
|
|
|
|
int button = modal_popup(message, comp); |
|
|
if (input_Result_Quit == (button >> 8)) { |
|
|
if (input_Result_Quit == (button >> 8)) { |
|
|
// Program closed inside modal |
|
|
// Program closed inside modal |
|
|
status = input_Result_Quit; |
|
|
status = input_Result_Quit; |
|
|
@@ -152,13 +148,13 @@ static int select_rom(menu_state* menu, |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (0 == status && NULL != cart.file) { |
|
|
if (0 == status && NULL != cart.file) { |
|
|
save_sram(&comp->sys->cart, cur_cart->filename); |
|
|
|
|
|
|
|
|
save_sram(&comp->sys->cart, comp->state->cart.filename); |
|
|
|
|
|
|
|
|
nes_cart_done(&comp->sys->cart); |
|
|
nes_cart_done(&comp->sys->cart); |
|
|
cart_info_done(cur_cart); |
|
|
|
|
|
|
|
|
cart_info_done(&comp->state->cart); |
|
|
|
|
|
|
|
|
comp->sys->cart = new_cart; |
|
|
comp->sys->cart = new_cart; |
|
|
*cur_cart = cart; |
|
|
|
|
|
|
|
|
comp->state->cart = cart; |
|
|
|
|
|
|
|
|
nes_setup_cart(comp->sys); |
|
|
nes_setup_cart(comp->sys); |
|
|
|
|
|
|
|
|
@@ -170,13 +166,12 @@ static int select_rom(menu_state* menu, |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
static int do_game_menu(menu_state* menu, |
|
|
static int do_game_menu(menu_state* menu, |
|
|
nese_Components* comp, |
|
|
|
|
|
nese_State* state) { |
|
|
|
|
|
|
|
|
nese_Components* comp) { |
|
|
int status = 0; |
|
|
int status = 0; |
|
|
menu_state rom_menu = {0}; |
|
|
menu_state rom_menu = {0}; |
|
|
|
|
|
|
|
|
while (1) { |
|
|
while (1) { |
|
|
status = run_game_menu(menu, comp, state); |
|
|
|
|
|
|
|
|
status = run_game_menu(menu, comp); |
|
|
|
|
|
|
|
|
if ( input_Result_View == status || |
|
|
if ( input_Result_View == status || |
|
|
input_Result_Scale == status || |
|
|
input_Result_Scale == status || |
|
|
@@ -184,21 +179,20 @@ static int do_game_menu(menu_state* menu, |
|
|
if (input_Result_View == status) { |
|
|
if (input_Result_View == status) { |
|
|
#ifndef STANDALONE |
|
|
#ifndef STANDALONE |
|
|
|
|
|
|
|
|
state->flags ^= (1 << State_Bit_Fullscreen); |
|
|
|
|
|
|
|
|
comp->state->flags ^= (1 << State_Bit_Fullscreen); |
|
|
#endif |
|
|
#endif |
|
|
} else if (input_Result_Scale == status) { |
|
|
} else if (input_Result_Scale == status) { |
|
|
state->flags ^= (1 << State_Bit_Integer_Scale); |
|
|
|
|
|
|
|
|
comp->state->flags ^= (1 << State_Bit_Integer_Scale); |
|
|
} else { |
|
|
} else { |
|
|
state->flags ^= (1 << State_Bit_CRT_Effect); |
|
|
|
|
|
|
|
|
comp->state->flags ^= (1 << State_Bit_CRT_Effect); |
|
|
} |
|
|
} |
|
|
nes_render_set_flags(comp->rend, state->flags); |
|
|
|
|
|
|
|
|
nes_render_set_flags(comp->rend, comp->state->flags); |
|
|
continue; |
|
|
continue; |
|
|
|
|
|
|
|
|
} else if (input_Result_Menu == status) { |
|
|
} else if (input_Result_Menu == status) { |
|
|
status = select_rom(&rom_menu, comp, &state->cart); |
|
|
|
|
|
|
|
|
status = select_rom(&rom_menu, comp); |
|
|
|
|
|
|
|
|
if (input_Result_Cancel == status) { |
|
|
if (input_Result_Cancel == status) { |
|
|
status = input_Result_OK; |
|
|
|
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@@ -229,6 +223,7 @@ int main(int argc, char* argv[]) { |
|
|
.reader = &sdl_input, |
|
|
.reader = &sdl_input, |
|
|
.audio = &sdl_audio, |
|
|
.audio = &sdl_audio, |
|
|
.sys = &sys, |
|
|
.sys = &sys, |
|
|
|
|
|
.state = &state, |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
if (status == 0) { |
|
|
if (status == 0) { |
|
|
@@ -262,7 +257,7 @@ int main(int argc, char* argv[]) { |
|
|
|
|
|
|
|
|
// If we didn't launch with a file, run the loader |
|
|
// If we didn't launch with a file, run the loader |
|
|
if (0 == status && NULL == state.cart.file) { |
|
|
if (0 == status && NULL == state.cart.file) { |
|
|
status = select_rom(NULL, &components, &state.cart); |
|
|
|
|
|
|
|
|
status = select_rom(NULL, &components); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (status == 0) { |
|
|
if (status == 0) { |
|
|
@@ -323,8 +318,7 @@ int main(int argc, char* argv[]) { |
|
|
|
|
|
|
|
|
} if (input_Result_Menu == status) { |
|
|
} if (input_Result_Menu == status) { |
|
|
status = do_game_menu( |
|
|
status = do_game_menu( |
|
|
&game_menu, &components, &state |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
&game_menu, &components); |
|
|
if ( input_Result_Load == status || |
|
|
if ( input_Result_Load == status || |
|
|
input_Result_Save == status) { |
|
|
input_Result_Save == status) { |
|
|
loadsave.mode = status; |
|
|
loadsave.mode = status; |
|
|
|