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 フリーゲーム一式 ダウンロード先

※セキュリティソフトによってはウイルスを検出と誤認される可能性もあるが問題ないファイルです(圧縮前に検査をかけても検出されずZIP形式だと検出されることを確認)。該当する場合はファイルのアクセスを許可して再ダウンロードし直して、心配であれば解凍後にスキャンしてください。

圧縮ファイルをダウンロードしたら適当な場所に「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_###)と、一部サウンド周りの修正とかのコードも送っておいたりしました。

PC版「Red Dead Redemption」が遂に配信、4K解像度・144fpsの高フレームレート・描写距離の大幅向上を実現

2010年にPS3 / Xbox 360用ソフトで発売されたものの長らくPC版が発売されてこなかったRockstar Gamesオープンワールドゲーム「Red Dead Redemption」が遂に待望のPC版が10月29日から配信が開始された。日本語字幕対応。

本編だけでなくDLC「アンデッド・ナイトメア」(マルチプレイ部分はカット)も収録して価格は定価6,820円。14年前のゲームにこの価格は正直高い。

 

既にPC版が発売されていた「Red Dead Redemption 2」(RDR2)よりも後の時代設定で、初代がPCで発売されてこなかったので先に2から始めたという人でも物語的には続きを見る感覚で遊べる。

元ダッチギャングの一員だったジョン・マースティンは犯罪から足を洗い家族と共に牧場を営んでいたものの政府の人間に家族を人質を取られ、ダッチギャングの残党やボスであるダッチの始末を命じられ、アメリカ西部・メキシコの大地を駆け巡ることとなる。

RDR2では一つ一つ細かい動作を操作できるようになっている関係で、どうしてもモッサリとした挙動や長押しを多用する複雑な操作性となってしまっていたが、このRDR1ではやれることが少ない代わりにボタンを押せばすぐ乗馬やアイテムの取得といった行動が取れるようになっている。リアル性よりもゲーム寄りの挙動で、RDR2の慣性に慣れなかった人やアクションを楽しみたいという人には打ってつけだ。

 

グラフィック面ではテクスチャ/ジオメトリ/ライティングと全ての面で流石に旧世代向けのゲームだと否めない質ではあるものの、その分動作は相当に軽く、またPCならではの特徴として4K解像度・144fpsまでの高フレームレート・FSR3やDLSS(DLAA)といった超解像技術・影の解像度の向上やソフトシャドウの改善・描写距離の向上等が行われている。

GeForce RTX 3060 Tiの環境で4K解像度・DLAA・その他設定を最高にしても90~100fpsを維持できている。

 

PC版よりも一足先にPS4(PS5)・Switchにも移植済みではあるが、それらコンソール版はXbox 360版とあまり変わらない描写距離だったり、解像度こそ上がっているもののフレームレートはPS5でようやく60fpsだったり(PS4・Switchでは30fps)と大きな画質の向上はなかったが、PC版の特徴である描写距離の向上は遠くに写る生い茂った草木や精密な岩肌によってかなり景色の印象が変わる。

このゲームのためだけにかつてXbox One Sを買ったこともあるが、比較しなくとも明らかにその当時に遊んだ光景が違うのが実感できる。

描写距離を最低(おそらくXbox 360・Switch・PS4・PS5版相当)と最高にした場合の比較画像を載せておく。

 

比較1 最低設定

比較1 最高設定

 

比較2 最低設定

比較2 最高設定

オープンソースのゲームエンジン「Godot」で巻き起こったブロック/BAN騒動

ゲームエンジン「Unity」がライセンス形態の突然の変更(後に撤回)により移行先として人気を集めていたオープンソースゲームエンジン「Godot」。

そんなGodotである騒動が巻き起こった。

Godot公式Twitter(X)アカウントが

虹アイコンを付けてわざわざあなたの「目覚めた」なるゲームタイトルを募集し始める。

ん?ん?と思うが、まあ広報の話題作りにそういう特定ゲームの特集もたまにはいいだろうとは思うものの、

とあるインディーゲーム開発者が『「政治」よりも「ゲームエンジン」にフォーカスすべきだ』というこれもまた一意見なリプを送る。普通ならスルーされるのがオチなんだが、

なんとこの開発者はGodot公式アカウントからブロックされてしまう。更に言うと彼はGodotへの寄付も行っている支援者でもあるのだ。どういうこっちゃねん。

まあ1人だけ(でも問題なんだけど)なら・・・いやこのようなパターンなら複数人ブロックされてるだろうな、と皆思うだろうが案の定、

「それよりビットマップフォント表示の修正とサポートをなんとかして。ドキュメントも殆どなく、バグ修正でプロジェクトが大幅に遅れている」

と、これもまた話題から外れているとはいえごもっともな意見を送った人も

案の定ブロック。

 

更にTwitterのみならずソースコードを管理しているGithubのほうでBANされた(閲覧は可能だがコードの編集・連絡不可となる)と報告するユーザーもいる現状。もうコミュニティ主導のオープンソースの理念から外れるだろ。

 

こんな騒動が巻き起こってしまったGodot。一部ではフォーク(元のソースコードから派生したものを作成)版となる「Redot」を作ろうという計画までなされていたが、

Godotを管理しているGodot Foundationから声明が発表される。

