Language…
13 users online:  AmperSam, CroNo, Golden Yoshi, Hammerer, Isikoro, JezJitzu, JPhanto, Mario's GameBase, MorrieTheMagpie, RPG Hacker, signature_steve, Sparkz314, timothy726 - Guests: 253 - Bots: 290
Users: 64,795 (2,377 active)
Latest user: mathew

Yoshifanatic's ASM Showoff: Part 8

PatchSuper Mario WorldMisc. HackingSuper Mario Maker 2Resource ReleaseScreenshots

  • Pages:
  • 1
  • 2
It's the time again, huh? Happy C3! :)
Since, as usual, I have a lot to talk about this C3, I'll quickly run through all the stuff I'm showcasing so those of you that don't want to climb the mountain of text ahead won't have to.

-----------------------------------------------

SMAS+W Disassembly

Full disassembly of all 5 games, 3.5 more than the last time I showed it off.

-----------------------------------------------

Super Mario Bros. 3 (standalone, SNES)



Imagine if Nintendo released SMB3 by itself on the SNES. That's what this is. Apply this patch to the USA version of SMAS+W.

-----------------------------------------------

VWF Dialogues Patch V1.3

RPG Hacker's patch, but updated with a huge number of new features, many ported over from Mario & Yoshi's Strange Quests.

-----------------------------------------------

Various SMAS SMB3 Patches

Some IPS patches I converted to .asm format, all set to work with SMAS, SMAS+W, and the above standalone SNES SMB3.

Also includes a level and overworld inserting patch as well as an ending editor patch I made myself.

-----------------------------------------------

Bonus: My Super Mario Maker 2 courses

Yoshi's Run Through the Desert
ID: 9R2-3D2-TTF

King of the Jungle
ID: MN6-FWC-NYG

Boom Boom: Psychological Horror
ID: RSY-03F-S0G

Bowser Loves Seesaws!
ID: R24-38C-DYF

The Perfect Throw
ID: LPT-632-TDG

Nekos in Nooks
ID: VYW-DJH-7HG

Multiverse Cavern
ID: G35-N9X-D0G

-----------------------------------------------

Alright, now for the mountain of explanation text. Get that mountain climbing gear ready!

Regarding the disassembly, I've been quiet about it outside my Discord server, but I've been hard at work with this disassembly for the past 6 months. There's been a lot of big changes to the disassembly, such as the fact that all 5 games have been disassembled, not just SMW and SMB3. The SMAS portion has also been nearly fully isolated and documented, outside of a few RAM addresses that are missing labels.

The SMB3 portion of the disassembly in particular is something I'd like to draw attention to, because not only has it been fully disassembled, but I've also made it possible to assemble it by itself. Now, I'm not talking about assembling SMAS+W with just SMB3 (which you can certainly do with my disassembly), I mean assemble it as if it was a fully functioning SMB3 ROM for the SNES. I basically took SMB3 out of SMAS+W and got it working on its own with little sacrifice. To do this, I had to add in my own code in order to recreate certain functionalities that are normally handled outside of SMB3, like the file select, ability to erase files, changing what the B button does, selecting the starting world, etc.. I also went further and did things like shifting everything towards bank 00, porting over some non-essential things like the splash screen to make this ROM feel more authentic, and doing my best to keep the original code intact.

If you're interested in hacking SMAS SMB3, then this standalone ROM gives you slightly more than 3 MB* worth of space to work with with no sacrifices. In addition, everything in banks 01-0A is positioned identically to what was in banks 21-2A, so any .asm patches you have that hijack that area can easily be converted. However, the only downside, in terms of features, of using this ROM over SMAS+W is that I had to cut one of the save files. I wasn't sure how I would handle the erase file option on the file select menu, so I had to use the screen space that otherwise would have been for file 4 for selecting the erase file function. This might not be a huge deal though, since 3 save files is plenty.

To help get you started, I converted a few IPS patches to .asm format to use with this version of SMB3. I technically did these as a request for SMW_Hacker17 from the SMWCentral Discord, hence why I have this random selection of converted patches, but I figured I'd show them off as well. However, I also included a patch for inserting levels/overworld data and a patch that lets you editor some aspects of the ending, both of which were made by me.

