Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/drivers/Qt/AboutWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,11 @@
#include <stdlib.h>
#include <string.h>
#include <string>
#if defined(_SYSTEM_MINIZIP) && (defined(__linux) || defined(__APPLE__))
#include <minizip/unzip.h>
#else
#include <unzip.h>
#endif

#ifdef _S9XLUA_H
#include <lua.h>
Expand Down
4 changes: 4 additions & 0 deletions src/drivers/Qt/fceuWrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,11 @@
#include <stdlib.h>
#include <stdint.h>
#include <limits.h>
#if defined(_SYSTEM_MINIZIP) && (defined(__linux) || defined(__APPLE__))
#include <minizip/unzip.h>
#else
#include <unzip.h>
#endif

#include <QFileInfo>
#include <QStyleFactory>
Expand Down
11 changes: 11 additions & 0 deletions src/fds.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,17 @@ void FCEU_FDSEject(void)
InDisk=255;
}
*/
bool FCEU_FDSIsInserted(void)
{
return InDisk != 255;
}

int FCEU_FDSGetSelectedSide(void)
{
if (TotalSides == 0) return -1;
return SelectDisk;
}

void FCEU_FDSSelect(void)
{
if (TotalSides == 0)
Expand Down
4 changes: 4 additions & 0 deletions src/fds.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,7 @@ void FDSSoundReset(void);
void FCEU_FDSInsert(void);
//void FCEU_FDSEject(void);
void FCEU_FDSSelect(void);

// Lua-friendly accessors
bool FCEU_FDSIsInserted(void);
int FCEU_FDSGetSelectedSide(void); // 0-based; -1 when no FDS loaded
4 changes: 2 additions & 2 deletions src/file.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@
#include "utils/memory.h"
#include "utils/md5.h"
#ifdef _SYSTEM_MINIZIP
#ifdef __linux
#if defined(__linux) || defined(__APPLE__)
#include <minizip/unzip.h>
#else // Apple Most Likely
#else
#include <unzip.h>
#endif
#else
Expand Down
46 changes: 46 additions & 0 deletions src/lua-engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#include "utils/xstring.h"
#include "utils/memory.h"
#include "utils/crc32.h"
#include "fds.h"
#include "fceulua.h"

extern char FileBase[];
Expand Down Expand Up @@ -505,6 +506,46 @@ static int emu_softreset(lua_State *L) {
return 0;
}

// emu.fds_eject()
// Ensures the FDS disk is ejected. No-op if already ejected or not an FDS.
static int emu_fds_eject(lua_State *L) {
if (FCEU_FDSGetSelectedSide() < 0) return 0;
if (FCEU_FDSIsInserted())
FCEU_FDSInsert(); // toggles -> ejects
return 0;
}

// emu.fds_insert()
// Ensures the FDS disk is inserted. No-op if already inserted or not an FDS.
static int emu_fds_insert(lua_State *L) {
if (FCEU_FDSGetSelectedSide() < 0) return 0;
if (!FCEU_FDSIsInserted())
FCEU_FDSInsert(); // toggles -> inserts
return 0;
}

// emu.fds_select_side()
// Advances to the next FDS side. Requires the disk to be ejected (the BIOS
// shows a message and bails otherwise — same behavior as the hotkey).
static int emu_fds_select_side(lua_State *L) {
FCEU_FDSSelect();
return 0;
}

// bool emu.fds_is_inserted()
static int emu_fds_is_inserted(lua_State *L) {
lua_pushboolean(L, FCEU_FDSIsInserted());
return 1;
}

// int emu.fds_selected_side()
// Returns the currently-selected disk-side index (0=A, 1=B, ...), or -1 if
// no FDS image is loaded.
static int emu_fds_selected_side(lua_State *L) {
lua_pushinteger(L, FCEU_FDSGetSelectedSide());
return 1;
}

// emu.frameadvance()
//
// Executes a frame advance. Occurs by yielding the coroutine, then re-running
Expand Down Expand Up @@ -6220,6 +6261,11 @@ static const struct luaL_reg emulib [] = {
{"debuggerloop", emu_debuggerloop},
{"debuggerloopstep", emu_debuggerloopstep},
{"softreset", emu_softreset},
{"fds_eject", emu_fds_eject},
{"fds_insert", emu_fds_insert},
{"fds_select_side", emu_fds_select_side},
{"fds_is_inserted", emu_fds_is_inserted},
{"fds_selected_side", emu_fds_selected_side},
{"speedmode", emu_speedmode},
{"frameadvance", emu_frameadvance},
{"paused", emu_paused},
Expand Down