260331 テキストAVG『Dungeon』(1978年 PDP-11 by DECUS 未完版)をプレイ

Image: 260331 テキストAVG『Dungeon』(1978年 PDP-11 by DECUS 未完版)をプレイ
以前書いた記事、PDP-11エミュレーターでRT-11 (OS) を動かしてみるで見つけた、PDP-11/VAX-11 (FORTRAN-IV) 版Dungeon (1978-08-10) を少しプレイしてみる。"Dungeon"はいわゆるテキストアドベンチャーというジャンルのゲーム。テキストで表示される状況に対して、東西南北 (N/S/E/W)、見る (look)、取る (take)、上へ行く (go up)などのコマンドを入力して周囲を探索したり謎を解いたりして、ゲームの展開が進んでいく。
本文を読む…

うかつにクリックできない印刷クリーンアップ通知 [Win11]

Image: うかつにクリックできない印刷クリーンアップ通知 [Win11]

Windows 10になってからある時期までは安定性とUIの改善が続いていたのに、ここ数年でエクスプローラーは不安定で使いづらくなって、改悪が進んだ感じ🤔

時々、どんなアクションを取るべきか困る通知が来ることがある。中でもこの通知は「ユーザーフレンドリー」から最も離れていると思う。プリンターの名称や前回使用日が書かれていないから、うかつに「はい」をクリックできない。他の事業所のプリンターとか、PDFなどに変換する仮想プリンターとか、あまり使わないけどたまに使うかもしれないプリンターもあるのに、対象を知らずに削除するわけにいかない。

前回使用日の古いプリンターがどれかは、設定アプリの「プリンターとスキャナー」から各プリンターの項目を確認すれば分かる。

Image: プリンターとスキャナー

「自動メンテナンス」機能(Windows 8で追加)を無効にすれば通知を出さないようにすることができるらしいが、この設定は他の挙動にも影響しそうなので、ただ通知してほしくないという理由で変えるべきじゃない。

260329 ポケモンFR&LGの思い出

Image: 260329 ポケモンFR&LGの思い出

私はこのゲームが好きすぎる!

最近、色んなVTuberがこぞってFR&LG(またはポケモンポコア)をプレイしていますが、グラフィックを見たりBGMを聴いたりしても全然懐かしい感じはしないです。

当時、私はポケモンのゲームに滅茶苦茶ハマっていて、ルビサファとの通信交換はもちろん、ゲームキューブのポケモンボックスというソフトでポケモンを管理したり、ゲームキューブ版ポケモンスタジアム的なソフトでそこ限定のポケモンを手に入れようと頑張ってプレイしていました。初代や金銀もプレイしたけど、GBAのソフトと通信交換できたかどうか?さすがに図鑑完成(全部で350匹くらい居たと思う)は無理でしたが、攻略本ならぬ図鑑本は持っていました。

FR&LG本編はストーリーのみならず、キャラクターのドット絵グラフィックもBGMも気に入っていたので見直したくて、2周以上クリアしたはずです。クリア後のナナシマの金銀アレンジBGMが特に良い!そういうわけで、このゲームの全てが記憶にこびりついているので懐かしさはあまりないです。石神がひでんマシンの「そらをとぶ」を手に入れて「ファストトラベルみたいな奴じゃん!」と言い出したときは、腹底のすみに何とも言えないもどかしさが沸きました。まさにその通りだから良いんだけど、その時代の記憶体験に留まっている私と何か摩擦が起きちゃったんだな。

その時の物は引っ越しの時にほぼ捨ててしまったけど、e+カードリーダー用のバトルカードだけ何枚かあった。さすがにSwitchで使うのは無理かしら。

金銀の内容は記憶がずいぶん飛んでいて、BGMを聴いていると懐かしい感じがします。でも、レベリングがきつかった印象が強くて、ストーリーはほとんど忘れていました。GBの初代は何周かクリアしているので、私にとってレベルバランスが良かったんだと思います。