Also, I'd like to point out that I want to give this treatment to the other SMAS+W games. I didn't have the time to get the other games working as a standalone ROM, but since SMB3 is working, getting the other ones working should be fairly easy. Also, I'd like to thank SMW_Hacker17 for helping me test out the standalone SNES SMB3 ROM.

As for the main SMAS+W disassembly, it was a lot of work disassembling all the games. I encountered quite a few bugs along the way, and I thought I'd share some of the more interesting ones:


Behold, the legendary red frog suit!
(This is actually small Mario with incorrect graphics. SMB3 stores the frog suit and small Mario graphics together).


SMBLL on the Atari 2600
(Note: This image was resized to half size, since this crash actually managed to enable psuedo-hires mode).


Luigi is so strong, he managed to pull the universe inside out!


Luigi is feeling really shy during the ending.


I guess I won't be raiding this pyramid then...


So, I tried to play SMB2, but I can't because there is no floor.


This isn't a bug with my disassembly, but something I noticed while working on SMB1. The collision here doesn't actually match up with the graphics!


Ever wonder what the minus world was like in SMAS SMB1? Here you go. Note that this required me to remove a check that prevents the world number from exceeding 8.

*SMB3 is 1 MB in size, but bank 1F is completely unused.

-----------------------------------------------

Regarding the VWF Dialogues patch, I decided to update this patch recently. Here is the changelog:

Originally posted by VWF Dialogues Manual
- Fixed message 7F's pointer so it no longer points to message 8F.

- Fixed an oversight where various aspects of layer 3 (transparency, priority, main/subscreen status) were not being preserved.

- Added MessageASM functionality to allow one to run custom code on a per-message basis.

- Added the ability to modify the text pointer using the start button.

- Added a text macro system, allowing one to define strings of text/commands to be called at any time in a message.

- Added an extra step to message initialization that initializes all the VWF variables on message load, not just on title screen load.

- Added command byte $EB that forces a textbox to freeze until something modifies the text pointer.

- Added command bytes $E8 and $E7 for the text macro system and that act like a JSR and RTS to the textbox system, respectively.

- Added several useful routines that can be called from within messages, such as a text buffering routine.

- Made it so that the textbox will be forced to close when the screen fades out. The fadeout will also be delayed until the textbox closes.

- Added some functionality that enables the textbox to close if another message is being set to display

- Changed the hijack location for initializing the VWF RAM on the title screen from $0086E2 to $0096B4, because the former location was very questionable.

- Fixed the incompatibility with Vitor Vilela's SA-1 Pack Patch V1.30.

- Changed the %nextbank macro to allow specifying the freespace command to use.

- Adjusted the $EF command to work with secondary entrances $0200-$1FFF, levels using Lunar Magic 3.00 custom level dimensions, and layer 2 horizontal levels.

- Added a RAM flag that indicates that the text box has just been cleared.

- Made the default message display an error message.

- Cut RAM usage in half by optimizing how the text tiles are buffered.

- Several small code optimizations.


A lot of the above changes are things I coded into MYSQ, and enable some really powerful functions. For example, MessageASM allows you to run custom code on a per message basis. This allows you to run your own custom scripts for messages that can run every frame regardless of what the text box is doing. You can also use what I call "text macros", where you define a string of text/commands, and can call it using just 3 bytes. So for example, instead of typing out "Princess Peach" each time you use that string, you can convert it into a text macro and then display that 14 byte string using a 3 byte command each time it's needed. This will allow you to save ROM space and improve consistency with your key terms. There is also the text pointer modification feature where you can press start to change the text pointer. It's meant for allowing the player to quickly close a text box, but can be set to do other things if necessary.

Anyway, here are a couple examples of what can be done with some of the new features:

Custom menus that can be scrolled through without waiting for the text to finish displaying.


Name Entry Screen, using MessageASM to handle the cursor controls and command $EB to disable the normal end of text box behavior.


Face portraits and auto-display current speaker's name at the start of the current text box. Both functions are synced to update when the text box is cleared.

This is from DPBOX's hack that he is showing off this C3

Also, big thanks to DPBOX for helping me test out this patch! Part of the reason I updated this patch was because a hack he's been working on needed some of these new features, so it was kind of a back and forth trade of helping each other out.

-----------------------------------------------

