From the website:
Pinup Player: a program the can be controlled and triggered to play various types media. This can be played on multiple “screens and layers” and displayed on many different “monitors / TVs” in Windows.
Many Visual Pinball tables use PUP for having animated backglasses and custom DMDs. We would really like people who use VPX Standalone to be able to enjoy the same tables that Windows users can.
Since PUP is a closed-source project, we don't have any options. Fortunately, David (Nailbuster) has been incredibly generous in answering several of my questions!
Several games are playable. Many have missing video layers and labels with incorrect font sizes.
I test regularly test with the following games:
- Batman 66
- Total Nuclear Annihilation
- Transformers
- Monster Bash
- Tron NEON
- Darkest Dungeon
- Futurama
PUP usually uses 4 configuration files:
- PinUpPlayer.ini
- screens.pup
- playlists.pup
- triggers.pup
This file includes master settings for all screens.
[INFO]
ScreenXPos=4
ScreenYPos=7
ScreenWidth=500
ScreenHeight=125
volume=100
hidestopped=3
AspectWide=0
AspectHigh=0
fitToWindow=1
ScreenRotation=0
DebugMode=1
VideoDriver=0
FirstRun=0
[INFO1]
ScreenXPos=1400
ScreenYPos=302
ScreenWidth=512
ScreenHeight=128
volume=100
hidestopped=3
AspectWide=0
AspectHigh=0
fitToWindow=1
ScreenRotation=0
DebugMode=1
VideoDriver=0
FirstRun=0
.
.
[INFO10]
In VPX Standalone, these are in the VPinballX.ini
:
[Standalone]
PUP<Name>Screen =
PUP<Name>Window =
PUP<Name>WindowX =
PUP<Name>WindowY =
PUP<Name>WindowWidth =
PUP<Name>WindowHeight =
PUP<Name>WindowRotation =
Since all screens are supported, at this time, only the following can render physical windows:
Name | Screen |
---|---|
Topper | 0 |
Backglass | 2 |
DMD | 1 |
Playfield | 3 |
FullDMD | 5 |
If for example you needed to change the Topper
to screen 2
, you would have the entry:
[Standalone]
PUPTopperScreen = 2
This csv file sets the layout of screens:
ScreenNum,ScreenDes,PlayList,PlayFile,Loopit,Active,Priority,CustomPos
0,Topper,Topper,Topper_Frame1.mp4,0,ForceOn,,
1,DMD,,,0,off,,
2,Backglass,BGDefault,BG_Default1.mp4,0,ForceOn,,
3,PlayField,,,0,off,,
4,Music,,,0,off,,
5,Menu,,,0,off,,
6,Select,,,0,off,,
7,Other1/BackGlass2,,,0,off,,
8,Other2/Topper2,,,0,off,,
9,GameInfo,,,0,off,,
10,GameHelp,,,0,off,,
The headers in the csv do not appear to match the the PuP Pack Editor:
screens.pup | PuP Pack Editor |
---|---|
ScreenNum | ScreenNum |
ScreenDes | ScreenDes |
PlayList | Background Playlist |
PlayFile | Background Filename |
Loopit | Transparent |
Active | Mode |
Priority | Volume % |
CustomPos | CustomPos |
Question: What are values when the columns are empty? ex, volume% 100 or 0?
This csv file represents media playlists. Playlists are folders in pupvideos/<rom>
directory
ScreenNum,Folder,Des,AlphaSort,RestSeconds,Volume,Priority
0,Topper,,0,30,100,0
0,AttractMode,,0,30,100,0
0,BallDrain,,1,3,100,0
0,BGDefault,,0,30,100,5
0,ExtraBall,,0,30,100,0
0,MultiBall,,0,30,100,0
0,PuPOverlays,,0,30,100,0
0,RandomScoring,,0,30,100,0
0,ShootAgain,,0,30,100,0
0,SkillShot,,1,30,100,0
playlists.pup | PuP Pack Editor |
---|---|
ScreenNum | |
Folder | Folder (Playlist) |
Des | Description |
AlphaSort | Randomize |
RestSeconds | RestSeconds |
Volume | Volume |
Priority | Priority |
From PinUpPlayerReference.txt:
- playlists (unlimited) that are really just subfolders of your table root that contain videos.
- the PinUpPlayer(PUP) will manage playlists and shuffle them
- RestSeconds is what I use to 'limit' the amount of videos being played. So lets say you want a ramp video to play, but since I set it to 60... you can hit that ramp multiple times but no videos will play until the restSeconds time has passed since last video played.
- <Sort 1=shuffle, 0 = alpha> So if you want to progress game videos you could name the first one 001.mp4, 002.mp4...099.mp4 That way alpha sort will play in your order.
From PuP-Pack Editor v1.4 Help:
- AlphaSort: OFF=Random/shuffle, 1= alpha sort
- Priority (0..10): if another video is playing the one with higher prioirty 'wins'...
Question: What are values when the columns are empty? ex, volume% 100 or 0? Question: Are the files sorted by case sensitivity? ie: alpha1.png, bat1.png, Alpha2.png Note: I think I've seen really priorities way different than 0..10, maybe -1, and 60 (double check so not confusing this with volume, etc)
Update 03-31-2025:
- Confirmed with @nailbuster that PuP-Pack Editor v1.4 Help is incorrect about AlphaSort. The correct values are: Random=1, AlphaSort=0
This csv file represents triggers
ID,Active,Descript,Trigger,ScreenNum,PlayList,PlayFile,Volume,Priority,Length,Counter,RestSeconds,Loop,Defaults
2,1,Overlay_Frame,D0,2,PuPOverlays,Metal.png,,,,6,,,0
71,1,Creature1,D1,2,Creature,"Creature Surfacing.mp4",0,3,,,3,,0
4,1,Creature2,D2,2,Creature,"Creature Hand.mp4",0,3,,,3,,0
6,1,Creature3,D3,2,Creature,"Creature Swim2.mp4",0,3,,,3,,0
9,1,"Creature Feature",D4,2,"Creature_Creature Feature",,0,3,,,3,,0
10,1,"Creature Targets",D5,2,Creature,,0,3,,,3,,0
11,1,"Monster Torso",D6,2,Monster_Torso,,0,2,,,3,,0
triggers.pup | PuP Pack Editor |
---|---|
ID | |
Active | Active |
Descript | Descript |
Trigger | Trigger |
ScreenNum | Screen |
PlayList | Playlist |
PlayFile | PlayFile |
Volume | Volume |
Priority | Priority |
Counter | Counter |
RestSeconds | RestSeconds |
Loop | PlayAction |
Defaults |
From PinUpPlayerReference.txt:
- priority(0=none, 1..9) will override the restSeconds....so for a drain or something similar
- if filename="" then will play next file in playlist (don't have to specify filename, only playlist).
From PuP-Pack Editor v1.4 Help:
- Trigger example separate by ',' commas (unlimited triggers, but max 5 checks/trigger)
- if you don't put = then assumes '1'
- do NOT use leading zeros like S04=1, its S4=1
- Counter=20 means it will 'FIRE' video every 20 triggers.
- loop will loop video until a new video is displayed.
- restseconds: will not repeat trigger until restseconds have passed. if you leave blank then will use playlist default.
Question: Does Counter 'FIRE' the very first time? or does it wait for 20 triggers? does restseconds factor into counter?
All trigger
PlayAction
types are documented here: https://www.nailbuster.com/wikipinup/doku.php?id=pup_capture