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.
A new Nintendo Switch firmware update is here. System software version 18.0.1 has been released. This update offers the typical stability features as all other...
With Apple having recently updated their guidelines for the App Store, iOS users have been left to speculate on specific wording and whether retro emulators as we...
The time has finally come, and after many, many years (if not decades) of Apple users having to side load emulator apps into their iOS devices through unofficial...
TheFlow has done it again--a new kernel exploit has been released for PlayStation 4 consoles. This latest exploit is called PPPwn, and works on PlayStation 4 systems...
Nintendo might just as well be a law firm more than a videogame company at this point in time, since they have yet again issued their now almost trademarked usual...
While rumors had been floating about rampantly as to the future plans of Nintendo, the President of the company, Shuntaro Furukawa, made a brief statement confirming...
Another video game prototype has been found and preserved, and this time, it's none other than the game that spawned an entire franchise beloved by many, the very...
Anbernic is back with yet another retro handheld device. The upcoming RG28XX is another console sporting the quad-core H700 chip of the company's recent RG35XX 2024...
Nintendo has officially announced that a successor to the beloved Switch console is on the horizon. As we eagerly anticipate what innovations this new device will...
Two classic titles join the Nintendo Switch Online Expansion Pack game lineup. Available starting April 24th will be the motorcycle racing game Extreme G and another...
Nintendo has officially announced that a successor to the beloved Switch console is on the horizon. As we eagerly anticipate what innovations this new device will...
While rumors had been floating about rampantly as to the future plans of Nintendo, the President of the company, Shuntaro Furukawa, made a brief statement confirming...
Nintendo might just as well be a law firm more than a videogame company at this point in time, since they have yet again issued their now almost trademarked usual...
With Apple having recently updated their guidelines for the App Store, iOS users have been left to speculate on specific wording and whether retro emulators as we...
The time has finally come, and after many, many years (if not decades) of Apple users having to side load emulator apps into their iOS devices through unofficial...
A new Nintendo Switch firmware update is here. System software version 18.0.1 has been released. This update offers the typical stability features as all other...
TheFlow has done it again--a new kernel exploit has been released for PlayStation 4 consoles. This latest exploit is called PPPwn, and works on PlayStation 4 systems...
After rumour got out about an upcoming NES Edition release for the famed Nintendo World Championships, Nintendo has officially unveiled the new game, titled "Nintendo...
DOOM is well-known for being ported to basically every device with some kind of input, and that list now includes the old retro game console in Persona 5 Royal...
The number of layoffs and cuts in the videogame industry sadly continue to grow, with the latest huge layoffs coming from Microsoft, due to what MIcrosoft calls a...
leo @'d me in a thread about his last dream, stating he was passionately making out with a guy he used to know and then woke up while reaching for his crotch, and said that i would "know who 'tf' it is"
and of course i know, it's luke