Merge pull request #262 from retro-wertz/libretro

Libretro
This commit is contained in:
Zach Bacon 2018-06-16 07:43:29 -04:00 committed by GitHub
commit fad1dd15cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 38 additions and 20 deletions

View File

@ -164,13 +164,20 @@ void flashSaveDecide(uint32_t address, uint8_t byte)
if (saveType == 1) if (saveType == 1)
return; return;
// log("Deciding save type %08x\n", address); if (cpuSramEnabled && cpuFlashEnabled) {
if (address == 0x0e005555) { // log("Deciding save type %08x\n", address);
saveType = 3; if (address == 0x0e005555) {
cpuSaveGameFunc = flashWrite; saveType = 3;
} else { cpuSramEnabled = false;
saveType = 2; cpuSaveGameFunc = flashWrite;
cpuSaveGameFunc = sramWrite; } else {
saveType = 2;
cpuFlashEnabled = false;
cpuSaveGameFunc = sramWrite;
}
log("%s emulation is enabled by writing to: $%08x : %02x\n",
cpuSramEnabled ? "SRAM" : "FLASH", address, byte);
} }
(*cpuSaveGameFunc)(address, byte); (*cpuSaveGameFunc)(address, byte);

View File

@ -67,6 +67,11 @@ extern uint8_t biosProtected[4];
extern void (*cpuSaveGameFunc)(uint32_t, uint8_t); extern void (*cpuSaveGameFunc)(uint32_t, uint8_t);
extern bool cpuSramEnabled;
extern bool cpuFlashEnabled;
extern bool cpuEEPROMEnabled;
extern bool cpuEEPROMSensorEnabled;
#ifdef BKPT_SUPPORT #ifdef BKPT_SUPPORT
extern uint8_t freezeWorkRAM[0x40000]; extern uint8_t freezeWorkRAM[0x40000];
extern uint8_t freezeInternalRAM[0x8000]; extern uint8_t freezeInternalRAM[0x8000];

View File

@ -243,7 +243,7 @@ bool rtcWrite(uint32_t address, uint16_t value)
} break; } break;
default: default:
#ifndef __LIBRETRO__ #ifdef GBA_LOGGING
log(N_("Unknown RTC command %02x"), rtcClockData.command); log(N_("Unknown RTC command %02x"), rtcClockData.command);
#endif #endif
rtcClockData.state = IDLE; rtcClockData.state = IDLE;

View File

@ -225,9 +225,14 @@ include Makefile.common
OBJS := $(SOURCES_CXX:.cpp=.o) OBJS := $(SOURCES_CXX:.cpp=.o)
VBA_DEFINES += -D__LIBRETRO__ -DFINAL_VERSION -DC_CORE -DUSE_GBA_ONLY -DNO_LINK VBA_DEFINES += -D__LIBRETRO__ -DFINAL_VERSION -DC_CORE -DNO_LINK -DNO_DEBUGGER
VBA_DEFINES += -DFRONTEND_SUPPORTS_RGB565 VBA_DEFINES += -DFRONTEND_SUPPORTS_RGB565
ifneq ($(SANITIZER),)
CFLAGS += -fsanitize=$(SANITIZER)
LDFLAGS += -fsanitize=$(SANITIZER)
endif
ifeq ($(DEBUG), 1) ifeq ($(DEBUG), 1)
CFLAGS += -g CFLAGS += -g
CXXFLAGS += -g CXXFLAGS += -g

View File

