どうして古いゲームは現代のコンピュータではスピードが速すぎるのですか?
現代のシステムでビンテージのコンピュータゲームを立ち上げて実行しようとしたことがあるなら、おそらくその方法に驚いたことでしょう。 速い ゲームは走りました。なぜ現代のハードウェアで古いゲームが暴走するのか?
今日の初めに、現代のコンピュータで古いソフトウェアを実行する方法を紹介しました。今日の質疑応答セッションは、いくつかの古いソフトウェア(特にゲーム)が現代のハードウェアでそれらを実行しようとしたときに正しく動作しないように見える理由を詳しく説明しています.
本日の質疑応答セッションは、コミュニティ主導のQ&A Webサイトのグループである、Stack Exchangeの下位区分であるSuperUserの好意により提供されます。.
質問
SuperUserの読者TreyKは、なぜ古いコンピュータゲームが新しいハードウェア上でクレイジーに動作するのか知りたいのです。
私はいくつかの古いプログラムを持っています私は90年代初頭のWindowsコンピュータをやってのけ、比較的現代のコンピュータでそれらを実行しようとしました。おもしろいことに、彼らは驚くほど速いスピードで走りました。速いです。私は矢印キーを押すと、キャラクターのスプライトは通常よりもはるかに速く画面上を移動します。ゲーム内での時間の経過は、予想以上に早く進んでいました。これらのゲームが実際に遊ぶことができるようにあなたのCPUを遅くするために作られたプログラムさえあります.
これはCPUサイクル、あるいはそのようなものによってゲームに関係していると聞いたことがあります。私の質問は:
- なぜ古いゲームがこれをやるのか、そしてどうやってそれを回避したのか?
- どのように新しいゲームをするのですか ではない これを行い、CPU周波数とは無関係に実行します?
だから物語は何ですか?なぜ、古いゲームのスプライトが画面をすばやく爆発させ、ゲームがプレイ不可能になるのか?
答え
SuperUserの寄稿者JourneymanGeekはそれを細分化します。
私は彼らがシステムクロックが特定のレートで動くと仮定し、そして彼らの内部タイマーをそのクロックレートに結び付けたと思います。これらのゲームのほとんどはおそらくDOS上で動作し、リアルモード(完全な直接ハードウェアアクセスあり)であり、あなたが実行していると仮定しました。 いや PC用の4.77 MHzシステム、およびそのモデルがAmigaなどの他のシステム用に実行している標準プロセッサ.
彼らはまた、プログラム内に内部タイミングループを記述しないことによってわずかなリソースを節約することを含む、それらの仮定に基づいて賢い近道をしました。彼らはまた、彼らができる限り多くのプロセッサパワーを消費しました - それは遅くて、しばしば受動的に冷却されたチップの時代にはまともな考えでした!
当初、プロセッサ速度の違いを回避する1つの方法は、古き良きTurboボタン(システムの速度を落とす)でした。現代のアプリケーションは保護モードになっており、OSはリソースを管理する傾向がありますが、そうではありません。 許可する DOSアプリケーション(32ビットシステムのNTVDMで動作している)は、多くの場合、すべてのプロセッサを使い果たします。つまり、OSも賢くなり、APIもそうなっています.
ロジックとメモリが私を失敗させたOldskool PCにこのガイドを大いに基づいて - それは素晴らしい読みであり、そしておそらく「なぜ」にもっと深く入ります.
CPUkillerのようなものはあなたのシステムを "遅くする"ためにできるだけ多くのリソースを使い果たしますが、これは非効率的です。あなたはあなたのアプリケーションが見るクロック速度を管理するためにDOSBoxを使うほうが良いでしょう。.
実際のコードが初期のコンピュータゲームでどのように実装されたか(そして、ある種のエミュレーションプログラムでサンドボックスに入れられずに現代のシステムにうまく適応しなかった理由)に興味がある場合は、別のSuperUser回答の中のプロセス.
説明に追加するものがありますか?コメントの中で消してください。他の技術に精通したStack Exchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッドをチェックしてください。.