ROM Hack Devious Idea to get Save Offsets

Ailuros27

Well-Known Member
OP
Member
Joined
Apr 7, 2015
Messages
732
Trophies
0
XP
421
Country
United States
So, I had an idea that maybe no one has thought of before, or at least had the ability to implement. Long before I had 3DS hax that allowed me to backup and edit saves, I had (and still have) a Powersaves device. Now that I do have hax, what's to stop me from applying certain save edits to my cartridge games via Powersaves, then extracting said saves via Homebrew or CFW tools and comparing them to backups made beforehand to get the offsets Datel found? Then, I could give those offsets to people here, who could make proper, non-obfuscated save editors for those games, or improve the ones that have already been made. It's lazy, I know, but I'm all for saving myself and others the trouble of having to hunt down offsets whenever possible. The only problem is I can only do this for cartridge games I personally have on hand. Luckily for me, one of the few remaining rental chains in the US has a store in my town, and they rent 3DS games. :P
 

Ailuros27

Well-Known Member
OP
Member
Joined
Apr 7, 2015
Messages
732
Trophies
0
XP
421
Country
United States
So, if anyone has any requests for where I should start, I have access to a lot of games. I suppose I'll remind myself when Bravely Second comes out to give that a go using Powersaves and look for the offsets they're using in a fresh save.
 

Zan'

2F88744FEED717856386400A44BBA4B9CA62E76A32C715D4F
Member
Joined
Oct 8, 2015
Messages
387
Trophies
0
Age
32
XP
271
Country
How exactly would this be any faster than using a RAM editor and make 2 live ramdumps and comparing or searching for live values?
And how would this be any better? It is limiting you to offsets a company found IF they found them.
And they rarely have actual good codes.
Money, Health and similar value cheats usually don't take longer than 5 minutes to get offsets for.
And save offsets force you to export save, hex edit and reimport or try to locate the ram offsets either way.
If you find the ram offsets directly you have more possibilities and can still calculate the save offsets.
 

Ailuros27

Well-Known Member
OP
Member
Joined
Apr 7, 2015
Messages
732
Trophies
0
XP
421
Country
United States
If you find the ram offsets directly you have more possibilities and can still calculate the save offsets.
Can you calculate save offsets from RAM offsets? How does what's in memory at a given moment have any relation to what's stored in a save? I know a lot of games load whole portions of the save file into memory at certain times, like when you're at your PC in a Pokemon game. But is there a calculable correlation between, say, where something like number of lives is stored in RAM compared to where it's stored in a save?
 

Zan'

2F88744FEED717856386400A44BBA4B9CA62E76A32C715D4F
Member
Joined
Oct 8, 2015
Messages
387
Trophies
0
Age
32
XP
271
Country
Can you calculate save offsets from RAM offsets? How does what's in memory at a given moment have any relation to what's stored in a save? I know a lot of games load whole portions of the save file into memory at certain times, like when you're at your PC in a Pokemon game. But is there a calculable correlation between, say, where something like number of lives is stored in RAM compared to where it's stored in a save?
Pretty much every game loads the complete save into the ram and updates it on whatever you do. And just saves this data back into a while on saving.
And then there is a second ram chunk which loads current gane variables etc. Which don't get stored since they are just for some specific things. But these are in a different chunk.
And since the ram addresses are in relation to the save structure you can take a known save address (A) (for example an easy to find string like the name) and find this in the ram (A). And then do SaveAddrB = SaveAddrA + (RamAddrB - RamAddrA).
For games with shifting ram addresses you need some kind of pointer anyway. Which you can also set in relation to your save.

Usually you would try to find the beggining and the end of the savegame in the ram anyway. Therefore it wouldn't be much of a problem to get the save adress.
You would just note down the start address and then ram - start = save.
For FFEX the pointer actually points to the end of the savegame in ram.
So all codes you find with Pointer + FFFF**** codes (which is effective subtracting) can used in the same way by applying the save length instead of the pointer value to get the save address.
 
Last edited by Zan',

Ailuros27

Well-Known Member
OP
Member
Joined
Apr 7, 2015
Messages
732
Trophies
0
XP
421
Country
United States
Ah. Thank you, @Zan'. That was very illuminating. I now see where you're coming from. However, this thread was just me thinking out loud, I suppose. I remember having to rely on Datel's cheap and finicky technology in the past, and now that a lot of people have access to unencrypted saves, it'd be nice for the limited offsets they have to become openly known so those with just homebrew (not to mention the CFW master race) could have access to reliable, offline save editors for more games.

