・スプライト 画面を動き回るキャラクターのこと。 スーパーマリオブラザーズで言うと、ユーザが操作するマリオと、 敵キャラであるクリボーやノコノコ、クッパや、クッパの炎、 パックンフラワーの花の部分など。 スプライトを使うと、プログラムが直感的に理解しやすく、作りやすいので 2Dのゲーム機ではよく使われるらしい。 ファミコンの場合は確か8x8ドット固定、 DSの場合は8x8~64x64くらいのサイズまで、6種類くらいの中から選べる。 ファミコンの場合は沢山のスプライトが横1列に並ぶと 画面がチラつく現象が起きたが(ドラクエ3とか)、 DSの場合はそういうことが起こらないと思う。 スプライトは使える個数が有限なため、何をスプライトとして動かすか ゲームデザイナが選ぶ必要がある。 あまりにも大きすぎる動くキャラ(ボスキャラなど)を考えた場合、 ハードによっては実現不能となる。 ゲームによっては、背景画像の枚数の多さを利用した多重スクロールによって、 擬似的にデカいキャラを動かしているように見せるものもある (例:ゼビウスのボスキャラ、源平討魔伝のデカキャラモードなど)。 ・タイル 背景に並べる画像のこと。 スプライトの画像とタイルの画像はVRAMを共有してることがある。 8x8ドット単位で使用する。 ・マップ タイルを並べる時の2次元配列。 タイル番号1、タイル番号2、… というように、タイルのインデックス(序数)を配列にして並べていく。 タイルとマップの機構により、8x8ドット単位等でキャラクタを描くことができ、 メモリの節約になる。 ・バンク アドレスバスに、どの領域のメモリを配置するかというのを決める機構。 ファミコンの時代は、アドレスバスが16ビット(64KB)しかなかったため、 ドラクエのような大容量ソフト(といっても256KB程度)の全てのアドレスに、 直接アクセスすることができなかった。 そのため、バンク切り替えチップというものをカセット内に入れ、 そのチップに命令を出すことにより、ROM領域を細切れにして使っていた(32KB単位等)。 DSでは、同じような機構をVRAM切り替え時に使用する。 DSの場合はソフト内ではなく本体内にバンク切り替え機構を備えている。 DSのVRAMは細切れの領域が沢山あるため、今画面に表示するバンクはどれかというのを ディスプレイコントロール用レジスタに指定することで切り替える。 ・パレット 絵の具のパレットと同じ。 ゲーム機では主に256色程度のパレットを使い、 パレット番号によりタイルを描くことで、 場面によってタイルの見た目を変えることができる。 (例:ドラクエの昼・夜の表現など) DSでは、背景用やスプライト用など、使い方によってパレットを 1画面にいくつも使うことができる。最大16個のパレットが同時に使用できる。 ・V-Blank(Vertical Blank) 垂直ブランク。 1回の画面更新時、DSのモニタは192ラインを更新することになっているが、 実際は192ラインの更新は1/60秒以内に終わり、 その後空書き込み(更新が終わったあと休憩する)時間が存在する。 その空書き込み時間のことをV-Blankという。 Vは垂直を表し、垂直方向のブランク時間のみを指す。 V-Blank時間の活用方法として、主にビデオメモリ操作をすることになっている。 というのはビデオチップが画素の描画中に、CPUが同じアドレスをアクセスすると、 画面がチラつく原因になったり、ウエイトが入って、画面更新が1/60に間に合わない といったことが起こるからである。 3Dのような、複雑な計算が必要なものはビデオチップが画面描画中に計算し、 最終的に画面に出すイメージだけをV-Blank中に転送することでこれらの問題を 起こらないようにすることができる。 V-Blankと同様に、H-Blankというものもあり、こちらは水平方向のブランク時間を指す。 Windowsのゲームなどで画面がチラつくことがあるが、 あれはV-Blank待ち命令がそもそもWindows自体に無かったり、 モニタの更新時間が1/60ではないものがあったりするためである。 ・OAM(Object Attribute Memory) 直訳するとオブジェクト属性メモリ。 スプライトの情報を入れるメモリ。 スプライトが今どこの座標に存在するか、 左右反転して表示させるか(マリオが横向く時など)、 拡大するか、縮小するか、何番のタイルを使うか、パレットはどれか などをOAMに設定することで指定する。 OAMはV-Blank時にDMAを使うなどして一気に転送するのが望ましい。 プログラム中では、OAMと同じ構造のメモリを構造体としてメインメモリ内に持ち、 V-Blank待ち関数を入れた後で、OAM領域にメインメモリの内容を転送する。 ----
下から選んでください: