Files
libretro/emulators/future-pinball-fploader.yml
T
Abdessamad Derraz 7ecd8c948f chore: record the sha1 of bundled files
336 entries for files that arrive with the emulator named no hash, so
the collected copy was the only record of which file the release
ships. Each now carries the sha1 and size of the copy collected from
that emulator's own release, so the profile keeps the file's identity
once the copy leaves the collection. Entries whose name is a pattern
keep no hash.
2026-10-20 09:29:18 +02:00

932 lines
34 KiB
YAML

emulator: future-pinball-fploader
type: standalone
core_classification: enhanced_fork
source: "https://github.com/ravarcade/BAM_FPloader"
upstream: "https://www.ravarcade.pl/"
profiled_date: "2026-08-11"
source_commit: "e13007994011ae57dd9d9f48674c1f774183914b"
core_version: "1.5-408"
display_name: "Future Pinball (BAM)"
cores:
- future-pinball-fploader
- bam
systems:
- fpinball
mode: standalone
notes: |
BAM, Better Arcade Mode, by Rafal Janicki. FPLoader.exe starts
Future Pinball.exe suspended, writes the BAM.dll path into the new process
with VirtualAllocEx and WriteProcessMemory, runs LoadLibraryA on it through
CreateRemoteThread, waits for that thread and resumes the main one. Everything
else lives in BAM.dll, which detours the running program. The loader is
published as source, and the shipped FPLoader.exe carries the same .text and
.rdata as the build committed to that repository and differs only by an
Authenticode blob, 9472 bytes against 5384.
ref: BAM_FPloader FPLoader.cpp:259-305, FPLoader.exe .text sha1
d5ca74154fe97002, PE timestamp 2016-04-25 19:17:12
BAM.dll is searched in the loader's own directory first, then in
C:\Games\Future Pinball\BAM\. Both missing puts up "Couldn't locate BAM.dll."
and returns -1. Future Pinball.exe comes from /FPEXE if that switch names an
existing file, otherwise from one level above the loader, then from the
loader's directory, then from C:\Games\Future Pinball\. The same failure path
reports "Couldn't locate Future Pinball.exe.". Before the process is created
the loader prepends its own directory to %PATH% so the system resolves
renderingengine.dll from there while the working directory is the game
directory. /STAYINRAM keeps the loader alive until the game thread ends. The
rest of the command line is handed to Future Pinball untouched, which is how
/Open, /Play, /Exit and /ArcadeRender reach it.
ref: BAM_FPloader FPLoader.cpp:40-48, 87-111, 166-240, 249-257
BAM.dll is closed source. Its version resource reads 1.5.408 and its debug
tags name BAM.cpp, dllmain.cpp, BallManager.cpp, RenderEngine.cpp,
plugin.cpp, pbo.cpp, stereo3d.cpp and debug.cpp. Twenty five entry points are
detoured in one pass: CreateFileA, CreateFileW, ReadFile, WriteFile,
CloseHandle, GetFileSize, DeleteFileA, FindResourceA, LoadResource,
LockResource, SizeofResource, CoCreateInstance, StgOpenStorage,
GetOpenFileNameA, ChooseColorA, GetDlgItem, SendMessageA, ShowWindow,
SwapBuffers, ChoosePixelFormat, SetPixelFormat, wglCreateContext,
wglDeleteContext, wglMakeCurrent and wglGetProcAddress, with glFrustum,
glTexImage2D and wglChoosePixelFormatARB taken separately. That is how BAM
sees the program's own resource and file traffic and can answer it. Newton is
reached through GetModuleHandleA on the copy Future Pinball already imported
followed by GetProcAddress on 83 entry points. No second copy is loaded.
ref: BAM.dll 1.5-408 .text:0x10082a75-0x10082f3d, 0x100831b3-0x100831d9,
0x1002ab92-0x1002abeb, .rsrc version, debug tags Routed_glTexImage2D and
Routed_wglChoosePixelFormatARB
Every path BAM builds hangs off the directory holding BAM.dll. The module
handle saved at load time goes through GetModuleFileNameA, the result is cut
at the last separator, and one of two format strings finishes the job:
"%s\%s.%s" for a name and an extension, "%s\%s" for the cfg subdirectory.
Settings for a table are cfg\<table>.cfg and cfg\<table>.seq, with default.cfg
and default.seq as the fallbacks.
ref: BAM.dll 1.5-408 .text:0x10025e40-0x1002605a, 0x100319a0-0x10031d48,
0x10032bdb-0x10032f23
Keys are the one text file. bam.cfg is read with fopen_s and parsed as
"%s = %s" lines over the names Menu, Menu2, Left, Right, Up, Down, Enter,
Snapshot, 3DSwitch, SaveXML, SnapShotPath, SnapShotBackboxPath, HeadTracking,
ForceArcadeMode, SwitchToNextBall, SwitchToPrevBall, RoomOnOff, Cam, Overlay,
BallShadows and OverlayAspectFix. A Keyboard.cfg found beside it is renamed to
bam.cfg first. RetroBat rewrites the two SnapShotPath lines before launching.
ref: BAM.dll 1.5-408 .text:0x100c3960-0x100c3a97, .rdata:0x10654208-0x10654324,
retrobat emulatorLauncher/Generators/Fpinball.Generator.cs:183-209
A ball or a room is a zip of BMP/<id>.bmp entries named for the resource ids
Future Pinball itself uses: the program carries 29 resources of type BMP and
every id the shipped packs contain is one of them, 452 being the ball.
balls\*.zip is walked with FindFirstFileA and each hit becomes a choice in the
menu, while default.zip in the BAM directory is applied without being chosen. The
routed FindResourceA answers the nine SHADERS resources the same way, while
the single XML resource, id 464, is read straight from the program by the save
path and is what the presets under XML\ are edited copies of. The 83 GLSL
programs BAM renders with are
resources of type TEXT inside BAM.dll, so no shader file is read from disk.
ref: BAM.dll 1.5-408 .text:0x1002d4f3-0x1002d52d, 0x100ae8ec-0x100ae990,
0x10037130-0x100371de, 0x1007e83b-0x1007e896, .rsrc TEXT,
Future Pinball.exe 1.9.1.20101231 .rsrc BMP, SHADERS, XML
Plugins are loaded by changing the working directory to plugins\, walking
*.dll with FindFirstFileA, calling LoadLibraryA on each and binding
BAM_PluginStart and BAM_PluginStop. A plugin keeps its settings by writing a
raw structure to <its own name>.cfg in that working directory, which is why
the cfg files beside the plugins carry no text.
ref: BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c,
BAM_Plugins Common/BAM.h:116-157
renderingengine.dll is bound in BAM.dll's import directory through
FindProgram, SetModuleWithResources, LoadFileToMemory and SaveFileFromMemory,
so the loader resolves it before any BAM code runs. It carries Assimp, zlib,
libpng and libjpeg, reads the zip packs and writes the per table shadow cache
under Cache\.
ref: BAM.dll 1.5-408 import directory, .text:0x10105c18-0x1010697f
ES-DE declares the emulator as FUTURE-PINBALL-FPLOADER for Windows only,
finding FPLoader.exe under BAM\, BAM-OpenVR\ or BAM-OpenVR-OC\, and invokes it
with /Exit /Play /Open in the background. RetroBat reaches the same binary
under the emulator or core key bam, through the generator it shares with
Future Pinball. Two distributions are served: bam-setup.exe carries the
loader, the mod, the renderer, the tools, the plugins, the ball packs and the
physics presets, while BAM-OpenVR.zip carries the OpenVR plugin and the
settings files the other package leaves for the first save to create.
ref: es-de resources/systems/windows/es_find_rules.xml:448-461,
es-de resources/systems/windows/es_systems.xml:764,
retrobat emulatorLauncher/Generators/Fpinball.Generator.cs:131-135
files:
# -- The chain FPLoader needs before it can inject anything --
- name: BAM.dll
system: fpinball
required: true
bundled: true
size: 8266240
sha1: "ad5f6f31e506d4458720ad3c809d529d48103622"
description: "The mod, injected into Future Pinball and holding every feature"
source_ref: "BAM_FPloader FPLoader.cpp:45, 166-182"
note: >-
Taken from the loader's directory, else from C:\Games\Future Pinball\BAM\.
Neither present ends the loader with a message box.
- name: renderingengine.dll
system: fpinball
required: true
bundled: true
size: 8791552
sha1: "b471bb4affb974e0af9874ee6fe28c4417809926"
description: "Rendering engine and asset loader behind BAM"
source_ref: "BAM.dll 1.5-408 import directory, BAM_FPloader FPLoader.cpp:249-257"
note: >-
Bound statically by BAM.dll, so the injected LoadLibraryA fails without
it. The loader adds its own directory to %PATH% for this file alone.
- name: Future Pinball.exe
system: fpinball
required: true
size: 28547584
description: "The program BAM starts and modifies"
source_ref: "BAM_FPloader FPLoader.cpp:41, 46, 184-240"
note: >-
Probed with GetFileAttributesA at four locations, /FPEXE first. Absent,
the loader stops before creating any process. The size is that of
release 1.9.1.20101231.
# -- Tools shipped beside the loader --
- name: BAM-Tracker.exe
sha1: c4fc4467ccec0c9c2852a9342b5b500511b6c886
system: fpinball
required: false
bundled: true
size: 207104
description: "Head tracking calibration host"
source_ref: "BAM-Tracker.exe import directory, BAM.dll 1.5-408 .text:0x1008320e"
note: >-
Imports BAM.dll and runs it outside the game. BAM.dll lowercases the host
command line and looks for this name to know it is hosted by the tracker
rather than by Future Pinball.
- name: ModelImporter.exe
sha1: dd3874742bfe5f9c2828cb9c4e249c2f4722bd51
system: fpinball
required: false
bundled: true
size: 4553472
description: "Converts models to the .fpm form tables import"
source_ref: "ModelImporter.exe import directory, .rdata dialog filter"
note: >-
Bound to renderingengine.dll for the Assimp side. Its open dialog accepts
.fpm, .obj, .ms3d, .md5mesh and .fbx.
# -- Settings read from the BAM directory. BAM writes each of them, so a fresh
# install has only default.seq and the first save creates the rest.
- name: bam.cfg
system: fpinball
aliases:
- Keyboard.cfg
required: false
size: 316
description: "Key bindings and screenshot paths, the one text config"
source_ref: "BAM.dll 1.5-408 .text:0x100c3960-0x100c3a97"
note: >-
Keyboard.cfg is the older name and is renamed on sight. 9999 in a key
slot leaves the function unbound.
- name: default.cfg
system: fpinball
required: false
size: 3072
description: "Global camera, lighting, physics and rendering settings"
source_ref: "BAM.dll 1.5-408 .text:0x100326ba-0x100371bc"
note: >-
A binary block of the same shape as a per table cfg. Saving it reports
"default.cfg saved".
- name: default.seq
sha1: bcc92f9af26afb64a885ef789cbb10d6f3c7f453
system: fpinball
required: false
bundled: true
size: 1284
category: game_data
description: "Camera animation sequences used when a table brings none"
source_ref: "BAM.dll 1.5-408 .text:0x10025e40-0x1002608f"
note: >-
Read as text. Every line is a comment to Future Pinball's own parser and
carries a position, a scale, two angles and a duration.
- name: default.xml
system: fpinball
required: false
description: "Physics values applied when a table specifies none"
source_ref: "BAM.dll 1.5-408 .text:0x100ae843-0x100ae8a7, 0x10037130-0x100371de"
note: >-
Same document shape as the presets under XML\. The save path produces one
by extracting resource 464 of type XML from Future Pinball, 6264 bytes, so
no copy ships.
- name: default.zip
system: fpinball
required: false
category: game_data
description: "Texture pack applied to every table"
source_ref: "BAM.dll 1.5-408 .text:0x100ae8ec-0x100ae990"
note: >-
Holds BMP/<id>.bmp entries keyed by Future Pinball resource id, the form
the ball packs and the Zendonius packs use.
- name: XML_Presets.txt
system: fpinball
required: false
description: "List of physics documents offered in the presets menu"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbd8a"
note: >-
Read whole and split on "%d: %s" lines. The menu entry Add current XML
appends to it, which is how the files under XML\ become reachable.
- name: Reality.dat
system: fpinball
required: false
size: 920
description: "Physical measurements of the cabinet and the screen"
source_ref: "BAM.dll 1.5-408 .text:0x10031bbb, 0x10031ebe"
note: >-
Read at startup and rewritten from the Reality submenu. Head tracking and
stereo geometry are computed from it.
- name: WiiMoteCams.dat
system: fpinball
required: false
size: 16
description: "WiiMote identifiers kept for the WiiMote camera mode"
source_ref: "BAM.dll 1.5-408 .text:0x10031d22, 0x10032f9f"
- name: CalibrationBoardData.cfg
system: fpinball
required: false
size: 272
description: "Dimensions of the printed board used to calibrate cameras"
source_ref: "BAM.dll 1.5-408 .text:0x10031ad8, 0x10032d4b"
- name: stereoCalibrationData.cfg
system: fpinball
required: false
size: 1160
description: "Result of the two camera calibration pass"
source_ref: "BAM.dll 1.5-408 .text:0x10031c75, 0x10032de3"
# -- Ball and room packs, walked as balls\*.zip --
- name: axis.zip
sha1: b701f91eae625a5e8f7bf56f104be506c8d1c8d8
system: fpinball
path: "Balls/axis.zip"
required: false
bundled: true
category: game_data
size: 480842
description: "Ball texture showing the rotation axes"
source_ref: "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d"
- name: Baseball.zip
sha1: badfe5b7ab16c88f3fe255143546932c09fc2097
system: fpinball
path: "Balls/Baseball.zip"
required: false
bundled: true
category: game_data
size: 248548
description: "Baseball ball texture"
source_ref: "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d"
- name: Basketball 1.zip
sha1: 5aff2d72c317d58a6f1951811a31ec1b99dfdfe4
system: fpinball
path: "Balls/Basketball 1.zip"
required: false
bundled: true
category: game_data
size: 148883
description: "Basketball ball texture"
source_ref: "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d"
- name: Basketball 2.zip
sha1: 1fa517b848c69c0b2c2f3a32e4097a157fff3aa2
system: fpinball
path: "Balls/Basketball 2.zip"
required: false
bundled: true
category: game_data
size: 74296
description: "Second basketball ball texture"
source_ref: "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d"
- name: Cue Black.zip
sha1: 9238286e57f346fd9b9ed3d8ffa977083b9d3feb
system: fpinball
path: "Balls/Cue Black.zip"
required: false
bundled: true
category: game_data
size: 548084
description: "Black cue ball texture"
source_ref: "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d"
- name: Cue White.zip
sha1: 948eec0af66150dc908622bd48e867e85fb0d6c5
system: fpinball
path: "Balls/Cue White.zip"
required: false
bundled: true
category: game_data
size: 554040
description: "White cue ball texture"
source_ref: "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d"
- name: earth.zip
sha1: 0b30d717df74d90c26769d58055b507b89fdc1fc
system: fpinball
path: "Balls/earth.zip"
required: false
bundled: true
category: game_data
size: 728508
description: "Globe ball texture, three BMP resources"
source_ref: "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d"
- name: EYETOY.zip
sha1: 89d8f29048176e8faff89cd48d0eda7b4875bf49
system: fpinball
path: "Balls/EYETOY.zip"
required: false
bundled: true
category: game_data
size: 373860
description: "EyeToy ball texture"
source_ref: "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d"
- name: Fireball.zip
sha1: 28a08c3911ef46aca8880587bed56dfa4f99062a
system: fpinball
path: "Balls/Fireball.zip"
required: false
bundled: true
category: game_data
size: 240337
description: "Fireball ball texture"
source_ref: "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d"
- name: Knight.zip
sha1: 969d38e02a6759629cc827501a049c60582d9531
system: fpinball
path: "Balls/Knight.zip"
required: false
bundled: true
category: game_data
size: 421287
description: "Knight ball texture"
source_ref: "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d"
- name: latlong.zip
sha1: d2f65f0f32e21dfc65d61a384df525dedbc57a8a
system: fpinball
path: "Balls/latlong.zip"
required: false
bundled: true
category: game_data
size: 1066167
description: "Latitude and longitude grid ball texture"
source_ref: "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d"
- name: Soccer Ball 1.zip
sha1: 0a1e886e991d88761502d8434248e986bf9c238f
system: fpinball
path: "Balls/Soccer Ball 1.zip"
required: false
bundled: true
category: game_data
size: 54397
description: "Soccer ball texture"
source_ref: "BAM.dll 1.5-408 .text:0x1002d513-0x1002d52d"
# -- Physics documents, reached through XML_Presets.txt --
- name: fp-p1.0.xml
sha1: 534a239cb7ae954fb9ad43de7fd79c0e5ee6473a
system: fpinball
path: "XML/fp-p1.0.xml"
required: false
bundled: true
category: game_data
size: 6290
description: "Physics 1.0 preset"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: fp-p2.0.xml
sha1: db023400242b4e5c34a14876e64dc9bfc3b6e3e1
system: fpinball
path: "XML/fp-p2.0.xml"
required: false
bundled: true
category: game_data
size: 6267
description: "Physics 2.0 preset"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: fp-p2.1.xml
sha1: 22ffd7dc5541bbf0048b7ad4af5bbc76034cad8f
system: fpinball
path: "XML/fp-p2.1.xml"
required: false
bundled: true
category: game_data
size: 6267
description: "Physics 2.1 preset"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: fp-p2.2.xml
sha1: fd56e59a4d36c8f3dbccd0ee7c24abc9e66c0495
system: fpinball
path: "XML/fp-p2.2.xml"
required: false
bundled: true
category: game_data
size: 6267
description: "Physics 2.2 preset"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: fp-p2.3 Version 1.xml
sha1: 33970a777762fc53908499b8a0bfe2b5cbc50b99
system: fpinball
path: "XML/fp-p2.3 Version 1.xml"
required: false
bundled: true
category: game_data
size: 6278
description: "Physics 2.3 preset, first variant"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: fp-p2.3 Version 2.xml
sha1: 2b0792a18766a7750b6b5da8dc9607ed63e8dc77
system: fpinball
path: "XML/fp-p2.3 Version 2.xml"
required: false
bundled: true
category: game_data
size: 6278
description: "Physics 2.3 preset, second variant"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: fp-p2.4.xml
sha1: ce9ab342ac870f9c5bcd53671cca05263ef27f0d
system: fpinball
path: "XML/fp-p2.4.xml"
required: false
bundled: true
category: game_data
size: 6267
description: "Physics 2.4 preset"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: fp-p2.5.xml
sha1: 716e15712d968f9ce0b94126bb7e0ec8a7862c29
system: fpinball
path: "XML/fp-p2.5.xml"
required: false
bundled: true
category: game_data
size: 6315
description: "Physics 2.5 preset"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: fp-p2.5 slamtilt rubbers.xml
sha1: b1e1764011daa11017b571428b4cd82c12eabd2e
system: fpinball
path: "XML/fp-p2.5 slamtilt rubbers.xml"
required: false
bundled: true
category: game_data
size: 6335
description: "Physics 2.5 preset with the slamtilt rubber values"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: fp-p2.6.xml
sha1: f6abf69d826b5daef686c7ed15dd4349b47621a2
system: fpinball
path: "XML/fp-p2.6.xml"
required: false
bundled: true
category: game_data
size: 6315
description: "Physics 2.6 preset"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: fp-p2.7.xml
sha1: 468826d947e599ec79d9bc44ddbff75fbf60ede2
system: fpinball
path: "XML/fp-p2.7.xml"
required: false
bundled: true
category: game_data
size: 6314
description: "Physics 2.7 preset"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: Zendonius_v1.0.xml
sha1: 694f2c0efa61c934345161c61782202bac208f9b
system: fpinball
path: "XML/Zendonius_v1.0.xml"
required: false
bundled: true
category: game_data
size: 6333
description: "Zendonius physics preset"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: Zendonius_v1.1.xml
sha1: 213244dc655fec822218a8780668bc74b80ac8ff
system: fpinball
path: "XML/Zendonius_v1.1.xml"
required: false
bundled: true
category: game_data
size: 6333
description: "Zendonius physics preset, second revision"
source_ref: "BAM.dll 1.5-408 .text:0x100fba6a-0x100fbb73"
- name: zedonius_v1_0.zip
sha1: 2563528f492e39b947f8836d10eefa1fd278f033
system: fpinball
path: "XML/zedonius_v1_0.zip"
required: false
bundled: true
category: game_data
size: 862294
description: "Texture pack for the Zendonius preset, resources 315 to 464"
source_ref: "BAM.dll 1.5-408 .text:0x100ae8ec-0x100ae990"
- name: zedonius_v1_1.zip
sha1: f585911868919bbf4f6d185a468ab01982ad1878
system: fpinball
path: "XML/zedonius_v1_1.zip"
required: false
bundled: true
category: game_data
size: 862287
description: "Texture pack for the second Zendonius revision"
source_ref: "BAM.dll 1.5-408 .text:0x100ae8ec-0x100ae990"
# -- plugins\*.dll, every one walked and loaded at startup --
- name: DesktopCam.dll
system: fpinball
path: "plugins/DesktopCam.dll"
required: false
size: 3388680
description: "Head tracking from any webcam, desktop geometry"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c"
note: "Bound to AVICAP32 and MSVFW32 and reads the cascade files below. The 1.5-408 zip moves it to removed_plugins\\, while bam-setup.exe installs it here."
- name: Simple Cam.dll
system: fpinball
path: "plugins/Simple Cam.dll"
required: false
size: 3262728
description: "Head tracking from any webcam, cabinet geometry"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c"
note: "The 1.5-408 zip moves it to removed_plugins\\, while bam-setup.exe installs it here."
- name: PS3Eye.dll
system: fpinball
path: "plugins/PS3Eye.dll"
required: false
size: 1699080
description: "Head tracking from a PlayStation Eye"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c"
note: "Bound to CLEyeMulticam.dll, which comes from the CL-Eye SDK. The 1.5-408 zip moves it to removed_plugins\\, while bam-setup.exe installs it here."
- name: DesktopPS3Eye.dll
system: fpinball
path: "plugins/DesktopPS3Eye.dll"
required: false
size: 1813768
description: "PlayStation Eye tracking with desktop geometry"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c"
note: "The 1.5-408 zip moves it to removed_plugins\\, while bam-setup.exe installs it here."
- name: HT-PS3Eyes.dll
sha1: 61b0ff6832769f300c4278e279ce5bd4ce878827
system: fpinball
path: "plugins/HT-PS3Eyes.dll"
required: false
bundled: true
size: 1432272
description: "Two PlayStation Eye cameras tracking an infrared marker"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c"
note: >-
Keeps its calibration in HT-PS3Eyes.dat and HT-PS3Eyes-FixCamExport.dat
beside itself, both produced by the calibration pass.
- name: Kinect.dll
sha1: f7a2c21d2acc82eb9ff700fa426cc0b37edd851a
system: fpinball
path: "plugins/Kinect.dll"
required: false
bundled: true
size: 2792144
description: "Head tracking from a Kinect for Xbox 360"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c"
note: "Bound to Kinect10.dll and FaceTrackLib.dll."
- name: DesktopKinect.dll
sha1: 19a04dbf9f43c9fc4ddb1d1357bff64526c3fec9
system: fpinball
path: "plugins/DesktopKinect.dll"
required: false
bundled: true
size: 31952
description: "Kinect tracking with desktop geometry"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c"
- name: Kinect2.dll
sha1: 22e32cd595f825b004c10d46746cd28c973f649b
system: fpinball
path: "plugins/Kinect2.dll"
required: false
bundled: true
size: 2791632
description: "Head tracking from a Kinect for Windows v2"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c"
note: "Bound to Kinect20.dll."
- name: FaceTrackLib.dll
sha1: 3e96611e075c0ffb82232b36b44dc6650627d9b3
system: fpinball
path: "plugins/FaceTrackLib.dll"
required: false
bundled: true
size: 920272
description: "Microsoft face tracking library used by the Kinect plugins"
source_ref: "DesktopKinect.dll, Kinect.dll import directories"
- name: FaceTrackData.dll
sha1: aeb806a4330ce8716feffdd844e71084a86b2f88
system: fpinball
path: "plugins/FaceTrackData.dll"
required: false
bundled: true
size: 10650832
description: "Model data for the face tracking library"
source_ref: "FaceTrackLib.dll .rdata, wide literal FaceTrackData.dll"
- name: FreeTrack.dll
sha1: 8bb00560edc99048cda818cb81afa823e8d1a682
system: fpinball
path: "plugins/FreeTrack.dll"
required: false
bundled: true
size: 95440
description: "Head tracking from a FreeTrack server"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c"
- name: TrackIR.dll
sha1: 000deaf4533b239cd3c22f250dcbb0d55123dc16
system: fpinball
path: "plugins/TrackIR.dll"
required: false
bundled: true
size: 20176
description: "Head tracking from a NaturalPoint TrackIR"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c, TrackIR.dll .text:0x100018c7"
note: >-
Matches the name NPClient with strstr and pairs LoadLibraryA with
GetProcAddress on it. The plugin imports no registry function, so the
client library is resolved as a plain module name.
- name: PostFX.dll
sha1: 52a49fdbb9328a54e9add344def6636be3d151e1
system: fpinball
path: "plugins/PostFX.dll"
required: false
bundled: true
size: 39632
description: "Bloom and the unfinished ambient occlusion pass"
source_ref: "BAM.dll 1.5-408 .text:0x100cf5ff, BAM_Plugins PostFX/PostFX.cpp:41-45"
note: >-
Named in BAM.dll and compared against the enumerated file names, so it is
the one plugin the mod knows by name. Its nine GLSL programs are TEXT
resources inside the plugin, read with FindResourceA. Two builds circulate
under this name, the 39632 bytes of bam-setup.exe and 191240 bytes in
BAM-OpenVR.zip.
- name: PinballHighScore.dll
sha1: 7734aecaa3cd1d019db365aecfd9df2a5ef8efbe
system: fpinball
path: "plugins/PinballHighScore.dll"
required: false
bundled: true
size: 918224
description: "Records high scores across tables"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c"
- name: PinballHighScore.cfg
sha1: 852b39ba5db64e8a84e4b0612521caa5bd44fe02
system: fpinball
path: "plugins/PinballHighScore.cfg"
required: false
bundled: true
size: 1016
description: "Settings block the high score plugin reads and writes"
source_ref: "BAM_Plugins Common/BAM.h:136-157"
- name: PinballHighScore.db
system: fpinball
path: "plugins/PinballHighScore.db"
required: false
size: 45056
description: "Score database the plugin opens by name"
source_ref: "PinballHighScore.dll .rdata"
note: "Only BAM-OpenVR.zip carries a copy. The plugin creates one otherwise."
- name: PuPPlugin.dll
sha1: 972607482b16139d1d53d919d3499a61e5ece7f8
system: fpinball
path: "plugins/PuPPlugin.dll"
required: false
bundled: true
size: 240216
description: "PuPCOM script object drawing PinUP Player video onto table textures"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c, PuPPlugin.dll .rdata IPuPCOM, PuPPlugin.dll PuPVideo"
note: "Takes BAM_GetTextureId and BAM_ReplaceTexture from the plugin API."
- name: icom.dll
sha1: 83a3b55b2cc1b29997d50cf38108f6725d9a0df2
system: fpinball
path: "plugins/icom.dll"
required: false
bundled: true
size: 67280
description: "Gives a table script the COM objects the cabinet stack exposes"
source_ref: "BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c, icom.dll .rdata ProgID pattern"
note: >-
Matches created objects against
PinUpPlayer, Vpinmame, B2S, PUPDMDControl, UltraDMD, PinSSF and
DirectOutput.
- name: OpenVR.dll
system: fpinball
path: "plugins/OpenVR.dll"
required: false
size: 419328
description: "Renders the table to an OpenVR headset"
source_ref: "BAM_Plugins OpenVR/main.cpp, BAM.dll 1.5-408 .text:0x100cf400-0x100cf75c"
note: "Ships only in BAM-OpenVR.zip, a separate build with its own BAM.dll, which ES-DE also looks for as BAM-OpenVR\\."
- name: openvr_api.dll
system: fpinball
path: "plugins/openvr_api.dll"
required: false
size: 620760
description: "Valve OpenVR runtime interface"
source_ref: "OpenVR.dll import directory"
- name: haarcascade_frontalface_alt.xml
sha1: 035eef24478ebf4b16c788dbd02f8b3a3f9b8951
system: fpinball
path: "plugins/haarcascades/haarcascade_frontalface_alt.xml"
required: false
bundled: true
category: game_data
size: 919871
description: "OpenCV Haar cascade for frontal faces"
source_ref: "DesktopCam.dll, PS3Eye.dll, Simple Cam.dll .rdata"
- name: haarcascade_frontalface_default.xml
sha1: 85a317ce2fc0415741a41736e99bd281d2437568
system: fpinball
path: "plugins/haarcascades/haarcascade_frontalface_default.xml"
required: false
bundled: true
category: game_data
size: 1254733
description: "Second OpenCV Haar cascade for frontal faces"
source_ref: "DesktopCam.dll, PS3Eye.dll, Simple Cam.dll .rdata"
- name: lbpcascade_frontalface.xml
sha1: d668cbe8712f062bcc6af898ebb2937b73dcfd2d
system: fpinball
path: "plugins/lbpcascades/lbpcascade_frontalface.xml"
required: false
bundled: true
category: game_data
size: 51856
description: "OpenCV local binary pattern cascade for frontal faces"
source_ref: "DesktopCam.dll, PS3Eye.dll, Simple Cam.dll .rdata"
# -- Named by the code, absent from both distributions --
- name: opencv_ffmpeg2410.dll
system: fpinball
required: false
description: "OpenCV 2.4.10 FFmpeg bridge, video files as a camera source"
source_ref: "BAM.dll 1.5-408 .text:0x102a6013-0x102a605b"
note: >-
LoadLibraryA followed by GetProcAddress on cvCreateFileCapture_FFMPEG,
cvGrabFrame_FFMPEG and the rest. A null handle leaves the entry points
unbound and only the file source is lost.
- name: CLEyeMulticam.dll
system: fpinball
required: false
description: "CL-Eye Platform SDK driver interface for the PlayStation Eye"
source_ref: "PS3Eye.dll, DesktopPS3Eye.dll, HT-PS3Eyes.dll import directories"
- name: Kinect10.dll
system: fpinball
required: false
description: "Kinect for Windows SDK 1.x runtime"
source_ref: "Kinect.dll, DesktopKinect.dll, FaceTrackLib.dll import directories"
- name: Kinect20.dll
system: fpinball
required: false
description: "Kinect for Windows SDK 2.0 runtime"
source_ref: "Kinect2.dll import directory"
- name: NPClient.dll
system: fpinball
required: false
description: "NaturalPoint TrackIR client library"
source_ref: "TrackIR.dll .rdata"
note: >-
Comes from a TrackIR install rather than from any BAM distribution, which
is why no path is given here.
analysis:
written_not_read:
note: >-
Opened only for writing, so they are output rather than something to
obtain. All of them sit in the BAM directory.
entries:
- what: "cfg\\<table>.cfg and cfg\\<table>.seq, per table settings and camera sequences"
source_ref: "BAM.dll 1.5-408 .text:0x10025e59, 0x100319b9, 0x10032bdb"
note: >-
Built as cfg\\<table> then finished with the extension. Saved from the
menu and read back on the next launch of the same table.
- what: "Cache\\<table>-shadows.zip, precomputed shadow maps"
source_ref: "BAM.dll 1.5-408 .text:0x10105c18-0x1010697f"
note: >-
Checked with GetFileAttributesA and rebuilt when absent. Holds
shadowmaps.txt and one <name>-shadows.tga per light, written through
the rendering engine.
- what: "set3points.dat, the three point calibration of the screen corners"
source_ref: "BAM.dll 1.5-408 .text:0x10077b80-0x10077bd7"
note: "fopen_s with wb, fwrite, fclose. No read site exists."
- what: "BAM_debug.log, BAM_CRASH.log and OpenGLdbg.log"
source_ref: "BAM.dll 1.5-408 .text:0x1007a45b, 0x1007ae0a, 0x100d4318-0x100d4391"
note: >-
The crash log is written from the fault handler installed at load
time, the other two only when the matching switch is on the command
line.
shipped_but_not_loaded:
note: "Present in a distribution with no code path that opens it"
entries:
- what: "zlib.dll in BAM-OpenVR.zip"
source_ref: "BAM.dll, renderingengine.dll and every plugin import directory"
note: >-
No shipped binary imports it and neither BAM.dll nor
renderingengine.dll names it in any string. Both carry their own zlib.
- what: "License.txt, 3741 bytes"
source_ref: "bam-setup.exe payload"
note: "The zlib licence the loader source carries, copied into the install."
named_but_not_obtainable:
note: "A literal the code opens that no distribution can provide"
entries:
- what: "c:\\games\\ppmm.bin"
source_ref: "BAM.dll 1.5-408 .text:0x100cff69-0x100cffa5"
note: >-
fopen_s with rb then fread, guarded by two globals and reached only
after glGetFloatv has read the modelview and projection matrices. The
path is absolute and points at a directory no install creates.
platform_components:
note: >-
Named in import directories but supplied by Windows or by a Microsoft
redistributable, so they are prerequisites rather than payload.
entries:
- what: "MSVCP140.dll, VCRUNTIME140.dll, CONCRT140.dll and the api-ms-win-crt set"
source_ref: "BAM.dll, renderingengine.dll import directories"
note: "Visual C++ 2015 or later runtime. Neither distribution carries it."
- what: "MSVCR100.dll, MSVCR120.dll and MSVCP120.dll"
source_ref: "PostFX.dll, TrackIR.dll, DesktopKinect.dll, PinballHighScore.dll import directories"
note: "Visual C++ 2010 and 2013 runtimes, for the older plugins."
- what: "opengl32, glu32, dinput8, hid, avicap32, avifil32, msvfw32, d3d11, dxgi"
source_ref: "BAM.dll, renderingengine.dll, plugin import directories"
note: "Windows components."