JavaScriptを有効にすると、ここにメニューを表示します。
2018

ysflight.com

Please enable JavaScript to display links.

2018/09/16

FM TOWNS実機再稼働&延命支援プロジェクト: 非常用Towns OS GUI起動フロッピーディスクの作成 (あと英語化も可能)

ディスクイメージから1.23MBフォーマットフロッピーディスクにイメージを書き込む目処が立ったので、FM TOWNS実機をしぶとく稼働状態に維持し続けている人、稼働状態に復旧させようとしている人のためにエミュレータを使ってTowns OS GUIを起動可能な非常用起動フロッピーディスクを作るバッチファイルを作った。

ついでにある程度の英語版化もできるようにした。需要が限りなくゼロだけど。

今時よくできたエミュレータもあって当時のプログラムを走らせてみたくなったらWindows環境内でほとんどなんでもできるのに、あえて実機を稼働状態に維持しようとするその技術の無駄遣いさがいい。

2018/09/15

FM TOWNS再稼働支援プロジェクト: Windows 10で1.23MBディスクイメージから実フロッピーディスクへの書き戻し方法

中古であったり約30年ぐらい押し入れに眠ってたFM TOWNSを再稼働するためにはもしもCDドライブが死んでいたらフロッピーから起動してなんとかするしかない。起動可能なディスクイメージはエミュレータを使うことで作ることができる。だけどそのイメージを実フロッピーディスクに書き込む方法が無かった。

無かったのでいろいろ参考にしながら作ってみた。

PC-9801もFM TOWNSフォーマット(誰だPC98フォーマットなんて言ってるのは)の1.23MBフロッピーディスクを使ってるからPC98を再稼働させようとか思ってる人も使えると思う。

今の若い人FM TOWNSなんて知らない鴨しれないね。今から30年ぐらい前にそういう傑作機があったんよ。まだ2台飼ってる。

2018/09/10

FM TOWNS用外付けSCSI CD driver「CDSD.SYS」のビルド方法

どうやらFM-TOWNSの内蔵CDドライブは壊れやすいらしい。もう30年も前に生産されたコンピュータだもんな。この間、間違ってヤフオクで落としてしまったFM-TOWNSも、CDドライブ動作確認と言ってたのに、届いてみたら動かなかった、というかかろうじてTownsOSが起動するものの、エラー出まくる、CD−DA再生できず、で現実的に使えない。

しかし、ほとんど奇跡的なことに外付けCDドライブを内蔵ドライブ代わりに使うドライバCDSD.SYSとCDISC2.SYSが存在する。しかし、CDSD.SYSはバイナリは製品とあるにもかかわらずもう売ってない。公開されているのはソースだけ。しかもバグっててTownsOSではそのままでは使えない(READMEにはFM TOWNS対応って書いてあるのに!)。

仕方がないのでバグ取った。あとFM用ビルド方法も確立したので公開した。なお、実機FM TOWNS 2MXで動作確認した。

FM TOWNSを宇宙の終焉のときまで生かすのだ。

2018/08/08

ドラゴンスレイヤー

ヤフオクでFM-7用カセットテープ版「ドラゴンスレイヤー」を落とした。昔FM77AVを使っていたころ、テープ版ドラゴンスレイヤーをなんとかディスク起動にしようと試みて、結局ローダーを解析して書き換えたんだったか、なんらかの手でいったんFM77AVの拡張メモリにデータを読み込んで、それをメインメモリに展開して実行するようなコードを書いて、なぜかFM77AV専用版ドラゴンスレイヤーを作った記憶がある。

当時ドラゴンスレイヤーは難しすぎてクリアできなかった。どうやって開始直後に画面右に見えている剣にたどり着けるのかまったくわからなかった。マップが左右でループしていることさえ知っていれば。だが、今は知っている。ザナドゥと同じ構造で左にずっと歩いていくとそのうち元の位置の一段上に戻る。開始直後右に見える剣にたどり着くにはどんどん左に歩いて行くのが正解だった。

