PC-6001mkIIでウットイを

FM-7オリジナルのアクションゲーム「ウットイ (UOOTOY)」を、PC-6001mkII/6601/SRに移植してみました。MZ-2000シリーズ用を改造して動くようにしたものです。

ウットイの画像
PC-6001mkIIでウットイ


作成方法

PiO 1986年5月号 p119-131掲載の、MZ-2500/2200/2000用ウットイへのパッチとデータ変換プログラムを公開します。当該号は国会図書館に所蔵されているので、遠隔複写サービスの利用が可能です (要登録)。

  1. MZ用ウットイを打ち込んで、uootoy.binという名前で保存します。約27KBあります。(チェックサム計算プログラム: ソース Windows用実行ファイル)
    (追記:1986年6月号p42にデバグ情報がありました。以下のように変更するとグラフィックが若干修正されます。4B97: 00 40 E5 E7 03 40 E7 E7 07, 5C89: 00 10 00 10)
  2. P6mkII用ウットイ作成セットをダウンロードして展開します。(2015.6.19バージョン:ランプのウェイトを変更)
  3. 展開したディレクトリにuootoy.binを置きます。
  4. mkut.exeを実行します (Windowsの場合)。Windows以外の環境では、src/mkut.cをコンパイルして使ってください。
  5. 以下のファイルが新たに生成されます。
  6. エミュレータで動かす場合は、FDイメージとしてuootoy.d88もしくはuootoy.dskを使うか、テープイメージとしてuootoy1.p6とuootoy2.p6をロードしてください。
  7. FDはオートスタート形式です。テープはモード1-5のどれかでCLOAD-RUNしてください。
  8. 実機で動かす場合は、Ditt!NDittなどを使ってFDに書き込むか、P6DatRec拙作のp6towavを使って音声ファイルを作成してください。
  9. エミュレータ上では、拙作のPC-6001mkII/6601用互換BASICや、CP/M BIOS同梱のBASICROM.66での起動も可能なようです。

遊び方

テンテン君を操作して、ゴール (点滅している床) を目指してください。隠れゴールのある面もあるようです。全50面です。

表1:操作方法
キー 動作
カーソル左右 移動
カーソル上 ジャンプ
スペース ブロックを積む
SHIFT ブロックを消す
ESC 一時停止、一時停止解除
n 次の面に進む (クリア済みの面まで)

5面ごとにアルファベットのパスワードが出るので、タイトル画面で打ち込むとそこまでの好きな面が選べるようになります。カーソル左で一文字消去、リターンで入力終了。スペースを押すと面選択画面になります。カーソル左右で面を選び、リターンでスタートです。クリア済みの面から好きな面が選べます。

(※P6版ではパスワード文字のDとOは全く同じで見分けがつきません。ごめんなさい。AとR、MとNも判別が難しいですが、「UNTIL NOW PASSWORD」や「ROOM」の表示と見比べてみてください。)


移植について

移植までの経緯やプログラムについて、つらつらと書き留めてみます。ウットイ、ずっと憧れのゲームだったのです。広告を見ては、どんなゲームだろうと想像してワクワクしてました。ロードランナーやフラッピーなど、当時流行りだった面クリア型パズル風味アクションゲームは、多機種へ移植されることが多く、ウットイも複数の機種に移植されています。なのでそのうちきっとP6にも移植されるはず……そう思っていたのですが、結局移植されずじまいでした。(SR版がプログラムコンテストで入賞していますが、販売はされなかったようです)

そして現在、ロードランナーやフラッピーは現行機で遊べるのに対し、ウットイは未だ遊べません。そのうちきっとPC版が開発されたりProjectEGGあたりで出たりするはず……そう思っていたのですが、いまだ移植されないままです。このままではウットイを遊ばないまま一生が終わってしまう、もうFM-7を買うかP6に移植するかの二択から選ぶしかない、そんな感じで移植を考え始めたのでした。

Kコンパイラ

とは言え、遊んだことも動いているところを見たこともないゲームを移植するのは無理があります。想像で作ったとして、あの日憧れたウットイと同じものが果たして遊べるのか。そんな時、「ウットイはKコンパイラを使って作られたので、他の機種への移植の際にはソースが流用できた」という話を見たのでした。じゃあKコンパイラをP6に移植すればいいんじゃないか?そう思って調べてみたところ、CP/Mで動くKコンパイラがあるのを知りました (I/O 1986年10月号掲載)。これ幸いと早速打ち込んだのですが、その後I/OやPiOをいくら探しても、ウットイのソースリストが見つかりません。どうもダンプリストしか掲載されなかったようです。残念。

