書籍概要

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章 ファミコンから現在へ

現代プログラミングの功罪

  • オブジェクト指向プログラミングの功罪
  • ガベージコレクションの功罪

ゲームの既成概念を打ち砕く

  • 軽量安価なファミコン
  • 現在の複雑なプログラミング事情
  • ミドルウェアという諸刃の剣
  • ファミコンを超えて
  • おわりに
  • 参考文献

サポート

現在サポート情報はありません。

商品一覧