@ -10,15 +10,10 @@ SOURCES_CXX := $(CORE_DIR)/gba/GBA-thumb.cpp \
$(CORE_DIR)/gba/Mode4.cpp \ $(CORE_DIR)/gba/Mode4.cpp \
$(CORE_DIR)/gba/Mode3.cpp \ $(CORE_DIR)/gba/Mode3.cpp \
$(CORE_DIR)/gba/Mode5.cpp \ $(CORE_DIR)/gba/Mode5.cpp \
$(CORE_DIR)/gba/GBALink.cpp \
$(CORE_DIR)/gba/Mode2.cpp \ $(CORE_DIR)/gba/Mode2.cpp \
$(CORE_DIR)/gba/GBASockClient.cpp \
$(CORE_DIR)/gba/elf.cpp \
$(CORE_DIR)/gba/ereader.cpp \ $(CORE_DIR)/gba/ereader.cpp \
$(CORE_DIR)/gba/GBA-arm.cpp \ $(CORE_DIR)/gba/GBA-arm.cpp \
$(CORE_DIR)/gba/bios.cpp \ $(CORE_DIR)/gba/bios.cpp \
$(CORE_DIR)/gba/gbafilter.cpp \
$(CORE_DIR)/gba/remote.cpp \
$(CORE_DIR)/gba/Mode0.cpp \ $(CORE_DIR)/gba/Mode0.cpp \
$(CORE_DIR)/gba/Flash.cpp \ $(CORE_DIR)/gba/Flash.cpp \
$(CORE_DIR)/gba/GBAGfx.cpp \ $(CORE_DIR)/gba/GBAGfx.cpp \
@ -27,13 +22,11 @@ SOURCES_CXX := $(CORE_DIR)/gba/GBA-thumb.cpp \
$(CORE_DIR)/gba/EEprom.cpp \ $(CORE_DIR)/gba/EEprom.cpp \
$(CORE_DIR)/gba/RTC.cpp \ $(CORE_DIR)/gba/RTC.cpp \
$(CORE_DIR)/gba/Sram.cpp \ $(CORE_DIR)/gba/Sram.cpp \
$(CORE_DIR)/apu/Effects_Buffer.cpp \
$(CORE_DIR)/apu/Gb_Oscs.cpp \ $(CORE_DIR)/apu/Gb_Oscs.cpp \
$(CORE_DIR)/apu/Gb_Apu_State.cpp \ $(CORE_DIR)/apu/Gb_Apu_State.cpp \
$(CORE_DIR)/apu/Blip_Buffer.cpp \ $(CORE_DIR)/apu/Blip_Buffer.cpp \
$(CORE_DIR)/apu/Multi_Buffer.cpp \ $(CORE_DIR)/apu/Multi_Buffer.cpp \
$(CORE_DIR)/apu/Gb_Apu.cpp \ $(CORE_DIR)/apu/Gb_Apu.cpp \
$(CORE_DIR)/common/Patch.cpp \
$(CORE_DIR)/libretro/libretro.cpp \ $(CORE_DIR)/libretro/libretro.cpp \
$(CORE_DIR)/libretro/UtilRetro.cpp \ $(CORE_DIR)/libretro/UtilRetro.cpp \
$(CORE_DIR)/libretro/SoundRetro.cpp \ $(CORE_DIR)/libretro/SoundRetro.cpp \

View File

@ -238,16 +238,12 @@ void utilUpdateSystemColorMaps(bool lcd)
for (int i = 0; i < 0x10000; i++) { for (int i = 0; i < 0x10000; i++) {
systemColorMap16[i] = ((i & 0x1f) << systemRedShift) | (((i & 0x3e0) >> 5) << systemGreenShift) | (((i & 0x7c00) >> 10) << systemBlueShift); systemColorMap16[i] = ((i & 0x1f) << systemRedShift) | (((i & 0x3e0) >> 5) << systemGreenShift) | (((i & 0x7c00) >> 10) << systemBlueShift);
} }
if (lcd)
gbafilter_pal(systemColorMap16, 0x10000);
} break; } break;
case 24: case 24:
case 32: { case 32: {
for (int i = 0; i < 0x10000; i++) { for (int i = 0; i < 0x10000; i++) {
systemColorMap32[i] = ((i & 0x1f) << systemRedShift) | (((i & 0x3e0) >> 5) << systemGreenShift) | (((i & 0x7c00) >> 10) << systemBlueShift); systemColorMap32[i] = ((i & 0x1f) << systemRedShift) | (((i & 0x3e0) >> 5) << systemGreenShift) | (((i & 0x7c00) >> 10) << systemBlueShift);
} }
if (lcd)
gbafilter_pal32(systemColorMap32, 0x10000);
} break; } break;
} }
} }

View File

@ -1042,3 +1042,15 @@ SoundDriver* systemSoundInit()
soundShutdown(); soundShutdown();
return new SoundRetro(); return new SoundRetro();
} }
void log(const char* defaultMsg, ...)
{
va_list valist;
char buf[2048];
va_start(valist, defaultMsg);
vsnprintf(buf, 2048, defaultMsg, valist);
va_end(valist);
if (log_cb)
log_cb(RETRO_LOG_INFO, "%s", buf);
}