IBM PCにおけるFDCの実装とPC98との違い

Image: IBM PCにおけるFDCの実装とPC98との違い

10年間、エミュレーターを開発していたら、フロッピードライブについて詳しくならざるを得なかった。IBM PCのFDCの特徴が分かってくると、なぜ日本のPCで使われるフロッピーディスクをIBM PCでイメージ化することが難しいのか。解決方法はあるのか、などが分かってくる。

ディスク交換を検出できない(PC/AT以前の2Dドライブ)

フロッピードライブはディスクの挿入を検知すると、Ready信号出力をアクティブにする。FDCはReady信号の変換を検知するとハードウェア割り込みを発生してCPUに伝え、CPU側はFDCのフラグを調べることでReady信号の変化を知ることができる。IBM PC以外のコンピューター(IBM 5550も含む)はこれを利用し、交換後のディスクに予期せずデータを上書きすることを防いだ。

IBM PCやPC/XTではFDCのReady信号入力ピンはプルアップされ、ディスク交換をソフトウェア側から検出する方法がない。つまり、ディスクアクセスのたびに最外周にあるディスク管理領域を読み取って、ディスクが交換されたかどうかを調べなければならない。フロッピードライブのシーク操作は(CPUにとって)非常に時間が掛かり、無駄が多い。そこで、MS-DOS 3.xでは最後のディスクアクセスから2秒以内の再アクセスではディスク交換されていないものとして扱われた。

PC/ATで登場した2HCドライブではディスク交換を検出する専用の信号線が追加され、ソフトウェア側から検出できるようになった。

3.5インチドライブの回転速度の違い

PC98では3.5インチ、5インチ、8インチで互換性を取るため、2HDドライブでは回転数を360rpmで揃えていることに対し、IBM PCでは3.5インチ2HDドライブで2D、2DDと同じ300rpmを採用したため、IBM PCではPC98の3.5インチフロッピーディスクを読むことができない。例外的に、日本で販売された一部のIBM互換機の内蔵FDDとUSBドライバーで駆動する外付けUSB-FDDは、回転数の切り替え機構を備えることで両方に対応している。

FM変調がサポートされていない

フロッピーディスクにはFM(単密度)とMFM(倍密度)の2つの変調方式がある。FMは1970年代からコンピューターに利用されたが、MFMの方が後発で高密度で記録できるため、PCの世界ではほとんどMFMが使われた。

PCが登場するより前、IBMのコンピューターでMFM変調方式を使ったフロッピーディスク “Diskette 2D” が登場したとき、そのフォーマットは最初のトラック(トラック0、サイド0)だけはFM方式で、他は全てMFM方式だった。MFM非対応のドライブでも最初のトラックでディスクの種別を判別できるようにするという、互換性に配慮した結果なのだろう。

PC98ではこのフォーマットがDisk BASICで8インチだけでなく5インチ、3.5インチフロッピーにも使われた。Disk BASICは1980年代末までのデスクトップPCに標準で付属し、市販ソフトも相当数がDisk BASICで開発されたため、マシン側も1990年代末までサポートせざるを得なかった。

一方、IBM PCでは当初からFM変調がサポートされていない。FM変調をサポートするにはFDC(NEC μPD765相当)のFM/MFM切り替え信号ピンとデータ/クロック分離回路のPLL IC(日本ではVFOと呼ばれることが多い)を結ぶ必要がある。IBM PCではMC4044を中心としたロジック回路でPLLが構成され、FM/MFM信号ピンは結線されていない。1990年代初頭にリファレンス的に使われたIntel 82077AAはPLLを内蔵した統合型FDCで、FM変調はもはや内部的にサポートされていない。しかし、互換機の中にはFM変調をサポートしている機種もあるようだ。

BIOSでサポートされていないFDCコマンド

IBM PCとPC98でハードウェア割り込みやI/Oポートの割り当てが異なるという話はさておき、BIOSでサポートされる機能の違いがIBM PCにさらなる制約を課している。

