16Aug
Se hai mai provato a creare un gioco per computer vintage funzionante su un sistema moderno, probabilmente sei rimasto scioccato dal modo in cui ha accelerato il gioco .Perché i vecchi giochi sono fuori controllo su hardware moderno?
Prima di oggi ti abbiamo mostrato come eseguire software obsoleti su computer moderni;la sessione di domande e risposte di oggi è un bel complimento che spiega perché alcuni vecchi software( in particolare i giochi) non sembrano funzionare correttamente quando si tenta di eseguirli su hardware moderno.
Today's Question &La sessione di risposta ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di Q & A basato su community.
La domanda
SuperUser reader TreyK vuole sapere perché i vecchi giochi per computer sono follemente veloci sul nuovo hardware:
Ho alcuni vecchi programmi che ho tirato fuori da un computer Windows dei primi anni '90 e ho cercato di eseguirli su un computer relativamente moderno.È interessante notare che correvano ad una velocità velocissima - no, non i 60 fotogrammi al secondo di tipo veloce, piuttosto il tipo oh-my-god-the-character-è-walking-at-the-speed-of-soundveloce. Avrei premuto un tasto freccia e lo sprite del personaggio sarebbe passato attraverso lo schermo molto più velocemente del normale. La progressione del tempo nel gioco stava accadendo molto più velocemente di quanto avrebbe dovuto. Esistono anche programmi per rallentare la CPU in modo che questi giochi siano effettivamente riproducibili.
Ho sentito dire che questo è legato al gioco a seconda dei cicli della CPU, o qualcosa del genere. Le mie domande sono:
- Perché i vecchi giochi fanno questo, e come hanno fatto a farla franca?
- In che modo i nuovi giochi non fanno questo ed eseguono indipendentemente dalla frequenza della CPU?
Allora, qual è la storia? Perché esattamente gli sprite nei vecchi giochi divampano sullo schermo così velocemente che il gioco diventa ingiocabile?
La risposta
SuperUser contributore JourneymanGeek suddivide la frase in basso:
Credo che presumessero che l'orologio di sistema avrebbe funzionato a una velocità specifica e legato ai loro timer interni a quella frequenza di clock. La maggior parte di questi giochi funzionava probabilmente su DOS, e si trattava di modalità reale( con accesso hardware diretto completo) e si presupponeva che si stesse utilizzando un sistema iirc a 4,77 MHz per PC e qualsiasi processore standard utilizzato da altri sistemi come Amiga.
Hanno anche preso scorciatoie intelligenti basate su queste ipotesi incluso il salvataggio di un piccolo frammento di risorse non scrivendo cicli interni di temporizzazione all'interno del programma. Inoltre hanno assorbito tutta la potenza del processore che potevano - il che era un'idea decente nei giorni di chip lenti, spesso passivamente raffreddati!
Inizialmente un modo per aggirare la diversa velocità del processore era il buon vecchio pulsante Turbo( che rallentava il sistema).Le moderne applicazioni sono in modalità protetta e il sistema operativo tende a gestire le risorse - non consentirebbe un'applicazione DOS( che è comunque in esecuzione in NTVDM su un sistema a 32 bit) per utilizzare tutto il processore in molti casi. In breve, i sistemi operativi sono diventati più intelligenti, così come le API.
Si è basato su questa guida su Oldskool PC, dove la logica e la memoria mi hanno fallito: è una buona lettura, e probabilmente va più in profondità nel "perché".
Stuff come CPUkiller consuma quante più risorse possibile per "rallentare" il tuo sistema, il che è inefficiente. Faresti meglio a usare DOSBox per gestire la velocità di clock che l'applicazione vede.
Se sei curioso di sapere come è stato implementato il codice effettivo nei primi giochi per computer( e perché si adattano così male ai sistemi moderni senza essere sandbox in una sorta di programma di emulazione), ti suggeriamo anche di dare un'occhiata a questa lunga ma interessante ripartizionedi processo in un'altra risposta SuperUser.
Hai qualcosa da aggiungere alla spiegazione? Sound off nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla la discussione completa qui.