スーパー マリオ ブラザーズ -1 ワールドの不具合を youtube で見たところ、これらのゲームの背後にあるコードについて本当に疑問に思い始めました。どの言語が使用されましたか? ビデオ ゲーム コンソールの OS はどうですか? このテーマに関するリソースが掲載されている Web サイトはありますか? (私は 90 年代のビデオ ゲーマーなので、これらのゲームの背後にあるプログラミングに特に興味がありますが、必要に応じて、これを wiki にして、ビデオ ゲーム プログラミング全般に関するリソースへのリンクを含めてください)
5 に答える
NES 用のエミュレーターにある程度取り組んできたので (いくつかのオペコードをデコードしていますが、他のハードウェアはエミュレートされていません)、いくつかの答えを共有できるかもしれません。
ほとんどのゲームでは、アセンブラが使用されました。最適化コンパイラは、CPU で使用できる場合でも、20 ~ 30 年前は現在ほど優れていませんでした。パフォーマンスを得るには、アセンブラーで記述する必要がありました (これは PC でも当てはまりました。Doom の一部は ASM にあります)。NES の CPU は 2MHz 未満で動作していたため、なおさらです。また、メモリは現在よりも高価でした。元のマリオは約 40k のメモリに格納されていました。そのうちの 16k は実際のコードで、残りはグラフィックスとサウンドのリソースでした。
32 ビット コンソールの時代まで、コンソールにオペレーティング システムやビルトイン ユーティリティを搭載することは一般的ではありませんでした (セガ CD は、16 ビット時代に実際の BIOS を搭載した数少ない CD であり、小さなプログラムが焼き付けられていました)。電源投入時に任天堂のロゴが下にスクロールするのを担当していたゲームボーイのプロセッサに)。主な理由として、サイズの制約について上記を参照してください。カートリッジを挿入すると、車内のROMチップがCPUのアドレスバスに直接接続されました。電源を入れると、CPU は固定アドレスから読み取り、プログラムが開始された実際のアドレスを取得し、その場所にジャンプして実行を開始しました。
リソースに関しては、NES Dev Wikiに NES ハードウェアに関するリソースとプログラミングのリファレンスがあります。Zophar's Domain には、かなりの数のコンソール用の技術文書とパブリック ドメインの ROM もあります (このサイトで ZD にリンクする必要があるかどうかはわかりません。Google で検索してください)。
古いコンソールのほとんどには、ある種の BIOS ROM がありました。
これらのソース コードの一部はオンラインにあります。
7800 BIOS へのほとんどコメントされた逆アセンブリを読むことができます: http://atarihq.com/danb/files/7800bios.asm
Atari 5200 の BIOS ソースは、システムを初期化してスプラッシュ スクリーンを表示するだけでなく、より興味深いものです: http://atarihq.com/danb/files/5200BIOS.txt
Colecovision には 8K (!) BIOS ROM もありました。ソースはここにあります:http://xi6.com/code/coleco/coleco29.asm
Odyssey II BIOS ソースはこちら: http://atarihq.com/danb/files/o2romsrc.txt
Intellivisionには「exec」と呼ばれるOSがあり、オンラインで逆アセンブリを見つけることができませんでしたが、それに関する多くの情報を見つけました:http://www.intellivisiongames.com/bluesky/hardware/intelli_tech.html#exec and http ://www.beeslife.com/faq.htm#_Toc140592020 - スプライトを動かし、コントローラーを読み取り、平方根を計算するルーチンがありました!
そのビデオのグリッチのほとんどはタイルベースのグリッチであり、レベルを構成するタイルマップの衝突検出にバグがあります。すべてのレベルは正方形のタイルで構成されています。あなたがマリオに気づいたら、彼がいるべきではないタイルの間に常にいます。
これについては調べていませんが、スーパー マリオ ブラザーズと関連する 90 年代のゲームは、カートリッジの代わりに .nes ファイルとして入手でき、オープンソース エミュレーターも入手できます。
私の知る限り、これらは通常C++で書かれています。これらの nes ファイルとエミュレーターの合法性についてはわかりませんが、インターネットで入手できます。あなたは正しい文字列で検索しています!