Skip to content

NullDC4Wii - Alpha 0.58

Latest

Choose a tag to compare

@BenoitAdam BenoitAdam released this 22 Jul 11:39
496c1e6

Six Axis/dual Shock 3 support

⚙️ Improvements

RATIO : FULLSCREEN (default)

Wasn't satisfied by AUTO

TMEM_CACHE : ON (default)

Could improve loading time and/or FPS. Let's test it.

Six Axis Support

Sixaxis/DualShock3 (USB cable) support is now wired up, following the same pattern as the existing Wii U GamePad (DRC) integration:

Please try it up and report

CDI File fix

CDI Fix, may help some CDI games to run

👨‍💻 Developers

Fix null verxexDataFP

Fix null VerxexDataFP call on stale TA data (Rez CDI boot crash)

When vertex-type TA data arrives before any polygon/sprite header has been
processed (e.g., stale/uninitialized RAM decoding as ParaType=7), VerxexDataFP
remains null. The verify() guard is a no-op in this build (DO_VERIFY off), so
the null call goes through uncaught.

Now checks VerxexDataFP before calling it — skips the record instead of
dereferencing null. Real hardware handles this the same way (no active list to
append vertices to), which is likely why other games never hit this — they
don't submit TA data in this order.

Confirmed fix: Rez CDI now renders the SEGA/BIOS logo (previously crashed with
DSI at this point).

Wire up Hollly Soft reset

Wire up Holly soft-reset (SB_SFRES) instead of no-op

Writing 0x7611 to SB_SFRES is a normal part of real BIOS boot (used to
reconfigure video timing before jumping to the game), but was previously
just logged as "not implemented" - the boot code then spins forever
waiting for a reset that never happens (reproduced with Rez, which hits
this before even the BIOS splash screen).

SoftReset_DC() already exists but stops/restarts the whole CPU session,
which can't be reused here: this write happens synchronously from inside
the SH4's own execution, so resetting the CPU/RAM out from under it would
corrupt live state. HollySoftReset() instead mirrors real hardware -
resetting only the Holly-controlled peripherals (PVR/SPG/renderer, AICA,
ARM7) while leaving the executing SH4 and RAM untouched.

Co-Authored-By: Claude Sonnet 5

Fix PPC stuff (wii_driver.cpp)

Fix DoStatic emitting a variable-length patch site

ngen_LinkBlock_Static computes its patch site as LR-12 and overwrites it with
a direct b compiled_target, so DoStatic must emit exactly 3 instructions.
ppc_li is variable length: it collapses to a single addi/addis when the value
fits s16 or its low half is zero (e.g. a block at 0x8C010000). For those
targets the patcher wrote its branch one instruction too early, clobbering
whatever preceded the sequence - in a BET_Cond block end that is the other
exit path's branch.

Emit the addis+ori pair unconditionally so the site is always 12 bytes.

Co-Authored-By: Claude Fable 5

Clean up stale audio comments

b6661da

Enable SHIL dead-code elimination

45a4c57

🧰 Please update compatibility Guide

Please re-test all games untested since alpha 0.26 (except Windows CE games) and update compatiblity wiki :

https://wiibrew.org/wiki/NullDC4Wii/Compatibility

🎮 Optional Extras

Wii & WiiU Fowarders : see alpha0.51

Wii Forwarder by @Ploggy
Wii U Overclock Forwarder (integrated) by @Zeox-Gamer