├── .github └── workflows │ └── action.yml ├── .gitignore ├── .vscode └── settings.json ├── README.md ├── download_list.json ├── icon.png ├── misc ├── registry_tweaks │ └── powershell_run-as-admin.reg ├── scripts │ ├── onedrive.ps1 │ └── scraper.ps1 └── translations │ └── README.pt-br.md └── prepare.ps1 /.github/workflows/action.yml: -------------------------------------------------------------------------------- 1 | name: 'Build' 2 | 3 | on: 4 | push: 5 | branches: [master, dev, test] 6 | # schedule: 7 | # - cron: "0 0 */2 * *" 8 | 9 | 10 | jobs: 11 | 12 | build: 13 | 14 | runs-on: windows-latest 15 | 16 | steps: 17 | - uses: actions/checkout@v2 18 | 19 | - name: Powershell script runner 20 | run: .\prepare.ps1 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | requirements 2 | debug.log 3 | assets/* 4 | *.dll 5 | retroarch* 6 | assets/ 7 | autoconfig/ 8 | bearer/ 9 | database/ 10 | filters/ 11 | iconengines/ 12 | imageformats/ 13 | info/ 14 | overlays/ 15 | platforms/ 16 | saves/ 17 | screenshots/ 18 | shaders/ 19 | states/ 20 | styles 21 | system/ 22 | qt.conf -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "git.ignoreLimitWarning": true 3 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | EmulationStation configured for Windows 4 | ====== 5 | 6 | ![Script working](https://github.com/Francommit/win10_emulation_station/workflows/Build/badge.svg) 7 | 8 | An auto-installer to set up Emulation Station correctly on a 64-bit version of Windows 10/11 9 | 10 | 11 | Features 12 | ------ 13 | - Uses an up to date version of Emulation Station from the Raspberry Pi branch 14 | - Auto populates emulators with public domain roms 15 | - Adds exclusive Windows only Emulators and Themes for the Switch, Wii-U and PS3 16 | - Auto installs a popular theme with support for adding 'Favorites' 17 | - Adds multiple useful shortcuts to the user's Desktop 18 | - Adds in a game content scraper which lives in (run %UserProfile%\\.emulationstation\roms\scraper.exe) 19 | 20 | 21 | Steps 22 | ------ 23 | - Single one liner to install everything: 24 | ``` 25 | if (-Not (Test-Path C:\temp\es-setup)) { mkdir C:\temp\es-setup }; Set-Location C:\temp\es-setup\;Set-ExecutionPolicy Bypass -Scope Process -Force;[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;Invoke-WebRequest "https://github.com/Francommit/win10_emulation_station/archive/1.3.9.zip" -OutFile "emulationStation.zip";Expand-Archive .\emulationStation.zip;cd .\emulationStation; cd .\win*;.\prepare.ps1 26 | ``` 27 | - Script complete when powershell spits out: 28 | ``` 29 | INFO: Setup completed 30 | ``` 31 | 32 | #### Installation GIF: 33 | ![alt text](https://github.com/Francommit/github_gif_dump/blob/master/install.gif?raw=true) 34 | 35 | Troubleshooting 36 | ------ 37 | - If you get an error saying "msvcr100.dll was not found" run `choco install vcredist2010 -y` from Powershell as admin 38 | - If the controller is not working in game, configure Input in Retroarch (%UserProfile%\\.emulationstation\systems\retroarch\retroarch.exe) 39 | - PSX, PS2 and PS3 Homebrew Games won't load unless you acquire the bios's and add them to the bios folder (%UserProfile%\\.emulationstation\systems\epsxe\bios and %UserProfile%\\.emulationstation\systems\pcsx2\bios) 40 | - PSX, PS2 and PS3 also require manual configuration for controllers (%UserProfile%\\.emulationstation\systems\epsxe\ePSXe.exe and %UserProfile%\\.emulationstation\systems\pcsx2\pcsx2.exe and %UserProfile%\\scoop\apps\rpcs3\current) 41 | - If the script fails for whatever reason delete the contents of %UserProfile%\\.emulationstation and try again. 42 | - Emulation Station may crash when you return to it from a external progam, ensure your graphics drivers are up to date. 43 | - Launching a Retroarch rom may return you to ES, you're probably on a 32-bit verison of Windows and need to acquire seperate cores. 44 | - Powershell commands may fail, ensure your Powershell session is in Admin mode. 45 | - If Powershell complains about syntax you're probably somehow running a Powershell version lower than 5. Run 'choco install powershell -y' to update. 46 | - If you are using Xbox controllers and having trouble setting the guide button as hotkey, locate the file (%UserProfile%\\.emulationstation\es_input.cfg and change the line for hotkeyenable to `````` 47 | - The script is now re-runnable, so if anything fails, re-run it and it'll pick itself back up if your internet has died half-way through 48 | - If you are unable to run script from context menu (right mouse button), revert default "Open with" to Notepad 49 | 50 | #### Windowed Mode Execution: 51 | ![alt text](https://github.com/Francommit/github_gif_dump/blob/master/es_windowed.gif?raw=true) 52 | 53 | Optional Features and Tips 54 | ------ 55 | - If you prefer to run your scripts via context menu (right mouse button) but lack the abilitiy to run them in an admin session, you can just double-click the "powershell_run-as-admin.reg" file and accept the registry modification. It will add a new entry to the menu to do that easily. 56 | - If you use OneDrive to store your ROMs and saves, you can run the script onedrive.ps1 or you can modifify it to any other specific folder. Further instructions in comments 57 | - Some new themes shows videos: [es-theme-crt](https://github.com/PRElias/es-theme-crt) 58 | - Script for easy scraping included. Just run and it will backup your gamefile.xml for each ROM folder and produce a new one with data from scrap services (if you have modified your ROM folder, please check before run) 59 | 60 | Old Steps 61 | ------ 62 | 1. Run prepare.ps1 in an admin session of Powershell: 63 | - Powershell might restart your computer as some libraries require a restart, if so, simply re-run after your PC restarts) 64 | - You might need to change your Powershell execution policy, so run this __instead__ of JUST prepare.ps1 65 | - ``Set-ExecutionPolicy Bypass -Scope Process -Force; .\prepare.ps1`` 66 | 67 | 2. Launch Emulation Station and Enjoy 68 | 69 | 3. Access your ROMS here %UserProfile%\\.emulationstation\roms 70 | 71 | Installation GIF old: 72 | ![alt text](https://github.com/Francommit/github_gif_dump/blob/master/installation-instructions.gif?raw=true) 73 | 74 | 75 | Translations 76 | ------ 77 | [Portuguese](https://github.com/Francommit/win10_emulation_station/blob/master/misc/translations/README.pt-br.md) 78 | 79 | Special Thanks 80 | ------ 81 | - jrassa for his up to date compiled version of Emulation Station - https://github.com/jrassa/EmulationStation 82 | - borger for his scoop emulator setup https://github.com/borger/scoop-emulators 83 | - Nesworld for their open-source NES roms - http://www.nesworld.com/ 84 | - Libretro for their retroarch version - https://www.libretro.com/ 85 | - dtgm for maintaining the Emulation Station chocolatey package https://chocolatey.org/packages/emulationstation 86 | - OpenEmu for their Open-Source rom collection work https://github.com/OpenEmu/OpenEmu-Update 87 | - fonic for his theme https://github.com/fonic/recalbox-backport 88 | - sselph for his awesome scraper https://github.com/sselph/scraper 89 | - PRElias for Portuguese translations, choco auto-intall and new optional features - http://paulorobertoelias.com 90 | -------------------------------------------------------------------------------- /download_list.json: -------------------------------------------------------------------------------- 1 | { 2 | "downloads": [ 3 | { 4 | "file": "WahMunchers-SMS-R2.zip", 5 | "url": "https://www.smspower.org/uploads/Homebrew/WahMunchers-SMS-R2.zip" 6 | }, 7 | { 8 | "file": "emulationstation_win32_latest.exe", 9 | "url": "https://emulationstation.org/downloads/releases/emulationstation_win32_latest.exe" 10 | }, 11 | { 12 | "file": "ePSXe205.zip", 13 | "url": "http://www.epsxe.com/files/ePSXe205.zip" 14 | }, 15 | { 16 | "file": "pcsx2-1.6.0-setup.exe", 17 | "url": "https://delivery2.filecroco.com/kits_6/pcsx2-1.6.0-setup.exe" 18 | }, 19 | { 20 | "file": "RetroArch.7z", 21 | "url": "https://buildbot.libretro.com/stable/1.17.0/windows/x86_64/RetroArch.7z" 22 | }, 23 | { 24 | "file": "assimilate_full.zip", 25 | "url": "http://www.nesworld.com/homebrew/assimilate_full.zip" 26 | }, 27 | { 28 | "file": "fceumm_libretro.dll.zip", 29 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/fceumm_libretro.dll.zip" 30 | }, 31 | { 32 | "file": "mame2010_libretro.dll.zip", 33 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/mame2010_libretro.dll.zip" 34 | }, 35 | { 36 | "file": "parallel_n64_libretro.dll.zip", 37 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/parallel_n64_libretro.dll.zip" 38 | }, 39 | { 40 | "file": "pom-twin.zip", 41 | "url": "http://www.nesworld.com/n64/homebrew/pom-twin.zip" 42 | }, 43 | { 44 | "file": "fbalpha2012_libretro.dll.zip", 45 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/fbalpha2012_libretro.dll.zip" 46 | }, 47 | { 48 | "file": "uranus0ev_fix.gba", 49 | "url": "https://github.com/OpenEmu/OpenEmu-Update/raw/master/Homebrew/GBA/Uranus%20Zero%20EV/uranus0ev_fix.gba" 50 | }, 51 | { 52 | "file": "vba_next_libretro.dll.zip", 53 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/vba_next_libretro.dll.zip" 54 | }, 55 | { 56 | "file": "rickdangerous.gen", 57 | "url": "https://github.com/OpenEmu/OpenEmu-Update/raw/master/Homebrew/SG/Rick%20Dangerous/rickdangerous.gen" 58 | }, 59 | { 60 | "file": "genesis_plus_gx_libretro.dll.zip", 61 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/genesis_plus_gx_libretro.dll.zip" 62 | }, 63 | { 64 | "file": "snes9x_libretro.dll.zip", 65 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/snes9x_libretro.dll.zip" 66 | }, 67 | { 68 | "file": "N-Warp Daisakusen V1.1.smc", 69 | "url": "https://github.com/OpenEmu/OpenEmu-Update/raw/master/Homebrew/SNES/N-Warp%20Daisakusen/N-Warp%20Daisakusen%20V1.1.smc" 70 | }, 71 | { 72 | "file": "Marilyn_In_the_Magic_World_(010a).7z", 73 | "url": "https://raw.githubusercontent.com/PublicDomainRoms/public-domain-roms/master/psx/Marilyn_In_the_Magic_World_(010a).7z" 74 | }, 75 | { 76 | "file": "ramless_pong.bin", 77 | "url": "https://raw.githubusercontent.com/PublicDomainRoms/public-domain-roms/master/ramless_pong.bin" 78 | }, 79 | { 80 | "file": "star_heritage.zip", 81 | "url": "http://www.nesworld.com/gbc/homebrew/commercial/star_heritage.zip" 82 | }, 83 | { 84 | "file": "gambatte_libretro.dll.zip", 85 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/gambatte_libretro.dll.zip" 86 | }, 87 | { 88 | "file": "stella_libretro.dll.zip", 89 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/stella_libretro.dll.zip" 90 | }, 91 | { 92 | "file": "prosystem_libretro.dll.zip", 93 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/prosystem_libretro.dll.zip" 94 | }, 95 | { 96 | "file": "vice_x64_libretro.dll.zip", 97 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/vice_x64_libretro.dll.zip" 98 | }, 99 | { 100 | "file": "fmsx_libretro.dll.zip", 101 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/fmsx_libretro.dll.zip" 102 | }, 103 | { 104 | "file": "puae_libretro.dll.zip", 105 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/puae_libretro.dll.zip" 106 | }, 107 | { 108 | "file": "race_libretro.dll.zip", 109 | "url": "http://buildbot.libretro.com/nightly/windows/x86_64/latest/race_libretro.dll.zip" 110 | }, 111 | { 112 | "file": "neopocket.zip", 113 | "url": "https://github.com/PublicDomainRoms/public-domain-roms/raw/master/ngp/neopocket.zip" 114 | }, 115 | { 116 | "file": "cube.elf", 117 | "url": "https://www.ppsspp.org/files/cube.elf" 118 | }, 119 | { 120 | "file": "C4.vpk", 121 | "url": "https://dl.coolatoms.org/vitadb/C4.vpk" 122 | }, 123 | { 124 | "file": "Avoidance_v1.3.pkg", 125 | "url": "https://github.com/PublicDomainRoms/public-domain-roms/raw/master/ps3/Avoidance_v1.3.pkg" 126 | } 127 | ], 128 | "releases": [ 129 | { 130 | "file": "scraper_windows_amd64.zip", 131 | "repo": "sselph/scraper" 132 | }, 133 | { 134 | "file": "EmulationStation-Win32.zip", 135 | "repo": "Francommit/emulationstation" 136 | }, 137 | { 138 | "file": "recalbox-backport-v2.2.zip", 139 | "repo": "Francommit/recalbox-backport" 140 | }, 141 | { 142 | "file": "ccleste.3dsx", 143 | "repo": "lemon-sherbet/ccleste" 144 | }, 145 | { 146 | "file": "tetriswitch.nro", 147 | "repo": "Ryuzaki-MrL/tetriswitch" 148 | }, 149 | { 150 | "file": "windows-latest.zip", 151 | "repo": "Vita3K/Vita3K" 152 | }, 153 | { 154 | "file": "xemu-win-release.zip", 155 | "repo": "mborgerson/xemu" 156 | } 157 | ], 158 | "other_downloads": [ 159 | { 160 | "file": "Homebrew.Channel.-.OHBC.wad", 161 | "url": "https://github.com/FIX94/hbc/releases/download/1.1.4-1/Homebrew.Channel.-.OHBC.wad" 162 | } 163 | ], 164 | "extra_nes_games": [ 165 | { 166 | "file": "mojontwinsmulticart.zip", 167 | "url": "http://www.nesworld.com/homebrew/mojontwinsmulticart.zip" 168 | }, 169 | { 170 | "file": "alter_ego.zip", 171 | "url": "http://www.nesworld.com/homebrew/alter_ego.zip" 172 | }, 173 | { 174 | "file": "beatem.zip", 175 | "url": "http://www.nesworld.com/homebrew/beatem.zip" 176 | }, 177 | { 178 | "file": "blaster.zip", 179 | "url": "http://www.nesworld.com/homebrew/blaster.zip" 180 | }, 181 | { 182 | "file": "blurredlines2048.zip", 183 | "url": "http://www.nesworld.com/homebrew/blurredlines2048.zip" 184 | }, 185 | { 186 | "file": "bomb_sweeper_v0.5.zip", 187 | "url": "http://www.nesworld.com/homebrew/bomb_sweeper_v0.5.zip" 188 | }, 189 | { 190 | "file": "boxboy.zip", 191 | "url": "http://www.nesworld.com/homebrew/boxboy.zip" 192 | }, 193 | { 194 | "file": "cyo.zip", 195 | "url": "http://www.nesworld.com/homebrew/cyo.zip" 196 | }, 197 | { 198 | "file": "chase.zip", 199 | "url": "http://www.nesworld.com/homebrew/chase.zip" 200 | }, 201 | { 202 | "file": "dpadhero2.zip", 203 | "url": "http://www.nesworld.com/homebrew/dpadhero2.zip" 204 | }, 205 | { 206 | "file": "dabg.zip", 207 | "url": "http://www.nesworld.com/homebrew/dabg.zip" 208 | }, 209 | { 210 | "file": "driar.zip", 211 | "url": "http://www.nesworld.com/homebrew/driar.zip" 212 | }, 213 | { 214 | "file": "dushlan.zip", 215 | "url": "http://www.nesworld.com/homebrew/dushlan.zip" 216 | }, 217 | { 218 | "file": "driar.zip", 219 | "url": "http://www.nesworld.com/homebrew/driar.zip" 220 | }, 221 | { 222 | "file": "gemventure_(beta).zip", 223 | "url": "http://www.nesworld.com/homebrew/gemventure_(beta).zip" 224 | }, 225 | { 226 | "file": "hot_seat_harry.zip", 227 | "url": "http://www.nesworld.com/homebrew/hot_seat_harry.zip" 228 | }, 229 | { 230 | "file": "mojon-twins--jet-paco.zip", 231 | "url": "http://www.nesworld.com/homebrew/mojon-twins--jet-paco.zip" 232 | }, 233 | { 234 | "file": "kyff.zip", 235 | "url": "http://www.nesworld.com/homebrew/kyff.zip" 236 | }, 237 | { 238 | "file": "lan_master.zip", 239 | "url": "http://www.nesworld.com/homebrew/lan_master.zip" 240 | }, 241 | { 242 | "file": "lawn_mower.zip", 243 | "url": "http://www.nesworld.com/homebrew/lawn_mower.zip" 244 | }, 245 | { 246 | "file": "madwizard.zip", 247 | "url": "http://www.nesworld.com/homebrew/madwizard.zip" 248 | }, 249 | { 250 | "file": "nes_virus_cleaner.nes", 251 | "url": "http://www.nesworld.com/homebrew/nes_virus_cleaner.nes" 252 | }, 253 | { 254 | "file": "pitfall.zip", 255 | "url": "http://www.nesworld.com/homebrew/pitfall.zip" 256 | }, 257 | { 258 | "file": "riseofamondus.zip", 259 | "url": "http://www.nesworld.com/homebrew/riseofamondus.zip" 260 | }, 261 | { 262 | "file": "sgt-helmet-training-day.zip", 263 | "url": "http://www.nesworld.com/homebrew/sgt-helmet-training-day.zip" 264 | }, 265 | { 266 | "file": "solarwars.zip", 267 | "url": "http://www.nesworld.com/homebrew/solarwars.zip" 268 | }, 269 | { 270 | "file": "sting.zip", 271 | "url": "http://www.nesworld.com/homebrew/sting.zip" 272 | }, 273 | { 274 | "file": "streemerz-v02.zip", 275 | "url": "http://www.nesworld.com/homebrew/streemerz-v02.zip" 276 | }, 277 | { 278 | "file": "spnes.zip", 279 | "url": "http://www.nesworld.com/homebrew/spnes.zip" 280 | }, 281 | { 282 | "file": "tiger_1.zip", 283 | "url": "http://www.nesworld.com/homebrew/tiger_1.zip" 284 | }, 285 | { 286 | "file": "zooming_secretary1-02.zip", 287 | "url": "http://www.nesworld.com/homebrew/zooming_secretary1-02.zip" 288 | } 289 | ] 290 | } 291 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Francommit/win10_emulation_station/8d20abfd25d1831c3b03581fb6f0e9f6c100b4bc/icon.png -------------------------------------------------------------------------------- /misc/registry_tweaks/powershell_run-as-admin.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Francommit/win10_emulation_station/8d20abfd25d1831c3b03581fb6f0e9f6c100b4bc/misc/registry_tweaks/powershell_run-as-admin.reg -------------------------------------------------------------------------------- /misc/scripts/onedrive.ps1: -------------------------------------------------------------------------------- 1 | ### Instructions 2 | # This script is to use OneDrive to store your ROMs and save files 3 | # Change the path on $onedrivePath variable or, create a folder structure as found on .emulationstation folder (for root and roms folder) 4 | # The structure for save files are different on purpose, but you can change that as well 5 | # Execute this script after prepare.ps1 6 | 7 | # Get paths 8 | $retroarchConfigPath = $env:userprofile + "\.emulationstation\systems\retroarch\retroarch.cfg" 9 | $onedrivePath = $env:userprofile + "\OneDrive\.emulationstation\" 10 | 11 | Write-Host "Caminho do arquivo retroarch: " + $retroarchConfigPath 12 | Write-Host "Caminho do OneDrive" + $onedrivePath 13 | 14 | # Console saves - retroarch.cfg 15 | $settingToFind = 'savefile_directory = ":\saves"' 16 | $settingToSet = 'savefile_directory = "' + $onedrivePath + 'saves"' 17 | (Get-Content $retroarchConfigPath) -replace [regex]::escape($settingToFind), $settingToSet | Set-Content $retroarchConfigPath 18 | 19 | # Save states - retroarch.cfg 20 | $settingToFind = 'savestate_directory = ":\states"' 21 | $settingToSet = 'savestate_directory = "' + $onedrivePath + 'saves\states"' 22 | (Get-Content $retroarchConfigPath) -replace [regex]::escape($settingToFind), $settingToSet | Set-Content $retroarchConfigPath 23 | 24 | 25 | # roms folder - es_systems.cfg 26 | $esConfigFile = $env:userprofile + "\.emulationstation\es_systems.cfg" 27 | 28 | Write-Host "Caminho do arquivo systems: " + $esConfigFile 29 | 30 | $settingToFind = "" + $env:userprofile + "\.emulationstation\" 31 | $settingToSet = "" + $onedrivePath 32 | (Get-Content $esConfigFile) -replace [regex]::escape($settingToFind), $settingToSet | Set-Content $esConfigFile 33 | 34 | Write-Host "Caminhos alterados para o OneDrive com sucesso" 35 | -------------------------------------------------------------------------------- /misc/scripts/scraper.ps1: -------------------------------------------------------------------------------- 1 | # General info 2 | Write-host "This script is prepared for using ScreenScraper API, then you'll need to create a user there" 3 | Write-host "It relies on scraper.exe already downloaded by prepare script" 4 | Write-host "You gamelist file will be safe on a backup file on the same folder" 5 | Write-host "The script works for a single system each time, use name convention from Emulationstation" 6 | Write-host "Be patient and enjoy!" 7 | Write-host "--------------------------------------------------------------" 8 | 9 | # Configuring by user input 10 | $login = Read-Host -Prompt 'Input your ScreenScraper login' 11 | $password = Read-Host -Prompt 'Input your ScreenScraper password' 12 | $system = Read-Host -Prompt 'Which system do you want to scrap' 13 | Write-host "Are you using OneDriver folders for storing ROMs? (Default is No)" 14 | $Readhost = Read-Host " ( y / n ) " 15 | Switch ($ReadHost) 16 | { 17 | Y {$dir = $env:userprofile + "\OneDrive\.emulationstation\roms"} 18 | N {$dir = $env:userprofile + "\.emulationstation\roms"} 19 | Default {$dir = $env:userprofile + "\.emulationstation\roms"} 20 | } 21 | 22 | # Setting variables 23 | $Command = "$dir\scraper.exe" 24 | $timestamp = Get-Date -Format FileDateTime 25 | 26 | # Running 27 | $console = "$dir\$system" 28 | Copy-Item $console\gamelist.xml "$console\gamelist$timestamp.xml" 29 | $Params_list = "&-rom_dir=$console &-rom_path=$console &-download_videos=true&-download_marquees=true&-console_src=ss&-ss_user=$login&-ss_password=$password&-image_dir=$console\images&-video_dir=$console\videos&-marquee_dir=$console\marquees&-output_file=$console\gamelist.xml&-rom_path=./&-image_path=./images&-marquee_path=./marquees&-video_path=./videos&-extra_ext=.PBP,.CDI,.ccd" 30 | $Params = $Params_list.Split("&") 31 | Write-Host "$Command" $Params 32 | & "$Command" $Params 33 | 34 | # Waiting for input to exit 35 | Read-Host -Prompt "Press Enter to exit!" 36 | -------------------------------------------------------------------------------- /misc/translations/README.pt-br.md: -------------------------------------------------------------------------------- 1 | Emulation Station configurado para Windows 10 2 | ====== 3 | 4 | Auto instalador para configurar corretamente o Emulation Station em uma máquina com Windows 10 64bit. 5 | 6 | Com o aumento da pupularidade do Retropie, a configuração do Emulationstation em plataformas windows não 7 | tem recebido muita atenção. 8 | 9 | Eu já passei muitas noites tentando descobrir como configurar tudo corretamente para uma máquina Windows, 10 | para finalmente deixar tudo certo. Dado a dor de cabeça que passei e a quantidade de amigos meus que me 11 | pediram a mesma configuração, eu dedici juntar tudo e montar esse script powershell para outras pessoas usarem. 12 | 13 | Destaques 14 | ------ 15 | - Usa uma versão atualizada do Emulation Station da branch do Raspery Pi 16 | - Popula automaticamente emuladores com roms de domínio público 17 | - Instala automaticamente um tema popular com suporte para a adição de favoritos 18 | - Instalador inicial com menos alguns KB, já que são apenas scripts 19 | - Inclue um recuperador de informações de roms dentro da pasta de rom (execute %UserProfile%\\.emulationstation\roms\scraper.exe) 20 | 21 | Traduções 22 | ------ 23 | [English](README.md) 24 | 25 | Passo-a-passo 26 | ------ 27 | 1. Execute prepare.ps1 em uma sessão administrativa Powershell 28 | (NOTA: Powershell pode reiniciar seu computador já que algumas bibliotecas requerem o reinício, se isto ocorrer, simplesmente re-execute depois de seu PC reiniciar) 29 | 2. Execute o Emulation Station and aproveite 30 | 3. Acesse suas ROMS aqui %UserProfile%\\.emulationstation\roms 31 | 32 | GIF da instalação: 33 | ![alt text](https://github.com/Francommit/github_gif_dump/blob/master/installation-instructions.gif?raw=true) 34 | 35 | 36 | 37 | Possíveis problemas e soluções 38 | ------ 39 | - Se o seu controle não está funcionando no jogo, configure o Input no Retroarch (%UserProfile%\\.emulationstation\systems\retroarch\retroarch.exe) 40 | - Jogos de PS1 and PS2 não carregam a não ser que você tenha e inclua suas bios nas respectivas pastas (%UserProfile%\.emulationstation\systems\epsxe\bios e %UserProfile%\\.emulationstation\systems\pcsx2\bios) 41 | - PS1 e PS2 também requerem configuração manual para os controles(%UserProfile%\.emulationstation\systems\epsxe\ePSXe.exe e %UserProfile%\\.emulationstation\systems\pcsx2\pcsx2.exe) 42 | - Se o script falhar por qualquer razão, apague o conteúdo da pasta %UserProfile%\\.emulationstation e tente novamente. 43 | - O Emulation Station pode travar quando você retorna para ele depois de um programa externo, certifique-se que sua placa de vídeo possui os drivers atualizados. 44 | - Se ao executar uma rom no Retroarch, retornar para o Emulationstation, você provavelmente está em uma versão 32-bit do Windows e precisará de outros cores (DLLs do Retroarch). 45 | - Comandos Powershell podem falhar, certifique-se que sua sessão está em modo administrador. 46 | - Se o Powershell reclamar da sintaxe, você provavelmente está executando uma versão do Powershell abaixo da 5. Execute 'choco install powershell -y' para atualizar. 47 | - Se você estiver usando controles do Xbox e tendo problemas ao configurar o botão guia como hotkey, localize o arquivo (%UserProfile%\\.emulationstation\es_input.cfg e altere a linha do hotkeyenable para `````` 48 | - Se você não conseguir executar o script no menu de contexto (botão direito do mouse), reverta o padrão "Abrir com" para o Bloco de Notas. 49 | 50 | Recursos Opcionais e Dicas 51 | ------ 52 | - Se você prefere executar seus scripts usando o menu de contexto (botão direito do mouse), mas não possui a opção de executá-los em modo administrador, você pode simplesmente dar um duplo-clique no arquivo "powershell_run-as-admin.reg" e aceitar as modificações ao registro. Será criado uma nova entrada no menu para executar facilmente 53 | - Se você usa o OneDrive para armazenar suas ROMs e saves, pode executar o script onedrive.ps1 ou pode modificá-lo para qualquer outra pasta específica. Mais instruções nos comentários 54 | - Alguns novos temas apresentam vídeos: [es-theme-crt](https://github.com/PRElias/es-theme-crt) 55 | - Script para recuperar informações (scraper) de forma fácil incluído. Apenas execute e ele fará o backup dos arquivos gamelist.xml para cada pasta de ROMs e produzirá um novo arquivo com dados recuperados dos serviços de scrap (se você modificou sua pasta de ROMs, por favor, confira a mesma antes de executar) 56 | 57 | Agradecimentos Especiais 58 | ------ 59 | - jrassa pela sua versão atualizada da compilação do Emulation Station - https://github.com/jrassa/EmulationStation 60 | - Nesworld por suas ROMs livres de NES - http://www.nesworld.com/ 61 | - Libretro por sua versão do Retroarch - https://www.libretro.com/ 62 | - dtgm por manter o pacote chocolatey do Emulation Station https://chocolatey.org/packages/emulationstation 63 | - OpenEmu por seu trabalho na coleção de rom livres https://github.com/OpenEmu/OpenEmu-Update 64 | - recalbox por seus temas https://github.com/recalbox/recalbox-themes 65 | - sselph por seu maravilhoso recuperador de informações de roms https://github.com/sselph/scraper 66 | - PRElias pela tradução em Português do Brasil, automatização do choco e funcionalidades opcionais - http://paulorobertoelias.com 67 | -------------------------------------------------------------------------------- /prepare.ps1: -------------------------------------------------------------------------------- 1 | 2 | function DownloadFiles { 3 | param ([String]$jsonDownloadOption) 4 | 5 | Write-Host "Starting downloading of $jsonDownloadOption" 6 | 7 | Get-Content "$scriptDir\download_list.json" | ConvertFrom-Json | Select-Object -expand $jsonDownloadOption | ForEach-Object { 8 | 9 | $url = $_.url 10 | $file = $_.file 11 | $output = "$requirementsFolder\$file" 12 | 13 | if(![System.IO.File]::Exists($output)){ 14 | 15 | Write-Host "INFO: Downloading $file" 16 | if($PSVersionTable.PSEdition -eq "Core"){ 17 | Invoke-WebRequest $url -Out $output -SkipCertificateCheck 18 | } else { 19 | 20 | add-type @" 21 | using System.Net; 22 | using System.Security.Cryptography.X509Certificates; 23 | public class TrustAllCertsPolicy : ICertificatePolicy { 24 | public bool CheckValidationResult( 25 | ServicePoint srvPoint, X509Certificate certificate, 26 | WebRequest request, int certificateProblem) { 27 | return true; 28 | } 29 | } 30 | "@ 31 | [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy 32 | 33 | Invoke-WebRequest $url -Out $output 34 | 35 | } 36 | Write-Host "INFO: Finished Downloading $file successfully to: $output" 37 | Write-Host "INFO: Size of the downloaded file is $((Get-Item $output).Length / 1MB) MB" 38 | 39 | } else { 40 | 41 | Write-Host $file "INFO: Already exists...Skipping download." 42 | 43 | } 44 | 45 | } 46 | 47 | } 48 | 49 | function GithubReleaseFiles { 50 | 51 | Get-Content "$scriptDir\download_list.json" | ConvertFrom-Json | Select-Object -expand releases | ForEach-Object { 52 | 53 | $repo = $_.repo 54 | $file = $_.file 55 | $releases = "https://api.github.com/repos/$repo/releases" 56 | $tag = (Invoke-WebRequest $releases -usebasicparsing| ConvertFrom-Json)[0].tag_name 57 | 58 | $url = "https://github.com/$repo/releases/download/$tag/$file" 59 | $output = "$requirementsFolder\$file" 60 | 61 | if(![System.IO.File]::Exists($output)) { 62 | 63 | Write-Host "INFO: Downloading $file" 64 | Invoke-WebRequest $url -Out $output 65 | Write-Host "INFO: Finished Downloading $file successfully to: $output" 66 | Write-Host "INFO: Size of the downloaded file is $((Get-Item $output).Length / 1MB) MB" 67 | 68 | } else { 69 | 70 | Write-Host $file "INFO: Already exists...Skipping download." 71 | } 72 | 73 | } 74 | 75 | } 76 | 77 | function Expand-Archive([string]$Path, [string]$Destination, [bool]$VerboseLogging = $false) { 78 | $7z_Application = "C:\Program Files\7-Zip\7z.exe" 79 | $7z_Arguments = @( 80 | 'x', # eXtract files with full paths 81 | '-y', # assume Yes on all queries 82 | "`"-o$($Destination)`"", # set Output directory 83 | "`"$($Path)`"" # 84 | ) 85 | 86 | Write-Output "Extracting file: $Path to destination: $Destination" 87 | 88 | if ($VerboseLogging) { 89 | & $7z_Application $7z_Arguments 90 | if ($LASTEXITCODE -ne 0) { 91 | throw "7-Zip exited with code $LASTEXITCODE" 92 | } 93 | } else { 94 | & $7z_Application $7z_Arguments | Out-Null 95 | } 96 | } 97 | 98 | # Get script path 99 | $scriptPath = $MyInvocation.MyCommand.Path 100 | $scriptDir = Split-Path $scriptPath 101 | Write-Host "INFO: Script directory is: $scriptDir" 102 | 103 | Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) 104 | 105 | choco install git -y | Out-Null 106 | 107 | # Install and setup scoop 108 | if($env:path -match "scoop"){ 109 | Write-Host "INFO: Scoop appears to be installed, skipping installation" 110 | } else { 111 | Write-Host "INFO: Scoop not detected, installing scoop" 112 | iwr -useb get.scoop.sh -outfile 'installScoop.ps1' 113 | .\installScoop.ps1 -RunAsAdmin 114 | } 115 | 116 | Write-Host "INFO: Running Scoop Bucket Workaround" 117 | # https://github.com/ScoopInstaller/Scoop/issues/4917#issuecomment-1125400640 118 | scoop bucket rm main 119 | scoop bucket add main 120 | 121 | Write-Host "INFO: Adding scoop bucket" 122 | scoop bucket add emulators https://github.com/borger/scoop-emulators.git 123 | Write-Host "INFO: Installing Citra" 124 | scoop install citra 125 | scoop install ppsspp-dev 126 | scoop install yuzu 127 | scoop install rpcs3 128 | 129 | $citraInstallDir = "$env:userprofile\scoop\apps\citra\current" 130 | $ppssppInstallDir = "$env:userprofile\scoop\apps\ppsspp\current" 131 | $yuzuInstallDir = "$env:userprofile\scoop\apps\yuzu\current" 132 | $rpcs3InstallDir = "$env:userprofile\scoop\apps\rpcs3\current" 133 | 134 | choco install 7zip --no-progress -y | Out-Null 135 | choco install dolphin --pre --no-progress -y | Out-Null 136 | choco install cemu --no-progress -y | Out-Null 137 | 138 | # Acquire files 139 | $requirementsFolder = "$PSScriptRoot\requirements" 140 | New-Item -ItemType Directory -Force -Path $requirementsFolder 141 | DownloadFiles("downloads") 142 | DownloadFiles("other_downloads") 143 | GithubReleaseFiles 144 | 145 | # Install Emulation Station 146 | Write-Host "INFO: Starting Emulation station to generate config" 147 | Start-Process "$requirementsFolder\emulationstation_win32_latest.exe" -ArgumentList "/S" -Wait 148 | 149 | # Generate Emulation Station config file 150 | & "${env:ProgramFiles(x86)}\EmulationStation\emulationstation.exe" 151 | while (!(Test-Path "$env:userprofile\.emulationstation\es_systems.cfg")) { 152 | Write-Host "INFO: Checking for config file..." 153 | Start-Sleep 10 154 | } 155 | Write-Host "INFO: Config file generated" 156 | Stop-Process -Name "emulationstation" 157 | 158 | ##### 159 | # Retroarch 160 | ##### 161 | # Prepare Retroarch 162 | $retroArchPath = "$env:userprofile\.emulationstation\systems\retroarch\" 163 | $coresPath = "$retroArchPath\cores" 164 | $retroArchBinary = "$requirementsFolder\RetroArch.7z" 165 | if(Test-Path $retroArchBinary){ 166 | New-Item -ItemType Directory -Force -Path $retroArchPath 167 | Expand-Archive -Path $retroArchBinary -Destination $requirementsFolder -VerboseLogging $true 168 | # TO-DO - add an Out-Null when this has been tested 169 | Copy-Item -Path RetroArch-Win64\* -Destination $retroArchPath -recurse -Force 170 | # New path - $retroArchPath\RetroArch-Win64 171 | 172 | } else { 173 | Write-Host "ERROR: $retroArchBinary not found." 174 | exit -1 175 | } 176 | 177 | 178 | # NES Setup 179 | $nesCore = "$requirementsFolder\fceumm_libretro.dll.zip" 180 | if(Test-Path $nesCore){ 181 | Expand-Archive -Path $nesCore -Destination $coresPath | Out-Null 182 | } else { 183 | Write-Host "ERROR: $nesCore not found." 184 | exit -1 185 | } 186 | 187 | # N64 Setup 188 | $n64Core = "$requirementsFolder\parallel_n64_libretro.dll.zip" 189 | if(Test-Path $n64Core){ 190 | Expand-Archive -Path $n64Core -Destination $coresPath | Out-Null 191 | } else { 192 | Write-Host "ERROR: $n64Core not found." 193 | exit -1 194 | } 195 | 196 | # FBA Setup 197 | $fbaCore = "$requirementsFolder\fbalpha2012_libretro.dll.zip" 198 | if(Test-Path $fbaCore){ 199 | Expand-Archive -Path $fbaCore -Destination $coresPath | Out-Null 200 | } else { 201 | Write-Host "ERROR: $fbaCore not found." 202 | exit -1 203 | } 204 | 205 | # GBA Setup 206 | $gbaCore = "$requirementsFolder\vba_next_libretro.dll.zip" 207 | if(Test-Path $gbaCore){ 208 | Expand-Archive -Path $gbaCore -Destination $coresPath | Out-Null 209 | } else { 210 | Write-Host "ERROR: $gbaCore not found." 211 | exit -1 212 | } 213 | 214 | # SNES Setup 215 | $snesCore = "$requirementsFolder\snes9x_libretro.dll.zip" 216 | if(Test-Path $snesCore){ 217 | Expand-Archive -Path $snesCore -Destination $coresPath | Out-Null 218 | } else { 219 | Write-Host "ERROR: $snesCore not found." 220 | exit -1 221 | } 222 | 223 | # Genesis GX Setup 224 | $mdCore = "$requirementsFolder\genesis_plus_gx_libretro.dll.zip" 225 | if(Test-Path $mdCore){ 226 | Expand-Archive -Path $mdCore -Destination $coresPath | Out-Null 227 | } else { 228 | Write-Host "ERROR: $mdCore not found." 229 | exit -1 230 | } 231 | 232 | # Game boy Colour Setup 233 | $gbcCore = "$requirementsFolder\gambatte_libretro.dll.zip" 234 | if(Test-Path $gbcCore){ 235 | Expand-Archive -Path $gbcCore -Destination $coresPath | Out-Null 236 | } else { 237 | Write-Host "ERROR: $gbcCore not found." 238 | exit -1 239 | } 240 | 241 | # Atari2600 Setup 242 | $atari2600Core = "$requirementsFolder\stella_libretro.dll.zip" 243 | if(Test-Path $atari2600Core){ 244 | Expand-Archive -Path $atari2600Core -Destination $coresPath | Out-Null 245 | } else { 246 | Write-Host "ERROR: $atari2600Core not found." 247 | exit -1 248 | } 249 | 250 | # MAME Setup 251 | $mameCore = "$requirementsFolder\mame2010_libretro.dll.zip" 252 | if(Test-Path $mameCore){ 253 | Expand-Archive -Path $mameCore -Destination $coresPath | Out-Null 254 | } else { 255 | Write-Host "ERROR: $mameCore not found." 256 | exit -1 257 | } 258 | 259 | # PSX Setup 260 | $psxEmulator = "$requirementsFolder\ePSXe205.zip" 261 | if(Test-Path $psxEmulator){ 262 | $psxEmulatorPath = "$env:userprofile\.emulationstation\systems\epsxe\" 263 | $psxBiosPath = $psxEmulatorPath + "bios\" 264 | New-Item -ItemType Directory -Force -Path $psxEmulatorPath | Out-Null 265 | Expand-Archive -Path $psxEmulator -Destination $psxEmulatorPath | Out-Null 266 | } else { 267 | Write-Host "ERROR: $psxEmulator not found." 268 | exit -1 269 | } 270 | 271 | # PS2 Setup 272 | $ps2EmulatorMsi = "$requirementsFolder\pcsx2-1.6.0-setup.exe" 273 | if(Test-Path $ps2EmulatorMsi){ 274 | $ps2EmulatorPath = "$env:userprofile\.emulationstation\systems\pcsx2\" 275 | $ps2Binary = "$ps2EmulatorPath\`$TEMP\PCSX2 1.6.0\pcsx2.exe" 276 | $ps2BiosPath = "$ps2EmulatorPath\bios\" 277 | Expand-Archive -Path $ps2EmulatorMsi -Destination $ps2EmulatorPath | Out-Null 278 | New-Item -ItemType Directory -Force -Path $ps2BiosPath | Out-Null 279 | } else { 280 | Write-Host "ERROR: $ps2EmulatorMsi not found." 281 | exit -1 282 | } 283 | 284 | # NeoGeo Pocket Setup 285 | $ngpCore = "$requirementsFolder\race_libretro.dll.zip" 286 | if(Test-Path $ngpCore){ 287 | Expand-Archive -Path $ngpCore -Destination $coresPath | Out-Null 288 | } else { 289 | Write-Host "ERROR: $ngpCore not found." 290 | exit -1 291 | } 292 | 293 | # Start Retroarch and generate a config. 294 | $retroarchExecutable = "$retroArchPath\retroarch.exe" 295 | $retroarchConfigPath = "$retroArchPath\retroarch.cfg" 296 | 297 | if (Test-Path $retroarchExecutable) { 298 | 299 | Write-Host "INFO: Retroarch executable found, launching" 300 | Start-Process $retroarchExecutable 301 | 302 | while (!(Test-Path $retroarchConfigPath)) { 303 | Write-Host "INFO: Checking for retroarch config file" 304 | Start-Sleep 5 305 | } 306 | 307 | $retroarchProcess = Get-Process retroarch.exe -ErrorAction SilentlyContinue 308 | if ($retroarchProcess) { 309 | $retroarchProcess.CloseMainWindow() 310 | Start-sleep 5 311 | if (!$retroarchProcess.HasExited) { 312 | $retroarchProcess | Stop-Process -Force 313 | } 314 | } 315 | Stop-Process -Name "retroarch" -ErrorAction SilentlyContinue 316 | 317 | } else { 318 | Write-Host "ERROR: Could not find retroarch.exe" 319 | exit -1 320 | } 321 | 322 | 323 | # Tweak retroarch config! 324 | Write-Host "INFO: Replacing retroarch config" 325 | $settingToFind = 'video_fullscreen = "false"' 326 | $settingToSet = 'video_fullscreen = "true"' 327 | (Get-Content $retroarchConfigPath) -replace $settingToFind, $settingToSet | Set-Content $retroarchConfigPath 328 | 329 | $settingToFind = 'savestate_auto_load = "false"' 330 | $settingToSet = 'savestate_auto_load = "true"' 331 | (Get-Content $retroarchConfigPath) -replace $settingToFind, $settingToSet | Set-Content $retroarchConfigPath 332 | 333 | $settingToFind = 'input_player1_analog_dpad_mode = "0"' 334 | $settingToSet = 'input_player1_analog_dpad_mode = "1"' 335 | (Get-Content $retroarchConfigPath) -replace $settingToFind, $settingToSet | Set-Content $retroarchConfigPath 336 | 337 | $settingToFind = 'input_player2_analog_dpad_mode = "0"' 338 | $settingToSet = 'input_player2_analog_dpad_mode = "1"' 339 | (Get-Content $retroarchConfigPath) -replace $settingToFind, $settingToSet | Set-Content $retroarchConfigPath 340 | 341 | # Add roms 342 | $romPath = "$env:userprofile\.emulationstation\roms" 343 | New-Item -ItemType Directory -Force -Path $romPath | Out-Null 344 | 345 | # Path creation + Open-Source / Freeware Rom population 346 | Write-Host "INFO: Setup NES" 347 | $nesPath = "$romPath\nes" 348 | $nesRom = "$requirementsFolder\assimilate_full.zip" 349 | if(Test-Path $nesRom){ 350 | New-Item -ItemType Directory -Force -Path $nesPath | Out-Null 351 | Expand-Archive -Path $nesRom -Destination $nesPath | Out-Null 352 | } else { 353 | Write-Host "ERROR: $nesRom not found." 354 | exit -1 355 | } 356 | 357 | Write-Host "INFO: Setup N64" 358 | $n64Path = "$romPath\n64" 359 | $n64Rom = "$requirementsFolder\pom-twin.zip" 360 | if(Test-Path $n64Rom){ 361 | New-Item -ItemType Directory -Force -Path $n64Path | Out-Null 362 | Expand-Archive -Path $n64Rom -Destination $n64Path | Out-Null 363 | } else { 364 | Write-Host "ERROR: $n64Rom not found." 365 | exit -1 366 | } 367 | 368 | Write-Host "INFO: Setup psp" 369 | $pspPath = "$romPath\psp" 370 | $pspRom = "$requirementsFolder\cube.elf" 371 | if (Test-Path $pspRom) { 372 | New-Item -ItemType Directory -Force -Path $pspPath | Out-Null 373 | Move-Item -Path $pspRom -Destination $pspPath -Force | Out-Null 374 | } 375 | else { 376 | Write-Host "ERROR: $pspRom not found." 377 | exit -1 378 | } 379 | 380 | Write-Host "INFO: Setup Nintendo Switch" 381 | $switchPath = "$romPath\switch" 382 | $switchRom = "$requirementsFolder\tetriswitch.nro" 383 | if (Test-Path $switchRom) { 384 | New-Item -ItemType Directory -Force -Path $switchPath | Out-Null 385 | Move-Item -Path $switchRom -Destination $switchPath -Force | Out-Null 386 | } 387 | else { 388 | Write-Host "ERROR: $switchRom not found." 389 | exit -1 390 | } 391 | 392 | Write-Host "INFO: Setup PS3" 393 | $ps3Path = "$romPath\ps3" 394 | $ps3Rom = "$requirementsFolder\Avoidance_v1.3.pkg" 395 | if (Test-Path $ps3Rom) { 396 | New-Item -ItemType Directory -Force -Path $ps3Path | Out-Null 397 | Move-Item -Path $ps3Rom -Destination $ps3Path | Out-Null 398 | } 399 | else { 400 | Write-Host "ERROR: $ps3Rom not found." 401 | exit -1 402 | } 403 | 404 | Write-Host "INFO: Setup PS Vita" 405 | $vitaPath = "$romPath\vita" 406 | $vitaRom = "$requirementsFolder\C4.vpk" 407 | if (Test-Path $vitaRom) { 408 | New-Item -ItemType Directory -Force -Path $vitaPath | Out-Null 409 | Move-Item -Path $vitaRom -Destination $vitaPath -Force | Out-Null 410 | } 411 | else { 412 | Write-Host "ERROR: $vitaRom not found." 413 | exit -1 414 | } 415 | 416 | Write-Host "INFO: Setup Vita3k" 417 | $vita3kInstallFolder = "${env:ProgramFiles}\Vita3k" 418 | if(-not(Test-Path $vita3kInstallFolder)){ 419 | New-Item -ItemType Directory -Force -Path $vita3kInstallFolder | Out-Null 420 | } 421 | 422 | $vita3kLatestBuild = "$requirementsFolder\windows-latest.zip" 423 | if(Test-Path $vita3kLatestBuild){ 424 | Expand-Archive -Path $vita3kLatestBuild -Destination $vita3kInstallFolder -force | Out-Null 425 | } else { 426 | Write-Host "ERROR: $vita3kLatestBuild not found." 427 | exit -1 428 | } 429 | 430 | Write-Host "INFO: Setup 3DS" 431 | $3dsPath = "$romPath\3ds" 432 | $3dsRom = "$requirementsFolder\ccleste.3dsx" 433 | if (Test-Path $3dsRom) { 434 | New-Item -ItemType Directory -Force -Path $3dsPath | Out-Null 435 | Move-Item -Path $3dsRom -Destination $3dsPath -Force | Out-Null 436 | } 437 | else { 438 | Write-Host "ERROR: $3dsRom not found." 439 | exit -1 440 | } 441 | 442 | Write-Host "INFO: Setup GBA" 443 | $gbaPath = "$romPath\gba" 444 | $gbaRom = "$requirementsFolder\uranus0ev_fix.gba" 445 | if(Test-Path $gbaRom){ 446 | New-Item -ItemType Directory -Force -Path $gbaPath | Out-Null 447 | Copy-Item -Path $gbaRom -Destination $gbaPath | Out-Null 448 | } else { 449 | Write-Host "ERROR: $gbaRom not found." 450 | exit -1 451 | } 452 | 453 | Write-Host "INFO: Setup Megadrive" 454 | $mdPath = "$romPath\megadrive" 455 | $mdRom = "$requirementsFolder\rickdangerous.gen" 456 | if(Test-Path $mdRom){ 457 | New-Item -ItemType Directory -Force -Path $mdPath | Out-Null 458 | Copy-Item -Path $mdRom -Destination $mdPath | Out-Null 459 | } else { 460 | Write-Host "ERROR: $mdRom not found." 461 | exit -1 462 | } 463 | 464 | Write-Host "INFO: Setup SNES" 465 | $snesPath = "$romPath\snes" 466 | $snesRom = "$requirementsFolder\N-Warp Daisakusen V1.1.smc" 467 | if(Test-Path $snesRom){ 468 | New-Item -ItemType Directory -Force -Path $snesPath | Out-Null 469 | Copy-Item -Path $snesRom -Destination $snesPath | Out-Null 470 | } else { 471 | Write-Host "ERROR: $snesRom not found." 472 | exit -1 473 | } 474 | 475 | Write-Host "INFO: Setup PSX" 476 | $psxPath = "$romPath\psx" 477 | $psxRom = "$requirementsFolder\Marilyn_In_the_Magic_World_(010a).7z" 478 | if(Test-Path $psxRom){ 479 | New-Item -ItemType Directory -Force -Path $psxPath | Out-Null 480 | Expand-Archive -Path $psxRom -Destination $psxPath | Out-Null 481 | } else { 482 | Write-Host "ERROR: $psxRom not found." 483 | exit -1 484 | } 485 | 486 | # Write-Host "INFO: Setup PS2" 487 | # $ps2Path = "$romPath\ps2" 488 | # $ps2Rom = "$requirementsFolder\hermes-v.latest-ps2.zip" 489 | # if(Test-Path $ps2Rom){ 490 | # New-Item -ItemType Directory -Force -Path $ps2Path | Out-Null 491 | # Expand-Archive -Path $ps2Rom -Destination $ps2Path | Out-Null 492 | # } else { 493 | # Write-Host "ERROR: $ps2Rom not found." 494 | # exit -1 495 | # } 496 | 497 | Write-Host "INFO: Setup Gameboy" 498 | $gbPath = "$romPath\gb" 499 | New-Item -ItemType Directory -Force -Path $gbPath | Out-Null 500 | 501 | Write-Host "INFO: Setup Gameboy Colour" 502 | $gbcPath = "$romPath\gbc" 503 | $gbcRom = "$requirementsFolder\star_heritage.zip" 504 | if(Test-Path $gbcRom){ 505 | New-Item -ItemType Directory -Force -Path $gbcPath | Out-Null 506 | Expand-Archive -Path $gbcRom -Destination $gbcPath | Out-Null 507 | } else { 508 | Write-Host "ERROR: $gbcRom not found." 509 | exit -1 510 | } 511 | 512 | Write-Host "INFO: Setup Mastersystem" 513 | $masterSystemPath = "$romPath\mastersystem" 514 | $masterSystemRom = "$requirementsFolder\WahMunchers-SMS-R2.zip" 515 | if(Test-Path $masterSystemRom){ 516 | New-Item -ItemType Directory -Force -Path $masterSystemPath | Out-Null 517 | Expand-Archive -Path $masterSystemRom -Destination $masterSystemPath | Out-Null 518 | } else { 519 | Write-Host "ERROR: $masterSystemRom not found." 520 | exit -1 521 | } 522 | 523 | Write-Host "INFO: Setup FBA" 524 | $fbaPath = "$romPath\fba" 525 | New-Item -ItemType Directory -Force -Path $fbaPath | Out-Null 526 | 527 | Write-Host "INFO: Atari2600 Setup" 528 | $atari2600Path = "$romPath\atari2600" 529 | $atari2600Rom = "$requirementsFolder\ramless_pong.bin" 530 | if(Test-Path $atari2600Rom){ 531 | New-Item -ItemType Directory -Force -Path $atari2600Path | Out-Null 532 | Copy-Item -Path $atari2600Rom -Destination $atari2600Path | Out-Null 533 | } else { 534 | Write-Host "ERROR: $atari2600Rom not found." 535 | exit -1 536 | } 537 | 538 | Write-Host "INFO: MAME setup" 539 | $mamePath = "$romPath\mame" 540 | New-Item -ItemType Directory -Force -Path $mamePath | Out-Null 541 | 542 | # WIP: Need to test and find freeware games for these emulators. 543 | # Need to write a bat to boot these 544 | Write-Host "INFO: ScummVm Setup" 545 | $scummVmPath = "$romPath\scummvm" 546 | New-Item -ItemType Directory -Force -Path $scummVmPath | Out-Null 547 | 548 | $wiiuPath = "$romPath\wiiu" 549 | New-Item -ItemType Directory -Force -Path $wiiuPath | Out-Null 550 | 551 | Write-Host "INFO: NeogeoPocket Setup" 552 | $neogeoPocketPath = "$romPath\ngp" 553 | $ngpRom = "$requirementsFolder\neopocket.zip" 554 | if(Test-Path $ngpRom){ 555 | New-Item -ItemType Directory -Force -Path $neogeoPocketPath | Out-Null 556 | Expand-Archive -Path $ngpRom -Destination $neogeoPocketPath | Out-Null 557 | } else { 558 | Write-Host "ERROR: $ngpRom not found." 559 | exit -1 560 | } 561 | 562 | Write-Host "INFO: Neogeo Setup" 563 | $neogeoPath = "$romPath\neogeo" 564 | New-Item -ItemType Directory -Force -Path $neogeoPath | Out-Null 565 | 566 | Write-Host "INFO: MSX Setup" 567 | $msxPath = "$romPath\msx" 568 | $msxCore = "$requirementsFolder\fmsx_libretro.dll.zip" 569 | if(Test-Path $msxCore){ 570 | Expand-Archive -Path $msxCore -Destination $coresPath | Out-Null 571 | New-Item -ItemType Directory -Force -Path $msxPath | Out-Null 572 | } else { 573 | Write-Host "ERROR: $msxCore not found." 574 | exit -1 575 | } 576 | 577 | Write-Host "INFO: Commodore 64 Setup" 578 | $commodore64Path = "$romPath\c64" 579 | $commodore64Core = "$requirementsFolder\vice_x64_libretro.dll.zip" 580 | if(Test-Path $commodore64Core){ 581 | Expand-Archive -Path $commodore64Core -Destination $coresPath | Out-Null 582 | New-Item -ItemType Directory -Force -Path $commodore64Path | Out-Null 583 | } else { 584 | Write-Host "ERROR: $commodore64Core not found." 585 | exit -1 586 | } 587 | 588 | Write-Host "INFO: Amiga Setup" 589 | $amigaPath = "$romPath\amiga" 590 | $amigaCore = "$requirementsFolder\puae_libretro.dll.zip" 591 | if(Test-Path $amigaCore){ 592 | Expand-Archive -Path $amigaCore -Destination $coresPath | Out-Null 593 | New-Item -ItemType Directory -Force -Path $amigaPath | Out-Null 594 | } else { 595 | Write-Host "ERROR: $amigaCore not found." 596 | exit -1 597 | } 598 | 599 | Write-Host "INFO: Setup Atari7800" 600 | $atari7800Path = "$romPath\atari7800" 601 | $atari7800Core = "$requirementsFolder\prosystem_libretro.dll.zip" 602 | if(Test-Path $atari7800Core){ 603 | Expand-Archive -Path $atari7800Core -Destination $coresPath | Out-Null 604 | New-Item -ItemType Directory -Force -Path $atari7800Path | Out-Null 605 | } else { 606 | Write-Host "ERROR: $atari7800Core not found." 607 | exit -1 608 | } 609 | 610 | Write-Host "INFO: Setup Wii/Gaemcube" 611 | $gcPath = "$romPath\gc" 612 | $wiiPath = "$romPath\wii" 613 | $wiiRom = "$requirementsFolder\Homebrew.Channel.-.OHBC.wad" 614 | New-Item -ItemType Directory -Force -Path $gcPath | Out-Null 615 | New-Item -ItemType Directory -Force -Path $wiiPath | Out-Null 616 | if(Test-Path $wiiRom){ 617 | Copy-Item $wiiRom $wiiPath | Out-Null 618 | } else{ 619 | Write-Host "ERROR: $wiiRom not found." 620 | exit -1 621 | } 622 | 623 | Write-Host "INFO: Setting up Emulation Station Config" 624 | $esConfigFile = "$env:userprofile\.emulationstation\es_systems.cfg" 625 | 626 | # TO-DO 627 | # Vita Launching is a BIT hacky, works in powershell 628 | # .\Vita3K.exe --vpk-path "%ROM% | .\Vita3K.exe 629 | 630 | 631 | <# 632 | ---------------------------------- 633 | File extension supported by systems 634 | ---------------------------------- 635 | Sources for getting compatible file extension: 636 | Vita3K: https://vita3k.org/faq.html 637 | Yuzu: https://yuzu-emu.org/wiki/overview-of-switch-game-formats/ 638 | RPCS3: NOT FOUND 639 | PPSSPP: https://www.ppsspp.org/faq.html 640 | Citra: https://community.citra-emu.org/t/3ds-vs-cci-rom-file-formats/191/4 641 | FCEUmm: https://docs.libretro.com/library/fceumm/ 642 | Snes9x: https://docs.libretro.com/library/snes9x/ 643 | ParaLLEl_n64: https://wiki.recalbox.com/en/emulators/consoles/nintendo-64/libretro-parallel_n64 644 | Dolphine: https://wiki.dolphin-emu.org/index.php?title=Installing_Dolphin#Post-Installation_Quick_Guide 645 | Gambatte: https://docs.libretro.com/library/gambatte/ 646 | VBA Next: https://docs.libretro.com/library/vba_next/ 647 | ePSXe: https://fantasyanime.com/emuhelp/epsxe#dumping-your-psx-games-to-iso (NOT OFFICIAL) 648 | PCSX2: https://fantasyanime.com/emuhelp/pcsx2#loading-a-ps2-iso (NOT OFFICIAL) 649 | #> 650 | $newConfig = " 651 | 652 | vita 653 | Vita 654 | $vitaPath 655 | .vpk .VPK 656 | C:\Program Files\Vita3k\Vita3K.exe --vpk-path %ROM% 657 | vita 658 | vita 659 | 660 | 661 | switch 662 | Switch 663 | $switchPath 664 | .nsp .NSP .zip .ZIP .7z .nso .NSO .nro .NRO .nca .NCA .xci .XCI 665 | $yuzuInstallDir\yuzu.exe %ROM% 666 | switch 667 | switch 668 | 669 | 670 | ps3 671 | PS3 672 | $ps3Path 673 | .iso .ISO .zip .ZIP .7z .pkg .PKG 674 | $rpcs3InstallDir\rpcs3.exe %ROM% 675 | ps3 676 | ps3 677 | 678 | 679 | psp 680 | Playstation Portable 681 | $pspPath 682 | .iso .ISO .cso .CSO .elf .ELF .pbp .PBP 683 | $ppssppInstallDir\PPSSPPWindows.exe %ROM% 684 | psp 685 | psp 686 | 687 | 688 | n3ds 689 | Nintendo 3DS 690 | $3dsPath 691 | .3ds .3DS .3dsx .3DSX .cci .CCI .cxi .CXI .elf .ELF 692 | $citraInstallDir\citra.exe %ROM% 693 | n3ds 694 | 3ds 695 | 696 | 697 | nes 698 | Nintendo Entertainment System 699 | $nesPath 700 | .nes .NES .fds .FDS .unif .UNIF .unf .UNF 701 | $retroarchExecutable -L $coresPath\fceumm_libretro.dll %ROM% 702 | nes 703 | nes 704 | 705 | 706 | Super Nintendo 707 | snes 708 | $snesPath 709 | .smc .SMC .sfc .SFC .fig .FIG .swc .SWC .bs .BS .st .ST 710 | $retroarchExecutable -L $coresPath\snes9x_libretro.dll %ROM% 711 | snes 712 | snes 713 | 714 | 715 | Nintendo 64 716 | n64 717 | $n64Path 718 | .z64 .Z64 .n64 .N64 .v64 .V64 .zip .ZIP .7z .7Z 719 | $retroarchExecutable -L $coresPath\parallel_n64_libretro.dll %ROM% 720 | n64 721 | n64 722 | 723 | 724 | Gamecube 725 | gc 726 | $gcPath 727 | .iso .ISO .gxm .GCM .gcz .GCZ .rvz .RVZ .dol .DOL .elf .ELF 728 | C:\tools\Dolphin-Beta\Dolphin.exe -e `"%ROM_RAW%`" 729 | gc 730 | gc 731 | 732 | 733 | wii 734 | Nintendo Wii 735 | $wiiPath 736 | .iso .ISO .wad .WAD .wbfs .WBFS .wia .WIA .dol .DOL .elf .ELF 737 | C:\tools\Dolphin-Beta\Dolphin.exe -e `"%ROM_RAW%`" 738 | wii 739 | wii 740 | 741 | 742 | Game Boy 743 | gb 744 | $gbPath 745 | .gb .GB .dmg .DMG .zip .ZIP .7z .7Z 746 | $retroarchExecutable -L $coresPath\gambatte_libretro.dll %ROM% 747 | gb 748 | gb 749 | 750 | 751 | Game Boy Color 752 | gbc 753 | $gbcPath 754 | .gbc .GBC .dmg .DMG .zip .ZIP 755 | $retroarchExecutable -L $coresPath\gambatte_libretro.dll %ROM% 756 | gbc 757 | gbc 758 | 759 | 760 | Game Boy Advance 761 | gba 762 | $gbaPath 763 | .gba .GBA 764 | $retroarchExecutable -L $coresPath\vba_next_libretro.dll %ROM% 765 | gba 766 | gba 767 | 768 | 769 | Playstation 770 | psx 771 | $psxPath 772 | .cue .CUE .iso .ISO .pbp .PBP 773 | ${psxEmulatorPath}ePSXe.exe -bios ${psxBiosPath}SCPH1001.BIN -nogui -loadbin %ROM% 774 | psx 775 | psx 776 | 777 | 778 | Playstation 2 779 | ps2 780 | $ps2Path 781 | .iso .img .bin .mdf .z .z2 .bz2 .dump .cso .ima .gz 782 | ${$ps2Binary} %ROM% --fullscreen --nogui 783 | ps2 784 | ps2 785 | 786 | 787 | MAME 788 | mame 789 | $mamePath 790 | .zip .ZIP 791 | $retroarchExecutable -L $coresPath\mame2010_libretro.dll %ROM% 792 | mame 793 | mame 794 | 795 | 796 | Final Burn Alpha 797 | fba 798 | $fbaPath 799 | .zip .ZIP .fba .FBA 800 | $retroarchExecutable -L $coresPath\fbalpha2012_libretro.dll %ROM% 801 | arcade 802 | 803 | 804 | 805 | Amiga 806 | amiga 807 | $amigaPath 808 | .adf .ADF 809 | $retroarchExecutable -L $coresPath\puae_libretro.dll %ROM% 810 | amiga 811 | amiga 812 | 813 | 814 | Atari 2600 815 | atari2600 816 | $atari2600Path 817 | .a26 .bin .rom .A26 .BIN .ROM 818 | $retroarchExecutable -L $coresPath\stella_libretro.dll %ROM% 819 | atari2600 820 | atari2600 821 | 822 | 823 | Atari 7800 Prosystem 824 | atari7800 825 | $atari7800Path 826 | .a78 .bin .A78 .BIN 827 | $retroarchExecutable -L $coresPath\prosystem_libretro.dll %ROM% 828 | atari7800 829 | atari7800 830 | 831 | 832 | Commodore 64 833 | c64 834 | $commodore64Path 835 | .crt .d64 .g64 .t64 .tap .x64 .zip .CRT .D64 .G64 .T64 .TAP .X64 .ZIP 836 | $retroarchExecutable -L $coresPath\vice_x64_libretro.dll %ROM% 837 | c64 838 | c64 839 | 840 | 841 | Sega Mega Drive / Genesis 842 | megadrive 843 | $mdPath 844 | .smd .SMD .bin .BIN .gen .GEN .md .MD .zip .ZIP 845 | $retroarchExecutable -L $coresPath\genesis_plus_gx_libretro.dll %ROM% 846 | genesis,megadrive 847 | megadrive 848 | 849 | 850 | Sega Master System 851 | mastersystem 852 | $masterSystemPath 853 | .bin .sms .zip .BIN .SMS .ZIP 854 | $retroarchExecutable -L $coresPath\genesis_plus_gx_libretro.dll %ROM% 855 | mastersystem 856 | mastersystem 857 | 858 | 859 | MSX 860 | msx 861 | $msxPath 862 | .col .dsk .mx1 .mx2 .rom .COL .DSK .MX1 .MX2 .ROM 863 | $retroarchExecutable -L $coresPath\fmsx_libretro.dll %ROM% 864 | msx 865 | msx 866 | 867 | 868 | neogeo 869 | Neo Geo 870 | $neogeoPath 871 | .zip .ZIP 872 | $retroarchExecutable -L $coresPath\fbalpha2012_libretro.dll %ROM% 873 | neogeo 874 | neogeo 875 | 876 | 877 | Neo Geo Pocket 878 | ngp 879 | $neogeoPocketPath 880 | .ngp .ngc .zip .ZIP 881 | $retroarchExecutable -L $coresPath\race_libretro.dll %ROM% 882 | ngp 883 | ngp 884 | 885 | 886 | ScummVM 887 | scummvm 888 | $scummVmPath 889 | .bat .BAT 890 | %ROM% 891 | pc 892 | scummvm 893 | 894 | 895 | wiiu 896 | Nintendo Wii U 897 | $wiiuPath 898 | .rpx .RPX 899 | START /D C:\tools\cemu\ Cemu.exe -f -g `"%ROM_RAW%`" 900 | wiiu 901 | wiiu 902 | 903 | 904 | " 905 | Set-Content $esConfigFile -Value $newConfig 906 | 907 | Write-Host "INFO: Setting up Emulation Station theme recalbox-backport" 908 | $themesPath = "$env:userprofile\.emulationstation\themes\recalbox-backport\" 909 | $themesFile = "$requirementsFolder\recalbox-backport-v2.2.zip" 910 | if(Test-Path $themesFile){ 911 | Expand-Archive -Path $themesFile -Destination $requirementsFolder -Force | Out-Null 912 | $themesFolder = "$requirementsFolder\recalbox-backport\" 913 | robocopy $themesFolder $themesPath /E /NFL /NDL /NJH /NJS /nc /ns /np | Out-Null 914 | } else { 915 | Write-Host "ERROR: $themesFile not found." 916 | exit -1 917 | } 918 | 919 | Write-Host "INFO: Update EmulationStation binaries" 920 | $emulationStationInstallFolder = "${env:ProgramFiles(x86)}\EmulationStation" 921 | $updatedEmulationStatonBinaries = "$requirementsFolder\EmulationStation-Win32.zip" 922 | if(Test-Path $updatedEmulationStatonBinaries){ 923 | Expand-Archive -Path $updatedEmulationStatonBinaries -Destination $emulationStationInstallFolder -Force | Out-Null 924 | } else { 925 | Write-Host "ERROR: $updatedEmulationStatonBinaries not found." 926 | exit -1 927 | } 928 | 929 | Write-Host "INFO: Generate ES settings file with favorites enabled." 930 | $esConfigFile = "$env:userprofile\.emulationstation\es_settings.cfg" 931 | $newSettingsConfig = " 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | " 975 | 976 | Set-Content $esConfigFile -Value $newSettingsConfig 977 | $requiredTmpFolder = "$env:userprofile\.emulationstation\tmp\" 978 | New-Item -ItemType Directory -Force -Path $requiredTmpFolder | Out-Null 979 | 980 | Write-Host "INFO: Genrating Dolphin Config" 981 | $dolphinConfigFile = "$env:userprofile\.emulationstation\systems\retroarch\saves\User\Config\Dolphin.ini" 982 | $dolphinConfigFolder = "$env:userprofile\.emulationstation\systems\retroarch\saves\User\Config\" 983 | $dolphinConfigFileContent = "[General] 984 | LastFilename = 985 | ShowLag = False 986 | ShowFrameCount = False 987 | ISOPaths = 0 988 | RecursiveISOPaths = False 989 | NANDRootPath = 990 | DumpPath = 991 | WirelessMac = 992 | WiiSDCardPath = $env:userprofile\.emulationstation\systems\retroarch\saves\User\Wii\sd.raw 993 | [Interface] 994 | ConfirmStop = True 995 | UsePanicHandlers = True 996 | OnScreenDisplayMessages = True 997 | HideCursor = False 998 | AutoHideCursor = False 999 | MainWindowPosX = -2147483648 1000 | MainWindowPosY = -2147483648 1001 | MainWindowWidth = -1 1002 | MainWindowHeight = -1 1003 | LanguageCode = 1004 | ShowToolbar = True 1005 | ShowStatusbar = True 1006 | ShowLogWindow = False 1007 | ShowLogConfigWindow = False 1008 | ExtendedFPSInfo = False 1009 | ThemeName = Clean 1010 | PauseOnFocusLost = False 1011 | DisableTooltips = False 1012 | [Display] 1013 | FullscreenResolution = Auto 1014 | Fullscreen = False 1015 | RenderToMain = True 1016 | RenderWindowXPos = -1 1017 | RenderWindowYPos = -1 1018 | RenderWindowWidth = 640 1019 | RenderWindowHeight = 480 1020 | RenderWindowAutoSize = False 1021 | KeepWindowOnTop = False 1022 | ProgressiveScan = False 1023 | PAL60 = False 1024 | DisableScreenSaver = False 1025 | ForceNTSCJ = False 1026 | [GameList] 1027 | ListDrives = False 1028 | ListWad = True 1029 | ListElfDol = True 1030 | ListWii = True 1031 | ListGC = True 1032 | ListJap = True 1033 | ListPal = True 1034 | ListUsa = True 1035 | ListAustralia = True 1036 | ListFrance = True 1037 | ListGermany = True 1038 | ListItaly = True 1039 | ListKorea = True 1040 | ListNetherlands = True 1041 | ListRussia = True 1042 | ListSpain = True 1043 | ListTaiwan = True 1044 | ListWorld = True 1045 | ListUnknown = True 1046 | ListSort = 3 1047 | ListSortSecondary = 0 1048 | ColumnPlatform = True 1049 | ColumnBanner = True 1050 | ColumnNotes = True 1051 | ColumnFileName = False 1052 | ColumnID = False 1053 | ColumnRegion = True 1054 | ColumnSize = True 1055 | ColumnState = True 1056 | [Core] 1057 | HLE_BS2 = True 1058 | TimingVariance = 40 1059 | CPUCore = 1 1060 | Fastmem = True 1061 | CPUThread = True 1062 | DSPHLE = True 1063 | SyncOnSkipIdle = True 1064 | SyncGPU = True 1065 | SyncGpuMaxDistance = 200000 1066 | SyncGpuMinDistance = -200000 1067 | SyncGpuOverclock = 1.00000000 1068 | FPRF = False 1069 | AccurateNaNs = False 1070 | DefaultISO = 1071 | DVDRoot = 1072 | Apploader = 1073 | EnableCheats = False 1074 | SelectedLanguage = 0 1075 | OverrideGCLang = False 1076 | DPL2Decoder = False 1077 | Latency = 2 1078 | AudioStretch = False 1079 | AudioStretchMaxLatency = 80 1080 | MemcardAPath = $env:userprofile\.emulationstation\systems\retroarch\saves\User\GC\MemoryCardA.USA.raw 1081 | MemcardBPath = $env:userprofile\.emulationstation\systems\retroarch\saves\User\GC\MemoryCardB.USA.raw 1082 | AgpCartAPath = 1083 | AgpCartBPath = 1084 | SlotA = 1 1085 | SlotB = 255 1086 | SerialPort1 = 255 1087 | BBA_MAC = 1088 | SIDevice0 = 6 1089 | AdapterRumble0 = True 1090 | SimulateKonga0 = False 1091 | SIDevice1 = 0 1092 | AdapterRumble1 = True 1093 | SimulateKonga1 = False 1094 | SIDevice2 = 0 1095 | AdapterRumble2 = True 1096 | SimulateKonga2 = False 1097 | SIDevice3 = 0 1098 | AdapterRumble3 = True 1099 | SimulateKonga3 = False 1100 | WiiSDCard = False 1101 | WiiKeyboard = False 1102 | WiimoteContinuousScanning = False 1103 | WiimoteEnableSpeaker = False 1104 | RunCompareServer = False 1105 | RunCompareClient = False 1106 | EmulationSpeed = 1.00000000 1107 | FrameSkip = 0x00000000 1108 | Overclock = 1.00000000 1109 | OverclockEnable = False 1110 | GFXBackend = OGL 1111 | GPUDeterminismMode = auto 1112 | PerfMapDir = 1113 | EnableCustomRTC = False 1114 | CustomRTCValue = 0x386d4380 1115 | [Movie] 1116 | PauseMovie = False 1117 | Author = 1118 | DumpFrames = False 1119 | DumpFramesSilent = False 1120 | ShowInputDisplay = False 1121 | ShowRTC = False 1122 | [DSP] 1123 | EnableJIT = False 1124 | DumpAudio = False 1125 | DumpAudioSilent = False 1126 | DumpUCode = False 1127 | Backend = Libretro 1128 | Volume = 100 1129 | CaptureLog = False 1130 | [Input] 1131 | BackgroundInput = False 1132 | [FifoPlayer] 1133 | LoopReplay = False 1134 | [Analytics] 1135 | ID = 1136 | Enabled = False 1137 | PermissionAsked = False 1138 | [Network] 1139 | SSLDumpRead = False 1140 | SSLDumpWrite = False 1141 | SSLVerifyCertificates = True 1142 | SSLDumpRootCA = False 1143 | SSLDumpPeerCert = False 1144 | [BluetoothPassthrough] 1145 | Enabled = False 1146 | VID = -1 1147 | PID = -1 1148 | LinkKeys = 1149 | [USBPassthrough] 1150 | Devices = 1151 | [Sysconf] 1152 | SensorBarPosition = 1 1153 | SensorBarSensitivity = 50331648 1154 | SpeakerVolume = 88 1155 | WiimoteMotor = True 1156 | WiiLanguage = 1 1157 | AspectRatio = 1 1158 | Screensaver = 0 1159 | 1160 | " 1161 | New-Item $dolphinConfigFolder -ItemType directory -Force | Out-Null 1162 | Write-Output $dolphinConfigFileContent > $dolphinConfigFile 1163 | 1164 | # TO-DO: Review if this is still needed or not 1165 | # # https://www.ngemu.com/threads/epsxe-2-0-5-startup-crash-black-screen-fix-here.199169/ 1166 | # # https://www.youtube.com/watch?v=fY89H8fLFSc 1167 | # $path = 'HKCU:\SOFTWARE\epsxe\config' 1168 | # New-Item -Path $path -Force | Out-Null 1169 | # Set-ItemProperty -Path $path -Name 'CPUOverclocking' -Value '10' 1170 | 1171 | Write-Host "INFO: Adding scraper in" 1172 | $scraperZip = "$requirementsFolder\scraper_windows_amd64.zip" 1173 | if(Test-Path $scraperZip){ 1174 | Expand-Archive -Path $scraperZip -Destination $romPath | Out-Null 1175 | } else { 1176 | Write-Host "ERROR: $scraperZip not found." 1177 | exit -1 1178 | } 1179 | 1180 | Write-Host "INFO: Adding in useful desktop shortcuts" 1181 | $userProfileVariable = Get-ChildItem Env:UserProfile 1182 | $romsShortcut = $userProfileVariable.Value + "\.emulationstation\roms" 1183 | $coresShortcut = $userProfileVariable.Value + "\.emulationstation\systems\retroarch\cores" 1184 | $windowedEmulationStation = "${env:ProgramFiles(x86)}\EmulationStation\emulationstation.exe" 1185 | 1186 | $wshshell = New-Object -ComObject WScript.Shell 1187 | $desktop = [System.Environment]::GetFolderPath('Desktop') 1188 | $lnkRoms = $wshshell.CreateShortcut("$desktop\Roms Location.lnk") 1189 | $lnkRoms.TargetPath = $romsShortcut 1190 | $lnkRoms.Save() 1191 | 1192 | $lnkCores = $wshshell.CreateShortcut("$desktop\Cores Location.lnk") 1193 | $lnkCores.TargetPath = $coresShortcut 1194 | $lnkCores.Save() 1195 | 1196 | $lnkWindowed = $wshshell.CreateShortcut("$desktop\Windowed EmulationStation.lnk") 1197 | $lnkWindowed.Arguments = "--resolution 1366 768 --windowed" 1198 | $lnkWindowed.TargetPath = $windowedEmulationStation 1199 | $lnkWindowed.Save() 1200 | 1201 | Write-Host "INFO: Setup completed" 1202 | --------------------------------------------------------------------------------