PC-8801版とMZ-2000版

しかしソースが公開されていないなら、編集部以外が移植したものは一体どうやったのかと思って調べてみたところ、PC-8801版はKコンパイラを使用したのではなく、アセンブラで一から書かれたものということでした。また、MZ-2000版ウットイは88版を元に移植したものとのこと。ならばこれらZ80で動くウットイを元にして、機種依存のある入出力部分だけ改造すれば、公式な仕様と同じウットイが遊べるのでは?そう考えて移植が始まりました。ちなみに88版でなくMZ版を元にしたのは、MZの記事にはメモリマップが載っていたことと、88版が全30面 (パッケージ版は100面だったようですが) に対しMZ版が全50面だったことが理由です。

メモリマップ

MZ版では、2000-8CFFにデータをロードした後、グラフィックデータとメインプログラムをそれぞれ別の領域にコピーして実行しています。そのままだとP6ではVRAM領域がとれないので、グラフィックデータをずらして4000-7FFFの領域をVRAMとして確保することにしました。

表2:ウットイ実行時メモリマップ
P6版アドレス MZ版アドレス 内容
2000-2BFF プログラム、表示用データ、仮想画面など
2C00-3FFF 面データ
4000-7FFF (C000-FFFF) VRAM
856C-B10F 556C-810F グラフィックデータ
B900-E5FF プログラム
E600-E8FF P6用追加プログラム、スタック

キー入力

MZのキーマトリクスの資料が見つからず、ちょっと苦労しました。解析していて気付いたのですが、MZ版には隠しメッセージがあるようです。MZ版作者の名前と「TO TOMOKO」という表示が出るというもので、恐らく「ごらんトモコ、これは君のために作ったゲームなんだよ」「キャー素敵!」のようなやり取りがあったものと思われます。面選択画面で何かのキーを同時押しすると出るようなのですが、これが何のキーなのかよくわかりませんでした。P6版ではMODEキーを押すと出るようにしてあります。

サウンド

MZ-2000の音源はPWMなのだそうで、ON/OFFの周期と長さでソフトウェア的に周波数とデューティが決まるもののようです。ウットイではデューティ50%のプログラムになっていました。P6版では、該当部分のプログラムの実行ステート数を数えて大まかに音程を合わせたつもりですが、音の長さは適当に調整しました。メロディのない効果音的なものなので、正確でなくてもいいかなーと。

画面表示

表示に関しては、元のプログラムと同じく、RGB3プレーンのデータをそれぞれ書き込むようになっています。P6mkIIのスクリーンモード3のVRAMはRBプレーンとHGプレーンの2プレーン構成なので、RBの方はわざわざ二度に分けて書き込んでいる格好です。また、H(色相)ビットは常に1で、15色のうち8色のみ使っています。

グラフィックデータは機械的に変換しています。幸いMZ版のスクリーンショットを載せているサイトがあったので、確認しながらプログラムを書くことができました。変換方法としては、MZの解像度が640×200、P6mkIIの解像度が160×200なので、単純に横4ドットごとにORをとっています。文字が読みにくかったり針があまり鋭くなかったりしますが、まあそこそこ見られる表示になったんではないでしょうか。例外として、画面右側に表示される影付き文字については、4ドット中で一番多く使われている色を選ぶという変換をしています。

ウットイの画像
あまり痛くなさそうな針

ウェイト

元のプログラムはウェイトが入っているのですが、そのままではP6だと非常に遅くなってしまったので、ウェイトの量をある程度減らしました。1面で大体こんな速度だろうという風に適当に合わせましたが、本物をやったことがないので、果たしてこんなんでいいのかどうか……。キャラクタの多い面(5面など)では元々のウェイトがゼロになっているようなのですが、そういう面だとP6版では遅さが目立ちます。画面表示などにまだまだ高速化の余地があると思うのですが、とりあえずここまでです。

ウットイの画像
この辺の面は少々遅いです

SRだとどうなる

当時の愛機がPC-6001mkIIだったのでモード5用に移植しましたが、SRに同様に移植するならどうなるでしょうか?320×200のより精細なグラフィックが利用できて良さげです。問題は、32KBのVRAMを確保できるかどうかでしょうか。MZ版のプログラムリストが約27KB、今回追加したプログラムの純増分は1KB以下なので、SR用のプログラムの分量が少し増えても、うまく配置できれば収まりそうな気がします。更に100面化も、とか考えると厳しいかも。


トップ > 雑多なもの > PC-6001mkIIでウットイを