Jump to content
LaunchBox Community Forums

JoeViking245

Moderators
  • Posts

    4,922
  • Joined

  • Last visited

  • Days Won

    36

Posts posted by JoeViking245

  1. 2 hours ago, Sbaby said:

    At the moment it didn't work but I added these two lines and it works fine now . It is also perfect with Windows 11. Thank you very much

    Good to know it works on Windows 11.  Thanks.

    If you wanted, you could replace those 3 BigBox lines with just 1 like I showed.  Start ("RunWait") BigBox.exe (or LaunchBox.exe) from within the "Core" subfolder.

  2. 10 minutes ago, Sbaby said:

    I didn't understand what I should do ...

    Right now if I run 1.ahk everything works fine and everything goes black

    Then if I run 2.ahk it restores everything except original wallpaper

    how should i correct them?

     

    OHhhhh..... you removed the semicolon to uncomment the line(s).  Gotch'ya.

    21 hours ago, JoeViking245 said:

    You will still need to have the script running, or save to fore mentioned variables externally to be recalled when restoring.

    The file I attached was a library that you are to make reference from in your original script.  You can reference it by using the #Include statement.  

     

    I suppose you could try to use it the way you did.  But use just one script file.  Uncomment the 2 lines and somewhere in between them, add

    RunWait, "D:\LaunchBox\Core\LaunchBox.exe"

    image.thumb.png.54ef31d134a64522fbe0b327e26bf938.png

  3. 1 hour ago, Sbaby said:

    Wow, that looks great and very interesting 😮
    I did a test on a virtual machine with windows 10. I used your script ToggleAllLibrary.ahk
    I changed it by removing the semicolons from ToggleEverything: = HideDesktop () and magically it's all black ( This is great :) )

    Then I used a second identical script but removing the semicolons from RestoreDesktop (ToggleEverything [1], ToggleEverything [2])

    This brought me everything back to normal...icons, bar, etc except for the desktop background which remained black, instead it should have brought me back the original wallpaper, where did I go wrong? 🧐

    The call to RestoreDesktop doesn't (shouldn't?) have any semicolons.  Removing the semicolon from ToggleEverything changes it from an expression method to a legacy method in which both are different in how they set the array ToggleEverything. So that may have something to do with it.

    Removing the colon from ToggleEverything := HideDesktop() shouldn't have made a difference in "hiding" everything.  But it may make a difference in setting its array (originalWallpaper, origBackground) that are returned from HideDesktop().  If those aren't stored properly (or at all), attempting to run

    RestoreDesktop (ToggleEverything [1], ToggleEverything [2])

    Would be just the same as running

    RestoreDesktop ("", "")

    ..then RestoreDesktop won't know what the originalWallpaper was to restore it.

  4. 2 hours ago, Sbaby said:

    I would like to set a Windows desktop wallpaper when launchbox starts.

    This is for those milliseconds when I occasionally can't cover the desktop for some game loads (They are few but it happens to me).

    But then I would like the Windows 11 wallpaper to return when launchbox / bigbox is closed.


    Is it possible to do this with ahk script?

    This works on Windows 10.  Not sure about Windows 11.  Also, not sure about dual monitors.

    To RESTORE the original wallpaper, you would need to keep the script running until you close LB/BB, or store the originalWallpaper variable to a txt file (or something).

    ; Store original desktop wallpaper (probably has issues with multiple monitors)
    RegRead, originalWallpaper, HKCU\Control Panel\Desktop, WallPaper
    ; Set desktop wallpaper to null (not saved to registry.  Changes will revert after rebooting PC)
    DllCall("SystemParametersInfo", UInt, 0x14, UInt, 0, Str, , UInt, 2)

     

    Unless you want a 'special' wallpaper while LB/BB is running, it might be easier to have no wallpaper ("null") and set the background color to black. If your default is something other than black, you'll want to save the origBackground variable as well

    ; Store original background color
    RegRead, backgroundRGB, HKCU\Control Panel\Colors, Background
    StringSplit split, backgroundRGB, " "
    origBackground := % RGB( split1, split2, split3)
    ; Set the background Color to black
    DllCall("SetSysColors", "Int", 1, "Int*", 1, "UInt*", 0)

    And if you're saving (storing) origBackgound,  you'll need this subroutine also.

    ;this subroutine is a part of desktopBackground
    RGB(r, g, b) {
       SetFormat, Integer, Hex
       Return, (r << 16) | (g << 8) | b
    }

     

    Then to restore things after LB/BB closes (again, uses the variables originalWallpaper and origBackground that were saved from before.)

    ; Restore original desktop wallpaper (image)
    DllCall("SystemParametersInfo", UInt, 0x14, UInt, 0, Str, originalWallpaper, UInt, 2)
     
    ; Restore the original background color
    DllCall("SetSysColors", "Int", 1, "Int*", 1, "UInt*", origBackground)

     

    If you'd prefer to have all that in a library and just call a function to hide and another to restore, you can call the attached library using #Include.  Instructions are in the file.  You will still need to have the script running, or save to fore mentioned variables externally to be recalled when restoring.

    The library I made actually also hides/restores the desktop icons, taskbar, minimizes all windows as well as the wallpaper/background thing above.  Basically it gives you a black canvas.  So you'll want to comment or delete those portions you don't want out.

    Have fun. :D     ToggleAllLibrary.ahk.txt  (be sure to remove ".txt" if/when you go to use it.)

     

  5. 7 minutes ago, bwunk said:

    Is it possible to change the bezel art that is displayed for a single game?  

    Example: Golden tee'99 has a nice theme bezel with control tips on it, but golden tee 2006 does not so it shows the default "arcade" bezel.  Can I edit the metadata for Golden Tee 2006 to show the same bezel as '99?

    Easiest way (only way?) is to make a copy of the bezel folder for Golden tee '99 (which will be "gt99" [same name as the games ROM file]) and rename it (the copy) to match the name of the [other] ROM you want to also use it for.  If it's Golden Tee Fore! 2006 Complete, the ROM name is "gtfore06".  So the copied folder will be renamed to "gtfore06".

    For stand-alone MAME, the bezel folders are located in the artwork subfolder of your MAME emulator.  Example:   ../Emulators/MAME/artwork/gt99/

  6. 13 hours ago, maxforwardspeed said:

    Looks like another great plugin! My roms are not yet imported into LB and were all in zipped format. I just extracted them but they are now in separate folders named after each game, and the roms are GDI. How should I import these into LB so I can use the plugin?

    Thank you!

    So yours is not really a question about the plugin. I've never imported gdi files nor ROMs that are in individual subfolders.  But I know there's an option when you import ROMs where you can select a folder or files.  In your case a folder (containing the subfolders).

  7. @maxforwardspeed Try adding     ,,Min     to the end of your 2 run lines

    #SingleInstance Force
     
    Run, E😕Emulation\LaunchBox\Sinden\Player 1\[the rest of the long path]\Lightgun.exe,,Min
    Run, E😕Emulation\LaunchBox\Sinden\Player 2\[the rest of the long path]\Lightgun.exe,,Min
     
    ~Esc::
        Process,Close,Lightgun.exe
        Run,taskkill /im "Lightgun.exe" /F
        sleep, 500
        ExitApp
    return

    Edit:  lol  it likes changing : \ when their right next to each other.  But you get the idea ;) 

  8. 11 minutes ago, maxforwardspeed said:

    Unfortunately it doesn't help in my case.

    Was that checkbox even an option for you?  Does it actually start it and send it to the taskbar (if checked)? 

    If you don't use the additional app, does your game start full screen and in focus?

    [With the additional app in place] try disabling the startup screen.  Any change?

    When you have to Alt+Tab to the non-fullscreen game to bring it in focus, can you see what application you're Alt+Tabbing from?  (The application that is stealing focus)

    Is the Alt+Tab thing required in BigBox only? Or do you need to do that when launching the game from LaunchBox as well?

    Can you show the script you're using to launch the Sinden software?

    In the emulator Startup Screen settings that you're using for the game(s) you load the Sinden software with, Is Hide All Windows that are not in Exclusive Fullscreen Mode box checked? Try the opposite.

  9. 9 minutes ago, maxforwardspeed said:

    Do you guys know how to have an AHK run as an additional app to launch software in the background and keep it in the background? I'm running a script to launch Sinden software before games but Launchbox and Bigbox seem to lose focus on actually keeping those apps as background processes, and the game never launches Fullscreen, but I see it below in the taskbar. In Bigbox I have to Alt-tab my way out of a completely black screen, even though all processes are running, just not in the right sequence I guess?

    Does this help?

     

  10. 7 hours ago, Fursphere said:

    On both of my cabinets, there is an entry in Task Manager - Startup for "BigBoxLauncher". 

    Out of curiosity, can you right click and select Open file location or select Properties?  Where/what does it point to (i.e. is it pointing to the ../LaunchBox/ folder? Or somewhere else?)?  What's the date on the executable?  Is there any useful information in the Details tab of Properties?

  11. 10 minutes ago, maxforwardspeed said:

    can you use the plugin to open multiple apps?

    No and yes.  The plugin can create Additional Apps, but Additional Apps can only open one program/executable.  Just like any command line.  But you can create multiple "Start Before Main Application" Additional Apps.  Or like you said, you could create 1 AHK script or 1 batch file that will open your 2 required instances and point to them. 

    25 minutes ago, maxforwardspeed said:

    I'm guessing that's pushing the limits of relying on launchbox to startup.

    Limits? What limits? There aren't no stinking limits. lol

  12. 57 minutes ago, signotime said:

    now the roms of the gamebase extras appear in launchbox but do not start with gblauncher instead any custom emulator works

     

    These go far beyond the scope of this plugin and my personal knowledgebase.

    I'm glad I was able to get the Extras to import for you.  As for getting the games to run, all I can say is good luck and I hope you find out how.

    Thank you for taking the time to test the update.

  13. 2 hours ago, skizzosjt said:

    Unfortunately on my end I have had no luck with using the method detailed in the AHK docs you're asking about. I went about it from every angle and interpretation I could think of without success. I never did get that that MsgBox to show up!

    No worries. Thanks for checking.

     

    2 hours ago, skizzosjt said:

    but I'm not 100% if that is how controllers work

    In this case, the issue is not so much the controller.  It's the "If(state)" line.  Where "state" is, "is something on the controller activated".  A button is pushed. A joystick (thumbstick?) is not at 0,0. etc.

    The script is running "checkForJoy:" every 10 milliseconds. When you press "A", If(state) = True, so it executes whatever is in between the {  }.  

    If you hold down "A", If(state) will = True, If(state.wButtons & 4096) will also = True, so it will 'Send k'.  [In this case] there's nothing else to do inside the 'hotkey label' "checkForJoy".   So nothing more happens.  Until 10 milliseconds later when checkForJoy is activated again.  Guess what.. If(state) equals True.  So it will 'Send k'. Again.  

    It's a vicious, never-ending cycle.  Like you, I tried different Sleep timers, tried changing the SetTimer to different values (which turns out to be pretty much the same as changing the sleep timer).  Looked at several other little things too.  

    So I got creative....

    There is no auto-repeat at all. So if you press and hold "A", you will not (can not) get "kkkkkkkkkkkkkkkkkkkk".  You'll only get "k".  But if you press A,B,X,Y super-fast, you'll get "kpde" typed out.  Super-fast.  Or press "B" 4 time real fast, you'll get "pppp".  As fast as you press the button. :D  

    Spoiler


    #Include Xinput.ahk
    #Persistent
    SetKeyDelay, 0, 50 
    SetTimer, checkForJoy1, 10
    
    checkForJoy1:
    XInput_Init()
    state := Xinput_GetState(0)
    
    TriggerPrev= %Trigger%
    
    If(state.wButtons & 4096)   ;A button
        Trigger=A
    else If(state.wButtons & 8192)   ;B button
        Trigger=B
    else If(state.wButtons & 16384)  ;X button
        Trigger=X
    else If(state.wButtons & 32768)  ;Y button
        Trigger=X
    else If(state.wButtons & 1)      ;D-Pad UP
        Trigger=DUp
    else If(state.wButtons & 2)      ;D-Pad Down
        Trigger=DDown
    else If(state.wButtons & 4)      ;D-Pad Left
        Trigger=DLeft
    else If(state.wButtons & 8)      ;D-Pad Right
        Trigger=DRight
    else If(state.wButtons & 16)      ;Start
        Trigger=Start
    else If(state.wButtons & 32)      ;Back
        Trigger=Back
    else If(state.wButtons & 256)     ;Left Shoulder
        trigger=LShoulder
    else If(state.wButtons & 512)     ;Right Shoulder
        Trigger=RShoulder
    else If(state.bLeftTrigger > 100) ;Left Trigger (range 0 - 255)
        Trigger=LTrigger
    else If(state.bRightTrigger > 100);Right Trigger
        Trigger=RTrigger
    else If(state.wButtons & 64)      ;Left Thumb Click
        Trigger=LThumb
    else If(state.wButtons & 128)     ;Right Thumb Click
        Trigger=RThumb
    else if(state.sThumbLX < -9000 && state.sThumbLX > -32768)
        Trigger=LjoyL
    else if(state.sThumbLX > 9000 && state.sThumbLX < 32767)
        Trigger=LjoyR
    else if(state.sThumbLy > 9000 && state.sThumbLX < 32767)
        Trigger=LjoyU
    else if(state.sThumbLY < -9000 && state.sThumbLX > -32768)
        Trigger=LjoyD
    else if(state.sThumbRX < -9000 && state.sThumbLX > -32768)
        Trigger=RjoyL
    else if(state.sThumbRX > 9000 && state.sThumbLX < 32767)
        Trigger=RjoyR
    else if(state.sThumbRy > 9000 && state.sThumbLX < 32767)
        Trigger=RjoyU
    else if(state.sThumbRY < -9000 && state.sThumbLX > -32768)
        Trigger=RjoyD
    else
        Trigger=
    
    if Trigger= %TriggerPrev%  ; We have not released the previous trigger
        return  ; Do nothing.
    
    ;**************************************************************
    ; Change below here what you want each button/trigger to do
    ;
    ; If you don't want a button/trigger to do do anything, comment
    ; the 2 lines for that "trigger".  
    ;**************************************************************
    
    if Trigger=A
        Send, k
    if Trigger=B
        Send, p
    if Trigger=X
        Send, d
    if Trigger=Y
        Send, e
    if Trigger=DUp
        Send, D-Pad Up
    if Trigger=DDown
        Send, D-Pad Down
    if Trigger=DLeft
        Send, D-Pad Left
    if Trigger=DRight
        Send, D-Pad Right
    if Trigger=Start
        Send, Start
    if Trigger=Back
        Send, Back
    if Trigger=LShoulder
        Send, Left Shoulder
    if Trigger=RShoulder
        Send, Right Shoulder
    if Trigger=LTrigger
        Send, Left Trigger
    if Trigger=RTrigger
        Send, Right trigger
    if Trigger=LThumb
        Send, Left Thumb Click
    if Trigger=RThumbRight joy moved Right
        Send, Right Thumb Click
    if Trigger=LjoyL
        Send, Left joy moved Left
    if Trigger=LjoyR
        Send, Left joy moved Right
    if Trigger=LjoyU
        Send, Left joy moved Up
    if Trigger=LjoyD
        Send, Left joy moved Down
    if Trigger=RjoyL
        Send, Right joy moved Left
    if Trigger=RjoyR
        Send, Right joy moved Right
    if Trigger=RjoyU
        Send, Right joy moved Up
    if Trigger=RjoyD
        Send, Right joy moved Down
    
    return

    The script is a bit longer, but seems to work well.

    • Thanks 1
  14. @signotime Thanks for the files!  That helped a lot.

    I updated the plugin to hopefully accommodate importing AmstradMania (Amstrad CPC) Extras.  The Extras I added in are "Original Disk" (2122 items), "Original Tape" (2670), and "Alt Version" (117).

    I also updated the AHK script to account for the 3 additions.

    This zip file only contains the plugin file (ImportGameBase.dll) and the AutoHotkey script (GBlaunch.ahk).  Unblock the zip file and replace the 2 existing files in your Plugins/ImportGameBase/ folder with these 2 files.  (You should still have the Database2XML.exe file in that folder.  Making up the 3 required files for the plugin to work)

    When you have a chance, would you please test this and let me know your results.  Thanks.

    ImportGameBase (v1.1).zip

     

  15. 28 minutes ago, maxforwardspeed said:

    Isn't another option to use the windows task scheduler to start the Sinden software on boot?

    Absolutely!  I think that may be a little more 'technically' involved for many (setting it up that way), but a viable option none-the-less.  Maybe not really "technical", but more steps to explain and follow. ;) 

     

    34 minutes ago, maxforwardspeed said:

    I also thought there was an "additional apps" feature in LB that you could use to start the Sinden exe?

    There is, but that's only on a per game basis.  I interpreted the OP as wanting to start the Sinden software at the same time BigBox starts.  Using Additional Apps to load Sinden before starting a game, and then unloading (closing) it after exiting a game does make the most sense.  This would need to be done on a game-by-game basis.

  16. 4 hours ago, signotime said:

    So the plugin doesn't care about the extra games. in the amstrad mania gamebase the subfolders are "original disks", "original tapes" etcetera .... by script I mean the anck file you created.

    amstradmania database file must be formatted differently from other GameBase databases.  I can't find that database file.  When you ran the plugin to import it, the plugin created a file called amstradmania.xml.  Can you zip up that file (.7z or .zip works) and attach that file here? (not amstradmania.mdb. The xml file)  

    Can you also attach the latest log file when the import failed.  The Log file will be in the same folder as the plugin.  "LogFile xxxx.txt"

    I think you mean the AHK script that's included with the plugin for running the games.  If the games won't import, the script can't launch them.  We need to get them to successfully import 1st.

    Thanks for your patience. 

  17. 45 minutes ago, signotime said:

    Hello, vic Your plugin is great but I'm having trouble getting it to work properly. I tried with the vic 20 gamebase and it works very well, imports the extras correctly. At this point I wanted to try with the amstradmania gamebase, but it was impossible to import the extras correctly. I tried to edit the script as you suggested in a previous post, but nothing. could you help me? thank you

    Thanks, Glad you like it.  Regarding amstradmania, which "extras" specifically aren't importing correctly?  Is anything for amstradmania importing at all?  I don't use GameBase so don't really know it that well. But I do know a little.  If you could provide more detail, that would help a lot.

    The script you edited, are you talking about the batch files that @foleyjo created?

  18. Any chance you can find those games in the "Windows" platform?  To double check, in the left pane click "All".  Then in the search field above that, type in the name of 1 of the Steam games you imported and see if it appears.

  19. When you exit LaunchBox, you need to wait a few/several seconds (30 to be ultra-safe?  But realistically, it's way less than that) for LaunchBox to finish saving data. Even after its main window closes.  Then when you remove your external drive, use the "Safely Remove Hardware and Eject Media" feature located on your taskbar.  You may need to click the 'up chevron' to see it.

    image.png.3b1a5e80070f111e5fc85aacce616f87.png

  20. 11 hours ago, jimbone007 said:

    turn maintain aspect ratio off it works but then when I exit the game and relaunch it reverts back to being on.

    Maintain Aspect Ratio doesn't appear it can be saved on a per game basis.  As you discovered.  But as [almost] always, there are options.

    option 1

    You can turn it off globally by editing mame.ini and changing "keepaspect" to "0" (zero).

    image.png.d30b0aa4a3e3f1402c20ba6dcb4660c2.png

     

    option 2

    Though a bit tedious, you can create game-specific ini files that has a single line... "keepaspect       0".  Save the file with the same name as the ROM and a ".ini" file extension.  Save this in the ini folder under MAME.  example:  D:\Emulators\MAME\ini\area51.ini  This method would need to be done for each game you want to have it Off.  If for some reason/somehow there's already an ini file for a specific game, edit it as was done above.

     

     

    12 hours ago, jimbone007 said:

    can this be applied to all mame games in a certain collection. Light gun games for example?

    There are a few ini file types that can be used for specific configurations.  One of them being game-specific as in the previous option.  Controls Input ("light gun games") is not one of them.  I really don't know anything about lightgun machines (cabinets), but I do believe most (all?) use CRT monitors.  Monitor types is one of those 'specific configurations' that are available.

    If you want all your [other] games to have Keep Aspect "On", leave your mame.ini file alone ("keepaspect  1").  Then to have all games that use a CRT monitor use "Keep Aspect OFF", create an ini file just like the game-specific one above, but save the file as "raster.ini".      D:\Emulators\MAME\ini\raster.ini

    • Thanks 1
  21. 11 hours ago, skizzosjt said:

    joysticks are proving to be a bit more of a challenge.

    Added left and right Joy.  Also made the left and right Trigger to not be such a 'hair trigger'. ;) 

    #Include Xinput.ahk
    #Persistent
    
    SetKeyDelay, 0, 50 
    SetTimer, checkForJoy1, 10
    
    checkForJoy1:
    
    XInput_Init()
    state := Xinput_GetState(0)
    
    If(state)
    {
        If(state.wButtons & 4096)   ;A button
            Send, k
        If(state.wButtons & 8192)   ;B button
            Send, p
        If(state.wButtons & 16384)  ;X button
            Send, d
        If(state.wButtons & 32768)  ;Y button
            Send, e
    
        If(state.wButtons & 1)      ;D-Pad UP
            Send, D-Pad Up
        If(state.wButtons & 2)      ;D-Pad Down
            Send, D-Pad Down
        If(state.wButtons & 4)      ;D-Pad Left
            Send, D-Pad Left
        If(state.wButtons & 8)      ;D-Pad Right
            Send, D-Pad Right
    
        If(state.wButtons & 16)      ;Start
            Send, Start
        If(state.wButtons & 32)      ;Back
            Send, Back
    
        If(state.wButtons & 256)     ;Left Shoulder
            Send, Left Shoulder
        If(state.wButtons & 512)     ;Right Shoulder
            Send, Right Shoulder
    
        If(state.wButtons & 64)      ;Left Thumb Click
            Send, Left Thumb Click
        If(state.wButtons & 128)     ;Right Thumb Click
            Send, Right Thumb Click
    
        ;If(state.bLeftTrigger)
        If(state.bLeftTrigger > 100)       ;Left Trigger (range 0 - 255)
            Send, Left Trigger
        If(state.bRightTrigger > 100)      ;Right Trigger
            Send, Right Trigger
    
        ;Left Joy Stick (+/- 9000 is the deadzone)
            ; Range between -32768 and 32767. 
            ; 0 = Center
        if(state.sThumbLX < -9000 && state.sThumbLX > -32768)
            Send Left joy moved Left
        if(state.sThumbLX > 9000 && state.sThumbLX < 32767)
            Send Left joy moved Right
        if(state.sThumbLy > 9000 && state.sThumbLX < 32767)
            Send Left joy moved Up
        if(state.sThumbLY < -9000 && state.sThumbLX > -32768)
            Send Left joy moved Down
    
        ;Right Joy Stick
        if(state.sThumbRX < -9000 && state.sThumbLX > -32768)
            Send Right joy moved Left
        if(state.sThumbRX > 9000 && state.sThumbLX < 32767)
            Send Right joy moved Right
        if(state.sThumbRy > 9000 && state.sThumbLX < 32767)
            Send Right joy moved Up
        if(state.sThumbRY < -9000 && state.sThumbLX > -32768)
            Send Right joy moved Down
    
        Sleep, 200
    }

     

    Going back to attempting to not have to use the Xinput.ahk, would you please test 'the other way' by adding a $ at the beginning and see if that "still" doesn't work for you?

    $1Joy1::MsgBox You pressed A

    This is my last-ditch effort to have AHK's built-in method work for others, and not need to #Include Xinput.ahk (and NOT having to have some special window open. lol).  😊  If by chance it does work, we can give you access to the Guide button as well. ;) 

    • Like 1
×
×
  • Create New...