とある開発中のサバイバルホラーゲーム、意図しないバグによってさらに怖くなる

 人形劇番組の人気が低迷しそのまま放置されたスタジオで、古いアンテナの修理に派遣された修理屋ゴードンが襲ってくる人形に対処したりマップ上のパズルを解きこのスタジオの秘密を解き明かすサバイバルホラーFPS「My Friendly Neighborhood」

セサミストリートバイオハザードとも言える内容で現在はSteam(PC)版の発売を目指して開発中となっているが、開発途中ということで意図しないバグが発生しており、その映像を開発者がTwitterで公開しているのだが・・・

 

 

 こちらの存在に気づいていない人形を撃った瞬間、何十体にも分裂してBrain!Brain!Brain!叫びながら笑顔で襲い掛かってくる。掴み範囲が広いのか突然ドアップになる人形の顔、ウワァーーー!ワァーーー!という奇声、建物のカラフルなデザインも併せて、熱帯夜にうなされて見る悪夢そのものだ。グロテスクな物を見たとかそういう恐怖ではなく、本当に得体のしれない物に触ってしまったかのような精神的な恐怖。

バグではあるものの、開発者のツイートから察するにもしかしたら何らかの形で製品版の演出に採用されるかもしれないが、ここまで(そんなつもりはなかったのに結果的にそうなってしまった)怖い演出もそうそうなかろう。

「Forza Horizon 5」と「Halo Infinite」Steam版が予約開始。Halo Infiniteは日本語音声対応?

長らくXbox独占タイトルとして有名だったオープンワールドレースゲーム「Forza Horizon」とSF FPS「Halo」シリーズ最新作「Forza Horizon 5」「Halo Infinite」の両タイトルがPCゲーム配信サイトSteamで予約が開始されている。

 「Forza Horizon」シリーズはレースシムだった「Forza Mortorsport」(FM)のスピンオフとしてリリースされたもののすっかり本シリーズ的な扱いになってきたが、アメリコロラド・ヨーロッパ フランスやドイツ・オーストラリア・イギリスとシリーズ毎に舞台を移してきて今作ではメキシコが舞台となる。数百台以上もある実在車に乗り込み、一般車両も走る公道や道なき砂漠や森林内でもレースを行い、レース以外では自由にマップ上を走行できフレンドと共にツーリングを楽しめるようになっている。

配信予定日は11月9日、日本語字幕のみの対応で音声は英語、価格はゲーム本体のみのスタンダードエディションが7,590円、ゲーム以外にカーパス入りのデラックスエディションが9,680円、ウェルカムパック・VIPメンバーシップ・拡張パック2つの他に11月5日から早期アクセスプレイが可能となるプレミアムエディションが11,880円となっている。

プレイにはXboxアカウントが必要となっているが、おそらくSteam版でもXbox実績が解除可能、Xbox&MSストア版とのクロスプレイには対応しているがセーブデータの共通は不可能とのこと(参考:公式FAQ)

 

SF FPS「Halo」シリーズの最新作「Halo Infinite」。広大とはいえリニアなマップ進行だった旧シリーズとは違い、今作からはオープンワールド形式になっておりマップ上を散策しアップグレードや新たな武器を探すといった新要素も追加されている模様。

ストーリーはHalo 5(PC版未発売)となっており、大敗を喫したUNSC(国連宇宙軍)艦隊は部隊が散り散りとなってしまう。そんな状況下の中で主人公のマスターチーフはリング状の惑星「ゼータ ヘイロー」の大地でエイリアンの武装組織バニッシュトとの戦いを繰り広げていく。

発売予定日は12月8日、最近のXbox系列のタイトルは日本語ローカライズがおざなりになることが多く、良くて日本語字幕、悪いとファーストタイトルとは思えない直訳や最悪日本語なしといったことも多かったので、ファンの間では今までのシリーズにあった日本語音声ローカライズが今作で無くなるかと心配されていたが、Steamストアページの対応言語一覧を確認する限りではUI・音声・字幕全て日本語化されているようだ。

ただし、本来なら去年11月の次世代機Xbox Series S / Xのロンチタイトルとして発売予定だったものの去年7月に発表したデモの反応を受けて急遽延期となってしまい、本来の発売予定から約1年後の12月8日発売予定となったが、Halo 3からの特徴的な機能だったキャンペーンモードのCoopやフォージ(マップの編集機能)といった要素は今後のアップデートで追加実装予定、マルチプレイヤーモードが基本無料となっておりキャンペーンモードは7,590円の"DLC扱い"という不安を覚える要素がある。過剰な期待はしないで発売を待っていたほうがいいだろう。

FM TOWNS ・ TownsOS 使い方 Tips

1989年に富士通より発売されたパーソナルコンピュータ「FM TOWNS

世界初の32ビットCPU & CD-ROMドライブ標準搭載というコンピュータ史に名を残す機種で、マイナーではあったがかつてはある程度アプリやファンサイトもネット上に上がっていたものの、仕事の関係上公開できなくなったりWebサイトサービスの終了などによってそのまま消失してしまったりというところもあり、消えていても普及台数の多さから数があるPC-98シリーズやBIOSやOSが無償公開され今でも熱狂的なユーザーが情報交換しているX68000シリーズとは違い、どうも現存する情報が少なすぎる。

オープンソースエミュレータ津軽」やその互換BIOSによって、FM TOWNS実機はなくともソフトだけは入手して仮想TOWNS環境は構築できるようになったが、当時現役TOWNSユーザーではなかった利用者やかつては使っていたものの20~30年前も前のことなので使い方を忘れたという人もいるかと思われる。

そういう人のために、ここでは特にFM TOWNSを使う上で基本システムとなるTownsOS V2.1の基本的な使い方やインストール方法、またエミュレータである「津軽」の設定方法を簡単に説明していこうと思う。旧バージョンとなるV1.1は自分自身殆ど使ったことが無く、またV1.1世代のソフトもCD・FDブートが主流でOS操作を行う機会があまり無く、あっても実行するプログラムのアイコンをダブルクリック程度なので取り上げなくても問題ないはずだ。

 

  • 特定のソフト(ゲーム)の動きが早すぎる、マウスカーソルが飛ぶ 

 FM TOWNS初代機から3代目までの機種(メインメモリ 3ウェイト・VRAM 6ウェイト)を前提に作成されているプログラムを動かすと動作が早すぎたりマウスカーソルが飛んでしまう、最悪の場合プログラムが途中で止まってしまう問題。

FM TOWNS II以降の機種だと高速モードというメインメモリ 0~1ウェイト・VRAM 3~4ウェイトに設定(CPU 486機はキャッシュメモリも有効化)され、ディスクインターフェースであるSCSIの応答速度が2割ほど高速になる(更に横置き機種だとCDドライブも倍速化)機能が追加されており、これを有効にしたままなのが原因。

TownsOSが起動している最中なら画面上中央の「設定」メニューより「高速モード」の項目をクリックして項目についている四角チェックを外し互換モードにすれば解決する。

f:id:BCC:20210811132300p:plain

互換モード時はTownsOS GUI動きそのものがかなりモッサリしてしまうので、起動対象のアイコンやファイルのウィンドウを先に出しておくことをお勧めしておく。

 

CDブート前提のソフトの場合、リセット時にキーボードのFキーを押しっぱなしで高速モード/Nキー押しっぱなしで互換モードFM TOWNS II HR以降の機種ではゲームパッドのABボタンを押し続けながら本体のリセットをかけると起動ドライブ・高速/互換モード切替のメニューが出てくるので、Aボタンで選んでいる黄色枠内の項目を切り替え、Bボタンで黄色枠を移動して最後に「終了」を選べば設定することが出来る。

f:id:BCC:20210811133224p:plain

