Language…
14 users online: AJ1Ayrton, Alewx_, Big Brawler, Connnnair, CourtlyHades296, Dephrilibrium, drkrdnk, dylanthebluekoopa, Green, Hidincuzimsmokin, Reese, TheMorganah, Tulip Time Scholarship Games, Ziz - Guests: 97 - Bots: 160
Users: 67,638 (1,996 active)
Latest user: Caina

UberASM Tool 2.0

Tools → UberASM Tool 2.0

Submission Details

Name: UberASM Tool 2.0
Authors: Fernap, Vitor Vilela
Added:
Version History: View
Operating System: Windows
Platforms: SNES
Games: SMW
Source Available: Yes
Featured: Essential
Website: Link
Description: This tool lets you insert level, overworld, game mode, status bar, sprite and global ASM without using a patch. See the read me for more details.

Version 2.0 update:
- Now supports multiple resources per level/overworld map/game mode
- A special level "*" is available to make resources run on all levels
- Adds a feature to let you specify extra bytes for resources
- A new "end:" label allows code to run at the end of a frame
- Shared routine support
- And more; see the readme and changelog for a full list

Version 1.6 changes:
- Reworded list.txt and replaced the INC $19 example code with one that does nothing, in order to prevent confusion for beginners. No changes are made to the tool itself.
(1.6 is an "unofficial" update submitted by wye - it adds some changes from the Github repo, but not all, and it doesn't correspond to any Github release. The next version will probably be an official one, based entirely on the repo.)

Version 1.5 changes:
- Fixed an in-game crash when using different NMI code combinations
- Refactored some core parts of the program, making it easier to
add improvements.
- Improved the way how the LM restore point information works in a
way that UberASM Tool will no longer concat its program information
more than once.
- Fixed incorrect extra byte 4 define used for PIXI sprites.
- Added BW-RAM definition which is used on SA-1 ROMs only.
- Fixed an application crash when accidentally including an empty
file.
Tags: conditional game mode global inserter level level asm library map16 nmi overworld sa-1 sprites status bar v-blank
Comments: 63 (jump to comments)
Rating:
3.8 (5 ratings)
No rating
Download 4.76 MiB | 11,752 downloads

Screenshots

View all

Comments (63)

 Koopster Link
Finally! Huge!
Nyako Link
IT'S OUT
 Atari2.0 Link
LGTM, tested with Windows 10 22H2 (OS Build 19045.4651).
This is a massive update with a lot of new features and as such breaks a very small number of current uberasm patches, however the README outlines the methods to fix these incompatibilities, which is ok.
HammerBrother Link
Originally posted by readme
Also unlike libraries, shared routines may call other shared routines freely


So on top of libraries can use the shared routines, you can do something you can't do with pixi and gps: have one subroutine ASM file call another subroutine ASM file. This limitation is very frustrating that you have to have multiple subroutines in one ASM file.
HammerBrother Link
 Fernap I see, I'd expect GM14_end to be run before any calculations to write to the SNES register at the end of the frame, didn't know it occurs after $008494. No need to check $13D4 then while using *.
HammerBrother Link
 Fernap Unless if you want to have a custom sprite status bar/HUD across levels.
 Fernap Author Link
Then you should use level * instead. Besides the issue with running while the game is paused that you already mentioned, gamemode end: code runs after the table of ------sx oam bits at $0420 gets converted to the one at $0400, which makes manipulation here significantly more difficult anyway.
HammerBrother Link
Upon testing this tool with the end: label for both level (level-specific) and gamemode14 (all levels), I notice there are differences regarding when the game is paused: For level end, this code is not executed, while in gamemode14's end, it is executed even when the game is paused.

Be careful and check RAM $13D4 if you are designing code that writes to OAM every frame on gamemode14 end that searches for free OAM slots, because it is possible that each frame, it will fill up the OAM table with duplicate tiles written on top of or underneath the previous frame's tiles, because the game does not clear OAM tiles at the start of the frame when paused. When too many OAM tiles are onscreen, this can cause sprite overdraw issues where a row of pixels for sprites fail to render.
 Fernap Author Link
There's very little reason to use gamemode 14 code, let alone for something that writes to OAM, so this is all kind of moot.
HammerBrother Link
Once this passes, I bet the uberasm tool section will be flooded with sprite-related stuff, such as HUD-related displays. The end: label makes this possible.
Nyako Link
🎉🎉🎉🎉🎉🎉🎉🎉
He-Kahn Link
Version 2.0 can add more ASM, for example for level 106 I can also add HDMA,Parallax Scroll but on different txt all in the same level?
KBY30 From older version: UberASM Tool 1.6 Link
for some reason, crashes on launch because it "could not parse list file", because it "doesn't exist", even though it does.
Correction: It seems like it just doesn't like ROMs that aren't named "SMW.smc", and aren't inside the same folder as UberASMTool.
HammerBrother From older version: UberASM Tool 1.6 Link
 Fernap
Originally posted by Uberasm tool - readme
Code
Another thing you have to keep in mind that every code must return
with RTL and not RTS. Data bank is set up automatically, *except*
for NMI code, global code and library calls, since they're called
directly from your code.


I should've been more specific and detailed on how I ran into this issue. Yes, I was using uberasm tool's library file when working on this.
HammerBrother From older version: UberASM Tool 1.6 Link
Be very careful when you are using 16-bit address indexing ($xxxx,x or $xxxx,y), as you need to use
Code
	PHB
	PHK
	PLB
	;[code here that uses $xxxx,x or $xxxx,y)]
	PLB

