電気通信大学 X68000同好会 酒井利治氏作 アクションパズル「φ(ファイ)」の PC9801からの移植版です。
「φ(ファイ)」は、城とも洞窟も言えそうな場所を舞台とし、氷を操って炎を 消し、ゴールとなる扉を目指す、アクションパズルゲームです。そこには炎や 扉の他に敵や罠も存在し、敵を避け、罠を避けつつ、氷を操る能力だけを頼り に挑まなくてはなりません。あなたの深い思考力と瞬間の直感で、この難関を 乗り切ってください。以上、原作のドキュメントからの抜粋です。
MSX2以降で、RAM64kB・VRAM128kBが必要です。 文字化けしてもいいなら、漢字ROMは不要です。 が、動作速度の問題により、MSXturboRを推奨します。
主な操作方法は次の通りです。
カーソル・ジョイスティックの←,→ | 左右移動 |
Z or トリガー1 | 「左下」に氷を作る、「左下」の氷を消す |
X or トリガー2 | 「右下」に氷を作る、「右下」の氷を消す |
ESC | ポーズ・メニュー表示 |
RETURN | メニュー選択 |
MSX-C初挑戦。友人からMSX-C入門やら何やら一通り借りたんですが、すごいですね、これは。
「C言語の勉強に、MSX-Cから入らなくて良かった」というのが正直なところ(爆)
仕様やコンパイルの仕方が特殊すぎます。
charは符号無しだし、signed charって書いたらエラーになるし、
関数の引数の型チェックはコンパイラではなく専用のツールを使わないといけないし、
引数のchar←→intの暗黙の型変換も行われないし。
二度とMSX-Cでプログラムを作ることは無いでしょうが、どうやって作ったかメモしておきます。
いや〜、今なにか修正しろって言われても、出来るかなぁ。
SCREEN5を使ってます。スプライトを使えば実行速度がもうちょっとマシだったかもしれないんですが
たとえ主人公と言えども複数出てくる面があるし、横に16個並ぶなんてのもあるので諦めました。
VDPコマンドだけアセンブラにしましたが、使うのも久しぶりだったので、割り込みのかけ方をすっかり忘れてました。
VDPコマンドのウェイトから実行までを一括りにして割り込みを禁止しなきゃいけなかったんですね。
エミュレータ上では分けてても動いたので、いざ友人に実機で試してもらって
「固まった。ポーズキーを押したら動いた」と言われた日にゃ、どーゆーこったと思いましたよ。
実機ではVDPとCPUは並行して動くんですね。だからウェイトが重要だし、ちゃんと割り込みを
制御しなくてはいけないのでしょう。ところがエミュレータでは、
VDPコマンドを実行した時点でVDPの動作のみを終わらせてしまう。ウェイトなんぞ関係無い、と。
これだけ細かく分析しても、もう役には立たないだろうというが悔しいけどぉ(笑)