Ana Sayfa

Commander Keen 1-3 Kaynak Kodu Yeniden Yapılandırıldı

1 dk okuma

Commander Keen serisinin hayranları ve retro oyun geliştiricileri için heyecan verici bir gelişme yaşandı. Serinin ilk üç oyunu olan Commander Keen 1-3'ün yeniden oluşturulmuş kaynak kodu kamuoyuyla paylaşıldı. Bu paket, Kasım 1990 beta sürümünden nispeten daha az bilinen Precision Software Applications (sürüm 1.34) sürümüne kadar Keen 1-3'ün bilinen tüm versiyonlarının tam kaynak kodunu içeriyor. Doğru compiler ve assembler sürümleriyle derlendiğinde ve LZEXE veya PKLITE gibi araçlarla sıkıştırıldığında, orijinal dosyalara %100 özdeş çalıştırılabilir dosyalar üretilebiliyor. Bu, oyunların orijinal haliyle yeniden derlenmesine olanak tanıyor.

Projenin geliştiricisi, bu çalışmanın 2021 başlarında, Commander Keen 4-6 kaynak kodunun yayınlanmasından önce tamamlandığını belirtiyor. Ancak, o dönemde doğru compiler'a (Turbo C++ 1.00) erişim eksikliği, %100 özdeş kopyaların derlenmesini engellemiş. Turbo C++ 1.01'in farklı kod üretmesi, bu sorunun temelini oluşturmuş. Ayrıca, Turbo C++ 1.x kullanılırken BSS segmentindeki başlatılmamış değişkenlerin sırasının, değişken isimlerine bağlı olması da önemli bir engel teşkil etmiş. Bazı değişkenlere assembly kodundan erişilmesi gerektiği için, değişkenleri basitçe bir struct içinde gruplamak mümkün olmamış.

Bu zorluğun üstesinden gelmek için geliştirici, rastgele isimlere sahip bir dizi değişken oluşturan ve bunları Turbo C++ compiler'ından geçiren küçük bir yardımcı program yazmış. Üretilen .OBJ dosyasının disassembly'si, değişken isimlerinin hangi sırayı üreteceğini göstermiş. Böylece, compiler ve assembler'ın değişkenleri dahili olarak yeniden adlandırmasına izin verilerek sorun çözülmüş. Bu çözüm, BSSCHEAT.H ve BSSCHEAT.EQU dosyaları aracılığıyla uygulanmış. Bu detaylı çalışma, retro oyunların ve eski yazılımların korunması ve anlaşılması açısından büyük bir değer taşıyor.

İçgörü

Bu çalışma, retro oyunların ve eski yazılımların korunması, anlaşılması ve modern sistemlerde yeniden derlenebilmesi için kritik bir adım.

Kaynak