-
Posts
3,447 -
Joined
-
Last visited
-
Days Won
30
Content Type
Profiles
Forums
Articles
Downloads
Gallery
Blogs
Everything posted by JoeViking245
-
RetroAchievement Badges
JoeViking245 commented on JoeViking245's file in Third-party Apps and Plugins
- 131 comments
-
- 1
-
- retroachivements
- badges
-
(and 1 more)
Tagged with:
-
@whazzzzzup17 So glad it's working as it should!!!!!!! Well, I broke down and actually tested it with RA on my cab. Finally. lol Though I did 'cheat' and used [up to 4 instances of] the same retroarch.exe for each launch. 😊 Going through this (now, properly) I saw some things with the code that could be improved and cleaned up. The Sleep 'timer' was kind of a cheesy and was bugging me, so I changed it to WinWait. Now there's no guessing as to how long to set it. I looked closer at the RemoveMenuBar method and saw it was only working on the "Active window". Doh! It was also long and ugly, so I revamped the 24-lines of code into 2 lines AND it [now] works on the window we tell it to. I know this is a moot point because of the recent 'discovery' of turning off the menu bar directly in RA. But it now actually works, regardless of the setting in RA. The Loops inside each "If (UserInput=)" are all the exact same, so I moved them to single method and now just call that method. Fun project! Thanks. (Edit Dec-31: Fixed window positioning. Added code to hide all background stuff)
-
It might be an RA thing then (I never tested it in RA). There is a setting in RA where you can remove the title bar (at least). Settings, Video, Window Mode, Show Window Decorations. (Above) your 1st image (left 2) didn't have the title bar, but the 2nd one (right 2) did.
-
There might be a loading time issue. Start with a UserInput = 2 (load only 2 instances of RA), and increase the "Sleep" right before the Loop to something like "Sleep, 10000" (ten thousand, aka 10 seconds) .... else If (UserInput == 2) { Run, "%RA1%\retroarch.exe" -L "%RA1%\cores\%1%.dll" "%2%", , , p1 Run, "%RA2%\retroarch.exe" -L "%RA2%\cores\%1%.dll" "%2%", , , p2 Sleep, 10000 ;give the windows TEN SECONDS to load Loop, UserInput { .... If it's still not working, get crazy and put it to 20 seconds. If that does eventually work, do the same for UserInput = 3 and then 4. Later on you can find the 'sweet spot' for each of the sleeps.
-
Revised (fixed programmer error, actually) and improved WinHide, ahk_class Shell_TrayWnd ;Hide taskbar ; RetroArch locations RA1 := "E:\_arcade\LaunchBoxPortable\Emulators\RetroArch1" RA2 := "E:\_arcade\LaunchBoxPortable\Emulators\RetroArch2" RA3 := "E:\_arcade\LaunchBoxPortable\Emulators\RetroArch3" RA4 := "E:\_arcade\LaunchBoxPortable\Emulators\RetroArch4" ;Ask the user how many single player games InputBox, UserInput, Enter RetroArch Instances (up to 4), Please enter the amount of single player games (<=4):, , 300, 150 If (UserInput == 1) { Run, "%RA1%\retroarch.exe" -f -L "%RA1%\cores\%1%.dll" "%2%", , , p1 } else If (UserInput == 2) { Run, "%RA1%\retroarch.exe" -L "%RA1%\cores\%1%.dll" "%2%", , , p1 Run, "%RA2%\retroarch.exe" -L "%RA2%\cores\%1%.dll" "%2%", , , p2 Sleep, 1000 ;give the windows a sec to load Loop, UserInput { pidInt := p%A_Index% WinSet, Style, -0xC40000, ahk_pid %pidInt% RemoveMenuBar(ahk_pid %pidInt%) } WinMove, ahk_pid %p1%, , 0, 0 ,A_ScreenWidth/2, A_ScreenHeight WinMove, ahk_pid %p2%, , A_ScreenWidth/2, 0 ,A_ScreenWidth/2, A_ScreenHeight } else If (UserInput == 3) { Run, "%RA1%\retroarch.exe" -L "%RA1%\cores\%1%.dll" "%2%", , , p1 Run, "%RA2%\retroarch.exe" -L "%RA2%\cores\%1%.dll" "%2%", , , p2 Run, "%RA3%\retroarch.exe" -L "%RA3%\cores\%1%.dll" "%2%", , , p3 Sleep, 1000 ;give the windows a sec to load Loop, UserInput { pidInt := p%A_Index% WinSet, Style, -0xC40000, ahk_pid %pidInt% RemoveMenuBar(ahk_pid %pidInt%) } WinMove, ahk_pid %p1%, , 0, 0 ,A_ScreenWidth/2, A_ScreenHeight/2 WinMove, ahk_pid %p2%, , A_ScreenWidth/2, 0 ,A_ScreenWidth/2, A_ScreenHeight/2 WinMove, ahk_pid %p3%, , 0, A_ScreenHeight/2 ,A_ScreenWidth/2, A_ScreenHeight/2 } else If (UserInput == 4) { Run, "%RA1%\retroarch.exe" -L "%RA1%\cores\%1%.dll" "%2%", , , p1 Run, "%RA2%\retroarch.exe" -L "%RA2%\cores\%1%.dll" "%2%", , , p2 Run, "%RA3%\retroarch.exe" -L "%RA3%\cores\%1%.dll" "%2%", , , p3 Run, "%RA4%\retroarch.exe" -L "%RA4%\cores\%1%.dll" "%2%", , , p4 Sleep, 1000 ;give the windows a sec to load Loop, UserInput { pidInt := p%A_Index% WinSet, Style, -0xC40000, ahk_pid %pidInt% RemoveMenuBar(ahk_pid %pidInt%) } WinMove, ahk_pid %p1%, , 0, 0 ,A_ScreenWidth/2, A_ScreenHeight/2 WinMove, ahk_pid %p2%, , A_ScreenWidth/2, 0 ,A_ScreenWidth/2, A_ScreenHeight/2 WinMove, ahk_pid %p3%, , 0, A_ScreenHeight/2 ,A_ScreenWidth/2, A_ScreenHeight/2 WinMove, ahk_pid %p4%, , A_ScreenWidth/2, A_ScreenHeight/2 ,A_ScreenWidth/2, A_ScreenHeight/2 } else { MsgBox Invalid Selection WinShow, ahk_class Shell_TrayWnd ;Restore TaskBar ExitApp } Sleep, 1000 ; because you never know last := p%UserInput% Process, WaitClose, %last% WinShow, ahk_class Shell_TrayWnd ;Restore TaskBar ExitApp RemoveMenuBar( hWin ) { ;static associative array for keeping track of all windows that have had their menus hidden static MenuArray := {} ;find active window handle in array / add to array if not found hWin := WinExist("A") hMenu := null hMenu := MenuArray.Remove(hWin) if (hMenu = null) { ;store a reference to the window's menu in the array hMenu := (DllCall("GetMenu", "uint", hWin)) MenuArray[hWin] := hMenu ;hide the menu by uncoupling it from the parent window DllCall("SetMenu", "uint", hWin, "uint", 0) } else { ;show menu by recoupling it to the parent window DllCall("SetMenu", "uint", hWin, "uint", hMenu) } } I forgot some % signs in the previous post that (would have) removed the title bars. (fixed here) WinSet, Style, -0xC00000 and WinSet, Style, -0x40000 are combined into the single: WinSet, Style, -0xC40000 0xC00000 is for the title bar 0x40000 is the the border (0xC40000 is for both of them) Added a function to remove the menubar. With these last 2 bulleted items, you shouldn't need to manually 'toggle' anything. The gaps you see are covered in one of my prior posts. To completely get rid of them, you may need to set those manually for each WinMove, inside each UserInput looped. There is a chance that with the hiding title/menu/border properly working (I hope they are, this time ), the gaps may be eliminated. Not tested, but fingers crossed.
-
Glad you got it working!!! Oh man! Totally missed adding in the "f:" line. It's kind of funny that yours was actually on the F: drive. lol You might be able to, when BB is open, Alt+Tab to the Command Window and then press Ctrl+Break. You'll have to press "Y" (Yes) to terminate and you may have to then Close the Command Window 'manually'. Then you can Exit BB to Windows. This isn't very elegant and not really much better than using Task Manager (Ctrl+Shift+Esc) to close the Command window. If you want to "fancy it up" a bit, you could add in a Message Box for when the batch file starts, you have the option to Start BB or 'Exit' to Windows. And another one at the end, 'start PbX or exit to Windows'. It might look something like: @echo off powershell "add-type -As System.Windows.Forms; exit([windows.forms.messagebox]::show(\"Do you want to start BigBox?\",'Launch BigBox',4))" if errorlevel 7 ( ::user chose "No" exit ) else ( ::user chose "Yes" start /w "" BigBox.exe ) powershell "add-type -As System.Windows.Forms; exit([windows.forms.messagebox]::show(\"Do you want to start PinballX?\",'Launch PinballX',4))" if errorlevel 7 ( ::user chose "No" exit ) else ( ::user chose "Yes" f: cd "F:\PinballX start "" PinballX.exe exit )
-
You are very welcome. I don't have PinballX, so no. But it's the same principle. Pretty much anywhere you want. As long as you can remember where that is. (in the example below, we'll put it in your LaunchBox folder) Only if your copy of PinballX is located in the directory "F:\PinballX". Try this: Open Windows Explorer, and go to folder where you have LaunchBox installed. Right click on an empty space in the directory list (like below the last file. Not next to one) and select New and then select Text Document. Type in a name that makes sense to you (i.e. "BigBox2PinballX") and hit enter. You should not have a file named "BigBox2PinballX.txt"). Click on that file and hit enter (or just double click it). This will open up Notepad. Copy the following text and paste it into Notepad. (Note: it's different from the one I showed above. Use this one) cd Core start /w "" BigBox.exe cd "F:\PinballX" start "" PinballX.exe Now you need to know where your PinballX.exe file is located. i.e. in the folder "F:\PinballX". I'm guessing it's somewhere else. So on the 3rd line (above), you need to change the part inside the quotes to the path where yours is actually located. Now close Notepad. It'll ask if you want to save it. Yes You now need to rename the file to a bat[ch]. Right now, it should look like this: If you don't see ".txt" on the end of it, at the top of Windows explorer, click the View tab and check the box File name extensions. Click (once) on the file and press F2 on your keyboard [to edit the filename]. Using the arrow keys, move right 2 times then hit Delete 3 times. This will delete "txt". Now type in "bat" (without the quotes) and hit Enter. You'll get a message box about "Are you sure you want to change it?". Click Yes. It will now look like this: Now, wherever it was that you told PinballX to launch "BigBox.exe", tell it to launch "BigBox2PinballX.bat" (or whatever you called it) instead.
-
In short, no. What I've done for something similar is to start BigBox from a batch file using the 'wait' parameter which will "pause" the batch file from continuing until BigBox exits. f: cd "F:\LaunchBox\Core" start /w "" BigBox.exe cd F:\PinballX start "" PinballX.exe What this does: Switches to the F drive Changes to the "Core" subfolder under LaunchBox Starts BigBox.exe and 'waits here' until it exits After BigBox has exited, change to some other folder where the 'other program' resides Start that 'other program' Then instead of PinballX starting BigBox directly, have it execute this batch file to start BigBox.
-
You're welcome. If you're shooting for up to 8 players, I think you're crazy. lol Here's 4 (I hope) WinHide, ahk_class Shell_TrayWnd ;Hide taskbar ; RetroArch locations RA1 := "E:\_arcade\LaunchBoxPortable\Emulators\RetroArch1" RA2 := "E:\_arcade\LaunchBoxPortable\Emulators\RetroArch2" RA3 := "E:\_arcade\LaunchBoxPortable\Emulators\RetroArch3" RA4 := "E:\_arcade\LaunchBoxPortable\Emulators\RetroArch4" ;Ask the user how many single player games InputBox, UserInput, Enter RetroArch Instances (up to 4), Please enter the amount of single player games (<=4):, , 300, 150 If (UserInput == 1) { Run, "%RA1%\retroarch.exe" -f -L "%RA1%\cores\%1%.dll" "%2%", , , p1 } else If (UserInput == 2) { Run, "%RA1%\retroarch.exe" -L "%RA1%\cores\%1%.dll" "%2%", , , p1 Run, "%RA2%\retroarch.exe" -L "%RA2%\cores\%1%.dll" "%2%", , , p2 Sleep, 1000 ;give the windows a sec to load Loop, UserInput { WinSet, Style, -0xC00000, ahk_pid p%A_Index% WinSet, Style, -0x40000, ahk_pid p%A_Index% } WinMove, ahk_pid %p1%, , 0, 0 ,A_ScreenWidth/2, A_ScreenHeight WinMove, ahk_pid %p2%, , A_ScreenWidth/2, 0 ,A_ScreenWidth/2, A_ScreenHeight } else If (UserInput == 3) { Run, "%RA1%\retroarch.exe" -L "%RA1%\cores\%1%.dll" "%2%", , , p1 Run, "%RA2%\retroarch.exe" -L "%RA2%\cores\%1%.dll" "%2%", , , p2 Run, "%RA3%\retroarch.exe" -L "%RA3%\cores\%1%.dll" "%2%", , , p3 Sleep, 1000 ;give the windows a sec to load Loop, UserInput { WinSet, Style, -0xC00000, ahk_pid p%A_Index% WinSet, Style, -0x40000, ahk_pid p%A_Index% } WinMove, ahk_pid %p1%, , 0, 0 ,A_ScreenWidth/2, A_ScreenHeight/2 WinMove, ahk_pid %p2%, , A_ScreenWidth/2, 0 ,A_ScreenWidth/2, A_ScreenHeight/2 WinMove, ahk_pid %p3%, , 0, A_ScreenHeight/2 ,A_ScreenWidth/2, A_ScreenHeight/2 } else If (UserInput == 4) { Run, "%RA1%\retroarch.exe" -L "%RA1%\cores\%1%.dll" "%2%", , , p1 Run, "%RA2%\retroarch.exe" -L "%RA2%\cores\%1%.dll" "%2%", , , p2 Run, "%RA3%\retroarch.exe" -L "%RA3%\cores\%1%.dll" "%2%", , , p3 Run, "%RA4%\retroarch.exe" -L "%RA4%\cores\%1%.dll" "%2%", , , p4 Sleep, 1000 ;give the windows a sec to load Loop, UserInput { WinSet, Style, -0xC00000, ahk_pid p%A_Index% WinSet, Style, -0x40000, ahk_pid p%A_Index% } WinMove, ahk_pid %p1%, , 0, 0 ,A_ScreenWidth/2, A_ScreenHeight/2 WinMove, ahk_pid %p2%, , A_ScreenWidth/2, 0 ,A_ScreenWidth/2, A_ScreenHeight/2 WinMove, ahk_pid %p3%, , 0, A_ScreenHeight/2 ,A_ScreenWidth/2, A_ScreenHeight/2 WinMove, ahk_pid %p4%, , A_ScreenWidth/2, A_ScreenHeight/2 ,A_ScreenWidth/2, A_ScreenHeight/2 } else { MsgBox Invalid Selection WinShow, ahk_class Shell_TrayWnd ;Restore TaskBar ExitApp } Sleep, 1000 ; because you never know last := p%UserInput% Process, WaitClose, %last% WinShow, ahk_class Shell_TrayWnd ;Restore TaskBar ExitApp $F12:: HideShowTaskbar(hide := !hide) ;Toggle taskbar. HideShowTaskbar(action) ;revised. Same AHK thread, different answer { ;https://www.autohotkey.com/boards/viewtopic.php?p=414584&sid=dac3435aa858994dfe2ffd9cb41fdb7d#p414584 if action WinHide, ahk_class Shell_TrayWnd else WinShow, ahk_class Shell_TrayWnd } I like the shorter HideShowTaskbar method. But if doesn't work on your PC, change it back to the "other" one (and change line #1 and the line right before ExitApp [2 locations]). If you don't need to manually toggle the TB at all, you can remove everything from "$F12::" on down. Any hotkeys you assign (i.e. F12 as shown) will function until the last Player #'s window is closed/exited. So if 3 players is selected, you can exit p1 and p2, and F12 will still work. But if you exit [only] p3 (leaving p1 and p2 still open) F12 will not work anymore. If only "1" player is selected, I'm pretty sure the "-f" makes it fullscreen. There's probably some other stuff I'm forgetting to mention, but I think you get the gist.
-
Without copying your script (which is quite impressive looking!!!) and running it myself (cause I ain't making 4 copied of RA. And it's my bedtime right now. lol), is the alignment issue by chance: say you select 2 players, there's a little gap on the very left, in between the 2 windows, and on the very right? That's what I had seen when playing with it earlier today (but using notepad windows [easier to test that way]). Using WindowSpy.ahk (included with [a full install of] AutoHotkey), I found on my 1920 x1080 monitor, the difference (the 'little gap') was 7. So setting window #1's x value to -7 (instead of 0 [zero]) pushed it up against the left edge. Then each windows' width was 974. Ya, the math don't add up to 1920. But I'm sure M$ has some logical reasoning for it. How I found the -7... Opened 2 copies of Notepad. Clicked one and hit {Win}{Left Arrow}. The selected the other copy to be the right. Then with WindowSpy [left window] [Right Window] The height (1047) is without the taskbar being hidden, so ignore it. And don't ask me about the "953". (maybe the math will make sense to me in the morning.) And if that wasn't the alignment issue you're experiencing... Could you explain more, please?
-
chd compression support PCSX2 (PlayStation 2)
JoeViking245 replied to Your Friendly A.I Overlord's topic in Noobs
The files aren't even getting extracted to be able to be converted. (as in, there's nothing there for chdman to convert) So chances are your FOR loop is fine. I'm not sure what "7za.exe" is. (I've always had/used 7z.exe) But I'm sure 7za works. Options: Place a copy of 7za.exe in the same folder as your batch file. (Should only need the one file) OR Change the line that calls it to include the full path to where your '7za.exe' is located. i.e. "C:\Program Files\7zip\7za.exe" x -y -onew_dir "4x4 Evo (USA).7z" (adjust to the actual path where yours is located) -
Not sure if this will work in your case, but... create a shortcut to your batch file. Then right click the shortcut and select Properties. Then in the Shortcut tab, for Run:, select "Minimized" and click OK. Then point to the shortcut instead of the batch file itself.
-
Absolutely! Then (as you said) use it to Set and Move, respectively, and then also "Process, WaitClose..." (changing RunWait to just Run).
-
Sweet!! You should have a quote at the very end of both lines as well (similar to my 1st post, but never transferred over 😊). If fact, should probably quote all paths to 'future proof it'. (Only really needed if the path and/or filename has a space in it. But is also cheap insurance.) RA1 := E:\_arcade\LaunchBoxPortable\Emulators\RetroArch1 RA2 := E:\_arcade\LaunchBoxPortable\Emulators\RetroArch2 Run, "%RA1%\retroarch.exe" -L "%RA1%\cores\%1%.dll" "%2%" RunWait, "%RA2%\retroarch.exe" -L "%RA2%\cores\%1%.dll" "%2%" If you need help with that, let me know. Hint: (from a copy & paste) WinSet, Style, -0xC00000, a ; remove the titlebar and border(s) WinMove, a,, 0, 0, 1280, 1024 ; move the window to 0,0 and reize it to 1280x1024. Adjust accordingly
-
retroarch1.exe vs retroarch.exe?
-
RetroArch uses the cores. Not AutoHotkey. So effectively what's happening is you're sending the command: Autohotkey.exe -L vba_next_libretro rom_name So AHK is trying to load/launch the script "-L". Which of course doesn't exist. There's something here about a 'Pandora's Box', 'can of worms', 'what have I gotten myself into'.... lol So ya, in retrospect, RA needs to know what core to load. For proof of concept [that this'll work], for your Associated Platform "Nintendo Game Boy Advance" (I'm assuming your Pokémon game is in GBA), completely remove the core Now in the Extra Command-Line Parmeters field (the one just to the right), put "E:\_arcade\LaunchBoxPortable\ThirdParty\AutoHotkey\MyAHKs\CustomEmulator.ahk" vba_next_libretro Note: this Extra Command-Line Parmeter, I'm pretty sure, overrides the Default Command-Line Parameters in the Details Tab. But leave it there. Oh, and as suggested above, you probably will need to Un-Check those 2 boxes. When done, save. Now edit "CustomEmulator.ahk" Run, E:\_arcade\LaunchBoxPortable\Emulators\RetroArch1\retroarch.exe -L %1% "%2% RunWait, E:\_arcade\LaunchBoxPortable\Emulators\RetroArch2\retroarch.exe -L %1% %2% Try running Pokémon LeafGreen and cross your fingers.
-
@whazzzzzup17 That (-L) looks like something you might have in your Associated Platform Custom Command Line Parameters for this "emulator"?
-
Make sure your 'new' Platform is set to Scrape As the actual platform. Tools, Options, Manage Emulators Edit your emulator and change Scrape As if needed. Save Select all the games in your new Platform (click on one, then hit Ctrl+A). Tools, Download, Update Metadata and Media for All Games. ...follow the prompts.
-
You can't pass LaunchBox variables to a Running AutoHotkey Script (nor an Additional App). To do what you want (one method at least) is to create an AHK script that 'is your emulator'. If you need to pass the full/path/to/the/romfile.exe, uncheck the 2 boxes. Then in CustomEmulator.ahk Run, E:\_arcade\LaunchBoxPortable\Emulators\RetroArch1\retroarch.exe "%1%" RunWait, E:\_arcade\LaunchBoxPortable\Emulators\RetroArch2\retroarch.exe "%1%" RunWait on the 2nd instance keeps the script 'running'. Otherwise, it would launch the 2 instances and close, LB would see that as the emulator exiting and you get the "Thank you for Playing" shutdown screen right away. Not sure what this does for pause screens or exiting RA, but should get you in the right direction.
-
Z-triggers are an animal of their own and require special attention. It probably could be cleaned up a bit, but I think this gives you what you're trying to do. Joy5:: Joy6:: Joy7:: Press= SetTimer, WatchAxis, 5 return WatchAxis: { GetKeyState, SelectButton, Joy7 GetKeyState, L1Button, Joy5 GetKeyState, R1Button, Joy6 GetKeyState JoyZButtons, JoyZ JoyZButtons := Round(JoyZButtons) PressPrev= %Press% if (SelectButton = "D") { if (L1Button = "D") { ; Load state Press=L1 if Press= %PressPrev% return SendInput {F3} Sleep 750 } else if (R1Button = "D") { ; Save state Press=R1 if Press= %PressPrev% return SendInput {F1} Sleep 750 } else if (JoyZButtons > 60) { ; Prev slot Press=LZ if Press= %PressPrev% return SendInput !{F2} Sleep 750 Press= } else if (JoyZButtons < 40) { ; Next slot Press=RZ if Press= %PressPrev% return SendInput {F2} Sleep 750 Press= } } }
-
Do you have a LaunchBox folder inside your LaunchBox folder? i.e. E:\Users\sound\LaunchBox\LaunchBox\
-
I'm not sure about the conversion part. It was quite a while ago when I did mine and I only have 13. Just make a copy of 2 or 3 of your games and test on those. I suspect you won't have any problems though. As far as the configurations, I'm pretty sure Dolphin reads the game's ID from inside the file, regardless of compression format (or none). So Mario Kart Wii, in whatever format (wbfs, iso, rvz...) will always be read as "RMCE01". And that is also how the configurations are saved and then associated to the rom.
-
Yes. You'd set this up in your Emulator settings for MAME under Associated Platforms - Default Command-Line Parameters Note: I've only just recently learned that the media flag ["-cart"], in most cases isn't necessary. So the Default Parameter could be just "megadriv". Make sure the Associated Platform is named the exact same as your actual Platform's name. LaunchBox [in part] doesn't currently support the importing of MAME's softlists (consoles, computers etc... aka: non-Arcade Machines). It'll import the roms without issue, but it won't give them their proper names. So sor2.zip will import as "sor2", vs. "Streets of Rage II". There is a plugin that can import MAME's softlist roms into LaunchBox, apply their proper game Titles and also set it (them) up as an Associated Platform with the corresponding Default Command-Line Parameters.
-
You have mame.exe under "..\Tron Mame\" (which is not an issue). Any chance you have different installs of MAME and when you tested it through MAME itself, you did it from a different copy of 'mame.exe'? Since it worked outside of LaunchBox, it'll work inside of LB. Is it safe to assume other Arcade games you launch with your MAME emulator (as [sorta] shown in the images) work through LaunchBox? (they're all using ..\Tron Mame\mame.exe\ ?) You shouldn't need tron.ini at all. But since you do, make sure "rompath" inside of it points to where your roms are (if not in the default "roms" folder). Also make sure you have "tron.zip" AND "midssio.zip" (both required) accessible to where rompath (in tron.ini or better yet, mame.ini) points to.
-
You're probably going to need to start the multiplayer using a batch file (or similar) because you're having to launch multiple copies of the emulator. You may be able to add an Additional App to your game and set it to launch Before Main app. You'd need to do it game specific because you can't pass variables to an Additional App. So the Main App would load up the Player 1 copy of SM3, and the Additional App would load the other copy of SM3 that's setup for Player 2.