As for the Mario Maker 2 levels, seeing as how the game just came out, I figured I'd share my level codes. (Although I was going to do this even before I realized the C3 theme would be Mario Maker 2 :P).

-----------------------------------------------

And that about covers it for my C3 thread. I hope you guys liked it! :)
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.
holy CRAP a new VWF Messages update? Yoshifanatic you're the best lol
Currently working on:
Super Kekcroc World 4 (lol jk)
woah, im pretty surprised with the snes super mario bros 3. that's really cool.

incredible work as always, yoshifanatic.
Yoshiatom's Post
Originally posted by VWF Dialogues Manual
- Added MessageASM functionality to allow one to run custom code on a per-message basis.

Can this also execute code outside the message box? Because if so this would be perfect for making cutscenes inside SMW.

Also holy shit the standalone SMB3 thing is pretty exiciting. The fact that the dissasembly has enough docuemting for that to possible opens a ton of possibilites, and seeing ROM Hacks of the standalone games would be cool since it's essentially the original games but with the power of the SNES. I might be getting too ahead of myself but it would be really cool if this makes SMAS Hacking into a propper thing. (R.I.P MushROMs)

Layout by Koopster!

<DeputyBS> I knew it
<DeputyBS> alcarobot is taking over the world through his truck dealership franchise
While the SMAS+W disassembly must have been a huge project (and it's unbelievable you actually saw it through), what most excites me is the VWF patch. Never would have expected an update to that one! I'm not using the patch myself, but thanks for keeping it relevant.


 


really needed this wow
Nice. I might have to try more SMB3 hacking now, though I'll admit that I found your method of organizing the disassembly very confusing; it took me quite a while to find where that actual code was and realize that it was in the macro file. And is there a guide for how to use the level and overworld editor patches? I made one SMB3 level a couple years ago through pure hex editing, but I didn't change any pointers.

I'm also glad to see the update to that VWF patch. You could have saved a byte in the header by putting the extra flags in some of the unused bits in the seventh or twelfth byte, but oh well. The new features seem pretty useful, though I feel like there is still some documentation missing. For instance, you can use MessageASM to handle custom cursor positioning, but how do you do it? How do you add character portraits and current speaker text? What if you want a name entry screen like that without the entire thing getting cleared and rewritten every time (and what did you use to update the name at the top)? And what's the text buffer subroutine useful for? In any case, I'm glad to have things like the MessageASM, the skip function (I'd actually implemented a message skip system for my own use, but it was hacky), and the text macros. Reducing RAM usage and preserving hardware registers properly doesn't hurt either. While I'm here, I should ask...would it be all right with you and RPG Hacker if I use the code from this patch in a homebrew game? If I ever made one, it was save me the time of having to write my own VWF-handling code.

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Originally posted by Knucklesfan
holy CRAP a new VWF Messages update? Yoshifanatic you're the best lol

You're welcome! ^_^

Originally posted by idol
woah, im pretty surprised with the snes super mario bros 3. that's really cool.

incredible work as always, yoshifanatic.


Thanks! ^_^

Originally posted by yoshiatom
Originally posted by VWF Dialogues Manual
- Added MessageASM functionality to allow one to run custom code on a per-message basis.

Can this also execute code outside the message box? Because if so this would be perfect for making cutscenes inside SMW.

Also holy shit the standalone SMB3 thing is pretty exiciting. The fact that the dissasembly has enough docuemting for that to possible opens a ton of possibilites, and seeing ROM Hacks of the standalone games would be cool since it's essentially the original games but with the power of the SNES. I might be getting too ahead of myself but it would be really cool if this makes SMAS Hacking into a propper thing. (R.I.P MushROMs)


