ファミコンの仕様③ - テクニック編

乗算と除算
つい最近までコンピュータで乗算と除算をするのが大変だったなんて意外。さらにファミコンのCPUには乗算・除算の命令自体がないそうだ。そこで「シフト演算」なるものをつかうらしい。

シフト演算とは、ビットを左右にずらして(シフトして)「2乗」や「-2乗」を行うことみたい。そしてこの演算は高速が強味らしい。くわしくはこちら→シフト演算

シフト演算と加算を組み合わせることで「3倍」や「5倍」といった累乗倍以外の計算もできる。

 1倍:元の値
 2倍:シフト演算による2倍
 3倍:シフト演算による2倍 + 元の値
 4倍:シフト演算による4倍
 5倍:シフト演算による4倍 + 元の値
 6倍:シフト演算による2倍 + シフト演算による4倍
 7倍:シフト演算による8倍 ー 元の値
 8倍:シフト演算による8倍


その他に、あらかじめ出した結果を「テーブル」状に保存する方法もあるらしい。この方法ならば結果を参照するだけなので高速処理が可能。

「ドルアーガの塔」の迷路生成法
「ドルアーガの塔」は迷路情報のデータとして持たず、ステージ数を種とした「乱数」つかって生成しているらしい。毎回おなじ形の迷路になるのは「擬似乱数」だからだそうだ。以下のようなアルゴリズムで迷路を生成している。

①ステージ内に均等にならんだ「柱」を順番に選ぶ。
②0から3の乱数をつかい「壁」をつくる。「0→上」「1→右」「2→下」「3→左」
③もし「外壁」か「他の壁とすでに接触している柱」に接触したら①にもどる。それ以外は④へ。
④0から2の乱数をつかい、「0」なら「壁」をのばした進行方向左へ、「1」なら直進、「2」なら進行方向右へ、さらに壁を伸ばす。

これを「壁」と接触していない「柱」がなくなるまで繰り返す。

自動的に迷路を生成する方法の参考はこちら→自動生成迷路


ファミコンの驚くべき発想力 -限界を突破する技術に学べ- (PCポケットカルチャー)
松浦 健一郎 司 ゆき
技術評論社
売り上げランキング: 256562

0 件のコメント:

コメントを投稿