PCSX ReARMed r14 - Game "Ridge Racer 2 Revolutions" not working anymore


porg

Active Member
Joined
Oct 6, 2008
Messages
792
Location
Vienna, Austria
Within recent PCSX versions the game Ridge Racer 2 Revolutions worked well.


When I attempted to play the game again recently, with the current r14, I noticed this: The game gets loaded as usual, you can start the race, but after a few kilometers, about when the track rises up the hill, the game visuals freeze, while the background music continues to play. The error is not time-based (after a certain lap time), but "geographically", as soon as you reach a certain space of the game level.


I tried everything (from recopying the ROM, resetting the config, etc), trying different BIOS versions, it all did not change the problem. On the contrary: Using HLE as the BIOS lets the keys work while in the menu, but within the gameplay nothing can be triggered. With BIOS 1002 at least the keys work normal. But the freezing bug still occurs.


I don't know with which revision that bug arose, but I certainly know that I raced the whole track on my Pandora with earlier OS and PCSX versions.


I also reported this to the compatibility list.
 
I thoroughly tested "Ridge Racer 2 Revolutions" step by step with elder PCSX ReARMed revisions, and realized, that the incompatibility arose with the update from r12 to r13.


In r12 it worked fine, in r13 the bug starts. Updating the compatibility chart accordingly.


@notaz:

  • Do you have a supposition what change may raised the incompatibility?
  • Is there a chance for a fix in a newer revision?
 
Would it be possible to have r12 and r14 installed on the same SD card, and launch r12 if I intend to play that one particular game, and r14 for the other games?


Or do those different versions affect their settings in appdata negatively/disturbingly?


Another idea would be to install the 2 revisions on 2 separate SD cards, as each SD card has its own appdata root directory.


Responses appreciated. Thanks!
 
I thoroughly tested "Ridge Racer 2 Revolutions" step by step with elder PCSX ReARMed revisions, and realized, that the incompatibility arose with the update from r12 to r13.


In r12 it worked fine, in r13 the bug starts. Updating the compatibility chart accordingly.


@notaz:

  • Do you have a supposition what change may raised the incompatibility?
Not really, but I'll take a look.

Would it be possible to have r12 and r14 installed on the same SD card, and launch r12 if I intend to play that one particular game, and r14 for the other games?
I think it should, I use separate appids since around r9 for that purpose. The save and config formats are kept compatible too, so they should be able to share the same appdata just fine. Meanwhile you could try different GPU plugins to see if it's related to that.
 
r13 was when gpu_neon was made the default GPU plugin, so definitely try other ones. If this ends up being the case you can help with a save state right before the problem triggers.
 
BUG SOLVING


