Merhaba arkadaşlar! Bugün sizlerle nostaljik bir yolculuğa çıkacağız ve JS-DOS ile tanışacağız. 90’ların efsane DOS oyunlarını modern web tarayıcılarında çalıştırmayı hayal ettiniz mi? İşte JS-DOS tam olarak bunu yapıyor! Doom, Prince of Persia, Wolfenstein 3D… Hepsi tarayıcınızda, hiçbir kurulum yapmadan çalışabiliyor.
JS-DOS Nedir? Neden Bu Kadar Etkileyici?
JS-DOS, DOSBox emülatörünün JavaScript/WebAssembly portudur. Yani DOS işletim sistemini ve x86 mimarisini tamamen tarayıcı içinde emüle ediyor. Düşünsenize - 1980’lerin işletim sistemi, 2024’ün web tarayıcısında çalışıyor!
Bu sadece bir oyun emülatörü değil arkadaşlar. Tam teşekküllü bir DOS environment’ı tarayıcınızda çalışıyor. DOS komutları yazabilir, batch script’leri çalıştırabilir, hatta eski DOS programlarınızı bile açabilirsiniz.
Emülasyon vs Simülasyon - Fark Önemli!
Çoğu kişi bu ikisini karıştırıyor. Simülasyon, bir sistemin davranışını taklit eder. Emülasyon ise o sistemin kendisi gibi davranır, instruction level’da çalışır.
JS-DOS emülasyon yapıyor. Yani x86 CPU instruction’larını tek tek yorumlayıp çalıştırıyor. VGA graphics card’ı, Sound Blaster ses kartını, keyboard controller’ı… Hepsini emüle ediyor. Bu yüzden orijinal DOS programları hiçbir değişiklik yapmadan çalışıyor!
WebAssembly’nin Gücü
JS-DOS’un bu kadar performanslı çalışmasının sırrı WebAssembly (WASM). Pure JavaScript ile DOS emülasyonu çok yavaş olurdu. WASM sayesinde native’e yakın performans elde ediliyor.
DOSBox’ın C++ kodu, Emscripten ile WASM’a compile ediliyor. Browser bu WASM kodunu neredeyse native hızda çalıştırıyor. 486 DX2 66MHz’lik bir bilgisayarı rahatça emüle edebiliyor - ki bu 90’ların ortası için gayet güçlü bir sistem!
Nasıl Çalışıyor? Mimari Bakış
JS-DOS’un katmanlı bir yapısı var:
DOS Layer: MS-DOS 6.22 compatible bir DOS implementation. File system, memory management, interrupt handling… Hepsi var.
Hardware Emulation Layer: CPU (x86), VGA, Sound Blaster, keyboard, mouse, joystick emülasyonu. Her hardware component JavaScript/WASM’da implement edilmiş.
Browser Integration Layer: Canvas’a render, Web Audio API ile ses, Gamepad API ile joystick desteği. Modern web API’larını DOS dünyasına bağlıyor.
File System: EmscriptenFS kullanarak virtual file system oluşturuyor. ZIP dosyalarından otomatik extract edebiliyor.
Basit Kullanım Örnekleri
En basit HTML embed:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link rel="stylesheet" href="https://v8.js-dos.com/latest/js-dos.css" />
<title>My Awesome Website</title>
</head>
<body>
<h1>My Awesome game</h1>
<div id="dos" style="width: 100vw; height: 60vw;"></div>
</body>
<script src="https://v8.js-dos.com/latest/js-dos.js"></script>
<script>
Dos(document.getElementById("dos"), {
url: "https://v8.js-dos.com/bundles/digger.jsdos",
});
</script>
</html>
Performans ve Optimizasyon
JS-DOS şaşırtıcı derecede performanslı ama tabii ki native DOSBox kadar değil. Performansı etkileyen faktörler:
CPU Cycles: Emüle edilen CPU hızı. “auto” genelde ideal ama bazı oyunlar için manuel ayar gerekebilir.
Graphics Mode: VGA modları (320x200) hızlı, SVGA modları (640x480+) daha yavaş.
Sound Emulation: Sound Blaster emülasyonu CPU intensive. Ses kalitesini düşürmek performans artırabilir.
Browser Engine: Chrome/Edge en hızlısı (V8 engine). Firefox da iyi. Safari biraz daha yavaş.
Oyun Uyumluluğu
Çoğu DOS oyunu mükemmel çalışıyor:
Mükemmel çalışanlar: Doom, Wolfenstein 3D, Prince of Persia, Commander Keen, Jazz Jackrabbit, Warcraft, Dune 2…
Minor issue’ları olanlar: Some Sierra adventure games (timing issues), bazı FMV oyunlar (video codec sorunları)
Çalışmayanlar: Protected mode extender kullanan bazı geç dönem oyunlar, Windows 95 gerektiren oyunlar
Mobile Desteği
JS-DOS mobile browser’larda da çalışıyor! Touch control overlay’i var. Virtual keyboard, virtual mouse, hatta virtual joystick bile var. Tabii ki performans desktop’a göre düşük ama playable.
iPad’de Doom oynamak… 1993’te hayal bile edemezdik!
Save/Load State
JS-DOS’un harika özelliklerinden biri state save/load. Oyunun herhangi bir anında snapshot alıp, sonra kaldığınız yerden devam edebiliyorsunuz. Browser’ı kapatıp açsanız bile!
State’ler IndexedDB’de saklanıyor. Birden fazla save slot’u destekliyor. Cloud sync bile yapabilirsiniz (manuel olarak).
Network Play?
Original DOS oyunları modem/serial port üzerinden multiplayer destekliyordu. JS-DOS bunları WebRTC üzerinden emüle edebiliyor! Doom deathmatch browser’da… İnanılmaz değil mi?
Tabii ki setup biraz karmaşık ve latency var ama çalışıyor!
JS-DOS’un Alternatifleri
EM-DOSBox: Daha eski, daha basit. JS-DOS’un öncülü.
v86: x86 emulator, full OS boot edebiliyor (Linux, Windows 95). Daha güçlü ama daha karmaşık.
RetroArch: Multi-platform emulator. DOS dahil birçok sistemi destekliyor ama web versiyonu limited.
Archive.org DOS Collection: Binlerce DOS oyunu, browser’da oynanabilir. JS-DOS kullanıyor!
Kendi DOS Archive’ınızı Oluşturun
JS-DOS ile kendi retro gaming sitenizi yapabilirsiniz:
- Oyunları ZIP’leyin
- Autoexec.bat ile otomatik başlatma ayarlayın
- Custom configuration ile optimize edin
- Web sayfanıza embed edin
Hatta electron ile desktop app bile yapabilirsiniz!
Gelecek ve Potansiyel
JS-DOS sadece nostalji değil. Eğitim için harika - programlama tarihini öğrenmek, eski software’leri incelemek için. Digital preservation açısından da önemli - eski software’lerin yaşamasını sağlıyor.
WebGPU gelince performans daha da artacak. WebXR desteği ile VR’da DOS oyunları oynamak mümkün olabilir.
Sonuç
JS-DOS, web teknolojilerinin ne kadar güçlü olduğunun mükemmel bir örneği. 40 yıllık software’i modern browser’da çalıştırmak… Bu teknik bir başarı!
Nostalji faktörü bir yana, emulation teknolojisi ve web platform’unun yeteneklerini göstermesi açısından çok değerli. Hem eğlenceli hem eğitici.
Eğer 90’ları özlüyorsanız ya da o dönemi merak ediyorsanız, JS-DOS ile o günlere geri dönebilirsiniz. Üstelik install, setup, compatibility derdi olmadan!
Teknoloji ilerliyor ama klasikler her zaman klasik kalıyor. Doom 1993’te efsaneydi, 2024’te hala efsane. Sadece artık browser’da oynuyoruz!