Startpagina » hoe » Waarom rennen oude games veel te snel op moderne computers?

    Waarom rennen oude games veel te snel op moderne computers?

    Als je ooit geprobeerd hebt een vintage computerspel op een modern systeem te laten draaien, ben je waarschijnlijk geschokt over hoe snel de game liep. 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 mooi compliment dat ingaat op de reden waarom sommige oudere software (met name games) nooit goed lijkt te werken wanneer je ze op moderne hardware probeert uit te voeren.

    De Question & Answer-sessie van vandaag komt tot ons dankzij SuperUser - een onderdeel van Stack Exchange, een gemeenschapsgedreven groep van Q & A-websites.

    De vraag

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

    Ik heb een paar oude programma's waarmee ik een Windows-computer uit het begin van de jaren 90 heb opgezet en heb geprobeerd 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 soort snel. Ik zou op een pijltoets drukken en de sprite van het personage zou veel sneller dan normaal over het scherm gaan. 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.

    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 nieuwe spellen niet doe dit en loop 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 specifieke snelheid, 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 namen aan dat je een iirc 4,77-MHz-systeem voor pc's en welke standaardprocessor dat model ook gebruikte 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 de 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 - dat zouden ze niet doen toestaan een DOS-applicatie (die toch in NTVDM op een 32-bits systeem draait) om in veel gevallen de gehele processor op 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".

    Spullen 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 van verwerken in een ander SuperUser-antwoord.


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