Rpcs3

slashin8r

Member
RL Member
All works fine for me too, except when loading a game it keeps repeating LOADING numerous times before it starts instead of just once. Any fix for this ?
I am using it to load PSN HDD games if that makes any difference. Does same thing using txt and lnk options.

If you are utilizing the archiving options, then there will be a loading bar for every time 7zip runs, the loading text should display correctly though. There also is an additional loading bar that appears for a split-second which is showing the progress of an unknown process.
 

Davidft9

New member
Latest RPCS3 emulator releases don't let me exit from games with pad buttons on Hyperspin. Should I change anything on module? Thanks in advance for your assistance.
 

shitoken

Member
RL Member
To launch games via RL do I need to create a batch file for each game 1 by 1 and or there is a easy way to launch the games?
Which module should I use PCLauncher or RPCS?
Sorry I new to PS3 setup, trying to complete my HS as much as possible.
 

shitoken

Member
RL Member
Latest RPCS3 emulator releases don't let me exit from games with pad buttons on Hyperspin. Should I change anything on module? Thanks in advance for your assistance.

Hi have you solved this exiting game problem? I am also unable to exit emulator by pressing ESC ,
Module have nothing to set except full screen.
 

RLBradders26

New member
Hi have you solved this exiting game problem? I am also unable to exit emulator by pressing ESC ,
Module have nothing to set except full screen.

Yeah I have the exact same problem.

Edit: Scrap that, I fixed by replacing the CloseProcess() with the one from the retroarch module.
 
Last edited:

cruxan

New member
Im sitting with this right now and Im trying also to close it without getting stuck in a black screen. I came a little bit longer by sending double alt-f4 from rocketlauncher. Maybe to quick between the commands... experiment continues.
 

cruxan

New member
Seems to work if I add "Process, Close, %executable%" to he close process in ahk. and set RPCS3 to end when game ends in settings.
 

THE CUBE

New member
RL Member
HI All. im very new to all this and have had a look through the last few posts regarding the module. I get the following error when I start my games

ScriptError - RLDLL.getZipRootFolder - Exception thrown:
0x80070005 - Access is denied.
Source: RocketLauncher
Description: Access to the path 'D:\HyperSpin\Emulators\RPCS3\dev_hdd0\game\Dantes Inferno (USA)' is denied.
HelpFile: (null)
HelpContext: 0

im trying to run through the shortcut method. I have a feeling its a very noob mistake. Any help greatly appreciated
 

subretro

New member
Do you have a snippet of where that code statement is place? I am running into the same closing issue

- - - Updated - - -

I am setting up my RPCS3 and I have read through this forum. What is the current module version for this? I saw a v1.1.0 download a few posts back but then several mention of code changes along the way but with no new download. I wanted to make sure I was working with the most current version.
 
Last edited:

subretro

New member
Ok so I have been working with the latest RPCS3 Module and so far I am able to get it to work with 2 out of the 3 Methods. For the 1st Method for archiving can you provide a little more detail as to what is compressed and where the games need to be placed are? I am constantly getting an error about RL can't find the bin file in the USRDIR. I have ensured that those settings are in place.

This is the info that is in the README portion of the AHK.

; METHOD 1: Archives: Use this method if you will be compressing your games to save space.
; 1) Archive your game folders, rename the archive to the title of the game, place all the archives within the same folder, and then add that folder as a romPath in RocketLauncher.
; 2) Add the archive's extension ("7z", "rar", "zip", etc.) for the RPCS3 emulator within RocketLauncher.
; 3) Generate a new database based on the new rom path.
; 4) Audit all games for the system and enjoy.
 

PsyKos

New member
RL Member
Hmmmm.... I think I can simply remove this error now. Try the code below.

