Global Retry Settings

Global settings are those Retry options that are used project-wide, these options must be in the retry_config/settings_global.asm file. To override any of these settings 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 Info 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 Info).

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:


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_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.
!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). $01-$FE: custom song number, $FF = do not use this feature.
You can find a suitable alt death jingle inside resources/amk/music (to be paired with the custom sfx: see AddmusicK Resources for details).
!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

Name Description
!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_speed How fast the prompt expands/shrinks. It must be a factor of 72.
!prompt_freeze
  • 0 = sprites and animations won't freeze when the prompt is shown.
  • 1 = sprites and most animations will freeze, but some animations will still play (for example, Magikoopa Magic's flashing).
  • 2 = sprites and all animations will freeze.
!prompt_cooldown Cooldown (max $7F) for disabling up/down 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 up/down.
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 Info page for details).
!no_prompt_box Set to 1 to remove the black box, but leave the options on screen.
Note: you can also change this on the fly (see RAM Info 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 for a minimalistic Retry, without having to use the instant option. You should also use !no_prompt_box = 1 or the black box 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).
!text_x_pos
!text_y_pos
X/Y position of the first tile in the prompt (the cursor on the first line). Changing this only works if the black box is disabled (if enabled, default values will be used instead).
Note: you can also change these on the fly (see RAM Info page for details).
!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 black box (use !no_prompt_box = 1).
!letter_palette
!cursor_palette
Palette row used by the letters and cursor (note: they use sprite palettes).
!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.

Sprite Tile Settings

Sprite tile number for the tiles used by the prompt ($00-$FF = SP1/SP2, $100-$1FF = SP3/SP4). These will be overwritten dynamically when the prompt needs to show up. The default values should be fine in most cases, unless you're using some other patch that reserves tiles in SP1, for example: Sprite Status Bar, 32x32 Player Tilemap, lx5's Custom Powerups, lx5's Dynamic Spriteset System. In this case you may need to change some of them to avoid other tiles being overwritten. You can see the tile number in LM's 8x8 Tile Editor, by taking the value you see in the bottom left - $400 (e.g., "Tile 0x442" → $42, "Tile 0x542" → $142). These aren't used if you don't use the Retry prompt or if !no_prompt_draw = 1.

Name Description
!tile_curs Sprite tile used for the cursor (note: if the prompt box is enabled, this uses two adjacent 8x8 tiles)
!tile_blk Sprite tile used for the black background (note: if the prompt box is enabled, this uses two adjacent 8x8 tiles)
!tile_r Sprite tile used for the "R" letter
!tile_e Sprite tile used for the "E" letter
!tile_t Sprite tile used for the "T" letter
!tile_y Sprite tile used for the "Y" letter
!tile_x Sprite tile used for the "X" letter (note: if the "Exit" option is disabled, this won't be used)
!tile_i Sprite tile used for the "Y" letter (note: if the "Exit" option is disabled, this won't be used)

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) calling the API routine "configure_sprite_status_bar" in your level/gamemode UberASM (see API documentation).
!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 configure_sprite_status_bar API routine (see API Information). If both !default_xxx_tile and !default_xxx_palette are $00, the item will be hidden by default.

Name Description
!default_item_box_tile Sprite tile number used by the item box by default
!default_item_box_palette Palette used by the item box by default
!default_timer_tile Sprite tile number used by the timer by default
!default_timer_palette Palette used by the timer by default
!default_coin_counter_tile Sprite tile number used by the coin counter by default
!default_coin_counter_palette Palette used by the coin counter by default
!default_lives_counter_tile Sprite tile number used by the lives counter by default (disabled by default).
!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)
!default_bonus_stars_tile Sprite tile number used by the bonus stars counter by default (disabled by default)
!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)

Elements Position Settings

Settings to change the position of all the sprite status bar elements on the screen.

Name Description
!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_x_pos X position on the screen to draw the timer
!timer_y_pos Y position on the screen to draw the timer
!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
!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_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
!bonus_stars_x_pos X position on the screen to draw the bonus stars counter
!bonus_stars_y_pos Y position on the screen to draw the bonus stars counter

Other Settings

Name Description
!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)

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 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.

Return to main page