FM TOWNS II以降の実機やエミュレータ津軽(Ver2022/07/02以降より)」「うんづ」ならば上記の設定が行えるが、エミュレータ「うんづ」でまだ早すぎるようであればCPU速度設定を8MHz設定にするとちょうどよい速度になるかもしれない。感覚的に8MHz設定で386DX 16MHz 3ウェイト・386SX 16MHz 0ウェイトくらいのようだ。

  

 

  • TownsOSでファイル操作、アイコンの登録方法

 今どきのWindows OSなどに慣れていると面食らうかもしれないが、Towns OSではアイコン表示とファイル表示がそれぞれ別物で表示され、アイコンの画像もそのファイルに埋め込まれたものではなくOS上に登録されたものが表示されるようになっていることを覚えておこう。

また、Windowsでいう右クリックメニューに相当するものは画面上左寄りにある「ファイル」メニューを左クリックで開くことで表示される。

TownsOS上でドライブを開くとまずウィンドウにはアイコンが表示されるが、これらはドライブ直下にあるTMENU.ITMというファイルに登録されたデータをTownsOSが読み取って表示しているのが実態だ。Windowsと違いファイルそのものを表示しているわけではなく、追加/変更は特定箇所から行う必要がある。

新しくアイコンを追加するならアイコンが表示されているウィンドウを前面に出しておいて何もアイコンを選んでいない状態で「ファイル」メニューより「アイテム管理」→「登録/変更」

f:id:BCC:20210811135813p:plain

「アイテム登録/変更」ウィンドウが表示されるので左上側のドライブアイコンをクリックして対象の実行ファイル(EXPやEXE)を選択。

f:id:BCC:20210811140018p:plain

f:id:BCC:20210811140045p:plain

起動する実行ファイルがされたら今度は左側中央のアイコンをクリックして、表示したいアイコンを選択。TownsOS上に登録された物しか表示されないがOSに付属する「アイコン編集」ツールで新しい物を登録したり作成することもできる。

f:id:BCC:20210811140341p:plain

f:id:BCC:20210811140353p:plain

最後にアイコンのタイトルやアプリケーション区分(実行ファイル拡張子がEXPならTownsOS、EXEやCOMなどのDOSプログラムならMS-DOS、かなり古いEXPファイルならV1.1)やパラメータを設定、「ディレクトリ移動」は基本的に「あり」にして実行を押せば登録される。

f:id:BCC:20210811140429p:plain

f:id:BCC:20210811140453p:plain

 

ファイル操作を行いたい場合はアイコンが表示されているウィンドウ右上にある小さく四角形の線が二つ重なったボタンを押すとアイコン/ファイル/ツリー表示の切り替えができる。

ちなみに、TownsOSの土台となっているMS-DOSではWindowsでいう「フォルダ」は「ディレクトリ」、ファイルシステムであるFAT16の仕様でファイル名は8文字・拡張子名は3文字までとなっていることを覚えておこう。TownsOSのファイル表示では名前と更新日時の間に「<<DIR>>」と入っていればディレクトリ(フォルダ)、ドットの後に3文字の英数字か空白が入っていれば単体ファイルだ。ダブルクリックすることでそのフォルダ/ファイルを開ける。

f:id:BCC:20210811141435p:plain

f:id:BCC:20210811141448p:plain

ファイルやフォルダを別のフォルダやドライブにコピーする場合は、Windowsと同じようにコピー先のフォルダのウィンドウを表示させておいてコピーしたい物をクリックして暗転させて選択状態にしドラッグ&ドロップでコピー先のウィンドウに放り込むだけで完了する。

上で記述しているとおり、ファイル/フォルダの削除や名前変更などのWindowsの右クリック相当の選択肢はファイルを選択してから「ファイル」メニューから行えることを忘れずに。

f:id:BCC:20210811141945p:plain

また先ほどのウィンドウ右上のアイコンを再び押せばまたアイコン表示への切り替えの他にファイルの表示順を拡張子の種類順や更新日時順に切り替えることもできる。

f:id:BCC:20210811142003p:plain

 

 

  • TownsOSをハードディスクにインストール

CDドライブ標準搭載でCDからの直接ブートまで可能だった機種ではあるものの、1~2倍速という遅い読み込み速度でのCDからの運用はかなり厳しいものがあるのでハードディスクでの運用をお勧めしたい。

FM TOWNS実機でSCSI HDDを接続したり、エミュレータSCSI HDDのディスクイメージを適当なSCSI IDに割り当てただけではまだドライブが認識しないのでその設定から行う。

f:id:BCC:20210811142426p:plain

CDブートでTownsOS(今回の解説ではTowns システムソフトウェア V2.1 L51を使用)を起動したら、画面上中央の「設定メニュー」より「ドライブ構成」を選択。

f:id:BCC:20210811142637p:plain

f:id:BCC:20210811143015p:plain

SCSI HDD(エミュレータの場合はディスクイメージ)に割り当てているID番号のドライブ番号をクリックして「ドライブを追加する」を選んで実行。

f:id:BCC:20210811143035p:plain

MS-DOS 6.2を組み込んだTowns OSなら1区画127MB以上の容量を設定できるが素のTownsOSでは最大127MBまでしか割り当てられないので、例えば512MBのHDD(ディスクイメージ)は512MB÷127MBで4ドライブ分同じことを繰り返して作ればいいだろう。

f:id:BCC:20210811143235p:plain

ドライブ構成の設定が終わったら「実行」を押して一旦TOWNSをリセット、今度は「設定メニュー」より「区画設定」を選択。

f:id:BCC:20210811143333p:plain

区画番号の1番目の列をクリックして「区画名」にドライブに入れるファイルの種別の説明を記述(ここではOSインストール先なのでTownsOSとしておく)、OS種別は「MS-DOS」、設定容量は最大値の127MB。

f:id:BCC:20210811143543p:plain

f:id:BCC:20210811143608p:plain

f:id:BCC:20210811143618p:plain

残っている4つの区画にも同じように設定を行っていき、起動のチェック項目は一番上のTownsOSインストール先にのみチェック。

f:id:BCC:20210811143655p:plain

「実行」をクリックするとメッセージの後に「システムの複写」と「ディスクの名前」設定が出てくるが、一番最初の起動ドライブに設定したドライブ(ここではDドライブ)のみ「システムの複写」を「する」に設定、「ディスクの名前」はこれもそのドライブの用途を分かりやすくする名前を入力して「実行」。

起動ドライブ以外では「システムの複写」は「しない」、「ディスクの名前」のみ同じように分かりやすくなるよう入力しておく。

f:id:BCC:20210811143753p:plain

HDDの設定が終わったら今度はTownsOSのインストール作業。CD(Qドライブ)内のアイコンから「ツール」→「HDインストール」を実行。

f:id:BCC:20210811144230p:plain

複写するOSはもちろんTownsOSの方、空のHDDにインストールするので新規作成を選択、区画設定などは行っているので「既存ドライブ」より「Dドライブ」を選択。

f:id:BCC:20210811144318p:plain

f:id:BCC:20210811144417p:plain

f:id:BCC:20210811144523p:plain

インストールプログラムの選択。HDDの容量127MBでは全データをインストールしきれないので必要最低限のものだけ入れる。大体の利用者の場合、

TownsOS(コンソール)

TownsGEAR ※追加データも入れておく

ツール ※オンラインマニュアル入り

エンターテインメント ※オンラインマニュアル入り

設定 ※オンラインマニュアル入り

使い方が分からない箇所に備えてオンラインマニュアルのインストールも指定しておく。

 だけインストールしておけばいいだろう。これで49.2MBとなる。後ほど、FM TOWNSの開発環境である「F-BASIC 386」「High C コンパイラ」や様々なツールを同じOSドライブに入れていても十分空き容量が残る。

f:id:BCC:20210811144847p:plain

f:id:BCC:20210811145320p:plain

「実行」を押せばドライブの初期化後、指定したデータがHDDにコピーされる。コピー完了後「ハードディスク運用の設定」が表示されるが、標準設定のままでいいので「実行」

f:id:BCC:20210811145409p:plain

念のため、「設定」メニューより「起動ドライブ」を開いてOSをインストールしたSCSI IDのHDDが選ばれていることを確認。これで選ばれていればFM TOWNSを再起動後はHDDからのブートとなるはずだ。

f:id:BCC:20210811145456p:plain

 

 

FM TOWNSの一開発環境である「F-BASIC 386 インタプリタ/コンパイラ」はCD内のアイコンにある「HD INSTALL」を実行して画面に沿っていけばハードディスクにインストールすることができるのだが、紙マニュアルの方にしか記載されていないと思われる注意事項としてAUTOEXEC.BATで環境変数を変更しておかないとFM/PCM音の標準の音色がおかしい、BASICインタプリタエディタからオンラインマニュアルが参照できない、という問題が発生する。

その場合、OSをインストールした直下のドライブ内にあるAUTOEXEC.BATをテキスト編集で開いて、

SET FMINST=D:\BASIC

SET PCMINST=D:\BASIC

SET TOM=D:\BASIC\FBM

という記述をCONTROL文よりも前の行に挿入しておく。FMINSTはファイルFM_1.FMB、PCMINSTはファイルE_DRUMS.PMB、TOMはA1.TOMというファイルが存在するディレクトリをそれぞれ指定する。

 

 

  • 特定のファイル拡張子を開く際に指定のソフトを使う関連付け

 ファイル一覧からあるデータファイルを開く際、デフォルトだとTownsOS標準ソフトが起動したり登録されていなければ直接開くことができないが、ハードディスクにインストールしておいた別のソフトを手動で起動せずともTownsOSのファイル操作中に編集や閲覧をできるようにする。

 TownsOSのドライブにあるアイコン群より「設定」内にある「データ起動の設定」を立ち上げる。

f:id:BCC:20210811190253p:plain

アイコン登録と似たような画面が出るので、左側の登録されているお目当ての拡張子名を選んで中央上のディスクアイコンをクリックし、選んだ拡張子を開いた際に立ち上げるソフトを選択。拡張子一覧に目当ての拡張子が無ければ一覧下側にある小さな入力欄に3文字以下で登録する拡張子名を入力して同じく実行ソフトを選択。

最後に「確定」ボタンを押しその拡張子の登録を済ませていき、全ての拡張子設定が終わったら「実行」ボタンで完了。

f:id:BCC:20210811190442p:plain

f:id:BCC:20210811190457p:plain

例として当時FM TOWNS用テキストビューワーとしてはもっとも良い操作性・描画速度で普及していた「J-TYPE」(フリコレ11に収録されていたVer2.06C使用)をソフトの説明書ファイルとして登録されることの多かったDOC拡張子に登録して動作確認。

※追記:色々と探ってみたらJ-TYPE 最終版となる2.06F(ファイル選択画面で更新日時が2000年以降のファイルで年表記がおかしくなる不具合を修正)の一つ前のバージョン2.06Eが発掘でき、再配布は自由という表記もあったので転載しておく(OS V2.1 L30以降用)

Google ドライブ - J-TYPE 2.06E

もし、J-TYPE 2.06Fのファイルをお持ちという方がいたらお知らせください。

f:id:BCC:20210811190738p:plain

f:id:BCC:20210811190749p:plain

 

 

  • TownsOSやコンソールの高速化

メインメモリに余裕がある環境のみ有効。アイコン表示を高速化する場合は「テキスト編集」でOSドライブ直下にあるファイル「GSTART.CNF」を開き、「@:TMENU.EXG」のパラメータに「-i###」(###はKB単位でアイコンのキャッシュメモリ容量を指定)と追加する。

f:id:BCC:20210811133551p:plain

アイコンキャッシュに128KBを割り当て。 キャッシュを割り当てた分メモリの空き容量は減る。

ただし、アイコンファイル(OSドライブ直下にあるTOWNS.ICO)のサイズ以上にキャッシュ容量を割り当てないと効果が無いので現状のファイルサイズを確認してから行ったほうがいい。

 

CPU 486以降搭載の機種かつメモリに余裕がある環境のみ有効だが、12ドットフォントの表示を高速化する場合はOSドライブのフォルダSYSINIT内にあるSYSINIT.SYSをテキスト編集で開いて、/SYSRとなっているところを/DATAに書き換えるとROMから読みだされずメインメモリ上に展開されたフォントから読みだされるようになって高速化する。

f:id:BCC:20210811134534p:plain

 

 

  • MS-DOSコンソールの表示、DOSからTownsOSへの復帰やソフトの起動楽にする

基本的にGUIでのTownsOSを使うことになるのだが、グラフィカルな画面が用意されていないテキストベースのソフトや生DOSのソフトを起動したい場合は、TownsOSドライブ内のアイコンから「コマンドモード」を起動する。

f:id:BCC:20210812212443p:plain

TownsOSの実態はROMで組み込まれたMS-DOS 3.1からRUN386というDOSエクステンダを経由して32bit ネイティブで動いているDOSアプリに過ぎずそれらを終了してCOMMAND.COM相当が起動している状態となる。

f:id:BCC:20210812212556p:plain

この画面ではMS-DOS 3.1で実装されているコマンドがほぼ実行でき、もちろん環境依存のないEXEやCOM形式の実行ファイルがそのまま起動できるのだが、TownsOS用のソフトであるEXP形式の実行ファイルは「RUN386 (EXP実行ファイル名)」とRUN386を経由して起動させ、また「TMENU」と入力すれば元のTownsOS GUIに戻ることができる。

f:id:BCC:20210812213405p:plain

・・・のだが、このままだとカレントディレクトリがOSドライブ以外(例ではD:\)になっている状態で入力しても「コマンドまたはファイル名が違います」とエラーが返ってくる。

RUN386・TMENUの実態はそれぞれOSドライブ直下にあるEXE実行・バッチファイルでこれらを呼び出しているだけなので、OSドライブ外で実行する場合は必ず「D:\RUN386(.EXE)」「D:\TMENU(.BAT)」とドライブ名から指定しないといけないのだ。

先に「SET PATH=D:\」を入力しておいて何かファイル名を入力した際にD:\ドライブのものを参照するように設定すれば省略することができる。OSドライブ直下にあるAUTOEXEC.BATをテキスト編集で開いて下の画像のように「SET PATH=D:\」を追加する。こうすることでTownsOS起動時に自動的にパス設定が行われカレントディレクトリを気にせず省略して実行できるようになる。

f:id:BCC:20210812214008p:plain

 

 

アイコン登録の項目でアイコン画像がOS上に登録されたものが表示されるという説明をしたが、その編集方法について。

OSドライブのアイコン一覧より「ツール」を開き、その中の「アイコン編集」を起動。

f:id:BCC:20210928002745p:plain

起動すると左側にOSドライブ直下にあるTOWNS.ICN内のアイコン画像が開いた状態になっている。

f:id:BCC:20210928002855p:plain

アイコンを編集したい場合はアイコン画像をドラッグして画面中央上あたりにある小さいボックス内にドロップすると編集画面内に大きく表示される。ドロップした元のボックス右横にあるもう一つのボックス内に編集後のアイコン画像が表示されるので、編集が終わったら今度はこれをまた左側のアイコン画像一覧の目的のアイコンにドロップすれば更新されるという仕組みである。

f:id:BCC:20210928003317p:plain

ただ、わざわざアイコン画像のドット絵を書くのが面倒という人が大半(そもそもTownsOSを今更触る人がどれだけいるかだが)だと思うので、自分が作成したアイコン集を公開してこれをOSに登録する方法を紹介する。なお、インターネット上で他にアイコンファイルを公開しているところは極僅かしか残っていないが、フリーソフトを多数収録して発売していたフリコレシリーズのCD内(フォルダ\T_OS\ICON)に当時他の方々が作成したアイコンファイルがあるので入手した際はぜひ確認してみよう。

Googleドライブ - TownsOS用自作アイコン集

上記のファイルをフロッピー(イメージ)やCD-R(イメージ)に入れてFM TOWNS(エミュレータ)で読み込ませる。

画面左側下部にある「????????.???」となっているところを左クリックして緑色にした後、上部のメニューより「ファイル」→「読み込み」→「アイコンファイル」を選択。ファイル選択画面となるのでドライブを選択しファイル「BCCICONS.ICN」を選ぶ。

f:id:BCC:20210928003750p:plain

画面左上部の「TOWNS.ICN」の方をスクロールバーを動かしてアイコン最後尾までスクロールして、空いているスペースに「BCCICONS.ICN」内のアイコンをドラッグ&ドロップでコピーしていく(全12枚)。

f:id:BCC:20210928003942p:plain

全てコピーが完了したら上側の「TOWNS.ICN」のファイル名をクリックして、再び「ファイル」メニューより今度は「保存」を選択しOSドライブ直下になっていることを確認してTOWNS.ICNファイルを上書き保存を行う。これでOSに登録されるアイコンが更新されるはずだ。

f:id:BCC:20210928004232p:plain

 

 

パソコンであったFM TOWNSは市販のゲームがあったのはもちろんのことだが、他にもフリーソフトで名作(思い出補正無しに楽しめるかは保証しない)が数多く出ていたのでせっかくTownsOSが起動できる状態になっているのであればそれらを遊んでみよう。

個人的に今からでもインターネット上で入手可能で「津軽エミュレータでも起動確認が行えているタイトルだったら「Panic Ball 2」「VSGP」「VIPS Ct.2」「Sky Duel」「ALLTYNEX」などがオススメだ。

 

Panic Ball 2 - ブロックを動かしてボールを転がしゴールまで導いていくパズルゲーム

www.youtube.com

 

VSGP - 見下ろし方F1レースゲーム

www.youtube.com

 

VIPS Ct.2 - ポーカーの役で目標点数になるよう縦5×横5のマス目にカードを置いていくカードゲーム

www.youtube.com

 

ALLTYNEX - 通常の戦闘機形態の他、敵弾を消し去ることができる近接攻撃を繰り出すロボットに変形することもできる縦スクロールシューティングゲーム

www.youtube.com

 

Sky Duel - 3Dの飛行機レースゲーム

www.youtube.com

 

各ゲームのダウンロード先

「Panic Ball 2」「VSGP」ダウンロード先 - FM-TOWNS FSWCArc ゲーム類

「VIPS Ct.2」ダウンロード先 - BLISS COLLECTION 転載ページ

「ALLTYNEX」ダウンロード先 - SITER SKAIN 過去作品リンク

「Sky Duel」は上記の「Panic Ball 2」「VSGP」と同じサイトから落とせるが、最終版であるフリコレ10収録版になっていないので、「SKYDUEL.DOC」内に転載自由という表記があったのでこちらで再配布を行う。フリコレ10版はベンチマーク機能(フレームレート表示)やウェイト調整が行えて60フレーム動作が行えるようになっている。

Googleドライブ - 「Sky Duel」フリコレ10版

 

※追記:ここでは紹介しなかったが、RPGゲーム「ドラゴンの秘宝1~4」とそのスピンオフパズル「ドラゴンの秘塔  -心の中の魔力-」のファイルが発掘でき、転載自由という表記があったので載せておく。尚、ドラゴンの秘宝3・4だけはVectorでもまだダウンロード可能で、このファイル群の3はそのVector版をまとめたのみなので差異はない、4はVector版よりも一つバージョンアップされたものとなっている。

Google ドライブ - 「ドラゴンの秘宝」シリーズ

 

津軽エミュレータのHDD内にコピーするならImg Burnなどのディスクイメージ化ソフトを使ってISOファイル内に各ファイルを入れてそれを読み込ませるのが楽かと思う。

Img Burnでの例:メニューより「Create image file from files/folders」を選択し、各ファイル/フォルダをドラッグ&ドロップで入れていってISOファイル名を入力、フォルダ→CDのアイコンをクリックしてイメージ化。

f:id:BCC:20210928013633p:plain

f:id:BCC:20210928013642p:plain

f:id:BCC:20211004223815p:plain

基本的には上記の「TownsOSでファイル操作、アイコンの登録方法」の項目を参考にしてHDDへのファイルコピーや拡張子EXPの実行ファイルもしくは拡張子BATのバッチファイルのアイコン登録を行えばいいが、Panic Ball 2とVSGPについては引っかかるポイントがあり、

「Panic Ball 2」は1.2MBフォーマットで初期化したフロッピーをドライブ0に入れていないとゲームが起動しない(入れないで始めようとするとフリーズする、1.4MBフォーマットだと延々とフロッピーにアクセスしてそこで止まる)

「VSGP」はOSドライブ直下にあるRUN386.EXEを\VSGP\VSGPEXE\へとコピーし、FD1.BAT・FD2.BAT・FD3.BATをテキスト編集で開いて先頭の「\run386」となっているところを「run386」と先頭一文字目を削除しないとHDDから起動しないので注意。

f:id:BCC:20210928015418p:plain

f:id:BCC:20210928015431p:plain

そこさえ気をつければあとはアイコン登録をして各ゲームの起動を簡単にできるようにしよう。

ALLTYNEXは「ALLTYNEX.EXP」、Panic Ball 2は「PANIC.EXP」、Sky Duelは「MAIN.EXP」、VIPS Ct.2は「VIPS2.EXP」、VSGPはVSGPEXEフォルダ内にある各FD1.BAT・FD2.BAT・FD3.BAT(それぞれでコースが異なる)をもちろん「ディレクトリ移動」を「あり」で登録しよう。

f:id:BCC:20210928020315p:plain

 

ちなみに現バージョンでの「津軽」を使用して各ゲームを最適に遊ぶために必要なCPUクロック設定は「ALLTYNEX」「Sky Duel」が33~40MHz以上、「パニックボール2」「VSGP」が8MHz設定(これ以上にすると実初代TONWS機よりゲームが早く動いてしまう)となっている。

 

 

ここまでの解説は実機でも使えるためあえてこの項目は後ろに回したが、今からFM TOWNSソフト・TownsOSを触るうえで一番敷居の低い方法であるエミュレータの使い方を解説しておく。

FM TOWNSエミュレータは長らく「うんづ」が代表的なソフトとなっていて、再現性もなかなか高かったとはいえ10年以上更新されておらず、エミュレータから直接CDイメージを読み込むことが出来ない・Windowsが高DPI設定になっているとマウス操作ができないといった問題点もあるため、今回は2020年に登場した「津軽」を紹介する。

まずはダウンロードから

「津軽」公式サイトから「クイック・スタート」の項目にある「Github実行ファイルをダウンロード~」をクリックして一番上の日付から「Assets」内の「windows_binary_latest.zip」をダウンロード

またTOWNS実機を持っていない場合は、互換BIOSをダウンロードするために先ほどの「クイック・スタート」の項目から「~互換ROMダウンロード」をクリック。

f:id:BCC:20210930165716p:plain

f:id:BCC:20210930170000p:plain

両ファイルをダウンロードしたら適当な場所(わかりやすくTsugaruという名の新規フォルダを作ったほうがいい)に解凍し、更にその中に「BIOS」「CD Image」「FDD Image」「HDD Image」の4つのフォルダを新規作成して津軽本体側のファイル4つを直下にコピー、次に「BIOS」フォルダ内に互換BIOS側のファイル5つをコピーする(実機BIOSのファイルを持っているなら同名のファイルを同じ要領でコピーすればいい。)。

f:id:BCC:20210930171029p:plain

f:id:BCC:20210930171038p:plain

 

ファイルのコピーが終わったら「Tsugaru_GUI.exe」を実行

まずは初期設定を行っていく。「ROM dir」というボタンを押して先ほどの「BIOS」フォルダ内の「FMT_SYS.ROM」を選択、「CPU Speed (MHz)」を33-40程度、「Enable 80387 FPU」はチェックを入れない「RAM (MB)」を16、「CPU Fidelity」はMEDIUM_FIDELITYにする。

CPU Speedは仮想TOWNSの動作速度を決めるものだが、ホストPCが処理できる値が大きすぎるとエミュレーションが追い付かずに動作が遅くなってしまうため注意。余裕をもった数字にしたほうがいいため先ほどの数字にしたが、Intel Core i5 12400・AMD Ryzen 7 5800以降のCPUを使っているならば66まで上げてもならなんとか速度を維持できる。逆に言うと、そのクラスでようやくCPU 66MHz相当になる重さだ。33MHz設定でも年代的に2014年以降に発売されたCPUを搭載したPCでの起動が求められる。

80387 FPUは浮動小数点演算ユニットを有効にするオプション。ただ、FM TOWNSでは必要としたソフトはかなり限られ(起動しないものは「ぱらPARAパラダイス」「TEO」とフリーゲームの3Dレース2種のみくらい?)、「F-BASIC 386」「エルフィッシュ」その他レイトレーシング系ソフトで速度が改善されるものの、持っていないという人には無用なもので滅多にないと思うが有効時に不具合が生じる可能性も考えられるので念のため。

CPU FidelityはCPUコアの再現性の設定だが、実CPUと再現性の高い「HIGH_FIDELITY」モードを必要とするものは現時点でWindows 3.1をインストール/実行、F-BASIC 386 V1.1版 コンパイラでプログラムを実行ファイル化するときだけで有効時は「MEDIUM_FIDELITY」よりも倍くらい動作が重たいので基本的にMEDIUMでよい。

RAMはまさしくTOWNSのメインメモリの設定。ただし津軽で設定できる最大容量が64MBまでとなっており、特定のソフト(例:宴会王の逆襲、シグノシス製のタイトル、TownsOS L2.1 L40・L50のオーバーレイ起動、Windows 3.1 L10以前)において16MBを超えるメモリを搭載すると起動しないという不具合があり、市販のゲームソフトを遊ぶだけなら8MB以上要求されるものもないので最大でも16MBまでにしよう。

 

次はハードディスクイメージの作成とマウント

ウィンドウ上にある「File(F)」メニュー→「New(N)」から「Hard-Disk Image」を選択。

f:id:BCC:20210930172135p:plain

HDDイメージの容量を決めるが、MS-DOS 6.2を組み込んでいないTownsOSでは1パーティーション当たり最大127MBまでとなっており、OS・ゲーム・ツール・その他と4区画に区切って使ってもこの頃のソフト群の容量はたかが知れているので相当ヘビーな使い方でもしない限り使い切ることはめったにないと思うので512MB程度にしておこう。

容量不足になるなら1GBのHDDイメージを作ってMS-DOS 6.2を組み込むか、複数のHDDイメージがマウントできるので後から増設すればいい。

「OK」ボタンを押したら先ほど作成した「HDD Image」フォルダを指定し適当なHDDイメージファイル名を入力して作成。

f:id:BCC:20210930172248p:plain

 

津軽の設定ウィンドウに戻ったら、今度は「SCSI」のタブを開き、「HD1」をクリックして先ほど作成したHDDイメージファイルを選択。

f:id:BCC:20210930172857p:plain

この「HD#」となっている#の部分がそれぞれSCSI IDの番号となっており、起動ドライブや区画設定時には1番のドライブを選択することが出来る。

0版も存在するがTownsOSのバージョンによってはブート領域に指定できないようなので1番からやったほうが無難。

 

一通り設定が終わったらここまでの内容を保存しておく。

「Files(F)」メニューより「Save Profile(S)」をクリックし、上書きしますか?という警告文が出るのでOKボタンを押す。

f:id:BCC:20210930173301p:plain

 

あとは「CD Image」を押してTownsOSやゲームソフトのCDイメージを選択、「Auto Scaling」や「Maximsize on Start Up」のチェックを入れて起動時にウィンドウサイズを最大にするなどの設定を行ったら、下側にある「START」ボタンを押せば起動する。



 

なお、「津軽」はBIOSをフックして仮想TOWNS上のマウスカーソルとホストOS側でウィンドウに乗せているマウスカーソルの位置がぴったり合うように設計されているが、独自にマウスカーソル位置を決めているプログラムでは個別に設定を変える必要がある。

もしマウスカーソルの位置がおかしいプログラムがある場合は、「Application」タブより目的のゲームソフトがないか確認し選択しよう(通常はNONEのままで問題ない)。

また起動ドライブをOS側でHDDに設定している場合、CDブート前提のゲームを立ち上げる時は「Boot」タブより「Boot Option:」の項目を「CD」にするのが楽な方法だ。

f:id:BCC:20210930174153p:plain

f:id:BCC:20210930174359p:plain

 

津軽」起動中にCPUクロックの変更やCD・フロッピーイメージを変更する場合は、ウィンドウ右下の「MENU」ボタンを押す。

上部メニューの「FM TOWNS」からエミュレータのリセット・終了やCPUクロックの変更、「CD-ROM」「FD0」「FD1」より各イメージを選択可能。

設定が終わったら「FM TOWNS」メニュー内の「Resume(R)」を押すことでまたエミュレータに戻れる。

f:id:BCC:20210930175448p:plain

 

津軽」とは直接関係ないが、CDイメージを作成する場合は自分の環境だと「CD Manipulator」を使い、

起動画面の左上にあるメニューから「CD Manipulator」→「各種設定」→「解析」タブで「等倍追跡」と「x8」と設定、

CDイメージ作成画面では「高度な設定」にチェック、「正しいTOCとギャップ位置の取得」にチェックを入れたほうがよかった。古いCDによってはCD-DA部分の情報が正しく読み取れず、音楽や音声が映像とズレるということが発生する。

f:id:BCC:20210930174625p:plain

 

 

チェイスHQ - オリジナルコース
ABボタンを押しながらゲームを起動(リセット時はブート・高速/互換設定画面が出てしまうので押すのはメモリカウント画面で)

 

バブルボブル - VINGオリジナルキャラクター
オプション画面のパスワードに「ILOVEYOU」と入力

 

プリンセスメーカー2 - デバッグモード
「pm2.cnf」をテキスト編集で開いてMOPI=0をMOPI=1と書き換える

 

ビューポイント - デバッグモード&ステージセレクト(要パッド2個)

タイトル画面でSETUPにカーソルを合わせて1P側のパッドの左方向とSELECTを押し続け、2P側のパッドでBボタンを押し続けたままにして1P側のBボタンを押す。

メニュー下に「DEBUG MODE」の項目が出れば成功。

そんな価格で大丈夫か?Steam版「エルシャダイ」の発売日が遂に9月2日に決定。

2010年、神妙な言い回しのトレイラームービーがネットで話題を呼び「ネット流行語大賞2010」でも受賞歴がある(なお、Steamストアページでもその事を誇っている)PS3/Xbox 360用アクションゲーム「エルシャダイ

オリジナルの発売からちょうど10年となる今年の4月28日にSteam版「エルシャダイ」のストアページが公開されたものの発売日や価格が未定のままとなっていたが、8月10日になって遂に発売日及び価格が告知された。

 配信予定日は2021年9月2日、Steam版特典としてゲーム終了後の物語が語れる小説「ルシフェルの堕天」がついてゲーム本編のみが定価3,980円、配信から二週間限定で19%オフ(イーノック降臨)のセールで3,224円、ゲーム本編の他にエルシャダイの世界を構成するイラスト90ページを収録したアートブックと全61曲のデジタルサントラが付属するデラックスパックが定価7,880円。こちらも配信から二週間限定で45%オフのセールで3,919円(サンキュー、イーノック)となる予定のようだ。

 

10年前のゲームだが、そんな価格で大丈夫か?

1.大丈夫だ問題ない

2.一番安いのを頼む(セールにならないと買わない)

富士通のパソコン「FM TOWNS」用にDOOMを移植した話

令和3年に登場した新たなFM TOWNS用移植ゲーム「DOOM」です。まだまだ現役のTOWNSユーザーでDOOMを遊ぶためにTOWNS用LinuxWindows 95を導入したという皆様、心行くまでTownsOSネイティブ版DOOMを堪能してください。

Google ドライブ - FM TOWNS用ソフト「DOOM」(2021年11月4日更新 V1.1 L30)

CPU 486以上 高速モード設定推奨(機種でいうとFM TOWNS II MX以上)、メモリ8MB(空きメモリ6MB以上・空きがあれば+4MBをキャッシュ用に使用)必要・ハードディスク必須・TownsOS V2.1 L40(WAVEサウンドライブラリ使用)以上推奨・MS-DOS 6.2を組み込んでいる環境だと10MB以上メモリが無いと空き不足で起動しないかも。
必要動作環境のためFM TOWNS マーティーでのプレイは不可能です。
エミュレータ津軽」および「うんづ」で互換BIOS使用、TownsOS V2.1 L51から起動してThe Ultimate DOOMおよびDOOM2に収録されているデモの再生、数ステージのプレイまで動作確認。ただし「うんづ」の方では効果音にノイズが乗る。

実機での動作確認済み機種

実機FM TOWNS II MA + 486DX4 100MHzで音声も含めて正常に動作するとのこと。pinさん、ありがとうございます。

実機FM TOWNS II HCでも安定動作。Type.dさん、ありがとうございます。

山川機長さんのFM TOWNS II MXでも動作確認(V1.1 L30)。

 

FM TOWNSエミュレータ津軽」にて互換BIOS使用、CPU速度33MHz時の動作

動画は初期V1.1 L10版なので音の遅延などが発生するけどL20以降は軽減されている、最新版のL30ではフレームレートが15%程度向上。

 

f:id:BCC:20210702210053p:plain

f:id:BCC:20210702210109p:plain

ゲームにはシェアウェア(体験)版のDOOM1.WADが最初から入っていてエピソード1のみ遊べるけど、もちろん製品版The Ultimate DOOM(DOOMU.WAD)やDOOM2(DOOM2.WAD)をDOOM.EXPと同じフォルダに入れればそちらが読み込まれるようになってます。ユーザーが簡単に読み込むWADファイルを選択といった機能は用意していない(実行ファイルへのパラメータでのみ可能)ので、WADファイルごとに別々にフォルダを作りその中にWADファイルとDOOM.EXPを入れましょう。
The Ultimate DOOMやDOOM2は今でもSteamやGOG.comで購入することができます。

 

各ストアから購入後、ダウンロードしたらゲームフォルダ内のbaseフォルダに入っているWADファイルのみをコピーすればOK。
・・・はい!そこ!わざわざ今時のPCゲームサイトから購入するなら、最新PC向けの各種DOOMポートに入れて遊べばよくね?ってツッコんじゃダメ!!!

f:id:BCC:20210702200246p:plain
TownsOSに登録するアイコン(DOOM.ICN)も作ってみました。アイコン画面から起動したいという人は登録しておきましょう。

 

操作方法(現バージョンではキーボード操作のみ)
矢印キー・・・メニューの操作とゲーム中の移動操作
ESC・BREAKキー・・・メニューを開く
RETURNキー・・・メニューでの決定
CTRLキー・・・攻撃
スペースキー・・・扉を開ける&スイッチを押す
SHIFT+矢印・・・ダッシュ移動
ALT+矢印・・・垂直移動
012345678・・・武器切り替え
TABキー・・・マップ表示

 

終了メッセージもTOWNS仕様

f:id:BCC:20210702203709p:plain

f:id:BCC:20210702200432p:plain



その他、現バージョンV1.1 L30での仕様
・シングルプレイのみ対応
・最大フレームレートは30fps(オリジナルのIBM PC版は35fps)。fpsの違いで挙動に違いがあるかもしれない。
・メモリさえあれば初期に発売された縦型の灰色FM TOWNS(通称目玉タウンズ)でも一応動きますが、386 CPUでは画面設定を下げてもフレームレートが1桁でゲームになりません。
・デフォルト設定では「GRAPHIC DETAIL」は「LOW」、「SCREEN SIZE」は右から三段階下げている。
・効果音の多重再生は強引な方法で実装しているためか処理が重い。16ビットPCM搭載の白TOWNSなら重さが軽減されるかも。
・内蔵音源で音楽は再生されませんが、実行パラメータに-cddaをつけるとタイトル画面はCDトラック3番目、ステージクリア画面はCDトラック5番目、その他ゲーム画面などではCDトラック4番目の曲が再生されるようになります(実験的な実装で音量調整不可)。
Linux版ソースからあるバグは殆ど未修正。ただし、オプション内の「GRAPHICS DETAIL」が「LOW」にならない問題と、ゲーム終了時のメッセージで表示されてはいけない文章の表示および強制終了エラーが発生する、「The Ultimate DOOM」でエピソード2以降のスイッチが押しても視覚的な変化が起きない(反応自体はしている)バグだけは致命的なので修正済み。

・TownsOS V2.1 L31でもゲーム自体は起動するが、微妙にフレームレートが低い、効果音が鳴らないという問題あり。

 

 


ここからは、今更なんでこんな代物を作ってしまったかという駄文。
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 PCPC-9880386を搭載してもただの早い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」があったのだ。

f:id:BCC:20210702204542j:plain

f:id:BCC:20210702204603j:plain

更にTOWNS用エミュレータが「うんづ」しかないという状況だったのが、FM TOWNSユーザーでフライト系のゲームや実用ソフト・ライブラリを製作していた山川機長(元YS11)氏が新たなるエミュレータ「津軽」を開発していて、しかもこのエミュレータはCDイメージを直接読み込み可能な上にFM TOWNS実機が無くてもCD・FD・HDDブートまで可能な互換BIOSまで作られていたのだ。実機がなくともOSや開発環境を仮想TOWNSにインストールして構築することができてしまう。なんたる偶然の巡り合わせ。
当時は叶えらなかった雪辱を晴らすよい機会、そしてもしFM TOWNSDOOMが存在していたらどんな仕上がりになっていたのかという興味本位で移植を開始したのだった。

他にも移植しようとした物好きな外国人がいたものの、印象としてかなり移植を実現するのは困難な雰囲気だったので、おそらく無理だろうと思って自分が取り掛かったわけなんだけど、本当にこれがいばらの道なのなんだって。
当たり前なんだけど、今更FM TOWNSの開発環境に関する資料なんて探しても殆ど現存しない。ソフトこそ見つかったけど、当時でも情報源として唯一といっていいくらいだったOh! FM TOWNSといった参考文集とかは流石に残っていなかった。
High CのCD内にテキストファイルでマニュアルがあるものの、本当にただのテキストファイルで見易い目次が用意されておらず知りたい情報があっても延々と上から下まで読んでくしかないわ、サンプルプログラムにしても説明不足な点が多かったりやりたいことに限ってサンプルなんて存在しないから結局自分で試行錯誤するしかないという。
まともなデバッグ機能や統合開発環境も無い中80~90年代にCで規模の大きいプログラム組んでた人は本当に凄すぎる・・・小学生だったから理解できないというのもあるけど、あの頃やってたらまず間違いなく挫折する。

コンパイルエラーで止まったり、コンパイルが通ったと思ったら起動中にフリーズするとかそもそもタイトル画面すら表示してくれないという状況が作業開始から2週間ほど経ったが、とある人のアドバイスがヒントとなりHigh C コンパイラのオプションを変更すると悩んでいたことの多くが解決するということがわかりようやくタイトル画面がお目見え。
ここから更にゲームが安定して動作するまでにちょっと手間取ったり、効果音を多重再生する処理の実装に悩んだが作業開始から1カ月である程度完成することとなった。
パフォーマンス的には同じ画面設定・音声出力ありのIBM PC版を同CPU・L2キャッシュなしで動かしたときよりも若干フレームレートが低いかもしれないが、遊べなくはないくらいのレベル。33MHz駆動だとSega Super 32X版相当だ(わかりづらい)。
FM TOWNS版はほぼオリジナルのCソースのままでBSP(バイナリ空間分割)部分の処理方法は別のソースに置き換えたものの他に大きく改良したところはなく、アセンブラ化しているのは固定小数点計算の乗除算部分のみに対して、IBM PC版は直接ビデオカード上のフレームバッファを操作したり天井/床描画関数をアセンブラ化しているといった最適化を施していたりと有利な条件がある中では割とよくできているかな。


ところで、なんで世界中のプログラマーが隙あらばDOOMを移植しているかといえば”プログラムに環境依存となる部分が本当に少ない、かつ環境依存部にしてもまとまっている”からで、見た目のインパクトに対して実装コストが低いのである。
ソースコード一覧を見ると何十とCファイルがあるが、このうちファイル名先頭に"i_"と表記されているもの、つまりi_main.c・i_net.c・i_sound.c・i_system.c・i_video.cの4~5ファイル書き換えればほぼそのマシン用のDOOMは完成する(実際にはWADファイルを読み込むd_main.cや各ソースの標準関数を使用しているところもコンパイラによって書き換えることになるがそれは抜き)。それぞれのソースにある関数もそれほど多くない。
細かいアルゴリズムとかは抜きにして大雑把にプログラムのメインループを書くと

void D_DoomLoop(void)
{


while(1)
{
I_StartTic (); //ループ最初の処理。入力されたキー情報をD_PostEvent()に送る。
D_ProcessEvents (); //ゲームのイベント処理
M_Ticker (); //
G_Ticker(); //ゲームの進行状況処理
D_Display (); //グラフィック処理。最終的にI_FinishUpdate ()でグラフィックを画面に表示
}

 

//1/35秒単位で何フレーム進んでいるか取得するI_GetTime()は各場所で使われている
}

 

とこのようになっておりネットワークとサウンド対応を後回しにすれば、I_StartTic ()・I_FinishUpdate ()・I_GetTime()が重要となってくる。


