Εύκολο launch Windows 9x games μέσω RetroArch (η καλύτερη μέθοδος που εχω μέχρι στιγμής).

Imgema

Alien RetroDatabase
Joined
4 Ιουν 2009
Μηνύματα
5.471
Αντιδράσεις
1.533
Για πολύ καιρό ήθελα έναν τρόπο να τρέχω Windows 9x παιχνίδια μέσω του couch setup μου. Αλλά αυτό ήταν πάντα ένα δύσκολο task.

Με το DosBox Pure μπορείς να τρέξεις αρκετά Windows 9x παιχνίδια αν φτιάξεις ένα Windows 98 image, αλλά πως να το κάνεις να τρέχεις ένα παιχνίδι από την playlist ή το frontend, χωρίς να πρέπει να περιηγηθείς στα Windows με το ποντίκι?

Ύστερα από πολύ trial and error κατέληξα με τον παρακάτω τρόπο. Μέχρι στιγμής είναι ο πιο εύκολος και ο πιο "efficient" τρόπος με τον οποίο τα παιχνίδια ανοίγουν ομαλά, σαν να τρέχεις κονσόλα.

---- Αρχικά πρέπει να φτιάξουμε ένα Windows image που θα βρίσκεται μέσα στον φάκελο "System" του RetroArch. Δεν χρειάζεται όμως να είναι μεγάλος. Άσχετα πόσα games σκοπεύουμε να κάνουμε install, τα 256MB φτάνουν για Windows 95 και τα 512MB για Windows 98. Ας πούμε ότι φτιάχνουμε ένα Windows 98 image. Υπάρχουν tutorials για το πως να το κάνουμε αυτό, η μόνη διαφορά στην δική μου μέθοδο είναι ότι επιλέγω τον μικρότερο δίσκο για το OS αυτό, δηλαδή την επιλογή 512MB, όταν με ρωτήσει σε τι δίσκο θα τo κάνω install. Αυτό το image θα έχει μονο τα Windows μέσα και τους drivers. Τίποτε άλλο. Θα λειτουργεί ως βάση και δεν θα ξαναπειραχτεί όταν τελειώσουμε με αυτό. Οπότε δεν χρειάζεται να είναι μεγαλύτερο σε μέγεθος.

---- Οταν λοιπόν είμαστε έτοιμοι να αρχίσουμε να κάνουμε install παιχνίδια, πάμε στα core options και επιλέγουμε "System - OS Disk Modifications - Save Difference Per content". Aυτό τι σημαίνει? Οτι οποιαδήποτε αλλαγή κάνουμε στον C:\ Windows, δεν σώζεται στο original Windows 98 image που φτιάξαμε σαν βάση αλλά σε ξεχωριστό αρχείο στον φάκελο saves ως "[gamename]-CDRIVE.sav". Το original image μένει πάντα ανέγγιχτο για λόγους ασφαλείας και σταθερότητας. Μπορούμε να κάνουμε ότι πειράματα θέλουμε, να τεστάρουμε cracks και ιούς και να διαλύσουμε τα Windows, το μόνο που έχουμε να κάνουμε αν κάτι πάει στραβά και κολλάνε τα Windows είναι να σβήσουμε το gamename-CDRIVE.sav αρχείο και θα επιστρέψουμε στο τελευταίο state που τα Windows ήταν σταθερά.

Το κάθε παιχνίδι θα έχει το δικό του -CDRIVE.sav αρχείο στον φάκελο saves. Στην ουσία τα Windows πάντα θα νομίζουν ότι υπάρχει μόνο ένα game εγκατεστημένο κάθε φορά και ας έχουμε εμείς εγκαταστήσει 200.

---- Τρέχουμε κανονικά το cue ή το iso από το playlist με το DosBox και όταν εμφανιστεί η λίστα θα έχει πάνω πάνω την επιλογή "Run Installed Operating System". Αυτό θα τρέξει τα Windows και θα έχει κάνει mount και το CD ώστε να το κάνουμε install κανονικά. Ομως μαζί με το CD θα έχει κάνει mount Και ένα δεύτερο δίσκο (D:\) ο οποίος είναι 1GB. Αυτό είναι το default size και μπορεί να αλλάξει από τα core options. Το παιχνίδι λοιπόν θα το κάνουμε install σε αυτόν τον δίσκο και όχι στον C:\

