(latest version: 1/8/19)
This is a SMW/SMAS+W disassembly I've been working on since April 2018 as an update to galaxyhaxz's SMW source code
Some of the major differences:
- Every RAM address has a define with a descriptive name and addresses with multiple purposes will have multiple RAM defines.
- Every routine has been isolated into a separate macro that makes it easier to move things around and tell what code/data belongs to what routine.
- Allows you to assemble SMW in all 7 SNES versions (Japan, USA, PAL 1.0, PAL 1.1, SMAS+W USA, SMAS+W PAL, Arcade), with USA as the "default" version.
- Allows you to assemble either version of SMAS+W (USA, PAL), and the ability to specify which games to insert (though only SMW is complete and SMB3 is partially implemented).
- Improved the framework surrounding the disassembly, adding features like:
+ Automatic SNES header generation and made it easier to edit its contents.
+ Ability to hardcode routines to be inserted at their original locations to prevent shifting when one is moved elsewhere (currently only applies to the USA version and select routines from the others).
+ A system to automatically apply any patches either during or after the main assembly if the ROM is flagged as hacked.
+ The ability to specify using custom versions of the major files if the ROM is flagged as hacked, allowing one to make changes to the assembled ROM without affecting the actual disassembly.
+ Support for memory maps besides LoROM (though ExLoROM/ExHiROM currently don't work)
- Tons of new SMW defines that make it easier to edit specific things in the ROM or simply make it clearer what certain code is doing.
- Tons of other tweaks and improvements.
In its current state, while there are plenty of things I could improve on, I'd say it's complete enough that others can now use it for their own projects. Although if you do, be prepared to port over your settings/custom stuff when a new version comes out. If you keep all your changes in specific files designated for custom use and don't touch the actual disassembly, things will be much easier for both you and me.
That said, at this current time, SMWCentral doesn't have any tools that are made to specifically be used with a split disassembly. I've added some features to the disassembly to make it work with existing tools (ex. Optional hardcoding of the location of routines) after assembly, but there is only so much I can do. Maybe now that a SMW split disassembly exists, perhaps someone will now have the motivation to create tools for split disassembles? We'll just have to wait and see.
Anyway, regarding the next version:
- I'm planning on integrating Vitor Vilela's SA-1 pack into the disassembly, allowing it to work with the different SMW versions and because I'm sure a lot of people would find this useful.
- I've been working on re-disassembling LM's ASM. I don't plan on including LM ASM's in the disassembly (unless FuSoYa tells me I can), but I do plan on writing a patch that extracts this ASM from a hacked ROM so it can be inserted into the disassembly. For the record, I've so far disassembled the base level/overworld hijacks (ie. The ones inserted the first time you save a level/overworld without doing anything specific), the map16 hijacks, the VRAM patch, the FastROM patch, the 4BPP GFX hijacks, and the music/time bypass hijacks. This includes many of the 3.00+ hijacks.
- The disassembly now can insert multiple SNES headers depending on the memory map, since the SA-1 pack required it.
- I added "SMW" to all the routine macro names to identify them as SMW routines. I'd like to do the same with the routine names themselves, but I can't seem to get nested namespaces working.
- I disabled warning 1019 in case one wants to manually put in a RATS tag in their custom routine macros without asar nagging you about it. I also creating a RATS tag start/end macro that will do this for you and help prevent some issues (though I'm unsure how I would test the size, since asar doesn't like labels in an assert or if conditions) and re-implemented the setting for disabling RATS tags (now called "!Define_Global_InsertRATSTags").
Mario's Strange Quest V1.6
Yoshi's Inside Story (on hold)
Yoshi's Strange Quest V1.3
/ V1.3.1 Beta 4.6
/ Latest Test Build (Mario & Yoshi's Strange Quests)
My WIP SMW/SMAS+W disassembly
Yoshifanatic's Discord Server
: A place for fans of my stuff and/or Yoshi to chat with others.