Language…
10 users online: 15Tails, adamzralko12, Cappaque, Connnnair, Golden Yoshi, Isason, lRichieBiersack, possiblyemmo, thekiller678, Zavok - Guests: 103 - Bots: 94
Users: 70,488 (2,462 active)
Latest user: Isason

Yoshifanatic's ASM Showoff: Part 17

Super Mario WorldNon-Super Mario WorldPatchToolWork in ProgressResource ReleaseScreenshots

  • Pages:
  • 1
  • 2
  • 3
  • 4
that overworld revolution thing is nuts, holy shit. i gotta ask, could there be any chance of incorporating something similar to the free overworld patch in the future?
LINKS Twitter | YouTube | SoundCloud | Fortaleza Reznor
to hear birds and see none.
I'm glad to hear you guys like the overworld patch! ^_^ It's a very complicated patch, so I won't be too surprised if it's a bit hard to use. Although, that aspect will get better as I find ways to make it easier to work with. And I'm going to continue working on other enhancements to it.

Here are some other things I wanted to do that I didn't have the time to implement:
- An option to use sprite tiles for level names and level tiles.
- Making the overworld player sprite dynamic to save on sprite VRAM.
- A setting that fully cleans out every trace of the original overworld, including stuff LM moved elsewhere.
- A way to edit the text box text without LM (if you try that now, LM will insert its overworld hijacks and corrupt various parts of the patch code/data).

Anyway, I'm going to respond to some of your posts now:

Originally posted by NewPointless
Wow, that's really impressive. That overworld stuff looks to be next level, and I can't believe you optimized the sprite code so much. That's something that's been sorely needed for a while, because SA-1 is not always compatible on every console/emulator setup and some of the sprite expansion systems are pretty bloated in terms of performance.

Rock on #smrpg{y}