FM-7用テープ版ドラゴンスレイヤーはプレイしたいというよりはテープをWAV化して実行可能な状態に持っていけるかの方に興味があったのだが、それはあっさり成功した。成功すると今度はせっかくだからクリア確認したくなった。ただ、ドラゴンスレイヤーはテープ版だとマップがひとつしか無い。ディスク版には複数入っている。そういえばいつぞや買ったドラゴンスレイヤー・クロニクルにはPC88ディスク版が入っていたっけ、あれまだやってなかったな。

ということで、もはや当初の目的とはまったく関係なくドラゴンスレイヤー・クロニクル収録のPC88版ドラゴンスレイヤーを始めてしまった。今の俺には2次元レトロマップツールがある。しかもどこでもセーブ機能もある。マップさえ作ってしまえばいくら当時でも難易度が高かったドラゴンスレイヤーと言ってもクリアできるだろう。

始めた時点ではステージ(ドラゴンスレイヤー用語ではフェーズ)が何面あるのか知らなくて、せいぜい10面じゃない?と、思って始めたのだがやってもやっても新しいフェーズが出てくる。しかも、やっぱり当時のゲームだけに難しい。途中、たまらず攻略サイトを見てしまって全20面あることを知って気が遠くなった。

しかし、ついに今日最終フェーズ(フェーズ K)のクリアに成功。ゲーム自体はフェーズ1のマップに戻って永遠にループするらしいけど、とりあえず全マップを見たってことで。

パズル要素もあり、結構戦略的な要素もあり、当時大ヒットした理由がわかった気がする。ドラゴンスレイヤーは一応その続編のザナドゥのクオリティがあまりにも高くて、当時リアルタイムだった人は割とザナドゥから入った人は多かったんじゃないかと思う。僕もドラゴンスレイヤーをプレイするより先にザナドゥやったし。ただ、ドラゴンスレイヤーをまだクリアしたことが無かったのがややひっかかっていたので、またひとつ心残りだったものが取れた気がした。

 

2018/07/14

Vulkan

ここ数週間Vulkan APIを勉強していた。とりあえず必要であればYSFLIGHTをVulkanベースに移植できそうな自信はついた。パーティクルレンダリングとかシャドーマップとかWindowsとMacでできるようになったし。いつの日かOpenGL滅亡の日が来たらVulkanに乗り換えて引き続きクロスプラットフォームで開発続行できそうな気がする。

だけどそれはVulkanが成功したらの話だ。Vulkanが本当に広く使われるようになるのか、かなり疑問を持っている。なんでかというとVulkanがOpenGLを更新するものではなく、もっと低レベルAPIのDirect 3DとかMetalを置き換えようとしているから、MicrosoftもAppleも自分とこのAPIを否定されてるんだからいい気はしないだろうし。ついでにOpenCLも置き換えようというんだからnVidiaにしてみればこの機にVulkanとOpenCLを両方叩きつぶしてしまえばCUDAの天下になると考えているんじゃないかな?ある意味GoogleとIntel以外Vulkanを推す理由が見当たらない。このへんの大きな企業はAppleを除いてVulkanをサポートすると表明しているが、面従背反の可能性が結構高いかもしれない。

実際Vulkanは既に折れかかっている。AppleがVulkanを公然と無視したもんだから、話をつけてMoltenVKをオープンソースにしたものの、MoltenVKはVulkanのサブセットでしかない。全機能を持ってない。とくに致命的なのがValidation Layerが使えない点だ。Vulkanは設定項目が多すぎて、Validation Layer無しでは正しいパラメータを与えているかまったくわからない。だから、うちのMac miniで動くVulkanコードを書いてもそれをWindowsに持って行って動くかまったくわからない。

