# HG changeset patch # User Mike Pavone # Date 1548030262 28800 # Node ID 395f684c53792421ff791db0d8ffd5b39d9efad0 # Parent 6c54bb5fe3b350d025993501d7a32da2aaa734b9 Fixed the most glaring issues in libretro build diff -r 6c54bb5fe3b3 -r 395f684c5379 Makefile --- 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) diff -r 6c54bb5fe3b3 -r 395f684c5379 genesis.c --- 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; } diff -r 6c54bb5fe3b3 -r 395f684c5379 jcart.c --- 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 #include "genesis.h" static io_port *get_ports(m68k_context *m68k) diff -r 6c54bb5fe3b3 -r 395f684c5379 libblastem.c --- 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 +#include #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) -{ -} diff -r 6c54bb5fe3b3 -r 395f684c5379 render.h --- 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 #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 -r 6c54bb5fe3b3 -r 395f684c5379 sms.c --- 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)