├── .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 | 
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 | 
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 | 
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 | 
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 | 
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 |
--------------------------------------------------------------------------------