News: 11 March 2016 - Forum Rules

Author Topic: [PSX] Ridge Racer Turbo Mode: trying to get infinite time  (Read 604 times)

aybe

  • Jr. Member
  • **
  • Posts: 6
    • View Profile
[PSX] Ridge Racer Turbo Mode: trying to get infinite time
« on: June 28, 2021, 02:48:16 pm »
This is for the 60Hz Ridge Racer version that is on the promotional disc given with Ridge Racer 4.

I would like to ask if anyone could help out about the following:

Get infinite race time so I can study the game mechanics.

I have tried, without much success to find where the time decreases using Duckstation Cheat Manager but failed, say when counter is 43 seconds, I search for that in memory but either I have no decreasing values or there are more than 5000 being found (the hard limit set in their cheat manager).


Thanks in advance :thumbsup:

FAST6191

  • Hero Member
  • *****
  • Posts: 3237
    • View Profile
Re: [PSX] Ridge Racer Turbo Mode: trying to get infinite time
« Reply #1 on: June 28, 2021, 04:56:10 pm »
Most times seconds is not going to be the thing stored in memory and more likely to be some fractional value, or value far higher (don't need to do 100ths of a second if you multiply it by 100 to keep it a whole number). For instance if you have a vblank 60 times a second then having that add one to a value and when it reaches a certain amount then calling it quits is rather easier to trying to do second accurate timers in a game and using that. Some timers will also be reversed as well and instead be count up or count down internally (whichever is the opposite of the on screen display) and just do some maths before it puts the number on screen.

To that end you probably want to do a "has changed" search rather than specific numbers or falling value*. Bonus is you don't even have to do anything in the game (when finding infinite money you have to actually spend some...) and instead can search, return to the game, bring up the cheat menu again and search once more as the fraction you were in the game for likely saw it advance a bit. Naturally try to do it in the simplest mode available (don't know if there is a basic no traffic time trial kind of deal you can sit at the start line for but better that sort of thing than a 40 person race with animations and whatnot going on) to reduce the possibilities it has to scan through.

*while I mentioned the reversed timer thing then 95% of games will be what you see on screen corresponds to the game internals and as a basic cheat searching effort like this has thousands of options for a search (compared to something like a non monsters flag or double jump flag) and no great effort needed to reset and try again then if the timer is decreasing then search for values decreasing and if the timer is increasing you can search for that and maybe make your life a bit easier.

Depending upon what you feel like doing with a debugger you can probably do some more with that as well.

Do also note a lot of timers in general, and especially this sort of thing, are relied upon by the game to do certain things so holding it constant might trouble things. In those cases most start by making a cheat along the lines of if value is not in this range set it to this value, and in doing so you keep the timer going but resetting before it runs out.

aybe

  • Jr. Member
  • **
  • Posts: 6
    • View Profile
Re: [PSX] Ridge Racer Turbo Mode: trying to get infinite time
« Reply #2 on: June 29, 2021, 05:52:06 pm »
You rock  :thumbsup: :thumbsup: :thumbsup:

As I started searching for larger values, I made progress!

These are the different addresses I found in duckstation:

Code: [Select]

u32 88488 time
u16 88538 paused
u16 8854c num players ?
u16 88948 player position
u16 88902 gear number
u32 88904 car rpm ?
u16 88950 laps, if zero then lap time never starts
u16 8896c lap time
u16 ce2e2 pad state


And yeah, 88488 stops time, it starts at 3600, i.e. 60 * 60, I instantly knew it was it lmao :crazy: :crazy: :crazy:

Now I can finally study the game without having to constantly play/advance/save state.

Actually, I've reverse engineered all the graphics but since there's some weird stuff, being able to inspect the game without a running timer is really cool!



Thanks bro  :beer:

June 29, 2021, 06:26:59 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
Last but not least, to make it work in no$psx, grab CEP Cheater For PSXfin, NO$PSX, And Xebra/Arbex:

https://www.ngemu.com/threads/cep-cheater-for-psxfin-no-psx-and-xebra-arbex.159304/

In CODELIST.TXT append this:

Code: [Select]
#-----------------------------------------------------------------------------
"RRTURBO" .off

"Infinite Time" .off
80088488 0E10

.end
#-----------------------------------------------------------------------------

Follow instructions in CEP Instructions.txt on how to configure CEP for no$psx, enable the cheat, by now you should have infinite time in no$psx. :)

And while I'm on it, for duckstation, save this to a .CHT file and import it:

Code: [Select]
#group=RRTURBO
#type=Gameshark
#activation=EndFrame
[*Infinite time]
80088488 0E10

 :crazy:
« Last Edit: June 29, 2021, 06:26:59 pm by aybe »

FAST6191

  • Hero Member
  • *****
  • Posts: 3237
    • View Profile
Re: [PSX] Ridge Racer Turbo Mode: trying to get infinite time
« Reply #3 on: June 30, 2021, 10:04:49 am »
Glad you got it working. Curious that the timer was in with all the other data like that as well -- if it was character stats, potion flags or inventory contents then yeah those sorts of things tend to be one after the other/bunched together such that I look for easier things to find there and move sideways. Most timers I have ever found have been off in their own section doing their own thing.

aybe

  • Jr. Member
  • **
  • Posts: 6
    • View Profile
Re: [PSX] Ridge Racer Turbo Mode: trying to get infinite time
« Reply #4 on: June 30, 2021, 04:42:19 pm »
I can only suppose that the compiler may be at work about these, many times you can see a memory location used by more than one thing, things that are totally unrelated; the compiler knows to squeeze things out and it looks totally unnatural.

For the potions and stuff you're talking, I guess that these are structs and therefore don't get split by the compiler and you retrieve them laid as they were originally.

I imagine that the RRTURBO timer was nothing more than a global integer, thus, get relocated in a weird way.