Code:
MEmu := "RPCS3"
MEmuV := "v0.0.8-9342-ad845861 Alpha"
MURL := ["https://rpcs3.net"]
MAuthor := ["slashin8r", "wallmachine", "jviegas", "brolly", "aurel102001"]
MVersion := "1.1.6"
MDate := "2020-01-07"
MCRC := ""
iCRC := ""
MID := ""
MSystem := ["Sony Playstation 3"]
;----------------------------------------------------------------------------
; Notes:
; [IMPORTANT]
; There are three methods for using this module.
; 
; METHOD 1: Archives: Use this method if you will be compressing your games to save space.
; 1) Archive your game folders, rename the archive to the title of the game, place all the archives within the same folder, and then add that folder as a romPath in RocketLauncher.
; 2) Add the archive's extension ("7z", "rar", "zip", etc.) for the RPCS3 emulator within RocketLauncher.
; 3) Generate a new database based on the new rom path.
; 4) Audit all games for the system and enjoy.
; 
; METHOD 2: Shortcuts: Use this method if you will be installing your games directly into RPCS3. Can also be used if you will be storing your non-archive games outside of the RPCS3 installation directories.
; 1) Create shortcuts of your EBOOT.BIN files, rename them to the title of the game, place them all within the same folder, then add that folder as a romPath in RocketLauncher.
; 2) Add the "lnk" (LNK) extension for the RPCS3 emulator within RocketLauncher.
; 3) Generate a new database based on the new rom path.
; 4) Audit all games for the system and enjoy.
; 
; METHOD 3: Text Files: Use this method if you are converting over from a RPCS3 module prior to version 1.0.2.
; 1) Place game folders all within the same folder. You can rename these folders to whatever you like, usually the title of the game. (e.g. "Rune Factory - Oceans (Europe) [BLES01550]")
; 2) Create a text file for every game with the same name as its game folder. (e.g. "Rune Factory - Oceans (Europe) [BLES01550]")
; 3) Place these text files within the folder storing your games.
; [If you wish to have the text files in a separate folder, edit the "GamesDirectory" variable, found within your RPCS3.ini file, to match the full path of the folder storing your games]
; 4) Add the folder containing your text files as a romPath in RocketLauncher.
; 5) Add the "txt" extension for the RPCS3 emulator within RocketLauncher.
; 6) Generate a new database based on the new rom path.
; 7) Audit all games for the system and enjoy.
; [IMPORTANT]
; 
; 
; 
; To save additional space, this module now automatically compresses each game's PPU folder and Game Data folder (if exists) as long as it is enabled in your RPCS3.ini file.
; PPU file saved in: %romPath%\cache\%romName%_%A_ComputerName%.7z (PPU files are hardware specific, so the computer name is added to the end of the filename)
; Game Data file saved in: %romPath%\data\%romName%_data.7z ("_data" added to the end of the filename so there is no conflict with the rom name)
; 
; Example:
; Rom File = "D:\PS3\PS3 Test Game.rar"
; A_ComputerName = "PC001"
; 
; PPU File = "D:\PS3\cache\PS3 Test Game_PC001.7z")
; Game Data File = "D:\PS3\data\PS3 Test Game_data.7z")
; 
; 
; 
; Known Issues:
; 1) Additional progress bar appears just before the game is extracted/loaded (after the PPU and/or DATA archives are extracted). This problem is not specific to this module.
; 2) Unable to run PSN games with the emulator stored on a network drive.
; 
; 
; 
; Coming Soon:
; 1) Allow PSN games to run from the installed path.
;----------------------------------------------------------------------------

StartModule()
BezelGUI()
FadeInStart()

