16Aug

Waarom rennen oude games veel te snel op moderne computers?

click fraud protection

Als je ooit hebt geprobeerd een vintage computergame op een modern systeem te laten draaien, was je waarschijnlijk geschokt over hoe snel het spel draaide. Waarom zijn oude games niet meer onder controle op moderne hardware?

Eerder vandaag hebben we u laten zien hoe u oudere software kunt uitvoeren op moderne computers;de vraag- en antwoordsessie van vandaag is een leuk compliment dat ingaat op de reden waarom sommige oudere software( met name games) nooit goed lijkt te werken als je ze op moderne hardware probeert uit te voeren.

De vraag van vandaag &Antwoord sessie komt naar ons met dank aan SuperUser-een onderverdeling van Stack Exchange, een community-gestuurde groepering van Q & A-websites.

De vraag

SuperUser-lezer TreyK wil weten waarom oude computergames snel gek worden op nieuwe hardware:

Ik heb een paar oude programma's die ik in de beginjaren van de jaren '90 heb uitgetest op een Windows-computer en probeerde ze uit te voeren op een relatief moderne computer. Interessant genoeg renden ze met een razendsnelle snelheid - nee, niet de 60 frames per seconde soort snel, eerder het oh-mijn-god-het-karakter-is-loop-bij-de-snelheid-van-geluid soortsnel. Ik zou op een pijltoets drukken en de sprite van het personage zou veel sneller dan normaal over het scherm rippen. Tijdvoortgang in het spel gebeurde veel sneller dan zou moeten. Er zijn zelfs programma's gemaakt om je CPU te vertragen, zodat deze games echt speelbaar zijn.

instagram viewer

Ik heb gehoord dat dit gerelateerd is aan het spel, afhankelijk van CPU-cycli, of iets dergelijks. Mijn vragen zijn:

  • Waarom doen oudere games dit, en hoe zijn ze ermee weggekomen?
  • Hoe doen nieuwere games en dit onafhankelijk van de CPU-frequentie?

Dus wat is het verhaal? Waarom schieten de sprites in oude games zo snel over het scherm dat het spel onspeelbaar wordt?

Het Antwoord

SuperUser-bijdrager JourneymanGeek verdeelt het:

Ik geloof dat ze veronderstelden dat de systeemklok zou werken met een specifiek tempo, en hun interne timers vastmaakten aan die kloksnelheid. De meeste van deze spellen draaiden waarschijnlijk op DOS, en waren echte modus( met volledige, directe hardwaretoegang) en gingen ervan uit dat je een iirc 4,77 MHz-systeem voor pc's gebruikte en welke standaardprocessor dat model ook draaide voor andere systemen zoals de Amiga.

Ze namen ook slimme snelkoppelingen op basis van die veronderstellingen, waaronder het opslaan van een klein beetje bronnen door geen interne timinglussen in het programma te schrijven. Ze namen ook zoveel processorkracht op als ze konden - wat een goed idee was in de dagen van trage, vaak passief gekoelde chips!

Aanvankelijk was een manier om verschillende processorsnelheden te omzeilen de goede oude Turbo-knop( die je systeem vertraagde).Moderne applicaties bevinden zich in de beveiligde modus en het besturingssysteem heeft de neiging om bronnen te beheren - ze zouden niet toestaan ​​om een ​​DOS-toepassing( die toch in NTVDM draait op een 32-bits systeem) in veel gevallen de gehele processor te gebruiken. Kortom, besturingssystemen zijn slimmer geworden, net als API's.

Zwaar gebaseerd op deze gids op de pc van Oldskool, waar logica en geheugen mij faalden - het is een geweldig boek en gaat waarschijnlijk dieper in op het "waarom".

Dingen zoals CPUkiller gebruiken zoveel mogelijk bronnen om uw systeem te "vertragen", wat inefficiënt is. Je zou beter af zijn met DOSBox om de kloksnelheid te beheren die je applicatie ziet.

Als je nieuwsgierig bent naar hoe de code in vroege computerspellen werd geïmplementeerd( en waarom ze zich zo slecht aanpassen aan moderne systemen zonder te worden gezandstraald in een soort emulatieprogramma), raden we je ook aan deze lange maar interessante analyse uit te proberenvan proces in een ander SuperUser-antwoord.

Heeft u iets toe te voegen aan de uitleg? Geluid uit in de opmerkingen. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk de volledige discussiethread hier.