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?
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
Rock on

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?
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.
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.