Merge pull request #1 from randomCharacter/lua-loadrom-linux

Added support for loading ROM files from Lua script on Linux
This commit is contained in:
mjbudd77 2020-10-21 20:32:54 -04:00 committed by GitHub
commit e1419b5fd8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 42 additions and 12 deletions

View File

@ -44,7 +44,7 @@ void LockConsole(void);
void UnlockConsole(void);
void ToggleFS(); /* SDL */
int LoadGame(const char *path);
int LoadGame(const char *path, bool silent = false);
int CloseGame(void);
int GUI_Init(int argc, char **argv, int (*dofunc)(void));
int GUI_Idle(void);

View File

@ -275,12 +275,12 @@ static void DoArgs(int argc, char *argv[])
provides data necessary for the driver code(number of scanlines to
render, what virtual input devices to use, etc.).
*/
int LoadGame(const char *path)
int LoadGame(const char *path, bool silent)
{
FCEUGI *tmp;
CloseGame();
if(!(tmp=FCEUI_LoadGame(path,1)))
if(!(tmp=FCEUI_LoadGame(path,1,silent)))
return 0;
CurGame=tmp;
ParseGI(tmp);

View File

@ -29,7 +29,7 @@ void LockConsole(void);
void UnlockConsole(void);
void ToggleFS(); /* SDL */
int LoadGame(const char *path);
int LoadGame(const char *path, bool silent);
//int CloseGame(void);
void Giggles(int);

View File

@ -206,13 +206,22 @@ DriverKill()
inited=0;
}
/**
* Reloads last game
*/
int reloadLastGame() {
std::string lastRom;
g_config->getOption(std::string("SDL.LastOpenFile"), &lastRom);
return LoadGame(lastRom.c_str(), false);
}
/**
* Loads a game, given a full path/filename. The driver code must be
* initialized after the game is loaded, because the emulator code
* provides data necessary for the driver code(number of scanlines to
* render, what virtual input devices to use, etc.).
*/
int LoadGame(const char *path)
int LoadGame(const char *path, bool silent)
{
int gg_enabled, autoLoadDebug, autoOpenDebugger;
@ -227,7 +236,7 @@ int LoadGame(const char *path)
FCEUI_SetGameGenie (gg_enabled);
if(!FCEUI_LoadGame(path, 1)) {
if(!FCEUI_LoadGame(path, 1, silent)) {
return 0;
}

View File

@ -19,7 +19,7 @@ extern unsigned int gui_draw_area_height;
// global configuration object
extern Config *g_config;
int LoadGame(const char *path);
int LoadGame(const char *path, bool silent = false);
int CloseGame(void);
int fceuWrapperInit( int argc, char *argv[] );

View File

@ -24,7 +24,7 @@ extern int dendy;
extern int pal_emulation;
extern bool swapDuty;
int LoadGame(const char *path);
int LoadGame(const char *path, bool silent);
int CloseGame(void);
void FCEUD_Update(uint8 *XBuf, int32 *Buffer, int Count);
uint64 FCEUD_GetTime();

View File

@ -29,7 +29,7 @@ void LockConsole(void);
void UnlockConsole(void);
void ToggleFS(); /* SDL */
int LoadGame(const char *path);
int LoadGame(const char *path, bool silent);
//int CloseGame(void);
void Giggles(int);

View File

@ -189,18 +189,27 @@ static void ShowUsage(char *prog)
}
/**
* Reloads last game.
*/
int reloadLastGame() {
std::string lastRom;
g_config->getOption(std::string("SDL.LastOpenFile"), &lastRom);
return LoadGame(lastRom.c_str());
}
/**
* Loads a game, given a full path/filename. The driver code must be
* initialized after the game is loaded, because the emulator code
* provides data necessary for the driver code(number of scanlines to
* render, what virtual input devices to use, etc.).
*/
int LoadGame(const char *path)
int LoadGame(const char *path, bool silent)
{
if (isloaded){
CloseGame();
}
if(!FCEUI_LoadGame(path, 1)) {
if(!FCEUI_LoadGame(path, 1, silent)) {
return 0;
}

View File

@ -24,7 +24,7 @@ extern int dendy;
extern int pal_emulation;
extern bool swapDuty;
int LoadGame(const char *path);
int LoadGame(const char *path, bool silent = false);
int CloseGame(void);
void FCEUD_Update(uint8 *XBuf, int32 *Buffer, int Count);
uint64 FCEUD_GetTime();

View File

@ -520,6 +520,7 @@ static int emu_getdir(lua_State *L) {
extern void ReloadRom(void);
extern int LoadGame(const char*, bool);
// emu.loadrom(string filename)
//
@ -545,6 +546,17 @@ static int emu_loadrom(lua_State *L) {
} else {
return 1;
}
#else
const char *nameo2 = luaL_checkstring(L,1);
char nameo[2048];
strncpy(nameo, nameo2, sizeof(nameo));
if(!LoadGame(nameo, true)) {
extern void reloadLastGame();
reloadLastGame();
return 0;
} else {
return 1;
}
#endif
return 1;
}