ラベル $SHARP MZ の投稿を表示しています。 すべての投稿を表示
ラベル $SHARP MZ の投稿を表示しています。 すべての投稿を表示

2001年6月19日火曜日

[ファイル] OCRソフトを使いマシン語をmztデータに変換


[ファイル] OCRソフトを使いマシン語をmztデータに変換
OCRソフトを使用して昔のダンプリストをエミュレーターに使えるファイルにしたい
■ 序
2001年のある寒い夜、工学社刊「MZ-1500活用研究」をフロの中でボケっとしながら「走れスカイライン」というゲームの記事を読んでおりました。
「うー...他のゲームは当時買っちまったが、このゲームは買ってねぇ。(理由:車キライ)
今さらクソ長ぇダンプリスト入力するのも面倒くせぇ!...楽して入力してぇヤツはOh! Hell Yeah!!」
Oh! Hell Yeah~!!(会場大絶叫)
↑深い意味はないです。
ちなみに他のゲーム(マジックファクトリー/ノンバーラパニック)を買った後にこの本が出ましたので入力する必要はありませんでしたし、なにせリストも長いので実際のところ当時は入力する気も全然ありませんでした。
しかし最近は便利な時代になりましたので、WindowsでもMZ-1500を動かせる時代...
ええ時代や...だったらスキャナもあることだし、OCRソフトでも使って簡単にMZエミュレータに使用可能なファイルにできるのではなかろうか?
とゆー怠け心から作業を始めました。(当時の長い16進のリストをシコシコと時間をかけて入力していた人なら、絶対に同じような事を考えているだろーと思った。)
■ OCRソフト
とりあえずOCRソフトにはどんなソフトがあるか、を調べるには、「infoseek」なりの検索エンジンで「OCRソフト」と入力。
なかには物好きな人がいるもので、OCRソフトの比較検証をされているページもありましたが、
自分の目で確かめる必要があるので、ソフトメーカーから体験版をダウンロードして使用することにしました。
こんなトコロでしょうかね...2001年1月現在。
ソフト名
読んde!!ココ Ver6.0
e.Typist v6.0 バイリンガル
Scanbox Pro OCR V5.0
OKREADER 2000
他にもいくつかOCRソフトを作っているメーカーはありましたが、体験版がダウンロードできないとかそーいった事情で割愛。(サイトが解りにくいので割愛したのもありましたな...)
■ 入力リスト
上記が今回のリストの一部を縮尺したものです。
実際は400dpiの白黒256色のbmpファイルとしてスキャニングします。
(なかには白黒2値にしないと読み込んでくれない製品もありました。そーゆー場合はそのように変換。)
実際にはこのくらいの大きさになります。
ほんのりと髪の毛がスキャニングされてしまったが、これはあえて髪の毛を除いて再スキャンしないでどれだけ認識力があるかも検証できるのではないだろうか?と思ってそのままテストしてみました。
■ 認識
大体どのソフトも認識したい部分を「枠」で囲って認識させます。
実際に認識させたいのはリスト部分なので以下の部分になります。
ソフトによっては「傾き自動補正」、「日本語/英語別認識」、「スキャン間違い修正学習辞書」などのユーザーライクな機能がいろいろとあり、なかなか面白かったですが、
今回は「0123456789ABCDEF」の16文字をいかに正しく認識してくれるか、が重要なわけで。
以下のリンクにあるTXTファイルがそれぞれの認識結果。
「eTypist」は体験版が3日しか使えないのでファイルが取れませんでした。
体験版はせめて30日くらい使えるようにしてくれい。
読んde!ココ
OK_READER
SCANBOX_PRO
それぞれが機能/識字率に一長一短があるので「ベストBuy」とかはしません。
要は使ってる本人が「これいいんじゃねーの?」と思うのがベストなのだ。
ワタシの場合は「SCANBOX PRO」が気に入りました。まぁどれも及第点は満たしているんですが。
■ 修正作業
使って思ったのは大抵のソフトが「O(オー)」と「0(ゼロ)」は大体のソフトが誤認識をしました。
あとはソフトに依って認識ミスの特徴が色々と有りました。
(A → 4 とか 1→l(小文字のエル) とか...)
14ページほど有ったソースリストを全部処理して1つのTXTファイルにまとめて、
それぞれの変換の特徴を掴んだ上で、テキストエディタ(メモ帳など)で一括に「置換」をします。
ついでに16進数以外の文字(G,H,I,J...)がリスト内にないかを確認しておきます。
(「!」や「?」などの記号に関しては「記号を認識しない」設定が大体のソフトにあったので
気にしないで大丈夫だと思う。)
31 00 CF CD 03 70 CD 03
70 21 00 15 22 29 CD 21
00 B0 11 00 15 01 00 04
ED B0 AF 32 13 CD 00 00
F3 21 80 CD 06 1F 36 00
23 10 FB AF 21 00 00 22
A0 CD 32 A2 CD 32 A3 CD
31 00 CF D3 E3 AF 32 97
CD 21 00 00 22 9C CD CD
2C 67 CD E1 65 CD 1B 00
28 FB 00 00 00 00 00 FE
33 CA C6 60 FE 32 20 07
3E 01 32 97 CD 18 04 FE
31 20 E2 CD 1B 00 20 FB
11 94 66 CD 15 00 CD CE
60 CD 1B 00 28 FB FE 64
上記のリストがこんな感じの内容のTXTファイルになります。
例えば1行目の「31 00」だが、「31」と「00」の間にはスペース(&h20)が入り、
各々の行には改行マーク(&h0D,&h0A)が最後に入っています。
これらはエディタで消しておきます。この作業はテキストエディタではなく、
バイナリエディタで行うと楽に出来ます。
上記の作業を行うと
3100CFCD0370CD03702100152229CD21....
ってな具合でズラズラと16進数が並んだTXTファイルが出来上がります。
場合によってはファイルの最後に「EOF(エンドオブファイル=&H1A)」が入るのでそれも除いておきましょう。
■ MZT形式ファイルへの変換
TXTファイルはそのままMZのエミュレータでは使用できませんので、
バイナリファイルに変換し、その後にMZ用のヘッダを付ける必要があります。
作業としては
(1).バイナリに変換
(2).ヘッダを付属
まず(1).ですが、便利なことにテキスト→バイナリ変換ツールが存在しています。
「CovBtT & CovTtB (Win)」 というツールです。感謝感激雨アラレ。
(場所は http://www.vector.co.jp/soft/win95/util/se175394.html )
(2).に関しては、とりあえずテキトーにこれをバイナリファイルとしてヘッダファイルを作っておきます。
(例)
ファイル名:TEST
開始アドレス :$1200
ファイルサイズ:$1020
実行アドレス :$1280
こんな感じになります。
01 54 45 53 54 0D 4E 41 4D 45 05 3F 20 54 45 53
54 0D 20 10 00 12 80 12 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
色つきの部分は実際のプログラムのアドレスに変更しておく必要があります。
これを (1).で作成したファイルと合体させて、「テスト.mzt」など名付けて保存します。
■ エミュレータ上での作業
ダンプリストと比較してチェックサムを確認後、正しいファイル名で保存して実行します。
保存されたファイルは「$qd$.mzt」になりますので、解りやすい名前にしておきましょう。
そんだけ。
実際にOCRソフトや変換ソフトを試行錯誤して使いながらの作業でしたので、
エミュレータや実機上でダンプリストを入力する時間と比較すると、
2分の1~3分の1くらいの作業時間でしたが、
慣れると5分の1~10分の1くらいの作業時間で終わるようになると思います。
あとは、OCRソフト側で「0123456789ABCDEF」以外の認識をしないような
排他制御認識機能があればもっと楽に作業が行える、と思いますね。
でも、全部自動で出来る日が来るとええなぁ...
いや、ステキな女性型アンドロイドに入力/変換してもらうとかの方がええですな...
そんな未来に期待したいボクです。
...それまでに入力するリストがあるのがどうか、は疑問だけんど。

古PC関連のページ
http://www.retinamix.com/~marus/omake/ocr.html




 

1988年5月3日火曜日

1988年4月3日日曜日

[ゲーム][PC] SharpMZシリーズ版Story of Pendant~BASICでインタラクティブムービーつくった....


[ゲーム][PC] SharpMZシリーズ版Story of Pendant~BASICでインタラクティブムービーつくった....
「Story of Pendant」
■他誌に写真は掲載されたのに
他誌に写真は掲載されたのに掲載されなかった、幻の作品です。これもEyelarthに続く映像作品(?)で、前よりはわかりやすい話に、そして身近な話になっています。前作のEyelarthの話がわかりにくい、というのもあって今回は物語を重視する事になりました。
そのかわり時間的に長くなり、容量的な問題もあって動画部分は少なくなってしまっています。
■受験戦争と就職
現代に生きるほとんどの人は、この「受験戦争」「就職」という2つの壁を乗り越えなければなりません。もっと、のんびりした時代に生まれたかったな、と思ってみても時間の流れは一方向のようですし、タイムマシンもありませんので、このまま時代の流れにそって生きていく事になります。  私はすでに受験戦争、就職は終えてしまった身ですが、どちらもいい思い出はありません。多分、多くの人がそうであるように、苦痛でしかありませんでした。受験戦争においまくられ、それが終わって一息ついて見ると「はて、なんでこんなにしてまで、やらなきゃいかんのだ?」という疑問を持つ人もいるでしょう。
このStory of Pendantは、今の就職難の時代にあわせたわけではありませんが、就職試験に何回か落ちてしまった、そんな女の子のお話しです。受験戦争と就職とも、ひっくるめていますし、わざわざ設定も日本に似ている外国、そんな国にしてあります。
■拾ったペンダントと、その役目
ドラえもんなど、主人公を助けるのは、何かしら人間と似たものか、動くものである事が多いようです。もし、就職に困っている女の子の前にドラえもんが、あらわれたら多分簡単に、望みはかなえられるでしょう(多少のおせっかい話はあるかもしれませんが)。同様に他のお助けキャラも、そのような役目をおっています。数あるマンガ本やアニメをみても、それは同じでしょう。
とある国の、就職できずに悩んでいる女の子が森で拾ったのは、ペンダントでした。ただ、他のペンダントと違うのは意思を持っている事。物を動かしたりする力はペンダントにありますが、それらは決して彼女の就職を助けるものでもなく、逆に世話をやくだけのもの。世話をやかれるのも当然で彼女は、何事も積極的にやろうという意気がないのですから。
■自分の力で
彼女が拾ったペンダントは、意思を持っていたというよりも「内面の鏡」でした。自分が役に立たないのではなく、自分がやろうとしないから役にたたない・・・。少しだけ成長した彼女はペンダントを元の森の小枝にかけて別れていきます。
他人からとやかく言われてやる事は、あまり面白くありませんが、自分からやろうと試みたことは面白いものです。他人が見たり聞いたりしたら、笑ってしまうような趣味であっても、自分が面白いと思ったなら、そのまま続けましょう。さらに、面白いものが見えてくるかもしれません。
結局、他人の力ではなく自分がやらないと駄目じゃないでしょうか?
意見と文句は、こっちまでくれくれ~メール(笑)。
Update : 1996/03/10

MZ Museum
http://www.shiojiri.ne.jp/~openspc/mz700/PENDANT.html
http://www.shiojiri.ne.jp/~openspc/mz700/EYELARTH.html
http://www.shiojiri.ne.jp/~openspc/mz700/MC.html
http://www.shiojiri.ne.jp/~openspc/mz700/FR.html
http://www.shiojiri.ne.jp/~openspc/mz700/SH.html
http://www.shiojiri.ne.jp/~openspc/mz700/SBFZ.html
http://www.shiojiri.ne.jp/~openspc/mz700/XEVIOUS.html
http://may.csse.muroran-it.ac.jp/~ogawa/MZMuseum/
http://www.shiojiri.ne.jp/~openspc/













[ゲーム][PC] SharpMZシリーズ版Eyelarth(アイラース)~BASICでインタラクティブムービーつくった....



[ゲーム][PC] SharpMZシリーズ版Eyelarth(アイラース)~BASICでインタラクティブムービーつくった....
■MZ-700の映像作品?
雑誌Oh!mz/Xでは多くの投稿作品がありましたが、非常にかわりだね、という点ではこの「Eyelarth(アイラース)」も5本の指に入ると思います。今でこそ、MacintoshやAMIGAで映像作品が個人でも作れる環境になってきていますが、このEyelarth発表当時はX68000 + DoGA CGAで短い映像作品を作るのがやっとといった時代でした。映像作品と入ってもハードディスクすら、まだ未搭載のマシンがほとんどでしたから、当然シナリオ作って台詞を入れてアニメーションさせて・・・というのは、難しいというか、無理があったと思います。
すでに、時代は16ビットマシンから32ビットマシンへと移行し、高速大容量メモリへと向かっていました。そんな時代に旧世代の遺物とも言える8ビットマシン、搭載RAM容量は64Kバイト・・・。そんなマシン上で約10分程のショートストーリーが展開される・・・。
「んな、馬鹿な」
個人でDesktop Video (DTV)ができる時代になる遥か以前に、こんな馬鹿な事をしていたとも言えます。
反響なし
今でこそ「インタラクティブムービー」などという言葉が通じる時代ですが、当時はそんなものもなく、またインタラクティブとはいってもキーを押すだけ。自動モードにしておけば、勝手に画面が進んでいく・・・。今までゲームを作ってきただけあって、反応なし、反響なし、評判悪し、文句たらたらといった感じでした。反響がないのに文句というのは身内(テストプレイヤー)です。
ストーリーもよくわからないし、ゲームじゃないから面白くないし、何これ? とまあ、そんな感じでした。だいたい無茶苦茶な事をやっているのは、わかっていました。が、誰もやろうとしないから、やってみたい、そんな気持ちの方が勝っていました。このEyelarthに関して言えば、非常に珍しい事に「技術優先」でもなく、「改良」でもなく「作りたいから作ったのだ」という事になります。技術的に面白いというわけでもなく、とにかく「作ってみたい」という気持ちが最優先でした。ですから、1~2箇月ほどで完成してしまったのです。
この時は、便利なエディタもすでに作成されておりグラフィックを描くのも容易だったからというのもありますが。
■最後に
ストーリーもわからないし、演出もあまりよくないし、見ているだけなんて。反響がないのも、反応が悪いのもわかります。が、1つだけ書いておきたい事があります。もし、あなたが何か映像作品なりを作りたいとして、今の環境がよくないからといって作るのをやめますか? Desktop Videoが手軽にできる環境になるのを待ちますか? その時になっても、あなたは決して自分が満足するような作品が作れますか? 多分、あなたはいつまでも作品ができないのは、環境が悪いからというでしょう。
意見と文句は、こっちまでくれくれ~メール(笑)。
Update : 1996/03/10

MZ Museum
http://www.shiojiri.ne.jp/~openspc/mz700/EYELARTH.html
http://www.shiojiri.ne.jp/~openspc/mz700/MC.html
http://www.shiojiri.ne.jp/~openspc/mz700/FR.html
http://www.shiojiri.ne.jp/~openspc/mz700/SH.html
http://www.shiojiri.ne.jp/~openspc/mz700/SBFZ.html
http://www.shiojiri.ne.jp/~openspc/mz700/XEVIOUS.html
http://may.csse.muroran-it.ac.jp/~ogawa/MZMuseum/
http://www.shiojiri.ne.jp/~openspc/












[ゲーム][PC] SharpMZシリーズ版SIDE ROLL -F-~MZシリーズ移植失敗秘話



[ゲーム][PC] SharpMZシリーズ版SIDE ROLL -F-~MZシリーズ移植失敗秘話
「SIDE ROLL -F-」
■移植できず・・・
実はこのゲームに出てくる2面のボスキャラはタイトーのシューティングゲーム「DARIUS」のものです。なぜ、そんなキャラクタがでてくるかというと、昔I/Oという雑誌で「DARIUS移植したら100万円」というコンテスト(?)があったのです。で、欲に目がくらんで(笑)、資料を請求したのですが・・・。送られてきた資料を見て驚き桃の木三しょうの木、ブリキに狸に洗濯機。ただのキャラクタの図だけ。こりゃ、ひどいと思いました。こんなイラスト(ドット絵ですらない)だけで移植してみろというわけです。仕方がないので私は自分でいろいろ調べました。いまだに、その資料は残っていますが。
で結局メモリの都合上、断念してしまったのですが、ボスキャラは描いてあったので、もったいないなあと思い、このゲームに登場してもらったというわけです。攻撃方法もまったくおなじです(いや~ばれなくてよかった^^;)。←(TAITO、DARIUS 24体戦えますか事件以来、非常に危険なのだ。こんな所でバラしてもわからないはず・・・う~むぅ)
XEVIOUS, FantasyZone, Space Harrierそして・・・
移植したゲームもあれば、それらしきものを作ったりしてきましたが、このSIDE ROLL -F-も、某ゲームの影響があります。そのゲームの名は「R-TYPE」というアイレムのシューティングゲームです。
よって出てくるものは巨大戦艦とか、自機についているビット(グラディウスのオプションのようなもの)とか、迷路のような所とか、もろもろ。とにかく詰め込むだけ詰め込んだシューティングゲームといってもいいくらいです。自機の装備は左右または前方に移動させる事ができるSRFというオプション、そして通常のショット(3連射)、SRFから発射されるレーザーとなっています。敵を倒したりすると、ランダムにパワーアップアイテムやボーナスアイテムが現われます。これを取るとレーザーが長くなったり、ボーナス得点が入ったりします。
System-7Bと同時進行
このゲームはMZ-700用ゲームシステム「System-7B」と同時進行で作られました。System-7Bに入れたほうがよさそうなものは、System-7Bに移動させ、そうでないものは逆に持ってきたり試行錯誤していました。おまけに最後の段階になってMacIIのおかげで(FirstRoad / System-7Bの項目参照)、呼びだしアドレスが変わったり最後の最後まで調整していました。さらに、System-7Bにこういう機能もあるよと宣伝もしないといけないわけでタイトル画面のFの文字の拡大縮小は、そのために存在していたりします。
BGMがない・・・
このゲームはBGMがありません。というのも、作る人が近くにいなくなった、というのがその理由です。以前、SB/FZの曲を作ってくれた塚田君は高校の同級生だったのですが、SB/SG制作の頃には2人とも別々の会社に勤めていました。社会人になると結構出会う時間が少なくなるものです。某事件後、何年間も音沙汰なしといった状況でした。
MZ-700からMacでゲームを作るようになって、西尾さんという方と出会い曲を作ってもらっています。そのうちDungeonStreet IIのBGMも作ってくれるはずですが(^^;
■個人制作と団体制作
高校や大学の仲間が集まってゲームなどを作るのは、今では珍しい事ではありません。
個人で作る人もいれば団体で作る人もいます。私の場合は、今になっても「個人」で作っているといった状況です。西尾さんと私の2人で電話やメールでやりとりしつつ作っているわけです。個人で作るいい所は、デザインからプログラム、キャラクタや背景、BGMまで思いのまま(実力によりけりですが)にできる事でしょう。しかし、大抵裏目に出てしまう事が多く、特に「ひとりよがり」なものになってしまいます。こういう場合は「移植」ものの方が、かえっていいのかもしれません。
■おわりに
MZ-700用シューティングゲームは、このゲームが最後となってしまいました。とかく入れるだけ入れてしまって、やる事がなくなってしまったからかもしれません。この後はEyelarthやEugeaなど、今まで挑戦したことのなかったジャンルをめざす事になりました。
同じジャンルのものばかり作っていると、飽きてしまうというのもあります(私は結構飽きっぽい方なんです・・・)。
■プログラム的なこと、スクロールの技
スクロールゲームもたくさん制作するとノウハウがたまります。このゲームの段階では背景用に仮想画面を使用する事がなくなってしまいました。どういう事かというと、今までは次のようにして背景をスクロールさせていました。

MZ Museum
http://www.shiojiri.ne.jp/~openspc/mz700/SRF.html
http://www.shiojiri.ne.jp/~openspc/mz700/MC.html
http://www.shiojiri.ne.jp/~openspc/mz700/FR.html
http://www.shiojiri.ne.jp/~openspc/mz700/SH.html
http://www.shiojiri.ne.jp/~openspc/mz700/SBFZ.html
http://www.shiojiri.ne.jp/~openspc/mz700/XEVIOUS.html
http://may.csse.muroran-it.ac.jp/~ogawa/MZMuseum/
http://www.shiojiri.ne.jp/~openspc/













[ゲーム][PC] SharpMZシリーズ版メトロクロス~MZシリーズ移植版制作秘話



[ゲーム][PC] SharpMZシリーズ版メトロクロス~MZシリーズ移植版制作秘話
「メトロクロス」
■著作権料
このメトロクロスというゲームはナムコが出したアーケード版のものです。
これを移植したのですが、実はこのゲームだけ2回移植してOh!mz/Xに投稿しました。
なぜ2回なのかというと、1回目はごく普通に制作したもので、2回目はSystem-7B用に改良したものです。
この2回目で大幅に改良されたのですが、結局の所「著作権料」のため掲載される事はありませんでした。唯一SYSTEM-7cの時に1画面写ったものが掲載されただけでした。
セガのスペースハリアーは、著作権料がいりませんでした(当時のセガは、多くの人にセガのゲームをプレイして欲しいと考えていたようで、そのため著作権料を取らなかった)。しかしナムコは掲載されたページ数に応じて著作権料を取るとのこと。最初のデビュー作となったXEVIOUSはゲームがゲームだけに、そして前代未聞の事態であったため見事掲載となったわけですが、このメトロクロスは、それほどメジャーなゲームでなかったため未掲載の憂き目にあってしまったというわけです。当然、著作権料が安ければ掲載されたはずです。
■スペースハリアーへの布石
このゲームは視点が斜め上からの俯瞰になっています。つまりX,Y座標だけでなく、奥行きの座標Zを必要とします。が、実際はY座標のみで強引に処理をしていました(昔バージョン)。それでも、そこそこみれて、遊べてしまうのは元がいいからでしょう。ナムコ黄金時代の末期作品ですが、私はこのゲーム好きでゲームの基板も所有していたります。
それは、さておきこのゲームで試行錯誤した事が、後々のゲーム(スペースハリアーなどなど)に影響しています。昔のバージョンを大幅改良した時は、スペースハリアーも移植/発表が終わっていました。そこで昔のバージョンの難点であった所を大幅改良しました。改良点は以下のとおりです。
 ・画面を横30文字から40文字、つまり画面いっぱいにした
 ・進行状況を示すゲージを表示/付加した
 ・System-7B対応にしプログラムサイズを小さくした
 ・スクロールによる色ずれをなくした
 ・スピードアップした(System-7B対応のため)
 ・タイトル画面を付加した(昔は文字だけだった)
細かいところは他にも改良が加えられていますが、大幅変更したのは上記のような所です。だいぶ良くなったはずですが、結局著作権料に泣いてしまったのです。
アマチュアの手からはなれて・・・
どんなものでも、最初はごくごく一部のマニアや物好きが始めたりするものです。ゲームやパソコンなどもそうです。黎明期は金銭関係は薄くて、楽しいから、面白いからという気持ちで始まって、それがやがて大きな潮流となっていきます。この大きな潮流になり「商売」として成立するようになると「金銭」が、いやがおうでもからんできます。そして、「著作権」というものも必ず絡んできてしまいます。趣味であった楽しいものが、いつの間にか大きな潮流となり、勝手にジャンルわけされ、「ドラゴンクエストみたいなのをRPGって言うんだよ」と、素人に説明されたり・・・。
「それで、儲かるんですか?」
「いや、儲かる儲からないじゃなくて、作りたいから作ったんですよ」
今では立派(?)なゲーム学校もあるしゲーム業界は人材に事欠かないでしょう。ゲーム制作には結構多くの知識が、そして知恵がいります。これからは、そういう学校を卒業した人達が「斬新なゲーム」をたくさん作ってくれるでしょう・・・
■プログラム的なこと、どれそれ
このゲームは今まで作ってきたシューティングゲームではなく、自分が「人間」だという事です。
つまり今まではメカものだったためキャラクタのパターンも2キャラか1キャラ用意しておけばよかったものが、今度は「走る」「ジャンプする」「ズッコケる」などなどのパターンが必要になりました。後々に作られるEUGEAというゲームでは、手や足などは分割しておき合成するという方法ですが、この頃はそんな方法も知らなくて(^^;)ご丁寧にパターンをこてこてと作っていました。
意見と文句は、こっちまでくれくれ~メール(笑)。
Update : 1996/03/10

MZ Museum
http://www.shiojiri.ne.jp/~openspc/mz700/MC.html
http://www.shiojiri.ne.jp/~openspc/mz700/FR.html
http://www.shiojiri.ne.jp/~openspc/mz700/SH.html
http://www.shiojiri.ne.jp/~openspc/mz700/SBFZ.html
http://www.shiojiri.ne.jp/~openspc/mz700/XEVIOUS.html
http://may.csse.muroran-it.ac.jp/~ogawa/MZMuseum/
http://www.shiojiri.ne.jp/~openspc/












[ゲーム][PC] SharpMZシリーズ版First Road~System-7Bゲーム制作秘話


[ゲーム][PC] SharpMZシリーズ版First Road~System-7Bゲーム制作秘話
■ゲームシステム
ゲームのシステムというと最近はWindows 95も、そのような方面を取り込んでいたりするようです。雑誌ではGame OSとか書かれていたりする事もあります。
いくつかゲームを作っていくと次第に使い回しのプログラムが増えていきます。これは普通「ライブラリ」と呼ばれアセンブルまたはコンパイルするときに使用され使い回します。
が、やがて同じプログラムを使うのだから、いちいちアセンブルやコンパイルするなんて面倒です。
となるとアセンブル・コンパイルしておいて(オブジェクトの状態で)使えば手間も省けるというのものです。こうやってゲームのシステムができあがっていきます。
どこでも同じ様な事をやっていますが、これを自分なりにまとめて4Kバイトというコンパクトなサイズにまとめたのが「System-7B」でした。
■サンプルゲーム
このSystem-7Bを使用したサンプルゲームが、このFirst Roadでした。
サンプルなどでプログラムも短く、ゲームも2Dのレースゲームになっています。がただの2Dではなく、斜め俯瞰する感じになっています。
という事はX,Y座標だけではなく奥行きZ座標も必要とします。ただ道幅が狭いので「透視変換」は行っていません。また、Z方向にあわせてキャラクタもソートしていません。この頃ソートは「バブルソート」「クイックソート」あたりしか知らなくてクイックソートは面倒だったので使った事はありませんでした。バブルソートも遅いので結局つかってません。しかし、Z座標にあわせて表示キャラクタをソートしない事にはぐちゃぐちゃになって奥にある車が手前の車に上書きされてします。
手抜き
面倒な事はやらない方なので(笑)、表示する際にカウンタを用意しておき、そのカウンタと一致したキャラクタを表示するという方法にしました。これは以前作成したメトロクロスに手を加えて流用したものです。ここで、よくよく考えてみると邪魔をする車だけではなく、自分の車も邪魔する車と一緒に表示してやらないとおかしな事になってしまいます。スペースハリアーなど疑似3Dでは、自分は常に一番手前なので最後に自分を表示してやるだけです。
今までは自分のキャラクタと敵の必要とするパラメータ(バッファ)は異なっていましたが、ここからは敵も自分も同等にみなす、という方式に変化していきました。この方式のおかげで今まで自機と敵の表示プログラムを別々に作っていましたが1つですみます。このように敵と自分を同じ扱いにすることで、かなり利点が増えていきました。
■System-7Bと、その役割
このゲーム以降、私が発表していくゲームは、このSystem-7Bを使用したものになりました。プログラムサイズが4Kとコンパクトな事と4Kごとのブロック単位で移動させる事ができたからです。必要なプログラム(ルーチン)は、ほとんどこの中に収まっていました。しかし、LOGINなどで売っている「RPGツクール」とかとは違って特にシューティングゲームとかRPG(ロールプレイングゲーム)しかできないといった汎用性のないものではありません。Eyelarthなどゲームでもない変なものも作れてしまうほどです。
このSystem-7Bがほぼできあがっていた時にMacintosh (II/SE)との出会いがありました。もし、このMacIIと出会わなかったらSystem-7Bの完成度は少し低くなっていたかもしれません。MacIIの面白そうなウィンドウとかメニューとかを最後にSystem-7Bに強引に入れ込みました。ところが、空きメモリがすでにほとんどなく、とてもウィンドウ表示ルーチンなどを入れる余裕はありませんでした。そこで一計を案じて「ウィンドウをPRINT文(ルーチン)で行う」という暴挙にでたのです。ウィンドウ表示プログラムが作れないほどメモリが少なかったため、ウィンドウ表示をするデータをPRINTルーチンに渡しているのです。
他にもメモリを節約するために一計を案じたものがたくさんあります。また、汎用性を欠いてしまうルーチンは取り払いました。こうして発表時には、かなり完成度の高いものになっていったわけです。そして、もう1つ完成度を高くするために同時進行としてSIDE ROLL -F-も制作しました。このゲームについては、また別の所で書くことにしましょう。
■System-7Bのルーチン群
Oh!Xに発表されましたが、すでにバックナンバーもなく雑誌もないので資料も何もあったものではありません。という事で、どのようなルーチンがあったのか紹介しておきます。手元にはプログラムリストを出力したものもありますが、ここでは掲載する必要はないでしょう。
意見と文句は、こっちまでくれくれ~メール(笑)。
Update : 1996/03/10
・キャラクタの当たり判定
・最大値でなければカウント増加
・最小値でなければカウント減少
・BCD (Binary Code Decimal)を表示
・平方根演算
・8ビットx8ビット乗算
・8ビット符号演算(SGN)
・16進数から10進数に変換
・16ビット÷8ビット除算
・16ビットx16ビット乗算
・10進数から16進数に変換
・乱数発生
・実画面の座標計算
・仮想画面の座標計算
・プログラムカウンタの値を読み出す
・プログラムカウンタオフセットジャンプ
・リスタート
・一時停止制御/復帰処理
・キー入力待ち
・ファンクションキー入力チェック
・1文字入力
・カラー変更
・仮想画面を実画面に転送
・スコア表示
・スコア演算およびハイスコア自動更新処理
・自機移動処理(移動範囲指定あり)
・自機移動処理(デモ用)
・自機移動処理(4方向のみ)
・自機移動処理(横2方向のみ)
・自機移動処理(縦2方向のみ)
・PUTルーチン(キャラクタ描画)
・PUTルーチン(クリッピング処理あり)
・PUTルーチン(手前と背景の間にキャラクタを描画する)
・PUTルーチン(拡大縮小処理つき)
・ボックス描画(枠のみの箱)
・ボックスフィル描画(塗りつぶされた箱)
・ボックス描画(表示の際、色反転)
・GET(仮想画面の内容をメモリに取り込みます)
・円を描画
・円を描画(表示の際、色反転)
・ラインを描画
・ラインを描画(表示の際、色反転)
・水平高速ライン描画
・連続ライン描画
・セミグラフィックのドット表示
・セミグラフィックのドット消去
・パターン描画
・カラーのマスキング処理
・カラーコード減算処理
・カラーコード演算(AND, OR, XOR, +1, -1, 反転, 補色, 1/2, 2倍, 加算, 減算, etc.)
・カラー変更
・スムーズな色変換処理
・カセットテープからサンプリングする
・サンプリングしたサウンドを出力する
・データ圧縮
・データ展開
・塗りつぶし(PAINT)
・サークル描画後塗りつぶし
・敵から自機に発射する弾のデータを求めます(確実に狙ってくるタイプ)
・敵から自機に発射する弾を1回分移動させます
・文字列表示
・メニュー表示
・メニュー選択
・ドット単位でのゲージ表示
・メニュー表示後、メニュー選択処理
・ウェイト処理
・イニシャルメッセージ表示処理

MZ Museum
http://www.shiojiri.ne.jp/~openspc/mz700/FR.html
http://www.shiojiri.ne.jp/~openspc/mz700/SH.html
http://www.shiojiri.ne.jp/~openspc/mz700/SBFZ.html
http://www.shiojiri.ne.jp/~openspc/mz700/XEVIOUS.html
http://may.csse.muroran-it.ac.jp/~ogawa/MZMuseum/
http://www.shiojiri.ne.jp/~openspc/







1988年2月25日木曜日

[機器][PC] Sharp MZシリーズ








◆MZ-40シリーズ
MZ-40K
◆MZ-80Kシリーズ
MZ-80K
MZ-80C
MZ-1200
MZ-700
MZ-1500
◆MZ-80Bシリーズ
MZ-80B
MZ-2000
MZ-2200
MZ-2500
MZ-2800
◆PC-3100シリーズ
PC-3100
PC-3200
◆MZ-3500シリーズ
MZ-3500
MZ-5500
MZ-6500
◆その他のシリーズ(海外版も含む)
MZ-800
MZ-80DU
◆X Series
X1
X1C
X1D
X1Cs/Ck
X1turbo
X1turboZ
X68000

MZ Museum
http://may.csse.muroran-it.ac.jp/~ogawa/MZMuseum/IntroduceMZ/GeneticInformation.html
http://may.csse.muroran-it.ac.jp/~ogawa/MZMuseum/ad/
http://may.csse.muroran-it.ac.jp/~ogawa/MZMuseum/











広告に見るMZ
コメントはまたの機会ということで、とりあえずデータだけを掲載してみました。
データ提供は半場方人さんです。この場を借りてお礼申し上げます。
◆MZ-80B
機種名 MZ-80B(小さくMZ-80K2Eも)
雑誌名 NHK趣味講座マイコン入門 昭和57年度前期
文面
パーソナルコンピュータの世界は日進月歩、新しいプログラム言語や周辺機器が続々と開発されています。
シャープの?TMZクリーンコンピュータ?Uは、そうした進化に対応した独創的な設計。本体の頭脳部(メモリー)がいつも白紙(クリーン)の状態に戻せ、言語の変換やシステムチェンジを可能にしました。目的に合わせて効率よく使える、いわばオールマイティ機。本機ではCPUに4MHzのZ80Aを搭載、CPUの直接アクセスできるメモリーは、64KバイトすべてRAMというミニコン仕様のメモリー構成。使いこむほどに、上達するほどに真価を発揮。3年先、5年先を考えるならMZ。まさに未来対応型パソコンとマニアからも絶賛をあびています。
CPU:Z80A(4MHz)
RAM:メインメモリー64Kバイト標準実装
CRT:10型グリーンフェイス
拡張オプション:
フロッピーディスクMZ-80BF、
ドットプリンタMZ-80BP4・MZ-80BP5・MZ-80P6、
14型カラーディスプレイユニットMZ-80DU、
マークカードリーダMZ-80MCR他
ホビーから実務まで
クリーンコンピュータ 標準価格278,000円
(10型CRTディスプレイ・電磁メカカセットデッキ標準装備)
◆MZ-80K2E
文面
パソコンの名機MZ-80K2の機能はそのままに、魅力の価格で登場した実力の「オール・イン・ワン」
32KバイトRAM標準実装(ボード内で最大48Kバイトまで増設可能)
MZ-80K/Cシリーズとソフトウェアコンパチブル
◆MZ-80K2E
クリーンコンピュータ
標準価格148,000円
<10;型CRTディスプレイ・カセットデッキ標準装備>
機種名 MZ2000(小さくMZ-1200も)
雑誌名 NHK趣味講座マイコン入門 昭和57年度後期
◆MZ-2000
文面
応用自在のメモリ構成で、新しい言語や周辺機器とのシステムチェンジを可能にしたクリーンコンピュータMZ
―――使いこむほどに、上達するほどに進化するパソコンとして圧倒的な支持を得ています。
MZ-2000は、この「クリーン思想」をきわめた名機MZ-80Bをさらにグレードアップ。
カラーグラフィック対応など一段と充実したグラフィック機能(オプション)を誇る新鋭機です。
MZを超えるのはMZ、いま究極のクリーンコンピュータと呼ぶにふさわしいMZ-2000の誕生で、8ビットパソコンは完璧の次元へと飛翔します。
◆MZ-2000
パーソナルコンピュータ 標準価格218,000円
<10;型グリーンCRT・電磁メカカセットデッキ標準装備>
<究極のクリーンコンピュータにふさわしい先進の機能>
CPUに4MHzの高機能Z-80A搭載
アドレス空間64Kバイト、オールRAM、応用自在のクリーンメモリーシステム
鮮やかな8色カラー表示、白黒時3画面を駆使できるハイレベルなグラフィック機能(各オプション)
両面倍密度フロッピー、136桁プリンタ…優れた周辺機器に加えて、RS-232C、GP-IBなど標準インターフェイスもサポートされた完璧なペリフェラルファミリー
PASCALシステムプログラム、FDOS等多彩なソフトウェアサポート。
◆MZ-1200
文面
32KバイトRAM標準実装(ボード内で最大48Kバイトまで増設可能)
MZ-80K/Cシリーズとソフトウェアコンパチブル
気軽に愉しくコンピュータとスキンシップ。先進の思想が今、ハイパフォーマンスを手に入れた。
◆姉妹機<新製品>
パーソナルコンピュータ
MZ-1200
標準価格 148,000円
<10;型グリーンCRT・カセットデッキ標準装備>

MZ Museum
http://may.csse.muroran-it.ac.jp/~ogawa/MZMuseum/ad/
http://may.csse.muroran-it.ac.jp/~ogawa/MZMuseum/

1987年4月3日金曜日

[ゲーム][PC] SharpMZシリーズ版SPACE HARRIER~3Dシューティング移植版(?)制作秘話


[ゲーム][PC] SharpMZシリーズ版SPACE HARRIER~3Dシューティング移植版(?)制作秘話
「SPACE HARRIER (c) SEGA」
■疑似3Dゲーム
スペースハリアーはセガの疑似3Dシューティグゲームです。
体感ゲーム第2弾として発売されたこのゲームは、今までの3Dゲームとは段違いにゲーム性、音楽、グラフィックに優れていました。高速に拡大縮小される敵キャラはプログラマーにとって格好のネタとなりました。私も当然興味を持ちましたが、ゲームの方は1面のボスが全然倒せずに「つらないゲームや~」と言って他人のプレイを傍観していました。
このスペースハリアーは、セガのコンシューマーマシン「Super 32X」用として発売されています。10年前のゲームとは思えないほど優れものです。機会と機械があったらぜひ遊んでみてください。
■座標変換の苦労
このスペースハリアーは、見事MZ-700に移植できました。
移植期間は半年。オリジナルモード(アーケード版と同じ)、X68000モード、FM-7モード、SEGA MarkIIIモード、タイル付きモードなど、つけるだけつけてあります(無謀ともいう)。
このゲームは一応3Dゲームなので、どうしても「座標変換」を行う必要があります。つまり、遠くの物体になると特定の消失点に近づいていくわけです。が、この座標変換作るのに以外と時間がかかってしまいました。計算式自体は「X座標÷Z座標」(Z座標は遠くにいくほど大きくなる)という単純なものです。まず小数演算を消す必要があります。というのも、Z80というCPUは小数演算ができないため、小数を含む(小数になってしまう)演算は、全て整数演算にする必要があります。この小数から整数演算に変更する方法は簡単です。X座標とZ座標を256倍しておき、割り算を行います。割り算を行った後に256で再度割り算をしてやれば無事に演算が行えます。というのはタテマエで、実際ゲーム中でやってみると、本物のようにいかない! どうなるかというと、近くだと瞬速で敵が通りすぎ、それを過ぎると極度に遅くなるという状態(笑)。
いろいろ思案したあげく実際に敵を動かしながら、本物と同じような動きに見えるようにするという事をやって、強引に解決させました。
■拡大縮小処理
このゲームは遠くにある物は小さく、近くにあるものは大きく表示するという「拡大縮小処理」を行っています。ハードウェアでこの機能がついていれば、なにも考えずにすむのですがMZ-700は、そのような機能はありませんのでプログラムで処理する事になります。が、困りました。というのも、そのような処理の方法を書いた本が見当たらなかったためです。実際、拡大縮小処理の方法を知ったのは移植した後でした(笑)。という事は、このMZ-700用スペースハリアーは「まともな拡大縮小処理をしていない」という事です。
まずキャラクタを拡大、縮小どちらかの処理のみ行うようにします。拡大するよりも縮小した方が処理が速くなるので、こちらの処理を選びました。縮小処理を楽にするために「キャラクタの大きさ」を固定しました。つまり、この「大きさ」を固定する事によって処理の軽減をはかろうという事です。しかし、大きさを固定すると言ってもキャラクタのサイズが結構異なるので、大きいブロックとその半分のブロックにわけるようにしました。
問題はどうやって縮小するか? 縮小させるには適当な1ライン分のデータを間引いて表示させてやればいいのですが、その間引き方がわからない(笑)。ちなみに「まともな方法」ではブレゼンハムアルゴリズムを用いて行います。つまりラインのアルゴリズムの応用です(詳しくはMZのアルゴリズムの所をみてください)。X座標(データ)が1進んだときにY座標(表示データ)が変化した時だけ表示してやればいいわけです。これが、まともな縮小処理です。
まともな縮小処理をしていないMZ-700用スペースハリアーは、非常に手抜きな方法を使っています。間引くべき座標(カウンタ)をあらかじめテーブルで用意してあるだけです。が、このテーブルに、ちょっとした細工がしてあります。前に大きいキャラクタと小さいキャラクタの2種類があると書きましたが、この間引くテーブルデータは、大きいキャラクタでも小さいキャラクタでも、どちらでもうまく縮小表示できるようにしてあります。また、キャラクタの中心は常に表示させるようテーブルデータを設定してあります。というのも、普通のグラフィックが描けるマシンならば、どんどん縮小していっても、消えてなくなる可能性は低いのですが、MZ-700の40x25の画面では、縮小処理をするとキャラクタが、間引かれて実際はあるのに表示されない場合が十分考えられるからです。消えてしまっては遠くにある敵は近くにきて突如として現われることになります。これでは、まずいわけです。そういう事を防ぐためにプログラムで中心点を消さないように、データの方も中心には必ず点が存在するようにしてあるという寸法です。
■V-RAM(実際の表示画面)
このゲームでも例によってメモリ内部に仮想画面を用意しておき最後に一括転送を行っています。ここでも仮想画面とV-RAMに工夫をしてあります。まず、MZ-700は文字などを表示する「V-RAM」と、文字の色を変更する「ATB V-RAM」があります。ここでV-RAMにアミ模様を描いておき、ATB V-RAMだけを変更するようにします。この方法を使うことで
(1)速度が速くなる(今まではV-RAMとATB V-RAM両方に転送しなければならなかった。つまり倍速になります)。
(2)使える色数が増えたように見える。
(2)の使える色数が増えるというのはアミ模様(タイリング)にしておくことで8色と8色の組み合わせで36色まで使えるわけで、うまく使えば8色では難しい灰色のグラデーションなども実現できます。普通、8色で灰色にする場合は「白」と「黒」を使います。絵の具でも白と黒を混ぜれば灰色になりますから、誰でもわかると思います。が、実際には「紫」と「緑」を交互にタイリングしても灰色に見えます。論より証拠やってみると以下のようになります。
これはカラーコードに置き換えてみるとよくわかります。MZ-700で使用できる8色のコードは以下のようになっています(8色しか使用できないマシンはどれも同じはずです)。
 黒色:0
 青色:1
 赤色:2
 紫色:3
 緑色:4
 水色:5
 黄色:6
 白色:7
灰色は「黒:0」「白:7」、これを合計すると0+7で「7」になります。先ほどの「紫:3」と「緑:4」も合計すると3+4で「7」になります。もうわかったと思います。そう合計して7になるカラーコードの色をタイリングすると「灰色」になるというわけです。つまり「青:1」と「黄:6」も、やってみると灰色になります。
さらにカラーコードの差分が大きいほど明るい灰色になりますから、これを利用すれば奇麗に見えてしまう灰色のグラデーションの柱が描けるというわけです。カラーコードの差分というのは「白」と「黒」では7-0で「7」、「緑」と「紫」では4-3で「1」になります。つまり「白」と「黒」の方が「紫」と「緑」よりも明るい事になります。これは「色の吸収」が関係しています。
仮想画面の工夫
今までは実画面と同じ大きさ(40x25)の仮想画面を用意しておき、まとめて転送していました。が、SPACE BLUSTERシリーズはMZ-700で表示されないV-RAMの部分を使用して表示されないのをいい事に「仮想画面」に使っていました。この方法だとCPUがV-RAMにアクセスした時「ウェイト」がかかって遅くなってしまいます(実はだいぶ後になって知った・・・)。スペースハリアーからはメモリに仮想画面を取ることにしたのでV-RAMアクセスによるウェイトが減った分かなり速くなりました。
仮想画面の次の工夫は横のサイズを変更した事です。今までは40文字分でしたが、スペースハリアーからは横幅を64文字分に変更しました。この変更により「座標計算」「描画」等が楽になります。(2のn乗にすると楽になるのはマシン語を勉強した人はわかると思います)。
一番いいのは横のサイズを256にする事です。さらに高速化することができます。ちなみにSYSTEM-7cでは、この256サイズになっています。スペースハリアーの時64文字分にしたのはメモリの都合です(キャラクタが入らなくなる)。
高速化・・・せずに低速化
問題となる部分が解決するとトントン拍子で移植は進みました。他のマシンならば、ひたすら高速化するのですが、速度に余裕があったので前にも書いたX68000モードやタイルなどをつけたりしました。また、物体が遠くにあるのか近くにあるのか、わかりにくいという事で「影」もつけました。自分の撃った弾は障害物に当たると跳ね返って、どこかに飛んでいく処理などなど。背景も最初なかったのですが、近景、遠景と追加し2重スクロールするようにしました。
こうやって、どんどん「低速化」していきました。おかげでサイズも42Kという膨大な量になってしまいました。こんな巨大なプログラムをよく載せたものだと思います。Oh! Xの編集部の方々に感謝、感謝です。
■おわりに
結構、思い出のある作品です。それにしても、よく移植できるなあと思う人がいるでしょう。でも実際のプログラムは「らしく」動くようにプログラムされているだけです。はっきりいってMZ-700だからできたのであって、X68000でやれと言われても私にはできません。X68000も所有していますが私向きではありません。手抜きができるMZ-700というマシンは私にあっていたのだと思います。またサウンドも単音だったので、音楽も駄目な私にとって都合がよかった(ついでに音痴だったりする^^;)。グラフィック画面がないので、全部キャラクタ(文字)の組み合わせというのも絵が下手な私にはラッキーでしたし(笑)。
X68000を選べないまま時は流れMZ-700とその後購入したMacを使っていく事になりました。そしてMacとMacroMind Director (現在はMacromedia Director)を使用してゲームを作っています。また、MZの方もMZ-2500とMZ-2861というように変わっています。XシリーズとMZシリーズを使ってみると、やっぱりMZの方が練られているし私向きかな、と思います。ずっとMZを使っていこうと思ってもマシンの機械的寿命がやってきます。はてさて、この先どうしたものか・・・。

MZ Museum
http://www.shiojiri.ne.jp/~openspc/mz700/SH.html
http://www.shiojiri.ne.jp/~openspc/mz700/SBFZ.html
http://www.shiojiri.ne.jp/~openspc/mz700/XEVIOUS.html
http://may.csse.muroran-it.ac.jp/~ogawa/MZMuseum/
http://www.shiojiri.ne.jp/~openspc/


















[ゲーム][PC] SPACE BLUSTER FZ~作者が語るSharpMZシリーズ版シューティング制作秘話




[ゲーム][PC] SPACE BLUSTER FZ~SharpMZシリーズ版シューティング
SPACE BLUSTER FZ[Oh!mz 1987年3月号発表]
■制作の動機
tiny XEVIOUS for 700に続いて制作したオリジナルゲームが、この「SPACE BLUSTER FZ」です。
オリジナルとは言っても、セガのファンタジーゾーンのような、背景が奇麗なゲームが作りたいなあ、という不純な(笑)動機によるものです。その証拠?はキャラクタがファンタジーゾーンに似ているというのもありますし、タイトル画面に隠し文字で「FANTASY ZONE」と書いてあります。
動機は不純でしたが、作るとなると結構問題がでてきました。
■ツールがない
MZ-700というパソコンはグラフィックができないため、「お絵描きツール」のようなものが、ありませんでした。
あっても今のように簡単にツールを入手できたりする時代ではなくツールは自分で作るか、雑誌に掲載されているものを入力するのが普通でした。
そもそもグラフィック能力がないマシンでグラフィックツールを作る人はいません(笑)。
仕方がないのでツールを作って・・・といきたい所ですが、実は「ツール」たるものを知りませんでした(無知って偉大だ^^;)。
このツールがないという状況はゼビウスの頃までさかのぼります。ゼビウスは広大なマップを必要とするのですが、一体ツールもなくどうやって描いていたのか不思議に思う人がいるでしょう(皆、不思議かも・・・)。まず、画面の内容をそっくりメモリに転送するマシン語プログラムを作ります。例えば、
21 00 D0 11 00 B0 01 E8 03 ED B0 C3 AD 00
という具合にプログラムを組んで適当なメモリに入れておきます。
リロケータブルなので、どこのアドレスにおいても動作します。このプログラムを用意した後、画面に文字(キャラグラといいます。キャラグラ=キャラクターグラフィックス)を描きます。描き終わったらこのプログラムを実行させてやればマップの一部ができあがりです。
と、まあこのようにして作っていたわけです。
■ツールを作ろう
SB/FZの最初の面も、こんな感じで作っていましたが、途中でもっと楽にできないか、と思い簡単なツールを作る事にしました。本当に簡単なツールで、できる事といったら、カーソルの移動と色付け程度です。それでも、今までよりだいぶ楽になったので、結構凝った画面が作成できるようになりました。ここらへんもノウハウかなと思いますが、この初期の頃の画面と末期の頃では、雲泥の差があります。
なぜ、ゲーム自体よりも見栄え(?)にこだわるのか、といったら
グラフィックへのあこがれ
が全てだったと思います。そもそもゼビウスとこのSPACE BLUSTER FZの頃は「グリーンディスプレイ」を使っていました。つまり「色がでない」・・・全部緑色(笑)。だから家庭用のテレビに接続してカラー画面を見れる時は、すごく嬉しかったのです。それも、1ヵ月や数ヵ月に一度といった感じでした。
とにかく、ツールで描いてカラー画面で見た時は感激していたわけです。この時に色と色の関係を理解し、これが後のスペースハリアーへとつながっていくわけです。
■気合いをこめて、物まねだ(笑)
元がセガのファンタジーゾーンだけに、出てくる親玉も、そのままというほどいただいてきました。まあ、どこまで描けるか、といった実験的なものという意味あいもあったと思います。
ゼビウスの移植で培ったノウハウは、いくらか役にたちましたが、このゲームではゼビウスの時にやらなかった処理を、いろいろとやっています。私が作ったゲームの中でゼビウスだけが特殊なパターン/プログラムで作られていて、それ以外は全てこのSPACE BLUSTER FZが基礎となっています。これ以後のゲームは、ここで制作したプログラムを流用/改良する形で作られました。
当時の自分の実力の限界
このゲームは当時の私の実力の限界作品でした。作り終わった時、「ここまでやれば、もうどうしようもない」と思ってました(笑)。が、それもつかのま、次の作品を作り始めると非常に、なさけないというかプログラム的にも初心者レベルでどうしようもないものだというようになってしまいました。
最初は移植から始まりましたが、ここでオリジナルの道へしばらく走ります。スペースハリアー移植への道のりは、まだまだ始まったばかりでした。
このSPACE BLUSTER FZの後、SPACE BLUSTER SGの制作にとりかかりました。
これは、またの機会に書くとしましょう。
■プログラム的な事、あれこれ
このゲーム、巨大な敵がでてくるのですが、画面からはみだす処理、クリッピングというのですが、信じられない事をしてクリッピングしていました。普通ならば描く前に座標を調べてクリッピングするなりするのですが、このゲームの表示ルーチンは以下のようになっていました。
(1)X、Y座標を調べて画面外ならば表示しない
(2)X、Y座標から画面のアドレスを計算する
(3)1文字分描く
これを1文字づつ、ご丁寧にやっていました。それでも十分な速度で動いてしまうのはMZ-700さまさま(笑)といった所です。
ゼビウスの時から導入された「仮想画面」をこのゲームでも採用しました。Mac, Windowsなどで「オフスクリーン」と呼ばれるものと同等です。ゼビウスは「地形」+「敵スプライト」の2画面を「合成用仮想画面」に転送し、そこに自機等を描き、全部描き終わった所で実際の画面(実画面)に転送していました。SB/FZでは一枚の仮想画面だけを用意し、そこに地形から何から全て描くようにしました。ゼビウスの時の「敵スプライト」用の仮想画面がなくなったため、合成する必要がなくなりゲームの速度が向上しました。そのかわりきちんと当たり判定を行うようにプログラムを作り直しましたが。妙なプログラムでも動けばいいというのが私の持論ですので、とにかくゲームができあがったのでいいんです、これで(笑)。
あと、このゲームは画面の一部をアニメーションさせています。MZ-700の数少ない文字を使ってやるわけですから、当然できる事は限られてしまいます。滝や雲を流す、夕日を点滅させたり沈ませたり、とりあえず思いつく事はやりました。が、末期のゲームからすると、たいした処理ではなくなってしまいました。
意見と文句は、こっちまでくれくれ~メール(笑)。
Update : 1996/03/10

MZ Museum
http://www.shiojiri.ne.jp/~openspc/mz700/SBFZ.html
http://www.shiojiri.ne.jp/~openspc/mz700/XEVIOUS.html
http://may.csse.muroran-it.ac.jp/~ogawa/MZMuseum/
http://www.shiojiri.ne.jp/~openspc/