Global Retry Settings

Global settings are those Retry options that are used project-wise, and they are found in the retry_config/settings_global.asm file. To override some of these settings on specific levels you can change the Local Settings.

Contents


Default Retry behavior Settings

Name Description
!default_prompt_type The default behaviour for the retry system.
  • 0 = Retry prompt & play the death song when players die (music restarts on every death).
  • 1 = Retry prompt & play only the death sfx when players die (music won't be interrupted).
  • 2 = Instant retry & play only the death sfx when players die (no prompt & music won't be interrupted)
  • 3 = Instant retry & play the death song when players die (no prompt & music restarts on every death).
  • 4 = No retry prompt/respawn (vanilla death).
Note: you can override this per sublevel (see Local Settings - %checkpoint) and also at any point by setting a certain RAM address (see RAM Map page for details).

Quality of Life Settings

Name Description
!initial_lives How many lives to start a new save file with.
!infinite_lives
  • 0 = Lives will decrement when dying.
  • 1 = Lives won't decrement when dying.
Note: if 0, you can choose to have infinite lives in specific sublevels (see Local Settings - %no_lose_lives).
!midway_powerup
  • 0 = Midways won't give Mario a mushroom.
  • 1 = Vanilla midway powerup behavior.
Note: you can also change this on the fly (see RAM Map).

Counterbreak Settings

Options reset the corresponding counters/items when the player dies and/or when going to the Overworld. Useful for Kaizo and collab hacks.

Name Description
!counterbreak_yoshi Removes Yoshi.
!counterbreak_powerup Removes power up state from Mario.
!counterbreak_item_box Clears any power-up in the player's Item Box.
!counterbreak_coins Resets the coin counter to zero.
!counterbreak_bonus_stars Resets the Bonus Stars counter to zero.
!counterbreak_score Resets the player's score to zero.
!counterbreak_lives Resets the player's lives to !initial_lives.

Each counterbreak option can have one of these values:

Note that the "going to the Overworld" setting will be applied when going from one main level to the next if the "No Overworld" UberASM is used.

Quality of Life Fixes Settings

Name Description
!fast_transitions If 1, level transitions will be much faster than usual.
!initial_facing_fix If 1, it fixes the issue where some sprites don't face Mario when entering a level for the first time. It's suggested to enable the fix to make sprite behavior consistent between the first and all the next level reloads.
!time_up_fix If 1, it fixes the issue where dying in a level with the timer set to 0 shows the "TIME UP!" message when exiting the level.
!item_box_fix If 1, it fixes the issue where you can drop the reserve item in the item box by pressing Select while Mario is dying or while the Retry prompt is shown.
!no_yoshi_intro_fix If 1, it fixes the weird behavior where levels 12E-13B always use the "No Yoshi Sign 2" intro regardless of the tileset / custom "No Yoshi Intro" patches.
!disable_hurry_up If 1, it removes the "Hurry up!" SFX and tempo hike effect that happens when reaching 100 seconds on the timer. If not disabled, the death song will be played when dying during the tempo hike effect (regardless of the settings), to reset the tempo of the song after respawning.
!pipe_entrance_freeze This controls whether to freeze sprites during a level's pipe entrance (it doesn't affect other entrance types).
  • 0 = don't freeze
  • 1 = freeze (recommended)
  • 2 = vanilla: freeze only if sprites were frozen when exiting the previous room (e.g. if you entered a pipe, but not if you entered a door). This can be inconsistent if exiting and re-entering the level.
!always_start_select If 1, Start+Select out of a level is always possible. Otherwise, it's only possible with the instant Retry option, or with the Retry prompt with the "EXIT" option disabled, or if the level is already beaten like vanilla.
!death_camera_lock If 1, the camera won't scroll vertically during Mario's death animation.
!reset_dsx If 1, DSX (dynamic) sprites status is reset on level load.
!reset_rng This determines the global behavior of Retry for RNG resetting. Note that this can be changed for each sublevel (see Local Settings - %reset_rng).
  • 0 = RNG will never be reset.
  • 1 = RNG will only be reset when entering a level from the Overworld (vanilla behavior).
  • 2 = RNG will be reset when dying and Retrying a level and when entering it from the Overworld (old Retry default behavior).
  • 3 = RNG will be always reset (also when going through a sublevel with a door/pipe).
Note that if !use_legacy_tables = 1, this option is ignored and you need to edit the reset_rng table in legacy/tables.asm.
!reset_boo_rings This determines what happens when you die on the title screen.
  • 0 = vanilla (Boo Rings will retain the previous positions, not recommended for Kaizo).
  • 1 = reset Boo Rings positions on death.
  • 2 = reset Boo Rings positions on death and on level load.
!reset_frame_counters If 1, the frame counters will be reset on each level load, making things like animations and certain sprites' behaviors (like Puntin' Chucks throw timing) more consistent between level attempts.
!title_death_behavior This determines what happens when you die on the title screen.
  • 0 = vanilla (after dying a glitched version of the title screen will load, causing a softlock. Use this if you either don't care or want to do something custom with it.)
  • 1 = play vanilla death animation and reload title screen (note: death music only works with AddmusicK!).
  • 2 = instantly reload the title screen.
  • 3 = instantly reload the title screen and play the death music (title screen music will restart).

Sound Effects Settings

Name Description
!death_sfx
!death_sfx_addr
SFX to play when dying (!death_sfx = $00 → no SFX). Only played if the death song is skipped (for example, it's not played if the level uses vanilla death, but it is played when Retry is enabled).
You can find a suitable death sfx inside resources/amk/sfx (see AddmusicK Resources for details).
!death_jingle_alt The alternative death jingle which will be played after the !death_sfx when "EXIT" is chosen in the prompt (only available when you're using AddmusicK).
To use it, insert the alternative death jingle with AddmusicK (you can find a suitable alt death jingle inside resources/amk/music), then you set this option to the song number you inserted it as. If this is $FF, the alternative death jingle is not used.
See AddmusicK Resources for more information.
!option_sfx
!option_sfx_addr
SFX to play when selecting an option in the prompt (!option_sfx = $00 → no SFX).
!cursor_sfx
!cursor_sfx_addr
SFX to play when the prompt cursor moves (!cursor_sfx = $00 → no SFX).
!room_cp_sfx
!room_cp_sfx_addr
SFX to play when getting a checkpoint through a room transition (!room_cp_sfx = $00 → no SFX). This is meant as a way to inform the player that they just got a room checkpoint.
If enabled, you can disable it in specific sublevels: see Local Settings - %no_room_cp_sfx.
!enter_level_sfx
!enter_level_sfx_addr
!enter_level_delay
SFX to play when entering a level from the Overworld (!enter_level_sfx = $00 → no SFX) similarly to what SMB3 does. If the SFX gets cut out, increase !enter_level_delay.
!default_sfx_echo This controls the default SFX echo option for all levels and what the Local Settings - %sfx_echo option does.
  • 0 = sfx echo is disabled in every sublevel by default, and using %sfx_echo will enable the sfx echo for the specific sublevel.
  • 1 = sfx echo is enabled in every sublevel by default, and using %sfx_echo will disable the sfx echo for the specific sublevel.
Note: this is irrelevant if not using AddmusicK.
Note: !default_sfx_echo = 1 has no effect if !use_legacy_tables = 1 (see Misc settings).

Save and SRAM Settings

Name Description
!sram_feature If 1, a custom SRAM expansion patch will be inserted as well. By default, it will save the custom checkpoint status and death counter to SRAM. To make your own stuff saved as well, check out the SRAM Tables.
Note that this is incompatible with the SRAM+ or BW-RAM+ patches: if they are detected, it will be disabled automatically. Check out SRAM & BW-RAM Info for details.
!save_on_checkpoint If 1, the game will automatically save everytime a new checkpoint is obtained (when touching a midway or getting a cp on a room transition). If using this, make sure there's no softlocks (for example, a level is unbeatable from one of the checkpoints).
!save_after_game_over If 1, the game will automatically save after getting a game over. This can be useful when paired with the option of not reloading some data from SRAM after a game over (see SRAM Tables for info), if you want some things to retain even if the player got a game over before saving them (for example, the death counter). This ensures that they will be saved to SRAM when this happens.

Custom Midways Settings

Name Description
!use_custom_midway_bar If 1, Retry will install a custom midway object in the ROM, insertable in levels by using object 2D. These objects allow you to have multiple midways in the same level, each with a different entrance.
For more info on how to use them, check out Midway Instructions page.
This can be used alongside ObjecTool, but you'll need to modify that patch a bit (see the ObjecTool Info page for details).
!max_custom_midway_num If !use_custom_midway_bar = 1, this setting determines how many custom midways you can have in the same sublevel. The more you set, the more free ram is needed (4 bytes for each).

Retry Prompt Settings

General Settings

General settings for the Retry prompt behavior, that apply for both types of Retry prompt. Note: if you're looking to customize the prompt GFX usage or appearance, look at Prompt Tilemap Settings.

Name Description
!prompt_type
  • 0 = prompt box (box in the middle of the screen with vertical options). For options related to this type, see Prompt Box Settings.
  • 1 = prompt bar (customizable bar with horizontal options). For options related to this type, see Prompt Bar Settings.
!fast_prompt If 1, the prompt will show up immediately after dying. Otherwise, it will show up halfway through (or right after, depending on !retry_death_animation) the death animation, but pressing A/B during it will skip the animation.
!retry_death_animation
  • 0 = don't play the death animation when using instant Retry or prompt Note: for Retry prompt, part of the death animation still plays if not using !fast_prompt
  • 1 = play the full death animation before showing the Retry prompt (note: make sure !fast_prompt = 0)
  • 2 = play the full death animation before reloading the level with instant Retry
  • 3 = play the full death animation in both cases (effects 1 and 2)
!prompt_show_delay How many frames after dying the prompt shows up when using !fast_prompt = 0 and !retry_death_animation = 0.
!prompt_freeze
  • 0 = sprites and animations won't freeze when the prompt is shown.
  • 1 = sprites and animations will freeze when the prompt is shown.
!prompt_cooldown Cooldown (max $7F) for disabling directional inputs when the prompt shows up, which prevents selecting the "EXIT" option for a few frames. Can be useful to prevent accidentally pressing "EXIT" when dying while pressing other buttons.
Set to $00 to disable this.
!exit_animation This controls what happens when hitting "EXIT" on the Retry prompt. Note: when dying before going to Game Over, the vanilla animation will be always played regardless.
  • 0 = exit the level immediately and don't play the death music (except when the level music is sped up).
  • 1 = exit the level immediately and play the death music (note that the vanilla song will be cut short).
  • 2 = play the death animation and music, then exit the level.
!no_exit_option Set to 1 if you don't want the "EXIT" option in the prompt. This will also allow the player to Start+Select when having the prompt.
Note: you can also change this on the fly (see RAM Map page for details).
!no_prompt_bg Set to 1 to remove the black background, but leave the options on screen.
Note: you can also change this on the fly (see RAM Map page for details).
!dim_screen Set to 1 to dim the screen while the prompt is shown.
!brightness Only used if !dim_screen = 1. Can go from 0 to 15: 15 = max brightness, 0 = black.
!exit_button
!exit_button_address
This defines a button that will count as hitting "EXIT" on the menu while the prompt is shown. It could be handy if you disabled the exit option, but still want a quick way of exiting the level. By default it's "Select".
Set !exit_button = $00 to disable this.
For more information on these values, see $7E0016 on the SMWCentral RAM Map.
!no_prompt_draw If 1, the Retry prompt won't be drawn to the screen (but still function normally). Use this to have the most minimalistic Retry, without having to use the instant Retry option. You should also use !no_prompt_bg = 1 or the black background will still appear (also you probably want !no_exit_option = 1). Note that this renders all the prompt options below useless (and no sprite GFX space needs to be reserved).
!cursor_setting
  • 0 = the cursor is static
  • 1 = the cursor blinks like in vanilla menus
  • 2 = the cursor oscillates slowly right and left
!cursor_oscillate_speed How fast the cursor oscillates (only used when !cursor_setting = 2) Higher = slower. Possible values: 0 to 5.
!prompt_wave
!prompt_wave_speed
If !prompt_wave = 1, the letters in the option selected on the Retry prompt will wave up and down. The speed is determined by !prompt_wave_speed. Possible values: 0 to 5 (0 = fastest, 5 = slowest).
Note: this is incompatible with the prompt black background, as it will cause cutoff (use !no_prompt_bg = 1).
!no_score_sprites_on_death If 1, score sprites (points, 1-Up) will be removed when dying, if Retry prompt is enabled in the level. This can be used to replace their graphics ($29, $38-$39, $44-$47, $54-$57) with the Retry prompt tiles instead of having to reserve sprite tiles for the prompt.

Prompt Box Settings

These options only apply when using the prompt box (!prompt_type = 0).

Name Description
!prompt_box_text_x_pos
!prompt_box_text_y_pos
X/Y position of the first tile in the prompt box (the cursor on the first line). If the black box is enabled, you should not change the Y position or it will look glitched, but you're free to change the X position down to $38.
Note: you can also change these on the fly (see RAM Map page for details).
!prompt_box_exit_y_offset Y offset of the prompt "EXIT" line from the "RETRY" line.
Note: only change this with !no_prompt_box = 1, or the prompt will look glitched.
!prompt_box_speed How fast the prompt expands/shrinks (it must evenly divide 72).

Prompt Bar Settings

These options only apply when using the prompt bar (!prompt_type = 1).

Name Description
!prompt_bar_position
!prompt_bar_size
Vertical position and size of the prompt bar when fully expanded.
Note: make sure that the bar stays within the screen: in practice, !prompt_bar_position must be between 0 and $E0 and !prompt_bar_position + !prompt_bar_size must be less than or equal to $E0.
!prompt_bar_direction
  • 0 = the bar grows towards the bottom
  • 1 = the bar grows towards the top
  • 2 = the bar grows from the middle in both directions
!prompt_bar_text_x_pos
!prompt_bar_text_y_pos
X/Y position of the first tile in the prompt bar (the cursor on the left line).
Note: avoid to put it at the very top or bottom of the screen (!prompt_bar_text_y_pos < $08 or !prompt_bar_text_y_pos > $D0) or the text won't be visible on some TVs.
Note: if using !no_prompt_bg = 0, make sure that the Y position is within the bounds of the bar (!prompt_bar_text_y_pos must be greater ot equal than !prompt_bar_position and less than or equal than !prompt_bar_position + !prompt_bar_size - 8).
Note: you can also change these on the fly (see RAM Map page for details).
!prompt_bar_exit_x_offset X offset of the prompt "EXIT" word from the "RETRY" word.
!prompt_bar_speed How fast the prompt expands/shrinks (it must evenly divide !prompt_bar_size, and if !prompt_bar_direction = 2 then it also must be even).

Sprite Status Bar Settings

Settings for the sprite status bar that comes with the Retry system.

General Settings

Name Description
!sprite_status_bar If 1, a sprite status bar will be installed allowing you to display the item box, coin/Yoshi coin counter and timer in levels with sprites, which keeps layer 3 working properly. The sprites use dynamic tiles, meaning you'll need to reserve some GFX space in your SP slots for them. Item box, coins and timer use one 16x16 tile each, but they only need to be reserved when actually using them, and you can choose which tiles to use for each level (or to just disable any or all of them in specific levels) using the Local Settings - Configure Sprite Status Bar).
!remove_vanilla_status_bar If 1, it disables the original game's status bar (including the IRQ) which prevents layer 3 from messing up. Differently than the normal remove status bar patch, this keeps the status bar functions (lives, coins, bonus stars, score, timer, reserve item) running in the background. Suggested to use if you're using !sprite_status_bar = 1. Don't use this if you're using similar patches such as "RAM Toggled Status Bar".

Tile and Palette Settings

The following settings are only relevant if !sprite_status_bar = 1.

Default sprite tile and palette to use for each element in the status bar. These settings can be overridden per-level by using the Local Settings - Configure Sprite Status Bar. If both !default_xxx_tile and !default_xxx_palette are $00, the item will be hidden by default.

Note that since the elements are loaded at runtime in VRAM, you need to reserve graphics space for each one that is enabled. The specifics of how much space each one takes is described in the table. If you don't want to reserve space globally (in SP1/2), you can choose to use the local settings to reserve different tiles in each level depending on what is unused there (you can even choose to put them in SP3/4 by adding $100 to the tile number).

Element Name Description
Item box !default_item_box_tile Sprite tile number used by the item box by default. This uses 4 8x8 tiles, arranged as a 16x16 box (except if !8x8_item_box_tile = 1, in which case it only uses 1 8x8 tile).
!default_item_box_palette Palette used by the item box by default
Timer !default_timer_tile Sprite tile number used by the timer by default. This uses 4 8x8 tiles, arranged as a 16x16 box.
!default_timer_palette Palette used by the timer by default
Coins !default_coin_counter_tile Sprite tile number used by the coin counter by default. This uses 4 8x8 tiles, arranged as a 16x16 box.
!default_coin_counter_palette Palette used by the coin counter by default
Lives !default_lives_counter_tile Sprite tile number used by the lives counter by default (disabled by default). This uses 3 8x8 tiles, arranged as a 16x16 box with the top right corner unused (you can use it for your own stuff).
!default_lives_counter_palette Palette used by the lives counter by default (the included GFX is tailored for vanilla palette 9, using the berry colors)
Bonus stars !default_bonus_stars_tile Sprite tile number used by the bonus stars counter by default (disabled by default). This uses 3 8x8 tiles, arranged as a 16x16 box with the top right corner unused (you can use it for your own stuff).
!default_bonus_stars_palette Palette used by the bonus stars counter by default (the included GFX is tailored for vanilla palette 9, using the berry colors)
Deaths !default_death_counter_tile Sprite tile number used by the death counter by default (disabled by default). This uses 6 8x8 tiles, arranged as a 24x16 box.
!default_death_counter_palette Palette used by the death counter by default

Position Settings

With these settings you can customize the position on the screen of each sprite status bar element (icons and counters independently), and also enable or disable an "X" tile next to the counters for those applicable (similarly to the vanilla status bar).

Element Name Description
Item box !item_box_x_pos X position on the screen to draw the item box
!item_box_y_pos Y position on the screen to draw the item box
Timer !timer_icon_x_pos X position on the screen to draw the timer icon
!timer_icon_y_pos Y position on the screen to draw the timer icon
!timer_X_enabled If 1, the "X" tile is drawn together with the timer
!timer_X_x_pos X position on the screen to draw the timer "X" tile
!timer_Y_x_pos Y position on the screen to draw the timer "X" tile
!timer_counter_x_pos X position on the screen to draw the timer counter
!timer_counter_y_pos Y position on the screen to draw the timer counter
!timer_counter_right_align The alignment determines where the timer counter is drawn when there's less digits to draw (because of leading 0s). If 1, the timer counter is right aligned, otherwise it is left aligned
Coins !coin_icon_x_pos X position on the screen to draw the normal coin icon
!coin_icon_y_pos Y position on the screen to draw the normal coin icon
!coin_X_enabled If 1, the "X" tile is drawn together with the coin counter
!coin_X_x_pos X position on the screen to draw the coin counter "X" tile
!coin_Y_x_pos Y position on the screen to draw the coin counter "X" tile
!coin_counter_x_pos X position on the screen to draw the normal coin counter
!coin_counter_y_pos Y position on the screen to draw the normal coin counter
!coin_counter_right_align The alignment determines where the coin counter is drawn when there's less digits to draw (because of leading 0s). If 1, the coin counter is right aligned, otherwise it is left aligned
Dragon coins !dc_counter_x_pos X position on the screen to draw the Dragon/Yoshi coin counter
!dc_counter_y_pos Y position on the screen to draw the Dragon/Yoshi coin counter
Lives !lives_icon_x_pos X position on the screen to draw the lives icon
!lives_icon_y_pos Y position on the screen to draw the lives icon
!lives_X_enabled If 1, the "X" tile is drawn together with the lives counter.
!lives_X_x_pos X position on the screen to draw the lives counter "X" tile.
!lives_Y_x_pos Y position on the screen to draw the lives counter "X" tile.
!lives_counter_x_pos X position on the screen to draw the lives counter
!lives_counter_y_pos Y position on the screen to draw the lives counter
!lives_counter_right_align The alignment determines where the lives counter is drawn when there's less digits to draw (because of leading 0s). If 1, the lives counter is right aligned, otherwise it is left aligned
Bonus stars !bonus_stars_icon_x_pos X position on the screen to draw the bonus stars icon
!bonus_stars_icon_y_pos Y position on the screen to draw the bonus stars icon
!bonus_stars_X_enabled If 1, the "X" tile is drawn together with the bonus stars counter.
!bonus_stars_X_x_pos X position on the screen to draw the bonus stars counter "X" tile.
!bonus_stars_Y_x_pos Y position on the screen to draw the bonus stars counter "X" tile.
!bonus_stars_counter_x_pos X position on the screen to draw the bonus stars counter
!bonus_stars_counter_y_pos Y position on the screen to draw the bonus stars counter
!bonus_stars_right_align The alignment determines where the bonus stars counter is drawn when there's less digits to draw (because of leading 0s). If 1, the bonus stars counter is right aligned, otherwise it is left aligned
Deaths !death_icon_x_pos X position on the screen to draw the deaths icon
!death_icon_y_pos Y position on the screen to draw the deaths icon
!death_X_enabled If 1, the "X" tile is drawn together with the death counter.
!death_X_x_pos X position on the screen to draw the death counter "X" tile.
!death_Y_x_pos Y position on the screen to draw the death counter "X" tile.
!death_counter_x_pos X position on the screen to draw the deaths counter
!death_counter_y_pos Y position on the screen to draw the deaths counter
!death_counter_right_align The alignment determines where the death counter is drawn when there's less digits to draw (because of leading 0s). If 1, the death counter is right aligned, otherwise it is left aligned

Other Settings

Name Description
!X_tile Tile number to use for the "X" tile (single 8x8).
!X_palette Palette to use for the "X" tile.
!always_draw_box If 1, the item box will always be drawn (if set to be drawn for the specific level). Otherwise, it will only be drawn when having an item in reserve.
!8x8_item_box_tile If 1, the item box will use an 8x8 tile instead of a 16x16 tile.
!draw_all_dc_collected If 1, when collecting all DCs in a level they'll be displayed in the status bar. If 0, they won't be displayed (like in vanilla).
!default_coin_counter_behavior Changes which of the coin counter elements are drawn by default (assuming !default_coin_counter_tile and !default_coin_counter_palette enable these counters to be drawn):
  • 0 = draw both coins and dragon coins by default
  • 1 = don't draw coins by default (only dragon coins)
  • 2 = don't draw dragon coins by default (only coins)
!draw_leading_zeroes If 1, leading zeroes in the counters will be drawn. Note that this renders all the !xxx_align_right options useless (since all digits are always drawn, the alignment does not matter).

Retry Indicator Settings

Name Description
!draw_retry_indicator If 1, an 8x8 indicator will be drawn on the sprite status bar in levels where Retry prompt or instant Retry is enabled. This could be useful for collabs. The other settings control how and where it is drawn. The tile you choose will be overwritten at runtime by the indicator tile when needed.
!retry_indicator_tile Location to uploade the tile in VRAM. (Default SP1)
!retry_indicator_palette Sprite palette number used by the retry indicator tile.
!retry_indicator_x_pos X position on the screen to draw the indicator.
!retry_indicator_y_pos Y position on the screen to draw the indicator.

Death Counters Settings

Name Description
!status_death_counter If 1, a death counter will replace the lives on the vanilla status bar.
!status_death_word If 1, the "DEATHS" word will replace Mario's name on the vanilla status bar. If you want to customize the text or its palette, look in retry_config/code/hijacks/death_counter.asm.
!ow_death_counter If 1, a death counter will be written to the Overworld border. Note: this only handles the counter, if you want other stuff like "DEATHS" appear, use LM's layer 3 editor.
!ow_death_counter_x_pos Tile X position of the death counter on the Overworld.
!ow_death_counter_y_pos Tile Y position of the death counter on the Overworld.
!ow_death_counter_props YXPCCCTT properties of the death counter on the Overworld, configured as l3_prop(6,1). The first digit is the palette number, the second is the GFX page number (0 or 1).

Misc Settings

Name Description
!use_legacy_tables If 1, the level-specific Retry settings will be loaded from the legacy/tables.asm file instead of the settings_local.asm file. Use this if you prefer the old table-based approach rather than the new macro-based approach.