Language…
14 users online: Batata Douce,  Deeke, Everest, Gamet2004, Golden Yoshi, Gorry, Green, JezJitzu, LunarianNEET, MellowYouth, Raychu2021, RicardoDeMelo, SiameseTwins, sinseiga - Guests: 261 - Bots: 285
Users: 64,795 (2,376 active)
Latest user: mathew

Lifting the curse of INC $19 Mario

Super Mario WorldUberASMMiscellaneous

tl;dr: in this thread I'm a) listing all the times where the UberASMTool example code has confused newcomers, and b) presenting a fix that will hopefully be implemented in the future.



UberASMTool is great, but as with everything in SMW hacking, there's a bit of a learning curve. The greatest hurdle for newcomers is the fact that it comes with example code.

There's a file with a line of code that increments the player's powerup state every frame - making the player cycle through all 252 glitched powerup states - and a default entry in list.txt that makes that code run in level 105. It's there for demonstration purposes and it's meant to be removed, but many people don't know enough about the tool to figure that out. They don't know how to get rid of the effect, often mistake it for a bug, and make posts in the forums or in Discord asking for help.

The problem is of course easy to fix when you encounter it, but if you don't know what's going on it looks like a serious glitch. And if you don't know what's going on but try to help, you might give unhelpful advice like "guess you gotta start your hack over" or "I don't know, just don't use level 105 and that seems to work".


A history lesson

This problem is not one person's fault - not the user's, and not even that of UberASMTool. As far as I can tell, it started more than a decade ago, in 2010, with Ersanio's levelASM, a patch that was the predecessor to uberASM and UberASMTool.

levelASM had example code in level 105 that would change the background color depending on the player's X position in the level, so any time you moved, the background would flash. People got confused.

Some time in mid-2010, levelASM received an update that changed the example code so that half the time (alternating every few seconds), all inputs were disabled. This was arguably more perplexing and subtler to notice, and harder to connect to levelASM. People got confused.

In 2012, the first version of uberASM (then still in patch form) was released by p4plus2. As far as I can tell, it didn't include any example code (the version currently in the Patches section still doesn't.) People didn't seem to get confused.

In 2016, UberASMTool was released by Vitor Vilela and quickly became the standard. It came with example code again: the now-famous INC $19, from which the glitched player sprite gets its nickname "INC $19 Mario". I don't think this is where joke originated though, because cycling through powerups had always been a somewhat common thing to do to test if code runs, and it was Ersanio who made the GIF of it.


All the times people got confused

