mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-11 14:03:23 -05:00
473 lines
25 KiB
YAML
473 lines
25 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-04"
|
|
source_commit: "8a9f36d227a0e71be33c36418e4e3ffc8c5c2723"
|
|
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: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).
|
|
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,57,63-66,
|
|
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:379-412,
|
|
src/core/ScriptGlobalTable.cpp:352-381). The
|
|
scripts/ directory the build ships carries the 71 .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
|
|
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,
|
|
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).
|
|
|
|
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
|
|
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/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).
|
|
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); the directory is not copied for the BGFX
|
|
renderer. Three 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).
|
|
|
|
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,
|
|
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
|
|
library build compiles (lib/src/WebServer.cpp:92-99,
|
|
make/CMakeLists_sources.txt:819-825, 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).
|
|
|
|
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:1071); 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),
|
|
so osd_is_key_pressed always answers 0
|
|
(pinmame src/libpinmame/libpinmame.cpp:519-525) and the menu cannot be opened.
|
|
|
|
The pinmame observations were read at 268854a18be9ad334569b5654345c06a7d0ef521,
|
|
the revision the build scripts fetch (platforms/config.sh:11).
|
|
|
|
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; 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:70-73, pinmame src/wpc/recel.h:119-130"
|
|
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, 1755, src/core/player.cpp:463-465"
|
|
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:1080-1087,
|
|
pinmame src/libpinmame/fileio.c:141, 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"
|
|
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
|
|
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"
|
|
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.
|
|
|
|
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:631-635"
|
|
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"
|
|
- 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"
|
|
- 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"
|
|
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"
|
|
- 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"
|
|
- what: "plugins/inspector/assets/, the inspector web pages"
|
|
source_ref: "plugins/inspector/InspectorPlugin.cpp:618-626, make/CMakeLists_plugin_Inspector.txt:96"
|
|
|
|
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."
|
|
- what: "assets/web/, vpx.html and the files it pulls"
|
|
source_ref: "lib/src/WebServer.cpp:92-99, make/CMakeLists_sources.txt:819-825"
|
|
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"
|
|
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.
|
|
- what: "PinMAME game aliases, <pinmame root>/alias.txt"
|
|
source_ref: "pinmame src/libpinmame/libpinmame.cpp:304-337,343-346"
|
|
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"
|
|
note: >-
|
|
Optional. index.json maps the ROM name to a map file, whose
|
|
_metadata.platform names the platforms/<platform>.json loaded with it.
|
|
- 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."
|
|
- what: "Serum colorizations, <table folder>/serum/<rom>/<rom>.cROMc or .cRZ, else the SerumPath setting"
|
|
source_ref: "plugins/serum/serum.cpp:49,561-602"
|
|
note: "A namespace folder may sit above the ROM folder; 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; 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"
|
|
- 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"
|
|
- what: "table music, music/ beside the table"
|
|
source_ref: "src/core/ScriptGlobalTable.cpp:122-136, src/core/FileLocator.cpp:267-377"
|
|
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: "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"
|
|
|
|
generated_files:
|
|
- what: "VPinballX.ini, the settings file"
|
|
source_ref: "src/core/VPApp.cpp:270-284, src/core/AppCommands.cpp:533-539"
|
|
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; vpinball.log in the preferences folder"
|
|
source_ref: "src/core/ScriptGlobalTable.cpp:527-557, src/utils/Logger.cpp:164-165"
|
|
- what: "PinMAME state: nvram/, cfg/, hi/, inp/, memcard/ and sta/"
|
|
source_ref: "pinmame src/libpinmame/libpinmame.cpp:1081,1083-1087"
|
|
note: "Written by PinMAME as the machine runs."
|