summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2016-03-19 17:53:50 -0700
committerMichael Pavone <pavone@retrodev.com>2016-03-19 17:53:50 -0700
commitbbcb174acd1e9935c06b8d19acbf2fba8f46845f (patch)
tree886613ff29be47475e3e04b37dedb95335ced7f2
parentec7d2e3aa5a16c4d77cb7644ceba48c48fecdb9f (diff)
Make Exit option in menu work
-rw-r--r--blastem.c6
-rw-r--r--blastem.h1
-rw-r--r--menu.c5
-rw-r--r--menu.s682
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: