4
28 年後に何千ものアプリが Windows 95 に移植されました — .NET Framework の移植により、後方互換性が可能に…
MattKC による、変更を加えた後の Win95 で機能するクリック アンド ドラッグ スクリーンショット ツールのデモ。
MattKC 氏による、Win95 でクリック&ドラッグ操作によるスクリーンショットツールが実際に機能するデモ。変更を加えた後の様子です。 (画像提供: MattKC on YouTube)

YouTuberのMattKC氏は、Windows 98の最も目立った機能である.NET Frameworkを苦労してWindows 95に移植することで、「数千ものアプリ」をWindows 95に移植したと自ら語っています。Windows 95とWindows 98を比較した場合の最大の制約は、結局のところ.NET Frameworkがないことです。それ以外の多くの点では、Windows 98はデザインと機能において前任機に驚くほど近いのです。しかし、なぜ彼はこのようなことをしたのでしょうか?

51分間のビデオを何度も繰り返し鑑賞しましたが、そのほとんどが、当時のハードウェアとソフトウェアに対する彼の真の情熱を物語っています。Windows 95の発売から28年後に、その進化を描いた映画を制作する気になったのも当然でしょう。下に埋め込んだオリジナルビデオには、美しく撮影されたインターミッションをはじめ、作品の雰囲気とキャラクターを決定づける、実写ならではの面白い演出もいくつか含まれています。

.NET を Windows 95 で動作させるには、元の 51 分 53 秒のビデオの秒数よりも多くのレジストリ キーが必要です。必要なレジストリ キーの合計数は 5,409 です。

しかし、移植後も.NETはWindows 95上ではJIT(Just In Time)デバッグが適切に実行できません。原因は「ndphlpr」にあるようです。これはWindows 98では使用されていない謎のWindowsドライバですが、.NETでは「必須」となっており、このドライバがないと.NETがクラッシュします。MattKCは、PCにndphlprがあるように見せかけることで解決できるかもしれないと考えましたが、調査の結果、誰もndphlprの正体を把握していないことが判明したため、完全に解決しようと試みました。

これはマシンコード例外エラーを吐き出します。WinDebugツールは.NETをネイティブサポートしていません(そもそも.NETが存在するはずがないからです)。そのため、MattKCはWindows 95と98を並行してテストする際に、依然として互換性の問題に対処しなければなりません。問題箇所を見つけるために、WinDebugでW95とW98を数日間実行し、進捗状況をリセットするのは骨の折れる作業でした。

ついにMattKCは、WinDebugが読み取れないブロック状のコードを発見しました。解読すると、コードは以下のようになりました。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

F2 0F 10 44 24 08 F2 05 2C CO

このバグのあるコードは、一部のクリック関数でWindows APIが不足していることに関係していました。例外として、「user32.dll内のNotifyWinEvent」が見つからず、SSE2によってコード内の命令が難読化されていました。その後、.NETにSSE2への依存を削除するパッチを適用する必要がありましたが、これでは互換性は改善されず、.NETデバッガ自体の不具合だけが修正されました。

LEGO ISLANDのデバッグをさらに重ねた結果、MattKCは最終的に、例外/エラーメッセージが見えない場所で表示されるのではなく、ウィンドウに表示するメソッドを手動でコーディングしました。この方法はうまく機能し、DLLの互換性に関する最後の問題を解決できました。これにより、LEGO ISLANDのRebuilderと、より近代化されたカスタムのスクリーンショット機能アプリがWindows 95で正常に動作するようになりました。

そして、これは伝説の技術者「十分に決意した狂人」のさらなる数字です。 

クリストファー・ハーパーは、2015年からPCハードウェアとゲームを専門とするフリーランスのテクニカルライターとして活躍しています。それ以前は、高校時代に様々なB2Bクライアントのゴーストライターを務めていました。仕事以外では、友人やライバルには、様々なeスポーツ(特に格闘ゲームとアリーナシューティングゲーム)の現役プレイヤーとして、またジミ・ヘンドリックスからキラー・マイク、そして『ソニックアドベンチャー2』のサウンドトラックまで、幅広い音楽の愛好家として知られています。