Emulator Issues #10927
Games that require proper icache/dcache emulation to work
One of the features that Dolphin doesn't support well (or support at all, in the case of dcache) is cache emulation. Basically, sometimes when a game writes to memory, it sometimes relies to the fact that those writes/reads go to the cache instead of memory itself. Because Dolphin does not emulate this, it can sometimes get the wrong values. Some games use this for anti-piracy, some games are bugged, and others we simply don't know.
Here are some titles I know about that require dcache/icache emulation. More will be added into comments as we find them.
Casper's Scare School: Spooky Sports Day - RX4E4Z and PAL region as well but I don't have gameID - dcache. Fails a check at boot. Reproduced on console by manually disabling the dcache. Screenshot of the failure on console included.
1080 Snowboarding NAOE01, NAOJ01, NAOP01 - icache due to coding bug? Works on interpreter.
Disney Infinity - Hack included in Dolphin to bypass dcache anti-emulator code.
Disney's Cars 2 - Hack included in Dolphin to bypass dcache anti-emulator code.
Various Homebrew/Hacks, such as Wiimm's Mario Kart Fun Packs - Likely codes that rely on icache/dcache behavior.
#1 Updated by leoetlino almost 2 years ago
- Status changed from New to Accepted
To expand on Casper: the game's DVD read function writes 0x87654321 to the entire read buffer and 0x12345678 to the last 4 bytes. It then calls DVDReadAsync() and without waiting for the read to complete at all, it checks if the last 4 bytes are still 0x12345678. If they are, then the game fails.
The check always passes on console because DVDReadAsync() -> issueCommand() calls DCInvalidateRange() (dcbi) on the read buffer.