
1985年ごろには既に多くの優秀なゲームが発売されていましたが、
たった2年くらいで当時のプログラマーは、ファミコンのプログラムを
マスターしていたのですか?
もちろんC言語のように複雑ではないでしょうが、
それにしてもドラクエのウインドウシステムをはじめとして
ああいった柔軟なプログラムを開発してしまうというのは
一般人の目からすると驚異的です。
それとも、今現在のプログラマの方からすれば、
当時のファミコンプログラムは全般的に容易だったのでしょうか?
蛇足ですが、FF3のナーシァ氏のプログラムは難解で
誰もわからなかった、という有名な伝説がありますが、
これは今で言うところの変数の使い方などにクセがあった、
というような解釈でいいのでしょうか?
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
ファミコンのCPUはMOS6502という種類のものなのですが、これはMC6800やMC6809とは近縁にあたるCPUで、アーキテクチュアが良く似ています。
以下のようなものです。◎レジスタ構成
プログラムカウンタ:PC(16ビット)
アキュームレータ:AccA(8ビット)
インデックスレジスタ:X(8ビット)
インデックスレジスタ:Y(8ビット)
スタックポインタ:SP(8ビット)
コンディションコードレジスタ:CCR(8ビット)
6502はアドレスが16ビットで64KBまでアクセス可能なのは通常の8ビットCPUと同じなのですが、アキュームレータ(演算レジスタ)が1つしかなく、インデックスレジスタは2つありますが、使い方が違っていて、オフセット値として計算するもの、間接アドレッシングで使うものなど、様々な用途別の使い方がされるようで、ゼロページ(0000H~00FFH)にポインタを置いて使用するように設計されているようです。
ファミコンに限らず、APPLEIIなどのパソコンも同じですが、6502を使用するコンピュータは8ビットコンピュータの常識とは多少違った設計になっている例が多いようです。
6502のアーキテクチュアはMC6809で使われている多機能なアドレッシング方式を必要最低限のものだけに簡素化して作ったような方式のようで、その為に多少癖の多いプログラムを組まなければならないようです。
ファミコンの開発環境がどうだったかは知る由もありませんが、当時のパソコンやゲーム機の開発環境はどこも同じで、アセンブラ開発か、ハンドアセンブルで直接機械語のプログラムを組むしかなく、現在のCコンパイラによる開発環境とは大きく違っていたと考えて良いでしょう。
レジスタ数が少ないので、ほとんどの演算はゼロページ(256バイト)上でおこなっていたと考えられますし、6502は2段式の原始的なパイプライン処理をおこなっていたので、他のCPUに比べて計算速度が高速であり、ファミコンに使用されたのも、それが原因だろうと思われます。
ファミコンはMSXパソコンでも使われたスプライト機能、PCG、ハードスクロール、カラーパレット、2画面表示などがあり、ドットカラーで表示出来るなど、当時としては先駆的な設計のゲーム機でしたが、Z80や6809のような16ビットレジスタの数が多いCPUを使ってプログラムを作っていた人が6502の少ない8ビットレジスタだけのプログラムを組むのは発想を大きく変えなければならないので大変だっただろうと思います。
8ビットCPUのプログラムをいくつか作った後で、32ビットCPUのプログラムを作ると、命令が多機能なのに非常に無駄が多いプログラムしか作れないような気がしますが、それと類似したところがあります。
メモリーが高価で節約しなければならなかった当時は、6502のような最小限で最高速のCPUが必要だったのでしょう。
なお、ドラクエのウインドウシステムは現在のパソコンで使われている86系CPUでは命令が多機能化し、レジスタ数も多いので、ポインタの移動などが楽であり、比較的容易に作ることが出来ます。
No.5
- 回答日時:
今と違って当時のユーザーは全員プログラマーでした
今のようにOAツールを使った程度ではコンピューターユーザーとは認められませんでした
アッセンブラなんて夢のまた夢、ハンドアッセンブルが当たり前の時代だったのです
今のプログラマーは幸せです
ハード構成を知らなくてもプログラムが組めるのですから
ということで当時のファミコンのプログラマーの多くはソフト開発会社の社長さんになっておられます
難解なプログラムというのは入り組んだプログラムで解析が困難なものを言うのです
ディスアッセンブラやソースゼネレーターを使っても何が何だか分からない
もつれたいとのようなプログラムです
俗にスパゲティープログラムと呼んでいます
No.4
- 回答日時:
昔は「パソコンが使える=プログラムが組める」といっていいぐらいでしたからね。
アセンブリ言語どころか16進コードを直接打ち込んだ経験のある一般ユーザーが珍しくなかったってぐらいですから。そんな中での頂点となりゃそりゃスゴイものです。No.3
- 回答日時:
FCのゲームは、アセンブリ言語でプログラムされています。
CPUは、6502です。AppleIIも同じですね。CPUの元祖みたいなものです。
当時は、速度が要求されるものはほとんどアセンブリ言語です。
プログラマは、スキルの高い人が多かったようにも思います。
FCは、いい加減なプログラムを書くと、ハングアップしたりしました。
でも、一旦要領を得れば難しいところはそれほどないです。
それよりRAMが少ないのでそちらのほうが大変です。
C言語ならMSX-Cというものがありました。
80系です。
なかなか良くできたコンパイラでしたね。
コードを見ると、これを作った人は天才か?と思ったりしたものです。
No.2
- 回答日時:
余談ですが、ゲーム機関連でC言語に移行したのは比較的最近だ、と聞いています。
多分スーパーファミコン辺りまでアセンブリ言語でガリガリとコーディングしてたんだはないか、と。転換期はCDドライヴ付きのゲーム機が標準になった辺りとRISPプロセッサが搭載されはじめた辺りじゃないでしょうか?特にCDドライヴの場合、汎用コンピュータと同じようにOSが搭載されはじめたから、です。
それ以前はゲーム同士で互換性の問題なんて考えなくて済んだ、と言う事もありますし、#1さんが仰るとおり、アセンブリ言語でガリガリコーディングするのが主流だったと聞いています。
No.1
- 回答日時:
ファミコンのプログラムはC言語ではなく、アセンブリ言語という物で作成するのですが、C言語よりももっと複雑(というか面倒です)
変数という概念も無く、「メモリのどこそこに値を書き込め」とか「読み出せ」とかそういう細かい命令を組み合わせてプログラミングします。
ちなみにファミコンのハードウェア自体はわりと単純な作りですのでファミコンで動くプログラムはわりと早くマスターできるのではないかと思います。
ナーシア氏のプログラムが難解だったというのはおそらく限られた性能のファミコンでできるだけ処理速度を稼ぐために、人力で驚異的な最適化を行ったためにプログラムの可読性が低くなったのだと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ビジネス・キャリア) グーグルの障害者訓練プログラム募集あるがどうだろ?6時間勤務で月収22万!! 1 2023/02/17 20:36
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(プログラミング・Web制作) マウスオーバー→ホイール回転でスクロールできない 2 2022/10/31 10:06
- IT・エンジニアリング 不具合の現状認識をしないプログラマって信用できる人? できない人? 8 2023/07/28 09:09
- システム 古いWEBシステム。もう追加プログラムは作れない? それともできる? 6 2022/06/08 13:41
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- au(KDDI) ■AU「 スマホトクするプログラム」について 4 2023/08/09 08:54
- レトロゲーム ゲーム機の世代が知りたいです。(現在のゲームには興味はないが、子どものころ持っていたゲーム機はこれ 3 2023/02/16 15:04
- PHP 掲示板を資料を参考にして開発中ですが、画像がアップされません? 1 2022/11/21 06:44
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
銃を発砲するならともかく、日...
-
教えて下さい ワトソン博士の...
-
XnViewにwebpを「いつも開く」...
-
環境のちがい??
-
不要になった携帯写真機を野生...
-
読み込み中にアクセス違反が発...
-
OS入ってる機器のソフト・アプ...
-
winsock 2.0 のデータ伝送速度は?
-
プログラム
-
C言語のことなんですが
-
未使用の変数を一括検索する方法
-
機械語ダンプリストについて。
-
自動メール送信プログラム
-
ACCESS2000:MDBのUPDATE
-
プログラムなぞのデータをアッ...
-
バッチ、vbs等でのソフトウェア...
-
WinXPでJPEG写真が開けない
-
Unityについてお聞きします。
-
自動クエリとはどういうもので...
-
事務職でもExcelVBAを使用しま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
OS入ってる機器のソフト・アプ...
-
VBAにてメール作成した際、一部...
-
読み込み中にアクセス違反が発...
-
Excelで4096点以上のFFTの方法
-
XnViewにwebpを「いつも開く」...
-
ドロップダウンリストの文字を...
-
PICマイコンのコピー(クローン...
-
「Outlookが他のプログラムによ...
-
Vba UserFormを前面に出す方法...
-
VBAでユーザーフォームが自動的...
-
未使用の変数を一括検索する方法
-
UWSCで指定のフォルダを開きたい。
-
Excelに埋め込んだVBAのプログ...
-
自動クエリとはどういうもので...
-
モジュール、アプリケーション...
-
画像を読み込むのと取り込むの...
-
main関数を先頭に置くデメリット
-
エクセルVBA 検索時に除外を設...
-
WORD印刷できるがEXCE...
おすすめ情報