だから、ここ数週間どうやっていたかというとうち帰ってきてMac miniでVulkanコードを書き動作を確認したら、次の日大学では自分の机のWindows 10で実行してみて、そうするとValidation Layerが山のようにエラーを吐くからそれを直す。ちなみにIntelもVulkanサポートに関してやる気の無さ満々でうちにある二台のThinkPadのどちらでもVulkanを実行できない。まだ3年しか経ってないThinkPad X250ではVulkanが実行できない。世の中の大半のIntegrated GPUではVulkanが走らない有様だから現状ではとてもクロスプラットフォームでは無い。IntelはGPUプログラミングでnVidiaの寡占を崩したいところだろうからVulkanは推しても良さそうな気がするのだが、3年前のIntegrated GPUでVulkan対応しないんじゃねえ。

あとひっかかったのはMetalではVertex shaderの出力 (OpenGLで言うところのvarying)が配列か行列であってはならないらしい。他プラットフォームのVulkanにはそんな制限はないのだがMoltenVKはMetalのダメさ加減に引きずられてVertex shaderの出力に配列とか行列を使うとエラー出して落ちる。だからWindows上でVulkanコードを書いて完璧に動作してValidation Layerが一切エラーを出さなくてもmacOSとかiOSに持って行ったら動かない可能性がある。

この有様なもんだからKhronosはVulkanの公認サブセットなんてことを言いだした。あー、もう、いい加減にしてほしい。標準化の意味って何だと思ってるんだ?

あと、もういとつ言わせてもらうとLunarGのVulkanについてくるGLSL to SPIR-Vコンパイラってバグってない?シェーダーのUniformを、

