NDS4MiSTer v0.3.0-beta.5 — Faster 3D and Touch Preview
Pre-releaseNDS4MiSTer 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
- Extract
NDS4MiSTer_Public_Beta_v0.3.0-beta.5_20260831.zipinto the root
of the MiSTer SD card (/media/fat). - After every MiSTer reboot, run
NDS_Kickstart.shfrom the Scripts menu. - Start
NDS_20260831from the Console menu. - Choose
Load NDSand select your own legally obtained.ndsimage.
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.