---- Μετά από αυτό κάνουμε shutdown κανονικά και τρέχουμε ένα άλλο iso. Πάλι η ίδια λογική ισχύει αλλά θα παρατηρήσετε ότι για κάθε παιχνίδι, υπάρχει ένας ξεχωριστός δίσκος D:\. οπότε στην ουσία το κάθε παιχνίδι είναι installed μόνο του σε αυτόν τον δίσκο. Αυτό γίνεται γιατί το κάθε παιχνίδι που κάνουμε install δεν σώζεται μέσα το original Windows 98 image που φτιάξαμε, ούτε στο -CDRIVE.sav αλλά σε ένα [gamename].sav αρχείο στον φάκελο "saves". Προτείνω να επιλέγουμε τα "minimal" installations ώστε αυτά τα αρχεία να είναι όσο μικρά γίνεται για λίγο loading παραπάνω. Αυτό βεβαια είναι στην κρίση του καθένα.

Οπότε μέχρι τώρα έχουμε τρία πράγματα: To βασικό Windows 98 image στον φάκελο "System" και το κάθε παιχνίδι έχει ένα αρχείο .sav για τα game files (πχ: Quake 2.sav) και ένα αρχείο -CDRIVE.sav για τις αλλαγές στα Windows που αφορούν το παιχνίδι (πχ Quake 2-CDRIVE.sav) στον φάκελο "Saves". Αν θέλουμε να σβήσουμε ένα παιχνίδι από το Setup απλά σβήνουμε αυτά τα δύο αρχεία του από τον φάκελο "Saves". Δεν χρειάζεται ποτέ να κάνουμε uninstall ή οτιδήποτε άλλο που γεμίζει την registry σκουπίδια. Όπως είπαμε, To βασικό Windows 98 image στον φάκελο "System" μένει απείραχτο, μέχρι και "read only" μπορούμε να το κάνουμε.

---- Για να τρέξουμε το κάθε παιχνίδι μετά το installation θα πρέπει πάντα να επιλέγουμε το "Run Installed Operating System" από την λίστα του DosBox Pure, αλλά υπάρχει και η επιλογή ώστε να τρέχει αυτόματα με αυτό χωρίς να πρέπει να το επιλέγουμε εμείς κάθε φορά.

Οπότε τώρα είμαστε στην φάση που επιλέγουμε ένα παιχνίδι από την playlist και μας ανοίγει τα Windows που είναι εγκατεστημένο μόνο το συγκεκριμένο που τρέξαμε. Πως όμως θα τρέξει το παιχνίδι αυτόματα χωρίς να πρέπει να το επιλέξουμε εμείς μέσω Windows και να το κλικάρουμε? Αυτό γίνεται εύκολα με το TaskSceduler. Φτιάχνουμε ένα task και επιλέγουμε το .exe του παιχνιδιού από τον δίσκο D:\ να ανοίγει στο logon. Αυτό θα πρέπει να γίνει για κάθε παιχνίδι ξεχωριστά και εννοείται ότι αυτές οι αλλαγές σώζονται πάντα στο εκάστοτε -CDRIVE.sav. Αλλιώς δεν θα μπορούσαμε στο main Windows 98 image να έχουμε ένα ξεχωριστό task ταυτόχρονα για κάθε παιχνίδι, οπότε αυτό είναι και το νόημα της μεθόδου αυτής.

Έχουμε λοιπόν καταφέρει να τρέχουμε ενα παιχνίδι από το Playlist/frontend και να μας ανοίγει αυτόματα μετά το Windows launch. Και μπορούμε εύκολα να σβήνουμε παιχνίδια και να κάνουμε και πειράματα. Το μόνο που δεν έχω λύσει είναι το shutdown. Αν το κλείνουμε με τον πατροπαράδοτο τρόπο "quit RetroArch" μετά θα θέλει να κάνει disk check αφού δεν έκλεισε κανονικά με Windows Shut down...

Μέχρι στιγμής δεν έχω βρει κάποια λύση σε αυτό οπότε απλά δεν με νοιάζει το disk check. Κρατάει μόνο 1 δευτερόλεπτο. Εχω όμως στα σκαριά μία λύση, θα πρέπει να κανει μια μικρή αλλαγή ο προγραμματιστής για να πετύχει αυτό οπότε έκανα την πρόταση στο github και βλέπουμε. Αν το κανει αυτό λύθηκε το πρόβλημα.