layout(std140,set=0,binding=0) uniform State
{
mat4 projection;
// 16-byte alignment
vec4 lightEnabled;

このように書くと完璧に動作するのだが、

layout(std140,set=0,binding=0) uniform State
{
mat4 projection;
// 16-byte alignment
float lightEnabled[4];

こう書くとlightEnabled[0]にセットした値はshaderに見えるんだけどlightEnabled[1]以降にセットした値が見えない。これが誰も理解できない意味不明仕様ではなくて単純なバグであって次のバージョンでは修復されることを望む。16バイトにアラインしてるはずなのに動かないんだもんな。しばらく悩んだ後で試しにvec4にしたらすべてが完璧に動いたよ。

Uniformといえば、VulkanでUniformに値をセットしようと思ったら、まずUniform bufferを作って値をセットする。この段階で既にGPUメモリに値は入っているはずだ。そして、次にUniform bufferの値をVkDescriptorSetに'write'する。そして最後にVkDescriptorSetをVkDescriptorSetLayoutにバインドする。

素朴な疑問なんだけど、VkDescriptorSetっていらなくない?

既にUniform bufferがGPUメモリ上にあるならShaderは直接Uniform bufferの値を参照できるはずだ。それをあえてVkDescriptorSetに'write'する意味がわからない、というか意味がない。VkDescriptorSetはどうやらUniform bufferとかSamplerを指すただのポインタらしい。("write"って言ってるのに書き込んでないじゃん!)そうであれば、わざわざアロケートしなくてもコマンドバッファに乗せてもオーバーヘッドは無視できる程度のはずだ。

今のままだとUniformに値をセットするにはUniform bufferとVkDescriptorSetのふたつのリソースが必要になる。(Uniform buffer memoryを別にカウントすると3個)。一応、今のところ自分のコードではUniform bufferをアロケートするときペアでVkDescriptorSetもアロケートしているけど、VkDescriptorSetのアロケーションがどう考えても無駄だ。次のバージョンのVulkanではUniform bufferを直接VkDescriptorSetLayoutのバインドポイントにバインドするvkCmd関数が追加されてほしい。まあUniform bufferとVkDescriptorSetを常にペアで管理すればいいだけなんだけど。

とりあえず、(1) Vulkanが宣伝通りにクロスプラットフォームAPIとして広まるか、(2) 誰かがOpenGLをMetal上に実装して引き続きAppleの環境でもOpenGLを使うことができる、のどちらか(両方ならなお良い)が起きてほしい。Vulkanが広く使われるようになるなら、Vulkan使えばいいだけだ。上に書いたような問題があるけど、確かにOpenGLの問題点を結構解決している。何よりType safeなのはありがたい。あるいは、引き続きAppleのプラットフォームでOpenGLが使えるならOpenGLは残っていくと思う。OpenGLを必要とする最大のメリットで、かつ唯一の存在意義ってクロスプラットフォームであるという一点だった。Appleで使えないとなるとその存在意義が無くなるとまで言わんけど大きく損なわれるわけで自然消滅する危険は大きい。

一番嫌なのはVulkanがOpenGLを巻き込んで自然消滅して、クロスプラットフォームなグラフィックスAPIがこの世から消滅するという状況だ。そしたらUnityとかUnrealを使うことを検討してもいいんだけど、どっちも基本的に商業用開発を前提としてる。Unityが後方互換性をかなりの努力で維持しているのは僕は素晴らしいことだと思うものの、プログラムを商用化したときに売り上げの一部を支払わなければならないライセンス条項は困る。一般ユーザ向けにはあんまり商用コード書いてないから困らないけど、大学で企業と共同研究した成果物としてコードを納品する場合はある。そういう成果物にUnityなりUnrealを使ったとき、売り上げとみなされないのか。これ結構グレーだと思う。大学はもちろん学術研究という名目で企業と共同研究するわけだけど企業からすると研究資金を払ってコードを買っているとも言えるわけで。そういう研究にUnityなりUnrealなり使おうと思ったら知的所有権専門の弁護士を頼んで問題ないことを確認してからじゃないと怖くて使えないわけだが、そんな予算は無い。

多分KhronosがVulkanについて来月のSIGGRAPH 2018で何か言うだろう。今度は何が出てくるかね。

2018/06/20

FM-7再稼働支援ユーティリティがデバッグモードでコンパイルしていたのでリリースモードでコンパイルなおしてアップロードした.

アメリカの大学は夏休みに突入して、日本に帰省してきて、ナイアガラ・フォールズ航空ショーを見て帰ってきた。この週末はデイトン航空ショーなんだけど天気がいまいちのようだ。

帰省している間ついにYSFLIGHTカーネルをAndroidで動作させることに成功。さすがにプレイできるレベルでは無いけど、デモ版かPCで飛んだフライトレコードを再生できるYSFLIGHT Player(仮称)みたいなのを考えている。次の春の授業ではもう少しMobile / Tabletプログラミングについてカバーしたい。そして、この夏の目標、

と、思っていたのだが、、、、、

https://www.macrumors.com/2018/06/05/apple-deprecates-opengl-opencl-gaming/

macOSとiOSはいずれOpenGL非対応になるそうだ。Metalを発表した時点でいずれこうなるのではないかと良そうしていたが、ある程度ハイレベルなグラフィックスAPIも維持してくれるのではないかという極めて薄い期待も同時に持っていた。あっさり裏切られてしまった。

MicrosoftはWindows VistaでOpenGLを切ろうとした。あの時は世界中から非難を浴びて撤回した。今でもOpenGLは公式にはVersion 1.1までだがWin32 APIの一部だし、Universal Windows Platform API用にはDirect X上に実装したOpenGL ESを使うことができる。だけどAppleは言い出したら聞かないだろう。

とりあえず今すぐOpenGLが使えなくなるということは無いらしいが、場合によると最低でも少しの間YSFLIGHTのMac対応とiOS用の開発は停止するかもしれない。

一応、Vulkan API対応は検討してるんだけどね。最近のプログラミング環境の問題のひとつにグラフィックスAPIがプログラムとかデータ構造にあまりにも強い影響を持つってことがある。Vulkanの説明を見ると「最高のパフォーマンスを引き出すために」という記述が頻繁に出てくるわけだが、最高のパフォーマンスよりちょっと落ちてもいいから書きやすくてコードのメンテナンスがしやすい書き方を教えてよ、と言いたい。別に映画を作ろうってわけじゃないんだから。正しい書き方であるということとメンテナンスしやすいという二点はパフォーマンスよりも優先だと思う。

2018/04/14

RAM操縦輪マウントを試してみた。(続きを読む)

 

2018/04/07

YSFLIGHT開発状況

いつになったら次の正式版を出すんじゃ!という声が聞こえてきて久しいんだけど、ごめん。最近レトロゲームで遊びすぎた影響でリリース前テストする時間が無いもんで。理由のひとつはYSFLIGHTのオプションとか機能とかが増えすぎて、テストしきれなくなってきている。それでテストを自動化しようとしてあの手この手を試してみて最近やっとそれなりにうまいこと動くものができてきた。例えば、Simulationメニューの全メニューを選んでみるとか、デフォルトの機体を一通り選んでみるとか、そういう機械的な作業はスクリプトで自動的にできるようにした。既にこれまで手動で一時間ぐらいかかってたテスト項目をスクリプトが5分ぐらいで実行してくれるようになった。

設定をいろいろ変えて飛んでみるのもスクリプトで実行できるようにしつつあって、これができるとリリース前テストが一気に楽になるはず。クラッシュされるとわかんないからある程度眺めてないといけないという問題がまだ残ってるけど。

振り返ると今の正式版に比べて結構機能が増えたからぼちぼちリリース前テストして正式版にしてもいいんだよね。がんばろう。

あと、ときどき思い立ってiOSとAndroidでとりあえずオートデモが動くとこまで作ろうとしてみるのだがこっちも難航している。どっちもCMakeだけではビルド環境を作れないのが痛い。 なんとかならないもんかね。

なんか忘れたと思ったら

なんか忘れたような気がする。と、思ったら一個ミーティング出るの忘れてた。

論文書いたりコード書いたりしてると簡単に時間が経つのを忘れてしまったりどのミーティングが発生してどのミーティングがキャンセルになったんだっけ?と把握しきれなくなり、ましてiPhoneをMuteにしているともはや収集がつかない。そうそう。昨日は3時から学生さんとミーティングが入ってその準備ができたと思って油断してコーディング始めたら2時のやつを忘れたんだよ。

論文も書いてコードも書いて授業も教えて山のようなミーティングに出てる人ってどうやってマネージしてるのかな。

2018/04/04

おお、Blue Impulseが弘前城の上空を飛ぶのか!見に行きたかったな。

https://hirosaki.keizai.biz/headline/972/

今年の桜まつりは航空ファンで大入り満員だろうな。

2018/03/30

Forward Lanes閉店

ピッツバーグに越してから長いこと通ったボウリング場「Forward Lanes」が先週末で店を閉めた。なんでも1924年からあったらしいからかなり歴史の長いボウリング場だった。学生の頃はたまに行って投げる程度だったけど、博士号を取って研究員として働き始めた年にForward Lanesから歩いて一分のアパートに引っ越したから、その後はより頻繁に通うようになった。

僕は人より上手なスポーツというのがボウリングしか無い。せめてひとつぐらいは上手なスポーツを維持しようという興味だったからよく一人で行ってひたすら練習で8ゲーム連投とかいうことをやっていたら、ある日ボウリング場の当時のオウナーのケビンにリーグに参戦してみないか勧められて毎週土曜日のリーグに出るようになった。たしかそれが2004年の秋リーグか2005年の春リーグだったからこのリーグには14年ぐらい通ったことになる。

Forward Lanesのリーグは素人リーグとは言え何度かアベレージでトップの成績だったシーズンもあった。しかし最近はオイルをケチっているのかリーグ戦でもほとんどレーンにオイルを敷いてなくてスピードの無い僕だとボールが曲がりすぎていいスコアが出なくなっていた。また最近Playmorの公認リーグに参加するようになったからそっちがメインになっていた。だからForward Lanesがクローズしてもボウリングする場所はあるんだけど。とはいえ長いこと通ったボウリング場が閉店するのは少し寂しかった。

それまで車を停めることができたボウリング場の裏の道路が冬場に表面が傷んでしまってそのまま修復されずに通行止めになってしまったのが痛かったかもしらんね。あの道に車を停められなくなってForward Lanesにかなり行きにくくなったもんね。というか通い始めた当時から午後の早い時間だとがらーんとしていて誰もいなくて一人で集中して練習できるのはいいけど経営は大丈夫なんだろうか?と、思っていたからよく持った方なのかもしれない。

ちなみに下は僕のForward Lanes最終戦成績。

2018/03/21

FM77AV 「九玉伝」 (Techno Soft 1986) 攻略

長いことひっかかっていたことがある。FM77AV用「九玉伝」(テクノソフト)を買ったまま30年以上クリアできないままになっていた。基本的に買ったゲームは自力クリアができなかったら攻略本を見てでもなんでもとりあえずクリアする方針でやってきた。シューティングゲームとか反射神経が要求されるようなゲームだと断念せざるを得ないことがあったけど、ロールプレイングに関しては基本的にこの方針を貫いてきた。

「九玉伝」は、珍しく当初FM77AV専用で、のちに他機種にも移植されるまでの間はFM77AVが独占していたタイトルだった。とにかくPC88に比べてソフトが少ないFM77AVにあって、このタイトルの期待は大きかった。またFM77AVの多色表示を活かして、多分64色二画面を使ってると思うけど、当時としてはグラフィックスが綺麗な方だった。発売と同時に買ったと思う。そしてかなり時間をかけたはずなのだが、結局クリアできなかった。

しかし、当時のフロッピーディスクの大半が行方不明になってしまった今でも、なぜか九玉伝フロッピーディスクは残っていた。いつかこのタイトルをクリアしてやりたいという僕の執念によるものだと思う。そして、去年Xanadu Revival IIをクリアするために、二次元レトロマップツールを開発したので、XM7のスクリーンショットをつなぎ合わせてで原寸大マップを作れる環境はできていた。マップさえ作りながら進めれば、今ならクリアできるのではないか。時は来た。春休みを利用して九玉伝のクリアに挑んでみた。

続きを読む)

2018/01/24

FM77AV再稼働支援 : 赤外線ワイヤレスキーボードエミュレータ公開!

FM77AVまたはFM77AV40実機はあるけどキーボードが無い、という場合、PCにIRToyという赤外線トランシーバーを接続して、Windows上でタイプしたキーをFM77AVに送るプログラムを作った。


2018/01/14

FM-7/77再稼働支援ツール公開!

もしも、まだ稼働状態のFM-7/77シリーズの本体+モニタがあって、ディスクドライブが生きているものの、持ってたフロッピーディスクは既にだめになってしまって、残っているのは.D77ディスクイメージのバックアップだけという場合、このプログラムを使ってデータレコーダインターフェース経由でディスクイメージを書き戻すことができる。

2018/01/5

ちょっと遅れましたが、新年おめでとうございます。今年もよろしくお願いします。

年末は、サンフランシスコに行っていた。そして、夜行便で帰ってきたら風邪を引いた。

サンフランシスコでは、毎日海産物を食っていた、というか、ピッツバーグに住んでるもんだから、サンフランシスコとか行くと、観光名所を見てまわるんじゃなくて、魚を食う、とか、正月の買い出しに行くとか、そういう行動に出る。また、サンフランシスコ旅行が国内旅行であるという非現実感がいい。

現地には四日滞在して、四日目にはNice Airというフライトスクールからセスナを借りて、ベイツアーと呼ばれるコースを飛んできた。現地の空域にぜんぜん詳しくない上に、ピッツバーグのように単純な空域と違って、クラスBとCとDが入り組んでいる現地では、いきなりソロで飛ぶ自信はぜんぜんなかったので、教官にも乗ってもらった。

詳しくはここ。

Comments are welcome.  Send E-Mail to: 

Back to http://www.ysflight.com