超光速移動妖精
HOME | 自作MSXゲーム | ものすごいヤツ | 百戦危うからず | MSXリンク | 正義の願い |
スカッと爽やかスプライト |
スプライトとは? 80年代〜90年代初頭にかけて、ビデオゲームの画面上で動くキャラクターには“スプライト”が多用されました。ファミコンのマリオも、ドラクエの主人公も、動くキャラは大抵スプライトでした。アーケードのゲームも動き回るキャラは殆どがスプライトでした 一時は説明する必要の無いくらい有名な機能でしたが、スプライトとは、アニメの背景にセル画を重ねるように、背景画面の前に別の透明な面 (MSXではプレーンと呼ぶ) を用意して、そこに16×16ピクセル(注1)といった規定の大きさ以内のサイズの画像 (例えばマリオのキャラ) を描き、簡単な指定で表示する内容や位置を変えられる機能で、背景画面には何の影響もありません。背景画面の絵を一々ソフトで書き換えてキャラを動かすより高速なのです(注2)。透過面を複数用意すれば、その数だけキャラを表示できます 80年代にお子様だった人は、このスプライト = パステルカラーの妖精さんに魅了されていたのです 注1.日本ではモニター画面の画素も、画像の1点もドットと言う事が多いが、正 しくは、モニター画面の画素=ドット、表示する画像の1点=ピクセル、で あるらしい(最近では両方共ピクセルと言うか?)。1024×768ドッ トの液晶モニター画面に、全画面表示で256×192の画像を(補間せず そのまま)拡大表示した場合、1ピクセル=4×4=16ドットである。ま あ、このページでもごっちゃに書いてるが 注2.MSXのグラフィック2モードと3モード時では、名称テーブルを2バイト 書き換えれば、背景に描いたキャラを8ドット単位で動かせるので、スプラ イトを動かすより早い場合もあるかも?? 8×8で横に8ドットずつしか 移動しないキャラが1つだけ動くとか(^^;)。あるいは常に画面の大半を書 き換える(たとえばソフトでスクロールさせる)ゲームとか。あくまで8ド ット単位、マシン語でだけど 激突ファミコン対MSX 元々スプライトは、テキサスインストゥルメント社の特許で、スプライト (妖精) というネーミングも同社です。歴代MSXのVDP (今で言うGPU) は、テキサスインストゥルメント社製、及びその和製強化版なので、MSXには当時の家庭用ゲーム機に匹敵するスプライト機能があります MSX2のスプライト機能
・8×8ピクセル256枚、又は16×16ピクセル64枚登録可能
・スプライトのサイズを2倍に拡大して表示可能(ピクセル数は同じ)
・横1ラインにつき1色ずつ、最大16色(内1色は透過色)指定可能
・指定できる色は背景と同じパレットで、512色中の16色
・2枚重ねた場合、重なった部分の2枚の色を論理和した色で表示可能
・横に8枚、1画面に32枚まで同時表示可能 ではここで、MSX2のスプライトをファミコンと比較してみます。といっても、BIOSのソースまで公開出版していたMSX系と違い、どうもファミコンの仕様は謎で、ネット辞書等の表記も (私には) とても分かり辛く、少し調べた程度では理解不能な部分があります。ここでは、ネット辞書+『ファミリーベーシック(注1)』の本 (『絵でわかるファミコンベーシック』『オリジナルゲーム集25』) から私が推測したスプライトの仕様で比較します 謎のファミコンスプライト仕様
・8×8ピクセル、又は8×16ピクセル、64枚登録可能??
・指定できる色は25色中一枚につき4色(内1色は透過色)使用可能??
・スプライトに4種類のパレットが使えるので、同時表示色12色??
・背景面とスプライト面の表示優先度を切り替え可能??
・8×8ピクセル時、横に8枚、1画面に64枚表示可能??
・スプライトの左右を反転して表示可能??
マリオやドラクエの様な16×16ピクセルのキャラを、1画面に最大16個、横4個まで同時表示みたいな感じになるのだと思います。おおよそ、ファミコンとMSX2のスプライト機能は、実用上同程度に使えるというところでしょう ◎ MSX2のスプライトでマリオを描く
実際のところ、ファミコンのマリオは8×8スプライト4枚で作られているようですが、MSX2では通常16×16の2枚で1つのキャラを作るので、今回も頑張って2枚で作ります。MSX2のスプライトは横1ラインにつき1色なので、2枚重ねないとマリオは出来ません。MSX2は横に8つまで、ファミコンは横に4つまで16×16ピクセル大のキャラを並べられますから、機能制限的には同等となります。 MSX2では、横1ラインに3色ある所の3色目は、2つのスプライトのラインの色をOR(論理和)した色で作ります (一色ずつ3枚使ってもいいケド)。 結果的にマリオのパンツの種類が変わってしまいましたが、かえってイイ感じかも?? ファミコンからMSX2にゲームを移植する場合に、よく問題とされる点は、MSX2に無いハードウェア横スクロール機能(注2)ですが、スプライトの3色目をどうするかも、中々頭を使うところだと思います。
注1.初代の使用可能メモリが2キロバイト弱、新型が4キロと超少なく、スタッ クは256バイト固定で、スプライトも用意された16種類のキャラ固定( ただし、マリオやレディにはアニメパターンがあるし、色の組みも4種類)。 キーボードはゲーム使用不可なので“ファミコン版○○ツクール”とも言え ないくらいの使い出しかないかも? CPU6502のマシン語を覚えて超 頑張るとか!? でも、本体と合わせるとMSX2が買える値段だったしぃ 注2.『ウルティマ 恐怖のエクソダス』や『魔界島 HIGEMARU』(Bボ タンで高速スクロールもOK)のように実際に移植された作品を見る限り、 大抵のものはMSX2でも綺麗なスクロールが再現可能だと思われる。ファ ミコン本家『スーパーマリオ・・』は4ピクセルスクロールのようだし?? スプライトの裏技 MSX2ではVDPが画面の横1ラインを描く毎に割り込みを掛けられるので、割り込みを使って画面をいじる技が幾つかあります。コンパイル製のシューティングゲーム『アレスタ2』等では、割り込み (のいずれか) 毎にスプライトを再定義して、点滅などさせずに普通の状態で、通常の制限の2倍の枚数を表示させる技が使用されています。具体的にどうするのかは知りませんけど (オイオイ!) いや、たぶん画面の上半分で32枚、割り込んで定義を変え下半分で別の32枚とやるんですよネ? それを巧みに繋いで同じキャラに見せたり MSX2版『孔雀王』では、タイトル画面の文字と背景の燃えるお堂が同時に表示されますが、元のファミコン版では両方ともスプライトで描いているため、文字が出ると炎が消えてしまいます。このようにファミコンでは、背景や文字を補う形でこっそりスプライトを使う技が多用されています。このスプライトの裏技もそうですが、ファミコンほど各社が総力を挙げて研究し、極限まで使いこなされたゲーム機は無いんじゃないでしょうか?(注1) うらやましい(^^;)
また、ファミコン (と、他の80年代後半ゲーム機) の動くキャラは、ほぼスプライトであるといって良いでしょうが、MSX2では、他のパソコン同様、背景画面に描く擬似的なスプライトも (描画速度は本物のスプライトに劣りますが) 使えるので、巨大なキャラ、アニメパターンが多いキャラは、背景画面にそのまま描かれていることが多いです。そういうところまで使い分けて、丁寧にMSXソフトを作ってくれるソフトハウスは少数派でしたが。 えっ、「スプライトの裏技じゃないジャン」だって(^^;)? 注1.ファミコンのROM生産ラインを持っていたK社やT社は、部品をロットで 注文した方が安い為、またラインや雇用者を遊ばせておかない為、同じライ ンでMSX2ROMを作っていたのだが、ROM容量を同時期生産のファミ コンROMと合わせなければならない為、本来MSX2が持つ性能が発揮で きない場合がしばしばあった(色数や絵や音を多く使えば、当然それだけR OM容量が必要になる)。MSXだけ8メガROMなんてことは(殆ど)し てくれなかった 消えたスプライト MSX1と同じグラフィックチップ = TMS9918系を元に、主にゲーム用に強化されたVDPを搭載したSEGAマークIIIには、発売時点の家庭用ゲーム機中で最強レベルの強力なスプライト機能がありました。 その後もPCエンジン、メガドライブ、スーパーファミコンと、より強力なスプライト機能をもったゲーム機が発売されました。パソコンではX68000という機種が強力なスプライト機能を売りの1つにして (MSX2が10台以上買える値段で) 発売されました。が、それから20年程たったこの10年ばかり、スプライト性能を謳った新型機の話は耳にしません。現行のPCやゲーム機には、特別なハードを使わなくても画面に沢山の大きな2Dキャラを重ねて描いて高速に動かすのに十分なパワーがありますし、Direct3D機能を使ったWindowsのゲームでは2D表示でも3D機能を使う方が描画が速いそうです スプライトは、やはり、突然現れて、いつの間にか消えていくコンピュータの妖精だったのでしょうネ(^^;)
注1.例えば、ハリウッド映画の様に大金をかけて作った、ニューヨークの超高層 ビルに飛行機が突っ込んで大爆発するCG映像よりも、そこら辺の空き地で 変な衣装のおじさん達が集団で「イー」とか「とおっ」とか殴り合っている チープな場面のほうが面白かったりする、でしょ? それと同じ(そうか) このページは、1024×768画面に合わせて作りました。ちゃんと見えなかったらスミマセン |