cathoderaydude
Members-
Posts
8 -
Joined
-
Last visited
cathoderaydude's Achievements
4-Bit Adder (2/7)
3
Reputation
-
cathoderaydude started following Multi-Disk Launcher
-
Multi-Disk Launcher
cathoderaydude posted a topic in Third-Party Applications and Plugins (Released)
Multi-Disk Launcher View File With all of it's fantastic functionality, Launchbox is missing a few features that make it difficult to use it with emulators for old computer systems. First is the ability to launch an emulator while passing two image files as parameters. Particularly on Japanese home computers like the PC88, many games simply require you to insert two discs to play, and Launchbox can't pass more than one at a time. You can hardcode a custom commandline for each and every single game to fix this, of course, but that's pretty tedious. Second is the ability to call an emulator two different ways depending on whether you're loading a disk or a tape. Some emulators expect "-tape" or "-disk" on the command line, and the only way to achieve this in Launchbox is by creating two separate emulator entries and splitting your library by format. Multi-Disk Launcher solves both of these issues with a minimum of configuration. Installation Just download the .dll file from Releases and drop it in your Launchbox\Plugins folder. Start Launchbox and look in the Tools menu; if you have a "Multi-Disk Launcher..." menu item, it's installed. Configuration There are two phases of configuration: Setting up emulators, and setting up games. Emulator setup The plugin works by modifying the command sent to an emulator when you launch a game, so to use it, you need to first configure the emulators you'll be using. Simply add the emulators as normal, including any custom commandline parameters (e.g. -fullscreen) in the standard config dialog. Once that's done, go to Tools > Multi-Disk Launcher..., locate the emulator you wish to configure and click on it. Check the Enable box in the upper right, then: If the emulator simply requires two disks to be passed on the commandline: Checking Enable is enough. If the emulator needs a flag before each disk, like -disk1 and -disk2: Fill in the "Disk prefix" fields. If you are going to be using a mix of disks and tapes: Fill in the tape extension field (with e.g. .t88) and the tape prefix field (with e.g. -tape). If your emulator supports multiple tape formats (e.g. t64/tap) then separate them by commas: .t64,.tap Close the window when done. Now you can move on to setting up games. Game setup For each game that you wish to have multi-disk support, you simply need to define a second disk in the Additional Applications section of the game's metadata. If you imported games from a typical collection, all the disks will most likely already be in the Additional Applications section. All you need to do is edit one and set the "Disk number" value on the Metadata tab to 2. If not, all you need to do is click "Add Application" and enter a name, a path to the second disk image, and then set the "Disk number" on the Metadata tab to 2. That's all there is to it. You should now be able to launch the game, and your emulator will receive both image files. Troubleshooting I haven't run into any issues yet, but be aware of these things: This functions by overwriting the "Custom command line" value in a game's metadata right before launching it. It's supposed to set that back to whatever it was after the game launches, but if something goes wrong, that might not happen and you could end up with junk in that field. If a game really DOES require a custom command line, that won't work because the plugin ignores any existing data in that field. This is something I could fix if anyone needs it to work, but I can't imagine a scenario where it would come up. If you suspect the plugin is causing problems, you can go in and uncheck Enable in the config dialog and it will revert to standard LB launching. If you delete an emulator, it will no longer appear in the plugin config, but if you add it back with the exact same name your settings should come back. Source code This plugin is open-source and you can use it as the basis for your own work. The code is hosted here: https://github.com/cathoderaydude/LBMultiDiskLauncher Submitter cathoderaydude Submitted 10/21/2025 Category Third-party Apps and Plugins-
- 1
-
-
Version 1.0.0
18 downloads
With all of it's fantastic functionality, Launchbox is missing a few features that make it difficult to use it with emulators for old computer systems. First is the ability to launch an emulator while passing two image files as parameters. Particularly on Japanese home computers like the PC88, many games simply require you to insert two discs to play, and Launchbox can't pass more than one at a time. You can hardcode a custom commandline for each and every single game to fix this, of course, but that's pretty tedious. Second is the ability to call an emulator two different ways depending on whether you're loading a disk or a tape. Some emulators expect "-tape" or "-disk" on the command line, and the only way to achieve this in Launchbox is by creating two separate emulator entries and splitting your library by format. Multi-Disk Launcher solves both of these issues with a minimum of configuration. Installation Just download the .dll file from Releases and drop it in your Launchbox\Plugins folder. Start Launchbox and look in the Tools menu; if you have a "Multi-Disk Launcher..." menu item, it's installed. Configuration There are two phases of configuration: Setting up emulators, and setting up games. Emulator setup The plugin works by modifying the command sent to an emulator when you launch a game, so to use it, you need to first configure the emulators you'll be using. Simply add the emulators as normal, including any custom commandline parameters (e.g. -fullscreen) in the standard config dialog. Once that's done, go to Tools > Multi-Disk Launcher..., locate the emulator you wish to configure and click on it. Check the Enable box in the upper right, then: If the emulator simply requires two disks to be passed on the commandline: Checking Enable is enough. If the emulator needs a flag before each disk, like -disk1 and -disk2: Fill in the "Disk prefix" fields. If you are going to be using a mix of disks and tapes: Fill in the tape extension field (with e.g. .t88) and the tape prefix field (with e.g. -tape). If your emulator supports multiple tape formats (e.g. t64/tap) then separate them by commas: .t64,.tap Close the window when done. Now you can move on to setting up games. Game setup For each game that you wish to have multi-disk support, you simply need to define a second disk in the Additional Applications section of the game's metadata. If you imported games from a typical collection, all the disks will most likely already be in the Additional Applications section. All you need to do is edit one and set the "Disk number" value on the Metadata tab to 2. If not, all you need to do is click "Add Application" and enter a name, a path to the second disk image, and then set the "Disk number" on the Metadata tab to 2. That's all there is to it. You should now be able to launch the game, and your emulator will receive both image files. Troubleshooting I haven't run into any issues yet, but be aware of these things: This functions by overwriting the "Custom command line" value in a game's metadata right before launching it. It's supposed to set that back to whatever it was after the game launches, but if something goes wrong, that might not happen and you could end up with junk in that field. If a game really DOES require a custom command line, that won't work because the plugin ignores any existing data in that field. This is something I could fix if anyone needs it to work, but I can't imagine a scenario where it would come up. If you suspect the plugin is causing problems, you can go in and uncheck Enable in the config dialog and it will revert to standard LB launching. If you delete an emulator, it will no longer appear in the plugin config, but if you add it back with the exact same name your settings should come back. Source code This plugin is open-source and you can use it as the basis for your own work. The code is hosted here: https://github.com/cathoderaydude/LBMultiDiskLauncher -
Okay! Turns out I was wrong about many things, haha! I did not know about the variables available in commandline generation; these make it MUCH simpler. For anyone coming across this thread later, the variables are as follows: %romfile% - ROM filename with/without quotes as set in emulator settings %platform% - Game platform %launchboxorbigboxexepath% - Full path to LaunchBox.exe or BigBox.exe %gameid% - Game ID from XML %romfilename% - Filename of the ROM WITHOUT extension %romextension% - Extension of the ROM file (ie, .rom) %romlocation_noquotes% - Path to the ROM without quotes %noromfile% - Replaced with empty string, suppresses rom file being added to end of the command line. All my plugin has to do is override the commandline to place %romfile% first. This allows me to generate a line like: -disk1 %romfile% -disk2 "{second-disk-image}" in my plugin and sub it in during BeforeGameLaunching and hey presto, problem solved. So at this point, y'know, it'd be nice if there was a %disk2% variable... but I'm happy with what I got 😛 Thanks for the reply, wouldn't have figured it out without the pointer to the command line field!@JoeViking245
-
Option #1 could work in a pinch, but is there actually a way to find out from OnAfterGameLaunched exactly which PID/hwnd launchbox spawned, or are we talking about using external Windows APIs to search for the emulator by process / window name? I did look at the custom command line option, but the problem there is that, as far as I can tell, there is no way to stop LB from appending the primary ROM/disk name to the launch command. This is sort of manageable in some cases - for instance, the desired output for e.g. AppleWin would look like this: applewin.exe -d1 "C:\AppleII\Disks\Airheart Disk 1.img" -d2 "C:\AppleII\Disks\Airheart Disk 2.img" I could trick this into working by generating a custom command line template that looks like this: -d2 "C:\AppleII\Disks\Airheart Disk 2.img" -d1 I can do this automatically by getting the second disk image from GetAllAdditionalApplications, injecting it in the custom command line field, then letting LB fill in the first image at the end of the line. This would probably work for a lot of emulators where the disks can be fed in reverse order, but I'm aware of at least one specific problem case (the emu that got me on this to begin with in fact) The PC88 emu QUASI88 expects disks 1 and 2 to be passed on the command line in that order, but since LB always appends the primary ROM file to the end of the command, it's always going to wind up in drive 2. There's no way to get it to load into drive 1 other than to to fudge the disk order metadata - tell it disk 2 is disk 1 and vice versa. And while I can't cite examples at the moment I'm pretty sure I've seen other emus with this limitation. It may be possible to do this automatically (swap the disks in BeforeGameLaunched and then swap them back in After) so I'm gonna look into that, and I know this is a bit of an edge case since it only really affects disk-based home computers, but it'd be great if there were options to override the entire command line so this could be done more cleanly.
-
I'm stalled on a plugin I was developing which would ease use of Launchbox with emulators for old computer systems that expect two disks to be loaded with many games (e.g. PC88, x68000, apple II.) The problem I ran into is that it doesn't seem to be possible to intercept an OnBeforeGameLaunching event and either modify the command line arguments (so that LB calls the emulator with my desired args) or cancel it entirely (so I can launch the emu myself with whatever args I like.) I could only find one other post about this, in an update thread from 2019, so my assumption is that this hasn't been added in the meantime. If I'm wrong, I'd love to know it 😛 and otherwise if there's any way to put this in as a feature request, I think it would be very useful for old computer enthusiasts. Thanks!
-
For what it's worth, I went in and renamed data\ImageQueue.xml, then attempted a download, and it worked. Put ImageQueue back... still worked. Started a download for my whole library... it's 600 images in and still going. So perhaps this is completely irrelevant and something else was going on entirely, but I thought I'd share anyway.
-
Thirding this - I'm having similar issues with grabbing metadata, and it doesn't seem to matter how many titles I select at once. I did initially select my entire PS2 collection and fire off a metadata update, and that hung while downloading file 94 out of 10,000+, but then I restarted Launchbox, selected a single game and tried it again. It downloaded the metadata, the images appeared on the game, but it's been sitting at "File 14 of 14" in the download progress bar ever since. To be clear, "hang" just means the progress bar stops progressing, the rest of the app still seems to work. However, if I try to click the red X on the download bar, it does nothing for a few seconds, then produces a spinning mouse cursor, almost as if the app's message pump isn't processing. Weird business - never had anything like this before in LB. Running latest, 13.18, also tried 13.19 with the same behavior.