mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-20 10:23:16 -05:00
Nixie's layouts at vpinball e4a79a5, PinMAME memmaps at tomlogic/pinball-memory-maps 68c1b337 and game definitions at vpinball/pinmame-game-defs 6eece7e5: the subset every platform build copies into third-party/. 1,280 files, each matched to its upstream git blob, documented as three directory entries.
587 lines
32 KiB
YAML
587 lines
32 KiB
YAML
emulator: visual-pinball
|
|
type: standalone
|
|
core_classification: game_engine
|
|
source: "https://github.com/vpinball/vpinball"
|
|
upstream: "https://github.com/vpinball/vpinball"
|
|
profiled_date: "2026-10-20"
|
|
source_commit: "e4a79a5d58df3d543ffb5360ae8458cfdf4cb7bb"
|
|
core_version: "10.8.1"
|
|
display_name: "Visual Pinball X"
|
|
cores:
|
|
- vpinball
|
|
- visual-pinball
|
|
systems:
|
|
- vpinball
|
|
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: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
|
|
<dir>/VPinballX.ini -Play <rom>`, RetroBat drives the Windows build with its
|
|
registered VPinMAME COM server.
|
|
|
|
File location sits in one class. FileLocator holds m_appPath, the
|
|
read-only installation folder, and m_prefPath, the preferences folder that
|
|
-PrefPath overrides, and it works in one of two layout modes: AppPrefData
|
|
splits static data, settings and table files across the three, AppOnly keeps
|
|
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,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
|
|
redirects the PinMAME root from $HOME/.pinmame to <prefpath>/pinmame.
|
|
|
|
Table scripts pull their libraries through SearchScript, which walks ten
|
|
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: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: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: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: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: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 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: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: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,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 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 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: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, <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).
|
|
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
|
|
games and holding the family's system ROMs. A game declares its system ROMs
|
|
in its own set as well, so they are read from the game zip when it carries
|
|
them and from the container zip otherwise. The Allied Leisure and Game Plan
|
|
110 games declare nothing else. The nine are listed below.
|
|
|
|
Two shared data files sit outside that ROM content and are listed below as
|
|
well. Two more that the MAME lineage would suggest are unreachable here. The
|
|
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
|
|
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: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:411-427, pinmame src/libpinmame/libpinmame.h:451-467),
|
|
so osd_is_key_pressed always answers 0
|
|
(pinmame src/libpinmame/libpinmame.cpp:576-582) and the menu cannot be opened.
|
|
|
|
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:
|
|
|
|
- name: gts1.zip
|
|
path: "pinmame/roms/gts1.zip"
|
|
system: vpinball
|
|
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"
|
|
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
|
|
$HOME/.pinmame. Each game declares the same two ROMs and reads them from
|
|
its own zip first, so this archive is only reached when the game zip
|
|
lacks them. A member is matched by name, then by checksum.
|
|
contents:
|
|
- name: A1752CF.bin
|
|
size: 2048
|
|
crc32: "614a3bd9"
|
|
sha1: "febca18fb6f96037ca82e515dd161dfcb0e4c776"
|
|
- name: A1753CE.bin
|
|
size: 2048
|
|
crc32: "4cd312dd"
|
|
sha1: "31245daa9972ef8652caee69986585bb8239e86e"
|
|
|
|
- name: gts1s.zip
|
|
path: "pinmame/roms/gts1s.zip"
|
|
system: vpinball
|
|
category: bios_zip
|
|
required: false
|
|
description: "Gottlieb System 1 with sound board, system ROMs"
|
|
source_ref: "pinmame src/wpc/gts1games.c:24-31,36-37, pinmame src/wpc/gts1.h:229-233"
|
|
note: "Container set, clone of gts1 with the same two ROMs, so gts1.zip answers for it."
|
|
contents:
|
|
- name: A1752CF.bin
|
|
size: 2048
|
|
crc32: "614a3bd9"
|
|
sha1: "febca18fb6f96037ca82e515dd161dfcb0e4c776"
|
|
- name: A1753CE.bin
|
|
size: 2048
|
|
crc32: "4cd312dd"
|
|
sha1: "31245daa9972ef8652caee69986585bb8239e86e"
|
|
|
|
- name: gts80.zip
|
|
path: "pinmame/roms/gts80.zip"
|
|
system: vpinball
|
|
category: bios_zip
|
|
required: false
|
|
description: "Gottlieb System 80 with speech board, system ROMs"
|
|
source_ref: "pinmame src/wpc/gts80games.c:48-60,62-74,90-91"
|
|
note: >-
|
|
Container set, parent of the System 80 games, which declare the same two
|
|
ROMs themselves. The 7-digit conversions declare u2g807dc.bin and
|
|
u3g807dc.bin in their place, which this set does not hold.
|
|
contents:
|
|
- name: u2_80.bin
|
|
size: 4096
|
|
crc32: "4f0bc7b1"
|
|
sha1: "612cbacdca5cfa6ad23940796df3b7c385be79fe"
|
|
- name: u3_80.bin
|
|
size: 4096
|
|
crc32: "1e69f9d0"
|
|
sha1: "ad738cac2555830257b531e5e533b15362f624b9"
|
|
|
|
- name: gts80s.zip
|
|
path: "pinmame/roms/gts80s.zip"
|
|
system: vpinball
|
|
category: bios_zip
|
|
required: false
|
|
description: "Gottlieb System 80, system ROMs"
|
|
source_ref: "pinmame src/wpc/gts80games.c:48-60,92-93"
|
|
note: "Container set, clone of gts80 with the same two ROMs, so gts80.zip answers for it."
|
|
contents:
|
|
- name: u2_80.bin
|
|
size: 4096
|
|
crc32: "4f0bc7b1"
|
|
sha1: "612cbacdca5cfa6ad23940796df3b7c385be79fe"
|
|
- name: u3_80.bin
|
|
size: 4096
|
|
crc32: "1e69f9d0"
|
|
sha1: "ad738cac2555830257b531e5e533b15362f624b9"
|
|
|
|
- name: gts80a.zip
|
|
path: "pinmame/roms/gts80a.zip"
|
|
system: vpinball
|
|
category: bios_zip
|
|
required: false
|
|
description: "Gottlieb System 80A with speech board, system ROMs"
|
|
source_ref: "pinmame src/wpc/gts80games.c:76-88,95-96"
|
|
note: "Container set, parent of the System 80A games, which declare the same two ROMs themselves."
|
|
contents:
|
|
- name: u2_80a.bin
|
|
size: 4096
|
|
crc32: "241de1d4"
|
|
sha1: "9d5942704cbdec6565d6335e33e9f7e4c60a41ac"
|
|
- name: u3_80a.bin
|
|
size: 4096
|
|
crc32: "2d77ccdc"
|
|
sha1: "47241ccd365e8d74d5aa5b775acf6445cc95b8a8"
|
|
|
|
- name: gts80as.zip
|
|
path: "pinmame/roms/gts80as.zip"
|
|
system: vpinball
|
|
category: bios_zip
|
|
required: false
|
|
description: "Gottlieb System 80A, system ROMs"
|
|
source_ref: "pinmame src/wpc/gts80games.c:76-88,97-98"
|
|
note: "Container set, clone of gts80a with the same two ROMs, so gts80a.zip answers for it."
|
|
contents:
|
|
- name: u2_80a.bin
|
|
size: 4096
|
|
crc32: "241de1d4"
|
|
sha1: "9d5942704cbdec6565d6335e33e9f7e4c60a41ac"
|
|
- name: u3_80a.bin
|
|
size: 4096
|
|
crc32: "2d77ccdc"
|
|
sha1: "47241ccd365e8d74d5aa5b775acf6445cc95b8a8"
|
|
|
|
- name: allied.zip
|
|
path: "pinmame/roms/allied.zip"
|
|
system: vpinball
|
|
category: bios_zip
|
|
required: false
|
|
description: "Allied Leisure system ROMs"
|
|
source_ref: "pinmame src/wpc/allied.c:872-879"
|
|
note: >-
|
|
Container set, parent of the Allied Leisure games. Those games declare
|
|
these three ROMs and no other, so each one runs from its own zip or from
|
|
this one.
|
|
contents:
|
|
- name: alliedu5.bin
|
|
size: 1024
|
|
crc32: "e4fb64fb"
|
|
sha1: "a3d9de7cbfb42180a860e0bbbeaeba96d8bd1e20"
|
|
- name: alliedu6.bin
|
|
size: 1024
|
|
crc32: "dca980dd"
|
|
sha1: "3817d75413854d889fc1ce4fd6a51d820d1e0534"
|
|
- name: alliedu3.bin
|
|
size: 1024
|
|
crc32: "13f42789"
|
|
sha1: "baa0f73fda08a3c5d6f1423fb329e4febb07ef97"
|
|
|
|
- name: gp_110.zip
|
|
path: "pinmame/roms/gp_110.zip"
|
|
system: vpinball
|
|
category: bios_zip
|
|
required: false
|
|
description: "Game Plan Model 110 system ROMs"
|
|
source_ref: "pinmame src/wpc/gpgames.c:68-74, pinmame src/wpc/gp.h:201-205"
|
|
note: >-
|
|
Container set, parent of the Game Plan cocktail games. Those games declare
|
|
these two ROMs and no other, so each one runs from its own zip or from
|
|
this one.
|
|
contents:
|
|
- name: a-110.u12
|
|
size: 2048
|
|
crc32: "ed0d518b"
|
|
sha1: "8f3ca8792ad907c660d9149a1aa3a3528c7573e3"
|
|
- name: b1-110.u13
|
|
size: 2048
|
|
crc32: "a223f2e8"
|
|
sha1: "767e15e19e11399935c890c1d1034dccf1ad7f92"
|
|
|
|
- name: recel.zip
|
|
path: "pinmame/roms/recel.zip"
|
|
system: vpinball
|
|
category: bios_zip
|
|
required: false
|
|
description: "Recel System III shared program"
|
|
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
|
|
size: 2048
|
|
crc32: "d0c4695d"
|
|
sha1: "4846adb3f6c292626840ba5255ffc5e788a69301"
|
|
- name: a2362.b2
|
|
size: 2048
|
|
crc32: "39a70611"
|
|
sha1: "8545e168a5f256150bcff12d1e6d8efffd08c3cd"
|
|
|
|
- name: hiscore.dat
|
|
system: vpinball
|
|
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: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
|
|
no-op. It resolves to a bare filename against the working directory, which
|
|
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: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: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
|
|
before each run. With it on, InitCheat loads the database and an
|
|
absent file leaves the menu showing "cheat database not found"
|
|
(pinmame src/cheat.c:2463). Same bare-filename resolution as hiscore.dat.
|
|
|
|
- name: fabian-hrir.sofa
|
|
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-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 src/assets, which the build
|
|
copies beside the binary.
|
|
|
|
- name: "plugins/nixie/layouts/"
|
|
type: directory
|
|
path: "plugins/nixie/layouts/"
|
|
system: vpinball
|
|
required: false
|
|
bundled: true
|
|
description: "Nixie default score display layouts, twelve .nix files and the four glass textures they name"
|
|
source_ref: "plugins/nixie/NixiePlugin.cpp:96-110, plugins/nixie/Nixie.cpp:45-65,104-129, make/CMakeLists_plugin_Nixie.txt:92-95"
|
|
note: >-
|
|
Copied from plugins/nixie/layouts in vpinball at e4a79a5. It is the last
|
|
source each Nixie window falls back to, after the table's own .nix and
|
|
the LayoutFolder setting. Every .nix file in the folder is parsed, and
|
|
glass images are read relative to the layout that names them. Without
|
|
the folder the windows get no default layout.
|
|
|
|
- name: "plugins/pinmame/memmaps/"
|
|
type: directory
|
|
path: "plugins/pinmame/memmaps/"
|
|
system: vpinball
|
|
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:184-242, 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
|
|
fetches and copies as index.json, maps/ and platforms/. The plugin falls
|
|
back to this folder when neither the table's pinmame folder nor the
|
|
PinMAMEPath setting holds a memmaps folder. Without one no memory map is
|
|
loaded and the machine still runs.
|
|
|
|
- name: "plugins/pinmame/gamedefs/"
|
|
type: directory
|
|
path: "plugins/pinmame/gamedefs/"
|
|
system: vpinball
|
|
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:244-284, 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
|
|
fetches and copies as catalog/, machines/ and controllers/. The plugin
|
|
falls back to this folder the same way as memmaps. Without
|
|
catalog/pinmame.json PinMAME receives an empty game definition and the
|
|
machine still runs.
|
|
|
|
analysis:
|
|
shipped_with_the_binary:
|
|
note: >-
|
|
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:633-637"
|
|
entries:
|
|
- what: "scripts/, the .vbs library tables include"
|
|
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,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: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: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,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, 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: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: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 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: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: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: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: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,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"
|
|
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: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 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: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: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: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:87,89-90,1144-1146"
|
|
note: "Written by PinMAME as the machine runs."
|