Because it may end up loading data from the wrong bank depending on how many times you reinsert the tool. When you insert the ASM codes, the inserted code can sometimes be at a different bank.
 Fernap Author From older version: UberASM Tool 1.6 Link
UberASM Tool already sets the DBR before calling resource labels (except for nmi), making this unnecessary. You do, however, need to do this (or use long addressing instead) for absolute addressing within a library file. And if you're following the instructions in the FAQ for combining resources, that takes this into account also.
 Koopster From older version: UberASM Tool 1.6 Link
Excited for the multiple files per level feature. Can we expect that anytime soon?
Burning Loaf From older version: UberASM Tool 1.6 Link
Shouldn't this be called 1.51 or something? I wouldn't expect such minor changes over a 1.6
wye From older version: UberASM Tool 1.6 Link
I asked Vitor and he suggested 1.6.
 Atari2.0 From older version: UberASM Tool 1.5 Link
Tested with:
Windows 10 21H2 (OS Build 19044.1826)
Lunar Magic 3.31
Pixi 1.32
GPS 1.4.3
AddmusicK 1.0.8
Tested on:
LOROM/SA-1 ROMs with multiple resources.
No conflicts or issues noticed. Works fine, also checked out changes in source code directly, nothing of remark was seen.
Toshi From older version: UberASM Tool 1.4 Link
Bom demais!
 Kevin From older version: UberASM Tool 1.4 Link
Originally posted by Xboy1282
How do you make multiple ASM's run at the same number? EX:
14 code.asm
14 code2.asm
Everytime I try to do it it gives an error saying "Number is already used."

That doesn't work, look https://www.smwcentral.net/?p=faq&page=1515827-uberasm here for a workaround.
Xboy1282 From older version: UberASM Tool 1.4 Link
How do you make multiple ASM's run at the same number? EX:
14 code.asm
14 code2.asm
Everytime I try to do it it gives an error saying "Number is already used."
Moddimation From older version: UberASM Tool 1.4 Link
hope dis'll work
Yoshioshi5959 From older version: UberASM Tool 1.4 Link
Is there any tutorial on this tool? I looked but couldn't find any.
luzikz2 From older version: UberASM Tool 1.4 Link
#smw{:TUP:}
 Blind Devil From older version: UberASM Tool 1.4 Link
During SMWCP2 development, I stumbled across a big issue: I found out that if we ever use the 'nmi' label in some overworld code and level code, the game will always crash when entering ANY level, regardless of using custom code or not.

So keep that in mind when you stumble across general level entrance crashes.

By the way, a workaround is to put your (OW or level NMI code, preferably OW) codes somewhere else (like global or gamemode) and run them there, using some comparison checks depending on your case and needs.
DTA450 From older version: UberASM Tool 1.4 Link
#smw{:TUP:}
Denicentek From older version: UberASM Tool 1.4 Link
why its not on MAC OS too
El Cuh Fermin From older version: UberASM Tool 1.4 Link
Still useful for HDMAs, and codes #smw{<3}
mish1 From older version: UberASM Tool 1.4 Link
good tool
CD20Superness From older version: UberASM Tool 1.4 Link
Dosen't work, I give it a low rating.
Ramenoodles From older version: UberASM Tool 1.4 Link
really good!
Ramenoodles From older version: UberASM Tool 1.4 Link
really good!
ShanghaiAlice From older version: UberASM Tool 1.4 Link
Great tool I used it easily when I dind't know too much about asm It's very simple to use!#lm{owsprlist}
Romano338 From older version: UberASM Tool 1.4 Link
Yeah that's so weird to insert 2 ASMs in a level. The tool is so simple that I always imagined it would insert them both if I just both 2 lines with the same level number.
I mean, once you know, it's not really hard. But weird.
errorgfx From older version: UberASM Tool 1.4 Link
Inserting Multiple ASMs in same level is somewhat hard.

