-
Notifications
You must be signed in to change notification settings - Fork 0
03 00 Configuration Overview
Sprint Boost is configured with simple text files named boost.toml.
If you are new to configuration files, that is okay. You do not need to be a programmer to use Sprint Boost.
Sprint Boost uses TOML format because it is readable and easy to organize.
- TOML official site: https://toml.io/en/
Sprint Boost reads configuration from two places:
-
Folder-level config: a
boost.tomlin a folder (for shared defaults) -
Game-level config: a
Game Name_boost.tomlfile (for one specific game)
Think of it like this:
- Folder-level config sets the starting rules for many games
- Game-level config applies game-specific changes on top
This lets you set common behavior once, then customize only what each game needs.
When both levels define the same setting, the game-level value wins.
- Folder-level = base/default behavior
- Game-level = override behavior for that game
This is why Quick Start can have shared controls, shared menus, and shared paths, while specific games still change layouts, hotkeys, or stats.
Sprint Boost is designed to keep running even when some optional config pieces are missing or not usable.
In practice, this means:
- If an optional image or layout detail is missing, Sprint Boost tries fallback behavior
- If a game-level file only overrides a few settings, everything else keeps using folder-level defaults
- If something in config is not applied, Sprint Boost generally continues instead of hard-failing the full game launch
This approach helps avoid "all-or-nothing" setups and makes iteration safer.
You will see a few patterns repeatedly:
-
Key/value:
enabled = true(a setting with one value) -
True/false value:
truemeans on,falsemeans off -
Table/block:
[display]groups related settings -
List/array:
keys = ["C1_ACTION_LEFT", "C1_ACTION_RIGHT"]stores multiple values
You do not need to memorize this all at once. The subpages below explain each system with examples.
At a high level, Sprint Boost merges folder-level and game-level configs.
When you override one setting inside a table, you usually only replace that one property.
Example idea:
- Folder-level default:
[display] default_layout = "fullscreen" - Game-level change:
[display] default_layout = "tot_layout"
Result:
-
default_layoutchanges for that game - Other
displaysettings from folder-level remain in effect unless also overridden
For list-style settings (especially ordered items), an override usually replaces that whole list section you define.
Example idea:
- Folder-level config defines a layout with multiple
elements - Game-level config wants a different image in that layout
Result:
- The game-level
elementslist becomes the active list for that layout - In practice, this means you usually redefine that layout’s full
elementslist for the game
Important practical note:
- For layout
elements, there is generally not an in-place "change just one property on existing element #N" behavior. - Example: if you want to change only one image
sourcein an inherited layout, you typically provide the game-level layoutelementslist you want Sprint Boost to use. - If you want to avoid replacing a shared layout, another approach is to define a game-specific layout name and switch to it.
Tip
If you only need small game-specific additions, prefer extending known menu/item slots or adding targeted overrides. If you need a very different behavior, replace the game-level list/table section directly.
A simple, reliable way to work:
- Start with folder-level defaults in
boost.toml - Launch and confirm shared behavior works
- Add game-level
*_boost.tomlonly where needed - Override only the sections that must be different
- Test on Sprint, then refine
Many string settings are case-sensitive and must use documented lowercase values.
Example (fails):
[[display.layouts.fullscreen.elements]]
type = "game"
x = "center"
y = "center"
width = 960
height = 720
aspect = "Force_4x3"Why it fails:
-
aspectexpects lowercase values likeforce_4x3,force_16x9,maintain, etc. -
"Force_4x3"has an uppercaseF, so it is not a valid value.
Correct:
aspect = "force_4x3"TOML booleans must be lowercase:
- valid:
true,false - invalid:
True,False,TRUE,FALSE
Token names are exact. A small typo leaves the value unresolved.
- valid example:
{gv.assets_images} - common typo:
{gv.asset_images}
If a path/text value does not resolve as expected, double-check token spelling first.
In TOML, after you open a table (for example [global_variables]), following keys are treated as part of that table until another table header is declared.
Example (problem):
[global_variables]
assets_path = "{usb_mount}/boosted/.boost_assets"
assets_fonts = "{assets_path}/fonts"
assets_images = "{assets_path}/images"
assets_palettes = "{assets_path}/palettes"
game_play_stats_path = "{usb_mount}/boosted/.play_stats/{game_file}.boostats.jsonl"
game_log_path = "{usb_mount}/boosted/.logs/{game_file}.log"
boost_mode = "enhanced"Why this is a problem:
-
boost_modeis a top-level setting, not aglobal_variablesentry. - In this position, TOML treats it as
global_variables.boost_mode.
Correct approach:
- Put top-level settings (like
boost_mode) before table blocks.
boost_mode = "enhanced"
[global_variables]
assets_path = "{usb_mount}/boosted/.boost_assets"
assets_fonts = "{assets_path}/fonts"
assets_images = "{assets_path}/images"
assets_palettes = "{assets_path}/palettes"
game_play_stats_path = "{usb_mount}/boosted/.play_stats/{game_file}.boostats.jsonl"
game_log_path = "{usb_mount}/boosted/.logs/{game_file}.log"After you declare a table like [display], keys in that block should use local names (for example default_layout), not fully qualified names.
Example (problem):
[display]
display.default_layout = "tc_layout"Why this is a problem:
- Inside
[display], the key should bedefault_layout. - Writing
display.default_layoutinside that same block creates the wrong nested path.
Correct:
[display]
default_layout = "tc_layout"Use these pages for each config system:
- 03 01 Config General
- 03 02 Config global_variables
- 03 03 Config logging
- 03 04 Config jzintv_flags
- 03 05 Config display
- 03 06 Config menus
- 03 07 Config hotkeys
- 03 07 Config maps
- 03 08 Config game_info
- 03 09 Config play_stats
- 03 10 Config cheats
- 03 11 Config Expressions
If you are unsure where to begin, start with:
- 02 1 Quick Start Base (working examples in action)
Then continue through the pages in order.