changeset 949:5e4fb650de58

Make Exit option in menu work
author Michael Pavone <pavone@retrodev.com>
date Sat, 19 Mar 2016 17:53:50 -0700
parents 6b90ec50daf3
children 938c72a2f7a9
files blastem.c blastem.h menu.c menu.s68
diffstat 4 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/blastem.c	Sat Mar 19 17:40:17 2016 -0700
+++ b/blastem.c	Sat Mar 19 17:53:50 2016 -0700
@@ -1170,6 +1170,9 @@
 	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 @@
 			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;
--- a/blastem.h	Sat Mar 19 17:40:17 2016 -0700
+++ b/blastem.h	Sat Mar 19 17:53:50 2016 -0700
@@ -43,6 +43,7 @@
 	uint8_t        save_type;
 	io_port        ports[3];
 	uint8_t        bus_busy;
+	uint8_t        should_exit;
 	eeprom_state   eeprom;
 } genesis_context;
 
--- a/menu.c	Sat Mar 19 17:40:17 2016 -0700
+++ b/menu.c	Sat Mar 19 17:53:50 2016 -0700
@@ -190,6 +190,11 @@
 			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);
--- a/menu.s68	Sat Mar 19 17:40:17 2016 -0700
+++ b/menu.s68	Sat Mar 19 17:53:50 2016 -0700
@@ -913,7 +913,7 @@
 	bra .wait
 	
 exit:
-	;TODO: implement me
+	move.w #1, menu_port+12
 	bra exit
 	
 about_text: