High C コンパイラを使用してC言語のみでのプログラミング、拡大表示機能を使って640*480 16色の画面モードを320*120相当に変換、割り込み支援ライブラリ「HIS」で垂直同期毎に指定の関数を読み出すようにして偶数フレーム毎にEGB_putBlockでバッファ上にある画像データをVRAMに書き込み、ランレングス圧縮されたデータをバッファ上に解凍していくが1ドット分しか変化しない箇所は2ドット処理して圧縮効率を上げているので実質横160ドット。その後、見直して先に4階調化でデータを圧縮できないか確認して最終手段として横160ドット化するように修正。
ただし、本来なら去年11月の次世代機Xbox Series S / Xのロンチタイトルとして発売予定だったものの去年7月に発表したデモの反応を受けて急遽延期となってしまい、本来の発売予定から約1年後の12月8日発売予定となったが、Halo 3からの特徴的な機能だったキャンペーンモードのCoopやフォージ(マップの編集機能)といった要素は今後のアップデートで追加実装予定、マルチプレイヤーモードが基本無料となっておりキャンペーンモードは7,590円の"DLC扱い"という不安を覚える要素がある。過剰な期待はしないで発売を待っていたほうがいいだろう。
CDブート前提のソフトの場合、リセット時にキーボードのFキーを押しっぱなしで高速モード/Nキー押しっぱなしで互換モード、FM TOWNS II HR以降の機種ではゲームパッドのABボタンを押し続けながら本体のリセットをかけると起動ドライブ・高速/互換モード切替のメニューが出てくるので、Aボタンで選んでいる黄色枠内の項目を切り替え、Bボタンで黄色枠を移動して最後に「終了」を選べば設定することが出来る。
FM TOWNS II以降の実機やエミュレータ「津軽(Ver2022/07/02以降より)」「うんづ」ならば上記の設定が行えるが、エミュレータ「うんづ」でまだ早すぎるようであればCPU速度設定を8MHz設定にするとちょうどよい速度になるかもしれない。感覚的に8MHz設定で386DX 16MHz 3ウェイト・386SX 16MHz 0ウェイトくらいのようだ。
FM TOWNSの一開発環境である「F-BASIC 386 インタプリタ/コンパイラ」はCD内のアイコンにある「HD INSTALL」を実行して画面に沿っていけばハードディスクにインストールすることができるのだが、紙マニュアルの方にしか記載されていないと思われる注意事項としてAUTOEXEC.BATで環境変数を変更しておかないとFM/PCM音の標準の音色がおかしい、BASICインタプリタエディタからオンラインマニュアルが参照できない、という問題が発生する。
CPU 486以降搭載の機種かつメモリに余裕がある環境のみ有効だが、12ドットフォントの表示を高速化する場合はOSドライブのフォルダSYSINIT内にあるSYSINIT.SYSをテキスト編集で開いて、/SYSRとなっているところを/DATAに書き換えるとROMから読みだされずメインメモリ上に展開されたフォントから読みだされるようになって高速化する。
FM TOWNSエミュレータは長らく「うんづ」が代表的なソフトとなっていて、再現性もなかなか高かったとはいえ10年以上更新されておらず、一部ソフトで不具合があるのに修正されずじまい(ALLTYNEXやデスブレイドで描画がおかしい)、エミュレータから直接CDイメージを読み込むことが出来ない・Windowsが高DPI設定になっているとマウス操作ができないといった問題点もあるため、今回は2020年に登場した「津軽」を紹介する。
ここからは、今更なんでこんな代物を作ってしまったかという駄文。 FM TOWNSとは、1989年に富士通より発売されたパソコン。 32ビットCPU「80386」(今でもPCで使われているCPUのご先祖だ)、世界初CD-ROMドライブ標準搭載、32768色同時発色、同時8音PCM音源と当時としてはなかなかのカタログスペックだったが、発売初期はハードウェアの作りこみやソフトウェアラインナップの貧弱さといったイメージの悪さ、問題点が改良されてくる90年代前半にはDOS/Vによる安価なIBM PC互換機での日本語表示の確立やその後のWindows 95の発売によって日本独自アーキテクチャPCの存在意義がなくなり、1997年にFMV-TOWNSを最後にシリーズ発売が終了となってしまった不遇の機種。 世間ではとやかく言われることの多いPCではあるものの、流石に今の水準では色々と劣るがGUIによるファイル操作や各種設定が行えた「TownsOS」や、HDD起動せずともCD-ROMから直接ゲームといったアプリをブートできた手軽さは当時小学生だった自分にはPCを操作するという行為を覚えさせてくれたマシンであった。 市販ゲームはアーケード移植は弱くとも最低でも32ビットCPUだったという点を生かして、IBM PCやPC-98が80386を搭載してもただの早い16ビットCPUとしか動いていなかったのと違い32ビットネイティブコードを実行(正確にはMS-DOS上でDOSエクステンダで32ビット&1MB以上のメモリ環境を使えるようにしている)できていたのとCD-ROMドライブやPCM音源搭載だったために、PCゲーム移植では処理速度は申し分なく音声周りがTOWNS版のみ豪華というタイトルも珍しくなかった。
ただ、一つだけ、一点だけ、残念なことがある。 それはFPSの金字塔「DOOM」が移植されていないのだ。 1993年にid Softwareより発売された「DOOM」はテクスチャマッピング付の立体的なグラフィック描写、個々によって特質の違うモンスターや武器、優れたマップデザインによってヒットとなり当時でも各種コンソール機、更に(一応)TOWNSのライバルでもあったPC-98にも公式に移植され、その後Linux版ソースコードが公開されたことによって非公式にATMやデジカメといった珍機種、こちらも当時は公式移植されなかったX68000にまで移植されることとなり、32ビットCPUと4~8MBのメモリがあるコンピュータがあるならハッカーが移植するというネタになっているのだが、今の今まで32ビットCPU搭載・メモリも必要十分載せられるという条件を満たしているTOWNSに移植されていないのである。 Windows 95の登場によってIBM PC互換機に環境が移った際、そのPC上で動くDOOMを遊んだとき「これがTOWNSで遊べたらなぁ」という悔しい思いをしていた自分だが、悲しいことにその当時はC言語の知識はなく自力でFM TOWNSへの移植なんて夢のまた夢だった。
そんな悔しい思いをしてから24年後。捨てていなかったOSやフリコレ(大量のフリーソフトをCDに焼いて公式に市販されていたもの。パソコン通信しかなく繋ぐだけで1分数十円の料金がかかるのでTOWNSユーザーには重宝された。)といった当時の物や21世紀になってからオークションで購入していたはソフトはまだ手元に残っていたものの、所有していたFM TOWNS 2FとFM TOWNS II MXをどちらもCDドライブが故障して使えなくなってしまい、エミュレータにしても「うんづ」というある程度完成度が高いものが存在するものの、既に10年以上更新もされておらずCDイメージを直接読み込めない(仮想CDソフトは今のPCになるべく入れたくない)ということでCDをその都度交換して読み込むのが嫌いな自分は触らなくなっていたのだが、物置を整理していた時に紛失していたと思われていた残りのソフトが見つかり、その中にFM TOWNSの標準C言語開発環境である「High C コンパイラ V1.7」や後述する割り込み用ライブラリ「HIS」(ちょもらんま氏作)を収録していたOh! FM TOWNS誌付録のCD「天晴 Vol.2」があったのだ。
他にも移植しようとした物好きな外国人がいたものの、印象としてかなり移植を実現するのは困難な雰囲気だったので、おそらく無理だろうと思って自分が取り掛かったわけなんだけど、本当にこれがいばらの道なのなんだって。 当たり前なんだけど、今更FM TOWNSの開発環境に関する資料なんて探しても殆ど現存しない。ソフトこそ見つかったけど、当時でも情報源として唯一といっていいくらいだったOh! FM TOWNSといった参考文集とかは流石に残っていなかった。 High CのCD内にテキストファイルでマニュアルがあるものの、本当にただのテキストファイルで見易い目次が用意されておらず知りたい情報があっても延々と上から下まで読んでくしかないわ、サンプルプログラムにしても説明不足な点が多かったりやりたいことに限ってサンプルなんて存在しないから結局自分で試行錯誤するしかないという。 まともなデバッグ機能や統合開発環境も無い中80~90年代にCで規模の大きいプログラム組んでた人は本当に凄すぎる・・・小学生だったから理解できないというのもあるけど、あの頃やってたらまず間違いなく挫折する。
コンパイルエラーで止まったり、コンパイルが通ったと思ったら起動中にフリーズするとかそもそもタイトル画面すら表示してくれないという状況が作業開始から2週間ほど経ったが、とある人のアドバイスがヒントとなりHigh C コンパイラのオプションを変更すると悩んでいたことの多くが解決するということがわかりようやくタイトル画面がお目見え。 ここから更にゲームが安定して動作するまでにちょっと手間取ったり、効果音を多重再生する処理の実装に悩んだが作業開始から1カ月である程度完成することとなった。 パフォーマンス的には同じ画面設定・音声出力ありのIBM PC版を同CPU・L2キャッシュなしで動かしたときよりも若干フレームレートが低いかもしれないが、遊べなくはないくらいのレベル。33MHz駆動だとSegaSuper 32X版相当だ(わかりづらい)。 FM TOWNS版はほぼオリジナルのCソースのままでBSP(バイナリ空間分割)部分の処理方法は別のソースに置き換えたものの他に大きく改良したところはなく、アセンブラ化しているのは固定小数点計算の乗除算部分のみに対して、IBM PC版は直接ビデオカード上のフレームバッファを操作したり天井/床描画関数をアセンブラ化しているといった最適化を施していたりと有利な条件がある中では割とよくできているかな。