ファミコンの驚くべき発想力 限界を突破する技術に学べ


ファミコンの驚くべき発想力 -限界を突破する技術に学べ- (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章 ファミコンから現在へ
現代プログラミングの功罪
 オブジェクト指向プログラミングの功罪
 ガベージコレクションの功罪
ゲームの既成概念を打ち砕く
 軽量安価なファミコン
 現在の複雑なプログラミング事情
 ミドルウェアという諸刃の剣
 ファミコンを超えて

おわりに
参考文献

書籍目次

Posted by shi-n