Skip to content

lua: add emu.fds_* API for scriptable disk flipping#846

Open
preznes wants to merge 1 commit into
TASEmulators:masterfrom
preznes:lua-disk-switching
Open

lua: add emu.fds_* API for scriptable disk flipping#846
preznes wants to merge 1 commit into
TASEmulators:masterfrom
preznes:lua-disk-switching

Conversation

@preznes

@preznes preznes commented Jun 20, 2026

Copy link
Copy Markdown

Expose the FDS disk controls to Lua so scripts can flip disks:

  • emu.fds_eject() ensure the disk is ejected (no-op otherwise)
  • emu.fds_insert() ensure the disk is inserted (no-op otherwise)
  • emu.fds_select_side() advance to the next disk side (BIOS requires
    the disk to be ejected first, same as the hotkey)
  • emu.fds_is_inserted() -> bool
  • emu.fds_selected_side() -> 0-based side index, or -1 if no FDS loaded

Backed by two new accessors in the core, FCEU_FDSIsInserted() and FCEU_FDSGetSelectedSide(), since the existing FDS state was file-local.

Also fix the minizip <unzip.h> include path to use <minizip/unzip.h> on both Linux and macOS when _SYSTEM_MINIZIP is set (AboutWindow.cpp, fceuWrapper.cpp, file.cpp), which the earlier __linux-only guard missed.

Expose the FDS disk controls to Lua so scripts can flip disks:

  - emu.fds_eject()        ensure the disk is ejected (no-op otherwise)
  - emu.fds_insert()       ensure the disk is inserted (no-op otherwise)
  - emu.fds_select_side()  advance to the next disk side (BIOS requires
                           the disk to be ejected first, same as the hotkey)
  - emu.fds_is_inserted()  -> bool
  - emu.fds_selected_side() -> 0-based side index, or -1 if no FDS loaded

Backed by two new accessors in the core, FCEU_FDSIsInserted() and
FCEU_FDSGetSelectedSide(), since the existing FDS state was file-local.

Also fix the minizip <unzip.h> include path to use <minizip/unzip.h> on
both Linux and macOS when _SYSTEM_MINIZIP is set (AboutWindow.cpp,
fceuWrapper.cpp, file.cpp), which the earlier __linux-only guard missed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant