Hello! Welcome to the SMBX Textravaganza, a brand new mini series I'm making!
Here, I'll be covering any tech, glitches, or bugs I found in SMBX. This can range from niche but funny interactions to techniques that you can use in your SMBX levels. Each presentation will be shown through a series of 1-3 minute videos over a select number of days. Best of all, everything I showcase is done with ZERO LUNALUA!
In today's episode, I'll be going over one of my favorite techs that I've used in some of my recent Vanilla/ish levels: Invisible sizables!
For now, I don't have full explanations on how certain interactions work through the source code since I haven't mastered navigating it yet. Any help or feedback is greatly appreciated! The first season is made with tape and glue, but I'd be open to more polished seasons if enough people like it. You can also private message me submissions for future seasons.
For now, I don't have full explanations on how certain interactions work through the source code since I haven't mastered navigating it yet. Any help or feedback is greatly appreciated!
first of all, this is a fun idea, looking forward to the rest of the videos
second, is there anything in particular you're having trouble finding in the source code? it's quite a clusterfuck, so i don't blame you, but i'd be more than happy to help given how many times i've had to scour it to debug esoteric interactions
first of all, this is a fun idea, looking forward to the rest of the videos
second, is there anything in particular you're having trouble finding in the source code? it's quite a clusterfuck, so i don't blame you, but i'd be more than happy to help given how many times i've had to scour it to debug esoteric interactions
Mainly looking for how blocks, bgos, and mounts are handled. Especially anything related to rendering and whatever's hardcoded. I was only able to find anything regarding NPCs.
Mainly looking for how blocks, bgos, and mounts are handled. Especially anything related to rendering and whatever's hardcoded. I was only able to find anything regarding NPCs.
blocks are unsurprisingly handled in modBlocks. a good way to search for code that handles a specific block is to search ".Type = X" (or other comparison operators like <=, >= etc. (without the quotes)) because similarly to npcs, most of the logic is handled in these winding if statements
background objects don't have their own module, instead backgrounds that have special interactions will have them programmed from the other side (e.g. the code that handles keyhole exits is in the npc module, the key npc is the one that checks for collision), though some of the hardcoded ones like door locks and star warp indicators are partially handled in modMain, if memory serves me right
mounts are handled in the player module, you can check the player type definition in the main module to see all the fields related to mounts/yoshis and then ctrl+f for them in modPlayer, there are a ton of sporadic checks done throughout the different methods so i can't really give any more advice unless it's about a particular interaction
as for "whatever's hardcoded", the answer is that a lot is hardcoded, to the point where it's only really worthwhile to check if something specific is hardcoded or not rather than trying to be systematic about it, simply due to the sheer volume of magic numbers and long if statements that check against them
lastly, 1.3's rendering is done in modGraphics, once again in a messy chain of if statements (though well-commented compared to the other modules i think), but i'm not sure how reliable looking at it is given that lunadll implements its own rendering pipeline which i'm not super familiar with, so there might be obscure quirks that differentiate them (a lot of stuff that's been added/reworked in smbx2 just uses lua drawing anyways so i'm not sure if the bitblt call emulation even matters there)
this is all a bit vague because i do need to stress that the base game has a surprising lack of generic code, and a lot of things will just have some special interaction programmed inside an if statement. i'd be glad to go into more detail about how particular interactions (that i know of) work, but there's too many of them to just start listing them off
Next episode is up! I'll try sticking with noon EST as the release window for now, but this may change.
Today, I'll be going over friendly coin shenanigans. Including what happens when you throw Toad's Boomerang at them or hit a p-switch.
deice wrote:
I assumed that the list of what's hardcoded was much smaller than it is. If there's anything specific that I need, I'll PM you. Thank you so much for your help! I greatly appreciate it!
the friendly coin bug can probably be fixed in a couple of ways. the easiest would be to just cancel onNPCCollect, but this would still make the coin movable by boomerangs. preventing that is considerably trickier, as you can look here and see that toad boomerangs simply snap coins to their positions repeatedly. it would require something like storing coin positions at the end of each frame, checking for collision with a boomerang, and then snapping them back to the stored position if they're friendly
the invisible sizables can probably only be fixed by making their graphics transparent and loading them from a separate file, then drawing them manually if they're not marked as invisible (though to begin with you will almost never need to mark a sizable as invisible unless you're trying to recreate this exact bug so y'know)
New episode out now!!!! We have a special episode today coinciding with the newly announced 100 Second Vanillish Contest. While the "Level Timer - End" event isn't the most mind-blowing feature, I thought it'd be fun to showcase a few ways you can use this event.
Stay tuned for tomorrow's episode! It will be the first submission episode!
Submitted by Darkonius Mavakar!
Special thanks to deice for the information on mount's hardcoded hitboxes!
Today, we'll be exploring a similar tech you might've seen in a Science Contest. The anti-anti-gravity shoes! I'll also showcase what happens when you set them as walkers and with hitboxes larger than the mount.
Very late post, but I finally got episode 5 out! Hopefully there won't be any long delays for the next half.
We'll be going over a secret trick that Waddle used in some of his vanilla levels. I'll touch on what happens when you adjust a lower section boundary, and what happens if you try changing the background with another event. This episode, along with the series overall, was inspired by Waddle's Vanilla Tips and Tricks thread made in 2022. I recommend checking it out. There's some cool stuff in there, too!
I'm just gonna focus on getting them done from here on out. Anyway, this episode will touch more on the bouncing veggies tech I used in the latest Science Contest. I'll also showcase a few other NPCs that this tech works on.
Next episode will be another submission episode. Stay tuned!
In today's episode, I'll showcase a funny tech featuring Wario. With a Tanooki suit, Wario can actually perform a double jump! How? All you have to do is groundpound immediately after turning into a statue. You can do this several times until you touch the ground.
In this episode, we'll showcase the BGO config climbable. This config works with every background object in most cases. There's a lot of untapped potential with this config that I hope gets touched on by any zany level designers out there.
We have two more episodes left! Next one will be the last submission episode of this season!
For the penultimate episode, we'll showcase a movement tech featuring the key. You can get far without any additional boosts using the key alongside the classic spingrab tech! This tech is much harder to master than the rest I've shown so far, but it's very fun to learn.
And for the last episode of this season... isflying=true
Regardless of whether you stuck around since the first episode or started in any of the others, thank you so much for watching!
I'll still accept submissions from anyone at anytime for a possible second season. If it does happen, it'll definitely be more planned ahead and more polished. Haha!