まずはゲームの経過フレーム数を返す「I_StartTic ()」
本来ならば1/35秒(これはIBM PCの標準リフレッシュレートが70Hzに由来。70fps動作では重いので半分の35fpsにされている)で、公式に公開されているLinuxDOOMソースコードでは時計の時刻を取得してゲームを立ち上げた時と現在のマイクロ秒単位の時差から導き出しているのだが、FM TOWNSは最小でも10ミリ秒単位でしか時計が取得できず、この方法では最大33fpsと中途半端、また実装してテストした限りでは途中でゲームが止まったりと動作が不安定となってしまっていた。
ではどうしたかというと、発掘したOh! FM TOWNS 1995年8月号付録のCD「天晴 Vol.2」に収録されていた割り込みライブラリ「HIS」を使用して、1/60秒毎に発生する垂直同期が入ると自動的に用意した関数に飛ぶようにして偶数毎にI_StartTic ()関数が返す値を増やしていく、最大35fps動作を諦めて30fpsに落とす(#define TICRATEを35→30に変更)ことにした。

void VSYNChandler( void ) //VSync(垂直同期が発生した場合自動的にこの関数が読み込まれる)
{


static int VSyncfrag = 1;

VSyncfrag = 1 - VSyncfrag;

 

if(VSyncfrag)
ticcount++;

 

/******** VSYNC割り込み原因クリアレジスタへの書き込み ********/
_outb( VSYNCclear, 0 );


}

//
// I_GetTime
// Returns time in 1/30th second tics.
//
int I_GetTime(void)
{
return ticcount;
}

 

時計を利用してフレーム数を図っていた時と違い安定性はよく、486ベースのTOWNSマシンではオリジナルの最大フレームレートである35fpsを維持し続けることは難しいと思われるので細かい挙動の違いはあっても大きな問題はないはず。
なお、今回使用したライブラリ「HIS」に関しては、再配布可能(改変のみ許可が必要)ということが説明文に記載されていたので付属のTOWNS版DOOMソースコードフォルダ内に置いておいた。
もし、FM TOWNS用ゲームソフトなどをHigh Cを使って新規に開発したいという人がいたら、大分楽になると思うのでありがたく使わせていただきましょう。

 

次は入力処理を行う「I_StartTic ()」

//
// I_StartTic
//
void I_StartTic (void)
{


event_t ev;
unsigned int keyscan, encode, rc;

 

I_ReadMouse();

 

//
// keyboard events
//

while(1)
{
keyscan = KYB_read( 1, &encode );

if ( (keyscan >> 8 ) == 0xff )
{
break;
}
else if( (keyscan >> 7 ) == 0)
{
ev.type = ev_keydown;
}
else
{
ev.type = ev_keyup;
}

rc = keyscan & 127;
ev.data1 = keyboard_scan[rc];
D_PostEvent(&ev);

}

}

TOWNS版ではキーボードバッファに溜まっている文字を最後まで読み取っていき、文字がなくなったらwhile文を抜けるという処理を行っている。D_PostEvent()に入力されるべき文字式はIBM PC用のものでTOWNS用キーボードの異なっているため、char型の配列で用意したもの(keyboard_scan[128])から読み取って送るようにしている。

 

最後に肝心要のグラフィック表示を行う「I_FinishUpdate ()」。
DOOMエンジン内ではscreen[0]という64K(320*200)バイトのバイト配列が最終的に完成した映像のフレームバッファとなっており、これをどうにかしてそのままVRAMに転送するないしその機種にあうVRAMデータ構成にしてから転送すればよい。
FM TOWNSではTBIOSと呼ばれるAPI/デバイスドライバに相当する機能がOSに用意されていて、これを経由してグラフィック描写を行うのだが高機能なのはいいんだけど逆に単純な機能がなく(1点だけドットを打ちたくても複数点描画の関数を呼び出す)これが当時ゲームを作るうえでのボトルネックになっていたのかもしれない。
ただ、幸いなことにDOOMではフレームバッファ映像をメインメモリ上に作成しており、FM TOWNSDOOMではEGB_putBlockというメインメモリの配列データをVRAMに転送する関数を使ってそのまま送るだけで表示することができた。最初は自前で一点一点書き込もうとしたが表示が崩れてうまくいかず速度的にも相当遅かったが、この関数一つ使うだけの方法のほうが簡単でしかも実用的に表示できる速度だった。

//Write in screens[0] to VRAM
DWORD( para+0 ) = screens[0]; //データ格納領域アドレス
WORD( para+4 ) = getds(); //データ格納領域セレクタ(データセグメントレジスタ取得)
WORD( para+6 ) = 0; //書き込み開始X座標
WORD( para+8 ) = 19; //書き込み開始Y座標
WORD( para+10 ) = SCREENWIDTH - 1; //書き込み終了X座標
WORD( para+12 ) = SCREENHEIGHT + 18; //書き込み終了Y座標
EGB_putBlock( work, 0, para );

ただし、DOOMの画面は320*200ドット 1670色中256色なのに対し、FM TOWNSの画面モードは大雑把に分けてフレームバッファに対して解像度が広すぎる640*480ドットの4096色中16色・1670色中256色、もしくはフレームバッファと色階調の異なる320*240ドット 3万色くらいしか使える画面モードがなくゲーム画面にピッタリあうのが用意されていない。
3万色モードを使って1670色中256色→3万色の色変換行ってから転送すればいいが、DOOMはパレットの色を変更して画面効果を出しているので色々と書き換えないといけない、その色変換に発生する余分な処理は避けたい。
ではどうしたかというと、FM TOWNSのグラフィックコントローラには画面表示を2~16で整数倍する機能があるので、640*480ドット 1670色中256色モードにしてこの画面を縦横2倍表示設定にすると実質320*240ドット表示となった。縦40ドット余分だが、フレームバッファの転送位置を縦+20ドットにすることで上下で対象の大きさの黒帯となり違和感のない画面となった。

//Screen set to Mode12(640*480,256 Colors, 1 Page only)
EGB_resolution( work, 0, 12 );

 

///x2 zoom, 640*480->320*240
EGB_displayStart( work, 2, 2, 2 );

 

最初は表示していない領域に次のフレーム画面を描画して、描画が終わったら表示領域を切り替えるデュアルバッファ方式を採用していたのだが、FM TOWNSの仕様(表示領域切り替え時は必ず垂直同期待ちが発生する?)かこの切り替え動作が妙に重くてデュアルバッファ方式で表示すると殆どフレームレートが出なかったので表示領域に直接描画するシングルバッファ方式にしている。ティアリングが出ることがあるが実用的に遊べるフレームレート出ないと意味がない。


環境依存部分ではないが、最適化や特定のコンパイラで問題になると思われるm_fixed.c内のFixedMulとFixedDiv2関数について。
DOOMが発売された1993年頃のCPUでは浮動小数点演算ユニットがパイプライン化されていないため遅い、そもそもCPUによっては内蔵されていなくてハードウェアで演算できないという問題があったため、DOOMエンジン内の小数点計算には整数32ビットの上部下部のビットをそれぞれ16.16の整数部と小数部に分けた固定小数点(fixed_t)と考えて計算される方法が採用されている。
固定小数点の乗算では32ビット*32ビット=64ビットの結果64ビットを右16ビットシフトを行い64ビットの中間部分を32ビットに切り離して最終的な計算結果(除算は先にシフトしてから実際の除算)を出していて、DOOMのCソースでは

fixed_t FixedMul( fixed_t a, fixed_t b )
{
return ((long long) a * (long long) b) >> FRACBITS;
}

 

fixed_t FixedDiv2 ( fixed_t a,  fixed_t b )

{

double c;


c = ((double)a) / ((double)b) * FRACUNIT;


return (fixed_t) c;

}

とlong long型(64ビット)で計算しているものの、FM TOWNSのHigh Cコンパイラはlong long型に非対応なのだ。
本来ならばアセンブラを使って乗算命令であるimul命令を使って計算すると二つの32ビットレジスタに上部32ビット・下部32ビットの結果が出てくるのでシフト命令で16ビットシフトするだけの単純なアセンブリコードを書けばいいんだけど、肝心のTOWNS用アセンブラを持っていなかった。では、どうしたかというと、これまた山川機長がかつて製作していた固定小数点用ライブラリ「TORNARD」(フリコレ10収録)内にある乗除算関数に値を渡して計算することとした。同じ16.16固定小数点でTORNARDのソースコードを確認してもDOOMのオリジナルコードとほぼ同じだったので問題なし。
・・・だったけど、最終的にFM TOWNS用NASMがあるということを教えてもらい、自分でFixedMulとFixedDivをアセンブル

section .text
align 4
global FixedMul
FixedMul:
mov eax, [esp+4]
imul dword [esp+8]
shrd eax, edx, 16
ret

 

align 4
global FixedDiv2
FixedDiv2:
mov eax, [esp+4]
cdq
shld edx,eax,16
sal eax,16
idiv dword[esp+8]
ret

 

TORNARDのコードよりもごくわずか(数クロック・バイトくらい)に短くなった。乗除算は当時のCPUでは重たい処理で、ゲームのループ中に何度も読みだされる箇所となっているため、効率的かつ効果的に最適化するならここはできる限り早くしておいたほうがいいだろう。

Steamサマーセールが開催。「天穂のサクナヒメ」「ニーア:レプリカント」が初セール、日本語対応した「Hades」「トロピコ6」もセール対象

毎年恒例のSteamサマーセールが日本時間6月25日午前2時から7月9日午前2時までの二週間の期間開催されている。

f:id:BCC:20210625134011p:plain

1,000タイトルを超える様々なPCゲームがセール対象となっているが、一例として、

武神と豊穣神の子であるサクナヒメとなり米を育て自身を強化しヒノエ島の探索と鬼退治を行うアクションRPG「天穂のサクナヒメ」が初セールとなる30%オフ(通常版が3,834円、サントラ&アートブック付のデラックス版が5,670円)、「ニーア:オートマタ」の前作にあたる「ニーア:レプリカント」を現行機種に向けにバージョンアップしたNieR Replicant ver.1.22474487139..」が初セールとなる25%オフの6,435円、6月24日よりSwitch版・8月13日にPS・Xbox版が配信予定のギリシャ神話の世界をモチーフにしたローグライクアクション「Hades」が今年4月の日本語対応アップデートから初となるセール&正式版最安値の30%オフ、こちらも今年6月8日に日本語対応アップデートがなされたカリブの島国で独裁者の大統領(プレジデンテ)となり国を統治するシミュレーションゲームトロピコ6」が50%オフ、絶海の孤島『シロナガス島』を舞台としたミステリーアドベンチャー「シロナガス島への帰還 -Return to Shironagasu Island-」が最安値となる80%オフの100円オーバーテクノロジーを手にしたナチス第二次世界大戦を勝利した世界でナチスに対抗する狂気の男ブラスコヴィッチとなって戦うオールドスクールFPS「Wolfenstein: The New Order」とその前日譚「Wolfenstein: The Old Blood」がそれぞれ80%オフで両作品収録のパックが660円(ストアページ表記は日本語非対応になっているが実際には音声&字幕ともに日本語収録済み)、入院中の病弱な女の子が明晰夢を見れたのでせっかくだからと夢の中で他の患者をボコボコにしばいて回るゲーム「夢核」(YumeCore)が30%オフの364円ロボトミー社の管理人となり様々なモンスターを管理・そのモンスターが生み出すエネルギーを抽出するシミュレーション「Lobotomy Corporation」が60%オフの1,028円、新たな主人公・新たな舞台・新たなゲームシステムでこれまでのシリーズから一新されたRPG龍が如く7 ~光と闇の行方~」が35%オフの4,282円パルクールやスローモーションなどのスキルを駆使して敵の攻撃を避け刀で真っ二つにしていく一人称視点のサイバーパンクアクション「Ghostrunner」が50%オフの1,990円などとなっている。

 

なお、今回のSteamサマーセールではゲームジャンル毎にページが分けられているのだが、そのページの片隅にゲームブックが用意されていて各ジャンルのゲームブックの選択肢を選ぶごとにステッカー、全14ジャンル分のゲームブックを攻略すると選択肢によって変わるSteamプロフィール用のバッジがもらえるようになっている。

自分は何も考えもせずに選んでいったら「ゴリラの科学者」とかいうバッジがもらえたぞ。ウッホウッホ

f:id:BCC:20210625141658p:plain

f:id:BCC:20210625141449j:plain

f:id:BCC:20210625141355p:plain

 

アドベンチャーゲーム「Tell Me Why」が7月1日までSteam / Microsoftストアで無料配布中

アドベンチャーゲーム「Life is Strange」で知られるDONTNOD Entertainmentが開発した「Tell Me Why」がLGBTQ+プライド月間の企画で6月中、つまり7月1日までSteamおよびMicrosoftストアにて無料配布がなされている。日本語字幕、Xbox実績対応、Steamの方ではPCのみでしか遊べないが、Microsoftストアで入手すればXbox OneXbox Series S/Xでも遊ぶことが可能。

全3エピソードに分かれており、エピソード1は元から無料プレイ可能だったが今回の無料配布はもちろん全エピソード入手可能、Steamストア説明文の記載が変わっていないのでエピソード1しか無料でもらえないような表記になっているが「アカウントに追加」ボタンを押せば問題なくエピソード2・3のDLCまで追加される。Steamにてエピソード1を先に貰っていてゲームが追加できないという症状が出たはSteamアカウントのライセンスと製品コード有効化履歴よりTell Me Why Episode 1を先に消してから再取得し直すと貰えるという情報あり。

 

Microsoftストア - Tell Me Why: チャプター1-3

 

一度入手すればキャンペーン終了後も半永久的に遊べると思われるが、キャンペーン期間が長いので後で入手しておこうとするとつい忘れて期間終了ということもあるので早めに入手しておこう。

 

アラスカの小さな町を舞台に超能力を持つ双子が幼いときに経験したある事件の真相を明らかにしていくアドベンチャー。双子の主人公は離れていてもテレパシーで会話することや、過去の人物たちがその場所でどのような会話をしていたかを呼び起こす能力を持っており、これらの能力を駆使しながら物語は進んでいく。

日本語字幕には対応しているものの吹き替えはなく、また翻訳も直訳が多いためかストーリーがすんなりと頭に入ってこないのは難点。「Life is Strange」シリーズの素晴らしいローカライズを期待しないように注意しておこう。