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

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

紙版発売
電子版発売

四六判/200ページ

定価1,518円(本体1,380円+税10%)

ISBN 978-4-7741-4429-0

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

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

こんな方におすすめ

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

この書籍に関連する記事があります!

おもちゃコンピュータの志向
1983年に任天堂株式会社が発売したファミリー・コンピュータ(以下,ファミコン)で遊んでいた世代の方々も,すっかり大人となっていることでしょう。

本書のサンプル

本書の一部ページを,PDFで確認することができます。

目次

  • はじめに

序章 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』『ゲームエフェクト マニアックス』他多数。