フロッピーディスクには回転速度や記録位置の誤差を吸収するための同期信号やマージン (Gap)、CRC(パリティ)が記録されているが、FDCに対する通常の読み取りコマンドではFDC内部で自動的にエラーチェックされ、データとエラー状態のみがCPUに渡される。しかし、FDCのRead Track (またはRead Diagnosticとも)コマンドによって、この同期信号やマージンをCPUから読むことができる。

Read Trackコマンドは1トラック上の全てのセクターを読んで、いずれか1つでもエラーが見つかるとエラーフラグを立てるというものだが、コマンドで渡すデータ長を本来のセクターのデータ長より長く設定すると、データの後ろにあるGapや同期信号も読み取ることができる裏技がある。データ長を1トラック分に設定すれば、1トラック丸ごとのGapを含むデータを取得することもできる(この場合、セクターの途中やトラックの境界でビットずれによるデータ化けが生じることがある)。

PC98ではDisk BIOSでこのコマンドがサポートされており、既に1980年代後半にはこれを使ったコピー保護解析が常套手段となっていたようだ。しかし、IBM PCのBIOSではこのコマンドはサポートされていないため、FDCにこのコマンドを送るためのドライバーを自力で開発しなければならない。互換機同士の微妙な仕様の違いや他のソフトウェアとの競合など、注意すべきことが多く、ドライバーを用意することは簡単ではない。

IBM PCにディスクイメージを作成するソフトウェアは多数あるが、Gapデータを取り込めるソフトウェアは今まで存在しないと思っていた。かなり細かい設定ができるIMD (ImageDisk) でさえ、Gapに関しては “The GAP lengths cannot be read from the disk, and using the wrong length can result in an unreadable copy. Unfortunately, determining the correct gap length can be “magic science”.” と書かれている。

しかし、SAMdiskというディスクイメージソフトウェアならRead Trackコマンドによるトラックデータの取得もできることが分かった。このソフトウェアは内蔵ドライブを必要とするが、Windows 2000以降で動作するという点でハードルを下げている(ラップトップPCなど選択の幅が広がる)。残念なのは、取り込んだトラックデータをセクターレベルのディスクイメージ形式に変換することはできても、HxC Floppyや86Boxでサポートされているビットストリーム形式にそのまま変換できないことか。

参考リンク

GPartedで32GB超FAT32区画を縮小してWin2000をインストールする

Image: GPartedで32GB超FAT32区画を縮小してWin2000をインストールする
フロッピードライブ関係の検証のため、DOS/VとWindows 98をMBMでデュアルブート構成しているPCにWindows 2000を入れようという試み。かなり特殊な環境のため、誰の参考にもならないと思う。まず、Windows 2000をインストールする区画を空けるためにWindows 98の区画を縮小しなければならないのだけど、32GB超のFAT32フォーマットなので、Windows 11標準のディスク管理ツールでは編集できない。そこで、GParted Live on USBを使うことにする。
本文を読む…

J-DOS & DOS/Vで動くバイナリーエディターを作った

Image: J-DOS & DOS/Vで動くバイナリーエディターを作った

akmed772/uHexV: A binary editor for PS/55 DOS (a port of uHex)

いま、DOSで動くディスク関係のちょっとした診断ユーティリティーを開発(しかし頓挫)していて、英語モードに切り替えなくても使えるバイナリーエディターはないかと探してみて、ないなら自分で用意するか、という思いつきで作ったもの。

といっても、一から作ったのではなく、オープンソースのuHexのコードをもらって、I/O周りをJ-DOSやDOS/Vの画面モードに対応するように改造した。

