diff sms.c @ 2544:99e59fdddbc3

Better cassette tape UX
author Michael Pavone <pavone@retrodev.com>
date Mon, 09 Dec 2024 13:45:35 -0800
parents 062f0ac1fe7e
children 251cc75574af
line wrap: on
line diff
--- a/sms.c	Thu Nov 28 23:44:36 2024 -0800
+++ b/sms.c	Mon Dec 09 13:45:35 2024 -0800
@@ -1491,6 +1491,7 @@
 	sms->cassette_state = TAPE_STOPPED;
 	sms->cassette_offset = data_sub_chunk;
 	sms->cassette = media;
+	sms->cassette_cycle = sms->z80->Z80_CYCLE;
 }
 
 static void start_vgm_log(system_header *system, char *filename)
@@ -1517,6 +1518,12 @@
 	sms->header.vgm_logging = 0;
 }
 
+static void lockon_change(system_header *system, system_media *media)
+{
+	sms_context *sms = (sms_context *)system;
+	load_cassette(sms, media);
+}
+
 sms_context *alloc_configure_sms(system_media *media, uint32_t opts, uint8_t force_region)
 {
 	sms_context *sms = calloc(1, sizeof(sms_context));
@@ -1660,6 +1667,9 @@
 	sms->header.toggle_debug_view = toggle_debug_view;
 	sms->header.cassette_action = cassette_action;
 	sms->header.type = SYSTEM_SMS;
+	if (is_sc3000) {
+		sms->header.lockon_change = lockon_change;
+	}
 
 	return sms;
 }