ヴィンテージのコンピュータゲームを最新のシステムで稼働させようとしたことがあるなら、その方法にショックを受けたことがあるでしょう。 速い ゲームが実行されました。古いゲームが最新のハードウェアで制御不能になるのはなぜですか?
今日の初めに 最新のコンピューターで古いソフトウェアを実行する方法を示しました ;今日の質疑応答セッションは、一部の古いソフトウェア(特にゲーム)を最新のハードウェアで実行しようとすると正しく機能しないように見える理由を掘り下げた素晴らしい賛辞です。
今日の質疑応答セッションは、コミュニティ主導のQ&AWebサイトのグループであるStackExchangeの下位区分であるSuperUserの好意で行われます。
質問
スーパーユーザーリーダーのTreyKは、古いコンピューターゲームが新しいハードウェアで高速で実行される理由を知りたがっています。
90年代初頭のWindowsコンピューターから取り出して、比較的新しいコンピューターで実行しようとした古いプログラムがいくつかあります。興味深いことに、彼らは猛烈な速さで走りました–いいえ、毎秒60フレームの速さではなく、音速で歩くのです。速い。矢印キーを押すと、キャラクターのスプライトが通常よりもはるかに速く画面上を移動します。ゲームの時間の進行は、本来よりもはるかに速く起こっていました。に作られたプログラムもあります CPUの速度を落とす これらのゲームが実際にプレイできるようにします。
これはCPUサイクルなどによるゲームに関係していると聞きました。私の質問は次のとおりです。
- 古いゲームがこれを行うのはなぜですか、そしてどのようにしてそれを回避したのですか?
- 新しいゲームはどうですか ない これを実行し、CPU周波数とは無関係に実行しますか?
それで、話は何ですか?古いゲームのスプライトが画面全体で炎上し、ゲームがプレイできなくなるのはなぜですか?
答え
スーパーユーザーの寄稿者であるJourneymanGeekは、次のように分析しています。
彼らは、システムクロックが特定のレートで実行されると想定し、内部タイマーをそのクロックレートに関連付けていると思います。これらのゲームのほとんどはおそらくDOSで実行され、 リアルモード (完全な直接ハードウェアアクセスを使用)および実行していると想定 ちゃんと覚えたら PC用の4.77MHzシステム、およびそのモデルがAmigaなどの他のシステム用に実行された標準プロセッサ。
また、プログラム内に内部タイミングループを記述しないことでリソースを少し節約するなど、これらの仮定に基づいて巧妙なショートカットを使用しました。また、可能な限り多くのプロセッサパワーを消費しました。これは、低速で、しばしばパッシブに冷却されるチップの時代にはまともなアイデアでした。
当初、異なるプロセッサ速度を回避する1つの方法は、古き良き時代でした ターボボタン (これによりシステムの速度が低下しました)。最新のアプリケーションはプロテクトモードであり、OSはリソースを管理する傾向がありますが、そうではありません。 許可する 多くの場合、すべてのプロセッサを使い果たすDOSアプリケーション(とにかく32ビットシステムのNTVDMで実行されています)。つまり、APIと同様に、OSはよりスマートになっています。
大きく基づいている OldskoolPCのこのガイド ロジックとメモリが私を失敗させた場所–それは素晴らしい読み物であり、おそらく「理由」についてより深く掘り下げます。
のようなもの CPUキラー システムを「遅く」するためにできるだけ多くのリソースを使い果たしますが、これは非効率的です。使用したほうがいいでしょう DOSBox アプリケーションが認識するクロック速度を管理します。
初期のコンピュータゲームで実際のコードがどのように実装されたか(および、ある種のエミュレーションプログラムでサンドボックス化されないまま、最新のシステムにあまり適応しない理由)について知りたい場合は、チェックアウトすることをお勧めします。 この長くて興味深いプロセスの内訳 別のスーパーユーザーの回答で。
説明に追加するものがありますか?コメントで音を立ててください。他の技術に精通したStackExchangeユーザーからの回答をもっと読みたいですか? ここで完全なディスカッションスレッドをチェックしてください 。