FM TOWNS用アクションパズルゲーム「くるんくる~ぱ」(2023年製)

シャープのパソコン「X68000」向けに「くるんくる~ぱ」というアクションパズルゲームソースコードがMITライセンスの元公開されていたので富士通のパソコン「FM TOWNS」にも移植できるんじゃないのかと思い立って約10日間くらいチマチマ進めて作ってみた。

おそらくマーティーを含むFM TOWNS全機種で動くはず。エミュレータ津軽」では問題なかったが、「うんづ」だとゲーム中の音楽のテンポがおかしくなる不具合あり。

DOOM」、「CELESTE Classic」、そしてこの「くるんくる~ぱ」と令和になったのに33年前に発売されたパソコンで新作が幾度と登場している快挙。まあ全部自分でやって、全部移植作でオリジナル作品はないんですけどね。


Googleドライブ -「くるんくる~ぱ」 for FM TOWNSのソースコードと実行ファイル

 

最初は31KHz画面モードを使って表示しようとしたのだが、この記事を書いている時点の「津軽」だとどうもCRTCを直接弄って4:3比率の画面(TOWNSはスプライト使える画面がほぼ1:1構成なので工夫が必要)に引き延ばして試してみると、画面の拡大表示時に余計な部分まで表示されるエミュ側の問題があるようなので、代わりに15KHz画面モードを使ってCRTCを弄らずに拡大表示機能のみ使って4:3化を行っている。実機で15KHz画面を見た際にスキャンラインが開いた画面が嫌いだった自分にはしゃくではあるが、31KHzでCRTCでの引き延ばしを行うとこちらも表示に不具合が発生するマーティーでの動作も問題なく行えるようになるので、初回リリースでは15KHz版で出しておこうと思う。

一応ソースコードのGRAPHICS.C内の#define MODE_5を1にすれば31KHzになるので、マーティー以外の実機や津軽が修正された際はこちらを試しても良い。

※1月18日追記:ファイル内に31KHz版追加

 

X68000FM TOWNSで仕様に違いがもちろんあるので、もちろん完全なベタ移植とはならず微妙なアレンジがされているが、差異は以下の通り

  • 68000アセンブラで記述されていたグラフィック・スプライト操作部分はC言語関数に変更
  • FM TOWNSは画面レイヤがスプライトとビットマップの二枚しかない。X6800版では緑色の背面がテキスト面、青色の枠やタイトル表記などがグラフィック面と別れていたので、TOWNSでは1枚のビットマップに結合。玉上下にある枠も重ねて表示できないので撤去
  • スコア部分の数字もX68KではBG面に書かれていてこれもTOWNSには存在しないので、数字もスプライト表示化。X68K版はスプライトダブラーでスプライト数を増やしていたが、画面一番下の玉半分を表示しないなどしてほぼ全部表示してもTOWNSでスプライト60fps更新を維持できる31KHz画面では227枚、15KHz画面では230枚の範囲となるワーストケースでも222枚までに収まってくれた
  • 16色でのスプライトだと玉の色にマッハバンドが見えて汚く感じるので、TOWNS版では特有の32768色ダイレクト表示スプライト機能を使用して表示。だいぶ鮮やかになった
  • X68Kではコントラスト機能でフィードイン・アウト表現が行われていたが、TOWNSにはそのような機能がないので代わりに整数倍で行える拡大表示機能を使いゲームタイトルの部分にズームイン・アウトする表現に変更。縦横独立で1~16倍の拡大表示が行え、デフォルトだと4:3比率化のために横5倍・縦1倍表示、それを1フレーム毎に縦横別々に倍率を1ずつ増やしていって更にVRAM表示開始位置も変えてそれっぽくなるように調整
  • X68KではZ-MUSICというサウンドドライバを使っていたが、それ用の音楽データをTOWNSに持ってくる方法が知らない、ってか無いと思うので、別物に変更。効果音は利用フリーでネット上に上がっていたファイルを加工してSND化、音楽はフリーソフトウェアコレクション11に収録されていたF-OKESHI氏作曲の「One Morning」と「P・S・G Dream '95」を使用させていただきました