The baserom has a few useful features that are included either for quality of life reasons, are part of other features, or are there to help making levels easier.
There is framework of custom objects (built on ObjecTool) in the baserom to allow you to toggle or activate some simple utility features, but the UberASM Objects page goes into greater detail on this feature.
This is pretty self-explanatory: the baserom has been patched to save dragon (Yoshi) coins as they are collected, but only if a player reached a checkpoint or goal point. If you would like to reconfigure how dragon coins save, open "sram_tables.asm" found in the tools/uberasmtool/retry_config" and change !DragonCoinSaving = 1
to equal zero (0).
This patch has some other features that are not on by default, like changing the collected dragon coin into something else (you may have seen outline coins in other hacks) and those can be configured in the "dragon_coin_save.asm" file found in resources/patches/features.
As part of the retry system, there is a per-level sprite-tile-based status bar which allows you to display parts of the HUD while the vanilla layer 3 status bar is hidden and with layer 3 backgrounds, you can see it active in the Demo Level:
Currently it is a bit cumbersome to set-up but you can open the "sprite_status_bar_tables.asm" file found in the tools/uberasmtool/retry_config folder to edit some big option tables to enable or disable bits of the HUD for each level.
You will see a three big of tables: one for the Item Box labelled item_box
, one for the timer labelled timer
, and one for both normal and Yoshi coins labelled coins
all three filled with pre-defined flags. Each row of the table corresponds to level addresses, 16 per row starting at 00
, so if you would like to enable/disable part of the sprite status bar for a particular level you will have to change the flag set at each level's particular address.
You can add numerical values to the tables manually by following the instructions at the top of the ASM file but these flags are a baserom modification so you don't have to remember what value the baserom uses for each tile:
!itemb_tile
corresponds to the tile used for the item box, use this in the item_box
table.!timer_tile
corresponds to the tiles used for the timer, use this in the timer
table.!coins_tile
corresponds to the tiles used for the coins, use this in the coins
table.!no_display
don't display anything, can be used in all tables.!always_off
same as above but should always be left in place in the tables.Included in the baserom is an UberASM "safety mechanism" that clears all collected checkpoints (both midways and those given by the retry system) and saves the game when the player presses a key combo. This is to fix any save files and release the player from any potential checkpoint-related softlocks.
This UberASM runs on the overworld and can be invoked with the following key combo: L + R + Select. Pressing this will play a sound to indicate checkpoints have been cleared and the game has been saved.
If you would like to change the key combination you can do so by editing the "retry_clear_saved_cp.asm" in the tools/uberasmtool/library folder, keep in mind using either any of the face buttons (ABXY) in this combo while on the Overworld will enter a level.
If you would like to disable this feature, you can open "GM0E.asm" in the tools/uberasmtool/gamemode folder and add a semi-colon as done to the line you see below.
main: ;jsl retry_clear_saved_cp_main rtlFound in version 5.4 of baserom or later. (Runs in gamemode 14 in version 5.4).
If you are still using the Vanilla layer 3 status bar, and have retry enabled in a level (or project-wide) you'll see the following icon in the HUD:
If you would like to disable this, open "GM13.asm" in the tools/uberasmtool/gamemode folder and add a semi-colon as done to the line you see below.
main: ;jsl retry_indicator_main jsl retry_level_init_3_main rtl
Then run "Update" in Callisto to make the UberASM changes to your project.
Found in version 5.6 of baserom or later.