Files

4.4 KiB
Raw Permalink Blame History

GSplus Backlog

Planned and possible work for GSplus. Everything below targets the SDL3 build (the focus — see the README). Items marked (core) already exist in the KEGS core and mainly need wiring into the SDL driver; everything else is new.

Effort: S small · M medium · L large. Priority: High / Med / Low.


Done

  • Foundation: SDL3 driver (video/input/audio), CMake build, cross-platform CI, self-contained packaging (macOS .dmg, Linux .tar.gz, Windows .zip), version-from-tag.
  • F1 — Window & display options: -fullscreen, -borderless, -noaspect, -highdpi, -nohwaccel, window position; F11 fullscreen toggle. (-novsync was later removed — see the vsync item under Display.)
  • F2 — Scanline simulator: -scanline <0-100>, Shift+F11 toggle.
  • F3 — Drag-and-drop: drop a disk image on the window to mount it (slot guessed from file size).
  • Curved CRT effect: -crt 1 + -crtcurve <0-100> + -crtmask <0-100>, Ctrl+F11 toggle. Curvature (RenderGeometry mesh) + RGB phosphor mask + bloom + vignette, composes with -scanline. All on the 2D renderer, no extra libraries.
  • Gamepad/controller support: SDL3 high-level Gamepad API → IIgs joystick/paddles, with hotplug. Select "Native Joystick 1" in the F4 config menu to route paddles to it.
  • Screenshots: F10 captures the framebuffer (-ssdir sets the output directory).

Legacy gsplus features (original roadmap)

Item Pri Eff Notes
Clipboard copy/paste Med M Wire SDL clipboard to the core's copy/paste hooks (core).

Input

Item Pri Eff Notes
Mouse capture toggle Med S Grab/release the pointer via a hotkey.
Configurable key remapping Low M Currently a fixed scancode→ADB table.
Gamepad button remapping Low S SDL_Gamepad's stable button names make a small remap table in the config menu cheap.

Display

Item Pri Eff Notes
Integer / pixel-perfect scaling toggle Med S Crisp 1×/2×/3× vs. letterbox stretch; also stops scanline shimmer at non-integer scales.
Linear-filter option Low S Smooth-scaling alternative to nearest.
Re-add vsync option properly Low M Removed pre-1.38.0 (double-pacing caused half-speed + Windows audio gaps). Right fix: when vsync is on, let it drive pacing and drop the sleep-based clock — one pacer, not two.

Runtime / system

Item Pri Eff Notes
Fast-forward / turbo hotkey High S Hold to uncap speed.
Pause/resume hotkey Med S
Save states / snapshots Med L Full IIgs machine state; KEGS has none. Stretch.

Audio

Item Pri Eff Notes
Volume / mute hotkey Med S
Audio device selection Low S

Quality of life

Item Pri Eff Notes
Recent disks/ROMs menu Med M
Window title shows mounted disk Low S
Modern overlay config menu (vs. F4 text panel) Low L Big polish, big effort.

Packaging / distribution

Item Pri Eff Notes
Linux AppImage (self-contained) Med M The one non-self-contained download today.
Code signing (Windows/macOS) Low M Needs a cert / Azure Trusted Signing.
Local mingw cross-compile for fast Windows iteration Low S Catch Win compile/link errors on macOS in seconds.

Testing / infrastructure

Item Pri Eff Notes
CI smoke test High M Headless boot (SDL dummy video driver) for N emulated frames, checksum the framebuffer. Catches CPU/memory/video regressions on every PR — highest-leverage single test, especially for upstream KEGS merges. Needs a redistributable boot image or ROM-free path.

Upstream (offer back to KEGS)

Per policy: core (non-SDL) fixes get offered upstream. Current candidates, verified clean by review:

  • VOC SHR shadow fix — moremem.c fixup_ramwrt(), bank $E0 pages $6000-$9FFF. Reword the misleading "bank 0" comment first.
  • Windows timer fix — clock.c timeBeginPeriod(1) + Sleep rounding; winmm is already linked in upstream's vcxproj.
  • dynapro.c dirent guard — _WIN32 && _MSC_VER check; benefits any mingw build of upstream.

Suggested order

Fast-forward → Clipboard.

Dagen's wishlist

(personal "selfish feature" ideas — add freely)