Dynarec/JIT improvement + FMV Improved + VQ_CMPR preset fixes
⚙️ Improvements
JIT_CARRY Preset (default = on)
These new JIT directly come from SETA GX, the Saturn Emulator for Wii !
Big thank to the author Evoca !
Check SETA-GX here : https://github.com/fadedled/seta-gx
No measurable improvement, maybe only in some specific scenes.
FMV_FORMAT = TEV (Default)
Speed increase in FMV (movies) with the TEV option ! Made as defaut.
Wiimote connect fix = SixAxis/Dual Sense 3
Not sure about this, if I understood you need to press B on a gamecube controler when booting the emulator in some cases
Wiimote connect fix: gate the IOS58 reload behind a boot button
Wiimotes intermittently refused to connect, in the menus and in game.
Two causes, both in the Sixaxis/DS3 (USB) path:
- SS_Init() reloaded IOS58 unconditionally as the first statement of
main(). An IOS reload restarts the whole I/O OS, Bluetooth stack
included, so every connected Wiimote drops its link a few
milliseconds before WPAD_Init() runs. The Homebrew Channel normally
launches us under IOS58 already, so the reload was usually a no-op
that cost the Bluetooth link for nothing.
- SS_PollConnections() ran a full USB_GetDeviceList() per slot per
frame: once per frame from every menu loop (via SS_ButtonsDownWPAD)
and once per emulated frame in game, ~240 synchronous IOS round
trips a second competing with the Bluetooth module for the same IOS.
DS3 support is now opt-in: hold Gamecube B on any port at boot. With
nothing held SS_Init() returns immediately, s_ssInited stays false and
every SS_* entry point no-ops, so IOS is left exactly as the loader
handed it over. It has to be a Gamecube button -- the GC ports hang off
the PowerPC's Serial Interface and are readable before IOS is up, while
reading a Wiimote would need the very Bluetooth stack being decided
about, and none has connected that early in boot. main() reordered to
VIDEO_Init(); PAD_Init(); SS_Init(); ... WPAD_Init(), VI and SI both
being PPC-side and unaffected by a reload.
When the gate is held, the reload now only happens if we are not already
on IOS58, and waits 500 ms instead of 100. Polling is throttled to one
enumeration per ~60 calls and stops at the first slot that finds nothing,
since every slot scans the one shared device list. DS3 button latency is
unchanged; only hot-plug detection is throttled, to about a second.
Also fixes the special-layout preset slot leaking between game
selections. [default] is what resets every other preset field, but had no
layout key, so p->layout stayed -1 and g_special_layout_preset kept its
previous value: picking DDR, or setting CHUCHU/USER CFG by hand, then
backing out and launching something else left that layout active for the
rest of the session. Adds a generic layout=off|chuchu|ddr_select|user_cfg
key plus layout=off in [default].
The CONTROLS menu now reports whether user_controls.cfg was found and
whether DS3 support was switched on this boot. Until now the only signal
was a printf, and printf only reaches ndclog.txt, never the screen.
README documents the special layouts, user_controls.cfg (including that
the shipped template deliberately mirrors the default mapping, so USER
CFG looks like a no-op until you edit it), and the DS3 boot gate.
Not build-tested and not tried on hardware yet.
📝 Presets updated
CMBR/CMPR FIX
Very important, I made a mistake in previous versions, for the VQ CMPR preset. Now it's fixed.
Don't forget to recopy game_presets.cfg to /discs or /dreamcast
Game Presets
The defaut preset for these games have been updated :
- Bomberman (fine tuning)
👨💻 Developers
LAYER_FRONT_TEX
It can put any texture targetted by ram adress upfront (like LAYER_BACK_ TEX did for putting texture behind)
Not used for now
🧰 Please update compatibility Guide
Please tell me any finding of better presets on discord or update compatiblity wiki :
https://wiibrew.org/wiki/NullDC4Wii/Compatibility
🎮 Optional Extras
Wii & WiiU Fowarders : see alpha 0.66
Wii Forwarder by @Ploggy
Wii U Overclock Forwarder (integrated) by @Zeox-Gamer