この日記はGNSで生成しています。 |
_ ファミコンのプログラミング。ファミコンどころか、その次の世代のPCエンジン/スーファミまではほぼアセンブラのみ。メガドライブの後期に独力でC環境を作ったところがちらほらあった、程度。Cが標準になったのはプレステ/サターンから・・・いや、3DOのほうが先か(笑)。
_ ただ、アセンブラといってもワークエリアやスタックを変数的に管理できたり、関数に似た記述が使えるものはそこそこあった*1ので、さほど困ることもない。というか、当時のゲームプログラムコードなんてアセンブラの大規模レベルでもせいぜい数百行×数〜数十本くらいしかない。プログラムは大抵どんな言語でも「行数が同じなら複雑性はほぼ同じ」になるので、その程度のCプログラムと同程度の複雑性しかないことになる。
*1: マクロアセンブラのプリプロセッサとして使うものが多かった。8bitPCのころはBASEみたいな凝った文法を持ったアセンブラや、WICSみたいな簡易コンパイラ言語が流行ったが、そういうのがゲーム開発に使われたという話は聞いたことがない。
_ デバッグは、コンシューマ機のレベルだとICEを使っていた。シンボルデバッグは当然ハードウェアレベルのメモリウォッチやらブレークやら、果ては全レジスタとメモリ内容のバックトレースまで可能。割り込みまでクロック単位で全部追いかけ可能・・・ただし機械は数十万円。ソフトウェアデバッガが使えるようになったのはこれまたプレステ/サターンから。ああでもメガドライブのMC68000を利用したデバッガはあったかな。ただ、デバッグするのにICEなんか使ってると、いやでもハードレベルの動作の仕組みは覚えるわけで。
_ PCゲームになるとちょっとばかり事情は変わる。コンシューマ機よりハードは高度ゆえ、それより数年早く言語の高度化やソフトウェアデバッガの高機能化が進んだ・・・というか、そういう方面からコンシューマ機開発へ流れた人が、コンシューマにもそういう環境を築いていったんだけど。
_ このへんの状況って、今でもたとえばPC-9801やX68kのエミュレータ環境を整えればすぐにでも状況を再現することができる。X68kなんてそれこそ誰でも無料でアセンブラからCコンパイラからソースレベルデバッガまで揃えられて、OSを解さずほんのアセンブラ数語ですぐコンシューマどころかアーケードレベルのグラフィック&サウンドを司るハードウェアが触れたわけで。X68kの市場規模なんてPC-98と比べれば数分の一しかなかったわけだが、いまのゲーム業界で30代でそこそこの地位にいる人には、そんな市場規模の差が嘘のようにたくさんのX68k経験者がいるはず*2。
*2:
スーファミやメガドライブではX68kを開発機材として使っているところも少なくなかったので、そういう縁もある。PCエンジンも少なからずあったらしいが、当方はPCエンジンの開発に関わったことがないので不明・・・しゃあるさんあたりなら知っていそうだ・・・そしてキタ(笑)。
メールはこちらへ...[後藤浩昭 / Hiroaki GOTO / GORRY / gorry@hauN.org]