I tried with all different GPU plugins, and the freeze occurred in all of them. :-(


The freeze in the racing game happens in the beginner track, shortly after the first tunnel and at latest on the first uphill passage, so this is at about 0.25 laps. Twice I was able to race 1.25 laps, once with gpuNEON, once with gpuPEOPS. But also in this cases the freeze happened at about the same track region (~0.25), just 1 lap later.


Attached are the different save states.


Note: As the forum software permits no filenames without suffixes or with ".bin", I used ".txt" alternatively.

  • All states use BIOS PS1-SCPH1002:
    001.peops.postfreeze.txt with gpuPEOPS, about 2 seconds after the freeze.
  • 2-8: all use builtin_gpu (NEON):
    Main menu.
  • (3) Other interesting observation: Race countdown at 3 seconds til start. Saving the state to the then empty slots 3-9 + 0 not possible! Only choice is overwriting the existing 1 or 2.
  • Racing lasting about 3 seconds.
  • 004.pre15sec.txt About 15 seconds before the freeze.
  • 005.pre02sec.txt About 2 seconds before the freeze.
  • 006.post2sec.txt About 2 seconds after freeze.
  • 007.post1min.txt About 1 minute after the freeze.
  • 008.post5min.txt About 5 minutes after the freeze. The background music ended meanwhile, and you can still hear the constant sound of a motor engine, as if the game logic was stuck here.







USING DIFFERENT VERSIONS OF PCSX REARMED ON ONE SD CARD


When I switched between the different versions, all OPTIONS were kept, but the CONTROLSbetween r12, 13, 14 were not properly read by the elder/younger versions, seems that they are stored in a different format. So the only way seems to use a different PCSX version per each SD card.
 

Attachments

  • 001.peops.postfreeze.txt
    1.7 MB · Views: 159
  • 002.mainmenu.txt
    1.6 MB · Views: 157
  • 003.racing3sec.txt
    1.6 MB · Views: 151
  • 004.pre15sec.txt
    1.6 MB · Views: 183
  • 005.pre02sec.txt
    1.6 MB · Views: 138
  • 006.post2sec.txt
    1.6 MB · Views: 125
  • 007.post1min.txt
    1.6 MB · Views: 145
  • 008.post5min.txt
    1.6 MB · Views: 147
Last edited by a moderator:
Ok this one is difficult and extremely annoying because it doesn't reproduce reliably. I've tried to play it a bit and it hung after a while, like you report. Then I tried again and and it worked fine for 5 minutes.


Similarly loading 005.pre02sec.txt hung it once after ~2sec, like description says, but after that it loads and runs without hanging, even after emulator restart. So I'm rather confused with this one, I need to be able to "catch" the hang to be able to debug it. I suspect it's input related, i.e. you need to press some keys for it to happen.

(3) Other interesting observation: Race countdown at 3 seconds til start. Saving the state to the then empty slots 3-9 + 0 not possible! Only choice is overwriting the existing 1 or 2.
Does not reproduce, maybe you just selected "load state" instead of "save state"?

When I switched between the different versions, all OPTIONS were kept, but the CONTROLSbetween r12, 13, 14 were not properly read by the elder/younger versions, seems that they are stored in a different format. So the only way seems to use a different PCSX version per each SD card.
Hmm, don't remember changing control config format, but maybe I did..
 
Ok this one is difficult and extremely annoying because it doesn't reproduce reliably. I've tried to play it a bit and it hung after a while, like you report. Then I tried again and and it worked fine for 5 minutes.


Similarly loading 005.pre02sec.txt hung it once after ~2sec, like description says, but after that it loads and runs without hanging, even after emulator restart. So I'm rather confused with this one, I need to be able to "catch" the hang to be able to debug it. I suspect it's input related, i.e. you need to press some keys for it to happen.
Game is perfectly emulated in r12. As you say, that the bug is input-related, what was changed in r13 regarding input handling? Maybe the bug lies there? Of did you mean that only certain (hard to reproduce) input raises the bug in the GPU plugin?

(3) Other interesting observation: Race countdown at 3 seconds til start. Saving the state to the then empty slots 3-9 + 0 not possible! Only choice is overwriting the existing 1 or 2.
Does not reproduce, maybe you just selected "load state" instead of "save state"?
Sounds reasonable to me, likely that I once confused the menus "read state" / "write state".

When I switched between the different versions, all OPTIONS were kept, but the CONTROLSbetween r12, 13, 14 were not properly read by the elder/younger versions, seems that they are stored in a different format. So the only way seems to use a different PCSX version per each SD card.
Hmm, don't remember changing control config format, but maybe I did..
While up/down-grading between r12, r13, r14 I remember very certainly, that settings were properly kept, but that I had to reconfigure controls.


And I realized another tiny bug up to r14. If you launch the menu "Controls" the first time, all Pandora specific buttons (A) ( B) … are correctly labeled. If you launch it somewhen later, they have the default system names, such as PageUp, PageDown, Home, etc.
 
Ok I've figured it out. It's accuracy issue with GTE (geometry transformation engine) emulation.


When Exophase had first working version of his GPU, I've been testing it on various games. The testing showed some slightly displaced textures in some games; at first it looked it could be a problem with his GPU, but running the same display lists on real hardware showed that it was working correctly. It turned out to be slight inaccuracies in GTE division emulation, and other GPU plugins were not affected as they were not trying to match hardware exactly. The real hardware GTE only has approximate division implemented probably to reduce chip complexity/costs, and it's not known what exact algorithm it uses. Other emulators use reciprocal tables to emulate it exactly, but this is problematic to do in NEON because values have to be taken from NEON registers to ARM to be used for the lookup (slow), also parallelism of division would be lost.


So I chose to do approximation of approximation instead for better performance, and adjusting rounding seemed to solve the above texture problem. However the catch was that I only did this for one of 2 instructions that depend on division, and this turns out to be the reason Ridge Racer's rendering code is locking up (only randomly and only when you turn right). The fix is to make the other GTE instruction do the same rounding.


So such is the story of this bug.
 
Wow! A massive explanation!


The fix you are talking about: Will this fix be applied in general, or will there be a switch "if the current game is RRR, then apply this rounding logic" ?


And is there a beta version, which I could test, in order to see whether the game now works also on my device?


Or must I be patient for the next public release?


Thank you very much!
 
Please answer. Thanks!

I can't give give an authoritative answer for notaz but from what I understand of his explanation it seems very unlikely that this will result in any kind of special game hack. He did a different division implementation for one GTE opcode, he's just going to migrate it to the other one. Of course it still takes time to do this, since it involves messing with assembly functions.


notaz is collecting some other fixes (including one I gave him for gpu_neon) so he'll probably try to get them all into one release instead of releasing a one-off version just to fix this bug. But that doesn't mean this release is necessarily far off..
 
Thanks for your answer Exophase!


Ok, so that means the GTE rounding logic will be changed in general, thus affect all games.


Hope that this will not degrade other games just for the improvement of RRR.


But as you two are very competent programmers, you will do this fine, I guess! ;-)


My compliments for PCSX ReARMed!
 
Yeah I'm not going to do game specific codepaths as that becomes unmaintainable pretty quickly. A testcase against correct output shows that updated code is more accurate anyway, so hopefully it'll not cause additional problems, although you can never know..
 
Last edited by a moderator:
Very eager for the new PND. ;-)


Have some pastime days left, then intensive work again — little time for Pandora then. :-(


But I adore you anyway, regardless of wether you publish now or in two months™. :)
 
Last edited by a moderator:
Some rough date info would be nice for my impatient childish mind, to let go of it.


Be it a date soon, to start looking forward, or a very remote date, to push it out of my mind with more certainty.


Thanks!
 
With r15 in RRR you can now complete a full race!


Sadly, another bug appears:


Sometimes the in-game background music does not play at all, sometimes it repeats the first seconds of a soundtrack (as if a CD hangs), sometimes it plays normal.


I remember similar unreliability within earlier revisions.


RRR > Main menu > Options > Music Player > You cannot hear anything here now in r15. In earlier versions AFAIR, this at least always triggered the music.


I also checked the related options: PCSX > Options > [Advanced] >


Disable CD Audio --> OFF


Disable XA Decoding --> OFF


But, this is a minor bug.
 
Back
Top