PCポケットカルチャー ファミコンの驚くべき発想力 ―限界を突破する技術に学べ―

著者
松浦健一郎まつうらけんいちろう司ゆきつかさゆき 著
定価
1,518円(本体1,380円+税10%)
発売日
2010.10.29 2012.8.22
判型
四六
頁数
200ページ
ISBN
978-4-7741-4429-0 978-4-7741-5280-6

概要

ファミコンはコンピュータ・ゲームの原点として一大文化を築いたと言われますが、今なおレトロゲームとして熱心なファンに親しまれています。ファミコンは現在のコンピュータと比較するととても低スペックのマシンに見えますが、どのようにゲームの表現を可能にしていたのでしょうか。また、当時のプログラマーは限られたリソースを最大限に活用したプログラミングでゲームを開発していたとされますが、実際にはどのようなものだったのでしょうか。ファミコンのハードウェア/ソフトウェアに込められた数々の技術と発想に迫ります。

こんな方にオススメ

  • ゲームプログラミングの初心者
  • ゲームプログラマを目指している人
  • ゲーム好きの人

目次

  • はじめに

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

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

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

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

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

プロフィール

松浦健一郎まつうらけんいちろう

東京大学工学系研究科電子工学専攻修士課程修了。研究所勤務を経て、現在はフリーのプログラマ&ライター&講師として活動中。プログラミング言語作りとゲーム作りに強い関心を持つ。

著書(いずれも共著):『弾幕 最強のシューティングゲームを作る!』『シューティングゲーム アルゴリズム マニアックス』『アクションゲーム アルゴリズム マニアックス』『パズルゲーム アルゴリズム マニアックス』『シューティングゲーム プログラミング』『3D格闘ゲーム プログラミング』『ゲームアルゴリズムレシピ for JavaScript』『ゲームエフェクト マニアックス』他多数。

司ゆきつかさゆき

東京大学理学系研究科情報科学専攻修士課程修了。学部生時代からライターおよびプログラマの仕事を続けている。書籍の執筆や翻訳のほか、ソフトウェアの受注設計開発も行う。

著書(いずれも共著):『弾幕 最強のシューティングゲームを作る!』『シューティングゲーム アルゴリズム マニアックス』『アクションゲーム アルゴリズム マニアックス』『パズルゲーム アルゴリズム マニアックス』『シューティングゲーム プログラミング』『3D格闘ゲーム プログラミング』『ゲームアルゴリズムレシピ for JavaScript』『ゲームエフェクト マニアックス』他多数。