ROM Hack [Release] Metroid Samus Returns Save Editor

  • Thread starter Thread starter rog9001
  • Start date Start date
  • Views Views 48,644
  • Replies Replies 136
  • Likes Likes 18
ehhhhhhh . . . sorry I am just really bored right now. Also I will check out everything that you shared with me. About the play time, it wasn't really play time, I mean it was but its just text nothing more. Idk how play time is stored for this game, I thought it would be just like any other game aka convert time to milliseconds and there is your value as a int 32 but I guess its not.
Nope it's a float too.

Shortly after where you had the plain text pointless time you'll see the bytes 1D 48 4F 69 66 (oh the same pattern again :) ) following that is the time in seconds stored as a 32-bit float.
top_0000.png
 
Nope it's a float too.

Shortly after where you had the plain text pointless time you'll see the bytes 1D 48 4F 69 66 (oh the same pattern again :) ) following that is the time in seconds stored as a 32-bit float.
top_0000.png
Well damn xD

guess I didn't look hard enough. I do better with loaded data then static data.

Gonna probably try closing/deleting this thread.

--------------------- MERGED ---------------------------

also just to tell you, that ID list isn't foolproof because I tried find the id for super missiles and found 2 of em.
 
Last edited by rog9001,
  • Like
Reactions: ShadowOne333
Nope it's a float too.

Shortly after where you had the plain text pointless time you'll see the bytes 1D 48 4F 69 66 (oh the same pattern again :) ) following that is the time in seconds stored as a 32-bit float.
top_0000.png
Please please let changing time return to the editor :D
 
Please please let changing time return to the editor :D

Did you read my reply? I am thinking of closing this thread and that's it. This is really time consuming and I really don't fancy having 20 windows open on my computer cuz I lose track of whats what and sometimes just ask myself the simple question "wtf was I doing?" (when I am asking this I just see my 5 instances of calculator and 3 instances of HxD).
 
Last edited by rog9001,
Did you read my reply? I am thinking of closing this thread and that's it. This is really time consuming and I really don't fancy having 20 windows open on my computer cuz I lose track of whats what and sometimes just ask myself the simple question "wtf was I doing?" (when I am asking this I just see my 5 instances of calculator and 3 instances of HxD).
That's a shame.
But I can understand that.

Do you have the source available?
I might want to give it a try to add some stuff on my own, I just hope my coding skills are up to it :P
 
Did you read my reply? I am thinking of closing this thread and that's it. This is really time consuming and I really don't fancy having 20 windows open on my computer cuz I lose track of whats what and sometimes just ask myself the simple question "wtf was I doing?" (when I am asking this I just see my 5 instances of calculator and 3 instances of HxD).
Then mark the project as cancelled, but leave the thread open. You can unsubscribe from it if you want. Just give people a place to discuss it with each other.

Edit: Also consider releasing the source. Your work could live on. :)
 
Nope it's a float too.

Shortly after where you had the plain text pointless time you'll see the bytes 1D 48 4F 69 66 (oh the same pattern again :) ) following that is the time in seconds stored as a 32-bit float.
top_0000.png
How would one go about making that change? I've got my common open in HxD and have found the bytes you mentioned, but the string after that doesn't appear to have the value. For me, 08:19:00 should become 29940, but performing a 4-byte search doesn't find any results. I'm about as green to this stuff as green gets... how many steps am I missing?
 
  • Like
Reactions: ShadowOne333
How would one go about making that change? I've got my common open in HxD and have found the bytes you mentioned, but the string after that doesn't appear to have the value. For me, 08:19:00 should become 29940, but performing a 4-byte search doesn't find any results. I'm about as green to this stuff as green gets... how many steps am I missing?
It's bacause it's stored as a IEEE-754 floating point number. These will look different from normal integers and are not so easily read.

