Environment
- Console: Dreamcast VA0 (Japanese), MIL-CD capable
- Storage: SD via serial port adapter (SCIF, bit-bang SPI) — ~700 KB/s read (Speedtest app)
- SD card: Lexar 512 GB SDXC, FAT32/MBR, 32 KB clusters
- DreamShell: v4.0.4 release rebuilt 2026-07-25 (with the latest fatfs fixes) loaded from SD via bootloader v2.9 CD; also reproduced identically on v4.0.3
- Games: unmodified GDI dumps, each in its own folder under /games, launched via ISO Loader app (SD device, dma = 0, async = 8)
VMU emulation (vmu = 1, private 128 KB dump in the game folder, VMU number 1, IRQ hooking enabled) fails on the SCIF-SD path in every game tested, with three different failure modes. Results are identical on 4.0.3 and 4.0.4, so this is not a regression.
- Shenmue (USA) │ heap Auto / Ingame (Katana) / Maple DMA buffer; also CDDA on + heap Behind │ freezes at the game's "NOW LOADING" screen │ heap Behind the loader, or fixed 0x8cfd0000 │ passes loading, then black screen
It doesn't look Shenmue-specific either: with the same VMU settings, other games on my setup also misbehave in different ways — one resets the console at boot, another boots and detects the emulated VMU but fails when actually saving. So my impression is that VMU emulation as a whole struggles on the SCIF-SD path on my hardware; Shenmue is just the game where I dug deepest.
Shenmue runs perfectly from the same SD/setup with irq = 0 and no VMU emulation (memory 0x8cfe8000, the embedded preset values).
Additional observations
- Without irq = 1 the emulated VMU is completely silent (expected from the code — maple_init_irq() is only reached inside if (IsoInfo->use_irq) in firmware/isoldr/loader/syscalls.c), and games report "no memory card". Maybe worth forcing/documenting, since a preset with vmu > 0 but irq = 0 silently does nothing (the Games Menu already forces it, the ISO Loader GUI forces it only via the checkbox).
- With the 1 MB VMU dump, maple.c derives geometry from file size (last_block = total/512 - 1 = 2047). Shenmue detects the card but rejects it as "not formatted" — 1999–2000 era games seem to validate against real-VMU geometry (255). The 128 KB dump is required for those games; might be worth a note in the app.
- device_info in firmware/isoldr/loader/maple.c advertises MAPLE_FUNC_STORAGE | MAPLE_FUNC_LCD | MAPLE_FUNC_CLOCK, but only storage commands are handled. Games that actively use the VMU LCD (Shenmue does) get no response to LCD writes — possibly related to its behavior.
- My working hypothesis for the SCIF-specific failures: the Maple DMA hook performs FatFs file I/O inside the interrupt path, which on bit-bang SPI at ~700 KB/s blocks far longer than on IDE — different games then die in different ways depending on how hard they hit the Maple bus (SA2 resets, Virtua Tennis fails on write, Shenmue hangs). If VMU emulation is only expected to work on IDE/HDD, documenting that would already help.
Happy to run debug builds or provide more logs/tests on this hardware — this console+adapter combo seems to be a blind spot (none of the 1027 embedded SD presets enable vmu).
Thanks for the recent fatfs fixes in the rebuilt 4.0.4 — they resolved a long-standing mxml: Bad control character error when opening the ISO Loader app from SD (42 KB app.xml crossing the 32 KB cluster boundary was read corrupted; small app.xml files never failed). That one is confirmed fixed on real hardware.
Environment
VMU emulation (vmu = 1, private 128 KB dump in the game folder, VMU number 1, IRQ hooking enabled) fails on the SCIF-SD path in every game tested, with three different failure modes. Results are identical on 4.0.3 and 4.0.4, so this is not a regression.
It doesn't look Shenmue-specific either: with the same VMU settings, other games on my setup also misbehave in different ways — one resets the console at boot, another boots and detects the emulated VMU but fails when actually saving. So my impression is that VMU emulation as a whole struggles on the SCIF-SD path on my hardware; Shenmue is just the game where I dug deepest.
Shenmue runs perfectly from the same SD/setup with irq = 0 and no VMU emulation (memory 0x8cfe8000, the embedded preset values).
Additional observations
Happy to run debug builds or provide more logs/tests on this hardware — this console+adapter combo seems to be a blind spot (none of the 1027 embedded SD presets enable vmu).
Thanks for the recent fatfs fixes in the rebuilt 4.0.4 — they resolved a long-standing mxml: Bad control character error when opening the ISO Loader app from SD (42 KB app.xml crossing the 32 KB cluster boundary was read corrupted; small app.xml files never failed). That one is confirmed fixed on real hardware.