Yeah, I made this patch with the base SNES in mind. So, the SA-1 patch is not required, but still improves performance (although admittedly, the SA-1 support could be improved since it's a bit hacked together).

And yeah, there is certainly quite a bit of bloat with the existing systems used for inserting resources into SMW. Mostly because they're built off of SMW's janky/inefficient foundation instead of entirely reworking it. But, reworking it entirely would break compatibility with so many existing resources, so I understand why it's not done. But, my hack's source code gives a glimpse of what a possible sprite rework could like for SMW for those that want to do something similar.

Originally posted by Stivi
The overworld revolution just made me so fucking happy, this is the best thing I've ever seen.


That's good to hear! I saw some of the replies that Soul's post on the SMWCentral Discord had, and it was interesting seeing you and others working on a similar patch. I guess great minds think alike. XD

Originally posted by Rykon-V73
I actually wondered if there was a way to make the OW bigger. Sure there was bigow.asm, but it was quite hard to use. I'm really glad Overworld Revolution patch was released. I did wonder how soul did it, even though I didn't expect that to be a request. While this also looks hard to use, I'm pretty sure it would lead to great to great results once a user tries it to its potential. I'm glad paths can be placed anywhere and that's a thing since I planned that for the Star World of my hack. Great job with this patch, yf!


Thanks!

I've been thinking of doing something like this for a while now, but Soul gave me the push to do it. The main thing that stopped me before was figuring out how to handle events. But, when I thought of using a scripting language for them, I managed to get them working fairly quickly.

And yeah, this patch is very complicated. There was no way around that, since recreating every function of the vanilla overworld was a tall order. I did try to make things easier, but I will improve usability as time goes on.

Originally posted by Anas
Whoa, outstanding work on the overworld expansion! I didn't even know you would do that, and I can see there are over 8k lines of code in the main patch alone, so this is surely a huge undertaking. I'm also very glad you managed to retain all the vanilla OW functionality, especially the path fade, player border, and koopa kids. I was actually kinda concerned about that. I dunno if I will use this myself, but I might in the future! I didn't even work on a proper OW for my hack at all yet, and this gives me more freedom than I never thought I'd need! I am curious, how long did this project take you?


Thanks!

As for how long it took to make this, it's been a month. My first post on Soul's server where I showed my progress was on 1/22/2024. I showed him this .gif:



Originally posted by Deeke
That Overworld patch is on a completely different level, I'm just beyond words. Just having really big maps is one thing, and that's nothing to sneeze at, but being able to have an unrestricted amount of submaps is unreal. If this is something that we can make work, this solves a lot of foreseeable headaches (though that's a big if on if something like the Free Overworld patch could be included as well).

With the kinds of level tilemapping shenanigans going on, does this mean that layer 1 and 2 act like how they do in levels and level tiles are assigned programatically? Does that mean, for instance, you could have a map with parallax scrolling effects or varying scroll rates across layers? Could scrolling sprites like Layer 2 scroll or autoscrolling be implemented into a map, or do only overworld compatible sprites work as intended?


- Technically, the Free Overworld patch functionality is in my patch, but it's explicitly a debug feature. In fact, that was originally how my patch handled movement up until I implemented the path system. If Mario is set to be in state 00, then he'll use free movement. By default, Mario is always in state 02 and all the scripts either loop or jump to other scripts. If script opcode 00 is run, Mario will be put into state 00.

-- Yes, the overworld maps use the same level loading. My vanilla overworld recreation uses the map16 data for the tilemaps and I just pasted 1-4 directmap16 objects to draw the overworld.

- Yes, you could implement parallax scrolling effects. Layer 1 is much more free for graphical stuff than before, so it's possible you could use layer 2 for a background.

- No non-overworld sprites will load on the overworld map. I hijacked the level sprite parser routine so that, when you're on the overworld, the game will only load overworld sprites. Although, I'll try and get the original scroll sprites working, at least.

Originally posted by SubconsciousEye
I had a feeling it would be the overworld back when you mentioned doing something revolutionary, for it was the one thing that was essentially dying to get something of an overhaul. I'm certain many others will do amazing things with this new system in place.


Yep, I agree. This is something that ought to have been done years ago, but I understand why it wasn't. Expanding the overworld was not an easy thing, even going with the idea of using a level tilemap for the overworld. The events alone would be enough of a disincentive to stop most from trying, let alone everything else that would need reworking. But, I'm happy to have gotten a working solution for everything the vanilla overworld does.

Originally posted by imamelia
Very impressive as usual. That overworld revolution patch is crazy. I could see it being especially useful for SMB3- and NSMB-styled hacks, but having more space available could be useful for quite a few hack concepts. I'm curious how you edit the submaps in (presumably) Lunar Magic's level editor. And as for the MYSQ dev stuff...dang, I've been wanting to rewrite SMW's sprite system for ages. You must have changed quite a lot of code in the game to make that RAM map so different (and again, I'm surprised that it would all still work in Lunar Magic). Or did you design the stuff with your own tool (or purely in ASM)?


- You can edit the submaps the same way as you edit levels. By default, the tilemaps are stored in the map16 data, but newer overworlds made with this patch in mind don't have to do it that way.

- Yep, I changed a lot of code to pull off the sprite engine changes. The vast majority of stuff I programmed into my hack was done by hand and directly integrated into the existing code. Every change I made to the SMW code is marked either with a "$$$" or by "MYSQ" being in the name of a normally vanilla routine macro. If you want to see some optimizations I made, look at some of these routines and compare them with the vanilla code:

ROUTINE_CUSTOM_MYSQ_ProcessNormalSprites
ROUTINE_CUSTOM_MYSQ_SubOffScreen
ROUTINE_CUSTOM_MYSQ_ProcessBlockCode
ROUTINE_CUSTOM_MYSQ_HandleNormalSpriteLevelCollision
ROUTINE_CUSTOM_MYSQ_UpdateNormalSpritePosition

Originally posted by Maxodex
[that overworld revolution thing is nuts, holy shit. i gotta ask, could there be any chance of incorporating something similar to the free overworld patch in the future?/quote]

My patch technically already does, but it's a debug feature. My response to Deeke's post explains it.

Tag (div) was not closed.
Tag (div) was not closed.
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.
Quote
My patch technically already does, but it's a debug feature. My response to Deeke's post explains it.

Quote
- Technically, the Free Overworld patch functionality is in my patch, but it's explicitly a debug feature. In fact, that was originally how my patch handled movement up until I implemented the path system. If Mario is set to be in state 00, then he'll use free movement. By default, Mario is always in state 02 and all the scripts either loop or jump to other scripts. If script opcode 00 is run, Mario will be put into state 00.

cool holy shit. you say this is a debug feature though, does that mean there's a possibility that some things might not work properly or as intended, or is it fully operational? asking since i wouldn't be surprised if not everything was accounted for for what's just a debug feature. if you're unsure then it's all good, i can always just fuck around with it.

also, now that i think about it, does placing tiles work differently now? in the overworld editor you can place individual 8x8 tiles, but on levels you can only place 16x16 blocks. i imagine there's no other choice but to create different map16 blocks to recreate landscapes now.
LINKS Twitter | YouTube | SoundCloud | Fortaleza Reznor
to hear birds and see none.

Originally posted by DeppySlide
Don't worry though, we'll still have a lot of smaller contest sprinkled in throughout the year. (OWDC fans should stay tuned for March!)
And you have the gull to deliver this massive overhaul in Feburary?!
All jokes aside, this is truly incredible. You have completely reimangined the entire structure of overworlds in SMW, while still managing to expand the avalible workspace, make sprites less of an headache, implementing hardcoded paths, and like half of the patches you see in many overworlds. I am so incredibly excited and terrified to see how this patch gets used in future hacks and contests. Needless to say, I will be digging into this project. Awesome work!
Turns out web design has it perks (when it works)
Originally posted by Maxodex
cool holy shit. you say this is a debug feature though, does that mean there's a possibility that some things might not work properly or as intended, or is it fully operational? asking since i wouldn't be surprised if not everything was accounted for for what's just a debug feature. if you're unsure then it's all good, i can always just fuck around with it.

also, now that i think about it, does placing tiles work differently now? in the overworld editor you can place individual 8x8 tiles, but on levels you can only place 16x16 blocks. i imagine there's no other choice but to create different map16 blocks to recreate landscapes now.

I guess "map16" lives up to its name now #smrpg{:P}. But aye, it sounds like this system makes the 16x16 tile map editor pull double duty as the Overworld editor - it's probably not going to be too different in the end aside from having to press different buttons. Hopefully the Free Overworld patch can translate here, since being able to roam without boundaries is something that wouldn't really work.

If someone takes on making this compatible with that, then I'll give them a big burlap sack with a dollar sign written on it.

Edit: oh shoot wait a minute, what if 8x8 blocks kept their functionality? Air tiles are normal, cement tiles are impenetrable, water tiles give water effects, vine tiles are climbing tiles. You zoom in the thing like crazy that way, but it's something. Spitballing on something I don't really understand, but isn't there a high res feature in mode 6 that would double the resolution and make it less claustrophobic?


Other Submissions of mine!
I want to ask regarding this overworld revolution patch - does this make the possibility of wily castle-like progression be a potential thing one can do with it?

Either way, this is really cool.
Modern Redrawn Mario Bros. 1.5 (last update - February 14, 2023, some new bonus frames, tons of minor touchups to various poses)

On Pixel Art Requests: Depends on what it is and if I have the time for it. If its complex and I don't have the time, don't expect me to accept it.

Projects I support:


Originally posted by Maxodex
cool holy shit. you say this is a debug feature though, does that mean there's a possibility that some things might not work properly or as intended, or is it fully operational? asking since i wouldn't be surprised if not everything was accounted for for what's just a debug feature. if you're unsure then it's all good, i can always just fuck around with it.

also, now that i think about it, does placing tiles work differently now? in the overworld editor you can place individual 8x8 tiles, but on levels you can only place 16x16 blocks. i imagine there's no other choice but to create different map16 blocks to recreate landscapes now.


It should work, since the path movement stuff was added later. But, yeah, you'll need to modify all the event scripts so that Mario doesn't go into the "standing on level tile" scripts. This patch is still a WIP, so I may add explicit support for Free Overworld style movement in the future.

As for the tilemap, yes, you can only place 16x16 tiles. I worked around that by building the overworld tilemaps in the map16 editor (though that's not strictly necessary for new overworlds) and making events programmable (ie. This is why I made the event tile sizes more flexible). Depending on the way the overworld is made, you may need a lot of map16. But, luckily, map16 data is in abundance.

Originally posted by Digital Entertainment
And you have the gull to deliver this massive overhaul in Feburary?!
All jokes aside, this is truly incredible. You have completely reimangined the entire structure of overworlds in SMW, while still managing to expand the avalible workspace, make sprites less of an headache, implementing hardcoded paths, and like half of the patches you see in many overworlds. I am so incredibly excited and terrified to see how this patch gets used in future hacks and contests. Needless to say, I will be digging into this project. Awesome work!


That contest is certainly going to be interesting if the mods allow this patch to be used. XD

And yeah, overworlds are going to get really interesting going forward. Especially as I add new features to this patch to further expand its capabilities.

Originally posted by Deeke
I guess "map16" lives up to its name now #smrpg{:P}. But aye, it sounds like this system makes the 16x16 tile map editor pull double duty as the Overworld editor - it's probably not going to be too different in the end aside from having to press different buttons. Hopefully the Free Overworld patch can translate here, since being able to roam without boundaries is something that wouldn't really work.

If someone takes on making this compatible with that, then I'll give them a big burlap sack with a dollar sign written on it.

Edit: oh shoot wait a minute, what if 8x8 blocks kept their functionality? Air tiles are normal, cement tiles are impenetrable, water tiles give water effects, vine tiles are climbing tiles. You zoom in the thing like crazy that way, but it's something. Spitballing on something I don't really understand, but isn't there a high res feature in mode 6 that would double the resolution and make it less claustrophobic?


- Yep. Although, you don't necessarily need to build an overworld the way I did the vanilla overworld. I only did it that way for simplicity. But, newer overworlds can be designed to reuse individual map16 tiles.

- I'm not entirely sure how I'd handle collision with the overworld. My code already uses level tile collision to determine what level name to display, but I'm not sure how I'd do wall/floor collision. If someone wants to try, I'll note that I programmed Mario to check for collision at his feet.

- Yes, mode 6 is a high resolution mode. However, it comes at the cost of every background layer except 1. There is a reason not many games use mode 6.

Originally posted by SF - The Dark Warrior
I want to ask regarding this overworld revolution patch - does this make the possibility of wily castle-like progression be a potential thing one can do with it?

Either way, this is really cool.


I suppose that could be possible. What happens when exiting a level is fully programmable, so you could run a script that recreates the animations of a Wily Castle screen, then automatically enter the next level.

There are probably a lot of other things you can do that I didn't even consider, now that events are fully programable. I'd love to see what people come up with! ^_^
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 was recently aproached about a month ago for my QLDC entry code to try and use it to make a functioning 'overworld'.
I had to insist that my code was barely functional and hacky as is and it would need an entire rewrite to do something like that.
Seeing your code now, it turned out better than I could ever imagine! Can't wait to see what people make with this!
This is a really great patch! Now I can create the big overworld I've only imagined.
How does this handle 2 player/Mario and Luigi. I'm a rare 2 player is important guy and it's something overlooked a lot.

The original overworld didn't save Mario and Luigi's positions from each other when you reloaded the save Luigi would be moved to where Mario is at. Having them saved separately would be a cool addition. I'm working on a hack where Mario and Luigi have separate levels and the overworld patch can let me do completely different overworlds too.
Team CornersoftYoutube
That overworld patch will definitely be useful once it gets finished.

Originally posted by Maxodex
also, now that i think about it, does placing tiles work differently now? in the overworld editor you can place individual 8x8 tiles, but on levels you can only place 16x16 blocks. i imagine there's no other choice but to create different map16 blocks to recreate landscapes now.

You can actually copy layer 1 and 2 data from the overworld and paste it into map16.
So you can design your overworld in the ow editor like normal and then just copy and paste it into map16
.
A quick update, but I fixed a couple of bugs in the overworld patch thanks to Stivi. Specifically:

- I fixed a bug where I accidentally broke the special world palette loading when I was trying to implement the dark screen effect of the continue/end menu.

- I fixed a bug where the if the camera focus point was at least a screen away, it would snap onto the focus point earlier than it should.

- I fixed a bug where a single black pixel would remain on screen after closing a prompt.

- I fixed an oversight in the .bps patch where path transitions would use the wrong main/subscreen settings. This was a last minute bug fix prior to C3, but I forgot to update the .bps accordingly.

Originally posted by LuigiXHero
How does this handle 2 player/Mario and Luigi. I'm a rare 2 player is important guy and it's something overlooked a lot.

The original overworld didn't save Mario and Luigi's positions from each other when you reloaded the save Luigi would be moved to where Mario is at. Having them saved separately would be a cool addition. I'm working on a hack where Mario and Luigi have separate levels and the overworld patch can let me do completely different overworlds too.


You'll be happy to know that the 2 player mode still works in my patch. I almost thought it wouldn't be ready by C3, but I got it working the day before. Everything works, from the player switching, Luigi being drawn, the life exchange window, (with the abilities to disable it the same way you can with LM implemented), and game overs. However, currently, the setting for Mario and Luigi's positions being saved separately isn't implemented yet. But, in the opposite way from vanilla, so Mario and Luigi's positions are saved separately. So, you'll still be able to do what you were planning.

Originally posted by TheOrangeToad
That overworld patch will definitely be useful once it gets finished.


You could use this patch in its current state. But, it does need some polish, some more features, make it easier to use, and a manual explaining how things work. I recreated every aspect of the vanilla overworld in my patch, so those that are willing to play around with it will be able to do all sorts of cool stuff.

Originally posted by Stivi
You can actually copy layer 1 and 2 data from the overworld and paste it into map16.
So you can design your overworld in the ow editor like normal and then just copy and paste it into map16.


I actually didn't know that, although I noticed you need to use Ctrl+C/Ctrl+V to do it rather than right clicking which might be why I didn't notice. I had to make the overworld tile by tile during development. :( But, I think I got it about 99% accurate, not counting the minor cutoff fixes I did or the expanded parts of the submaps.
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.

Originally posted by yoshifanatic
But, it does need some polish, some more features, make it easier to use, and a manual explaining how things work.

That would be super awesome, considering my ASM knowledge is still lacking, to say the least :)
I noticed while going through the overworld recreation that all sprites disappeared when transitioning to a submap via red paths (the #1 weakness of any map designer)

I also have a question: would something like smkdan's Multiple Songs on Main Map be implemented to this overworld? It has become fairly common use in SMW overworlds, and I'd just be curious if that could work here.
Turns out web design has it perks (when it works)
Besides implementing patches, I'd also like to see the b4vwf - BG4 Variable-Width-Font Text Boxes incorporated. Your choice.

Originally posted by Digital Entertainment
That would be super awesome, considering my ASM knowledge is still lacking, to say the least :)
I noticed while going through the overworld recreation that all sprites disappeared when transitioning to a submap via red paths (the #1 weakness of any map designer)

I also have a question: would something like smkdan's Multiple Songs on Main Map be implemented to this overworld? It has become fairly common use in SMW overworlds, and I'd just be curious if that could work here.


I fixed that last night. That was a bug I caught prior to C3, fixed it, but then I forgot to update the .bps patch to include the fix. If you redownload the patch, it should be fixed. The bug was caused by the code initializing the main/subscreen wrong during a transition.

As for that patch, I currently don't have that functionality implemented. But, that will be on my list of things to implement.

Originally posted by Rykon-V73
Besides implementing patches, I'd also like to see the b4vwf - BG4 Variable-Width-Font Text Boxes incorporated. Your choice.


I wasn't planning on implementing that. However, since my patch makes it possible to remove the border, I could implement a way to display messages on the overworld. That would actually be a rather cool feature to add. :)
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'll tag on to the overworld bang wagon by saying that that sounds extremely promising for the future of overworld design. I wonder if it'd even be possible with this modification to make an overworld the size of 4 overworlds... and especially if the graphical storage for the overworld is increasable by a notable margin, that could greatly expand the number of things possible with overworld design. There's a lot to unpack mentally here, but I'll just say that that's really dang cool what you're doing here. I also have no idea what a disassembly of an entire SNES game entails, let alone Chrono Trigger of all things, but it certainly shows you're cooking with some powerful ingredients here. Keep up the good work.
embed fail!!




This overworld revolution patch seems quite fantastic. I want to see what people can do with it. I'm not familiar with overworld stuff, but everyone and myself included love to see a very well done and polished cute map to accompany the adventure of the hero.

In general, fantastic stuff as usual. Keep up the superb work.


Originally posted by yoshifanatic
(Patch) Overworld Revolution (WIP)


Bigger overworlds? Programmable events and path movement? Unrestricted overworld sprites? Yes please!

WITCHCRAFT!

Seriously, though. Can't wait to use this in the future once this patch is finished! Keep it up, yoshifanatic!
Check out these awesome new English translations released this year!
🌸 Sakura Wars 2: Thou Shalt Not Die 🌸 / 🏰 Waku Waku Puyo Puyo Dungeon 🏰 『いけいけ団長、頑張れ頑張れ団長!』
Help us raise funds for the Armed Forces of Ukraine. #ДопомагаємоРазом / #HelpTogether
“Even if you personally are so dissatisfied with life that you want the world to end, surely the cruel reality is that it will continue on, unchanging. All the better for someone perfectly content, like me.”
Aya Shameimaru, Touhou Suzunaan ~ Forbidden Scrollery
Fanatical like a Demon
The overworld revolution patch is... well revolutionary lol. This is awesome, we can actually now have a variety of different maps just like SMB3. Imagine a hack with 8+ different overworlds with their own themes and music! As of right now it seems the only limit to your map size is the size a level dimension LM will allow. Great stuff!
Major thanks to Suika Ibuki for layout!
I'm open for music requests, just DM me on discord and we can further discuss there.
SMAS Soundtrack Status: 100% finished
YI Soundtrack Status: 100%
YI Unsampled Soundtrack Status: 100%
NSMB Soundtrack Status: 7.89%
Killer Instinct Soundtrack Status: 14.63%
SPC Thread
From our family to you, keep your pants dry, your dreams wet, and remember, hugs not drugs.
  • Pages:
  • 1
  • 2
  • 3
  • 4

Super Mario WorldNon-Super Mario WorldPatchToolWork in ProgressResource ReleaseScreenshots