These are all the instances I could find of people asking for help because they mistook the example code for a bug. (As if anyone needed evidence, but it's kind of fun making and seeing such a long list.) If you find any more, let me know! (seriously)

2010-05-13 (flashing background color)
2010-05-29 (flashing background color)
2010-06-25 (disabled movement)
2011-05-20 (disabled movement)
2012-05-12 (disabled movement)
2016-07-27 (glitched powerup states)
2017-12-16 (glitched powerup states)
2018-06-19 (glitched powerup states)
2018-07-28 (glitched powerup states)
2018-08-31 (glitched powerup states)
2019-02-05 (glitched powerup states)
2019-02-27 (glitched powerup states)
2019-03-26 (glitched powerup states)
2019-04-06 (glitched powerup states)
2019-04-18 (glitched powerup states)
2019-06-11 (glitched powerup states)
2019-06-18 (glitched powerup states)
2019-07-29 (glitched powerup states)
2019-10-04 (glitched powerup states)
2019-10-27 (glitched powerup states)
2019-12-24 (glitched powerup states)
2020-04-09 (glitched powerup states)
2020-05-23 (glitched powerup states)
2020-07-20 (glitched powerup states)
2020-08-27 (glitched powerup states)
2020-11-08 (glitched powerup states)
2021-01-21 (glitched powerup states)
2021-03-28 (glitched powerup states)
2021-09-17 (glitched powerup states)
2021-11-17 (glitched powerup states)
2021-11-26 (glitched powerup states)
2021-12-17 (glitched powerup states)


What to do about it?

Again, this is not the fault of any one person. In fact, it's arguably due to the success of UberASMTool, and the fact that it's otherwise very easy to use: it's become popular, and many other resources have come to rely on it. This means that people who want to use (say) Screen Scrolling Pipes are only using UberASMTool as a means to that end, so they aren't likely to get very familiar with the tool. They only do what the other resource's instructions say to do, and if those don't mention removing the example code, they get confused.

Over the past decade many people (including me) have argued that this confusion is entirely preventable, and have asked for the example code to be replaced with something more obvious or removed entirely. For this C3, I decided I'd try and make this update myself.

I (and many others) have been imagining code that uploads text to layer 3 saying something like "this is a test message, UberASMTool works, you can remove test.asm from the list". However, that wouldn't be entirely fool-proof: if someone was messing with the layer 3 position or using layer 3 ExGFX that aren't letters, they'd still be perplexed.

I decided to go the easy route and do two things:
  • rewrite list.txt to be tidier and easier to understand even if you haven't read the readme (unlike the readme, list.txt is the only place you're guaranteed to open).
  • include example entries in list.txt for level, overworld and game mode code, but leave their corresponding code files essentially empty so they have no side effects. Arguably this can still be confusing if you add an entry for level 105 without removing the existing one, but UberASMTool catches that, and I felt it was a good idea to include example entries so people know how they look like and where to put them.


I have no business working on and submitting UberASMTool versions, so I didn't submit this change directly to the site. Instead, I created a pull request in Vitor's repository. Vitor has approved of the changes and merged them in, and I assume the next version submitted to the site will include them. And that should be the day, dear to our hearts as Incio may be, where we put the INC $19 confusion behind us once and for all.



well that was a rant and a half for very little content to show

 


 
This is why you just gotta love WYE!

You never fail to surprise us. Never in a million years did I see a thread like this coming. Not only am I getting a free little SMWC history lesson (which in and of itself is appreciated - "SMWC history" is literally one of my favorite C3 genres), but it's also making me laugh because you literally went out of your way to find and list all of the threads where someone got confused by the sample code.

FYI, what I ended up doing in the new version of my VWF patch is to use include paths in Asar. That way, I can actually have two different content files and use one for testing only. The regular file, containing SMW's default dialog, will be distributed with the patch, and development file, containing a dozen different tests, will only be available on GitHub (or maybe distributed with the patch as well, but in a separate folder). That way, people still have access to sample code, but don't end up using it accidentally.

Though I think your solution will definitely break the curse, which is what ultimately matters.
Feel free to visit my website/blog - it's updated rarely, but it looks pretty cool!
This will be useful for hit blocks and star items that use them often


You are challenged by Champion Daisy!

LAYOUT FOOTER:
Let's be honest: The real star of this thread is the archive, not the fix to UberASM Tool (if the update is the main premise, it's solely to create any threads for C3, isn't it?).

Originally posted by WhiteYoshiEgg
I have no business working on and submitting UberASMTool versions, so I didn't submit this change directly to the site.

UberASM Tool is licensed under GPL so you're free to submit your version, at least (of course, the version is inofficial so it's still better waiting for Vitor, not to mention the changes should be included in the main branch, after all).
Never thought there would actually be history to the funny incio thing. Very interesting, and nice to see that it will finally be solved.
I think 80% of the time I use UberASM I forget to remove this code and get that shot of pure panic thinking I've messed something up...

Only to then realise a few seconds later. It's a fun experience each time it happens. Almost feels like I right of passage at this point for users who explore UberASM. #smrpg{sick}
I just downloaded uberasm like yesterday and was playing around with a new project and this almost confused me. But thankfully I know all about the INC $19 my homie.

Super Mario WorldUberASMMiscellaneous