- MessageASM is run only when a text box is being processed. It stops running when the text box is closed. However, you could use the MessageASM to trigger something outside the message box system by setting the appropriate RAM, and you can also choose to display no text box solely to run a custom script (you could do something like the original game's castle destruction cutscenes this way).

If you want to get super technical, you could actually do MessageASM functions through UberASM, but MessageASM has the benefit of tying the custom code to the VWF Dialogues patch, meaning you don't need to micromanage two separate resources each time you want to edit a cutscene. You can also easily use the VWF specific RAM address labels without needing to know what their specific addresses are, and you can change the MessageASM pointer on the fly and toggle it on/off since it's stored in RAM.

- As for the standalone SMB3, I wonder if this might be the spark to motivate people to make more hacks of SMAS/SMB3? It's hard to say, but that would be pretty neat.

Originally posted by WhiteYoshiEgg
While the SMAS+W disassembly must have been a huge project (and it's unbelievable you actually saw it through), what most excites me is the VWF patch. Never would have expected an update to that one! I'm not using the patch myself, but thanks for keeping it relevant.


Yeah, it was a big project. XD It's been over a year since I first started this, and I'm surprised too that I didn't give up at some point.

As for the VWF Dialogues patch, I'm glad I got motivated to work on it. I imagine the new functions will be very useful for those that use this patch!


Originally posted by MM102


really needed this wow

If you want this, you ought to ask DPBOX since he is the one who wrote the code for this. If he does let you have it, be aware you also need the DynamicZ patch to use the face portrait function correctly.

Originally posted by imamelia
Nice. I might have to try more SMB3 hacking now, though I'll admit that I found your method of organizing the disassembly very confusing; it took me quite a while to find where that actual code was and realize that it was in the macro file. And is there a guide for how to use the level and overworld editor patches? I made one SMB3 level a couple years ago through pure hex editing, but I didn't change any pointers.

I'm also glad to see the update to that VWF patch. You could have saved a byte in the header by putting the extra flags in some of the unused bits in the seventh or twelfth byte, but oh well. The new features seem pretty useful, though I feel like there is still some documentation missing. For instance, you can use MessageASM to handle custom cursor positioning, but how do you do it? How do you add character portraits and current speaker text? What if you want a name entry screen like that without the entire thing getting cleared and rewritten every time (and what did you use to update the name at the top)? And what's the text buffer subroutine useful for? In any case, I'm glad to have things like the MessageASM, the skip function (I'd actually implemented a message skip system for my own use, but it was hacky), and the text macros. Reducing RAM usage and preserving hardware registers properly doesn't hurt either. While I'm here, I should ask...would it be all right with you and RPG Hacker if I use the code from this patch in a homebrew game? If I ever made one, it was save me the time of having to write my own VWF-handling code.


- Regarding the disassembly, it's actually the routine macros file that contains the code, not the macro file. I call them routine macros because these are macros that contain the actual SNES code routines. I have it set up this way because I'm trying to isolate each routine in these games into clear pieces so it's easier to find a specific routine, move them around, and also group different parts of the same routine together. Think of it like C++ functions.

- Regarding the level/overworld patches, I have everything labeled fairly well, but I think the level patch might need a bit more explanation due to the way SMB3 handles its level data. Each world has its own set of pointer tables for their levels. "WorldZSpritePtrs" contains the pointers to the sprite data for Z world and "WorldZLevelDataPtrs" contains the level header and data. Levels on the overworld are stored going from left to right, top to bottom, for each individual screen. "WorldZLevelXCoordinateLo" controls the X position of the level on the overworld. "WorldZLevelYCoordinateLoAndTilemap" controls the Y position of the level on the overworld and, for some bizarre reason, the tileset of the level (or in World 9's case, the world that tile will take you to). The former function is handled by the upper 4 bits of each byte in the table while the latter is handled by the lower 4 bits. "WorldZLevelXCoordinateHi" is used as a starting index for the previous two tables.

- Regarding the VWF patch, those functions aren't built into the patch, I was just giving examples of what you can do with the new features. I'll show you some of the code involved with handling the options menu shown in that .gif though, if you want an example of how I handled it. In the linked file, "OptionsMenuRt" is the MessageASM routine that controls the menu, while Message00FD is the message box data for the options menu, which should help contextualize how that message works in conjunction with the MessageASM code. Be warned, the following code is very messy, unoptimized and complicated! Link).

- The text buffer allows you to do things like displaying the output of a string being typed out by the player (ex. For a name entry screen), insert a variable string of text into a message (ex. "Would you like to buy [item A]?", with [item A] being the buffered string), etc.

- You can use this patch for a homebrew. I've actually done that myself in that homebrew level editor ROM I made a couple years back.
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.
Ah, so the buffer routine is basically like if $F5 could be used for more than one character? I'm assuming that changing the values in the buffer after the message is already active doesn't update the text?

And shouldn't there be pointers for the secondary levels? Not every level in a world uses the same bonus room, and I would assume at least one level has both a bonus room and entrance/exit area (though now that I think about it, I can't come up with one...).

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Originally posted by yoshifanatic
- Fixed the incompatibility with Vitor Vilela's SA-1 Pack Patch V1.30.

