08-02-2025, 05:00 PM
Here is something I have been working on - looking at how ICR2 uses memory during the game. I was able to identify a few chunks of memory that appear to contain real-time DLONG, DLAT, speed, rotation, and other values for every car on the track.
Because I am now focusing my attention on the Rendition version, I needed a way to access Dosbox memory. But since the game may load into a different place in memory within the Dosbox process during each session, I wrote a program that searches for a unique series of bytes (which I decided would be the words "license with Bob" occurring at a known address in the exe file). From there, it calculates where the base address of the exe file must be at, so then I can tell it to find other known memory/exe addresses from that "anchor" point.
I made a rough overlay program that shows some of what I found, as well as an implementation of split times.
I am hoping to continue to make more useful add-ons like a full field rundown, or other features like in the Pribluda GPL add-on (thanks to jxeboy for pointing that out to me). I was also chatting with some folks that it may be possible to add rudimentary force feedback support using some of the real-time, however I might defer that to some other developers due to the advanced skills needed, and the fact that I have never played a racing game with FFB before.
More adventurous is to see if I can make a program that writes to memory, for example, if I make a boost button that temporarily provides more engine power.
P.S. Some fun facts from this video:
- You can actually get more than 45 inches of boost! I am guessing Papyrus realized that they couldn't be showing you 45.4 inches on the dashboard so all the numbers are rounded down to the last integer.
- "Durability" is a number that decreases when you overrev (i.e. slightly below engine blowing rpm). It may increase your odds of breakdown the lower this number gets.
Because I am now focusing my attention on the Rendition version, I needed a way to access Dosbox memory. But since the game may load into a different place in memory within the Dosbox process during each session, I wrote a program that searches for a unique series of bytes (which I decided would be the words "license with Bob" occurring at a known address in the exe file). From there, it calculates where the base address of the exe file must be at, so then I can tell it to find other known memory/exe addresses from that "anchor" point.
I made a rough overlay program that shows some of what I found, as well as an implementation of split times.
I am hoping to continue to make more useful add-ons like a full field rundown, or other features like in the Pribluda GPL add-on (thanks to jxeboy for pointing that out to me). I was also chatting with some folks that it may be possible to add rudimentary force feedback support using some of the real-time, however I might defer that to some other developers due to the advanced skills needed, and the fact that I have never played a racing game with FFB before.
More adventurous is to see if I can make a program that writes to memory, for example, if I make a boost button that temporarily provides more engine power.
P.S. Some fun facts from this video:
- You can actually get more than 45 inches of boost! I am guessing Papyrus realized that they couldn't be showing you 45.4 inches on the dashboard so all the numbers are rounded down to the last integer.
- "Durability" is a number that decreases when you overrev (i.e. slightly below engine blowing rpm). It may increase your odds of breakdown the lower this number gets.