元のソフトウェアがスクロール処理を実装できる作りになっていないので、J-DOSでは英語版と同様にVRAMを書き換えるだけだが、DOS/Vだとスクロールするにはグラフィックを全面的に書き換えることになり、処理がめちゃくちゃ重くなる。DOS/Vで使うならPentiumプロセッサーとVLバスまたはPCI/AGPバスのビデオカードを推奨。スクロールを伴わないカーソル移動では差分更新するように照合処理を実装したので、486DXとET4000カードくらいの高速なAT互換機ならそこそこ動くレベルになった。

260324 ACT『悪魔城ドラキュラ Anniversary Collection』(PS4)をプレイ

アクションゲーム『悪魔城ドラキュラ アニバーサリーコレクション』(コナミ、2019年)をプレイ。

ファミコンのスーパーマリオをプレイする実況者はうん万といるけども、悪魔城ドラキュラをプレイする人は滅多に見ない。コナミのゲーム配信許諾が厳しい、というわけじゃないよな。にじさんじ初期の頃に2~3人がプレイしてたのは知っている。1年以上前にNiji ENで誰かがPS世代あたりの作品をプレイしているのを見たことがあるけど、ここ数年でその一回きりだ。

動画でしか見たことがないオリジナルの悪魔城ドラキュラをプレイしたいと思っていたけど、ディスクシステムには手を出したくないし、ROMカートリッジ版は中古で高いクローンのものしか出回っていないし、どうしたものかと思っていたら、PS4/Switchでアニバーサリーコレクションという移植版が6年前に出ていた。開発会社はゲームの移植で名前をよく見かける、エムツー。

悪魔城伝説でグラフィックを比較すると、1つ目のスクリーンショットがAC版、2つ目がAV改造ファミコンより。

Image: 悪魔城伝説 Image: 悪魔城伝説

AC版は既定の設定だと4:3表示になっていて、これをピクセルパーフェクトに変更すると、右のキャプチャー画像と同等のアスペクト比になる。色の再現性は鮮やかになりすぎず、しかし、クリアな表示で、ちょうど良い感じ。サウンドはAV改造ファミコンよりクリアに聞こえ、こもっている感じは全くしない。

ACに収録されているFC悪魔城ドラキュラは1993年発売のROMカートリッジ版なので、BGMをディスクシステム音源で聴けないことは残念だが、それでもなお、オリジナルのBGMを聴きながらゲームをプレイできることに感動した。途中で詰んでいる悪魔城伝説も、AC版ならステートセーブ機能があるので、最後まで到達できるかも。

Win32コンソールアプリの.exeファイルにアイコンを設定する [VS2005]

Image: Win32コンソールアプリの.exeファイルにアイコンを設定する [VS2005]
Visual Studio 2005 (C++) でWin32コンソールアプリケーションの.exeファイルにエクスプローラー用のアイコンをセットする方法。このバージョンを使う人はレガシーOS向けのアプリをメンテする希少な人くらいだろう。私はXP用のアプリを開発するにあたってVisual Studioを久々に触ったことと、Win32アプリの開発はほとんど経験がないので、少しやり方に迷った。
本文を読む…

非公式 Logi G29 ステアリングホイール ドライバー for Windows XP

Image: 非公式 Logi G29 ステアリングホイール ドライバー for Windows XP
Logicool G29 ドライビングフォース ステアリングホイールをWindows XPで使えるようにするツールを作った。ドライバーファイルは Logicool ゲームソフトウェア 8.70 32ビット版 (LGS_8.70.315_x86_Logicool.exe) から抽出している。このソフトウェアは通常の方法でXPへインストールしようとすると弾かれるが、
本文を読む…

8セクター/トラックと9セクター/トラックの違い

IBM PCではPC DOSバージョン2.0より、IBM 5550では日本語DOSバージョンK2.1より、5.25インチディスケットを8セクター/トラックに加えて9セクター/トラックでフォーマットできるようになった。2Dディスケットであれば320KBから360KB、2DDディスケットであれば640KBから720KB(IBM 5550のみ)まで使える容量が増えているが、ドライブもディスケットも同じなのになぜ容量を増やせるのか、よく理解していなかった。
本文を読む…