gurninator Posted July 2 Posted July 2 (edited) [Updated for 1.0.preview2 — see reply #2 for the latest download and updated instructions. The label file format has changed since Preview1] launchbox-dynamic-controls-ALL-v1.0-preview.2.zip Dynamic Controls (1.0.preview1) – controller button overlay plugin [Preview] Most pause screen themes show a static image - the same artwork every time you pause, regardless of what game you're playing or how your controller is configured. Dynamic Controls takes a different approach: rather than one image, the overlay is assembled on demand from individual button images and XML configuration files, so it can automatically show the right button art and labels for the platform, controller variant, and game. What it does Shows the actual buttons for each platform - Genesis A/B/C, SNES A/B/X/Y, and so on - mapped to the right positions on your physical controller Displays per-game button labels (Jump, Fire, Block, etc.) when configured Picks up your game-specific RetroArch button remaps and controller type automatically from your cfg/remap files Reads your game-specific MAME cfg files to detect per-game button assignments; add the BYOAC controls.xml for automatic labels across thousands of arcade games Ships with support for ~50 platforms, including custom button art for the Xbox Series X template Everything is configurable via simple XML files, no static images required per game or platform Requirements LaunchBox / Big Box 13.3 or newer, with the pause screen feature enabled. Getting started There are three parts to install: the plugin itself, the pause theme (based on PauseShift by Faeran), and the assets (button art and configuration files for ~50 platforms). To keep things simple they're bundled into a single zip, though the three parts are also available to download separately on the GitHub releases page if needed. Download launchbox-dynamic-controls-ALL-1.0-preview1.zip from this post, or from the GitHub releases page Extract into your LaunchBox folder (wherever your LaunchBox.exe lives) In your BigBox settings, set the pause theme to Dynamic Controls Adding labels The plugin doesn't ship with game labels - that's where the community comes in. Under the hood, it knows how each platform's original buttons map to your physical controller - for example, that the Sega Genesis B button sits on the A position of an Xbox controller, and C sits on B. You don't need to worry about any of that. Label files just use the button names printed on the original hardware, and the plugin takes care of putting them in the right place. Labels are simple XML files you create under Data\Dynamic Controls\User\Labels\{Platform}\{Game}.xml, where the platform and game name match LaunchBox exactly: <!-- User\Labels\Sega Genesis\Streets of Rage 2 (USA).xml --> <InputLabels> <A>Jump</A> <B>Attack</B> <C>Special</C> <Dpad-Any>Move</Dpad-Any> <Start>Pause</Start> </InputLabels> You can also set labels that apply to every game on a platform using _DefaultLabels.xml in the same folder - useful for things like <Start>Pause</Start> that are the same across most games. The valid button names for each platform are listed in Data\Dynamic Controls\Defaults\Controllers\{Platform}.xml. Because label files use the original hardware button names, everyone playing the same game on the same platform with the default controls will have identical label files. If you put one together, please share it! Pull requests to the GitHub repo are welcome, or just post it in this thread. Current limitations Label files match on exact game filename. For example, Labels\{Platform}\Streets of Rage 2 (USA).xml won't apply to Streets of Rage 2 (Europe).xml - regional variants need their own file. This is a high-priority item for a future release. (now fixed in 1.0.preview2) One controller template ships: Xbox Series X. There is only one controller overlay template for xbox controllers. In the longer term we want to support Playstation controllers, Mouse & Keyboard, Wiimotes etc... MAME and RetroArch integration covers game-specific overrides only. The plugin still needs a baseline platform configuration (Defaults\Controllers\{Platform}.xml) that matches what your emulator is doing generically. The MAME and RetroArch integration then operates on top of that - detecting per-game button remaps and controller variants. If your emulator's default button assignments differ from the shipped files, you'll need to provide a corrected User\Controllers\{Platform}.xml. Full documentation, configuration options and source code are available on GitHub: https://github.com/tmstedman/launchbox-dynamic-controls This is a preview release - I'm looking for community feedback before the full release. Dynamic Controls pause theme based on [Pause Shift](https://forums.launchbox-app.com/files/file/3229-pauseshift/) by Faeran. Edited 19 hours ago by gurninator Fix formatting 2 Quote
DemmyTree Posted July 4 Posted July 4 this sounds cool i like the idea of this but definitely would love a DB to pull the controls from, myself i'd want the native controls to the game to be shown rather than custom mappings, as far as i know there isnt a database for all this but it would be a neat thing for the default controls of the game to be shown or like you note alternative ones dependent on the controller your using. Quote
gurninator Posted 20 hours ago Author Posted 20 hours ago (edited) 1.0.preview2 is out launchbox-dynamic-controls-ALL-v1.0-preview.2.zip This release changes the label file format — if you have existing label files you'll need to update them. What's changed Label files are now per-platform instead of per-game Instead of a separate file for each game, there's now one file per platform that holds everything: <!-- User\Labels\Sega Genesis.xml --> <Labels> <Defaults> <Start>Pause</Start> </Defaults> <Game launchBoxId="12345" romName="Sonic the Hedgehog"> <A>Jump</A> </Game> <Game romName="OutRun"> <A>Brake</A> <B>Accelerate</B> </Game> </Labels> The <Defaults> block does the same job as _DefaultLabels.xml did before. ROM name matching is now fuzzy You no longer need to match the exact ROM filename. Region tags and revision suffixes like (USA, Europe) or [!] are ignored when matching, so one entry covers all regional variants. Matching is also case-insensitive now. You can match by LaunchBox ID Adding a launchBoxId attribute lets the plugin match by database ID instead of name — handy if your ROM filenames are inconsistent. The ID is the LaunchBox database ID from the game's edit dialog. User and Defaults files are merged, not replaced If you have both a Defaults and User version of a labels file, the User does not need to repeat every game — only the entries you want to override. launchbox-dynamic-controls-ALL-v1.0-preview.2.zip Edited 4 hours ago by gurninator Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.