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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
未使用の変数を一括検索する方法
-
VBAでユーザーフォームが自動的...
-
PICマイコンのコピー(クローン...
-
VBAにてメール作成した際、一部...
-
XnViewにwebpを「いつも開く」...
-
Excelで4096点以上のFFTの方法
-
転職・プログラマー 未経験者...
-
あるプログラムのコマンドライ...
-
https://same.blog/2021/05/28/...
-
読み込み中にアクセス違反が発...
-
UWSCで指定のフォルダを開きたい。
-
ゲーミングPCに入っているAlris...
-
プログラムの実行時間
-
C言語でのaccess violationに...
-
Vba UserFormを前面に出す方法...
-
javaで特定の文字のカウントを...
-
LogonUI.exe システムエラー
-
ラズパイで感圧センサーを動か...
-
excelのexe化について
-
COBOLでBLOCK CONTAINS句につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
ゲーミングPCに入っているAlris...
-
Excelで4096点以上のFFTの方法
-
PICマイコンのコピー(クローン...
-
自動クエリとはどういうもので...
-
VBAにてメール作成した際、一部...
-
読み込み中にアクセス違反が発...
-
「Outlookが他のプログラムによ...
-
Excelに埋め込んだVBAのプログ...
-
VBAでユーザーフォームが自動的...
-
XnViewにwebpを「いつも開く」...
-
画像を読み込むのと取り込むの...
-
ドロップダウンリストの文字を...
-
CASLIIのプログラム(並び替え...
-
binファイルってiphone専用です...
-
モジュール、アプリケーション...
-
excelのexe化について
-
未使用の変数を一括検索する方法
-
クリックするとページ内で説明...
-
Vba UserFormを前面に出す方法...
おすすめ情報