ファミコンの驚くべき発想力 限界を突破する技術に学べ
ファミコンの驚くべき発想力 -限界を突破する技術に学べ- (PCポケットカルチャー)
技術評論社
著者:松浦健一郎、司ゆき
はじめに
序章 RPGのパーティはなぜ4人?
ファミコンの特性がゲーム内容を決める!?
キャラクタを表示する「スプライト」機能
パーティの制限を超える工夫
そして現在へ・・・
第1章 ファミコンのハードウェア
CPU
8ビットCPU
8ビットを超える値の扱い
クロック周波数
グラフィックス
ゲーム用パソコンから現在へ
スプライト
BG
解像度
色数の削減
パレット
パターン数
メモリ
RAMの容量が少ない理由
RAMの使い方
スタック
ビデオRAMとスクロール
ROMの使い方
サウンド
コントローラ
ROMカートリッジの拡張
いろいろな機能の拡張
ファミコンの性能
当時のパソコンとの比較
現在のゲーム機との比較
第2章 ファミコンに見るプログラム技術の基本
ゲームは60分の1秒を周期にして動く
画面を更新できる時間はわずか
VBlankの検出と割り込み
わずかな垂直帰線期間の活用
ダブルバッファ
ファミコンの時代と比べて
ゲームプログラムの処理
6502アセンブリプログラミング
レジスタ
絞り込まれたアキュムレータ(Aレジスタ)の命令
わずか8ビット幅のインデックスレジスタ(X,Y)
スタックポインタ(S)も8ビット
数少ない16ビット幅のプログラムカウンタ(PC)
メモリアクセス
高速なゼロページ
第3章 数字を自在に操る計算のテクニック
乗算と除算
できるだけ使わない
シフト演算を使う
シフト演算と加算を組み合わせる
テーブルを使う
まじめに乗算する
まじめに除算する
結局、乗算と除算はどうするべきか
実数を使いたいとき
弾を飛ばす角度を限定する
DDAを使う
固定小数点を使う
第4章 限界ギリギリに挑むワザと発想
データを小さくするための工夫
乱数を使ったステージ生成
迷路生成のアルゴリズム
ファミコン版のステージが違うわけ
もしもステージをデータで持つとしたら
パターンの節約
スーパーマリオに見るパターン数の節約
ドラクエに見えるパターン数の節約
スーパーマリオに見るパレット数の節約
60分の1秒未満の表現に挑む
サイクル数を制御する
サイクル数を削減するには
ラスタースクロールの難しさ
セーブデータの保存
バッテリーバックアップ
復活の呪文
保存されない情報
現在のセーブデータ事情
現在の”復活の呪文”事情
第5章 ファミコンから現在へ
現代プログラミングの功罪
オブジェクト指向プログラミングの功罪
ガベージコレクションの功罪
ゲームの既成概念を打ち砕く
軽量安価なファミコン
現在の複雑なプログラミング事情
ミドルウェアという諸刃の剣
ファミコンを超えて
おわりに
参考文献