I've been a lurker on the forum for quite some time now, and after stumbling on the save editor by rog9001, I felt I could contribute by continuing the development for a save editor.
Based on the findings by BtEtta (thanks for the parsing of the [POST=7594961]format[/POST] and file viewer!), I will be creating a very graphically appealing save editor. All I'll say for now is, imagine what the inventory and save file screens look like
This thread will be dedicated to the discussion of the save data. All block related information will be posted here.
A proof of concept that works with the data in the common.bmssv inventory block. Currently supports all values found in the block. Will work fine for users just looking to tweak their loadout or toggle the baby metroid.
Chunk ID Data Type Chunk Data Value Description
-----------------------------------------------------------------------------
C59C2CEE 0x75 D97207D2 D97207D2 Block ID
1F6E32DA 0x69 0E000000 14 Surface
1DD4CC59 0x69 0E000000 14 Area 1
9A3461E1 0x69 12000000 18 Area 2
E7940589 0x69 15000000 21 Area 3
D5F34B4B 0x69 15000000 21 Area 4
2FB3829B 0x69 17000000 23 Area 5
5213E6F3 0x69 0C000000 12 Area 6
77DB0BAC 0x69 0D000000 13 Area 7
DED6C283 0x69 0E000000 14 Area 8
Block C72341EA - Misc Data (Still being mapped)[FLOAT='right'](Length: ? Chunks)[/FLOAT]
Code:
Chunk ID Data Type Chunk Data Value Description
-----------------------------------------------------------------------------
C59C2CEE 0x75 C72341EA C72341EA Block ID
A58344DF 0x66 0000C642 99 Max Energy Number?
CF1F63A9 0x66 0000FA43 500 Max Aeion Dropped?
02C9EFE3 0x66 0000F041 30 Large Energy Drop?
D48F6F4D 0x66 00002041 10 Small Energy Drop?
A0155E8F 0x69 02000000 2 Missile Drop?
0DD64AC8 0x62 01 1 Power Bomb Drop?
AC804A60 0x63 [string] samus Power Bomb Drop?
CD978BA7 0x69 00000000 0
8E60825E 0x69 E4CD0B00 773604
0E308714 0x63 [string] [!#GUI_MI... String Format for Load Screen? (Full string: [!:#GUI_MISC003] / 08:36:42 / 0%)
740158CE 0x63 [string]
1D484F69 0x66 2634F246 31002.074... Mission Time (seconds)
D91DFDA0 0x62 01 1
6F73FBEA 0x62 01 1
BC1556C6 0x62 01 1
05EFDCBE 0x62 01 1
D281B2D7 0x62 01 1
C83950F4 0x62 01 1
C6834964 0x62 01 1
1F6E32DA 0x69 0E000000 14 Surface Collected Items
1DD4CC59 0x69 0E000000 14 Area 1 Collected Items
9A3461E1 0x69 12000000 18 Area 2 Collected Items
E7940589 0x69 15000000 21 Area 3 Collected Items
D5F34B4B 0x69 15000000 21 Area 4 Collected Items
2FB3829B 0x69 17000000 23 Area 5 Collected Items
5213E6F3 0x69 0C000000 12 Area 6 Collected Items
77DB0BAC 0x69 0D000000 13 Area 7 Collected Items
DED6C283 0x69 0E000000 14 Area 8 Collected Items
1A0AC730 0x62 01 1 Surface: Alpha Metroid?
A4EDC5C7 0x69 01000000 1 Surface: Metroid DNA?
40012D3D 0x63 [string] LE_ChozoU... Current Event? (Full string: LE_ChozoUnlockAreaDNA)
B7DF5468 0x63 [string] s000_surface Current Event Location?
Chunk ID Data Type Chunk Data Value Description
-----------------------------------------------------------------------------
C59C2CEE 0x75 CB17C79F CB17C79F Block ID
09E50EEE 0x66 00004842 50 Total Metroids
55F1D6B6 0x66 00008443 264 Max Missiles
FE981519 0x66 00004842 50 Metroids Killed
70833890 0x66 00608944 1099 Max Energy
E9877735 0x66 0000A041 20 Max Power Bombs
CBA0FFDF 0x66 00000C42 35 Max Super Missiles
77561E39 0x66 0000803F 1 Ice Beam
9BD12C5A 0x66 00800945 2200 Max Aeion Energy
733C15CE 0x66 00608944 1099 Current Energy
42CED42A 0x66 00008443 264 Current Missiles
455A1D6A 0x66 00000C42 35 Current Super Missiles
B074A1EE 0x66 0000A041 20 Current Power Bombs
634DC541 0x66 0000803F 1 High Jump Boots
20046296 0x66 0000803F 1 Screw Attack
194F3BAA 0x66 0000803F 1 Space Jump
EA9E382B 0x66 0000803F 1 Morph Ball
576E4803 0x66 0000803F 1 Scan Pulse
B9805F37 0x66 00800945 2200 Current Aeion Energy
A9FB0778 0x66 0000803F 1 Spring Ball
462D2463 0x66 00000000 0 Current Metroid DNA
A34423D9 0x66 0000803F 1 Charge Beam
03FDA58A 0x66 0000803F 1 Morph Ball Bomb
06F58B9C 0x66 0000803F 1 Spider Ball
7D145810 0x66 0000803F 1 Lightning Armor
F7E06C74 0x66 0000803F 1 Varia Suit
8E7272BA 0x66 0000803F 1 Wave Beam
5CBD3A2B 0x66 0000803F 1 Beam Burst
CBB372C9 0x66 0000803F 1 Grapple Beam
CB790519 0x66 0000803F 1 Spazer Beam
4871DBB7 0x66 0000803F 1 Phase Drift
D55B9714 0x66 0000803F 1 Plasma Beam
999DACAD 0x66 0000803F 1 Gravity Suit
E6E8ECB4 0x66 0000803F 1 Baby Metroid
pkprfl.bmssv
[To be analysed]
samus.bmssv
Seems to be all of the game's event flags stored in a series of blocks. I would presume a chunk (or series of chunks) would represent different actions/accomplishments from the game (I.E. new game tutorial messages, cutscenes, gammas running away, drill bot progress, etc).
samus.bmssv stores at a minimum data about the maps. For example block ID 0x7E673BEF appears to cover area 8 (I've only prodded far enough to identify one area, but the rest won't take long.)
Chunk 0x2909989D is a uint8 array that covers the map itself for the area.
From one of my files with wrapping added in the correct place:
Also I've uploaded a slightly newer version of my save viewer. It actually supports saving now — but since you can't edit anything it's more like a sanity check than anything since it's rebuilding the file from scratch and hopefully getting it byte-exact to the original. It also has a few other quality of life things to make keeping track of discoveries easier.
Haha, so that's what those arrays are! Should have figured. The original metroid had its rooms allocated in memory in a similar fashion. (I'd post the image but I think my post count is too low).
Great find! Now we can have an 'all maps downloaded' option on the save editor. I'll also be trying to track down the remaining areas. Didn't get a whole lot of work in this weekend as my time has been consumed with my new toy...the HTC Vive, XD.
EDIT: I've just added what I've mapped so far in Misc Data. Going to be trying out those values that I think deal with the drop amounts for energy/ammo. (Could be very entertaining if I can drop 2000+ Aeion energy)
Sorry about the lack of updates. Been busy with work...
I've attached my first 'beta' build of AMSRSE. It can be found as an attachment on the [POST=7662218]first post[/POST]. This serves as a test build for the overall file interaction as well as a first run implementation of the UI. The design is based of of MSR's inventory screen. Text fields at the top control current/max for collectables. The icons in the middle are toggle buttons to enable/disable items. Aeion abilities and metroid info (including enabling the baby metroid) can be found in the bottom section.
I plan on adding to this with more functionality that will enable manipulation of more save file data (such as reserve tanks, gallery info, map info, etc.). And yes, as soon as I'm able, I will be migrating this to GitHub, just haven't gotten around to it yet.
Burnt through the night tweaking this. Please leave any feedback or questions and I'll be on later to check. Thanks!
EDIT: I've migrated the project to GitHub. Further information on the usage of SaveDataReaderProto can be found in the Wiki. I'm also currently in the process of adding all known information on the blocks/chunks for the save files to the Wiki. When finished, this will be a much more organized place to view information on the file format.
Hello Khaos-Void, thanks for your job and your project seems to like more flexible and easy to use. However i want to know, where are your project actually ? The SaveDataReaderProto is it working now ? I saw in GitHub nothing special about it.
It wasn't too long ago we saw our first glimpse of Courage Reborn, another Twilight Princess PC port in the works based on last year's decompilation efforts. With...
Seemingly out of nowhere a PC port for Pokemon Platinum has surfaced online, bundled alongside the source code for those interested in building and developing it for...
After much speculation, Nintendo has finally followed their competitors in announcing price increases for their hardware.
You can find a breakdown of what's changing...
Airing last night with very little in the way of warning, a brand new Nintendo Direct was aired. Running for 15 minutes in total, it took a moment to celebrate the...
With very little in the way of announcement, Valve has today increased the price of the Steam Deck but some fairly considerable margins. Both of the available models...
As a part of their Financial Results Briefing for the previous year, Nintendo president Shuntaro Furukawa took to the floor to answer key questions around the Switch...
Earlier this year, Sony announced major price increases for the PS5, PS5 Pro, and PlayStation Portal. Now the company is raising prices again, this time for...
We are once again here to tell you about a game leaking before its release, but for once, it's not one published by Nintendo. The game files for Microsoft's upcoming...
Continuing with the great news of Pokémon Platinum getting a native unofficial PC port just a few days ago, today, yet another classic title from the franchise has...
The latest in a growing number of native PC ports, Paper Mario ReCut got its first pre-release build earlier this week. Based on the N64 recompilation toolchain, the...
It wasn't too long ago we saw our first glimpse of Courage Reborn, another Twilight Princess PC port in the works based on last year's decompilation efforts. With...
With very little in the way of announcement, Valve has today increased the price of the Steam Deck but some fairly considerable margins. Both of the available models...
After much speculation, Nintendo has finally followed their competitors in announcing price increases for their hardware.
You can find a breakdown of what's changing...
Airing last night with very little in the way of warning, a brand new Nintendo Direct was aired. Running for 15 minutes in total, it took a moment to celebrate the...
Seemingly out of nowhere a PC port for Pokemon Platinum has surfaced online, bundled alongside the source code for those interested in building and developing it for...
Earlier this year, Sony announced major price increases for the PS5, PS5 Pro, and PlayStation Portal. Now the company is raising prices again, this time for...
As a part of their Financial Results Briefing for the previous year, Nintendo president Shuntaro Furukawa took to the floor to answer key questions around the Switch...
The latest in a growing number of native PC ports, Paper Mario ReCut got its first pre-release build earlier this week. Based on the N64 recompilation toolchain, the...
A whole hour of PlayStation content is on the way, thanks to the latest State of Play showcase. Headlining the stream will be Marvel's Wolverine, alongside a...
For the first time in 13 years, the Call of Duty series will again return to Nintendo's consoles. Set to launch on the 23rd of October, the latest release, Modern...