S-JIS[2001-12-08/2004-09-03]

アクションパズル「φ」

for MSX turboR by MSX-C

電気通信大学 X68000同好会 酒井利治氏作 アクションパズル「φ(ファイ)」の PC9801からの移植版です。

「φ(ファイ)」は、城とも洞窟も言えそうな場所を舞台とし、氷を操って炎を 消し、ゴールとなる扉を目指す、アクションパズルゲームです。そこには炎や 扉の他に敵や罠も存在し、敵を避け、罠を避けつつ、氷を操る能力だけを頼り に挑まなくてはなりません。あなたの深い思考力と瞬間の直感で、この難関を 乗り切ってください。
以上、原作のドキュメントからの抜粋です。


使用方法:MSX-DOSからPHI.COMを実行

MSX2以降で、RAM64kB・VRAM128kBが必要です。 文字化けしてもいいなら、漢字ROMは不要です。 が、動作速度の問題により、MSXturboRを推奨します。

主な操作方法は次の通りです。

カーソル・ジョイスティックの←,→左右移動
Z or トリガー1「左下」に氷を作る、「左下」の氷を消す
X or トリガー2「右下」に氷を作る、「右下」の氷を消す
ESCポーズ・メニュー表示
RETURNメニュー選択


同好会の会誌に「MSX版を…」って書いてしまったので、作ってみました。

MSX-C初挑戦。友人からMSX-C入門やら何やら一通り借りたんですが、すごいですね、これは。 「C言語の勉強に、MSX-Cから入らなくて良かった」というのが正直なところ(爆)
仕様やコンパイルの仕方が特殊すぎます。 charは符号無しだし、signed charって書いたらエラーになるし、 関数の引数の型チェックはコンパイラではなく専用のツールを使わないといけないし、 引数のchar←→intの暗黙の型変換も行われないし。

二度とMSX-Cでプログラムを作ることは無いでしょうが、どうやって作ったかメモしておきます。

  1. 普通のWindowsのエディタでコーディング
  2. そのソースファイルをDisk-Managerというツールでディスクイメージにコピー
  3. MSXエミュレータのRuMSXのturboRのDOS環境でコンパイル・リンク
コンパイルできるサイズに制限があるため、メモリ不足になる度にパラメータを微調整。 どうしようも無い場合はソースファイル分割。
ところがMSX-DOSのコマンドラインに入れられる文字数も限られている(256文字?)ため、リンカに指定するファイルが多くなりすぎると書ききれない! 仕方が無いのでファイル名を1文字で表したりして(泣) ライブラリ化するのが筋なんでしょうが、そのツールは無かったもんで。
そしてソース・中間ファイルが1枚のディスクに入りきらなかったため、ソースはドライブAに入れ、中間ファイルはドライブBに作るようにバッチファイルを書いたりして。

いや〜、今なにか修正しろって言われても、出来るかなぁ。

SCREEN5を使ってます。スプライトを使えば実行速度がもうちょっとマシだったかもしれないんですが たとえ主人公と言えども複数出てくる面があるし、横に16個並ぶなんてのもあるので諦めました。
VDPコマンドだけアセンブラにしましたが、使うのも久しぶりだったので、割り込みのかけ方をすっかり忘れてました。 VDPコマンドのウェイトから実行までを一括りにして割り込みを禁止しなきゃいけなかったんですね。 エミュレータ上では分けてても動いたので、いざ友人に実機で試してもらって 「固まった。ポーズキーを押したら動いた」と言われた日にゃ、どーゆーこったと思いましたよ。
実機ではVDPとCPUは並行して動くんですね。だからウェイトが重要だし、ちゃんと割り込みを 制御しなくてはいけないのでしょう。ところがエミュレータでは、 VDPコマンドを実行した時点でVDPの動作のみを終わらせてしまう。ウェイトなんぞ関係無い、と。

これだけ細かく分析しても、もう役には立たないだろうというが悔しいけどぉ(笑)


自作ソフトページに戻る / トップページへ行く
メールの送信先:ひしだま