Εκτός αν έχει κάποιος κάποια άλλη λύση για αυτό. Το Task Sceduler των Windows 98 δεν έχει και πολλές επιλογές...

Αυτά μέχρι στιγμής. Αν έχει κάποιος καμία άλλη ιδέα να το βελτιώσουμε το πράγμα, καλοδεχούμενη :)
 
Τελευταία επεξεργασία:
Οσον αφορά το Task Scheduler δεν ξέρω αν όλα τα παιχνίδια θα κανουν launch χωρίς κάποιο θέμα. μέχρι στιγμής έχω δοκιμάσει τρία παιχνίδια και δεν έχουν θέμα. Θα ήθελα όμως να υπήρχε κάποια δικλίδα ασφαλείας, πχ να μπορείς να δώσεις 3-4 δευτερόλεπτα παραπάνω delay πριν κάνει launch το παιχνίδι και οχι αμέσως γιατί μπορεί κάτι να μην προλάβει να φορτώσει στα Windows.

Αλλά στα Windows 98 δεν υπάρχει αυτή η επιλογή, παραείναι λιτό το Task Scheduler εκεί. Δεν ξέρω αν υπάρχει κάποιος καλύτερος/ασφαλέστερος τρόπος να κάνεις αυτόματα launch ένα game μετά το φόρτωμα των Windows.
 
Φτιαξε ενα batch file με τα παρακατω:

@echo off
start /w notepad.exe
C:\WINDOWS\RUNDLL32.EXE user.exe,ExitWindows

ονομασε το test.bat και σωσε το μεσα στο c:\windows

Ανοιξε το win.ini και εκει που λεει run=

προσθεσε test.bat

Κανε επανεκκίνηση.

Πλεον μολις μπεις στα windows θα φορτωσει το notepad. Μολις το κλεισεις θα κανει shutdown o υπολογιστης.

Για τα παιχνιδια σου, αλλαξε οπου notepad.exe το εκτελεσιμο του παιχνιδιου (προσεχοντας παντα το path) και εισαι ετοιμος.

Αν δεν θες να φορτωνεις τον explorer και να τρεχει κατευθειαν το παιχνιδι, αντι για win.ini ανοιξε το system.ini και εκει που λεει

shell=explorer.exe

αλλαξε το να λεει

shell=test.bat
 
Φτιαξε ενα batch file με τα παρακατω:

@echo off
start /w notepad.exe
C:\WINDOWS\RUNDLL32.EXE user.exe,ExitWindows

ονομασε το test.bat και σωσε το μεσα στο c:\windows

Ανοιξε το win.ini και εκει που λεει run=

προσθεσε test.bat

Κανε επανεκκίνηση.

Πλεον μολις μπεις στα windows θα φορτωσει το notepad. Μολις το κλεισεις θα κανει shutdown o υπολογιστης.

Για τα παιχνιδια σου, αλλαξε οπου notepad.exe το εκτελεσιμο του παιχνιδιου (προσεχοντας παντα το path) και εισαι ετοιμος.

Αν δεν θες να φορτωνεις τον explorer και να τρεχει κατευθειαν το παιχνιδι, αντι για win.ini ανοιξε το system.ini και εκει που λεει

shell=explorer.exe

αλλαξε το να λεει

shell=test.bat
Φαίνεται να ειναι καλή λύση αλλά δυστυχώς δεν λειτουργεί όσο καλά όσο το Task Scheduler στην περίπτωσή μου.

Οταν προσπαθώ να τρέξω το GLQuake με αυτόν τον τρόπο, μου βγάζει error "W_LoadWadFile: couldn't load gfx.wad"

Αυτό το error μου το έβγαζε και όταν προσπαθούσα να τρέξω το ίδιο παιχνίδι με αυτόματο startup μέσω του Windows Autoexec.

Με το Task Scheduler όμως τρέχει και το δοκίμασα πολλές φορές και δεν μου έβγαλε καποιο error.

Μήπως αν κάπου έμπαινε και ένα delay πριν ανοίξει το παιχνιδι? Το shutdown λειτουργεί πάντως.
 
Πίσω
Μπλουζα