I don't yet have the expertise needed to do what you described, so this was my idea to contribute what I can at the moment. And if I understood you correctly, even Datel's save offsets would prove useful, as once someone found the beginning and ending offsets for the saves in RAM, Datel's offsets could quickly be converted into RAM offsets.
 
  • Like
Reactions: Ryccardo

DarkFlare69

Well-Known Member
Member
Joined
Dec 8, 2014
Messages
5,147
Trophies
2
Location
Chicago
XP
4,750
Country
United States
Ah. Thank you, @Zan'. That was very illuminating. I now see where you're coming from. However, this thread was just me thinking out loud, I suppose. I remember having to rely on Datel's cheap and finicky technology in the past, and now that a lot of people have access to unencrypted saves, it'd be nice for the limited offsets they have to become openly known so those with just homebrew (not to mention the CFW master race) could have access to reliable, offline save editors for more games.

I don't yet have the expertise needed to do what you described, so this was my idea to contribute what I can at the moment. And if I understood you correctly, even Datel's save offsets would prove useful, as once someone found the beginning and ending offsets for the saves in RAM, Datel's offsets could quickly be converted into RAM offsets.
It's pretty easy. let's find rupee amount in zelda. its the same idea for everything (gateway, ar, wii, anything)

go into game
dump the ram
search for the amount of rupees you have
gain rupees
dump the ram
search for the amount of rupees you have
repeat 1-2 more times
theres your address. if theres two addresses, the first is the physical amount and the 2nd is the display.
 

Ailuros27

Well-Known Member
OP
Member
Joined
Apr 7, 2015
Messages
732
Trophies
0
XP
421
Country
United States
Yeah. I've done that on the Wii U side of things already. I was the first to share an address for Super Sea Snails for Splatoon. But I was referring to finding the beginning and end of the save file in RAM, using save offsets to calculate RAM save offsets and vice versa. Those kinds of calculations are new to me. I'm also familiar with display versus physical addresses, as I found a second set of addresses for the *ahem* chest assets in Xenoblade Chronicles X that turned out to be the physical ones.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • Xdqwerty @ Xdqwerty:
    im back
  • Psionic Roshambo @ Psionic Roshambo:
    Find the studio rips, like a few GBs per song lol
  • Xdqwerty @ Xdqwerty:
    @Psionic Roshambo, game boys per song?
  • Psionic Roshambo @ Psionic Roshambo:
    I used to have a few of those with Direct Sound on XP and Audigy Platinum sound card with high end speakers was a glorious time for audio
  • Psionic Roshambo @ Psionic Roshambo:
    Lol no Gigabytes per song
  • K3Nv2 @ K3Nv2:
    Some websites have full studio rips of production kind of hard to find for obvious reasons
    +1
  • Psionic Roshambo @ Psionic Roshambo:
    Not sure current audio codec based sound built in to motherboards can handle the bit depth those used
  • Xdqwerty @ Xdqwerty:
    @Psionic Roshambo, I just use mp3 files of the best quality i can find
    +1
  • K3Nv2 @ K3Nv2:
    I say fuck it and open Spotify 80% of your musics already on it probably
    +1
  • Xdqwerty @ Xdqwerty:
    or just put in on yt
  • Psionic Roshambo @ Psionic Roshambo:
    Xdqwerty for most people hearing anything better than 256Kbps MP3 they cannot tell the difference
  • Xdqwerty @ Xdqwerty:
    play the songs video
  • K3Nv2 @ K3Nv2:
    Audiophiles mjs second allegation
  • Psionic Roshambo @ Psionic Roshambo:
    Pedo Audio what ever MJ was into he lost a glove
  • K3Nv2 @ K3Nv2:
    Mjs glove fit
  • Psionic Roshambo @ Psionic Roshambo:
    Billies Jeans did not
  • K3Nv2 @ K3Nv2:
    Mj you are the father
  • K3Nv2 @ K3Nv2:
    Wifi 7 routers are already out
  • The Real Jdbye @ The Real Jdbye:
    and i'm still here on wifi 5
  • The Real Jdbye @ The Real Jdbye:
    all my stuff is wired anyway
  • The Real Jdbye @ The Real Jdbye:
    what annoys me is my server has 2.5g but i have nothing else that does
  • K3Nv2 @ K3Nv2:
    No real point in 7 unless you have 5gb which no real point in it
  • Xdqwerty @ Xdqwerty:
    wdym with wifi number
  • K3Nv2 @ K3Nv2:
    It's just a radio frequency
    K3Nv2 @ K3Nv2: It's just a radio frequency