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.
The baserom comes with an UberASM version of the Retry System that performs better and has more features than the Asar patch version you can get from SMW Central. You can read more about the retry system in its included documentation in docs/retry_system.
The retry system is configured to use vanilla death routine globally but different retry types can be set per-level with UberASM Objects.
To change the Retry System's global settings you can edit its configuration files in tools/uberasmtool/retry_config.
settings.asm
– Change the global settings for the retry system.tables.asm
– Several options tables for changing per-level settings.sprite_status_bar_tables.asm
– More configuration tables for displaying the sprite status bar items.After making changes to any of the above, run "Update" in Callisto to insert the UberASM changes in your project.
A feature of the retry system a custom checkpoint that you can insert into levels to allow for more than just the single vanilla midpoint. You can read more about it in the included documentation
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.
; Gamemode 0E - Overworld main: jsl ow_auto_save_main ;jsl retry_clear_saved_cp_main rtlFound in version 5.4 of baserom or later. (Runs in gamemode 14 in version 5.4).
The baserom has a supplementary feature to the retry system that can display an indicator in the HUD in levels that have quick retry enabled. This was included to be useful to projects that may have a mix of retry types among levels or for collaboration hacks.
The indicator can be enabled with an UberASM object and once enabled it will appear in the status area in one of two ways:
This feature has a number of configuration options, if you would like to change how it displays you can edit the "retry_indicator.asm" in the tools/uberasmtool/library folder.
Found in version 5.6 of baserom or later. Sprite tile indicator in version 5.7 or later.The baserom has a basic UberASM feature to autosave the game when you return to or move Mario on the overworld. If you would like to disable this feature, you can open "GM0E.asm" in the tools/uberasmtool/gamemode folder and add a semi-colon to the line you see below.
; Gamemode 0E - Overworld main: ;jsl ow_auto_save_main jsl retry_clear_saved_cp_main rtlFound in version 5.8 of baserom or later.