-
Notifications
You must be signed in to change notification settings - Fork 0
02 7 Quick Start AD&D Treasure of Tarmin
This page explains the game-level setup used for AD&D - Treasure of Tarmin.
{usb_root}\boosted\AD&D - Treasure of Tarmin_boost.toml
This example now shows a fuller Sprint Boost game profile built on top of the base config:
- a game-specific HUD layout used as the default view
- live
game_infovalues turned into on-screen item and combat displays -
expressionvalues used to clean up raw memory into user-friendly HUD values - a journal overlay that mixes live values and saved play stats
- field-guide layouts that still exist, but now act as a secondary reference layer instead of the main feature
- a game-specific palette and font treatment for stronger theme matching
The key idea is that this config is no longer just a side reference panel. It uses Sprint Boost to make the whole play experience feel tailored to Treasure of Tarmin.
This profile still starts with game-specific presentation choices:
[jzintv.flags]
gfx-palette = "{gv.assets_palettes}/tot_palette.txt"
[display]
default_layout = "tot_hud_layout"
font_path = "{gv.assets_fonts}/Snow White.ttf"What this does:
- applies a Tarmin-specific palette
- switches the game into its custom HUD layout by default
- uses a themed font instead of the shared base font
This is a good example of a profile that wants to feel like its own package rather than just a lightly customized base setup.
Treasure of Tarmin uses frequent game_info updates:
[game_info]
poll_ms = 1000Why this matters here:
- the HUD is showing equipment, combat, supplies, and treasure in near real time (but ok if it isn't immediate)
- a higher polling rate can negatively impact performance
This is a good fit for HUD-heavy profiles where the display is reacting constantly to what the player is doing.
The new default layout is tot_hud_layout.
At a high level, that layout does three things:
- places the live game view on the right using
integer_scale - builds a custom bezel and HUD around it with themed artwork
- fills that HUD with live equipment and stat values pulled from memory
Representative example:
[display.layouts."tot_hud_layout"]
background_color = "#632d2d"
font_path = "{gv.assets_fonts}/immortal.ttf"
[[display.layouts."tot_hud_layout".elements]]
type = "game"
x = { anchor = "right", offset = 0 }
y = { anchor = "top", offset = 0 }
width = 960
height = 600
aspect = "integer_scale"
[[display.layouts."tot_hud_layout".elements]]
type = "image"
source = "{gv.assets_images}/tot_hud/item_{gi.item_left_hand}.png"
[[display.layouts."tot_hud_layout".elements]]
type = "image"
source = "{gv.assets_images}/tot_hud/item_{gi.item_right_hand}.png"
[[display.layouts."tot_hud_layout".elements]]
type = "text"
text = "{gi.arrow_count}"
[[display.layouts."tot_hud_layout".elements]]
type = "text"
text = "{gi.food_count}"
[[display.layouts."tot_hud_layout".elements]]
type = "text"
text = "{gi.treasure}"What makes this layout different from simpler examples:
- item art is swapped dynamically based on live inventory slots
- food, arrows, and treasure are always visible in the HUD itself
- equipped gear and pack contents are shown as images rather than only text
- the gameplay area uses integer scaling, which helps keep the game view crisp while the surrounding HUD art does the decorative work
This is one of the strongest examples in the wiki of using Sprint Boost as a real in-game HUD layer, not just an overlay panel.
This profile now uses expression values heavily.
That is important because some of the raw game values are not ready to display directly. Expressions are used to convert those low-level values into friendlier numbers and conditional text.
Representative examples:
[expression.int.item_war_score]
sum = [
{ mul = [{ expression.int = "war_score_tens_digit" }, 10] },
{ expression.int = "war_score_ones_digit" }
]
[expression.bool.is_combat]
and = [
{ gt = [{ game_info = "monster_war_strength" }, 0] },
{ gt = [{ game_info = "monster_spiritual_strength" }, 0] }
]
[expression.string.monster_name_text]
if = [
{ expression.bool = "is_combat" },
{ gil = "item_one_step_ahead" },
""
]How expressions are being used here:
- reconstructing readable equipment scores from separate memory digits
- adjusting raw item values so they match the correct artwork filenames
- hiding monster text when the player is not currently in combat
- turning item IDs into readable labels for nearby monsters
This is the main new concept the older wiki page did not cover well enough. The profile is no longer just displaying raw {gi.*} values. It is shaping game memory into cleaner player-facing information first, then displaying the result.
The profile keeps a tot_journal layout and adds a pause-menu item to toggle it:
[menu.menus.pause.item8]
label = "Show/Hide Journal"
action = { command = "toggle_layout", layout = "tot_journal" }The journal itself is a good example of mixing two kinds of information:
- current live state such as current treasure
- tracked run history such as food consumed, rests taken, highest equipped item scores, and largest monster encountered
Representative example:
[[display.layouts."tot_journal".elements]]
type = "text"
text = "{ps.dungeon_levels_explored}"
[[display.layouts."tot_journal".elements]]
type = "text"
text = "{ps.food_consumed}"
[[display.layouts."tot_journal".elements]]
type = "text"
text = "{ps.item_highest_war_score_equipped}"
[[display.layouts."tot_journal".elements]]
type = "text"
text = "{gi.treasure}"Why this is useful:
- the HUD helps while playing moment to moment
- the journal gives a summary-style view of the run
- the player can open it when useful instead of always dedicating screen space to long-term stats
This is a strong pattern for games where some information is important in the moment and some is more valuable as session history.
Play stats are still saved manually, but the tracked set is broader now:
[play_stats]
enabled = true
stats_file = "{gv.game_play_stats_path}"
auto_save_quit = false
auto_save_reset = false
[play_stats.players.p1.tracked.war_damage_taken]
game_info = "war_strength"
mode = "amount_decrease"
[play_stats.players.p1.tracked.largest_monster_war_strength]
game_info = "monster_war_strength"
mode = "peak"
[play_stats.players.p1.tracked.item_highest_war_score_equipped]
expression.int = "item_war_score"
mode = "peak"Important ideas in this version:
- play stats are not only for persistence, they are also part of the presentation layer
- tracked values now include damage taken, deepest progress, strongest monsters seen, and best equipped item scores
- some tracked stats come directly from
game_info, while others come fromexpressionresults
That last point is especially important: this profile shows that once expressions exist, play stats can track cleaned-up derived values instead of only raw memory fields.
The older version of this page focused heavily on field-guide layouts. Those layouts still exist and are still useful.
Examples include:
tot_generaltot_war_weaponstot_armortot_spiritualtot_containerstot_bookstot_rings_potionstot_bad_monsterstot_nasty_horrible_monsters
But in the current config they are no longer the main story. The main story is the always-on HUD and the optional journal.
The field-guide layouts now work better as supporting reference screens that you switch into when you want lookup help.
The Standard Layouts menu reflects that shift:
[menu.menus.standard_layouts.item8]
label = "HUD View"
action = { command = "switch_layout", layout = "tot_hud_layout" }
[menu.menus.standard_layouts.item9]
label = "Field Guide View"
action = { command = "switch_layout", layout = "tot_layout" }This is a cleaner user model:
- HUD View for normal play
- Field Guide View for reference-heavy play
This profile is now one of the clearest examples of Sprint Boost being used as a full companion layer for a game:
- custom HUD during normal play
- expressions to turn raw memory into player-friendly display values
- persistent journal-style run tracking
- optional reference layouts when deeper lookup help is needed
- themed art, palette, and fonts that make the whole package feel cohesive
Quick Start game pages are now complete. Continue with broader docs from: