summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2019-01-20 16:24:22 -0800
committerMike Pavone <pavone@retrodev.com>2019-01-20 16:24:22 -0800
commit27404027deee4f439a7c053bb9eb8425e995cb4c (patch)
tree8a9e0d4a719a4257facf3350b7854842b0a06613
parent9b2cc51def59fa3cf50ffe92dc59cd9fe669668b (diff)
Fixed the most glaring issues in libretro build
-rw-r--r--Makefile4
-rw-r--r--genesis.c9
-rw-r--r--jcart.c1
-rw-r--r--libblastem.c23
-rw-r--r--render.h3
-rw-r--r--sms.c5
6 files changed, 25 insertions, 20 deletions
diff --git a/Makefile b/Makefile
index c695508..7b2fc5e 100644
--- a/Makefile
+++ b/Makefile
@@ -75,10 +75,10 @@ endif
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 @@ ALL+= termhelper
endif
ifeq ($(MAKECMDGOALS),libblastem.so)
-CFLAGS+= -fpic
+CFLAGS+= -fpic -DIS_LIB
endif
all : $(ALL)
diff --git a/genesis.c b/genesis.c
index 0196191..e50a87d 100644
--- a/genesis.c
+++ b/genesis.c
@@ -33,7 +33,11 @@ uint32_t MCLKS_PER_68K;
#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 @@ static void handle_reset_requests(genesis_context *gen)
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 start_genesis(system_header *system, char *statefile)
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 inc_debug_mode(system_header *system)
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;
}
diff --git a/jcart.c b/jcart.c
index 734d79d..37fd1c4 100644
--- a/jcart.c
+++ b/jcart.c
@@ -1,3 +1,4 @@
+#include <stdlib.h>
#include "genesis.h"
static io_port *get_ports(m68k_context *m68k)
diff --git a/libblastem.c b/libblastem.c
index de83b69..6e64c78 100644
--- a/libblastem.c
+++ b/libblastem.c
@@ -1,3 +1,5 @@
+#include <stdlib.h>
+#include <string.h>
#include "libretro.h"
#include "system.h"
#include "util.h"
@@ -284,6 +286,7 @@ static uint8_t num_audio_sources;
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 @@ static void check_put_sample(void)
{
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 @@ void render_put_stereo_sample(audio_source *src, int16_t left, int16_t right)
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 render_free_source(audio_source *src)
void bindings_set_mouse_mode(uint8_t mode)
{
}
-void bindings_release_capture(void)
-{
-}
-void bindings_reacquire_capture(void)
-{
-}
diff --git a/render.h b/render.h
index a5f585e..d1ff7c0 100644
--- a/render.h
+++ b/render.h
@@ -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
diff --git a/sms.c b/sms.c
index 6f1c85b..2230466 100644
--- a/sms.c
+++ b/sms.c
@@ -386,18 +386,22 @@ static void run_sms(system_header *system)
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 @@ static void request_exit(system_header *system)
{
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)