From bbcb174acd1e9935c06b8d19acbf2fba8f46845f Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Sat, 19 Mar 2016 17:53:50 -0700 Subject: Make Exit option in menu work --- blastem.c | 6 ++++-- blastem.h | 1 + menu.c | 5 +++++ menu.s68 | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/blastem.c b/blastem.c index 0b5f03c..1ec1319 100644 --- a/blastem.c +++ b/blastem.c @@ -1170,6 +1170,9 @@ int main(int argc, char ** argv) start_genesis(genesis, menu ? NULL : statefile, menu == debug_target ? debuggerfun : NULL); for(;;) { + if (genesis->should_exit) { + break; + } if (menu && menu_context->next_rom) { if (game_context) { if (game_context->save_type != SAVE_NONE) { @@ -1222,8 +1225,7 @@ int main(int argc, char ** argv) genesis->m68k->options->address_log = address_log; map_all_bindings(genesis->ports); start_genesis(genesis, statefile, menu == debug_target ? debuggerfun : NULL); - } - else if (menu && game_context) { + } else if (menu && game_context) { genesis->arena = set_current_arena(game_context->arena); genesis = game_context; cart = genesis->cart; diff --git a/blastem.h b/blastem.h index c5150a4..a828180 100644 --- a/blastem.h +++ b/blastem.h @@ -43,6 +43,7 @@ typedef struct { uint8_t save_type; io_port ports[3]; uint8_t bus_busy; + uint8_t should_exit; eeprom_state eeprom; } genesis_context; diff --git a/menu.c b/menu.c index 0399bd9..c656dca 100644 --- a/menu.c +++ b/menu.c @@ -190,6 +190,11 @@ void * menu_write_w(uint32_t address, void * context, uint16_t value) gen->next_rom = alloc_concat_m(3, pieces); m68k->should_return = 1; break; + case 3: { + m68k->should_return = 1; + gen->should_exit = 1; + break; + } } default: fprintf(stderr, "WARNING: write to undefined menu port %X\n", address); diff --git a/menu.s68 b/menu.s68 index 6085455..ed6cb8d 100644 --- a/menu.s68 +++ b/menu.s68 @@ -913,7 +913,7 @@ show_about: bra .wait exit: - ;TODO: implement me + move.w #1, menu_port+12 bra exit about_text: -- cgit v1.2.3