8 users online:  Atari2.0, Buzbee, Geno2K, Konaoto, Phyll, Ringo, wye, Zavok - Guests: 49 - Bots: 203
Users: 58,010 (2,497 active)
Latest user: slavi

uberASM 1.2.0 (LevelASM replacement)

SMW Patches → uberASM 1.2.0 (LevelASM replacement)

Submission Details

Name: uberASM 1.2.0 (LevelASM replacement)
Author: p4plus2
Version History: View
Tool: Asar
Requires Free Space: Yes
Bug Fix: No
Featured: Essential
Description: UberASM is a patch designed to be the successor of levelASM and OWASM. UberASM provides users with more hijacks and options, as well as making it easier for advanced ASMers to give users code that wouldn't work in ordinary levelASM. UberASM is designed to be fairly modular, and can be tweaked to suit the needs of the user.

Important hijacks supported by this patch are as follows:
*) Gamemode init/main - Adds code that runs prior to normal game mode execution. Init will run only once, every frame after main will run. This hijack also allows implementation of custom game modes.
*) Global hijack code - Will always run once at the start of EVERY frame.
*) Level init/main - Provides the original levelASM, but with the added ability to write to OAM mirror correctly.
*) NMI hijack - Provides a hijack in NMI to allow code that must run in V-Blank to run, some as graphics uploading.
*) OW init/main - Provides the functionality of OWASM with less confusion.
*) Sprite hijack - This is a special hijack which lets sprite upload a pointer to RAM to execute at the start of a frame.
*) Statusbar hijacks - Code that will run before and after SMW's status bar code, handy for custom statusbar tweaks.

See the README.txt for basic usage and upgrading from levelASM instructions.

This version fixes an incompatibility with a bunch of other patches.

This version corrects two bugs, see readme for details.

GHB's update: added sa-1 support.

2015/12/25 update: fix the gamemode error also fixed new game mode crashes.
2016/01/13: actually fixed some gamemode return address (again).
2016/06/15: actually fixed some gamemode return address (... ... once again). address in question is in hijacks/gamemode.asm line 16

RPG Hacker: added a "status bar drawn" hijack that is executed AFTER SMW's status bar instead of before.
Tags: levelasm lorom needs remoderation nmi owasm sa-1 sprites status bar uberasm
Comments: 13 (jump to comments)
Download 33.65 KiB | 2,851 downloads

Comments (13)

DedMeryo2008 Link
how do you work it?
FimishHACK Link
riki2321 Link
uberasmtool fucks up on me always so i use this :(
DiscoTheBat Link
Despite the function being specific as noted before, it is a really good addition for people who want to have more customization on status bar than before. Good work!
 RPG Hacker Link
You mean as in a late "level main"? That could work.

Alternatively, the original status bar hijack could be refactored to run at the end of the status bar routine instead. After all, the original idea behind that hijack was to allow the status bar to be tweaked, which is rather limited in functionality with the current version of uberASM (v1.1.1). The only reason I didn't do that is because I wasn't sure of all the implications that could have on version compatibility. As it currently stands, though, the current statusbar_code hijack is barely any different from a gamemode main or level main hijack, since it doesn't allow you to overwrite any status bar data those hijacks don't let you overwrite already, anyways, so in its current form, that hijack is mostly useless.

Changing sound effects and Mario's palette sounds useful enough to also warrant a late main hijack, though.
Akaginite Link
I think this feature is too specific.
so I suggest to add a late version of main label instead.
it hijack $00A5E8 because this address has been finished almost process.
it can change status bar, mute SFX, and change mario palette from $7E0D82.
 RPG Hacker Link
This version adds a "status bar drawn" hijack that is executed AFTER SMW's status bar instead of before. This gives you even more flexibility over status bar tweaks, since you can overwrite status bar values previously written by SMW's own status bar code, which allows you to overwrite things such as the timer, Yoshi coins, the score counter etc. The only place this would have previously been possible was in the NMI hijack, which would of course have come at the cost of precious NMI time. I considered replacing the original status bar hijack with this, but decided against it, since I'm not sure what caveats that would have in regards to compatibility with previous versions of the patch.

With the regular "status bar" hijack, you get something like this:

With the "status bar drawn" hijack, you get something like this:

This can be useful if you want to hide parts of the status bar in certain levels or use a specialized status bar for just a single level.
 RPG Hacker From older version: uberASM 1.1.1 (LevelASM replacement) Link
If I'm seeing this correctly, statusbar_code in statusbar_code.asm is executed before any of SMW's status bar code is executed. Wouldn't it make more sense the other way around? That way, a user of this patch could actually overwrite changes SMW's original code does to the status bar. For example: As a user, you could disable the status bar on a per-level basis or you could even write a specialized status bar for a single level.

Alternatively, since a few level modes don't even render the status bar, a new hijack could be added, called "on_status_bar_drawn". This code would be executed whenever SMW's status bar code is finished (might get skipped in level modes like $C1, depending on how it's implemented). This could be used to overwrite status bar values SMW's original code has just written.

I might add this hijack myself if people don't see a problem.
 Ersanio From older version: uberASM 1.1.1 (LevelASM replacement) Link
I don't know why but there's something fishy going on with the game mode code (I mean, there have been three updates regarding that by now). Please let me or the patch author know if custom game modes don't work again.
DiscoTheBat From older version: uberASM 1.1.1 (LevelASM replacement) Link
The gamemode is fixed now, but read the notes in README in order to not get confused by certain gamemodes that don't execute main but executes init. It isn't a bug at all, it is a quirk from SMW codes.
HammerBrother From older version: uberASM 1.1.1 (LevelASM replacement) Link
Warning, do not use this file! There is a bug with the gamemode, use this one instead: update
DiscoTheBat From older version: uberASM 1.1.1 (LevelASM replacement) Link
Removed xkas file, now it have full asar-only support.
HammerBrother From older version: uberASM 1.1.1 (LevelASM replacement) Link
Very useful if you wanted to add codes (and more patch compatability, due to more codes using the same hijack). However, if you want to replace something (like Mario's powerup system), you'll need to hijack that to replace