I wish the tool could insert multiple ASMs easily.
SaltedSpoon From older version: UberASM Tool 1.4 Link
Ok, now this is epic
 Major Flare From older version: UberASM Tool 1.4 Link
Tested within: Windows 10 and batch files.

Worked fine, and I tested for checking the glitches it should fix. Therefore, accepted.
TheOrangeToad From older version: UberASM Tool 1.2 Link
work with LM 3.00?
TheOrangeToad From older version: UberASM Tool 1.3 Link
can I use uberasm tool 1.2 because you put a warming about v1.3
Klug From older version: UberASM Tool 1.3 Link
You forgot to update the tool, Vitor! #smw{-_-2}
Vitor Vilela Author From older version: UberASM Tool 1.3 Link
Will take a look.
HammerBrother From older version: UberASM Tool 1.3 Link
There is a strange bug that happens when I missed an endif in the defines and it causes a strange error with the incsrc and sometimes can crash the program.

image.
Here is my work causing it to happen.

The missing endif is in GraphicalBarDefines/StatusBarSettings.asm on line 17.
Vitor Vilela Author From older version: UberASM Tool 1.3 Link
Already works with LM 3.00!
TheOrangeToad From older version: UberASM Tool 1.3 Link
Uberasm 1.4 For LM 3.00
 Kevin From older version: UberASM Tool 1.3 Link
In version 1.3, when inserting patches the tool crashes when trying to compile the library files and gives this exception: "System.NullReferenceException: Object not set to an instance of an object".
Version 1.2 (with the same files) works fine instead.
Vitor Vilela Author From older version: UberASM Tool 1.3 Link
Warning: v1.3 is considered an unofficial release because it was submitted without updating the repo nor building by me. Use at your own risk.

Next version will skip this one.
MarioKart7z From older version: UberASM Tool 1.2 Link
My status bar code won't insert, UberASM keeps changing line 8 to "JSR status_bar_main" while it should be "JSR statusbar_main" and there's no way for me to stop it from changing it
exdeath From older version: UberASM Tool 1.2 Link
my UberASM tool does not work
Akutarex From older version: UberASM Tool 1.2 Link
Meu menino
 RPG Hacker From older version: UberASM Tool 1.2 Link
NOTE: Edited to update for Asar 1.50 support.
@LX5: It's still quite simple, actually, you were almost there. To do that, you need to not only update the Asar.dll, but also the Asar.cs file and then rebuild the application. Asar.cs is what binds to the DLL and checks for the correct version, so by updating that, it will take the newest version of Asar.
Alcaro From older version: UberASM Tool 1.2 Link
LDA !sprite_y_low,x
LDA !D8,x
chineesmw From older version: UberASM Tool 1.2 Link
How would the sprite defines work?

I've tried
Code
LDA sprite_y_low,x

and...
Code
LDA "D8",x

...in the the level.asm, although, neither worked.

Is there a way for the levelASM to affect sprites as well?
lx5 From older version: UberASM Tool 1.2 Link
I made a small change to a file because the tool was popping a lot of errors related to a misplaced endif. It's fixed now.
 RussianMan From older version: UberASM Tool 1.1 Link
It's not compatible with super FX chip :<? Or somebody just forgot tag and it's something wrong with me?
Romano338 From older version: UberASM Tool 1.1 Link
I wish there was real tutorials somewhere. Like, explaining you from the beginning, without considering you already know half of it
Final Theory From older version: UberASM Tool 1.1 Link
Damn bruh.
Klug From older version: UberASM Tool 1.1 Link
Vitor, you made my day feel better. You da real MVP, bruh.
MrKIVAYU02 From older version: UberASM Tool 1.1 Link
This is definitely complicated, but not impossible
HammerBrother From older version: UberASM Tool 1.1 Link
Lol:
Code
; Example code. Makes Mario crazy.

main:
	inc $19
	rtl


When fixing the super status bar code, and entering level 105, mario gets high.
Vitor Vilela Author From older version: UberASM Tool 1.1 Link
It's on website field.
HammerBrother From older version: UberASM Tool 1.1 Link
You forgot the source code link.