Config file
The config file is the main configuration file of the Core software service.
Where it's located depends on the platform on which the service is running. On MiSTer, it's located in the /media/fat/zaparoo
folder or zaparoo
folder in the root of the SD card. The file is always called config.toml
on every platform.
The config file is written in TOML. Be aware that although comments are supported in TOML, they will be lost if Core makes updates to this file (e.g. when adjusting settings using the Zaparoo App) and should be avoided for important information.
Any changes made to the config file while the Core service is running require the service to be restarted before changes will take effect.
Options
Options in the config file are grouped by sections which start with a header. For example, the audio section begins with [audio]
and continues until the next header is encountered.
Root
The root section does not start with a section header and is the only section that behaves this way. It's reserved for certain options that affect all parts of Core or the config file itself.
config_schema
Key | Type | Default |
---|---|---|
config_schema | integer | 1 |
This option should not be changed or removed.
config_schema
is used internally by Core to track what version of itself last wrote to the file. This makes it possible to perform migrations between versions if the layout of the config file must be changed.
debug_logging
Key | Type | Default |
---|---|---|
debug_logging | boolean | false |
debug_logging
enables or disables logging debug messages to Core log files. It's useful for troubleshooting issues but can make log files difficult to read. This option should be enabled when attempting to reproduce issues for reporting.
audio
scan_feedback
Key | Type | Default |
---|---|---|
scan_feedback | boolean | true |
scan_feedback
enables or disables playing a sound from the host device when a scan is successful or results in an error.
readers
auto_detect
Key | Type | Default |
---|---|---|
auto_detect | boolean | true |
auto_detect
enables or disables Core automatically searching for and probing possible connected readers on the host device. It may be useful to disable this option if auto-detection is causing problems with unrelated connected devices.
readers.scan
readers.scan
is a sub-section of readers
and must be defined with the header: [readers.scan]
mode
Key | Type | Default |
---|---|---|
mode | string | tap |
mode
defines the behavior of scans. It has two options:
- tap
is the default mode and simply means when a token is tapped used with a reader it can be removed without affecting anything else. If a token is tapped, removed and then tapped again it will relaunch playing media even if it's the exact same media.
- hold
mode makes it so a token must be held to the reader for as long as any launched media will run. That is, after a token is removed from the reader, it will exit. This makes a token act more like real physical media. Core does not currently make any attempt to save before exiting media.
exit_delay
Key | Type | Default |
---|---|---|
exit_delay | float | 0.0 |
exit_delay
adds a delay, in seconds, before media is exited after a token is removed from a reader. It's only active if hold
mode is also active.
For example, if exit_delay
was set to 2.3
, it would mean when a token is removed from a reader, instead of instantly exiting the media, a timer is started for 2.3 seconds first. If the same token is placed back on the reader before the timer is complete, it will be cleared and the media won't exit.
ignore_system
Key | Type | Default |
---|---|---|
ignore_system | string[] | [] |
ignore_system
is a list of systems which will not be affected by the exit_delay
option. It's only applicable in hold
mode.
readers.connect
readers.connect
manually defines a reader which is physically connected to the host device and is not auto-detected. It's a sub-section that can be defined multiple times, and must have this header: readers.connect
Pay attention to the double pairs of square brackets. Each defined readers.connect
section must have its own header.
driver
Key | Type | Default |
---|---|---|
driver | string |
driver
specifies which reader driver should be used to attempt connection to the reader device. See reader drivers for a list of possible options.
path
Key | Type | Default |
---|---|---|
path | string |
path
is an argument for the specified reader driver for how the device should be found. See reader drivers for what this argument should look like for the selected driver.
systems
systems.default
systems.default
overrides the default behavior of the specified system. It's a sub-section that can be defined multiple times, and must have this header: systems.default
Pay attention to the double pairs of square brackets. Each defined systems.default
section must have its own header.
system
Key | Type | Default |
---|---|---|
system | string |
ID of the system this default override entry applies to.
launcher
Key | Type | Default |
---|---|---|
launcher | string |
ID of the launcher that should be used by default when media in this system is launched.
launchers
index_root
Key | Type | Default |
---|---|---|
index_root | string[] | [] |
index_root
is a list of paths on the host device that should also be searched when indexing media during a media database updated.
For example, if index_root
was set to [ '/media/fat/other_place' ]
, a database update will search all standard places like normal but then also attempt to search /media/fat/other_place/SNES, /media/fat/other_place/Genesis, etc. for potential media.
allow_file
Key | Type | Default |
---|---|---|
allow_file | string[] | [] |
allow_file
explicitly allows a file to be launched from a token even if it hasn't been indexed as part of a system.
This is used on platforms like Windows to allow executable files to be launched with tokens, where this ability is useful but would be a security concern if allowed globally. Paths are case-insensitive one the Windows platform.
zapscript
allow_shell
Key | Type | Default |
---|---|---|
allow_shell | string[] | [] |
<
service
api_port
Key | Type | Default |
---|---|---|
api_port | integer | 7497 |
device_id
Key | Type | Default |
---|---|---|
device_id | string |
allow_launch
Key | Type | Default |
---|---|---|
allow_launch | string[] | [] |
Example file
An example config file with all fields filled:
config_schema = 1
debug_logging = true
[audio]
scan_feedback = true
[readers]
auto_detect = true
[readers.scan]
mode = 'hold'
exit_delay = 3.0
ignore_system = [ 'PC', 'MSX' ]
[[readers.connect]]
driver = 'pn532_uart'
path = '/dev/ttyUSB0'
[[readers.connect]]
driver = 'file'
path = '/tmp/some_file'
[[systems.default]]
system = 'SNES'
launcher = 'SindenSNES'
[launchers]
index_root = [
'/media/alt_mount/games'
]
allow_file = [
'/media/fat/something.mgl'
]
[zapscript]
allow_shell = [
'touch /tmp/tap_time',
'/media/fat/linux/mplayer something.mp4'
]
[service]
api_port = 7497
device_id = '4d01c19f-09ba-4871-a58a-82fb49f5b518'
allow_launch = [
'*'
]