Emulator Issues #9680
Rayman Arena Cup 1 Round 2 Freeze
Rayman Arena - GRYE41
MD5 Hash? (right click the game in the game list, properties, info tab, MD5 Hash: Compute)
(I have the right md5, I just dumped it, trust me. And I confirmed it, I just don't feel like copying it from one computer to another.)
What's the problem? Describe what went wrong.
When playing the Total Battle mode, the game will crash on Cup 1, Round 2
What steps will reproduce the problem?
Start up the game and navigate the menus. Go to Single Player, Total Battle, Select any character, and play through the first round of the cup. If you're having trouble, just hold R to lock-on and fire at your opponent. Once I realized you could lock-on it was easy.
Which versions of Dolphin did you test on? Does using an older version of Dolphin solve your issue? If yes, which versions of Dolphin used to work?
I tested a whole bunch of PRs and builds to see if this ever worked. I tried Dynamic BATs, Single Core SyncGPU timings, Add EFB Copy timings to SyncGPU and of course a recent 5.0 build (5.0-108)
None of the builds worked.
What are your PC specifications? (CPU, GPU, Operating System, more)
Intel Core i5-3570K, GTX 760, Windows 10
Is there any other relevant information? (e.g. logs, screenshots,
Interestingly enough, the first time I ran into this bug I saw an unknown fifo opcode error. Every other time I've run it, so I actually haven't recorded it. I tried using pretty much every setting you could imagine to work around the bug, but I can't. CPU under/overclock, MMU, LLE audio, etc. There's nothing in the logs that look out of place vs loading other levels either.
The hang at the end of the loading screen has a last bit of audio play, but the graphics for the level never load. This is 100% consistent.
#1 Updated by RibShark about 5 years ago
The Unknown FIFO Opcode error dialogs I receive when attempting to reproduce are:
GFX FIFO: Unknown Opcode (0x0a @ 0000000180965345, preprocess=false). This means one of the following: * The emulated GPU got desynced, disabling dual core can help * Command stream corrupted by some spurious memory bug * This really is an unknown opcode (unlikely) * Some other sort of bug Further errors will be sent to the Video Backend log and Dolphin will now likely crash or hang. Enjoy.
Illegal command 0a CPBase: 0x013d7e00 CPEnd: 0x01417de0 CPHiWatermark: 0x0003c000 CPLoWatermark: 0x00020000 CPReadWriteDistance: 0x00000020 CPWritePointer: 0x013f6a00 CPReadPointer: 0x013f69e0 CPBreakpoint: 0x00000000 bFF_GPReadEnable: true bFF_BPEnable: false bFF_BPInt: false bFF_Breakpoint: false bFF_GPLinkEnable: true bFF_HiWatermarkInt: true bFF_LoWatermarkInt: false
Not sure if these will help at all, but as they weren't recorded I thought I may as well provide them.
#2 Updated by Filipianosol about 5 years ago
It was originally found out by Rayman forum's members. You have to keep pressing A fast during the loading screen before this round starts, then this stage will load, at least on Direct3D 11 after removing the cache files from ShaderCache.
Versions not working:
4.0-5908 and older, 4.0-5971-5.0-633
Earlier versions, maybe from 2012, which is around the time this work-around was discovered, and newer versions 4.0-5915-5964
This work-around stopped working again since 4.0-5971, PR #2172: Block gpu thread.
It sounds like that PR might be causing what's described in FIFO error's first point.
I get the error posted by RibShark when I try to reproduce this with disabled Dual-Core on D3D11 in 5.0-633.
#3 Updated by RibShark about 5 years ago
Interestingly, if the prototype version of the game is used (which would be quite hard to find as I can't imagine there are too many discs in existence), this stage works flawlessly. I don't know whether this could be used to narrow down what could be causing this, but I thought it would be worth a mention. One thing I did notice is that on the prototype, the cutscene before the "3... 2... 1..." countdown is missing. Given that the workaround to this bug (on some builds at least) is to spam the A button (which would skip the cutscene on the final), I think it's likely that the bug is triggered by the cutscene in some way.
#4 Updated by RibShark over 4 years ago
If you make a savestate anywhere before the freeze, get to where the game freezes, pause the emulator (Emulation > Pause), load the savestate, then frame advance once (Emulation > Frame Advance) you will able to see the level that you are meant to play after the crash. The camera is at the same angle it usually is in at the very start of the level (though it switches after 8 frames or so), but there are no black bars covering parts of the image, which would normally be there (each level starts with some black bars sliding away to reveal the gameplay). Maybe this could reveal at which point Dolphin stops being able to render?
ICUP321 alerted me today that the 16:9 aspect ratio fix he created (to disable frustrum culling) (https://wiki.dolphin-emu.org/index.php?title=Rayman_Arena#16:9_Aspect_Ratio_Fix) also happens to completely fix this hang. Only the second part of the code is needed to fix it:
0405EF08 38600001 0405EF0C 4E800020
In fact, any value for 3860000x seems to fix the crash. Hopefully this is useful information as to finding the original cause.
In addition, console footage (https://www.youtube.com/watch?v=5-_T6a22KYM&t=429s) seems to show the geometry being culled at the start of the introduction (probably the game is changing the frustrum width/height during the transition), though this happens for other levels too, it does suggest that something is going awry with culling enabled in this level.