Appendix C
Overlays
The 13 overlays and their 76 parameters. An overlay is attached to a scene with a [[scenes.overlays]] table; which ones a given display mode will accept is Appendix D.
big_text#
Demo-scene 8×-scaled horizontally-scrolling big text (blank/mcm only).
Restrictions: only on blank, mcm.
[[scenes.overlays]]
type = "big_text"
row = "middle"
speed_cells_per_s = 8
inter_message_pause_s = 1.5
# also required: messages — has no default
| Parameter | Description |
|---|---|
messagesType: listDefault: (required) | List of message strings (or {text, color} tables) to scroll. |
charset_pathType: str | NoneDefault: None | C64 character ROM used to rasterize the big glyphs (unset = the one c64cast dumped off your C64; see --dump-char-rom). |
rowType: strDefault: 'middle' | Vertical placement: 'top', 'middle', or 'bottom'. |
speed_cells_per_sType: floatDefault: 8.0 | Scroll speed in character cells per second. |
inter_message_pause_sType: floatDefault: 1.5 | Pause between consecutive messages. |
loopType: boolDefault: True | Loop the message list forever (false = play once then advance). |
target_fpsType: float | NoneDefault: None | Override FPS used for px-per-frame snapping; unset = detect. |
callsign#
Static, unchanging text in a corner (callsign, booth ID, sponsor tag).
Restrictions: needs a text-capable mode.
[[scenes.overlays]]
type = "callsign"
corner = "bottom-right"
fg_color = "white"
bg_color = "black"
| Parameter | Description |
|---|---|
textType: strDefault: '' | The fixed string to display. |
cornerType: strDefault: 'bottom-right' | Screen corner to anchor the text (top-left/top-right/bottom-left/bottom-right). |
fg_colorType: strDefault: 'white' | Text color (C64 color name). |
bg_colorType: strDefault: 'black' | Cell background color, or 'none' to leave the scene showing through. |
clock#
Current time (and optional date) in a screen corner.
Restrictions: needs a text-capable mode.
[[scenes.overlays]]
type = "clock"
corner = "top-right"
format = "%H:%M"
show_date = false
| Parameter | Description |
|---|---|
cornerType: strDefault: 'top-right' | Screen corner to anchor the text (top-left/top-right/bottom-left/bottom-right). |
formatType: strDefault: '%H:%M' | strftime format for the time line (e.g. '%H:%M'). |
show_dateType: boolDefault: False | Also show a second line with the date. |
date_formatType: strDefault: '%Y-%m-%d' | strftime format for the date line when show_date is true. |
fg_colorType: strDefault: 'white' | Text color (C64 color name). |
bg_colorType: strDefault: 'black' | Cell background color, or 'none' to leave the scene showing through. |
refresh_sType: floatDefault: 1.0 | Seconds between value recomputes (the text is repainted every frame). |
countdown#
Time remaining until a target date/time, in a corner.
Restrictions: needs a text-capable mode.
[[scenes.overlays]]
type = "countdown"
format = "auto"
done_text = "DONE"
corner = "bottom-left"
# also required: target — has no default
| Parameter | Description |
|---|---|
targetType: strDefault: (required) | Target datetime (ISO 8601, e.g. '2026-12-31T23:59'). |
formatType: strDefault: 'auto' | 'auto' for adaptive units, or a template using {d}{h}{m}{s}. |
done_textType: strDefault: 'DONE' | Text shown once the target has passed. |
cornerType: strDefault: 'bottom-left' | Screen corner to anchor the text (top-left/top-right/bottom-left/bottom-right). |
fg_colorType: strDefault: 'yellow' | Text color (C64 color name). |
bg_colorType: strDefault: 'black' | Cell background color, or 'none' to leave the scene showing through. |
refresh_sType: floatDefault: 1.0 | Seconds between value recomputes (the text is repainted every frame). |
logo#
Multi-line PETSCII art block loaded from a .txt file.
Restrictions: needs a text-capable mode.
[[scenes.overlays]]
type = "logo"
fg_color = "white"
bg_color = "black"
# also required: file — has no default
| Parameter | Description |
|---|---|
fileType: strDefault: (required) | Path to a .txt file of PETSCII art (one screen row per line). |
cornerType: str | NoneDefault: None | Corner to anchor the block (mutually exclusive with row/col). |
rowType: int | NoneDefault: None | Explicit top row (use with col instead of corner). |
colType: int | NoneDefault: None | Explicit left column (use with row instead of corner). |
fg_colorType: strDefault: 'white' | Art color (C64 color name). |
bg_colorType: strDefault: 'black' | Background color, or 'none' to leave the scene showing through. |
marquee#
Single-line continuous ticker scrolling one text string with a separator.
Restrictions: needs a text-capable mode.
[[scenes.overlays]]
type = "marquee"
text = "C64CAST"
row = 0
speed_cells_per_s = 3
| Parameter | Description |
|---|---|
textType: strDefault: 'C64CAST' | The message to scroll continuously. |
rowType: intDefault: 0 | Screen row (0..24) the ticker scrolls along. |
speed_cells_per_sType: floatDefault: 3.0 | Scroll speed in character cells per second. |
fg_colorType: strDefault: 'yellow' | Text color (C64 color name). |
bg_colorType: strDefault: 'black' | Background color (C64 color name). |
network#
Local IP / hostname / U64 ping latency in a corner.
Restrictions: needs a text-capable mode.
[[scenes.overlays]]
type = "network"
corner = "bottom-right"
fg_color = "light gray"
bg_color = "black"
| Parameter | Description |
|---|---|
itemsType: list | NoneDefault: None | Which lines to show, any of: 'ip', 'hostname', 'ping'. |
cornerType: strDefault: 'bottom-right' | Screen corner to anchor the text (top-left/top-right/bottom-left/bottom-right). |
fg_colorType: strDefault: 'light gray' | Text color (C64 color name). |
bg_colorType: strDefault: 'black' | Cell background color, or 'none' to leave the scene showing through. |
refresh_sType: floatDefault: 5.0 | Seconds between value recomputes (the text is repainted every frame). |
obs_status#
OBS Studio current scene + dropped-frame count (OBS WebSocket).
Restrictions: needs a text-capable mode.
[[scenes.overlays]]
type = "obs_status"
host = "localhost"
port = 4455
show_dropped = true
| Parameter | Description |
|---|---|
hostType: strDefault: 'localhost' | OBS WebSocket host. |
portType: intDefault: 4455 | OBS WebSocket port. |
passwordType: strDefault: '' | OBS WebSocket password (if auth is enabled). |
show_droppedType: boolDefault: True | Append the dropped-frame count to the status line. |
cornerType: strDefault: 'bottom-right' | Screen corner to anchor the text (top-left/top-right/bottom-left/bottom-right). |
fg_colorType: strDefault: 'light green' | Text color (C64 color name). |
bg_colorType: strDefault: 'black' | Cell background color, or 'none' to leave the scene showing through. |
refresh_sType: floatDefault: 2.0 | Seconds between value recomputes (the text is repainted every frame). |
rss#
Ticker fed by a background RSS/Atom feed fetch.
Restrictions: needs a text-capable mode.
[[scenes.overlays]]
type = "rss"
row = 0
max_items = 10
refresh_minutes = 15
# also required: url — has no default
| Parameter | Description |
|---|---|
urlType: strDefault: (required) | RSS/Atom feed URL to fetch. |
rowType: intDefault: 0 | Screen row (0..24) the ticker scrolls along. |
max_itemsType: intDefault: 10 | Maximum number of headlines to include in the ticker. |
refresh_minutesType: floatDefault: 15.0 | Minutes between background feed fetches. |
speed_cells_per_sType: floatDefault: 3.0 | Scroll speed in character cells per second. |
separatorType: strDefault: ' * ' | Text placed between consecutive headlines. |
fg_colorType: strDefault: 'light green' | Text color (C64 color name). |
bg_colorType: strDefault: 'black' | Background color (C64 color name). |
scrolling_text#
One scrolling row of messages (per-row scroller).
Restrictions: needs a text-capable mode.
[[scenes.overlays]]
type = "scrolling_text"
row = 24
speed_cells_per_s = 6
bg_color = "black"
# also required: messages — has no default
| Parameter | Description |
|---|---|
messagesType: listDefault: (required) | List of message strings to cycle through. |
rowType: intDefault: 24 | Screen row (0..24) to scroll along. |
speed_cells_per_sType: floatDefault: 6.0 | Scroll speed in character cells per second. |
bg_colorType: strDefault: 'black' | Background color (C64 color name). |
spectrum_bitmap#
Audio spectrum as pixel-resolution bars painted into the mhires bitmap.
Restrictions: only on mhires.
[[scenes.overlays]]
type = "spectrum_bitmap"
placement = "bottom"
height_frac = 0.5
gain = 1
| Parameter | Description |
|---|---|
placementType: strDefault: 'bottom' | Where the bars sit: 'bottom', 'center', or 'split'. |
height_fracType: floatDefault: 0.5 | Fraction of screen height a full-energy bar reaches. |
gainType: floatDefault: 1.0 | Multiplier applied to band magnitudes before bar height. |
spectrum_petscii#
Audio spectrum rendered as vertical color bars in screen RAM.
Restrictions: needs a PETSCII-compatible mode.
[[scenes.overlays]]
type = "spectrum_petscii"
placement = "center"
height_rows = 12
gain = 1
| Parameter | Description |
|---|---|
placementType: strDefault: 'center' | Where the bars sit: 'bottom', 'center', or 'split'. |
height_rowsType: intDefault: 12 | Height of the bar strip in character rows. |
gainType: floatDefault: 1.0 | Multiplier applied to band magnitudes before bar height. |
weather#
Temperature + conditions in a corner (background poll).
Restrictions: needs a text-capable mode.
[[scenes.overlays]]
type = "weather"
provider = "open-meteo"
units = "F"
corner = "top-left"
| Parameter | Description |
|---|---|
providerType: strDefault: 'open-meteo' | Weather source: 'open-meteo' or 'wttr.in'. |
latType: float | NoneDefault: None | Latitude (open-meteo; with lon). |
lonType: float | NoneDefault: None | Longitude (open-meteo; with lat). |
locationType: str | NoneDefault: None | Location name (wttr.in; alternative to lat/lon). |
unitsType: strDefault: 'F' | Temperature units: 'F' or 'C'. |
cornerType: strDefault: 'top-left' | Screen corner to anchor the text (top-left/top-right/bottom-left/bottom-right). |
fg_colorType: strDefault: 'light blue' | Text color (C64 color name). |
bg_colorType: strDefault: 'black' | Cell background color, or 'none' to leave the scene showing through. |
refresh_minutesType: floatDefault: 10.0 | Minutes between background weather polls. |