- Adjusted the $EF command to work with secondary entrances $0200-$1FFF, levels using Lunar Magic 3.00 custom level dimensions, and layer 2 horizontal levels.

Wait does this mean I can finally port my hack to lm 3.0?
The new features are pretty hype too!

Also really nice job with the disassembly stuff.
I'm pretty curious to see where this will take hacking other mario games on the snes
My Youtube channel

Currently working on:
Project C

Finished project:
Alright, since DPBOX posted his thread for his hack, I updated my initial post to add in a .gif from his hack showing the face portraits/speaker name in action.

Originally posted by imamelia
Ah, so the buffer routine is basically like if $F5 could be used for more than one character? I'm assuming that changing the values in the buffer after the message is already active doesn't update the text?

And shouldn't there be pointers for the secondary levels? Not every level in a world uses the same bonus room, and I would assume at least one level has both a bonus room and entrance/exit area (though now that I think about it, I can't come up with one...).


Yeah. I actually forgot that $F5 was a thing, and maybe it would have made more sense to try to update that to support displaying more than one character? I should point out that the text buffer code has some issues regarding the word wrapping and centered text layout, neither of which I was able to fix. Also, yes, the text doesn't update after it's been displayed, even if you change the values in the buffer.

As for the pointers, SMB3 level can only have one sublevel linked to them. The pointers to the sublevel's level/sprite data (and, bizarrely, the tileset) are stored in the header of the current level's data. However, Nintendo programmed in some workarounds, so you can make SMB3 load what I refer to as generic bonus rooms and generic end levels which are tied to the current world. You're also capable of chaining together sublevels by linking sublevel A to B, B to C, and C to A. Incidentally, when working on the disassembly, I found out that 1-5 is the first level to use a generic end level and world 4 fortress 2 was the first level to use a generic bonus room.

Originally posted by NGB
Originally posted by yoshifanatic
- Fixed the incompatibility with Vitor Vilela's SA-1 Pack Patch V1.30.

- Adjusted the $EF command to work with secondary entrances $0200-$1FFF, levels using Lunar Magic 3.00 custom level dimensions, and layer 2 horizontal levels.

Wait does this mean I can finally port my hack to lm 3.0?
The new features are pretty hype too!

Also really nice job with the disassembly stuff.
I'm pretty curious to see where this will take hacking other mario games on the snes


If those were the only two things holding your hack back, then yep! When you do update the VWF Dialogues patch, you will have to make a few changes to your vwfmessages.asm file since I changed the header. It should be fairly easy to update your message headers, since the new bytes are located at the end of the header so you can copy/paste them from the included vwfmessages.asm file. Also, you'll need to copy/paste the text macro labels/data and put a .MessageSkipLoc label in each of your messages (preferably right before a $FF byte, although you can also disable this feature for a message if you don't want it to apply).

Also, thanks! ^_^
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 Cool! I hope now we can get a new SMAS Editor..
I applied your VWF Dialogues Patch and I get this:

I chose Asar 1.50, because taht's how I applied this patch.
Is it compatible with the latest LM? Is there any way to fix?
By the way, how did you decrease the size of the GFX buffer so much (from 16 KiB to less than 4)?

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Originally posted by Young Boi
This is Cool! I hope now we can get a new SMAS Editor..

Perhaps that may happen someday. I won't be the one to do it though.

Originally posted by Rykon-V73
I applied your VWF Dialogues Patch and I get this:

I chose Asar 1.50, because taht's how I applied this patch.
Is it compatible with the latest LM? Is there any way to fix?


Did you move the files out of the vwf_dialogues folder? The patch expects Shared.asm to be in a folder that's outside the folder vwf_dialogues.asm is in. If that's what caused the error, then I'll make it so that instead of applying vwf_dialogues.asm, you'll apply a patch located outside of vwf_dialogues that does this:

Code
incsrc "vwf_dialogues/vwf_dialogues.asm"


Originally posted by imamelia
By the way, how did you decrease the size of the GFX buffer so much (from 16 KiB to less than 4)?

