Fix libretro compilation.

This commit is contained in:
BearOso 2023-02-03 16:31:11 -06:00
parent f4f7f03be3
commit 18b5a09a16
3 changed files with 29 additions and 24 deletions

View File

@ -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,13 +695,13 @@ bool8 S9xSaveCheatFile(const std::string &filename)
for (i = 0; i < Cheat.group.size(); i++)
{
fmt::print(file,
fprintf(file,
"cheat\n"
" name: {}\n"
" code: {}\n"
"{}\n",
Cheat.group[i].name,
S9xCheatGroupToText(i),
" name: %s\n"
" code: %s\n"
"%s\n",
Cheat.group[i].name.c_str(),
S9xCheatGroupToText(i).c_str(),
Cheat.group[i].enabled ? " enable\n" : "");
}

View File

@ -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

View File

@ -16,6 +16,7 @@
#include "crosshairs.h"
#include <stdio.h>
#include <vector>
#include <string>
#ifdef _WIN32
#include <direct.h>
@ -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() {}