primaryExe := new Emulator(emuPath . "\" . executable)
primaryWindowClassName := "Qt5QWindowIcon"
emuPrimaryWindow := new Window(new WindowTitle(,primaryWindowClassName, executable))

; Finding emulator config file
Rpcs3config := new File(emuPath . "\config.yml")
Rpcs3config.CheckFile("Could not find RPCS3 config.yml! Run your emulator, go to Settings and save them.")

textGameFolder := moduleIni.Read("Settings", "GamesDirectory","",,1)
archivePPUFolder := moduleIni.Read("Settings", "PPUDirectory",".\cache",,1)
archiveDATAFolder := moduleIni.Read("Settings", "DATADirectory",".\data",,1)
archiveCACHESFolder := moduleIni.Read("Settings", "CACHESDirectory",".\data\caches",,1)
archivePPU := moduleIni.Read("Settings", "ArchivePPU","false",,1)
archiveDATA := moduleIni.Read("Settings", "ArchiveDATA","false",,1)
archiveCACHES := moduleIni.Read("Settings", "ArchiveCACHES","false",,1)
removePPU := moduleIni.Read("Settings", "RemovePPU","false",,1)
removeDATA := moduleIni.Read("Settings", "RemoveDATA","false",,1)
removeCACHES := moduleIni.Read("Settings", "RemoveCACHES","false",,1)

; Convert relative paths into full paths.
textGameFolder := RelativeToFull(textGameFolder, romPath)
archivePPUFolder := RelativeToFull(archivePPUFolder, romPath)
archiveDATAFolder := RelativeToFull(archiveDATAFolder, romPath)
archiveCACHESFolder := RelativeToFull(archiveCACHESFolder, romPath)

BezelStart()

hideEmuObj := Object(emuPrimaryWindow,1)
HideAppStart(hideEmuObj,hideEmu)

; Set variables
gameType := ""
gameSerial := ""
gameDirectoryJunction := "false"
gamePPU := "false"
gamePPUarchive := archivePPUFolder . "\" . romName . "_" . A_ComputerName . ".7z"
gamePPUromPath := archivePPUFolder
gamePPUromName := romName . "_" . A_ComputerName
gamePPUromExtension := ".7z"
gamePPUemuPath := emuPath . "\cache"
gameDATA := "false"
gameDATAarchive := archiveDATAFolder . "\" . romName . "_data.7z"
gameDATAromPath := archiveDATAFolder
gameDATAromName := romName . "_data"
gameDATAromExtension := "7z"
gameDATAemuPath := emuPath . "\dev_hdd0\game"
gameCACHES := "false"
gameCACHESarchive := archiveCACHESFolder . "\" . romName . "_hdd1.7z"
gameCACHESromPath := archiveCACHESFolder
gameCACHESromName := romName . "_hdd1"
gameCACHESromExtension := "7z"
gameCACHESemuPath := emuPath . "\dev_hdd1\caches"
textRomFolder := ""

If (romExtension = ".txt")
{
  FileReadLine, textRomFolder, %romPath%\%romName%%romExtension%, 1
  If (textGameFolder = "")
  {
    If (textRomFolder = "")
    {
      gameSerial := romName
      If (Fileexist(romPath . "\" . romName . "\PS3_GAME\USRDIR\EBOOT.BIN"))
      {
        gameType := "disc"
        romPath := romPath . "\" . romName . "\PS3_GAME\USRDIR"
      }
      Else If (Fileexist(romPath . "\" . romName . "\USRDIR\EBOOT.BIN"))
      {
        gameType := "game"
        romPath := romPath . "\" . romName . "\USRDIR"
      }
      Else
      {
        ScriptError("Unable to find EBOOT.BIN within the folder: """ . romPath . "\" . romName . "\""")
      }
    }
    Else
    {
      gameSerial := textRomFolder
      If (Fileexist(romPath . "\" . textRomFolder . "\PS3_GAME\USRDIR\EBOOT.BIN"))
      {
        gameType := "disc"
        romPath := romPath . "\" . textRomFolder . "\PS3_GAME\USRDIR"
      }
      Else If (Fileexist(romPath . "\" . textRomFolder . "\USRDIR\EBOOT.BIN"))
      {
        gameType := "game"
        romPath := romPath . "\" . textRomFolder . "\USRDIR"
      }
      Else
      {
        ScriptError("Unable to find EBOOT.BIN within the folder: """ . romPath . "\" . textRomFolder . "\""")
      }
    }
  }
  Else
  {
    If (textRomFolder = "")
    {
      gameSerial := romName
      If (Fileexist(textGameFolder . "\" . romName . "\PS3_GAME\USRDIR\EBOOT.BIN"))
      {
        gameType := "disc"
        romPath := textGameFolder . "\" . romName . "\PS3_GAME\USRDIR"
      }
      Else If (Fileexist(textGameFolder . "\" . romName . "\USRDIR\EBOOT.BIN"))
      {
        gameType := "game"
        romPath := textGameFolder . "\" . romName . "\USRDIR"
      }
      Else
      {
        ScriptError("Unable to find EBOOT.BIN within the folder: """ . textGameFolder . "\" . romName . "\""")
      }
    }
    Else
    {
      gameSerial := textRomFolder
      If (Fileexist(textGameFolder . "\" . textRomFolder . "\PS3_GAME\USRDIR\EBOOT.BIN"))
      {
        gameType := "disc"
        romPath := textGameFolder . "\" . textRomFolder . "\PS3_GAME\USRDIR"
      }
      Else If (Fileexist(textGameFolder . "\" . textRomFolder . "\USRDIR\EBOOT.BIN"))
      {
        gameType := "game"
        romPath := textGameFolder . "\" . textRomFolder . "\USRDIR"
      }
      Else
      {
        ScriptError("Unable to find EBOOT.BIN within the folder: """ . textGameFolder . "\" . textRomFolder . "\""")
      }
    }
  }
}
Else If (romExtension = ".lnk" && Fileexist(romPath . "\" . romName . romExtension))
{
  FileGetShortCut, %romPath%\%romName%%romExtension%, shortcutTarget
  StringReplace, romPath, shortcutTarget, \EBOOT.BIN
}
Else If (InStr(sevenZFormats, romExtension)) {
  gameSerial := RLObject.getZipRootFolder(romPath . "\" . romName . romExtension)
}

; Store old values for later
originalRomPath := romPath
originalRomName := romName
originalRomExtension := romExtension
originalSevenZRomPath := sevenZRomPath
originalGameName := gameInfo["Name"].Value

; Extract PPU files if they exist
If (archivePPU = "true" && Fileexist(gamePPUarchive))
{
  gameInfo["Name"].Value := "EXTRACTING COMPILED PPU FILES"
  romExPercentage := 0
  layer3Percentage := 0
  rootFolder := RLObject.getZipRootFolder(gamePPUarchive)
  romExSize := RLObject.getZipExtractedSize(gamePPUarchive)
  sevenZRomPath := gamePPUemuPath . "\" . rootFolder
  use7zAnimation := "true"
  Gdip_GraphicsClear(Fade_G5)
  Gosub, UpdateFadeFor7z
;  7z(gamePPUromPath, gamePPUromName, gamePPUromExtension, gamePPUemuPath)
  RunWait, %ComSpec% /c ""%sevenZPath%" x "%gamePPUarchive%" -aos -o"%gamePPUemuPath%", sevenZPID, Hide
  gamePPU := "true"
}

; Extract Game Data files if they exist
If (archiveDATA = "true" && Fileexist(gameDATAarchive))
{
  gameInfo["Name"].Value := "EXTRACTING ADDITIONAL GAME DATA"
  romExPercentage := 0
  layer3Percentage := 0
  rootFolder := RLObject.getZipRootFolder(gameDATAarchive)
  romExSize := RLObject.getZipExtractedSize(gameDATAarchive)
  sevenZRomPath := gameDATAemuPath . "\" . rootFolder
  use7zAnimation := "true"
  Gdip_GraphicsClear(Fade_G5)
  Gosub, UpdateFadeFor7z
;  7z(gameDATAromPath, gameDATAromName, gameDATAromExtension, gameDATAemuPath)
  RunWait, %ComSpec% /c ""%sevenZPath%" x "%gameDATAarchive%" -aos -o"%gameDATAemuPath%", sevenZPID, Hide
  gameDATA := "true"
}

; Extract Game Data files if they exist
If (archiveCACHES = "true" && Fileexist(gameCACHESarchive))
{
  gameInfo["Name"].Value := "EXTRACTING ADDITIONAL GAME CACHES"
  romExPercentage := 0
  layer3Percentage := 0
  rootFolder := RLObject.getZipRootFolder(gameCACHESarchive)
  romExSize := RLObject.getZipExtractedSize(gameCACHESarchive)
  sevenZRomPath := gameCACHESemuPath . "\" . rootFolder
  use7zAnimation := "true"
  Gdip_GraphicsClear(Fade_G5)
  Gosub, UpdateFadeFor7z
;  7z(gameCACHESromPath, gameCACHESromName, gameCACHESromExtension, gameCACHESemuPath)
  RunWait, %ComSpec% /c ""%sevenZPath%" x "%gameCACHESarchive%" -aos -o"%gameCACHESemuPath%", sevenZPID, Hide
  gameCACHES := "true"
}

If (gamePPU := "true" || gameDATA := "true" || gameCACHES := "true")
{
  sevenZRomPath := originalSevenZRomPath
  gameInfo["Name"].Value := originalGameName
  Gdip_GraphicsClear(Fade_G5)
}
romPath := originalRomPath
romName := originalRomName
romExtension := originalRomExtension
romExPercentage := 0
layer3Percentage := 0
romExSize := 1000000000
use7zAnimation := "true"
Gosub, UpdateFadeFor7z

7z(romPath, romName, romExtension, sevenZExtractPath)

IfInString, romPath, \USRDIR
{
  FoundPos := InStr(romPath, "\USRDIR") + 6
  StringLeft, romPath, romPath, %FoundPos%
}

romFolder := romPath

; Find the game location and determine the type of game (disc or hdd)
StringRight, stringTest, romFolder, 6
If (stringTest = "USRDIR")
{
  StringReplace, romFolder, romFolder, \USRDIR
  paramFile := romFolder . "\PARAM.SFO"
  FileRead, data, *c %paramFile%
  offset := StrLen(data)-24
  SetFormat, IntegerFast, hex
  offset += 0
  offset .= ""
  SetFormat, IntegerFast, d
  gameSerial := StrGet(&data + offset, "UTF-8")
  StringLeft, stringTest, gameSerial, 2
  If (stringTest = "NP")
  {
    gameType := "game"
  }
  Else
  {
    gameType := "disc"
  }
  
  ; Create the directory junction
  If (gameSerial != "" && gameType != "")
  {
    If (!Fileexist(emuPath . "\dev_hdd0\" . gameType . "\" . gameSerial))
    {
      StringReplace, romFolder, romFolder, \PS3_GAME
      RunWait, %ComSpec% /c "mklink /J "%emuPath%\dev_hdd0\%gameType%\%gameSerial%" "%romFolder%", , Hide
      RunWait, %ComSpec% /c "mklink /D "%emuPath%\dev_hdd0\%gameType%\%gameSerial%" "%romFolder%", , Hide
      gameDirectoryJunction := "true"
    }
  }
}
Else
{
  ScriptError("Rom was not found in the USRDIR directory. Please make sure ""bin"" is an RPCS3 extension and also verify the folder structure of your rom.")
}

;MsgBox, romPath: %romPath%`nromName: %romName%`nromExtension: %romExtension%`ngameType: %gameType%`ngameSerial: %gameSerial%`ngameDirectoryJunction: %gameDirectoryJunction%`ngamePPU: %gamePPU%`ngameDATA: %gameDATA%`nsevenZEnabled: %sevenZEnabled%

; Run the game
If (gameType = "game")
{
  primaryExe.Run(" """ . emuPath . "\dev_hdd0\" . gameType . "\" . gameSerial . "\USRDIR\EBOOT.BIN""")
}
Else If (Fileexist(emuPath . "\dev_hdd0\" . gameType . "\" . gameSerial . "\PS3_GAME\USRDIR\EBOOT.BIN"))
{
  primaryExe.Run(" """ . emuPath . "\dev_hdd0\" . gameType . "\" . gameSerial . "\PS3_GAME\USRDIR\EBOOT.BIN""")
}
Else If (Fileexist(romPath . "\PS3_GAME\USRDIR\EBOOT.BIN"))
{
  primaryExe.Run(" """ . romPath . "\PS3_GAME\USRDIR\EBOOT.BIN""")
}
Else If (Fileexist(romPath . "\EBOOT.BIN"))
{
  primaryExe.Run(" """ . romPath . "\EBOOT.BIN""")
}
Else If (Fileexist(romPath . "\" . romName . ".BIN"))
{
  primaryExe.Run(" """ . romPath . "\" . romName . ".BIN""")
}
Else If (Fileexist(romPath . "\" . romName . romExtension))
{
  primaryExe.Run(" """ . romPath . "\" . romName . romExtension . """")
}
Else
{
  ScriptError("Unable to find EBOOT.BIN file. Please make sure ""bin"" (and ""lnk"" [LNK] if you are loading from shortcuts) is an RPCS3 extension and also verify the folder structure of your rom.")
}

; Waiting for main emulator window
emuPrimaryWindow.Wait()
emuPrimaryWindow.Active()
emuPrimaryWindow.WaitActive()

; Waiting up to 5 seconds to see if compiling window appears
If (gameSerial != "" && gamePPU != "true")
{
  Loop, 5
  {
    WinHide, Compiling
    WinWait, Compiling, , 1
    If (!ErrorLevel)
    {
      gameInfo["Name"].Value := "COMPILING PPU FILES"
      use7zAnimation := "true"
      Gdip_GraphicsClear(Fade_G5)
      Gosub, UpdateFadeFor7z
      WinHide, Compiling
      WinWaitClose, Compiling
      gameInfo["Name"].Value := originalGameName
      use7zAnimation := "true"
      Gdip_GraphicsClear(Fade_G5)
      Gosub, UpdateFadeFor7z
      Break
    }
  }
}

BezelDraw()
HideAppEnd(hideEmuObj,hideEmu)
FadeInExit()
primaryExe.Process("WaitClose")

; Remove the PPU files if they were extracted or creates PPU archive file if needed
If ((archivePPU = "true" || removePPU = "true") && gameSerial != "")
{
  IfExist, %gamePPUemuPath%\%gameSerial%
  {
    If (archivePPU = "true")
    {
      IfNotExist, %gamePPUarchive%
      {
        FadeInStart()
        gameInfo["Name"].Value := "ARCHIVING COMPILED PPU FILES"
        romExPercentage := 0
        layer3Percentage := 0
        use7zAnimation := "true"
        Gdip_GraphicsClear(Fade_G5)
        Gosub, UpdateFadeFor7z
        RunWait, %ComSpec% /c ""%sevenZPath%" a "%gamePPUarchive%" "%gamePPUemuPath%\%gameSerial%", , Hide
        FadeInExit()
      }
      Else
      {
        MostRecentTime := 0
        Loop, %gamePPUemuPath%\%gameSerial%\*, 2
        {
          If (A_LoopFileTimeModified > MostRecentTime)
          {
            MostRecentTime := A_LoopFileTimeModified
          }
        }
        FileGetTime, gamePPUtime, %gamePPUarchive%, M
        If (MostRecentTime > gamePPUtime)
        {
          FadeInStart()
          gameInfo["Name"].Value := "ARCHIVING COMPILED PPU FILES"
          romExPercentage := 0
          layer3Percentage := 0
          use7zAnimation := "true"
          Gdip_GraphicsClear(Fade_G5)
          Gosub, UpdateFadeFor7z
          RunWait, %ComSpec% /c ""%sevenZPath%" a "%gamePPUarchive%" "%gamePPUemuPath%\%gameSerial%", , Hide
          FadeInExit()
        }
      }
    }
    If (removePPU = "true")
    {
      FileRemoveDir, %gamePPUemuPath%\%gameSerial%, 1
    }
  }
  Else
  {
    MostRecentTime := 0
    MostRecentFile := ""
    MostRecentName := ""
    Loop, %gamePPUemuPath%\*, 2
    {
      If (A_LoopFileTimeModified > MostRecentTime)
      {
        MostRecentTime := A_LoopFileTimeModified
        MostRecentFile := A_LoopFileLongPath
        MostRecentName := A_LoopFileName
      }
    }
    If (StrLen(MostRecentName) = 9)
    {
      If (archivePPU = "true")
      {
        IfNotExist, %gamePPUarchive%
        {
          FadeInStart()
          gameInfo["Name"].Value := "ARCHIVING COMPILED PPU FILES"
          romExPercentage := 0
          layer3Percentage := 0
          use7zAnimation := "true"
          Gdip_GraphicsClear(Fade_G5)
          Gosub, UpdateFadeFor7z
          RunWait, %ComSpec% /c ""%sevenZPath%" a "%gamePPUarchive%" "%MostRecentFile%", , Hide
          FadeInExit()
        }
        Else
        {
          MostRecentTime := 0
          Loop, %gamePPUemuPath%\%MostRecentName%\*, 2
          {
            If (A_LoopFileTimeModified > MostRecentTime)
            {
              MostRecentTime := A_LoopFileTimeModified
            }
          }
          FileGetTime, gamePPUtime, %gamePPUarchive%, M
          If (MostRecentTime > gamePPUtime)
          {
            FadeInStart()
            gameInfo["Name"].Value := "ARCHIVING COMPILED PPU FILES"
            romExPercentage := 0
            layer3Percentage := 0
            use7zAnimation := "true"
            Gdip_GraphicsClear(Fade_G5)
            Gosub, UpdateFadeFor7z
            RunWait, %ComSpec% /c ""%sevenZPath%" a "%gamePPUarchive%" "%MostRecentFile%", , Hide
            FadeInExit()
          }
        }
      }
      If (removePPU = "true")
      {
        FileRemoveDir, %MostRecentFile%, 1
      }
    }
  }
}

; Remove the Game Data files if they were extracted or creates Game Data archive file if needed
If ((archiveDATA = "true" || removeDATA = "true") && gameSerial != "" && gameType = "disc")
{
  archiveFileArray := []
  archiveFileCount := 0
  Loop, %gameDATAemuPath%\*, 2
  {
    IfInString, A_LoopFileName, %gameSerial%
    {
      archiveFileCount := archiveFileCount + 1
      archiveFileArray[archiveFileCount] := A_LoopFileLongPath
    }
  }
  MostRecentTime := 0
  MostRecentFile := ""
  MostRecentName := ""
  Loop, %gameDATAemuPath%\*, 2
  {
    If (A_LoopFileTimeModified > MostRecentTime)
    {
      MostRecentTime := A_LoopFileTimeModified
      MostRecentFile := A_LoopFileLongPath
      MostRecentName := A_LoopFileName
    }
  }
  fileOne := MostRecentFile . "\ICON0.PNG"
  fileTwo := emuPath . "\dev_hdd0\" . gameType . "\" . gameSerial . "\PS3_GAME\ICON0.PNG"
  FileGetSize, dataSizeOne, %fileOne%
  FileGetSize, dataSizeTwo, %fileTwo%
  FileGetVersion, dataVersionOne, %fileOne%
  FileGetVersion, dataVersionTwo, %fileTwo%
  StringLeft, testRecentFour, MostRecentName, 4
  StringLeft, testSerialFour, gameSerial, 4
  If (dataSizeOne = dataSizeTwo && dataVersionOne = dataVersionTwo && MostRecentName != ".locks" && MostRecentName != "TEST12345" && testRecentFour = testSerialFour)
  {
    If !HasVal(archiveFileArray, MostRecentFile)
    {
      archiveFileCount := archiveFileCount + 1
      archiveFileArray[archiveFileCount] := MostRecentFile
    }
  }
  If (archiveFileCount > 0)
  {
    archiveFileString := ""
    Loop % archiveFileCount
    {
      If (archiveFileString != "")
      {
        archiveFileString := archiveFileString . " "
      }
      archiveFileString := archiveFileString . """" . archiveFileArray[A_Index] . """"
    }
    If (archiveDATA = "true")
    {
      IfNotExist, %gameDATAarchive%
      {
        FadeInStart()
        gameInfo["Name"].Value := "ARCHIVING ADDITIONAL GAME DATA"
        romExPercentage := 0
        layer3Percentage := 0
        use7zAnimation := "true"
        Gdip_GraphicsClear(Fade_G5)
        Gosub, UpdateFadeFor7z
        RunWait, %ComSpec% /c ""%sevenZPath%" a -mx=0 "%gameDATAarchive%" %archiveFileString%, , Hide
        FadeInExit()
      }
      Else
      {
        Loop % archiveFileCount
        {
          archiveElement := archiveFileArray[A_Index]
          MostRecentTime := 0
          Loop, %archiveElement%\*, 2
          {
            If (A_LoopFileTimeModified > MostRecentTime)
            {
              MostRecentTime := A_LoopFileTimeModified
            }
          }
          FileGetTime, gameDATAtime, %gameDATAarchive%, M
          FileGetTime, gameDATAarchiveTime, %archiveElement%, M
          If (MostRecentTime > gameDATAtime || gameDATAarchiveTime > gameDATAtime)
          {
            FadeInStart()
            gameInfo["Name"].Value := "ARCHIVING ADDITIONAL GAME DATA"
            romExPercentage := 0
            layer3Percentage := 0
            use7zAnimation := "true"
            Gdip_GraphicsClear(Fade_G5)
            Gosub, UpdateFadeFor7z
            RunWait, %ComSpec% /c ""%sevenZPath%" a -mx=0 "%gameDATAarchive%" %archiveFileString%, , Hide
            FadeInExit()
            Break
          }
        }
      }
    }
    If (removeDATA = "true")
    {
      Loop % archiveFileCount
      {
        archiveElement := archiveFileArray[A_Index]
        FileRemoveDir, %archiveElement%, 1
      }
    }
  }
}

; Remove the Game Caches if they were extracted or creates Game Caches archive file if needed
If ((archiveCACHES = "true" || removeCACHES = "true") && gameSerial != "")
{
  archiveFileArray := []
  archiveFileCount := 0
  Loop, %gameCACHESemuPath%\*, 2
  {
    IfInString, A_LoopFileName, %gameSerial%
    {
      archiveFileCount := archiveFileCount + 1
      archiveFileArray[archiveFileCount] := A_LoopFileLongPath
    }
  }
  MostRecentTime := 0
  MostRecentFile := ""
  MostRecentName := ""
  Loop, %gameCACHESemuPath%\*, 2
  {
    If (A_LoopFileTimeModified > MostRecentTime)
    {
      MostRecentTime := A_LoopFileTimeModified
      MostRecentFile := A_LoopFileLongPath
      MostRecentName := A_LoopFileName
    }
  }
  StringLeft, testRecentFour, MostRecentName, 4
  StringLeft, testSerialFour, gameSerial, 4
  If (MostRecentName != ".locks" && MostRecentName != "TEST12345" && testRecentFour = testSerialFour)
  {
    If !HasVal(archiveFileArray, MostRecentFile)
    {
      archiveFileCount := archiveFileCount + 1
      archiveFileArray[archiveFileCount] := MostRecentFile
    }
  }
  If (archiveFileCount > 0)
  {
    archiveFileString := ""
    Loop % archiveFileCount
    {
      If (archiveFileString != "")
      {
        archiveFileString := archiveFileString . " "
      }
      archiveFileString := archiveFileString . """" . archiveFileArray[A_Index] . """"
    }
    If (archiveCACHES = "true")
    {
      IfNotExist, %gameCACHESarchive%
      {
        FadeInStart()
        gameInfo["Name"].Value := "ARCHIVING ADDITIONAL GAME CACHES"
        romExPercentage := 0
        layer3Percentage := 0
        use7zAnimation := "true"
        Gdip_GraphicsClear(Fade_G5)
        Gosub, UpdateFadeFor7z
        RunWait, %ComSpec% /c ""%sevenZPath%" a -mx=0 "%gameCACHESarchive%" %archiveFileString%, , Hide
        FadeInExit()
      }
      Else
      {
        Loop % archiveFileCount
        {
          archiveElement := archiveFileArray[A_Index]
          MostRecentTime := 0
          Loop, %archiveElement%\*, 2
          {
            If (A_LoopFileTimeModified > MostRecentTime)
            {
              MostRecentTime := A_LoopFileTimeModified
            }
          }
          FileGetTime, gameCACHEStime, %gameCACHESarchive%, M
          FileGetTime, gameCACHESarchiveTime, %archiveElement%, M
          If (MostRecentTime > gameCACHEStime || gameCACHESarchiveTime > gameCACHEStime)
          {
            FadeInStart()
            gameInfo["Name"].Value := "ARCHIVING ADDITIONAL GAME CACHES"
            romExPercentage := 0
            layer3Percentage := 0
            use7zAnimation := "true"
            Gdip_GraphicsClear(Fade_G5)
            Gosub, UpdateFadeFor7z
            RunWait, %ComSpec% /c ""%sevenZPath%" a -mx=0 "%gameCACHESarchive%" %archiveFileString%, , Hide
            FadeInExit()
            Break
          }
        }
      }
    }
    If (removeCACHES = "true")
    {
      Loop % archiveFileCount
      {
        archiveElement := archiveFileArray[A_Index]
        FileRemoveDir, %archiveElement%, 1
      }
    }
  }
}

; Remove the directory junction
If (gameDirectoryJunction = "true")
{
  RunWait, %ComSpec% /c "rmdir "%emuPath%\dev_hdd0\%gameType%\%gameSerial%", , Hide
}

7zCleanUp()
BezelExit()
FadeOutExit()
ExitModule()

CloseProcess:
  FadeOutStart()
  emuPrimaryWindow.Close()
  Process, Close, %executable%
Return

BezelLabel:
  disableHideBorder := "true"
  disableHideTitleBar := "true"
  disableHideToggleMenu := "true"
Return

HasVal(haystack, needle) {
  for index, value in haystack
    if (value = needle)
      return index
  if !(IsObject(haystack))
    throw Exception("Bad haystack!", -1, haystack)
  return 0
}

RelativeToFull(relativePath, relativeOf) {
  StringLeft, stringTest, relativePath, 2
  If (stringTest = ".\")
  {
    StringTrimLeft, relativePath, relativePath, 1
    relativePath := relativeOf . relativePath
  }
  Else If (stringTest = "..")
  {
    StringSplit, relativePaths, relativePath, "\"
    relativePathsCount := 0
    tempPath := ""
    Loop, %relativePaths0%
    {
      element := relativePaths%A_Index%
      If (element = "..")
      {
        relativePathsCount := relativePathsCount + 1
      }
      Else
      {
        tempPath := tempPath . element
        If (A_Index != relativePaths0)
        {
          tempPath := tempPath . "\"
        }
      }
    }
    relativePath := tempPath
    StringSplit, relativeOfFolders, relativeOf, "\"
    romGameFoldersCount := relativeOfFolders0 - relativePathsCount
    If (romGameFoldersCount > 0)
    {
      tempPath := ""
      Loop, %romGameFoldersCount%
      {
        element := relativeOfFolders%A_Index%
        tempPath := tempPath . element . "\"
      }
      relativePath := tempPath . relativePath
    }
  }
  return relativePath
}

Thanks for this module, it works perfectly ! However, the game folder is not deleted in the "dev_hdd0\game\" folder. Thank you in advance.
 

Geordiedean1974

New member
How do you run PSN games through RL if they are pkg files? and also i get some games to boot and yet others says no rom found in usrdir check bin is an extension
 
Top