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.
The never-ending battle between the litigious plumber and the emulation Hydra continues day by day, and these past days, Nintendo took action against more emulators...
A new Nintendo Switch firmware update just landed. System software version 18.1.0 has been released and pushed out to consoles. The contents of the update are fairly...
Nintendo has released a cryptic 15-second video titled "Emio" or "笑み男" (Smiling Man) on their social media channels.
The video features a lost-footage style scene...
The Nintendo 64 has been the main console for modern recompilation projects to PC, and with the recent release of the N64Recomp tool just a couple of months ago, more...
Over eight years and nearly 22,000 commits since the release of Dolphin 5.0 in June of 2016, Dolphin has evolved to become a stable and accurate emulator of both the...
The Sonic homebrew and hacking community is for sure one of the most active communities when it comes to game modifications themselves. The fanbase has even made...
In a recent Q&A with investors, Nintendo president Shuntaro Furukawa states the company has concerns over the use of AI, like LLMs, in its first party game...
A new fork of the popular DS emulator, melonDS, called melonPrimeDS has been released. Developed by user makidoll, this emulator adds keyboard and mouse support...
Street Fighter will be hitting the silver screen, as Sony has confirmed that a live action movie adaptation of the video game will be released in 2026. The project...
For years, if not decades, fans of the Resident Evil series have been clamoring for a modern re-release of the original Resident Evil trilogy, the classic games that...
The never-ending battle between the litigious plumber and the emulation Hydra continues day by day, and these past days, Nintendo took action against more emulators...
Nintendo has released a cryptic 15-second video titled "Emio" or "笑み男" (Smiling Man) on their social media channels.
The video features a lost-footage style scene...
In a recent Q&A with investors, Nintendo president Shuntaro Furukawa states the company has concerns over the use of AI, like LLMs, in its first party game...
A new Nintendo Switch firmware update just landed. System software version 18.1.0 has been released and pushed out to consoles. The contents of the update are fairly...
The Sonic homebrew and hacking community is for sure one of the most active communities when it comes to game modifications themselves. The fanbase has even made...
Street Fighter will be hitting the silver screen, as Sony has confirmed that a live action movie adaptation of the video game will be released in 2026. The project...
Over eight years and nearly 22,000 commits since the release of Dolphin 5.0 in June of 2016, Dolphin has evolved to become a stable and accurate emulator of both the...
iOS ports of major console games like Resident Evil 4, Assassin’s Creed Mirage, and Death Stranding have seemingly faced lackluster sales as recent sales estimates...
For years, if not decades, fans of the Resident Evil series have been clamoring for a modern re-release of the original Resident Evil trilogy, the classic games that...
Yet another mobile game is being erased from history, as Warner Bros. Games and NetherRealm Studios announce that their title, Mortal Kombat: Onslaught, is being...
I don't have a wii u anymore to test it myself, but if homebrews are not visible on the wii u menu I think you can press L + R + minus to open the plugin menu, there should be an option called "homebrews on wii u menu" or something similar
Or when your player dies, you can say in code, if enemy exists, do nothing, but if enemy does not exist, then create enemy at certain spot. (This would be a pain tho for lots of emeies)