changeset 1688:395f684c5379

Fixed the most glaring issues in libretro build
author Mike Pavone <pavone@retrodev.com>
date Sun, 20 Jan 2019 16:24:22 -0800
parents 6c54bb5fe3b3
children 7f42a93f18a4
files Makefile genesis.c jcart.c libblastem.c render.h sms.c
diffstat 6 files changed, 25 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Sun Jan 20 01:03:21 2019 -0800
+++ b/Makefile	Sun Jan 20 16:24:22 2019 -0800
@@ -75,10 +75,10 @@
 endif #Darwin
 
 else
-CFLAGS:=$(shell pkg-config --cflags-only-I $(LIBS)) $(CFLAGS)
 ifeq ($(MAKECMDGOALS),libblastem.so)
 LDFLAGS:=-lm
 else
+CFLAGS:=$(shell pkg-config --cflags-only-I $(LIBS)) $(CFLAGS)
 LDFLAGS:=-lm $(shell pkg-config --libs $(LIBS))
 endif #libblastem.so
 
@@ -208,7 +208,7 @@
 endif
 
 ifeq ($(MAKECMDGOALS),libblastem.so)
-CFLAGS+= -fpic
+CFLAGS+= -fpic -DIS_LIB
 endif
 
 all : $(ALL)
--- a/genesis.c	Sun Jan 20 01:03:21 2019 -0800
+++ b/genesis.c	Sun Jan 20 16:24:22 2019 -0800
@@ -33,7 +33,11 @@
 #define LINES_NTSC 262
 #define LINES_PAL 313
 
+#ifdef IS_LIB
+#define MAX_SOUND_CYCLES 1000
+#else
 #define MAX_SOUND_CYCLES 100000	
+#endif
 
 void genesis_serialize(genesis_context *gen, serialize_buffer *buf, uint32_t m68k_pc)
 {
@@ -1070,10 +1074,12 @@
 			resume_68k(gen->m68k);
 		}
 	}
+#ifndef IS_LIB
 	bindings_release_capture();
 	vdp_release_framebuffer(gen->vdp);
 	render_pause_source(gen->ym->audio);
 	render_pause_source(gen->psg->audio);
+#endif
 }
 
 static void start_genesis(system_header *system, char *statefile)
@@ -1116,11 +1122,13 @@
 static void resume_genesis(system_header *system)
 {
 	genesis_context *gen = (genesis_context *)system;
+#ifndef IS_LIB
 	render_set_video_standard((gen->version_reg & HZ50) ? VID_PAL : VID_NTSC);
 	bindings_reacquire_capture();
 	vdp_reacquire_framebuffer(gen->vdp);
 	render_resume_source(gen->ym->audio);
 	render_resume_source(gen->psg->audio);
+#endif
 	resume_68k(gen->m68k);
 	handle_reset_requests(gen);
 }
@@ -1134,6 +1142,7 @@
 static void request_exit(system_header *system)
 {
 	genesis_context *gen = (genesis_context *)system;
+	gen->m68k->target_cycle = gen->m68k->current_cycle;
 	gen->m68k->should_return = 1;
 }
 
--- a/jcart.c	Sun Jan 20 01:03:21 2019 -0800
+++ b/jcart.c	Sun Jan 20 16:24:22 2019 -0800
@@ -1,3 +1,4 @@
+#include <stdlib.h>
 #include "genesis.h"
 
 static io_port *get_ports(m68k_context *m68k)
--- a/libblastem.c	Sun Jan 20 01:03:21 2019 -0800
+++ b/libblastem.c	Sun Jan 20 16:24:22 2019 -0800
@@ -1,3 +1,5 @@
+#include <stdlib.h>
+#include <string.h>
 #include "libretro.h"
 #include "system.h"
 #include "util.h"
@@ -284,6 +286,7 @@
 audio_source *render_audio_source(uint64_t master_clock, uint64_t sample_divider, uint8_t channels)
 {
 	audio_sources[num_audio_sources] = calloc(1, sizeof(audio_source));
+	audio_sources[num_audio_sources]->freq = master_clock / sample_divider;
 	return audio_sources[num_audio_sources++];
 }
 
@@ -295,11 +298,8 @@
 {
 	for (int i = 0; i < num_audio_sources; i++)
 	{
-		if (!audio_sources[i]->num_samples) {
-			return;
-		}
-		int32_t effective_freq = audio_sources[i]->freq / audio_sources[i]->num_samples;
-		if (abs(effective_freq - 53267) > 53267) {
+		int32_t min_samples = audio_sources[i]->freq / 53267;
+		if (audio_sources[i]->num_samples < min_samples) {
 			return;
 		}
 	}
@@ -327,12 +327,7 @@
 	src->num_samples++;
 	check_put_sample();
 }
-void render_pause_source(audio_source *src)
-{
-}
-void render_resume_source(audio_source *src)
-{
-}
+
 void render_free_source(audio_source *src)
 {
 	int index;
@@ -350,9 +345,3 @@
 void bindings_set_mouse_mode(uint8_t mode)
 {
 }
-void bindings_release_capture(void)
-{
-}
-void bindings_reacquire_capture(void)
-{
-}
--- a/render.h	Sun Jan 20 01:03:21 2019 -0800
+++ b/render.h	Sun Jan 20 16:24:22 2019 -0800
@@ -6,7 +6,7 @@
 #ifndef RENDER_H_
 #define RENDER_H_
 
-//TODO: Throw an ifdef in here once there's more than one renderer
+#ifndef IS_LIB
 #include <SDL.h>
 #define RENDERKEY_UP       SDLK_UP
 #define RENDERKEY_DOWN     SDLK_DOWN
@@ -61,6 +61,7 @@
 #define RENDER_DPAD_LEFT   SDL_HAT_LEFT
 #define RENDER_DPAD_RIGHT  SDL_HAT_RIGHT
 #define render_relative_mouse SDL_SetRelativeMouseMode
+#endif
 
 #define MAX_JOYSTICKS 8
 #define MAX_MICE 8
--- a/sms.c	Sun Jan 20 01:03:21 2019 -0800
+++ b/sms.c	Sun Jan 20 16:24:22 2019 -0800
@@ -386,18 +386,22 @@
 			target_cycle -= adjust;
 		}
 	}
+#ifndef IS_LIB
 	bindings_release_capture();
 	vdp_release_framebuffer(sms->vdp);
 	render_pause_source(sms->psg->audio);
+#endif
 	sms->should_return = 0;
 }
 
 static void resume_sms(system_header *system)
 {
 	sms_context *sms = (sms_context *)system;
+#ifndef IS_LIB
 	bindings_reacquire_capture();
 	vdp_reacquire_framebuffer(sms->vdp);
 	render_resume_source(sms->psg->audio);
+#endif
 	run_sms(system);
 }
 
@@ -446,6 +450,7 @@
 {
 	sms_context *sms = (sms_context *)system;
 	sms->should_return = 1;
+	sms->z80->target_cycle = sms->z80->sync_cycle = sms->z80->current_cycle;
 }
 
 static void inc_debug_mode(system_header *system)