古籏一浩氏の昔話【後篇】 ~ MZ-700版スペースハリアーの開発話

ソフトバンクの雑誌Oh!Xの1988年10月号に掲載された古籏一浩氏作のMZ-700版スペースハリアー(http://www.openspc2.org/mz700/SH.html)に関するツイートをまとめました。 ◆関連 ・古籏一浩氏の昔話【前篇】 ~ MZ-700版タイニーゼビウスの開発話 http://togetter.com/li/737185
34
古籏一浩 @openspc

古くはMZ-700な人。途中はDTPな人。その後JavaScriptな人。次は映像とか。その後は小売業。

openspc2.org


古籏一浩 @openspc

昔話:以前の昔話はtiny XEVIOUS for 700でしたので、次にmz-700版のスペースハリアーの開発話を書いていこうと思います。一応以下のページには開発話があります。 bit.ly/tW0aIr

2011-11-03 00:07:44
古籏一浩 @openspc

昔話:スペースハリアーと書くのは長いので以後スペハリと省略します。スペハリはSEGAが1985年に発売したアーケードゲームです。ハングオンに続く体感ゲーム第二弾として登場しました。なお、mz-700版は移植後に正式にSEGAから許諾を得てOh!XS誌上で発表されました。

2011-11-03 00:13:29
古籏一浩 @openspc

昔話:スペハリに関しては当時のゲーム雑誌BEEPに開発者のインタビューと写真が載ってました。それを読んでからゲーセンに行ったわけですが結局挫折。という事でスペハリではなくファンタジーゾーンを遊んでいました。

2011-11-03 00:21:53
古籏一浩 @openspc

昔話:という事でスペハリよりもファンタジーゾーンという事で、そっちをmz-700でどうにかこうにか。でSBFZができあがったのですが、当時は技術力がなく理想とは違うものができちゃったというところです。

2011-11-03 00:26:30
古籏一浩 @openspc

昔話:ゼビウスの時はキャラクタ画面とカラー画面の両方を書き換えていました。でも、文字を全部チェッカーにすればカラー画面の書き換えだけですみます。つまり単純に2倍速になるわけです。

2011-11-03 00:33:03
古籏一浩 @openspc

昔話:実機(mz-700)のゼビウスをプレイするとわかりますが、自機(ソルバルウ)が移動したり敵が動くと微妙に色ズレが発生します。これはキャラクタのVRAMへの転送とカラーVRAMへの転送に手間取っているためです。このため垂直ブランキング期間内に転送できずちらつきます。

2011-11-03 00:35:40

オリジナルゲーム「Space Bluster SG」の開発

http://www.openspc2.org/mz700/SBSG.html

古籏一浩 @openspc

昔話:Space Bluster SG(以後SBSG)の背景はチェッカーのみで素。文字色と背景色を組み合わせることで海や山、砂漠やピラミッドなどを表現しています。でも、まあ背景以外は通常の文字なので手抜き背景に見えてしまうというのもありました。

2011-11-03 01:02:39
古籏一浩 @openspc

昔話:SBSGの時には背景をチェッカーで描くだけでなく長い背景を少ないメモリでどう実現するかというのもありました。mz-700はメモリが64KB(実際には、もう少し使える)なのでSBFZのように細かい背景にしてしまうと1画面で1KB。SBSGは1ステージあたり6画面分あります。

2011-11-03 21:29:02
古籏一浩 @openspc

昔話:SBSGは全6ステージですが、最終面はシンプルな背景でスクロールしません。実質5ステージ。1ステージあたり6画面分なので30画面分。文字+背景なら30KB。背景色だけのデータなら15KB。でも、15KBは当時としてはあまりに巨大なサイズで無理がありました。

2011-11-03 21:31:00
古籏一浩 @openspc

昔話:そこで、参考にしたのが1986年に発表されたタイトーのDARIUS。DARIUSは3画面という高大な広さで、なおかつ非常に長いマップ&全26ゾーンを実現していました。そこで、DARIUSをじっくりと観察(プレイ)することにしました。

2011-11-03 21:36:12
古籏一浩 @openspc

昔話:DARIUSをプレイしつつ観察すると1面をクリアするまでに同じマップが3回出てきます。つまり、同じところ(マップ)をぐるぐると回っていることになります。とは言っても、かなりの長さがあることは確かです。

2011-11-03 21:39:06
古籏一浩 @openspc

昔話:さらにDARIUSをプレイすると同じ背景ブロックが繰り返し表示されています。つまり1(文字)×1(文字)で1ブロックではなく8(文字)×8(文字)という感じ。これなら1ブロックを大きくしておくことでマップデータをコンパクトにできます。

2011-11-03 21:42:07
古籏一浩 @openspc

昔話:そこでDARIUSを参考にしてSBSGではマップの1ブロックを8文字×2行にすることにしました。SBSGの画面は40文字×14行なので1画面あたり5×7バイト=35バイトでマップデータを構成できることになります。35バイトなら10面でも350バイトにしかなりません。

2011-11-03 21:45:29
古籏一浩 @openspc

昔話:通常キャラクタを表示したら消す必要があります。文字画面は空文字(00番)を描くことで消します。が、SBSGでは空文字でなくチェッカー文字で消しました。これは背景が文字色と背景色を使って描かれているためです。こうすることでゼビウスの時のようなちらつきを軽減しました。

2011-11-04 23:35:35
古籏一浩 @openspc

昔話:ちらつきはSBFZの時にも発生してました。この時にも仮想画面はVRAMを使用していたためです。SBSGの場合はブロックサイズが大きかったためVRAMでなく内部メモリに仮想画面を用意しました。そこにマップデータを描画し8文字分スクロールしたら新たに描くという具合です。

2011-11-04 23:37:51
古籏一浩 @openspc

昔話:後で考えたら内部にマップ用仮想画面を用意しなくてもマップデータから算出されるブロックデータを、そのまま画面に描けばよかったはずです。最後の方に作ったゲームは、そうなっていますがSBSG当時は技術力不足というかアイデア不足で、こんな作りになってました。

2011-11-04 23:39:16
古籏一浩 @openspc

昔話:スペースハリアーでは敵が撃った弾は必ず自分に向かって飛んできます。XEVIOUSの場合は16方向でしたので(mz-700版は8方向)、これとは違うロジックが必要でした。ただ、どうやれば自分に向かって弾を飛ばせるのかが分かりませんでした。

2011-11-07 00:07:21
古籏一浩 @openspc

昔話:で、ある時ぱっとひらめきました。なんでひらめいたのかは忘れましたが、2点間を結ぶ直線と同じじゃないか!と。分かってしまえば後は実装するだけです。とは言っても当時はZ80ですので浮動小数点演算はもちろん乗算、除算命令すらありませんでした。

2011-11-07 00:09:38
1 ・・ 10 次へ