-------------------------------------------------------------------------------- | smse 1.0a - The Super Metroid SRAM Editor | Copyright (C) 2005,2007-2008 emuWorks (http://games.technoplaza.net/) | by John Ratliff -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- | Table of Contents -------------------------------------------------------------------------------- - 1.0 Introduction - 2.0 Compilation and Installation - 3.0 Using the Program - 3.1 Basics - 3.2 Save Points - 3.3 The Game Menu - 3.3.1 Game Selection - 3.3.2 The Ending Submenu - 3.3.3 The Give Submenu - 3.3.4 The Copy and Clear Submenus - 4.0 Known Bugs and Issues - 5.0 Release History - 6.0 Contact Information - 7.0 Thanks and Acknowledgments - 8.0 Legal Information -------------------------------------------------------------------------------- | 1.0 Introduction -------------------------------------------------------------------------------- Welcome to smse, the Super Metroid SRAM Editor. This program is a cross-platform tool for editing Super Metroid SRAM files created and used by SNES emulators. In more simple terms, if you play Super Metroid for SNES on an emulator, you can edit the save games with this program. SRAM files are emulator independent, meaning they work with any proper SNES emulator. The two most popular and complete SNES emulators are Snes9x and ZSNES. This program has been tested to work with both of them, though ANY SNES emulator should work. The SRAM file is NOT a save state and this program is NOT a save state emulator. Save states ARE emulator dependent, and I disdain save state editors because of that. This program will not edit ZSNES save states (*.zst, *.zs[1-9]) or Snes9x freeze states (*.00[0-9]). It works only with the games own internal save method of SRAM. Snes9x and ZSNES always create SRAM files with the extention .srm, and since they are the standard, I will assume all other emulators do as well. So, what does this program do? It lets you edit nearly any property of your Super Metroid save game. In other words, it's a cheat tool for Super Metroid. You may be asking why I wrote this when there are other programs around that edit Super Metroid save games. First, most of them are ZSNES save state editors which I hate and no Mac user can even use. Second, they are extremely limited in what they do. I wanted a program that would surpass the current offerings. Third, they are all windows only. phonymike created the first (and only until now) SRAM editor for Super Metroid. His work was inspiring, far surpassing the two savestate editors I have seen. Yet even his work is lacking in my eyes. I wanted something truly comprehensive. Thanks to phonymike's work on the SRAM checksum, I have been able to create smse, which is a tribute to his work in finding the checksum algorithm required to write an SRAM editor like this. I also borrowed information on some SRAM offsets from his documentation, though I found many others independently. So, why is smse better than all the previous offerings? First, as has already been said, it is an SRAM editor rather than a save state editor. Therefore, smse will work with ANY SNES emulator: ZSNES, Snes9x, or some other emulator that may have replaced them by the time you read this. Second, you can edit nearly every single property of a Super Metroid game. Samus' energy and inventory, bosses killed, zebetites killed, the save point, Samus' map data, game time, every piece of equipment, every missile, super missile, and power bomb pack, every energy tank and reserve tank, every door, and more. Third, it works in Windows, Linux, and Mac OS X. It probably works in every unix since the unix version uses GTK+, but only these three platforms are tested and supported. Be glad to help you out on another system though if you need it. Fourth, it is free software under the GNU GPL. This means you can get the source code if you like. -------------------------------------------------------------------------------- | 2.0 Compilation and Installation -------------------------------------------------------------------------------- Binaries are available for Windows (2000 and later), Linux (requires GTK+ >= 2.0), and Mac OS X (Tiger or later). The source is also available if you want to compile it yourself. To compile, you will need a modern C++ compiler and wxWidgets 2.8 or later. On most platforms, compiling is as easy as opening a terminal and running ./configure && make. That should work on Linux, Mac OS X, and Windows with mingw/msys. There are also Visual Studio project files in the vstudio directory. For more complete compilation instructions, consult our compiling HOWTO at http://games.technoplaza.net/compile.php. -------------------------------------------------------------------------------- | 3.0 Using the Program -------------------------------------------------------------------------------- To start the program, simply double-click on the smse (or smse.exe in Windows) executable. You can also start it from a terminal if you prefer. -------------------------------------------------------------------------------- | 3.1 Basics -------------------------------------------------------------------------------- I think the program is fairly intuitive for anyone reasonably familiar with common program controls such as checkboxes, drop-down boxes, text boxes, and spin buttons. When the program is started, a big blank window will open. There are a couple ways to open your Super Metroid SRAM file. You can either drag the file onto the window or you can use the open command from the file menu. If you start from the terminal, you can also specify the SRAM file as a command line argument, e.g. ./smse metroid3.srm. You might also be able to drag your SRAM file onto the executable to open it. This works under Windows, but I don't know if other platforms handle application file drop like this. ZSNES on Windows generally stores its SRAM files in the same directory as the ROM file unless you have explicitly changed this behavior. I believe Snes9x does the same. Consult your emulator docs for more information on where to find your SRM file. An example of a Super Metroid SRAM file might be "Super Metroid (J,U).srm". This is the NSRT ROM name for Super Metroid (Japan/US version). After you have opened the SRAM file, a notebook will open (terminology varies, but a notebook is the window with tabs at the top where you can select a different page). There are eight tabs on the notebook: "Game", "Misc", "Items", "Pickups", "Red Doors", "Green Doors", "Yellow & Eye Doors", and finally "Metal Doors". The names should give you a hint as to what kinds of properties you can edit on each page, but we will do a brief overview. The 'Game' tab has general game properties. These include Samus' health, inventory, which enemies she has killed, the save point, and her map data (the maps given to you by the map data stations in the game). Note: The Tourian map is given to you automatically when you first enter Tourian, but you can take it away and give it back. The 'Misc' tab has the more minor game properties that are generally of little interest to edit. The sole exception is the game time, which determines your ending. In addition to the game time, you can edit some misc game properties like whether you have rescued the animals or brok the Maridian glass tube. Finally, the game configuration is editable here (controller configuration, language, etc). The 'Items' tab contains all the items Samus can find on Zebes. This includes all her suit power-ups (Morphing Ball, Space Jump, Varia Suit, etc), the grappling beam and X-Ray Scope, and all the energy and reserve tanks. The 'Pickups' tab contains all the missile, super missile, and power bomb pack pickups. Note: To avoid any confusion by Super Metroid, the program tries as much as possible to limit invalid selections or choices. You cannot have missiles, super missiles, or power bombs without any packs picked up. The carrying capacity of each is limited to how many you have picked up. The same goes for energy and reserve energy. You also cannot have the spazer and plasma simultaneously. This is a good limit though because if you fired such a beam, the game would crash (yes, I tried it). Each door tab contains a particular kind of door. Red doors are the ones you can open with 5 missiles or 1 super missile. Green doors are the ones that require a super missile to open. Yellow doors require a power bomb. Eye doors are the doors with an eye that guard certain places in Zebes. They can be killed with three missiles or a super missile. Metal doors require you to complete a task before you can open them. Some metal doors cannot be opened. The doors have descriptions where possible, but some doors don't lead to anything that can be pointed out without a common point of reference. I labelled most of the doors. Most of the controls on the tabs are fairly straightforward. Checkboxes for almost everything. A few radio buttons for exclusive choices and finally, some text boxes for entering values. The energy, reserve, missile, super missile, and power bomb controls cannot prevent you from entering values beyond the valid range. However, a warning will appear in the status bar for four seconds if you try, and the invalid value will never be used. I wish I could prevent users from entering invalid values in the first place, but this seems to be a difficult if not impossible task. The metroid room controls determine which rooms in Tourian have been cleared of metroids. There are four rooms in Tourian with metroids. Using these controls, you can kill all the metroids in a particular room. Because of the way the game works, it is not possible to kill individual zebetites. The game only checks for a certain bit pattern when deciding to display a zebetite or not. This means you can kill any number of zebetites in a row, but you can't kill 1 and 3 without killing 2. (or if you can, then I don't know quite how to do it). The game time control is in the form hours:minutes. You must supply a valid value for the game time to change. The status bar will flash a warning while you edit until you have a valid value. The range of Metroid time is 0:00 (0 hours and 0 minutes) to 99:59 (99 hours and 59 minutes). The game will stop tracking time after this. The controller configuration controls are not validated currently. This means you can enter invalid controller configurations and the program will simply let you. The game will be confused though and ignore any invalid selections you make. For some reason, the game only allows Angle Up/Down to be mapped to the R and L buttons, so the program only presents those two values. -------------------------------------------------------------------------------- | 3.2 Save Points -------------------------------------------------------------------------------- The save point options in the program are a little vague. Here is the full list of save points. It's hard to be specific, but I have some common points of reference that may should help uniquely identify each save point. Crateria 1 is Samus' ship Crateria 2 is near the old Tourian escape shaft Brinstar 1 is near Spore Spawn Brinstar 2 is near the elevator from Crateria (the first one) Brinstar 3 is near the Etecoon's shaft Brinstar 4 is near Kraid Brinstar 5 is near the elevator to Crateria near the Wrecked Ship entrance Norfair 1 is just past Crocomire Norfair 2 is near the Norfair reserve tank Norfair 3 is near the elevator from Brinstar Norfair 4 is just before Crocomire Norfair 5 is by the elevator to lower Norfair (Ridley's Lair) Norfair 6 is near Ridley There's only one save point in the Wrecked Ship. Maridia 1 is near the glass tube Maridia 2 is near the Craterian elevator past the Wrecked Ship Maridia 3 is near the Maridian reserve tank Maridia 4 is near Draygon Tourian 1 is near Mother Brain Tourian 2 is near the elevator from Crateria Once you pass the Metroid larva, you cannot exit Tourian normally. The metal door that blocks your path cannot be opened as far as I know. You can change your save point if you want to leave Tourian. -------------------------------------------------------------------------------- | 3.3 The Game Menu -------------------------------------------------------------------------------- The game menu is a handy menu for several reasons. First, it allows you to change game slots and edit different games. Second, it allows you to select game times for the three endings. Third, it allows you to easily give yourself certain blocks of stuff. -------------------------------------------------------------------------------- | 3.3.1 Game Selection -------------------------------------------------------------------------------- By default, when you open a SRAM file, it defaults to Game A. You can change this to any of the three games by selecting them from the Game menu. -------------------------------------------------------------------------------- | 3.3.2 The Ending Submenu -------------------------------------------------------------------------------- The ending submenu on the game menu allows you to select which ending you want. The best ending changes your time to 0:00, the average ending changes your time to 3:00, and the worst ending changes your time to 10:00. The three endings are: Best ) Samus removes her space suit to show her in a swimsuit Average ) Samus removes her helmet Worst ) Thumbs up from Samus, but the suit and helmet stay on Your ending is slightly affected if you rescue the animals, but this is not changed by the ending menu. You can edit this property on the 'Misc' tab if you don't want to rescue them yourself. -------------------------------------------------------------------------------- | 3.3.3 The Give Submenu -------------------------------------------------------------------------------- The final part of the game menu is the give submenu. This menu allows you to give yourself certain blocks of stuff. Everything - You get everything. Energy - Fill Samus' primary and reserve tanks Inventory - Fill Samus' missile, super missile, and power bomb inventory Bosses - Kills all bosses Mini-Bosses - Kills all mini-bosses Metroid Rooms - Kills all metroids in the four rooms in Tourian Zebetites - Kills all zebetites Maps - Give Samus all map data Items - Give Samus all items (Morphing Ball, Space Jump, Ice Beam, etc) Missile Packs - Give Samus all missile packs Super Missile Packs - Give Samus all super missile packs Power Bomb Packs - Give Samue all power bomb packs Energy Tanks - Give Samus all energy tanks Reserve Tanks - Give Samus all reserve tanks Red Doors - Open all red doors Green Doors - Open all green doors Yellow Doors - Open all yellow doors Eye Doors - Destroy all eye doors Metal Doors - Open all metal doors Using the give everything, I was able to beat the game in 10 minutes. 1 minute to complete the Space Colony, and 9 minutes to make it from the ship to Tourian, kill mother brain, and escape Zebes. I did not rescue the animals or use any speed tricks. It would have been faster if I had changed my save point to Tourian 1. Because all the metal doors were open, I simply screw attacked past the Metroids without killing any. I received a 100% collection rate for items. -------------------------------------------------------------------------------- | 3.3.4 The Copy and Clear Submenus -------------------------------------------------------------------------------- The copy and clear menus are just like the game copy and game clear options on the Super Metroid menu screen. Copy copies one game to another, while clear erases a game. Any of the menu items on these submenus will bring up a dialog to confirm your actions before it makes them. There are some minor caveats with clear. If you clear the game you are currently editing, one of two things will happen. If there is another valid game, then it will select the first one found and change to editing that game. If there are no other valid games, then it will close the file and save automatically. If it is unable to save the SRAM file, then it will ignore the clear. -------------------------------------------------------------------------------- | 4.0 Known Bugs and Issues -------------------------------------------------------------------------------- There are no KNOWN bugs at this time. :-) For some reason Linux doesn't maximize the notebook when it is first displayed. It only takes up most of the screen, even though it's supposed to take the entire window. I think it is a bug in wxWidgets, and I can't do much about that. You can fix it by resizing or maximizing the window. The Linux version takes up much more space than the Windows and OS X versions. Unfortunately, I can't do much about this but try to adapt. Version >= 0.91 will fit in an 800x600 display on GTK+ if you have no top or bottom panels on the screen. If you have one of each (as I do), the status bar will be obscured, but all the controls will be usable. Sorry, but this is the best I could do. If you want it to look better, stop using a tiny resolution. 1024x768 and up work great. I will not cater to people still clinging to 640x480. You can create invalid controller configurations with this program. There is no check for invalid configurations currently. I hope to address this in a future version, but it wasn't a priority. I doubt many people will use the controller configuration controls, but if you do, make sure you don't duplicate any buttons or it won't work as expected. -------------------------------------------------------------------------------- | 5.0 Release History -------------------------------------------------------------------------------- Version 1.0a - Tuesday, December 16, 2008 - Updated code to compile under wxWidgets 2.8. - Updated Visual Studio project files for Visual Studio 2008. - Added upx compression to mac version. - Added icons for the mac version. - Updated compilation instructions. Version 1.0 - Thursday, February 22, 2007 - Replaced ampersand in Yellow & Eye Doors tab with a /. - Minor code cleanup (compiles in debug mode now). - Added Visual C++ 2005 project files. Version 0.91 - Saturday, October 15, 2005 - Updated save point list in the readme. - Added Tourian Metal Door 5. - Fixed bug where close on would ignore cancel button on the save prompt. - Added metroid room controls. - Added metroid rooms to Game/Give submenu. - Added drag 'N drop. - Added command line SRAM argument. - Added copy and clear to game menu. - Changed GUI to fit in 800x600 on Linux/GTK (barely). Version 0.90 - Thursday, October 13, 2005 - First public release. -------------------------------------------------------------------------------- | 6.0 Contacting the Author -------------------------------------------------------------------------------- I can be contacted via email (webmaster [AT] technoplaza [DOT] net). Replace that as appropriate. I also have an online feedback form at http://www.technoplaza.net/feedback.php -------------------------------------------------------------------------------- | Thanks and Acknowledgments -------------------------------------------------------------------------------- Thanks go to phonymike, creator of the original SRAM editor for Super Metroid, and the guy who discovered the checksum algorithm required to make SRAM editors for Super Metroid. smse would not exist without his work. Thanks also go out to the entire wxWidgets team for creating a free cross-platform GUI API that lets me build programs on Windows, Linux, and Mac OS X without Java. -------------------------------------------------------------------------------- | 8.0 Legal Information -------------------------------------------------------------------------------- This program is Copyright (C) 2005,2007-2008 emuWorks http://games.technoplaza.net/. It is licensed under the GNU General Public License, which is included with this program in the docs directory in the file license.txt. For more information, please consult GNU at http://www.gnu.org/, or the Free Software Foundation at http://www.fsf.org/.