There hasn't been recent activity on the previous thread
discussing the collaborative effort known as proc-GenericLauncher, so I've decided to start a new thread to discuss some recent work I've done on the launcher, and to hopefully provide a home for discussion of this specific launcher code, instead of App Launchers in general.
First off, credit to where it's due. Based on comments in the code when I started working on it, this software is the work of many hands including: Michael Ocean (mocean), Mark Sunnucks (Snux), Jim (myPinballs), and Koen (DutchPinball). Since I don't have a lot of Python experience, it helped greatly to have their work as a starting point.
From the updated README file:
This is a Python-based front-end game launcher for a P-ROC enabled pinball machine. Using it shouldn't require any modifications to GameLauncher.py, just the creation of a Loader.yaml file based on one of the provided examples.
I've just pushed some changes out to my fork
of Michael's repo
. Those changes include the following:
- Use of a title screen with the name of the machine, and instructions to use the flippers to select a game. This allows for 4 lines of information on each possible selection.
- Support for multiple configurations (e.g., 3-ball, 5-ball, tournament mode) for each PinMAME ROM. I accomplish this by swapping in alternate NVRAM files (*.nv) when launching PinMAME.
- Display of the current Grand Champion for each PinMAME game/configuration. It's necessary to dig through a hex dump of an NVRAM file to find the proper offsets for the initials and score stored in binary-coded decimal (BCD). This location is unique for each ROM version.
- Only enable flippers for System-11 games, which rely on the EOS switches to detect flipper button presses.
- Flash the start button lamp (if present).
I wanted to use a larger font for the game name on the title screen, but whenever I called dmd.TextLayer() with one of the larger fonts, it wouldn't show up. Maybe someone with pyprocgame experience can help me fix that.
If you'd like help figuring out GC settings for a given ROM, let me know. If you can send me a .nv file along with the initials and GC score it should contain, I can get back to you with the offsets to use. For reference, here's what the scores look like in dm_lx4.nv (where Grand Champion is TBC with a score of 4,185,195,510):
Checksum 36 bytes is good (0xF663): HS1 to HS4
1c61: 54 42 43 00 32 82 19 79 50 54 42 43 00 25 81 32 TBC.2..y PTBC.%.2
1c71: 75 60 54 42 43 00 25 79 73 61 90 54 42 43 00 23 u`TBC.%y sa.TBC.#
1c81: 13 48 15 60 f6 63 .H.`.c
Checksum 9 bytes is good (0xFDE2): GC
1c87: 54 42 43 00 41 85 19 55 10 fd e2 TBC.A..U ...
I'd appreciate hearing back from anyone who gets this to work under Windows (so I can update the README), along with feedback from others who try it out. I'm also open to exploring ways to load the GC for Python-based games (like the name of the YAML and the necessary key to extract the score?).