Language…
19 users online: anonimzwx,  Atari2.0, codfish1002, Domokun007,  Donut, Green Jerry, Heitor Porfirio, hhuxy, iamtheratio, Metal-Yoshi94, monkey03297,  nycvega,  Ringo,  Saphros,  Segment1Zone2, steelrain859, wye, xMANGRAVYx, ZachJamesGames - Guests: 277 - Bots: 379
Users: 64,795 (2,375 active)
Latest user: mathew

SMW/SMAS+W Split Disassembly

Download link (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").
My Hacks:
Mario's Strange Quest V1.6
Yoshi's Strange Quest V1.3 / V1.3.1 Beta 4.6
Mario & Yoshi's Strange Quests (2/10/2023 Build)

Other stuff:
My SMW/SMAS/SMAS+W disassembly
Yoshifanatic's Discord Server: A place for fans of my stuff and/or Yoshi to chat with others.
Whoa that is super impressive!
Hey guys, while I haven't been posting about it much outside my Discord server, I've still been working on this. I've got enough things working in SMB3 that you can now get to world 2 before the game crashes (this will happen when attempting to enter 2-1, although it might happen earlier if you get the coin ship/card minigame to spawn, since I haven't tested either).

Here is a BPS patch for the USA version of SMAS+W that will give you an idea of how much has been disassembled:
Link

And here is a link to my WIP ROM Map file for SMB3 if you want to see how much stuff I disassembled to get the above patch to work: Link
Currently, most of the labels aren't descriptive and for the most part, the only hints regarding what any routine does is through the inconsistently used RAM/Register defines and through my comments saying what I think a routine is doing.

Besides SMB3, I've also fully re-disassembled virtually all the Lunar Magic ASM hacks, including the ones from 3.00+. I have yet to finish making the patch that generates an .MWL-esque file containing LM ASM extracted from a hacked ROM and set up the scripts to insert this stuff into the assembled ROM.

Also, as a little surprise, I did a full disassembly of SMB1 recently!

Here is the ROM Map file for SMB1 if you want to see what I've done for this game: Link

If you're wondering why I disassembled SMB1, it was because the guy who made this thread came to me and asked me to help him out with some ASM stuff in SMB1. Because I disassembled a bunch of things just to figure out what I needed to change to get Fire Mario to revert to Super Mario when hit, I figured I might as well just disassemble the whole game and so I did. Compared to SMB3, this game was a lot smaller, since its code/data was spread across 14 banks (with 3 of them containing the majority of its code). Compare this to SMB3, where its code/data is spread across at least 30 banks (with at least 10 containing the majority of its code). I managed to disassemble SMB1 in a little over a week.
My Hacks:
Mario's Strange Quest V1.6
Yoshi's Strange Quest V1.3 / V1.3.1 Beta 4.6
Mario & Yoshi's Strange Quests (2/10/2023 Build)

Other stuff:
My SMW/SMAS/SMAS+W disassembly
Yoshifanatic's Discord Server: A place for fans of my stuff and/or Yoshi to chat with others.
This is some pretty impressive work and could really come in handy to me at some point! I'll make sure to follow the Discord and stay up-to-date with future progress on the prjoect! #smw{:TUP:}
Feel free to visit my website/blog - it's updated rarely, but it looks pretty cool!