meta.txt
is a text file that lists a number of fields that describe the level, each field should start on a new line. While most of these are optional you should set at least:
kind
size
title
dialogue
Fields
kind: LevelKind
- One of
misc
,combinational
,sequential
,architecture
,factory
- One of
immutable_program: Bool
- Player cannot edit the program in assembley enabled RAM & ROM
immutable_spec: Bool
- Player cannot edit the
spec.isa
- Player cannot edit the
overwrite_assembly: Bool
no_score: Bool
tests: SInt
- Number of tests to run, defaults to 1
- Will stop after first time
check_output()
returnsfail
.
title: String
- Pretty name for display in game
default_isa_spec: String
default_assembly: String
no_panel: Bool
no_state_ui: Bool
no_controls: Bool
size: (S16,S16,S16,S16)
- Coordinates of the edges of the allowed draw area
(left, top, right, bottom)
- Ignored for architecture levels
- Coordinates of the edges of the allowed draw area
unlocks_components: [ComponentKind]
components_available: {ComponentKind: SInt}
- This overrides the default component list based on the level progression
- Maximum number of allowed instances of
ComponentKind
- -1 means unlimited
- If this option is specified then custom components will NOT be available unless the IO pins (
com_cc_input: -1, com_cc_output: -1
) are also listed.
add_components: {ComponentKind: SInt}
- This adds to the default component list based on the level progression
- -1 means unlimited
remove_components: [ComponentKind]
- Exclude these Components from the build menu
tick_past_fail: SInt
- Run this number of ticks, even after detecting a failure.
check_output()
mustreturn win
on the last tick or the level cannot be completed. An early return win ignores this and can cause the level to succeed before then.
output_history_pins: SInt
- Legacy, DO NOT USE for new levels.
- For older levels that do not use ui.txt configures the display of IO pins on the bottom panel.
copy_solution_to_level: [String]
- Note: Potentially broken parsing code, might copy stuff to weird locations on small mistakes
copy_solution_to_architecture: String
copy_solution_to_factory: String
unlocks_info: String
input_labels: [(String,)|(String,String)|(String,String,String)]
- Same Note, but less danger, just messed up names
output_labels: [String]
- Same Note
unlocks_pages: [String]
- Same Note
unlocks_special: [String]
- Same Note
background: UInt
arch_input_word_size: SInt
next_level: String
dialogue: Dialogue
post_mortem_first_win: Dialogue
post_mortem: Dialogue
Dialogue
Dialogue describes a list of pages. Each page consists of an image and some formatted text.
As an example
dialogue = [
(alien_centered, "We measure the universe with numbers. So your machine must learn to count."),
(info, "Treat the inputs as [ZERO] or [ONE] depending if they are [OFF] or [ON]. Add them together in binary, such that the result is either [ZERO] or [ONE].
As with normal addition, if the result cannot be described with one digit, set the carry to [ONE]."),
]
The "image" maybe one of:
alien_centered
alien_smile
info
- a placeholder for no image, just left justified text.
info_centered
- a placeholder for no image, just text centered on the page.
overture
- Reserved for the Overture levels.
Formatting
Some basic text formatting is available.
Hints
To disable all custom components specify components_available
with all of the allowed built-in components, excluding the IO pins.