@@ -213,25 +213,34 @@ DownloadFiles("downloads")
213213DownloadFiles(" other_downloads" )
214214GithubReleaseFiles
215215
216- # Install EmulationStation Desktop Edition (ES-DE)
216+ # Install EmulationStation Desktop Edition (ES-DE) or fallback
217217Write-Host " INFO: Installing EmulationStation Desktop Edition (ES-DE)"
218218$esdeInstaller = " $requirementsFolder \EmulationStation-DE-3.3.0-Windows.exe"
219+ $fallbackES = " $requirementsFolder \EmulationStation-Win32.zip"
220+
219221if (Test-Path $esdeInstaller ){
220222 Start-Process $esdeInstaller - ArgumentList " /S" - Wait
221223 Write-Host " INFO: ES-DE installed successfully"
224+ } elseif (Test-Path $fallbackES ) {
225+ Write-Host " WARNING: ES-DE not available, using fallback EmulationStation"
226+ Expand-Archive - Path $fallbackES - Destination " $env: userprofile \.emulationstation\systems" - Force | Out-Null
227+ Write-Host " INFO: Fallback EmulationStation extracted successfully"
222228} else {
223- Write-Host " ERROR: ES-DE installer not found at $esdeInstaller "
224- exit -1
229+ Write-Host " WARNING: Neither ES-DE nor fallback EmulationStation found. Continuing without EmulationStation installation."
225230}
226231
227- # Generate Emulation Station config file
228- & " ${env: ProgramFiles(x86)} \EmulationStation\emulationstation.exe"
229- while (! (Test-Path " $env: userprofile \.emulationstation\es_systems.cfg" )) {
230- Write-Host " INFO: Checking for config file..."
231- Start-Sleep 10
232+ # Generate Emulation Station config file (if EmulationStation is available)
233+ if (Test-Path " ${env: ProgramFiles(x86)} \EmulationStation\emulationstation.exe" ) {
234+ & " ${env: ProgramFiles(x86)} \EmulationStation\emulationstation.exe"
235+ while (! (Test-Path " $env: userprofile \.emulationstation\es_systems.cfg" )) {
236+ Write-Host " INFO: Checking for config file..."
237+ Start-Sleep 10
238+ }
239+ Write-Host " INFO: Config file generated"
240+ Stop-Process - Name " emulationstation"
241+ } else {
242+ Write-Host " WARNING: EmulationStation not installed, will generate custom config file later"
232243}
233- Write-Host " INFO: Config file generated"
234- Stop-Process - Name " emulationstation"
235244
236245# ####
237246# Retroarch
@@ -248,8 +257,7 @@ if(Test-Path $retroArchBinary){
248257 # New path - $retroArchPath\RetroArch-Win64
249258
250259} else {
251- Write-Host " ERROR: $retroArchBinary not found."
252- exit -1
260+ Write-Host " WARNING: $retroArchBinary not found. RetroArch setup will be skipped."
253261}
254262
255263
@@ -258,80 +266,71 @@ $nesCore = "$requirementsFolder\fceumm_libretro.dll.zip"
258266if (Test-Path $nesCore ){
259267 Expand-Archive - Path $nesCore - Destination $coresPath | Out-Null
260268} else {
261- Write-Host " ERROR: $nesCore not found."
262- exit -1
269+ Write-Host " WARNING: $nesCore not found. NES emulation will be skipped."
263270}
264271
265272# N64 Setup
266273$n64Core = " $requirementsFolder \parallel_n64_libretro.dll.zip"
267274if (Test-Path $n64Core ){
268275 Expand-Archive - Path $n64Core - Destination $coresPath | Out-Null
269276} else {
270- Write-Host " ERROR: $n64Core not found."
271- exit -1
277+ Write-Host " WARNING: $n64Core not found. N64 emulation will be skipped."
272278}
273279
274280# FBA Setup
275281$fbaCore = " $requirementsFolder \fbalpha2012_libretro.dll.zip"
276282if (Test-Path $fbaCore ){
277283 Expand-Archive - Path $fbaCore - Destination $coresPath | Out-Null
278284} else {
279- Write-Host " ERROR: $fbaCore not found."
280- exit -1
285+ Write-Host " WARNING: $fbaCore not found. FBA emulation will be skipped."
281286}
282287
283288# GBA Setup
284289$gbaCore = " $requirementsFolder \vba_next_libretro.dll.zip"
285290if (Test-Path $gbaCore ){
286291 Expand-Archive - Path $gbaCore - Destination $coresPath | Out-Null
287292} else {
288- Write-Host " ERROR: $gbaCore not found."
289- exit -1
293+ Write-Host " WARNING: $gbaCore not found. GBA emulation will be skipped."
290294}
291295
292296# SNES Setup
293297$snesCore = " $requirementsFolder \snes9x_libretro.dll.zip"
294298if (Test-Path $snesCore ){
295299 Expand-Archive - Path $snesCore - Destination $coresPath | Out-Null
296300} else {
297- Write-Host " ERROR: $snesCore not found."
298- exit -1
301+ Write-Host " WARNING: $snesCore not found. SNES emulation will be skipped."
299302}
300303
301304# Genesis GX Setup
302305$mdCore = " $requirementsFolder \genesis_plus_gx_libretro.dll.zip"
303306if (Test-Path $mdCore ){
304307 Expand-Archive - Path $mdCore - Destination $coresPath | Out-Null
305308} else {
306- Write-Host " ERROR: $mdCore not found."
307- exit -1
309+ Write-Host " WARNING: $mdCore not found. Genesis emulation will be skipped."
308310}
309311
310312# Game boy Colour Setup
311313$gbcCore = " $requirementsFolder \gambatte_libretro.dll.zip"
312314if (Test-Path $gbcCore ){
313315 Expand-Archive - Path $gbcCore - Destination $coresPath | Out-Null
314316} else {
315- Write-Host " ERROR: $gbcCore not found."
316- exit -1
317+ Write-Host " WARNING: $gbcCore not found. GBC emulation will be skipped."
317318}
318319
319320# Atari2600 Setup
320321$atari2600Core = " $requirementsFolder \stella_libretro.dll.zip"
321322if (Test-Path $atari2600Core ){
322323 Expand-Archive - Path $atari2600Core - Destination $coresPath | Out-Null
323324} else {
324- Write-Host " ERROR: $atari2600Core not found."
325- exit -1
325+ Write-Host " WARNING: $atari2600Core not found. Atari 2600 emulation will be skipped."
326326}
327327
328328# MAME Setup
329329$mameCore = " $requirementsFolder \mame2010_libretro.dll.zip"
330330if (Test-Path $mameCore ){
331331 Expand-Archive - Path $mameCore - Destination $coresPath | Out-Null
332332} else {
333- Write-Host " ERROR: $mameCore not found."
334- exit -1
333+ Write-Host " WARNING: $mameCore not found. MAME emulation will be skipped."
335334}
336335
337336# PSX Setup - Keep ePSXe as fallback if DuckStation not available
@@ -356,8 +355,7 @@ if(Test-Path $ps2EmulatorExe){
356355 Start-Process $ps2EmulatorExe - ArgumentList " /S" , " /D=$ps2EmulatorPath " - Wait
357356 New-Item - ItemType Directory - Force - Path $ps2BiosPath | Out-Null
358357} else {
359- Write-Host " ERROR: $ps2EmulatorExe not found."
360- exit -1
358+ Write-Host " WARNING: $ps2EmulatorExe not found. PS2 emulation will be skipped."
361359}
362360
363361# DuckStation Setup (Modern PlayStation 1 Emulator)
@@ -388,8 +386,7 @@ $ngpCore = "$requirementsFolder\race_libretro.dll.zip"
388386if (Test-Path $ngpCore ){
389387 Expand-Archive - Path $ngpCore - Destination $coresPath | Out-Null
390388} else {
391- Write-Host " ERROR: $ngpCore not found."
392- exit -1
389+ Write-Host " WARNING: $ngpCore not found. Neo Geo Pocket emulation will be skipped."
393390}
394391
395392# Start Retroarch and generate a config.
@@ -452,8 +449,7 @@ if(Test-Path $nesRom){
452449 New-Item - ItemType Directory - Force - Path $nesPath | Out-Null
453450 Expand-Archive - Path $nesRom - Destination $nesPath | Out-Null
454451} else {
455- Write-Host " ERROR: $nesRom not found."
456- exit -1
452+ Write-Host " WARNING: $nesRom not found. No NES ROM will be available."
457453}
458454
459455Write-Host " INFO: Setup N64"
@@ -463,8 +459,7 @@ if(Test-Path $n64Rom){
463459 New-Item - ItemType Directory - Force - Path $n64Path | Out-Null
464460 Expand-Archive - Path $n64Rom - Destination $n64Path | Out-Null
465461} else {
466- Write-Host " ERROR: $n64Rom not found."
467- exit -1
462+ Write-Host " WARNING: $n64Rom not found. No N64 ROM will be available."
468463}
469464
470465Write-Host " INFO: Setup psp"
@@ -475,8 +470,7 @@ if (Test-Path $pspRom) {
475470 Move-Item - Path $pspRom - Destination $pspPath - Force | Out-Null
476471}
477472else {
478- Write-Host " ERROR: $pspRom not found."
479- exit -1
473+ Write-Host " WARNING: $pspRom not found. No PSP ROM will be available."
480474}
481475
482476# Nintendo Switch setup disabled - emulator unavailable due to DMCA
@@ -500,8 +494,7 @@ if (Test-Path $ps3Rom) {
500494 Move-Item - Path $ps3Rom - Destination $ps3Path | Out-Null
501495}
502496else {
503- Write-Host " ERROR: $ps3Rom not found."
504- exit -1
497+ Write-Host " WARNING: $ps3Rom not found. No PS3 content will be available."
505498}
506499
507500Write-Host " INFO: Setup PS Vita"
@@ -512,8 +505,7 @@ if (Test-Path $vitaRom) {
512505 Move-Item - Path $vitaRom - Destination $vitaPath - Force | Out-Null
513506}
514507else {
515- Write-Host " ERROR: $vitaRom not found."
516- exit -1
508+ Write-Host " WARNING: $vitaRom not found. No Vita content will be available."
517509}
518510
519511Write-Host " INFO: Setup Vita3k"
@@ -526,8 +518,7 @@ $vita3kLatestBuild = "$requirementsFolder\windows-latest.zip"
526518if (Test-Path $vita3kLatestBuild ){
527519 Expand-Archive - Path $vita3kLatestBuild - Destination $vita3kInstallFolder - force | Out-Null
528520} else {
529- Write-Host " ERROR: $vita3kLatestBuild not found."
530- exit -1
521+ Write-Host " WARNING: $vita3kLatestBuild not found. Vita3K setup will be skipped."
531522}
532523
533524# 3DS setup disabled - Citra emulator no longer available in Scoop buckets
@@ -550,8 +541,7 @@ if(Test-Path $gbaRom){
550541 New-Item - ItemType Directory - Force - Path $gbaPath | Out-Null
551542 Copy-Item - Path $gbaRom - Destination $gbaPath | Out-Null
552543} else {
553- Write-Host " ERROR: $gbaRom not found."
554- exit -1
544+ Write-Host " WARNING: $gbaRom not found. No GBA ROM will be available."
555545}
556546
557547Write-Host " INFO: Setup Megadrive"
@@ -561,8 +551,7 @@ if(Test-Path $mdRom){
561551 New-Item - ItemType Directory - Force - Path $mdPath | Out-Null
562552 Copy-Item - Path $mdRom - Destination $mdPath | Out-Null
563553} else {
564- Write-Host " ERROR: $mdRom not found."
565- exit -1
554+ Write-Host " WARNING: $mdRom not found. No Genesis ROM will be available."
566555}
567556
568557Write-Host " INFO: Setup SNES"
@@ -572,8 +561,7 @@ if(Test-Path $snesRom){
572561 New-Item - ItemType Directory - Force - Path $snesPath | Out-Null
573562 Copy-Item - Path $snesRom - Destination $snesPath | Out-Null
574563} else {
575- Write-Host " ERROR: $snesRom not found."
576- exit -1
564+ Write-Host " WARNING: $snesRom not found. No SNES ROM will be available."
577565}
578566
579567Write-Host " INFO: Setup PSX"
@@ -583,8 +571,7 @@ if(Test-Path $psxRom){
583571 New-Item - ItemType Directory - Force - Path $psxPath | Out-Null
584572 Expand-Archive - Path $psxRom - Destination $psxPath | Out-Null
585573} else {
586- Write-Host " ERROR: $psxRom not found."
587- exit -1
574+ Write-Host " WARNING: $psxRom not found. No PSX ROM will be available."
588575}
589576
590577# Write-Host "INFO: Setup PS2"
@@ -609,8 +596,7 @@ if(Test-Path $gbcRom){
609596 New-Item - ItemType Directory - Force - Path $gbcPath | Out-Null
610597 Expand-Archive - Path $gbcRom - Destination $gbcPath | Out-Null
611598} else {
612- Write-Host " ERROR: $gbcRom not found."
613- exit -1
599+ Write-Host " WARNING: $gbcRom not found. No GBC ROM will be available."
614600}
615601
616602Write-Host " INFO: Setup Mastersystem"
@@ -620,8 +606,7 @@ if(Test-Path $masterSystemRom){
620606 New-Item - ItemType Directory - Force - Path $masterSystemPath | Out-Null
621607 Expand-Archive - Path $masterSystemRom - Destination $masterSystemPath | Out-Null
622608} else {
623- Write-Host " ERROR: $masterSystemRom not found."
624- exit -1
609+ Write-Host " WARNING: $masterSystemRom not found. No Master System ROM will be available."
625610}
626611
627612Write-Host " INFO: Setup FBA"
@@ -635,8 +620,7 @@ if(Test-Path $atari2600Rom){
635620 New-Item - ItemType Directory - Force - Path $atari2600Path | Out-Null
636621 Copy-Item - Path $atari2600Rom - Destination $atari2600Path | Out-Null
637622} else {
638- Write-Host " ERROR: $atari2600Rom not found."
639- exit -1
623+ Write-Host " WARNING: $atari2600Rom not found. No Atari 2600 ROM will be available."
640624}
641625
642626Write-Host " INFO: MAME setup"
@@ -659,8 +643,7 @@ if(Test-Path $ngpRom){
659643 New-Item - ItemType Directory - Force - Path $neogeoPocketPath | Out-Null
660644 Expand-Archive - Path $ngpRom - Destination $neogeoPocketPath | Out-Null
661645} else {
662- Write-Host " ERROR: $ngpRom not found."
663- exit -1
646+ Write-Host " WARNING: $ngpRom not found. No Neo Geo Pocket ROM will be available."
664647}
665648
666649Write-Host " INFO: Neogeo Setup"
@@ -674,8 +657,7 @@ if(Test-Path $msxCore){
674657 Expand-Archive - Path $msxCore - Destination $coresPath | Out-Null
675658 New-Item - ItemType Directory - Force - Path $msxPath | Out-Null
676659} else {
677- Write-Host " ERROR: $msxCore not found."
678- exit -1
660+ Write-Host " WARNING: $msxCore not found. MSX emulation will be skipped."
679661}
680662
681663Write-Host " INFO: Commodore 64 Setup"
@@ -685,8 +667,7 @@ if(Test-Path $commodore64Core){
685667 Expand-Archive - Path $commodore64Core - Destination $coresPath | Out-Null
686668 New-Item - ItemType Directory - Force - Path $commodore64Path | Out-Null
687669} else {
688- Write-Host " ERROR: $commodore64Core not found."
689- exit -1
670+ Write-Host " WARNING: $commodore64Core not found. C64 emulation will be skipped."
690671}
691672
692673Write-Host " INFO: Amiga Setup"
@@ -696,8 +677,7 @@ if(Test-Path $amigaCore){
696677 Expand-Archive - Path $amigaCore - Destination $coresPath | Out-Null
697678 New-Item - ItemType Directory - Force - Path $amigaPath | Out-Null
698679} else {
699- Write-Host " ERROR: $amigaCore not found."
700- exit -1
680+ Write-Host " WARNING: $amigaCore not found. Amiga emulation will be skipped."
701681}
702682
703683Write-Host " INFO: Setup Atari7800"
@@ -707,8 +687,7 @@ if(Test-Path $atari7800Core){
707687 Expand-Archive - Path $atari7800Core - Destination $coresPath | Out-Null
708688 New-Item - ItemType Directory - Force - Path $atari7800Path | Out-Null
709689} else {
710- Write-Host " ERROR: $atari7800Core not found."
711- exit -1
690+ Write-Host " WARNING: $atari7800Core not found. Atari 7800 emulation will be skipped."
712691}
713692
714693Write-Host " INFO: Setup Wii/Gaemcube"
@@ -720,8 +699,7 @@ New-Item -ItemType Directory -Force -Path $wiiPath | Out-Null
720699if (Test-Path $wiiRom ){
721700 Copy-Item $wiiRom $wiiPath | Out-Null
722701} else {
723- Write-Host " ERROR: $wiiRom not found."
724- exit -1
702+ Write-Host " WARNING: $wiiRom not found. No Wii content will be available."
725703}
726704
727705Write-Host " INFO: Setting up Emulation Station Config"
@@ -1027,8 +1005,7 @@ if(Test-Path $themesFile){
10271005 $themesFolder = " $requirementsFolder \recalbox-backport\"
10281006 robocopy $themesFolder $themesPath / E / NFL / NDL / NJH / NJS / nc / ns / np | Out-Null
10291007} else {
1030- Write-Host " ERROR: $themesFile not found."
1031- exit -1
1008+ Write-Host " WARNING: $themesFile not found. Themes will be skipped."
10321009}
10331010
10341011Write-Host " INFO: Update EmulationStation binaries"
@@ -1037,8 +1014,7 @@ $updatedEmulationStatonBinaries = "$requirementsFolder\EmulationStation-Win32.zi
10371014if (Test-Path $updatedEmulationStatonBinaries ){
10381015 Expand-Archive - Path $updatedEmulationStatonBinaries - Destination $emulationStationInstallFolder - Force | Out-Null
10391016} else {
1040- Write-Host " ERROR: $updatedEmulationStatonBinaries not found."
1041- exit -1
1017+ Write-Host " WARNING: $updatedEmulationStatonBinaries not found. Using default EmulationStation."
10421018}
10431019
10441020Write-Host " INFO: Generate ES settings file with favorites enabled."
@@ -1288,8 +1264,7 @@ $scraperZip = "$requirementsFolder\scraper_windows_amd64.zip"
12881264if (Test-Path $scraperZip ){
12891265 Expand-Archive - Path $scraperZip - Destination $romPath | Out-Null
12901266} else {
1291- Write-Host " ERROR: $scraperZip not found."
1292- exit -1
1267+ Write-Host " WARNING: $scraperZip not found. Scraper tool will not be available."
12931268}
12941269
12951270Write-Host " INFO: Adding in useful desktop shortcuts"
0 commit comments