金曜日のツイートでスタッフやコミュニティへのハラスメントが起こりました。コミュニティの保護をとしていた際に誤ってハラスメントを起こしていないユーザーまでもブロックしてしまいました。

 

誤ってブロックされてしまったと思うユーザーはご連絡ください。

腑に落ちない公式声明がなされたが、果たしてこのまま騒動は終息を迎えるのか。

Steam版「DOOM + DOOM II」遂にSteam Deck公式対応となる

DOOMDOOM II及びそのアペンドエピソード群を一本化、更に新規エピソードの追加、クロスプラットフォームかつ16人までの対戦及び協力オンラインプレイに対応した「DOOM + DOOM II」

各現行プラットフォームでDOOMもしくはDOOM IIの所有者ならば無償でアップグレードされるという太っ腹対応。

プリンタ・カーナビ・FM TOWNS・デジカメまで、この世に存在するありとあらゆる機器に移植されてそうなDOOMではあるが、実はSteam版「DOOM + DOOM II」はアップデートから1か月近く経っていたのに携帯PCゲーム機「Steam Deck」上での動作は公式には非対応扱いとなっていた。

ゲームボーイアドバンスDOOM(公式発売)もあるのにエルデンリングも動くSteam Deckで動かないとはどういうことなんじゃい!と思われるかもしれないが、実際には動作確認されていなかっただけで特に支障もなく動く状態ではあった。

そんな世界中のDoomer達をヤキモキするような表記が続いていたが、今日になって公式での動作確認が取れたようで無事Steam Deck対応(完全対応の緑マーク)の表記に変更。

これで晴れて、いつでもどこでもDOOM Deck

もちろん、ゲーム自体にはこの対応宣言の際にアップデートが実施されたわけではない。もう一度言うけど、動作してたけど間違いなく動くということを確認されただけ。

映画「エイリアン」を題材にしたステルスサバイバルホラー「Alien: Isolation」Steam版が10年の時を経て突如おま国解除

映画「エイリアン」を題材にした主観視点によるステルスサバイバルホラーAlien: Isolation」が発売から10年を経て突如Steam版のおま国が解除された。価格は定価3980円。なお現時点で日本語非対応

 

物語は映画「エイリアン」と「エイリアン2」の間が舞台。宇宙船ノストロモ号が消息を絶ち、映画での主人公であるエレン・リプリーの娘アマンダ・リプリーは母の消息を追って宇宙船エンジニアとして生きていた。そんなある日、ノストロモ号のフライトレコーダーを回収したとの知らせを受け、フライトレコーダーのある宇宙船へと向かうがそこにはエイリアンが侵入していたという流れとなる。

 

PS4Xbox Oneでは公式に日本語版が発売されていたものの、PC版は長らくおま国となっていたため公式で日本語に対応しておらず、今回のおま国解除に関しても単に購入制限が解除されただけで言語追加などのゲーム本体へのアップデートはされていない模様。

日本語化Modも存在したものの一次配布は既に終了していて、第三者による再配布しかないので自己責任で。

ボダラン開発元CEO「5年後にはSteamは衰退している!」→5年後・・・

Borderlands 3をEpic Games ストア時限独占したり、過去何かとSteamに対して批判的だったGearbox Software(Borderlandsシリーズの開発元としても有名)の CEOランディ・ピッチフォードの2019年のツイート

実績から見ると、ValveよりもEpicの方が技術投資は大きくなると予測している。5年または10年後にSteamを見たら衰退していて、他のストアが主流になっているかもしれない。

 

そして5年後・・・

Steamの同時アクセス数は2019年は約1,700万人だったのに対し、今年夏には2倍以上の3,700万人を突破し、

ボダラン4もEGS時限独占せずSteamで発売されることが決定。

 

ま、まだ、10年後があるから・・・(擦れ声)

 

C++でパリティチェックを行う最速(と思う)の関数

C++のプログラムでパリティを計算する関数を高速化しようとして、for文でビット数数えるとかパリティビット生成回路がXORなのを元にシフトとXORで計算するとかいう方法が普通のようで、AIに「C++にてパリティチェックを行う最速の関数を教えてください」と聞いてもこのサイトを参考にするのか全く一緒の回答が返ってくるのだが、もうちょっとだけでも最適化できないものかと思って考えてみた。

単純に元の値を2進数にして立っているビット数の合計が奇数・偶数かでパリティが求められるなら、値のビット数を数える標準ライブラリがあればそれを使った方が最速(コンパイラが勝手に最適化してくれる)んじゃないのか、ってことで、該当のstd:bitset.count()を使った関数だとこうなるはず。

int parity(uint32_t val) {
    return std::bitset<32>(val).count() & 1;
}

上記サイトのXOR法だとシフト・XORがそれぞれ5回で合計10命令発生することになるが、このstd:bitset.count()を使うとx64 CPU環境でSSE4.2命令以降を有効にしてコンパイルするとpopcnt命令というレジスタ値のビット数を数える1命令のみ(と奇数・偶数を判定する1のand)だけに最適化がなされたり節約できたりする。

ってAIに「C++にてstd::bitsetを使ってパリティチェックを行う最速の関数を教えてください」とやり方指示したら今度はこれと同じような答えが返ってきた。最初から教えてくれよ。