From 18b5a09a162589e59d32ac1209d48fe670e19501 Mon Sep 17 00:00:00 2001 From: BearOso Date: Fri, 3 Feb 2023 16:31:11 -0600 Subject: [PATCH] Fix libretro compilation. --- cheats2.cpp | 32 ++++++++++++++++++-------------- libretro/Makefile.common | 2 +- libretro/libretro.cpp | 19 ++++++++++--------- 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/cheats2.cpp b/cheats2.cpp index c58e2b6a..997d58c2 100644 --- a/cheats2.cpp +++ b/cheats2.cpp @@ -6,7 +6,6 @@ #include "bml.h" #include "cheats.h" -#include "fmt/format.h" #include "snes9x.h" #include "memmap.h" @@ -522,10 +521,14 @@ int S9xModifyCheatGroup(uint32 num, const std::string &name, const std::string & std::string S9xCheatToText(const SCheat &c) { - if (c.conditional) - return fmt::format("{:06x}={:02x}?{:02x}", c.address, c.cond_byte, c.byte); + char output[256]{}; - return fmt::format("{:06x}={:02x}", c.address, c.byte); + if (c.conditional) + sprintf(output, "%06x=%02x?%02x", c.address, c.cond_byte, c.byte); + else + sprintf(output, "%06x=%02x", c.address, c.byte); + + return std::string(output); } std::string S9xCheatGroupToText(SCheatGroup &g) @@ -638,8 +641,9 @@ static bool8 S9xLoadCheatFileClassic(const std::string &filename) c.address = data[2] | (data[3] << 8) | (data[4] << 16); std::string name((const char *)&data[8], 20); - auto cheat = fmt::format("{:x}={:x}", c.address, c.byte); - + char code[32]{}; + sprintf(code, "%x=%x", c.address, c.byte); + std::string cheat(code); S9xAddCheatGroup(name, cheat); if (c.enabled) @@ -691,14 +695,14 @@ bool8 S9xSaveCheatFile(const std::string &filename) for (i = 0; i < Cheat.group.size(); i++) { - fmt::print(file, - "cheat\n" - " name: {}\n" - " code: {}\n" - "{}\n", - Cheat.group[i].name, - S9xCheatGroupToText(i), - Cheat.group[i].enabled ? " enable\n" : ""); + fprintf(file, + "cheat\n" + " name: %s\n" + " code: %s\n" + "%s\n", + Cheat.group[i].name.c_str(), + S9xCheatGroupToText(i).c_str(), + Cheat.group[i].enabled ? " enable\n" : ""); } fclose(file); diff --git a/libretro/Makefile.common b/libretro/Makefile.common index a751357c..ccb29c3f 100644 --- a/libretro/Makefile.common +++ b/libretro/Makefile.common @@ -60,5 +60,5 @@ SOURCES_CXX := $(CORE_DIR)/apu/apu.cpp \ $(CORE_DIR)/sha256.cpp \ $(CORE_DIR)/bml.cpp \ $(CORE_DIR)/movie.cpp \ - $(CORE_DIR)/compat.cpp \ + $(CORE_DIR)/fscompat.cpp \ $(CORE_DIR)/libretro/libretro.cpp diff --git a/libretro/libretro.cpp b/libretro/libretro.cpp index b9c8abd2..4f0767cc 100644 --- a/libretro/libretro.cpp +++ b/libretro/libretro.cpp @@ -16,6 +16,7 @@ #include "crosshairs.h" #include #include +#include #ifdef _WIN32 #include @@ -936,10 +937,10 @@ void retro_cheat_set(unsigned index, bool enabled, const char *codeline) } /* Goldfinger was broken and nobody noticed. Removed */ - if (S9xAddCheatGroup ("retro", code) >= 0) + if (S9xAddCheatGroup (std::string("retro"), std::string(code)) >= 0) { if (enabled) - S9xEnableCheatGroup (Cheat.g.size () - 1); + S9xEnableCheatGroup (Cheat.group.size () - 1); } else { @@ -1059,14 +1060,14 @@ static bool8 LoadBIOS(uint8 *biosrom, const char *biosname, int biossize) char name[PATH_MAX + 1]; bool8 r = FALSE; - strcpy(name, S9xGetDirectory(ROMFILENAME_DIR)); + strcpy(name, S9xGetDirectory(ROMFILENAME_DIR).c_str()); strcat(name, SLASH_STR); strcat(name, biosname); fp = fopen(name, "rb"); if (!fp) { - strcpy(name, S9xGetDirectory(BIOS_DIR)); + strcpy(name, S9xGetDirectory(BIOS_DIR).c_str()); strcat(name, SLASH_STR); strcat(name, biosname); @@ -2108,23 +2109,23 @@ const char* S9xGetFilename(const char* in, s9x_getdirtype type) return in; } -const char* S9xGetDirectory(s9x_getdirtype type) +std::string S9xGetDirectory(s9x_getdirtype type) { switch (type) { case BIOS_DIR: - return retro_system_directory; + return std::string(retro_system_directory); default: - return g_rom_dir; + return std::string(g_rom_dir); } - return ""; + return std::string(""); } void S9xInitInputDevices() {} void S9xHandlePortCommand(s9xcommand_t, short, short) {} bool S9xPollButton(unsigned int, bool*) { return false; } void S9xToggleSoundChannel(int) {} -const char* S9xGetFilenameInc(const char* in, s9x_getdirtype) { return ""; } +std::string S9xGetFilenameInc(std::string in, s9x_getdirtype) { return ""; } const char* S9xBasename(const char* in) { return in; } bool8 S9xInitUpdate() { return TRUE; } void S9xExtraUsage() {}