docs: follow visual pinball to d858a1f

Starter tables are now .vpz folder packs, segment textures load a -cov.png coverage atlas beside them, table music falls back to the folders 10.8 searched (ScriptGlobalTable.cpp:120-148) and a Windows-only BAM plugin is staged. The build fetches pinmame d5e1921 now (platforms/config.sh:11): container sets unchanged, cited lines remapped.
This commit is contained in:
Abdessamad Derraz committed 2026-10-26 23:10:39 +01:00
1 parent 5affacb596
commit 388a3a4f58
1 file changed
+66 -55
+66 -55
View File
@@ -3,8 +3,8 @@ type: standalone
core_classification: game_engine
source: "https://github.com/vpinball/vpinball"
upstream: "https://github.com/vpinball/vpinball"
profiled_date: "2026-10-23"
source_commit: "639ec097a4b4e2b96455efe80da753606acd245c"
profiled_date: "2026-10-26"
source_commit: "d858a1f30d12d78fb92e2da0548ca0719ca5baca"
core_version: "10.8.1"
display_name: "Visual Pinball X"
cores:
@@ -25,10 +25,10 @@ notes: |
libwinevbs, Wine's VBScript engine with its COM and ATL headers, beside SDL3,
SDL3_ttf, FreeImage, hidapi, libspatialaudio and libmysofa with zlib
(make/CMakeLists_app.txt:558-579,630-640, make/CMakeLists_sources.txt:829-835).
AlphaDMD, AltSound, B2S, DMDUtil, DOF, FlexDMD, HelloScript, HelloWorld,
Inspector, Nixie, PinMAME, PUP, RemoteControl, Serum, UpscaleDMD, VNI and WMP
are plugins staged in plugins/ next to the binary, ../PlugIns on macOS
(make/CMakeLists_plugins.txt:21-25,39-55). The player scans that folder and
AlphaDMD, AltSound, B2S, BAM (Windows only), DMDUtil, DOF, FlexDMD,
HelloScript, HelloWorld, Inspector, Nixie, PinMAME, PUP, RemoteControl, Serum,
UpscaleDMD, VNI and WMP are plugins staged in plugins/ next to the binary, ../PlugIns on macOS
(make/CMakeLists_plugins.txt:21-25,39-56). The player scans that folder and
loads every subfolder whose plugin.cfg names a library for the running
platform (src/core/player.cpp:145, src/core/FileLocator.cpp:216-222,
plugins/plugins/MsgPluginManager.cpp:425-436).
@@ -56,7 +56,7 @@ notes: |
user/ and scripts/ beside it, then the installation folder with user/,
scripts/ and tables/ under it, then the preferences folder with user/ and
scripts/ under it (src/core/FileLocator.cpp:400-433,
src/core/ScriptGlobalTable.cpp:354-383). The
src/core/ScriptGlobalTable.cpp:396-425). The
scripts/ directory the build ships carries the 73 .vbs files tables include
by name, core.vbs and controller.vbs beside the per-manufacturer machine
scripts (WPC.vbs, sam.vbs, s11.vbs, zac.vbs and the rest), copied from
@@ -69,8 +69,10 @@ notes: |
table's user folder, created on demand, TablesDirectory the system documents
folder or the installation folder when SDL reports none, MusicDirectory the
table's music folder with an optional subfolder, ScriptsDirectory scripts/
under the installation folder. Each fails when its directory does not exist
(src/core/ScriptGlobalTable.cpp:385-426, src/core/FileLocator.cpp:251-259).
under the installation folder. MusicDirectory falls back to the folders
10.8 searched, listed under table music below. Each fails when its
directory does not exist (src/core/ScriptGlobalTable.cpp:120-148, 427-480,
src/core/FileLocator.cpp:251-259).
In AppPrefData mode user/, music/, cache/<table name>/ and autosave/ sit
beside the table. A folder missing there on a read is looked up the AppOnly
way, where user/ hangs off the installation folder, the cache sits under
@@ -82,23 +84,25 @@ notes: |
assets/ holds BallEnv.exr, AODither.webp and EnvMap.webp, the first two
loaded with no fallback (src/renderer/Renderer.cpp:178-190),
the bumper and kicker textures (src/parts/bumper.cpp:150,162,171,186,
src/parts/kicker.cpp:200-241), the segment display textures
(src/renderer/Renderer.cpp:1661-1679), TableSizes.csv, the table size
src/parts/kicker.cpp:200-241), the segment display textures, each with a
<name>-cov.png coverage atlas loaded beside it and dropped when its width is
not twice the texture's (src/renderer/Renderer.cpp:1580-1595,1674-1717),
TableSizes.csv, the table size
database (src/core/TableDB.cpp:16), vpinball.png for the window icon
(src/renderer/Window.cpp:280), LiberationSans-Regular.ttf, the font textboxes
and decals fall back to when neither the table folder, as
<FontName>-<Style>.ttf, nor the table file carries the font, nor on builds
with the Windows SDK an installed font matches
(src/renderer/TextRenderer.cpp:125-198), and which PUP adds after the fonts
of a pack's FONTS folder (plugins/pup/PUPManager.cpp:479-486),
of a pack's FONTS folder (plugins/pup/PUPManager.cpp:476-483),
fabian-hrir.sofa, listed below, the editor/ part icons
(src/ui/live/editor/EditorChrome.cpp:200) and four starter tables,
blankTable.vpx, exampleTable.vpx, lightSeqTable.vpx and strippedTable.vpx:
the live editor loads blankTable.vpx when started without a table or when
(src/ui/live/editor/EditorChrome.cpp:200) and four starter tables, the
.vpz folder packs blankTable.vpz, exampleTable.vpz, lightSeqTable.vpz and
strippedTable.vpz: the live editor loads blankTable.vpz when started without a table or when
the requested one fails to load, and its New Table menu loads any of the
four (src/core/AppCommands.cpp:287-293, src/ui/live/EditorUI.cpp:340-359).
four (src/core/AppCommands.cpp:302-308, src/ui/live/EditorUI.cpp:340-359).
OpenGL builds also get shaders-10.8.1/, the .glfx and .fxh sources parsed at
runtime (src/core/FileLocator.cpp:223, src/renderer/Shader.cpp:1806-1807,2210-2213,
runtime (src/core/FileLocator.cpp:223, src/renderer/Shader.cpp:1807-1808,2211-2214,
make/CMakeLists_app.txt:662-672), and the directory is not copied for the BGFX
renderer. Four plugins carry resources of their own: plugins/flexdmd/assets/
holds the bitmap fonts UltraDMD asks for by resource name, the
@@ -130,21 +134,21 @@ notes: |
PinMAMEPath setting, else $HOME/.pinmame on Linux and macOS, <prefpath>/pinmame
on iOS and Android, and the registered Visual PinMAME install folder with its
registry folder settings on Windows
(plugins/pinmame/PinMAMEPlugin.cpp:216,274-294,437-509). libpinmame then hangs
(plugins/pinmame/PinMAMEPlugin.cpp:226,284-304,447-519). libpinmame then hangs
roms, nvram, samples, cfg, hi, inp, memcard and sta off that root
(pinmame src/libpinmame/libpinmame.cpp:86-92,1151-1156) and reads alias.txt
(pinmame src/libpinmame/libpinmame.cpp:88-94,1324-1329) and reads alias.txt
from it, a list that renames a requested game before the driver lookup
(pinmame src/libpinmame/libpinmame.cpp:362-395,401-404). A memmaps folder,
(pinmame src/libpinmame/libpinmame.cpp:364-397,403-406). A memmaps folder,
beside roms/ in the table's pinmame folder, under the PinMAMEPath setting or
shipped in the plugin folder, is scanned for an index.json that maps the ROM
name to an NVRAM memory map, loaded with the platforms/<platform>.json it
names, and a gamedefs folder found the same way supplies
catalog/pinmame.json, which maps the driver to a game definition naming the
machine's inputs and outputs (plugins/pinmame/PinMAMEPlugin.cpp:445-472,
machine's inputs and outputs (plugins/pinmame/PinMAMEPlugin.cpp:455-482,
plugins/pinmame/Controller.cpp:188-288).
A ROM set is one zip per machine, and every ROM is looked up in the game's
zip first, then up its parent chain (pinmame src/common.c:1343-1348).
zip first, then up its parent chain (pinmame src/common.c:1379-1386).
PinMAME carries neither GAME_IS_BIOS_ROOT nor ROM_SYSTEM_BIOS. What it has
are nine container sets flagged NOT_A_DRIVER, gts1, gts1s, gts80, gts80s,
gts80a, gts80as, allied, gp_110 and recel, each the parent of its family's
@@ -158,21 +162,21 @@ notes: |
mechanical sample set named by pinmame_sample_names, "*pinmame" followed by
eighteen .wav members (pinmame src/wpc/wpcsam.c:31-57), is dead twice over:
readsamples returns before opening anything unless options.use_samples is set
(pinmame src/common.c:271), the two files that register that option live in
(pinmame src/common.c:276), the two files that register that option live in
src/windows/config.c and src/unix/sound.c and neither is in the libpinmame
source list, and PinmameSetConfig zeroes the whole options struct
(pinmame src/libpinmame/libpinmame.cpp:1142). Independently, SAMPLESINTERFACE
(pinmame src/libpinmame/libpinmame.cpp:1315). Independently, SAMPLESINTERFACE
is defined in the PinMAME tree (pinmame src/wpc/wpcsam.h:23) and no driver
references it. history.dat and mameinfo.dat (pinmame src/datafile.c:619-623,
649-653) are read only by displayhistory, a page of the MAME on-screen menu
(pinmame src/usrintrf.c:2846-2851), and by the listing path in
pinmame src/info.c:820 which libpinmame never calls. VPX passes NULL for
fn_IsKeyPressed, the thirteenth member of PinmameConfig
(plugins/pinmame/PinMAMEPlugin.cpp:411-427, pinmame src/libpinmame/libpinmame.h:451-467),
(plugins/pinmame/PinMAMEPlugin.cpp:421-437, pinmame src/libpinmame/libpinmame.h:482-498),
so osd_is_key_pressed always answers 0
(pinmame src/libpinmame/libpinmame.cpp:577-583) and the menu cannot be opened.
(pinmame src/libpinmame/libpinmame.cpp:582-588) and the menu cannot be opened.
The pinmame observations were read at 652249e2b98903b94cb8c200dd7024e4776fa0db,
The pinmame observations were read at d5e1921db1ff34e1ff3e744e1480c5de799a7b86,
the revision the build scripts fetch (platforms/config.sh:11), and the libdof
ones at 4908f45a5bd3b05369885b23f39465d589a32c1f (platforms/config.sh:17).
@@ -184,7 +188,7 @@ files:
category: bios_zip
required: false
description: "Gottlieb System 1 system ROMs"
source_ref: "pinmame src/wpc/gts1games.c:15-22,33-34, pinmame src/wpc/gts1.h:229-233, pinmame src/common.c:1343-1348, pinmame src/fileio.c:953-966"
source_ref: "pinmame src/wpc/gts1games.c:15-22,33-34, pinmame src/wpc/gts1.h:229-233, pinmame src/common.c:1379-1386, pinmame src/fileio.c:1039-1052"
note: >-
Container set, parent of every System 1 game. The path is the layout
beside a table, and roms/ sits the same way under the PinMAMEPath setting or
@@ -363,7 +367,7 @@ files:
category: game_data
required: false
description: "MAME high score memory map database, read once per machine start"
source_ref: "pinmame src/hiscore.c:18, 223-230, pinmame src/cpuexec.c:332-334, 393, 1782, src/core/player.cpp:438-440"
source_ref: "pinmame src/hiscore.c:18, 223-230, pinmame src/cpuexec.c:332-334, 393, 1782, src/core/player.cpp:442-444"
note: >-
hs_open is called unconditionally at the top of cpu_run for every PinMAME
machine, and the whole body sits behind `if (f)`, so an absent file is a
@@ -371,15 +375,15 @@ files:
the player sets to the table's own folder: libpinmame sets paths for eight
file types and FILETYPE_HIGHSCORE_DB is not among them, and the option
table that would supply a default is linked only by the Windows COM build
(pinmame src/libpinmame/libpinmame.cpp:86-92,1151-1156,
pinmame src/libpinmame/fileio.c:146, pinmame src/win32com/VPinMAMEConfig.cpp:127).
(pinmame src/libpinmame/libpinmame.cpp:88-94,1324-1329,
pinmame src/libpinmame/fileio.c:147, pinmame src/win32com/VPinMAMEConfig.cpp:128).
- name: cheat.dat
system: vpinball
category: game_data
required: false
description: "MAME cheat database, read when the PinMAME plugin's Cheat setting is on"
source_ref: "pinmame src/cheat.c:8434, 8602-8614, pinmame src/mame.c:590-596, pinmame src/libpinmame/libpinmame.cpp:1215-1218, plugins/pinmame/PinMAMEPlugin.cpp:217, 529, plugins/pinmame/Controller.cpp:167"
source_ref: "pinmame src/cheat.c:8434, 8602-8614, pinmame src/mame.c:595-601, pinmame src/libpinmame/libpinmame.cpp:1388-1391, plugins/pinmame/PinMAMEPlugin.cpp:227, plugins/pinmame/PinMAMEPlugin.cpp:539, plugins/pinmame/Controller.cpp:167"
note: >-
Off by default: PinmameSetConfig zeroes options, and the plugin's Cheat
setting, false unless the user changes it, is handed to PinmameSetCheat
@@ -427,7 +431,7 @@ files:
required: false
bundled: true
description: "NVRAM memory maps, index.json with the maps/ and platforms/ files it names"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:465-472, plugins/pinmame/Controller.cpp:188-246, make/CMakeLists_plugin_PinMAME.txt:115-122, platforms/config.sh:12, platforms/linux-x64/external.sh:252-254, 558-559"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:475-482, plugins/pinmame/Controller.cpp:188-246, make/CMakeLists_plugin_PinMAME.txt:115-122, platforms/config.sh:12, platforms/linux-x64/external.sh:252-254, 558-559"
note: >-
From tomlogic/pinball-memory-maps at
68c1b3373ba74cd07f42fba9d56db63ea28212dc, which every platform script
@@ -443,7 +447,7 @@ files:
required: false
bundled: true
description: "PinMAME game definitions, catalog/pinmame.json, the machines/ files it names and the controllers/ files those reference"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:465-472, plugins/pinmame/Controller.cpp:248-288, make/CMakeLists_plugin_PinMAME.txt:115-122, platforms/config.sh:13, platforms/linux-x64/external.sh:256-258, 560-561"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:475-482, plugins/pinmame/Controller.cpp:248-288, make/CMakeLists_plugin_PinMAME.txt:115-122, platforms/config.sh:13, platforms/linux-x64/external.sh:256-258, 560-561"
note: >-
From vpinball/pinmame-game-defs at
6eece7e53de9463bf783b9476ce3aeb98e2e7256, which every platform script
@@ -461,14 +465,14 @@ analysis:
source_ref: "make/CMakeLists_app.txt:656-660"
entries:
- what: "scripts/, the .vbs library tables include"
source_ref: "src/core/FileLocator.cpp:400-433, src/core/ScriptGlobalTable.cpp:354-383, src/ui/win/codeview.cpp:2053-2061"
source_ref: "src/core/FileLocator.cpp:400-433, src/core/ScriptGlobalTable.cpp:396-425, src/ui/win/codeview.cpp:2053-2061"
- what: "assets/, textures, segment display maps, TableSizes.csv, the window icon, the fallback font, the editor icons"
source_ref: "src/renderer/Renderer.cpp:178-190, src/renderer/Renderer.cpp:1661-1679, src/parts/bumper.cpp:150, 162, src/parts/bumper.cpp:171, src/parts/bumper.cpp:186, src/parts/kicker.cpp:200-241, src/core/TableDB.cpp:16, src/renderer/Window.cpp:280, src/renderer/TextRenderer.cpp:186-187, plugins/pup/PUPManager.cpp:483-485, src/ui/live/editor/EditorChrome.cpp:200"
- what: "assets/blankTable.vpx, exampleTable.vpx, lightSeqTable.vpx, strippedTable.vpx"
source_ref: "src/core/AppCommands.cpp:287-293, src/ui/live/EditorUI.cpp:340-359"
source_ref: "src/renderer/Renderer.cpp:178-190, src/renderer/Renderer.cpp:1580-1595, src/renderer/Renderer.cpp:1674-1717, src/parts/bumper.cpp:150, 162, src/parts/bumper.cpp:171, src/parts/bumper.cpp:186, src/parts/kicker.cpp:200-241, src/core/TableDB.cpp:16, src/renderer/Window.cpp:280, src/renderer/TextRenderer.cpp:186-187, plugins/pup/PUPManager.cpp:480-482, src/ui/live/editor/EditorChrome.cpp:200"
- what: "assets/blankTable.vpz, exampleTable.vpz, lightSeqTable.vpz, strippedTable.vpz, folder packs of JSON part files"
source_ref: "src/core/AppCommands.cpp:302-308, src/ui/live/EditorUI.cpp:340-359"
note: "The live editor's default table and its four New Table templates."
- what: "shaders-10.8.1/, .glfx and .fxh parsed at runtime by the OpenGL renderer"
source_ref: "src/core/FileLocator.cpp:223, src/renderer/Shader.cpp:1806-1807, src/renderer/Shader.cpp:2210-2213, make/CMakeLists_app.txt:662-672"
source_ref: "src/core/FileLocator.cpp:223, src/renderer/Shader.cpp:1807-1808, src/renderer/Shader.cpp:2211-2214, make/CMakeLists_app.txt:662-672"
- what: "plugins/<name>/plugin.cfg, the descriptor naming each plugin's library"
source_ref: "src/core/player.cpp:145, plugins/plugins/MsgPluginManager.cpp:425-436"
- what: "plugins/flexdmd/assets/, the bitmap fonts UltraDMD names as FlexDMD.Resources.*"
@@ -482,7 +486,7 @@ analysis:
- what: "plugins/inspector/assets/, the inspector web pages"
source_ref: "plugins/inspector/InspectorPlugin.cpp:618-626, make/CMakeLists_plugin_Inspector.txt:96"
- what: "plugins/pinmame/memmaps/ and plugins/pinmame/gamedefs/, the NVRAM memory maps and game definitions"
source_ref: "make/CMakeLists_plugin_PinMAME.txt:115-122, plugins/pinmame/PinMAMEPlugin.cpp:465-472, platforms/config.sh:12-13, platforms/linux-x64/external.sh:252-258,558-561"
source_ref: "make/CMakeLists_plugin_PinMAME.txt:115-122, plugins/pinmame/PinMAMEPlugin.cpp:475-482, platforms/config.sh:12-13, platforms/linux-x64/external.sh:252-258, 558-561"
note: >-
Copied only when the platform script has fetched them into
third-party/: index.json, maps/ and platforms/ from
@@ -504,7 +508,7 @@ analysis:
note: "Per table, keyed on the table folder or the ROM name"
entries:
- what: "PinMAME ROM sets, <pinmame root>/roms/<romname>.zip"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:437-509, pinmame src/libpinmame/libpinmame.cpp:87,1151-1153"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:447-519, pinmame src/libpinmame/libpinmame.cpp:89, 1324-1326"
note: >-
One zip per machine. The root is the pinmame folder beside the table
when it holds roms/, else the PinMAMEPath setting, else $HOME/.pinmame
@@ -514,23 +518,23 @@ analysis:
rompath, nvram, samples, cfg and hiscore registry settings replace
the default subfolders.
- what: "PinMAME game aliases, <pinmame root>/alias.txt"
source_ref: "pinmame src/libpinmame/libpinmame.cpp:362-395,401-404"
source_ref: "pinmame src/libpinmame/libpinmame.cpp:364-397,403-406"
note: "Optional. Each line pairs a requested game name with the ROM set loaded in its place."
- what: "NVRAM memory maps, memmaps/index.json and the map files it names"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:448, 459-460, 468-469, plugins/pinmame/Controller.cpp:188-246"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:458, plugins/pinmame/PinMAMEPlugin.cpp:469-470, plugins/pinmame/PinMAMEPlugin.cpp:478-479, plugins/pinmame/Controller.cpp:188-246"
note: >-
Optional. index.json maps the ROM name to a map file, whose
_metadata.platform names the platforms/<platform>.json loaded with it.
- what: "game definitions, gamedefs/catalog/pinmame.json and the definition it names"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:449, 461-462, 470-471, plugins/pinmame/Controller.cpp:248-288"
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:459, plugins/pinmame/PinMAMEPlugin.cpp:471-472, plugins/pinmame/PinMAMEPlugin.cpp:480-481, plugins/pinmame/Controller.cpp:248-288"
note: "Optional. The catalog's drivers array maps the ROM name to a definition file under gamedefs/."
- what: "backglass, <table basename>.directb2s, else <table folder name>.directb2s"
source_ref: "plugins/b2s/B2SServer.cpp:317-323,446-463,487-491, plugins/b2s/B2SPlugin.cpp:76"
source_ref: "plugins/b2s/B2SServer.cpp:321-327, plugins/b2s/B2SServer.cpp:450-467, plugins/b2s/B2SServer.cpp:491-495, plugins/b2s/B2SPlugin.cpp:76"
note: >-
Looked up in the table folder, or in the WorkingDir a table script
sets. Edits made in the plugin's backglass editor are written back to
the file through a temporary file renamed over it
(plugins/b2s/B2SServer.cpp:107-109).
(plugins/b2s/B2SServer.cpp:111-113).
- what: "Serum colorizations, <table folder>/serum/<rom>/<rom>.cROMc or .cRZ, else the SerumPath setting"
source_ref: "plugins/serum/serum.cpp:51,727-771"
note: "A namespace folder may sit above the ROM folder, and PinMAME games are also looked up in <table folder>/pinmame/altcolor."
@@ -541,10 +545,10 @@ analysis:
source_ref: "plugins/altsound/AltSoundPlugin.cpp:28,114-151"
note: "The library appends altsound/<rom> to the parent of the folder found, so that folder must be named altsound with this exact case."
- what: "PUP video packs, <table folder>/pupvideos/<rom>, else pupvideos/ under the PUPFolder setting"
source_ref: "plugins/pup/PUPManager.cpp:136-164, plugins/pup/PUPPlugin.cpp:66,298-309"
source_ref: "plugins/pup/PUPManager.cpp:132-160, plugins/pup/PUPPlugin.cpp:64, plugins/pup/PUPPlugin.cpp:295-306"
note: "A namespace folder may sit above the ROM folder."
- what: "PUP pack sounds, every .wav in PUPSOUNDS/ inside the PUP video pack"
source_ref: "plugins/pup/PUPSound.cpp:23-66, plugins/pup/PUPManager.cpp:179"
source_ref: "plugins/pup/PUPSound.cpp:23-66, plugins/pup/PUPManager.cpp:175"
note: "The pack's PuPSound triggers play these by name. ballroll0.wav to ballroll9.wav loop as ball rolling sounds."
- what: "Nixie layouts, <table basename>.nix, else <table folder name>.nix, else the LayoutFolder setting"
source_ref: "plugins/nixie/NixiePlugin.cpp:23,60-113, plugins/nixie/Nixie.cpp:45-65,104-129"
@@ -557,13 +561,20 @@ analysis:
source_ref: "plugins/dof/DOFPlugin.cpp:288-293, libdof src/DOF.cpp:36-45"
note: "The global configuration names the cabinet and table configuration files libdof reads next."
- what: "table music, music/ beside the table"
source_ref: "src/core/ScriptGlobalTable.cpp:120-138, src/core/FileLocator.cpp:267-398"
note: "An absolute path passed by the script is tried first. In the legacy layout, music/ under the installation folder, then the table folder, then the preferences folder."
source_ref: "src/core/ScriptGlobalTable.cpp:120-148, src/core/ScriptGlobalTable.cpp:150-190, src/core/FileLocator.cpp:267-398"
note: >-
An absolute path passed by the script is tried first. In the legacy
layout, music/ under the installation folder, then the table folder,
then the preferences folder. When neither finds the file, the folders
10.8 searched are tried: music/ under the installation folder, the
table folder, music/ under it, then C:\Visual Pinball\music and
music/ under %APPDATA%\VPinballX on Windows, ~/.vpinball/music
elsewhere.
- what: "textbox and decal fonts, <table folder>/<FontName>-<Style>.ttf"
source_ref: "src/renderer/TextRenderer.cpp:116-155, src/parts/textbox.cpp:603, src/parts/decal.cpp:135"
note: "A font embedded in the table file is tried next."
- what: "table sidecars, the .vbs script override, the per-table .ini and the legacy .pov"
source_ref: "src/parts/pintable.cpp:1507-1523, src/parts/pintable.cpp:1070-1122, src/parts/pintable.h:600-614"
source_ref: "src/parts/pintable.cpp:1507-1523, src/parts/pintable.cpp:1070-1122, src/parts/pintable.h:603-617"
note: >-
The .vbs is searched like a script library under the table's name,
then beside the table under its folder's name. The .ini takes the
@@ -573,17 +584,17 @@ analysis:
generated_files:
- what: "VPinballX.ini, the settings file"
source_ref: "src/core/VPApp.cpp:293-307, src/core/AppCommands.cpp:543-549"
source_ref: "src/core/VPApp.cpp:293-307, src/core/AppCommands.cpp:558-564"
note: >-
Looked up in the preferences folder, then beside the binary. When
neither holds one the preferences path is kept. -Ini names another file.
Batocera seeds it from the assets/Default_VPinballX.ini its pinned tree
carries and rewrites it before every launch.
- what: "VPReg.ini, values saved by table scripts in the table's user folder, and vpinball.log in the preferences folder"
source_ref: "src/core/ScriptGlobalTable.cpp:529-562, src/utils/Logger.cpp:160-161"
source_ref: "src/core/ScriptGlobalTable.cpp:583-616, src/utils/Logger.cpp:160-161"
- what: "<table>.info, the frontend information file beside the table"
source_ref: "src/parts/pintable.cpp:1125-1136, src/parts/pintable.cpp:1202-1227, src/parts/pintable.h:616-617, src/core/player.cpp:988, src/core/player.cpp:1002"
source_ref: "src/parts/pintable.cpp:1125-1136, src/parts/pintable.cpp:1202-1227, src/parts/pintable.h:619-620, src/core/player.cpp:992, src/core/player.cpp:1006"
note: "Only its VPX section is written, with the run count, the last run date and the play time."
- what: "PinMAME state: nvram/, cfg/, hi/, inp/, memcard/ and sta/"
source_ref: "pinmame src/libpinmame/libpinmame.cpp:88,90-91,1154-1156"
source_ref: "pinmame src/libpinmame/libpinmame.cpp:90,92-93,1327-1329"
note: "Written by PinMAME as the machine runs."