mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-21 19:29:03 -05:00
fix: reprofile visual-pinball at e4a79a5
ScoreView became Nixie with .nix layouts, B2SLegacy was removed, the PinMAME plugin ships memmaps/ and gamedefs/, the HRTF file is bundled, fonts are looked up by TextRenderer and a table gets a .info file. PinMAME refs are re-read at 5386aa17, the revision the build fetches.
This commit is contained in:
1 parent
53a1c6e0d8
commit
9011f1c863
1 file changed
+162
-95
+162
-95
@@ -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-04"
|
||||
source_commit: "8a9f36d227a0e71be33c36418e4e3ffc8c5c2723"
|
||||
profiled_date: "2026-10-20"
|
||||
source_commit: "e4a79a5d58df3d543ffb5360ae8458cfdf4cb7bb"
|
||||
core_version: "10.8.1"
|
||||
display_name: "Visual Pinball X"
|
||||
cores:
|
||||
@@ -17,14 +17,21 @@ mode: standalone
|
||||
notes: |
|
||||
Pinball table simulator. The table is the content: .vpx and .vpt files are
|
||||
OLE Compound Documents holding the geometry, textures, sounds and a VBScript
|
||||
program, read through POLE (src/parts/pintable.cpp:1427-1430). Every build
|
||||
other than the Windows editor compiles the shared source set with
|
||||
__STANDALONE__ and links libwinevbs, Wine's VBScript engine with its COM and
|
||||
ATL headers, beside SDL3, SDL3_ttf, FreeImage, hidapi, libspatialaudio and
|
||||
libmysofa with zlib. PinMAME, AltSound,
|
||||
DMDUtil, DOF, FlexDMD, B2S, PUP, Serum, VNI and ScoreView are plugins staged
|
||||
in plugins/ next to the binary (make/CMakeLists_app.txt:533-554,605-615,
|
||||
make/CMakeLists_sources.txt:811-817, make/CMakeLists_plugins.txt:21-25,39-56).
|
||||
program, read through POLE (src/parts/pintable.cpp:1538-1541), and a .vpz
|
||||
pack, a zip or a plain folder of JSON part files, is read through the JSON
|
||||
serializer instead (src/parts/pintable.cpp:1447,
|
||||
src/utils/JSONSerializer.cpp:1096-1102). Every build other than the Windows
|
||||
editor compiles the shared source set with __STANDALONE__ and links
|
||||
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:535-556,607-617, 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
|
||||
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).
|
||||
ES-DE finds VPinballX_BGFX or VPinballX_GL and
|
||||
runs `<binary> -play <rom>`, Batocera builds the standalone tree at
|
||||
3ec37c7f9a into /usr/bin/vpinball and runs `VPinballX_GL -PrefPath <dir> -Ini
|
||||
@@ -38,7 +45,7 @@ notes: |
|
||||
everything in the application folder, which is the legacy Windows 9x
|
||||
behaviour. Which one applies is decided by where VPinballX.ini is found: in
|
||||
the preferences folder gives AppPrefData, else beside the executable gives
|
||||
AppOnly, else AppPrefData (src/core/FileLocator.h:11-25,57,63-66,
|
||||
AppOnly, else AppPrefData (src/core/FileLocator.h:11-25,60,66-69,
|
||||
src/core/FileLocator.cpp:195-206). The preferences folder is the SDL
|
||||
preference path for VPinballX with a major.minor subfolder
|
||||
(src/core/FileLocator.cpp:46-53). Batocera's 001-default-path.patch
|
||||
@@ -48,79 +55,93 @@ notes: |
|
||||
locations in order, each case-insensitively: the table's own folder, then
|
||||
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:379-412,
|
||||
src/core/ScriptGlobalTable.cpp:352-381). The
|
||||
scripts/ directory the build ships carries the 71 .vbs files tables include
|
||||
scripts/ under it (src/core/FileLocator.cpp:400-433,
|
||||
src/core/ScriptGlobalTable.cpp:350-379). 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
|
||||
src/scripts (make/CMakeLists_app.txt:631-635). The Windows editor's
|
||||
src/scripts (make/CMakeLists_app.txt:633-637). The Windows editor's
|
||||
completion parser asks for core.vbs through the same search without a table,
|
||||
so in the seven installation and preferences locations, and shows a warning
|
||||
box when none holds it (src/ui/win/codeview.cpp:2068-2076,
|
||||
box when none holds it (src/ui/win/codeview.cpp:2053-2061,
|
||||
src/core/FileLocator.cpp:238-245).
|
||||
Table scripts also read four directory properties. UserDirectory is the
|
||||
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:383-424, src/core/FileLocator.cpp:251-259).
|
||||
In AppPrefData mode user/, music/, cache/ 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 and music/ is tried under the installation
|
||||
folder, the table folder, then the preferences folder
|
||||
(src/core/FileLocator.cpp:267-377).
|
||||
(src/core/ScriptGlobalTable.cpp:381-422, 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
|
||||
Cache/<table name> in the preferences folder and music/ is tried under the
|
||||
installation folder, the table folder, then the preferences folder
|
||||
(src/core/FileLocator.cpp:267-398).
|
||||
|
||||
The rest of the install tree is read the same way and ships with the binary:
|
||||
assets/ holds BallEnv.exr, AODither.webp and EnvMap.webp, the first two
|
||||
loaded with no fallback (src/renderer/Renderer.cpp:176-188),
|
||||
the bumper and kicker textures (src/parts/bumper.cpp:148,160,172,186,
|
||||
src/parts/kicker.cpp:198-239), the segment display textures
|
||||
(src/renderer/Renderer.cpp:1493-1510), TableSizes.csv, the table size
|
||||
the bumper and kicker textures (src/parts/bumper.cpp:150,162,174,188,
|
||||
src/parts/kicker.cpp:200-241), the segment display textures
|
||||
(src/renderer/Renderer.cpp:1503-1521), 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 textbox font
|
||||
used when the table folder holds no <FontName>-<Style>.ttf
|
||||
(src/parts/textbox.cpp:701-722), the editor/ part icons
|
||||
(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-196), and which PUP adds after the fonts
|
||||
of a pack's FONTS folder (plugins/pup/PUPManager.cpp:468-475),
|
||||
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
|
||||
the requested one fails to load, and its New Table menu loads any of the
|
||||
four (src/core/AppCommands.cpp:277-283, src/ui/live/EditorUI.cpp:338-357).
|
||||
four (src/core/AppCommands.cpp:287-293, src/ui/live/EditorUI.cpp:339-358).
|
||||
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:1827-1828,2231-2234,
|
||||
make/CMakeLists_app.txt:637-647), and the directory is not copied for the BGFX
|
||||
renderer. Three plugins carry resources of their own: plugins/flexdmd/assets/
|
||||
runtime (src/core/FileLocator.cpp:223, src/renderer/Shader.cpp:1803-1804,2207-2210,
|
||||
make/CMakeLists_app.txt:639-649), 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
|
||||
FlexDMD.Resources. prefix being stripped before the lookup
|
||||
(plugins/flexdmd/UltraDMD.cpp:20-24,32-34,
|
||||
plugins/flexdmd/resources/AssetManager.cpp:103-109,252-272),
|
||||
plugins/scoreview/layouts/ the default .scv layouts
|
||||
(plugins/scoreview/ScoreViewPlugin.cpp:64-77) and plugins/inspector/assets/
|
||||
the pages of the inspector's web server
|
||||
(plugins/inspector/InspectorPlugin.cpp:618-626).
|
||||
plugins/flexdmd/resources/AssetManager.cpp:103-109,260-280),
|
||||
plugins/nixie/layouts/ the default .nix layouts and the glass textures they
|
||||
name (plugins/nixie/NixiePlugin.cpp:96-110, plugins/nixie/Nixie.cpp:45-65,104-129),
|
||||
plugins/inspector/assets/ the pages of the inspector's web server
|
||||
(plugins/inspector/InspectorPlugin.cpp:618-626), and plugins/pinmame/ the
|
||||
memmaps/ and gamedefs/ trees the platform scripts fetch from
|
||||
tomlogic/pinball-memory-maps at 68c1b33 and vpinball/pinmame-game-defs at
|
||||
6eece7e (make/CMakeLists_plugin_PinMAME.txt:115-122, platforms/config.sh:12-13,
|
||||
platforms/linux-x64/external.sh:252-258,558-561).
|
||||
|
||||
Two parts of that tree ship without a reader on the desktop targets.
|
||||
docs/Changelog.txt is read by the About dialog
|
||||
(src/ui/win/dialogs/AboutDialog.cpp:34), which sits in the Windows source
|
||||
list only (make/CMakeLists_sources.txt:493,542-543,
|
||||
(src/ui/win/dialogs/AboutDialog.cpp:34), which only the Windows editor
|
||||
build reaches, the editor being compiled out of every __STANDALONE__ build
|
||||
(src/core/stdafx.h:36-40, src/core/AppCommands.cpp:14-18,
|
||||
make/CMakeLists_app.txt:78-80), and assets/web/, vpx.html with its scripts
|
||||
and style sheet, is served by the web server that only the iOS and Android
|
||||
and style sheets, is served by the web server that only the iOS and Android
|
||||
library build compiles (lib/src/WebServer.cpp:92-99,
|
||||
make/CMakeLists_sources.txt:819-825, make/CMakeLists_app.txt:679).
|
||||
make/CMakeLists_sources.txt:837-845, make/CMakeLists_app.txt:679).
|
||||
|
||||
PinMAME is where the emulation happens. Tables that recreate a real solid
|
||||
state machine hand a ROM name to the controller, which resolves its root as
|
||||
the pinmame folder beside the table when that folder holds roms/, else the
|
||||
PinMAMEPath setting, else $HOME/.pinmame on Linux and macOS
|
||||
(plugins/pinmame/PinMAMEPlugin.cpp:214,322-367). libpinmame then hangs roms,
|
||||
nvram, samples, cfg, hi, inp, memcard and sta off that root
|
||||
(pinmame src/libpinmame/libpinmame.cpp:1080-1087) and reads alias.txt from
|
||||
it, a list that renames a requested game before the driver lookup
|
||||
(pinmame src/libpinmame/libpinmame.cpp:304-337,343-346). A memmaps folder,
|
||||
beside roms/ in the table's pinmame folder or under the PinMAMEPath setting,
|
||||
is scanned for an index.json that maps the ROM name to an NVRAM memory map,
|
||||
loaded with the platforms/<platform>.json it names
|
||||
(plugins/pinmame/PinMAMEPlugin.cpp:339,346-347,
|
||||
plugins/pinmame/Controller.cpp:183-241).
|
||||
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
|
||||
roms, nvram, samples, cfg, hi, inp, memcard and sta off that root
|
||||
(pinmame src/libpinmame/libpinmame.cpp:85-91,1141-1146) and reads alias.txt
|
||||
from it, a list that renames a requested game before the driver lookup
|
||||
(pinmame src/libpinmame/libpinmame.cpp:361-394,400-403). 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,
|
||||
plugins/pinmame/Controller.cpp:184-284).
|
||||
|
||||
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).
|
||||
@@ -140,19 +161,20 @@ notes: |
|
||||
(pinmame src/common.c:271), 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:1071). Independently, SAMPLESINTERFACE
|
||||
(pinmame src/libpinmame/libpinmame.cpp:1132). 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:304-320, pinmame src/libpinmame/libpinmame.h:422-438),
|
||||
(plugins/pinmame/PinMAMEPlugin.cpp:411-427, pinmame src/libpinmame/libpinmame.h:451-467),
|
||||
so osd_is_key_pressed always answers 0
|
||||
(pinmame src/libpinmame/libpinmame.cpp:519-525) and the menu cannot be opened.
|
||||
(pinmame src/libpinmame/libpinmame.cpp:576-582) and the menu cannot be opened.
|
||||
|
||||
The pinmame observations were read at 268854a18be9ad334569b5654345c06a7d0ef521,
|
||||
the revision the build scripts fetch (platforms/config.sh:11).
|
||||
The pinmame observations were read at 5386aa17fbed2cf41470cea252c38ed77eac64e5,
|
||||
the revision the build scripts fetch (platforms/config.sh:11), and the libdof
|
||||
ones at 4908f45a5bd3b05369885b23f39465d589a32c1f (platforms/config.sh:17).
|
||||
|
||||
files:
|
||||
|
||||
@@ -324,7 +346,7 @@ files:
|
||||
category: bios_zip
|
||||
required: false
|
||||
description: "Recel System III shared program"
|
||||
source_ref: "pinmame src/wpc/recelgames.c:70-73, pinmame src/wpc/recel.h:119-130"
|
||||
source_ref: "pinmame src/wpc/recelgames.c:72-75, pinmame src/wpc/recel.h:120-131"
|
||||
note: "Container set, parent of the Recel games, which declare the same two ROMs beside their own game PROM."
|
||||
contents:
|
||||
- name: a2361.b1
|
||||
@@ -341,7 +363,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, 1755, src/core/player.cpp:463-465"
|
||||
source_ref: "pinmame src/hiscore.c:18, 223-230, pinmame src/cpuexec.c:332-334, 393, 1782, src/core/player.cpp:435-437"
|
||||
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
|
||||
@@ -349,15 +371,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:1080-1087,
|
||||
pinmame src/libpinmame/fileio.c:141, pinmame src/win32com/VPinMAMEConfig.cpp:127).
|
||||
(pinmame src/libpinmame/libpinmame.cpp:85-91,1141-1146,
|
||||
pinmame src/libpinmame/fileio.c:146, pinmame src/win32com/VPinMAMEConfig.cpp:127).
|
||||
|
||||
- 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:581-587, pinmame src/libpinmame/libpinmame.cpp:1141-1144, plugins/pinmame/PinMAMEPlugin.cpp:215,373, plugins/pinmame/Controller.cpp:162"
|
||||
source_ref: "pinmame src/cheat.c:8434,8602-8614, pinmame src/mame.c:590-596, pinmame src/libpinmame/libpinmame.cpp:1205-1208, plugins/pinmame/PinMAMEPlugin.cpp:217,529, plugins/pinmame/Controller.cpp:163"
|
||||
note: >-
|
||||
Off by default: PinmameSetConfig zeroes options, and the plugin's Cheat
|
||||
setting, false unless the user changes it, is handed to PinmameSetCheat
|
||||
@@ -369,18 +391,19 @@ files:
|
||||
path: "assets/fabian-hrir.sofa"
|
||||
system: vpinball
|
||||
required: false
|
||||
bundled: true
|
||||
size: 1766147
|
||||
sha1: "5bf46cfb6472b81f4aa7fb2c87bc79afc23109d7"
|
||||
md5: "b98b60a050e3c2edfa7a59863c625c61"
|
||||
description: "FABIAN full-sphere HRIR set, the HRTF of the binaural spatial audio renderer"
|
||||
source_ref: "src/audio/SpatialAudio.cpp:49-56,344-360, make/CMakeLists_app.txt:631-635"
|
||||
source_ref: "src/audio/SpatialAudio.cpp:49-56,344-361, make/CMakeLists_app.txt:633-637"
|
||||
note: >-
|
||||
Read from assets/ under the installation folder when libspatialaudio is
|
||||
built with libmysofa, which every build script does. The headphone and VR
|
||||
binauralizer then runs second order ambisonics on it. A missing or
|
||||
unreadable file logs "Failed to load the binaural HRTF" and audio falls
|
||||
back to loudspeaker decoding. The file sits in the repository's top-level
|
||||
assets/ while the build copies src/assets, so no build output carries it.
|
||||
back to loudspeaker decoding. The file sits in src/assets, which the build
|
||||
copies beside the binary.
|
||||
|
||||
analysis:
|
||||
shipped_with_the_binary:
|
||||
@@ -388,85 +411,129 @@ analysis:
|
||||
Copied into the build output next to the executable and installed as one
|
||||
unit by every distribution, so they arrive with the emulator rather than
|
||||
being sourced separately.
|
||||
source_ref: "make/CMakeLists_app.txt:631-635"
|
||||
source_ref: "make/CMakeLists_app.txt:633-637"
|
||||
entries:
|
||||
- what: "scripts/, the .vbs library tables include"
|
||||
source_ref: "src/core/FileLocator.cpp:379-412, src/core/ScriptGlobalTable.cpp:352-381, src/ui/win/codeview.cpp:2068-2076"
|
||||
source_ref: "src/core/FileLocator.cpp:400-433, src/core/ScriptGlobalTable.cpp:350-379, 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:176-188,1493-1510, src/parts/bumper.cpp:148,160,172,186, src/parts/kicker.cpp:198-239, src/core/TableDB.cpp:16, src/renderer/Window.cpp:280, src/parts/textbox.cpp:719-720, src/ui/live/editor/EditorChrome.cpp:200"
|
||||
source_ref: "src/renderer/Renderer.cpp:176-188,1503-1521, src/parts/bumper.cpp:150,162,174,188, src/parts/kicker.cpp:200-241, src/core/TableDB.cpp:16, src/renderer/Window.cpp:280, src/renderer/TextRenderer.cpp:184-185, plugins/pup/PUPManager.cpp:472-474, src/ui/live/editor/EditorChrome.cpp:200"
|
||||
- what: "assets/blankTable.vpx, exampleTable.vpx, lightSeqTable.vpx, strippedTable.vpx"
|
||||
source_ref: "src/core/AppCommands.cpp:277-283, src/ui/live/EditorUI.cpp:338-357"
|
||||
source_ref: "src/core/AppCommands.cpp:287-293, src/ui/live/EditorUI.cpp:339-358"
|
||||
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:1827-1828, src/renderer/Shader.cpp:2231-2234, make/CMakeLists_app.txt:637-647"
|
||||
source_ref: "src/core/FileLocator.cpp:223, src/renderer/Shader.cpp:1803-1804, src/renderer/Shader.cpp:2207-2210, make/CMakeLists_app.txt:639-649"
|
||||
- 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.*"
|
||||
source_ref: "plugins/flexdmd/UltraDMD.cpp:20-24,32-34, plugins/flexdmd/resources/AssetManager.cpp:103-109,252-272, make/CMakeLists_plugin_FlexDMD.txt:179-182"
|
||||
- what: "plugins/scoreview/layouts/, the default score view layouts"
|
||||
source_ref: "plugins/scoreview/ScoreViewPlugin.cpp:64-77, make/CMakeLists_plugin_ScoreView.txt:92"
|
||||
source_ref: "plugins/flexdmd/UltraDMD.cpp:20-24,32-34, plugins/flexdmd/resources/AssetManager.cpp:103-109,260-280, make/CMakeLists_plugin_FlexDMD.txt:179-182"
|
||||
- what: "plugins/nixie/layouts/, the default .nix score display layouts and their glass textures"
|
||||
source_ref: "plugins/nixie/NixiePlugin.cpp:96-110, plugins/nixie/Nixie.cpp:45-65,104-129, make/CMakeLists_plugin_Nixie.txt:92-95"
|
||||
note: >-
|
||||
The last source each of the backglass, score view and topper windows
|
||||
falls back to. Every .nix file in the folder is parsed, and a file is
|
||||
kept only when it parses completely.
|
||||
- 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"
|
||||
note: >-
|
||||
Copied only when the platform script has fetched them into
|
||||
third-party/: index.json, maps/ and platforms/ from
|
||||
tomlogic/pinball-memory-maps, catalog/, machines/ and controllers/
|
||||
from vpinball/pinmame-game-defs. A table's own pinmame folder or the
|
||||
PinMAMEPath setting takes precedence.
|
||||
|
||||
shipped_without_a_reader:
|
||||
note: "Copied into the build output but unreachable in the desktop standalone binary"
|
||||
entries:
|
||||
- what: "docs/Changelog.txt"
|
||||
source_ref: "src/ui/win/dialogs/AboutDialog.cpp:34, make/CMakeLists_sources.txt:542-543, make/CMakeLists_app.txt:634"
|
||||
note: "The About dialog is in the Windows editor source list only."
|
||||
source_ref: "src/ui/win/dialogs/AboutDialog.cpp:34, src/core/stdafx.h:36-40, src/core/AppCommands.cpp:14-18, make/CMakeLists_app.txt:636"
|
||||
note: "The About dialog belongs to the Windows editor, compiled out of every standalone build."
|
||||
- what: "assets/web/, vpx.html and the files it pulls"
|
||||
source_ref: "lib/src/WebServer.cpp:92-99, make/CMakeLists_sources.txt:819-825"
|
||||
source_ref: "lib/src/WebServer.cpp:92-99, make/CMakeLists_sources.txt:837-845"
|
||||
note: "The web server is compiled into the iOS and Android library build only."
|
||||
|
||||
user_supplied_paths:
|
||||
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:322-367, pinmame src/libpinmame/libpinmame.cpp:1080"
|
||||
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:437-509, pinmame src/libpinmame/libpinmame.cpp:86,1141-1143"
|
||||
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
|
||||
on Linux and macOS. Batocera patches that last fallback to
|
||||
<prefpath>/pinmame.
|
||||
on Linux and macOS and <prefpath>/pinmame on iOS and Android.
|
||||
Batocera patches the Linux fallback to <prefpath>/pinmame. On Windows
|
||||
the last resort is the registered Visual PinMAME install folder, whose
|
||||
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:304-337,343-346"
|
||||
source_ref: "pinmame src/libpinmame/libpinmame.cpp:361-394,400-403"
|
||||
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:339,346-347, plugins/pinmame/Controller.cpp:183-241"
|
||||
source_ref: "plugins/pinmame/PinMAMEPlugin.cpp:448,459-460,468-469, plugins/pinmame/Controller.cpp:184-242"
|
||||
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:244-284"
|
||||
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:33-45, plugins/b2slegacy/forms/FormBackglass.cpp:370-378,411-423"
|
||||
note: "The legacy plugin checks the file version against the B2S server version on load."
|
||||
source_ref: "plugins/b2s/B2SServer.cpp:317-323,446-463,487-491, 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).
|
||||
- what: "Serum colorizations, <table folder>/serum/<rom>/<rom>.cROMc or .cRZ, else the SerumPath setting"
|
||||
source_ref: "plugins/serum/serum.cpp:49,561-602"
|
||||
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."
|
||||
- what: "VNI colorizations, <table folder>/vni/<rom>/<rom>.pal with an optional .vni, else the VniPath setting"
|
||||
source_ref: "plugins/vni/vni.cpp:39,326-376"
|
||||
note: "pin2dmd.pal and pin2dmd.vni are accepted in the same folder, and PinMAME games are also looked up in <table folder>/pinmame/altcolor."
|
||||
- what: "alternative sound packages, <table folder>/altsound/<rom>, else <table folder>/pinmame/altsound/<rom>, else the plugin's Folder setting"
|
||||
source_ref: "plugins/altsound/AltSoundPlugin.cpp:28,110-143"
|
||||
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:129-157, plugins/pup/PUPPlugin.cpp:64,292-294"
|
||||
- what: "score view layout, <table basename>.scv, else <table folder name>.scv, else the LayoutFolder setting"
|
||||
source_ref: "plugins/scoreview/ScoreViewPlugin.cpp:23,46-62"
|
||||
source_ref: "plugins/pup/PUPManager.cpp:136-164, plugins/pup/PUPPlugin.cpp:66,298-309"
|
||||
note: "A namespace folder may sit above the ROM folder."
|
||||
- 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"
|
||||
note: >-
|
||||
The setting names one .nix file or a folder of them. Each window walks
|
||||
the chain on its own and stops at the first source with a layout
|
||||
targeting it. Glass and picture images are read relative to the
|
||||
layout file.
|
||||
- what: "DOF configuration, <prefpath>/directoutputconfig/GlobalConfig_B2SServer.xml, else ./directoutputconfig/ under the working directory"
|
||||
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:122-136, src/core/FileLocator.cpp:267-377"
|
||||
source_ref: "src/core/ScriptGlobalTable.cpp:120-134, src/core/FileLocator.cpp:267-398"
|
||||
note: "In the legacy layout, music/ under the installation folder, then the table folder, then the preferences folder."
|
||||
- what: "textbox fonts, <table folder>/<FontName>-<Style>.ttf"
|
||||
source_ref: "src/parts/textbox.cpp:701-722"
|
||||
- what: "textbox and decal fonts, <table folder>/<FontName>-<Style>.ttf"
|
||||
source_ref: "src/renderer/TextRenderer.cpp:116-153, src/parts/textbox.cpp:602, 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:1325-1331, src/parts/pintable.cpp:1383-1399, src/parts/pintable.h:560-587"
|
||||
source_ref: "src/parts/pintable.cpp:1495-1511, src/parts/pintable.cpp:1058-1110, src/parts/pintable.h:599-613"
|
||||
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
|
||||
table's name, then its folder's name, a settings profile variant of
|
||||
each being tried first. The .pov is imported only when no .ini
|
||||
exists, else autopov.pov when present.
|
||||
|
||||
generated_files:
|
||||
- what: "VPinballX.ini, the settings file"
|
||||
source_ref: "src/core/VPApp.cpp:270-284, src/core/AppCommands.cpp:533-539"
|
||||
source_ref: "src/core/VPApp.cpp:293-307, src/core/AppCommands.cpp:543-549"
|
||||
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:527-557, src/utils/Logger.cpp:164-165"
|
||||
source_ref: "src/core/ScriptGlobalTable.cpp:525-558, src/utils/Logger.cpp:160-161"
|
||||
- what: "<table>.info, the frontend information file beside the table"
|
||||
source_ref: "src/parts/pintable.cpp:1113-1124,1190-1215, src/parts/pintable.h:615-616, src/core/player.cpp:985,999"
|
||||
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:1081,1083-1087"
|
||||
source_ref: "pinmame src/libpinmame/libpinmame.cpp:87,89-90,1144-1146"
|
||||
note: "Written by PinMAME as the machine runs."
|
||||
Reference in new issue
Block a user