To give an example, before I edited my time for the screenshot the value in my file for the relevant four bytes was 0x44C66E47.
So let's find out what that translates to.
  • First, the 3DS stores things in little-endian format (if we were to talk decimal numbers writing one-hundred and twenty three in big-endian would be 123, in little-endian we'd write 321) because that's the format its CPU expects. So first we need to reverse the bytes so we have 0x476EC644
  • Now we can google for a 32-bit float converter and this site will do the trick.
  • Enter the reversed bytes into the hexadecimal representation box and hit enter.
  • This gives me 61126.266 seconds, or a little under 17 hours. Which matches what my game shows. If at this step you don't get what you're expecting you're reading the wrong bytes or following the steps above wrong.
  • Maybe I want to edit things so I'm in place to see the middle ending (finishing between 4-8 hours) so we calculate what 4 hours is in seconds (4*60*60) and get 14400
  • Putting that into the decimal representation box and hitting enter gives me a value of 0x46610000 — but remember this value would be big-endian
  • So we reverse it to get 0x00006146, therefore you'd need to make those four bytes read 00 00 61 46
  • Save your changes and reinject your save using your preferred method.
 
It's bacause it's stored as a IEEE-754 floating point number. These will look different from normal integers and are not so easily read.

To give an example, before I edited my time for the screenshot the value in my file for the relevant four bytes was 0x44C66E47.
So let's find out what that translates to.
  • First, the 3DS stores things in little-endian format (if we were to talk decimal numbers writing one-hundred and twenty three in big-endian would be 123, in little-endian we'd write 321) because that's the format its CPU expects. So first we need to reverse the bytes so we have 0x476EC644
  • Now we can google for a 32-bit float converter and this site will do the trick.
  • Enter the reversed bytes into the hexadecimal representation box and hit enter.
  • This gives me 61126.266 seconds, or a little under 17 hours. Which matches what my game shows. If at this step you don't get what you're expecting you're reading the wrong bytes or following the steps above wrong.
  • Maybe I want to edit things so I'm in place to see the middle ending (finishing between 4-8 hours) so we calculate what 4 hours is in seconds (4*60*60) and get 14400
  • Putting that into the decimal representation box and hitting enter gives me a value of 0x46610000 — but remember this value would be big-endian
  • So we reverse it to get 0x00006146, therefore you'd need to make those four bytes read 00 00 61 46
  • Save your changes and reinject your save using your preferred method.
I could have chewed on this problem for months and never would have thought of "maybe the code is backwards". Thank you very much for this big/little endian information. My time has modified with no trouble at all.
 
I can take a look into that. I've got a pretty good handle on the overall format of the save files now. (Fun fact, all three files use the same basic format, you can break them all down into their individual chunks of data without even knowing what each chunk stores.)
 
  • Like
Reactions: Raylight
Awesome, thanks.
Changed the playtime just fine.
Only thing missing is unlocking the different galleries.

I can take a look into that. I've got a pretty good handle on the overall format of the save files now. (Fun fact, all three files use the same basic format, you can break them all down into their individual chunks of data without even knowing what each chunk stores.)

I don't think that what [Truth] is asking for, is initially in the file. For example, the little Metroid which you get halfway or so in the game, is essentially a data block (with support blocks) which is only written into the save file after getting it. I think the gallery stuff (concept art & sound test) act the same way. Dunno, might be wrong. Also, injecting data into the save file renders it unusable sins the game cant read it, so if you were to want the small Metroid (and if I am correct, the concept art & sound test) at the start of the game, you would need to rewrite the entire save file and add all the data blocks which support the data block containing the info bout the little Metroid and also add the little Metroid block as well.

--------------------- MERGED ---------------------------

Lastly, I don't understand why you would even need the gallery stuff if you can find the soundtracks and the concept art on the internet
 
Lastly, I don't understand why you would even need the gallery stuff if you can find the soundtracks and the concept art on the internet
It makes way more sense than wanting to cheat. ;)

Lots of people, myself included, want to get finish every part of the game. It's especially common with Metroid games. There is something satisfying about 100 percent-ing a game. Nintendo screwed us over with Samus Returns by saying if we wanted to unlock everything then we needed to pay extra money. The gallery and Fusion Mode are literally the ONLY reason I want this.
 
  • Like
Reactions: Raylight
It makes way more sense than wanting to cheat. ;)

Lots of people, myself included, want to get finish every part of the game. It's especially common with Metroid games. There is something satisfying about 100 percent-ing a game. Nintendo screwed us over with Samus Returns by saying if we wanted to unlock everything then we needed to pay extra money. The gallery and Fusion Mode are literally the ONLY reason I want this.

I get what you are on bout but i dont think i will be able to do much unless someone gives me a save with concept art and sound test unlocked so i can see what has changed or what has been added.
 
  • Like
Reactions: ShadowOne333
As I suspected, it's a data block which gets added to the file after scanning the amiibo. I would gladly add a "unlock galleries" button to my save editor but first I will need to figure out what changes in the file and what doesn't so I can have a stable aob to scan and then act accordingly.
The other two saves don't have the galleries/sound unlocked. Does that help?
 
@JoostinOnline do you by any chance know how the features work? As in, if you scan the amiibo for concept art and sound test does it get unlocked instantly or do you need to finish the game + to scanning?
 

Site & Scene News

Popular threads in this forum