Skip to content

NDS4MiSTer v0.3.0-beta.5 — Faster 3D and Touch Preview

Pre-release
Pre-release

Choose a tag to compare

@SplashDev88 SplashDev88 released this 31 Aug 14:30
· 4 commits to main since this release

NDS4MiSTer v0.3.0-beta.5 — Faster 3D and Touch Preview

This beta packages the accepted seed-2 FPGA fit with the latest tested ARM 3D
service. It keeps the reliable cartridge-save, reset, sound, layout, and LG
C-series HDMI work from beta.4 while adding a faster direct 3D pipeline and the
initial controller/mouse touchscreen framework.

What changed

  • Publishes completed immutable 3D planes directly, avoiding an additional
    full-frame copy.
  • Uses shadow-safe four-band raster scheduling so parallel shadow work is only
    admitted after its ordering dependency is complete.
  • Adds optimized contiguous GX replay and dominant packed-vertex, texture,
    depth, opaque, and shadow raster paths. Bounded raster spans avoid software
    integer division while preserving exact fixed-point results.
  • Rebalances the MiSTer frontend away from the replay CPU and retains the
    lock-free SPSC/futex transport, adaptive raster balancing, and bounded
    catch-up behavior.
  • Adds right-stick and mouse touchscreen control with a visible pointer.
  • Retains sound, 134.055928 MHz console clock family, LG C-series HDMI, the
    8-pixel default gap, layouts, reset, and EEPROM/FRAM/Flash saves.

Touch controls

  • Move the controller's right analog stick to choose an absolute touch
    position, then hold the remappable Touch action to press.
  • Move a MiSTer mouse to position the stylus, then hold the left mouse
    button
    to press.
  • The most recently moved input owns the pointer. It is white while hovering,
    red while pressed, remains visible during a press, and lingers for about half
    a second after movement.
  • Engine B is not displayed yet. Both visible positions still show Engine A,
    so precise interaction with touchscreen graphics remains limited.

Measured and observed 3D result

  • In a clean 25-second NSMB sample, the DS/game stream held 60.52 frames/s
    and the ARM published 60.48 completed 3D descriptors/s. The queue grew by
    only two packets, acknowledgement lag ended at zero, and FPGA/HPS fault
    counters stayed at zero.
  • Content sampling measured about 34 visibly distinct 3D changes/s in that
    scene because identical planes were sometimes republished. The current FPS
    overlay counts publications and can therefore read 60 FPS while visible 3D
    motion is slower; a correction is tracked separately.
  • Hardware play testing found a large practical speed improvement, especially
    in the NSMB final castle. Performance remains scene-dependent.

Installation

  1. Extract NDS4MiSTer_Public_Beta_v0.3.0-beta.5_20260831.zip into the root
    of the MiSTer SD card (/media/fat).
  2. After every MiSTer reboot, run NDS_Kickstart.sh from the Scripts menu.
  3. Start NDS_20260831 from the Console menu.
  4. Choose Load NDS and select your own legally obtained .nds image.

The launcher verifies the ARM payload, requests the tested 1 GHz HPS clock,
and starts exactly one renderer process. It is intentionally not persistent.

Save warning

Persistent cartridge saves use MiSTer's standard /media/fat/saves/NDS
directory and support 512-byte, 8/64/128 KiB EEPROM/FRAM plus 256/512 KiB and
1 MiB Flash profiles. If a game reports corrupted save data after upgrading,
back up and then delete or move that game's existing .sav file so the game
can create a fresh one. Older experimental builds may have produced an
incorrectly sized or already-corrupted save; this release cannot repair it.

Known limitations

  • Engine B is not enabled; both displayed positions currently show Engine A.
  • Heavy or unsupported 3D scenes can still slow down, show minor jerkiness or
    blanking, fall behind, or crash.
  • The FPS overlay currently counts completed publications rather than proven
    visibly distinct displayed planes.
  • Cartridge latency can make some assets or effects appear late or fail.
  • Chrono Trigger retains a separate boot failure under investigation.
  • NAND saves, save states, Wi-Fi, and microphone are not implemented.

Verification and package identity

  • Full seed-2 host regressions and the combined ARM cross-build/self-tests
    passed, including direct-plane, four-band, shadow-ordering, save, reset,
    touch, mouse, video, and service lifecycle coverage.
  • Quartus Prime 17.0.2 completed map, fit, assembly, and timing analysis at
    41,181/41,910 ALMs, 45,130 registers, 468/553 RAM blocks, 69/112 DSPs, and
    four PLLs. Static timing remains diagnostic rather than a deployment gate.
  • Source commit: 4d5916ad1626b66aeaba49f15c3594862771bc03
  • Accepted code checkpoint: 07ae9c8f323676a32a16372c8a66fdce2420f078
  • FPGA core SHA-256:
    3a9a0c563431f45046312b76953a53573a59fe28f388e9bfe9f680a0ff8539de
  • ARM service SHA-256:
    d53eb890192f5662cfd8507a0181b41c436d0b6501ee82dc0214e33ecfe9694b

No games, commercial ROMs or BIOS/firmware files, personal saves, keys,
credentials, private paths, logs, or user data are included.

Credits

This project builds on the MiSTer framework, Nitro_DarkSide, melonDS, and
FPGAzumSpass's GBA ARM7 CPU implementation, which was used as a basis for the
ARM9 work. Special thanks to FPGAzumSpass, srg320, ElectronAsh, Corn, skmp,
heni, and the wider MiSTer community for development guidance and testing.

Distributed under GPLv3. This experimental software is provided without
warranty.