FM TOWNS用フリー互換OSが登場。「パニックボール2」「VSGP」「Sky Duel」「ALLTYNEX」「VIPS」がそのまま遊べる。

1989年に富士通から発売されたパーソナルコンピュータ「FM TOWNS
完成度の高かったエミュレータ「うんづ」や、山川機長さんの開発したエミュレータ津軽」及び互換ROM(PCで言うBIOS)によってTOWNS実機がなくとも当時のTOWNSソフトウェアを実行させる術が確立できていたが、エミュレータやROMがあっても互換OS(TownsOS)が出来ていなかったため、今でも入手可能なフリーゲーム等をそのまま遊ぶことが面倒であった。
TownsOSは本体とは別売だった関係で流通数が多くはなく、機能の劣るV1.1系統でも数千円、大半のソフトを動かすために必要で実質的にこれを買うことになるV2.1系統でも3,000円以上が相場となっており、機能オミット版TownsOSが収録されたフリコレや天晴なら数百円で買える事もあるもののこれらもいつでも入手できるわけではなかったり環境を整えるのがやはり労力がかかるし、フリーゲームなのに遊ぶには出費がかかることに変わりない。
そんなTOWNSフリーゲーム環境が続いていたが、なんと前述の山川機長さんが今度はフリー互換TownsOS「津軽OS」を作成したことによって、エミュレータ・互換ROMを組み合わせて今度こそ真の意味でフリーな環境で遊べる状態となったのだ。
ただエミュレータ・互換ROM・OS・各ゲームと各自でファイルを取得していって設定したりイメージファイルを作ったりと環境を整えるのはかなり面倒でそこで挫折する人が大半だと思うので、それらをまとめたファイル一式を用意し、各ゲームがファイル名に書かれたバッチファイルを実行するだけでゲームが遊べる状態にしました。これで相当敷居という面も低くなったはず。

Googleドライブ - FM TOWNS フリーゲーム一式

※セキュリティソフトによってはウイルスを検出と誤認される可能性もあるが問題ないファイルです

圧縮ファイルをダウンロードしたら適当な場所に「TOWNS_Free_Games」フォルダを展開し、フォルダ内に入っている各ゲーム名が書かれたBATを実行するだけでそのゲームが起動します。ゲームの説明文などは「DOC」フォルダに収録、「Tsugaru」フォルダはエミュレータ本体・互換ROM・各ゲームのデータファイルやブート用FDイメージが入っています。

 

以下は注意書き

  • 収録されているエミュレータ・互換ROM及びOS・互換OS内に含まれる外部提供ファイル・各ゲームファイルの著作権は各作者様に帰属します。
  • 津軽エミュレータ及び互換ROM(山川機長氏)・Sky Duel(Makken氏)・VIPS(M.J.KOZOU氏)・ALLTYNEX(じるるん氏)に関しては念のため再配布許可の確認を取っていますが、パニックボール2(ジュニア氏)及びVSGP(T'S氏)については連絡がまだ取れていない為に再配布許可をもらっていません。ただし、VSGPのドキュメントに転載可能という表記があること、パニックボール2は2次配付サイトが長年存続しているものの特に問題は生じておらず、また仮に収録しなくとも結局そこからファイルをダウンロードする形となって意味をなさないのでそのまま収録しています。問題があるようでしたら削除します。
  • 各ゲームの不具合や不明点を見つけた、対応して欲しいフリーゲームや市販ゲームがある場合はGithubのIssuesに送っておくか、FM TOWNS Wiki掲示板Discordのフリー互換OSの話題に記載するといいかもしれません。(Discordの方はどちらかというと直接的な開発そのものの話題になっているので、詳しくない人はGithub掲示板の方がいいかも)。
  • オリジナルTownsOSを使って動かした際に問題が発生していないことは確認済みのため、問題があるようでしたらエミュレータか互換OSの問題と思われます。各ゲーム作者様への技術的な質問はお控えください。

 

  • 「VSGP」「Sky Duel」でBGMが鳴らないのは元からの仕様です(音楽CDをBGM代わりとする)

 

TownsOS互換という性質上、オリジナルTownsOSと挙動が違う箇所があります。以下は現時点でわかっている範囲

  • 現時点ではCoCo(プロンプトモードで書かれたドライバの常駐・解除を行うソフト)・forRBIOS(プロテクトモードの割り込みを行う部分)が実装されていない。「VIPS 2」を収録しようと思っていたものの、この問題がまだ解決していないので代わりとして初代VIPSをファイルに入れている。
  • TBIOS(TOWNSハードを制御するAPI/ドライバにあたるもの)互換「TGBIOS」はまだ未実装な箇所が多く、デバッグのために未実装コールを読み出すとエミュレータが停止するようになっている(収録されているゲームを動かす分は実装済み)。
  • オリジナルTBIOSの挙動が完全に再現できておらず、FM音源・PCM音源の音量・音程設定が違うのでBGMがやや異なる。

 

  • 原因は不明だが、FM TOWNSエミュレータ「うんづ」では互換OSの動作が不安定です。VSGPでレースを開始しようとすると落ちる等。
  • エミュレータ津軽」が割とPCスペックを要求するので、Sky DuelやALLTYNEXを動かす場合は第8世代以上のIntel CPU・同等AMD CPU(Windows 11が動くCPUなら確実)を推奨します(実際にはそれ以前のCPUでもCore i7 4790Kとかの上位CPUなら問題なくフルフレームで動作するけど表記的にわかりやすいので)。
  • 「パニックボール2」「VSGP」「Sky Duel」「ALLTYNEX」のプレイにはゲームパッドが必要です(USB接続のXboxコントローラで動作確認)。「VIPS」はマウス操作。

 

 

以下、収録ゲームタイトルの簡単な説明

「パニックボール2」

ブロック状になっているマップのパイプを動かし、パイプ内を転がっていくボールを右下のゴールまで導いていくパズルゲーム


「VSGP」

対戦プレイも可能な見下ろし方レースゲーム。

 

「Sky Duel」

ボクセル表現で描画された地形を飛行しチェックポイントを通過してタイムを競う3Dフライトレース。

 

「ALLTYNEX」

通常ショット、ホーミングレーザー、ロボットに変形して近接でのサーベル攻撃、巨大レーザー、と4つの攻撃方法を切り替えながら進む縦スクロールシューティング。Windows用にアレンジ版も開発中。

 

「VIPS」

5*5になっているマスにカードを並べてポーカーの役を作って指定スコア越えを目指すカードゲーム

 

エミュレータという性質上遅延はどうしても発生しますが多少軽減する方法として、どれでもいいからBATファイルを実行して津軽エミュレータを起動、NVIDIAドライバから「3D 設定の管理」を開き「プログラム設定」タブ→「追加」ボタン→「Tsugaru_CUI.exe」を追加して

「Vulkan/OpenGLの既存の方法」を「DXGI Swapchainのレイヤーを優先する」
「垂直同期」を「オフ」
に設定して、「適用」ボタンを押してください。


AMD GPU及びIntel GPUでの同様の設定方法は自分はわかりません)。

 