Two things:

- I made it so that the frame graphics were allowed to be overwritten in the buffer. For the most part, these graphics were never touched again after they're initially loaded, but there was one exception that I had to account for.

- I made it so that the buffer starts getting overwritten when a new line begins, not when the text box is cleared. I initially tried to make the buffer large enough for only 2-3 tiles of text, but I couldn't figure out how to get that working.

The buffer now contains a blank tile, the text box background tile, the entire text box tilemap, the cursor graphics, and a reserved area that's big enough to fit a little more than a single line of text from a max width text box.
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.
I am still getting the same error. A video tutorial would have been nice here.
Originally posted by Rykon-V73
I am still getting the same error. A video tutorial would have been nice here.


I'm 99% sure that you took the files out of the vwf_dialogues folder, which is what is causing the problem.

Regardless, I updated the patch just now to change the file that needs to be applied. Re-download the patch and apply vwfmain.asm with asar. Do not take out the files from the vwf_dialogues or shared folders.
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.
It works! Thanks!
Edit: When I hit the yellow switch, it displays a few letters and then vanishes. It should have displayed the whole message.
You know, maybe you could add a command for displaying sprite tiles, something like:

Code
$EA $xx $yy $tt $pp $ss
$xx = X position
$yy = Y position
$tt = tile number
$pp = tile properties
$ss = tile size


Or:

Code
$E9 $nn $x1 $y1 $t1 $p1 $s1 $x2 $y2 ...
$nn = number of tiles to draw
$x1 = X position of the first tile
$y1 = Y position of the first tile
$t1 = tile number of the first tile
$p1 = tile properties of the first tile
$s1 = tile size of the first tile
$x2 = X position of the second tile
$y2 = Y position of the second tile
etc.


That would make it easier for people to make cutscenes and use character portraits.

In fact, did the manual include any information about adding your own commands? I can think of a few more that I'd use (such as setting up HDMA, uploading data to VRAM, and using 8-bit code macro indexes) that might be that useful for the general public, and I remember the timing on those being kind of fiddly when I tried to add my own previously.

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Originally posted by Rykon-V73
It works! Thanks!
Edit: When I hit the yellow switch, it displays a few letters and then vanishes. It should have displayed the whole message.


You're welcome!

Also, that seems to be an issue with the text macro system, as the problem is caused by a VWF stack underflow. I'm having trouble figuring out why this happens, especially since the similar "-Point of Advice-" text macro doesn't cause this problem.

Originally posted by imamelia
You know, maybe you could add a command for displaying sprite tiles, something like:

Code
$EA $xx $yy $tt $pp $ss
$xx = X position
$yy = Y position
$tt = tile number
$pp = tile properties
$ss = tile size


Or:

Code
$E9 $nn $x1 $y1 $t1 $p1 $s1 $x2 $y2 ...
$nn = number of tiles to draw
$x1 = X position of the first tile
$y1 = Y position of the first tile
$t1 = tile number of the first tile
$p1 = tile properties of the first tile
$s1 = tile size of the first tile
$x2 = X position of the second tile
$y2 = Y position of the second tile
etc.


That would make it easier for people to make cutscenes and use character portraits.

In fact, did the manual include any information about adding your own commands? I can think of a few more that I'd use (such as setting up HDMA, uploading data to VRAM, and using 8-bit code macro indexes) that might be that useful for the general public, and I remember the timing on those being kind of fiddly when I tried to add my own previously.


I can't do that because SMW clears the sprite data every frame. VWF commands are only executed once, so a sprite tile command would result in the sprites appearing for a single frame. This is one of the reasons I made MessageASM in the first place, since I needed to be able to run message specific code that could run every frame.

Also, I don't think the manual mentions that, but I imagine most of the things you'd want to do can be done with MessageASM (perhaps in conjunction with other patches, like DynamicZ, to give it more utility). It works very similar to UberASM, although one thing I should point out is that you're technically not limited to one MessageASM routine per message. You can only define one in the message header, but the JML to the current MessageASM code is stored in RAM. This allows you to change it if the current routine is no longer needed and/or disable it.
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.
  • Pages:
  • 1
  • 2

PatchSuper Mario WorldMisc. HackingSuper Mario Maker 2Resource ReleaseScreenshots