changeset 2167:fe68a9ad509f

Merge
author Michael Pavone <pavone@retrodev.com>
date Sat, 23 Jul 2022 10:55:44 -0700
parents 3a6680e9204a (diff) 0bf077df45c3 (current diff)
children 42a0f6db81c3 cb9572145f8e
files
diffstat 9 files changed, 45 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Sat Jun 11 10:01:07 2022 -0700
+++ b/Makefile	Sat Jul 23 10:55:44 2022 -0700
@@ -361,7 +361,7 @@
 	$(CC) $(CFLAGS) -c -o $@ $<
 
 %.png : %.xcf
-	xcf2png $< > $@
+	convert -background none -flatten $< $@
 
 %.tiles : %.spec
 	./img2tiles.py -s $< $@
--- a/cdd_fader.c	Sat Jun 11 10:01:07 2022 -0700
+++ b/cdd_fader.c	Sat Jul 23 10:55:44 2022 -0700
@@ -8,6 +8,12 @@
 	fader->dst_attenuation = 0x4000;
 	fader->attenuation_step = 0;
 }
+
+void cdd_fader_deinit(cdd_fader *fader)
+{
+	render_free_source(fader->audio);
+}
+
 void cdd_fader_attenuation_write(cdd_fader *fader, uint16_t attenuation)
 {
 	fader->dst_attenuation = attenuation & 0xFFF0;
--- a/cdd_fader.h	Sat Jun 11 10:01:07 2022 -0700
+++ b/cdd_fader.h	Sat Jul 23 10:55:44 2022 -0700
@@ -14,6 +14,7 @@
 } cdd_fader;
 
 void cdd_fader_init(cdd_fader *fader);
+void cdd_fader_deinit(cdd_fader *fader);
 void cdd_fader_attenuation_write(cdd_fader *fader, uint16_t attenuation);
 void cdd_fader_data(cdd_fader *fader, uint8_t byte);
 void cdd_fader_pause(cdd_fader *fader);
--- a/genesis.c	Sat Jun 11 10:01:07 2022 -0700
+++ b/genesis.c	Sat Jul 23 10:55:44 2022 -0700
@@ -1549,6 +1549,9 @@
 static void free_genesis(system_header *system)
 {
 	genesis_context *gen = (genesis_context *)system;
+	if (gen->expansion) {
+		free_segacd(gen->expansion);
+	}
 	vdp_free(gen->vdp);
 	memmap_chunk *map = (memmap_chunk *)gen->m68k->options->gen.memmap;
 	m68k_options_free(gen->m68k->options);
--- a/rf5c164.c	Sat Jun 11 10:01:07 2022 -0700
+++ b/rf5c164.c	Sat Jul 23 10:55:44 2022 -0700
@@ -28,6 +28,11 @@
 	pcm->clock_step = divider * 4;
 }
 
+void rf5c164_deinit(rf5c164* pcm)
+{
+	render_free_source(pcm->audio);
+}
+
 //48 cycles per channel
 //1 external write per 16 cycles
 //3 external writes per channel/sample
--- a/rf5c164.h	Sat Jun 11 10:01:07 2022 -0700
+++ b/rf5c164.h	Sat Jul 23 10:55:44 2022 -0700
@@ -29,6 +29,7 @@
 } rf5c164;
 
 void rf5c164_init(rf5c164* pcm, uint32_t mclks, uint32_t divider);
+void rf5c164_deinit(rf5c164* pcm);
 void rf5c164_run(rf5c164* pcm, uint32_t cycle);
 void rf5c164_write(rf5c164* pcm, uint16_t address, uint8_t value);
 uint8_t rf5c164_read(rf5c164* pcm, uint16_t address);
--- a/rom.db	Sat Jun 11 10:01:07 2022 -0700
+++ b/rom.db	Sat Jul 23 10:55:44 2022 -0700
@@ -1460,3 +1460,17 @@
 		}
 	}
 }
+T-49116 {
+	name Beast Wrestler
+	device_overrides {
+		1 gamepad3.1
+		2 gamepad3.2
+	}
+}
+T-49186 {
+	name Exile
+	device_overrides {
+		1 gamepad3.1
+		2 gamepad3.2
+	}
+}
--- a/segacd.c	Sat Jun 11 10:01:07 2022 -0700
+++ b/segacd.c	Sat Jul 23 10:55:44 2022 -0700
@@ -1490,6 +1490,19 @@
 	return cd;
 }
 
+void free_segacd(segacd_context *cd)
+{
+	cdd_fader_deinit(&cd->fader);
+	rf5c164_deinit(&cd->pcm);
+	m68k_options_free(cd->m68k->options);
+	free(cd->m68k);
+	free(cd->bram);
+	free(cd->pcm_ram);
+	free(cd->word_ram);
+	free(cd->prog_ram);
+	free(cd->rom_mut);
+}
+
 memmap_chunk *segacd_main_cpu_map(segacd_context *cd, uint8_t cart_boot, uint32_t *num_chunks)
 {
 	static memmap_chunk main_cpu_map[] = {
--- a/segacd.h	Sat Jun 11 10:01:07 2022 -0700
+++ b/segacd.h	Sat Jul 23 10:55:44 2022 -0700
@@ -52,6 +52,7 @@
 } segacd_context;
 
 segacd_context *alloc_configure_segacd(system_media *media, uint32_t opts, uint8_t force_region, rom_info *info);
+void free_segacd(segacd_context *cd);
 memmap_chunk *segacd_main_cpu_map(segacd_context *cd, uint8_t cart_boot, uint32_t *num_chunks);
 uint32_t gen_cycle_to_scd(uint32_t cycle, genesis_context *gen);
 void scd_run(segacd_context *cd, uint32_t cycle);