以下、この互換OSが誕生した小話とか。


キッカケとなったのはDiscordのコミュニティでPC-8801mkⅡSRのミニが発売されるという話になった時の事。一ミリもTOWNS関係ない話題だったが、この機種が許可されたファイル以外は任意のイメージファイルを読み込めない仕様だったんで「仮にTOWNSミニが出るならエミュレータ起動に必要なファイルだけ配って後は勝手に各自やってくれっていう方針の方がいい」と自分は発言する。それと同時に「富士通以外にマイクロソフトやPhal rapの許可も必要なんでハードル高すぎ」と考えてしまう。
というのもTownsOSの実態はマイクロソフトMS-DOSにPhalrap社製のDOS上で32bitプログラムを動かすDOSエクステンダ「RUN386」を組み合わせ、更に富士通が用意したIO.SYS(キーボード・時計・ディスク等の管理)とTOWNS固有のハードを管理するTBIOSというドライバを組み合わせたものがコアとなるのだ。

マイクロソフトはともかくとして、Phar lap社自体はIntervalZeroという会社に吸収されていたり、富士通もPC事業はレノボに吸収され中のスタッフもFM TOWNSをFMVファミリーとして扱うほどになっているので当時の権利許可をちゃんと把握出来ているかも未知数なのだ。
そんな発言をすると、今度は山川機長さんが「既に互換ROM(FM TOWNSのROMはMS-DOSが組まれている関係上、互換ROMには互換DOSが入っている)ができているし、DOSエクステンダは既にある互換ソフトのFree386で置き替えられそうだから、あとはIO.SYSやTBIOSだけなんとかすればできそうだけど、それらを書いたらどれだけ大変なんだろうかと時折発作が起きる」という旨の発言をする。
その発言からふと自分も考えていたことがあったので「TBIOSってC言語、TOWNS標準の開発環境であるHigh Cコンパイラで組めませんかね?」って質問を投げてみる。何故こんな質問をしたのかというと、IO.SYSはリアルモード(8086互換用の16bitコード)なのでアセンブラが必須になるとはいえ、TBIOSはプロテクトモード用のプログラムでやっていることを大雑把に言えば引数を元にしてI/OレジスタやVRAM・サウンドRAMの操作をしてるだけなのだ。High Cで組む通常のTOWNS用ソフトはプロテクトモードなので出力されるコードがそのまま使える、しかもI/O操作は内部関数で用意されていたりメモリ操作もセグメントポインタで指定すれば行えるので、普通にソフト作る感覚で出来てしまうのではないか、実際にFM TOWNS版CELESETEを移植したときにTBIOSのスプライト用関数を使わないでポインタで直接スプライトRAMを弄ってスプライト制御したんだから同じなんじゃないのかと思ったのだ。更にOh! FM TOWNSの連載記事でBASIC用のバイナリルーチン(REX)をHigh Cで作るという特集があって、これを参考にすればHigh Cが出すファイルを余分なヘッダー部を切り捨てて簡単に必要なバイナリ部分だけ抜き出せるんじゃないのかというのも根拠だった。
TBIOSは(アセンブラで書くには)そこそこ大きめなプログラムなのでこれがC言語で書けるようになるだけでも相当労力が減るだろう、という見積だったが、思い立った山川機長さんが互換OSの開発を進めていき検証の結果考えた通りTBIOSはC言語で作れることも確認。流石にDOS互換部分やIO.SYSそのもの、互換TBIOSのコール部分や最適化についてはアセンブラを頼ることとなっているが、TGBIOSのコード大半はC言語による記述となっている。
それと、自分がC言語で作れるかもと言った言い出しっぺだし、実際ちょっとでもいいからTBIOS相当をC言語で組んでみたいと思っていたのでスプライト部分の関数(SPR_###)と、一部サウンド周りの修正とかのコードも送っておいたりしました。