mirror of https://github.com/snes9xgit/snes9x.git
unix: Make port compile.
This commit is contained in:
parent
b7704733ec
commit
13eefd9944
|
@ -8,7 +8,7 @@
|
||||||
OS = `uname -s -r -m|sed \"s/ /-/g\"|tr \"[A-Z]\" \"[a-z]\"|tr \"/()\" \"___\"`
|
OS = `uname -s -r -m|sed \"s/ /-/g\"|tr \"[A-Z]\" \"[a-z]\"|tr \"/()\" \"___\"`
|
||||||
BUILDDIR = .
|
BUILDDIR = .
|
||||||
|
|
||||||
OBJECTS = ../apu/apu.o ../apu/bapu/dsp/sdsp.o ../apu/bapu/smp/smp.o ../apu/bapu/smp/smp_state.o ../bsx.o ../c4.o ../c4emu.o ../cheats.o ../cheats2.o ../clip.o ../conffile.o ../controls.o ../cpu.o ../cpuexec.o ../cpuops.o ../crosshairs.o ../dma.o ../dsp.o ../dsp1.o ../dsp2.o ../dsp3.o ../dsp4.o ../fxinst.o ../fxemu.o ../gfx.o ../globals.o ../memmap.o ../msu1.o ../movie.o ../obc1.o ../ppu.o ../stream.o ../sa1.o ../sa1cpu.o ../screenshot.o ../sdd1.o ../sdd1emu.o ../seta.o ../seta010.o ../seta011.o ../seta018.o ../snapshot.o ../snes9x.o ../spc7110.o ../srtc.o ../tile.o ../tileimpl-n1x1.o ../tileimpl-n2x1.o ../tileimpl-h2x1.o ../filter/2xsai.o ../filter/blit.o ../filter/epx.o ../filter/hq2x.o ../filter/snes_ntsc.o ../statemanager.o ../sha256.o ../bml.o ../compat.o unix.o x11.o
|
OBJECTS = ../apu/apu.o ../apu/bapu/dsp/sdsp.o ../apu/bapu/smp/smp.o ../apu/bapu/smp/smp_state.o ../bsx.o ../c4.o ../c4emu.o ../cheats.o ../cheats2.o ../clip.o ../conffile.o ../controls.o ../cpu.o ../cpuexec.o ../cpuops.o ../crosshairs.o ../dma.o ../dsp.o ../dsp1.o ../dsp2.o ../dsp3.o ../dsp4.o ../fxinst.o ../fxemu.o ../gfx.o ../globals.o ../memmap.o ../msu1.o ../movie.o ../obc1.o ../ppu.o ../stream.o ../sa1.o ../sa1cpu.o ../screenshot.o ../sdd1.o ../sdd1emu.o ../seta.o ../seta010.o ../seta011.o ../seta018.o ../snapshot.o ../snes9x.o ../spc7110.o ../srtc.o ../tile.o ../tileimpl-n1x1.o ../tileimpl-n2x1.o ../tileimpl-h2x1.o ../filter/2xsai.o ../filter/blit.o ../filter/epx.o ../filter/hq2x.o ../filter/snes_ntsc.o ../statemanager.o ../sha256.o ../bml.o ../fscompat.o unix.o x11.o
|
||||||
DEFS = -DMITSHM
|
DEFS = -DMITSHM
|
||||||
|
|
||||||
ifdef S9XDEBUGGER
|
ifdef S9XDEBUGGER
|
||||||
|
|
168
unix/unix.cpp
168
unix/unix.cpp
|
@ -51,6 +51,7 @@
|
||||||
#include "movie.h"
|
#include "movie.h"
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
#include "conffile.h"
|
#include "conffile.h"
|
||||||
|
#include "fscompat.h"
|
||||||
#ifdef NETPLAY_SUPPORT
|
#ifdef NETPLAY_SUPPORT
|
||||||
#include "netplay.h"
|
#include "netplay.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -359,7 +360,7 @@ void S9xExtraUsage (void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef NOSOUND
|
#ifndef NOSOUND
|
||||||
#ifdef USE_THREADS && ! defined(ALSA)
|
#if defined(USE_THREADS) && !defined(ALSA)
|
||||||
S9xMessage(S9X_INFO, S9X_USAGE, "-threadsound Use a separate thread to output sound");
|
S9xMessage(S9X_INFO, S9X_USAGE, "-threadsound Use a separate thread to output sound");
|
||||||
#endif
|
#endif
|
||||||
S9xMessage(S9X_INFO, S9X_USAGE, "-buffersize Sound generating buffer size in millisecond");
|
S9xMessage(S9X_INFO, S9X_USAGE, "-buffersize Sound generating buffer size in millisecond");
|
||||||
|
@ -392,7 +393,7 @@ void S9xParseArg (char **argv, int &i, int argc)
|
||||||
if (!strcasecmp(argv[i], "-carta"))
|
if (!strcasecmp(argv[i], "-carta"))
|
||||||
{
|
{
|
||||||
if (i + 1 < argc)
|
if (i + 1 < argc)
|
||||||
strncpy(Settings.CartAName, argv[++i], _MAX_PATH);
|
strncpy(Settings.CartAName, argv[++i], PATH_MAX);
|
||||||
else
|
else
|
||||||
S9xUsage();
|
S9xUsage();
|
||||||
}
|
}
|
||||||
|
@ -400,7 +401,7 @@ void S9xParseArg (char **argv, int &i, int argc)
|
||||||
if (!strcasecmp(argv[i], "-cartb"))
|
if (!strcasecmp(argv[i], "-cartb"))
|
||||||
{
|
{
|
||||||
if (i + 1 < argc)
|
if (i + 1 < argc)
|
||||||
strncpy(Settings.CartBName, argv[++i], _MAX_PATH);
|
strncpy(Settings.CartBName, argv[++i], PATH_MAX);
|
||||||
else
|
else
|
||||||
S9xUsage();
|
S9xUsage();
|
||||||
}
|
}
|
||||||
|
@ -670,78 +671,65 @@ static int make_snes9x_dirs (void)
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * S9xGetDirectory (enum s9x_getdirtype dirtype)
|
std::string S9xGetDirectory (enum s9x_getdirtype dirtype)
|
||||||
{
|
{
|
||||||
static char s[PATH_MAX + 1];
|
std::string retval = Memory.ROMFilename;
|
||||||
|
size_t pos;
|
||||||
|
|
||||||
if (dirNames[dirtype][0])
|
if (dirNames[dirtype][0])
|
||||||
snprintf(s, PATH_MAX + 1, "%s%s%s", s9x_base_dir, SLASH_STR, dirNames[dirtype]);
|
return std::string(s9x_base_dir) + SLASH_STR + dirNames[dirtype];
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (dirtype)
|
switch (dirtype)
|
||||||
{
|
{
|
||||||
case DEFAULT_DIR:
|
case DEFAULT_DIR:
|
||||||
strncpy(s, s9x_base_dir, PATH_MAX + 1);
|
retval = s9x_base_dir;
|
||||||
s[PATH_MAX] = 0;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HOME_DIR:
|
case HOME_DIR:
|
||||||
strncpy(s, getenv("HOME"), PATH_MAX + 1);
|
retval = std::string(getenv("HOME"));
|
||||||
s[PATH_MAX] = 0;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ROMFILENAME_DIR:
|
case ROMFILENAME_DIR:
|
||||||
strncpy(s, Memory.ROMFilename, PATH_MAX + 1);
|
retval = Memory.ROMFilename;
|
||||||
s[PATH_MAX] = 0;
|
pos = retval.rfind("/");
|
||||||
|
if (pos != std::string::npos)
|
||||||
for (int i = strlen(s); i >= 0; i--)
|
retval = retval.substr(pos);
|
||||||
{
|
|
||||||
if (s[i] == SLASH_CHAR)
|
|
||||||
{
|
|
||||||
s[i] = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
s[0] = 0;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return retval;
|
||||||
return (s);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * S9xGetFilename (const char *ex, enum s9x_getdirtype dirtype)
|
std::string S9xGetFilenameInc (std::string ex, enum s9x_getdirtype dirtype)
|
||||||
{
|
{
|
||||||
static char s[PATH_MAX + 1];
|
struct stat buf;
|
||||||
char drive[_MAX_DRIVE + 1], dir[_MAX_DIR + 1], fname[_MAX_FNAME + 1], ext[_MAX_EXT + 1];
|
|
||||||
|
|
||||||
_splitpath(Memory.ROMFilename, drive, dir, fname, ext);
|
SplitPath path = splitpath(Memory.ROMFilename);
|
||||||
snprintf(s, PATH_MAX + 1, "%s%s%s%s", S9xGetDirectory(dirtype), SLASH_STR, fname, ex);
|
std::string directory = S9xGetDirectory(dirtype);
|
||||||
|
|
||||||
return (s);
|
if (ex[0] != '.')
|
||||||
}
|
{
|
||||||
|
ex = "." + ex;
|
||||||
const char * S9xGetFilenameInc (const char *ex, enum s9x_getdirtype dirtype)
|
}
|
||||||
{
|
|
||||||
static char s[PATH_MAX + 1];
|
|
||||||
char drive[_MAX_DRIVE + 1], dir[_MAX_DIR + 1], fname[_MAX_FNAME + 1], ext[_MAX_EXT + 1];
|
|
||||||
|
|
||||||
unsigned int i = 0;
|
|
||||||
const char *d;
|
|
||||||
struct stat buf;
|
|
||||||
|
|
||||||
_splitpath(Memory.ROMFilename, drive, dir, fname, ext);
|
|
||||||
d = S9xGetDirectory(dirtype);
|
|
||||||
|
|
||||||
|
std::string new_filename;
|
||||||
|
unsigned int i = 0;
|
||||||
do
|
do
|
||||||
snprintf(s, PATH_MAX + 1, "%s%s%s.%03d%s", d, SLASH_STR, fname, i++, ex);
|
{
|
||||||
while (stat(s, &buf) == 0 && i < 1000);
|
std::string new_extension = std::to_string(i);
|
||||||
|
while (new_extension.length() < 3)
|
||||||
|
new_extension = "0" + new_extension;
|
||||||
|
new_extension += ex;
|
||||||
|
|
||||||
return (s);
|
new_filename = path.stem + new_extension;
|
||||||
|
i++;
|
||||||
|
} while (stat(new_filename.c_str(), &buf) == 0 && i < 1000);
|
||||||
|
|
||||||
|
return new_filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * S9xBasename (const char *f)
|
const char * S9xBasename (const char *f)
|
||||||
|
@ -756,26 +744,28 @@ const char * S9xBasename (const char *f)
|
||||||
|
|
||||||
bool8 S9xOpenSnapshotFile (const char *filename, bool8 read_only, STREAM *file)
|
bool8 S9xOpenSnapshotFile (const char *filename, bool8 read_only, STREAM *file)
|
||||||
{
|
{
|
||||||
char s[PATH_MAX + 1];
|
if (read_only)
|
||||||
char drive[_MAX_DRIVE + 1], dir[_MAX_DIR + 1], fname[_MAX_FNAME + 1], ext[_MAX_EXT + 1];
|
{
|
||||||
|
if ((*file = OPEN_STREAM(filename, "rb")))
|
||||||
|
return (true);
|
||||||
|
else
|
||||||
|
fprintf(stderr, "Failed to open file stream for reading.\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((*file = OPEN_STREAM(filename, "wb")))
|
||||||
|
{
|
||||||
|
return (true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Couldn't open stream with zlib.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_splitpath(filename, drive, dir, fname, ext);
|
fprintf(stderr, "Couldn't open snapshot file:\n%s\n", filename);
|
||||||
|
|
||||||
if (*drive || *dir == SLASH_CHAR || (strlen(dir) > 1 && *dir == '.' && *(dir + 1) == SLASH_CHAR))
|
return false;
|
||||||
{
|
|
||||||
strncpy(s, filename, PATH_MAX + 1);
|
|
||||||
s[PATH_MAX] = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
snprintf(s, PATH_MAX + 1, "%s%s%s", S9xGetDirectory(SNAPSHOT_DIR), SLASH_STR, fname);
|
|
||||||
|
|
||||||
if (!*ext && strlen(s) <= PATH_MAX - 4)
|
|
||||||
strcat(s, ".frz");
|
|
||||||
|
|
||||||
if ((*file = OPEN_STREAM(s, read_only ? "rb" : "wb")))
|
|
||||||
return (TRUE);
|
|
||||||
|
|
||||||
return (FALSE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void S9xCloseSnapshotFile (STREAM file)
|
void S9xCloseSnapshotFile (STREAM file)
|
||||||
|
@ -813,7 +803,7 @@ void S9xToggleSoundChannel (int c)
|
||||||
|
|
||||||
void S9xAutoSaveSRAM (void)
|
void S9xAutoSaveSRAM (void)
|
||||||
{
|
{
|
||||||
Memory.SaveSRAM(S9xGetFilename(".srm", SRAM_DIR));
|
Memory.SaveSRAM(S9xGetFilename(".srm", SRAM_DIR).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void S9xSyncSpeed (void)
|
void S9xSyncSpeed (void)
|
||||||
|
@ -1607,7 +1597,7 @@ void S9xExit (void)
|
||||||
delete s_AudioOutput;
|
delete s_AudioOutput;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Memory.SaveSRAM(S9xGetFilename(".srm", SRAM_DIR));
|
Memory.SaveSRAM(S9xGetFilename(".srm", SRAM_DIR).c_str());
|
||||||
S9xResetSaveTimer(FALSE);
|
S9xResetSaveTimer(FALSE);
|
||||||
S9xSaveCheatFile(S9xGetFilename(".cht", CHEAT_DIR));
|
S9xSaveCheatFile(S9xGetFilename(".cht", CHEAT_DIR));
|
||||||
S9xUnmapAllControls();
|
S9xUnmapAllControls();
|
||||||
|
@ -1711,34 +1701,21 @@ int main (int argc, char **argv)
|
||||||
|
|
||||||
if (!loaded)
|
if (!loaded)
|
||||||
{
|
{
|
||||||
char s1[PATH_MAX + 1], s2[PATH_MAX + 1];
|
std::string s1, s2;
|
||||||
char drive[_MAX_DRIVE + 1], dir[_MAX_DIR + 1], fname[_MAX_FNAME + 1], ext[_MAX_EXT + 1];
|
|
||||||
|
|
||||||
s1[0] = s2[0] = 0;
|
|
||||||
|
|
||||||
if (Settings.CartAName[0])
|
if (Settings.CartAName[0])
|
||||||
{
|
{
|
||||||
_splitpath(Settings.CartAName, drive, dir, fname, ext);
|
SplitPath path = splitpath(Settings.CartAName);
|
||||||
snprintf(s1, PATH_MAX + 1, "%s%s%s", S9xGetDirectory(ROM_DIR), SLASH_STR, fname);
|
s1 = makepath("", S9xGetDirectory(ROM_DIR), path.stem, path.ext);
|
||||||
if (ext[0] && (strlen(s1) <= PATH_MAX - 1 - strlen(ext)))
|
|
||||||
{
|
|
||||||
strcat(s1, ".");
|
|
||||||
strcat(s1, ext);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Settings.CartBName[0])
|
if (Settings.CartBName[0])
|
||||||
{
|
{
|
||||||
_splitpath(Settings.CartBName, drive, dir, fname, ext);
|
SplitPath path = splitpath(Settings.CartBName);
|
||||||
snprintf(s2, PATH_MAX + 1, "%s%s%s", S9xGetDirectory(ROM_DIR), SLASH_STR, fname);
|
s2 = makepath("", S9xGetDirectory(ROM_DIR), path.stem, path.ext);
|
||||||
if (ext[0] && (strlen(s2) <= PATH_MAX - 1 - strlen(ext)))
|
|
||||||
{
|
|
||||||
strcat(s2, ".");
|
|
||||||
strcat(s2, ext);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
loaded = Memory.LoadMultiCart(s1, s2);
|
loaded = Memory.LoadMultiCart(s1.c_str(), s2.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1748,18 +1725,9 @@ int main (int argc, char **argv)
|
||||||
|
|
||||||
if (!loaded && rom_filename[0])
|
if (!loaded && rom_filename[0])
|
||||||
{
|
{
|
||||||
char s[PATH_MAX + 1];
|
SplitPath path = splitpath(rom_filename);
|
||||||
char drive[_MAX_DRIVE + 1], dir[_MAX_DIR + 1], fname[_MAX_FNAME + 1], ext[_MAX_EXT + 1];
|
std::string s = makepath("", S9xGetDirectory(ROM_DIR), path.stem, path.ext);
|
||||||
|
loaded = Memory.LoadROM(s.c_str());
|
||||||
_splitpath(rom_filename, drive, dir, fname, ext);
|
|
||||||
snprintf(s, PATH_MAX + 1, "%s%s%s", S9xGetDirectory(ROM_DIR), SLASH_STR, fname);
|
|
||||||
if (ext[0] && (strlen(s) <= PATH_MAX - 1 - strlen(ext)))
|
|
||||||
{
|
|
||||||
strcat(s, ".");
|
|
||||||
strcat(s, ext);
|
|
||||||
}
|
|
||||||
|
|
||||||
loaded = Memory.LoadROM(s);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1772,7 +1740,7 @@ int main (int argc, char **argv)
|
||||||
S9xDeleteCheats();
|
S9xDeleteCheats();
|
||||||
S9xCheatsEnable();
|
S9xCheatsEnable();
|
||||||
NSRTControllerSetup();
|
NSRTControllerSetup();
|
||||||
Memory.LoadSRAM(S9xGetFilename(".srm", SRAM_DIR));
|
Memory.LoadSRAM(S9xGetFilename(".srm", SRAM_DIR).c_str());
|
||||||
|
|
||||||
if (Settings.ApplyCheats)
|
if (Settings.ApplyCheats)
|
||||||
{
|
{
|
||||||
|
|
34
unix/x11.cpp
34
unix/x11.cpp
|
@ -1631,40 +1631,6 @@ void S9xProcessEvents (bool8 block)
|
||||||
|
|
||||||
const char * S9xSelectFilename (const char *def, const char *dir1, const char *ext1, const char *title)
|
const char * S9xSelectFilename (const char *def, const char *dir1, const char *ext1, const char *title)
|
||||||
{
|
{
|
||||||
static char s[PATH_MAX + 1];
|
|
||||||
char buffer[PATH_MAX + 1];
|
|
||||||
|
|
||||||
SetXRepeat(TRUE);
|
|
||||||
|
|
||||||
printf("\n%s (default: %s): ", title, def);
|
|
||||||
fflush(stdout);
|
|
||||||
|
|
||||||
SetXRepeat(FALSE);
|
|
||||||
|
|
||||||
if (fgets(buffer, PATH_MAX + 1, stdin))
|
|
||||||
{
|
|
||||||
char drive[_MAX_DRIVE + 1], dir[_MAX_DIR + 1], fname[_MAX_FNAME + 1], ext[_MAX_EXT + 1];
|
|
||||||
|
|
||||||
char *p = buffer;
|
|
||||||
while (isspace(*p))
|
|
||||||
p++;
|
|
||||||
if (!*p)
|
|
||||||
{
|
|
||||||
strncpy(buffer, def, PATH_MAX + 1);
|
|
||||||
buffer[PATH_MAX] = 0;
|
|
||||||
p = buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *q = strrchr(p, '\n');
|
|
||||||
if (q)
|
|
||||||
*q = 0;
|
|
||||||
|
|
||||||
_splitpath(p, drive, dir, fname, ext);
|
|
||||||
_makepath(s, drive, *dir ? dir : dir1, fname, *ext ? ext : ext1);
|
|
||||||
|
|
||||||
return (s);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue