@hughAktuelle Spiele arbeiten mit speziellen Programmierschnittstellen, bspw. Open GL oder DirectX, auf denen aktuelle Spiele aufsetzen - Spiele aus DOS-Zeiten nicht. Hinzu kommt, das bei einem Rechner ab Windows 2000 (und natürlich auch NT) kein DOS auf dem Rechner liegt, sondern lediglich ein Emulator. Die Ausführung der Befehle dauert dort naturgemäß länger als bei nativer Ausführung.
> ausserdem sind es die originalspielversionen von damals, wenn also
> Geschwindigkeitsbeschränkung , wo sollte die eingebaut sein ?
Die "Geschwindigkeitsbegrenzung" ist im Code der Spiele selber eingebaut. Als ich programmieren gelernt habe, wurde mir auch beigebracht, wie so etwas geht, das es zu der Zeit gerade zu der Problematik kam, das der Geschwindigkeitszuwachs beim Rechner dafür sorgte, das Programme zu schnell liefen. Der Grund dafür lag darin, das viele Dinge mit simplen Schleifen realisiert wurden. Ein simpler Quellcode würde ungefähr so aussehen:
for (x=0; x < 480; x = x +1)
{
lösche Bildinhalt
Zeichne Punkt auf x,320
}
Das würde einen Punkt in Bildschirmmitte (bei VGA-Auflösung) von oben nach unten sausen lassen. Die Schleife läuft 480 mal durch, danach wird sie unterbrochen. Braucht Rechner A zum Durchlauf der Schleife eine Sekunde, so bewegt sich auch der Punkt in einer Sekunde vom Bildchirmrand zu Bildschirmrand. Braucht Rechner B dafür nur eine Zehntelsekunde, bewegt sich der Punkt 10 mal schneller - das ist lästig, wenn es sich um ein Spiel handelt.
Um das Problem zu umgehen, lässt man zuerst eine Schleife durchlaufen, die ermittelt, wie lange der Rechner zum Durchlauf einer Schleife benötigt, in etwa so
merke Dir die Startzeit
for(x=0; x<1000; x=x+1)
{
}
merke Dir die Endzeit
Zeit für Schleifendurchlauf = (Startzeit - Endzeit)/1000
Ausgehend vom eigenen Rechner konnte man jetzt ermitteln, wieviel "Bremse" man in ein Programm einbauen musste, damit es mit der richtigen Geschwindigkeit lief.
Faktor = Zeit für Schleifendurchlauf / Referenzzeit
for (x=0; x < 480; x = x +1)
{
for (y = 0; y < Faktor-1; y = y +1)
lösche Bildinhalt
Zeichne Punkt auf x,320
}
Die y-Schleife sorgt hier für das ausbremsen der Zeichnung. Bei heutigen Prozessoren sind derartige Konstrukte in der Regel sinnfrei, da die Prozessoren mit so lustigen Dingen wie Out-of-Order-Execution arbeiten. Da ist es verdammt schwer vorherzusagen, wie ein bestimmter Prozessortyp arbeitet, und Typen gibt es viele.
Noch Fragen?