YouTuber MattKC, Windows 98’in en öne çıkan özelliği olan .NET Framework’ü titizlikle eski 95’e taşıyarak, kendi deyimiyle “binlerce uygulamayı” Windows 95’e taşımıştır. Windows 95’in 98’e göre ana kısıtlaması sonuçta; .NET Framework’ün bir örneği — Windows 98, diğer birçok açıdan tasarım ve işlev açısından önceki modeline şaşırtıcı derecede yakın. Peki bunu neden yaptı?
Birkaç kez izlediğimiz 51 dakikalık video, çoğunlukla o donanım ve yazılım çağına yönelik gerçek coşkuyu ortaya koyuyor; piyasaya sürülmesinden 28 yıl sonra Windows 95’in genişletilmesiyle ilgili bir film yapmaya istekli olup olmadığı tahmin edilebilir. Aşağıda yer alan orijinal videoda, birkaç güzel çekilmiş ara dahil olmak üzere, tonu ve karakteri belirleyen birçok eğlenceli canlı aksiyon teğeti de bulunuyor.
KernelEx’e küfretmek Windows 95’te çalışmıyor; MattKC’nin .NET Framework’ün nasıl düzgün çalışmasını sağlayacağını bulması gerekiyor. Eksik .DLL dosyaları çoktur, ancak bir boşaltma aracının kullanılması, eksik dosyaların adlarının tanımlanmasına olanak tanır, böylece eksik DLL değiştirilebilir veya göz ardı edilebilir. Tüm eksik DLL dosyalarını taşıdıktan sonra bile .NET hala verim vermiyor.
.NET’in Windows 95’te çalışması için, orijinal 51 dakikalık 53 saniyelik videodaki saniyelerden daha fazla kayıt defteri anahtarı gerekiyor; gereken toplam kayıt defteri anahtarı sayısı 5.409’du.
Ancak .NET, bir kez taşındığında bile Windows 95’te JIT (Tam Zamanında) hata ayıklamasını yapamıyor. Bunun nedeni, Windows 98’de kullanılmayan ancak .NET çöktüğünden beri .NET için “gerekli” olan gizemli eski bir Windows sürücüsü olan “ndphlpr” gibi görünüyor. Onsuz. MattKC, bilgisayara ndphlpr’ye sahip olduğu konusunda yalan söylemenin işe yarayabileceğini belirler, ancak araştırma kimsenin ne olduğunu bilmediğini ortaya çıkardıktan sonra durumu tamamen düzeltmeye çalışır.
Bu, bir makine kodu istisna hatası verir. WinDebug aracı .NET’i yerel olarak desteklemiyor (çünkü henüz var olmaması gerekiyor), bu nedenle MattKC’nin Windows 95 ve 98’i paralel olarak test ederken bazı uyumluluk sorunlarıyla uğraşması gerekiyor. W95 ve W98, sorunu bulmak için günlerce WinDebug’da çalıştırıldı ve ilerlemenin sıfırlanması zahmetli bir işti.
Sonunda MattKC sonunda WinDebug’un okuyamadığı engellenmiş bir kod bloğu buldu. Şifre çözüldükten sonra kod şu şekilde ortaya çıktı:
F2 0F 10 44 24 08 F2 05 2C CO
Bu hatalı kod, bazı tıklama işlevleri için eksik bir Windows API ile ilgiliydi. Bunun istisnası, “user32.dll dosyasında NotifyWinEvent”i bulamaması ve SSE2’nin koddaki bir talimatı gizlemiş olmasıydı. Daha sonra, SSE2 bağımlılığını kaldırmak için .NET’e yama uygulanması gerekiyordu; ancak bu, uyumluluğu düzeltmedi, yalnızca .NET hata ayıklayıcının kendisi.
Lego Adası için çok daha fazla hata ayıklamanın ardından MattKC, sonunda İstisna/hata mesajını göremediği bir yerde olmak yerine bir pencereye yazdırmak için manuel olarak bir yöntem kodladı. Bu işe yarar ve DLL uyumluluğunun son kısmının giderilmesine olanak tanır. Bunu takiben, Rebuilder for Lego Island ve özel, daha modernleştirilmiş ekran görüntüsü işlevi uygulaması artık Windows 95’te sorunsuz çalışıyor.
Ve bu da efsanedeki “Yeterince Belirlenmiş Deli” teknik adamların bir başka rakamı.