16Aug
Si vous avez déjà essayé de faire fonctionner un jeu d'ordinateur vintage sur un système moderne, vous avez probablement été choqué par rapide le jeu a couru. Pourquoi les vieux jeux sont-ils hors de contrôle sur le matériel moderne?
Plus tôt aujourd'hui, nous vous avons montré comment exécuter des logiciels plus anciens sur des ordinateurs modernes;La séance de questions et réponses d'aujourd'hui est un bon complément qui permet de comprendre pourquoi certains anciens logiciels( en particulier les jeux) ne semblent jamais fonctionner correctement lorsque vous essayez de les exécuter sur du matériel moderne.
Question d'aujourd'hui &La session de réponse nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web Q & A.
La question
SuperUser lecteur TreyK veut savoir pourquoi les vieux jeux informatiques folle rapidement sur le nouveau matériel:
J'ai quelques anciens programmes J'ai sorti un ordinateur Windows des années 90 et essayé de les exécuter sur un ordinateur relativement moderne. Fait intéressant, ils ont fonctionné à une vitesse fulgurante - non, pas la vitesse de 60 images par seconde de rapide, plutôt le type de mon-Dieu-le-caractère-est-marche-à-la-vitesse-de-sonvite. J'appuyais sur une touche fléchée et le sprite du personnage se déplaçait sur l'écran beaucoup plus vite que d'habitude. La progression du temps dans le jeu se passait beaucoup plus vite qu'elle ne le devrait. Il y a même des programmes conçus pour ralentir votre CPU afin que ces jeux soient réellement jouables.
J'ai entendu dire que cela est lié au jeu en fonction des cycles du processeur, ou quelque chose comme ça. Mes questions sont les suivantes:
- Pourquoi les anciens jeux font-ils cela, et comment s'en sont-ils tirés?
- Comment les nouveaux jeux et font-ils cela et fonctionnent indépendamment de la fréquence du CPU?
Alors, quelle est l'histoire? Pourquoi exactement les sprites dans les vieux jeux flambent à travers l'écran si vite que le jeu devient injouable?
La réponse
SuperUser contributeur JourneymanGeek décompose:
Je crois qu'ils ont supposé que l'horloge du système fonctionnerait à un taux spécifique, et lié dans leurs minuteries internes à cette fréquence d'horloge. La plupart de ces jeux fonctionnaient sous DOS, et étaient en mode réel( avec un accès matériel complet et direct) et supposaient que vous utilisiez un 4.77 MHz pour PC et tout autre processeur standard que ce modèle utilisait pour d'autres systèmes comme l'Amiga.
Ils ont également pris des raccourcis intelligents basés sur ces hypothèses, y compris l'enregistrement d'un petit peu de ressources en n'écrivant pas de boucles de synchronisation internes dans le programme. Ils ont également pris autant de puissance de processeur qu'ils pouvaient - ce qui était une idée décente à l'époque des chips lents, souvent passivement refroidis!
Initialement, un moyen de contourner la vitesse du processeur était le bon vieux bouton Turbo( qui a ralenti votre système).Les applications modernes sont en mode protégé et le système d'exploitation a tendance à gérer les ressources - ne permettrait pas à une application DOS( qui s'exécute dans NTVDM sur un système 32 bits de toute façon) d'utiliser tout le processeur dans de nombreux cas. En bref, les systèmes d'exploitation sont devenus plus intelligents, tout comme les API.
Fortement basé sur ce guide sur Oldskool PC où la logique et la mémoire m'ont échoué - c'est une excellente lecture, et va probablement plus en profondeur dans le "pourquoi".
Stuff comme CPUkiller utilise autant de ressources que possible pour "ralentir" votre système, ce qui est inefficace. Vous feriez mieux d'utiliser DOSBox pour gérer la vitesse d'horloge de votre application.
Si vous êtes curieux de savoir comment le code a été implémenté dans les premiers jeux informatiques( et pourquoi ils s'adaptent si mal aux systèmes modernes sans être mis en sandbox dans une sorte de programme d'émulation), nous vous suggérons de vérifier cette longue mais intéressantede processus dans une autre réponse SuperUser.
Avoir quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.