New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GameINI: Rayman Arena - Add Disable Culling Patch that fixes "Rise and Shrine" Hang #10016
Conversation
|
Worth noting that the game hasn't actually crashed -- it's just sleeping forever. Its only thread never wakes up after a call to GXDrawDone (IIRC, it's been a while since I looked at the game). This is very likely to be a GPU timing issue. |
|
To narrow it down further, it is the 2nd half of the codes (8005EF08 onwards) that is "fixing" this, so whatever culling is being disabled by the first 2 codes doesn't seem to affect this. |
31159df
to
ec097d0
Compare
|
Addressed the comments. I've disabled the hack by default. I've also clarified it's a hang, not a crash in the comments. |
|
Should we merge this? |
|
I don't think the mostly-blank |
|
I'll fix this in a bit then. |
ec097d0
to
dc06740
Compare
For unknown reasons, a Gecko Code on the Wiki for Rayman Arena that was meant to help with widescreen patches. This doesn't actually change anything about the game unless you enable Dolphin's built-in widescreen hack, where it will cause enemies and whatnot to render on the edges of the screen. This is because it patches out the culling function in the game, which coincidentally is also the cause of the hang in Dolphin.
dc06740
to
6619bfe
Compare
|
Heads up, I just noticed that the game ID is wrong so it doesn't get detected by Dolphin, it's supposed to be GRYE41, not GYRE41. |
|
lol oops. I'll fix in the morning |
So funny story: the author of the "widescreen" patch for Rayman Arena (which is a patch ported from gamemasterplc's widescreen code Rayman 3) told me that it fixes the infamous hang in Rise and Shrine. Now, Rayman Arena is a serious bastard of a game, and has hanged in Dolphin on this map as far back as I could get the game to run in Dolphin. I thought to myself:
"How in the world could a widescreen patch work-around the bug???"
So I tried it. And it worked. So I began studying the code and found out it wasn't exactly a widescreen patch, it was a no culling patch. But here's the thing: Rayman Arena already has almost no culling. The only thing it culls is a few character models and item boxes at the start of the match. The impact of the no culling cheat is actually very subtle, even when looking at statistics about what the game is rendering.
Before:


After:
The only difference is that the AI opponent is rendering. In the past, @leoetlino and I have experimented with trying to adjust the timings of Rayman Arena to work in Dolphin and found that the only way to fully avoid the hang is to set Dolphin's Emulated GPU Clock to 1% or lower in Single Core. And that leaves the game completely unplayable. Users have gone to another solution: changing the emulated CPU clock to 150% or above and mashing to skip the cutscene at the start of this level where the hang occurs.
The thing that truly confuses me is that if you're playing without the patch, the level never even starts rendering as far as I can tell. In order to get those statistics, I overclocked the CPU to 150% to get it to render a couple of frames before freezing, as at the base clock it will freeze while the loading screen is still up.
In terms of performance, the No Culling Patch is so lightweight that I see literally no difference in performance, and honestly I kind of think it performs slightly better but that may be confirmation bias creeping in.
For now, I'm just pushing this pull request to try and get some more eyes on yet another Ubisoft game doing something. Does anyone have any idea why such a minor different matters when doing wild changes to Dolphin's timings don't? This patch is useful as it gives us a side by side look with the failure state vs a successful state with minimal changes to the game or dolphin compared to previous efforts, but until we understand why the game is failing, I'm uncomfortable merging it.