Skip to content

02 7 Quick Start AD&D Treasure of Tarmin

evets17 edited this page Apr 9, 2026 · 5 revisions

Quick Start: AD&D - Treasure of Tarmin

This page explains the game-level setup used for AD&D - Treasure of Tarmin.

Config file used

  • {usb_root}\boosted\AD&D - Treasure of Tarmin_boost.toml

What this example demonstrates

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_info values turned into on-screen item and combat displays
  • expression values 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.

1) Game-specific look and feel

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.

2) Live memory polling

Treasure of Tarmin uses frequent game_info updates:

[game_info]
poll_ms = 1000

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

3) Live HUD driven by game memory

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.

4) Expressions make raw memory usable

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.

5) Journal overlay: live progress plus saved history

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.

6) Play stats now support the journal, not just save data

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 from expression results

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.

7) Field guide layouts are still there, but now secondary

The older version of this page focused heavily on field-guide layouts. Those layouts still exist and are still useful.

Examples include:

  • tot_general
  • tot_war_weapons
  • tot_armor
  • tot_spiritual
  • tot_containers
  • tot_books
  • tot_rings_potions
  • tot_bad_monsters
  • tot_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

Why this is useful

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

Next step

Quick Start game pages are now complete. Continue with broader docs from:

Clone this wiki locally