Jika Anda pernah mencoba membuat game komputer kuno dan berjalan pada sistem modern, Anda mungkin terkejut dengan caranya cepat permainan berjalan. Mengapa game lama tidak terkontrol pada perangkat keras modern?
Sebelumnya hari ini kita menunjukkan kepada Anda cara menjalankan perangkat lunak lama di komputer modern ; sesi tanya jawab hari ini adalah pujian yang bagus yang menggali mengapa beberapa perangkat lunak lama (khususnya game) sepertinya tidak pernah berfungsi dengan baik saat Anda mencoba menjalankannya di perangkat keras modern.
Sesi Tanya & Jawab hari ini hadir atas kebaikan SuperUser — subdivisi Stack Exchange, pengelompokan situs web Tanya Jawab berbasis komunitas.
Pertanyaan
Pembaca SuperUser TreyK ingin tahu mengapa game komputer lama berjalan sangat cepat di perangkat keras baru:
Saya memiliki beberapa program lama yang saya gunakan dari komputer Windows awal era 90-an dan mencoba menjalankannya di komputer yang relatif modern. Yang cukup menarik, mereka berlari dengan kecepatan yang sangat tinggi - tidak, bukan jenis kecepatan 60 frame per detik, melainkan jenis karakter oh-my-god-the-character-is-walking-at-the-speed-of-sound. cepat. Saya akan menekan tombol panah dan sprite karakter akan meluncur di layar jauh lebih cepat dari biasanya. Perkembangan waktu dalam game terjadi lebih cepat dari yang seharusnya. Bahkan ada program yang dibuat untuk memperlambat CPU Anda sehingga game ini benar-benar dapat dimainkan.
Saya pernah mendengar bahwa ini terkait dengan game, bergantung pada siklus CPU, atau semacamnya. Pertanyaan saya adalah:
- Mengapa game lama melakukan ini, dan bagaimana mereka lolos?
- Bagaimana game yang lebih baru tidak melakukan ini dan berjalan secara independen dari frekuensi CPU?
Jadi bagaimana ceritanya? Mengapa sebenarnya sprite di game lama berkobar di layar begitu cepat sehingga game menjadi tidak dapat dimainkan?
Jawabannya
Kontributor SuperUser JourneymanGeek memecahnya:
Saya yakin mereka berasumsi bahwa jam sistem akan berjalan pada kecepatan tertentu, dan mengikat pengatur waktu internal mereka ke laju jam tersebut. Sebagian besar game ini mungkin berjalan di DOS, dan memang mode nyata (dengan akses perangkat keras langsung yang lengkap) dan menganggap Anda menjalankan file iirc Sistem 4,77 MHz untuk PC dan prosesor standar apa pun yang modelnya berjalan untuk sistem lain seperti Amiga.
Mereka juga mengambil jalan pintas yang cerdik berdasarkan asumsi tersebut termasuk menghemat sedikit sumber daya dengan tidak menulis putaran waktu internal di dalam program. Mereka juga menggunakan daya prosesor sebanyak yang mereka bisa - yang merupakan ide yang bagus di zaman chip yang lambat dan sering didinginkan secara pasif!
Awalnya salah satu cara untuk mengatasi perbedaan kecepatan prosesor adalah yang lama Tombol turbo (yang memperlambat sistem Anda). Aplikasi modern berada dalam mode terlindungi dan OS cenderung mengelola sumber daya - padahal tidak mengizinkan aplikasi DOS (yang tetap berjalan di NTVDM pada sistem 32-bit) untuk menggunakan semua prosesor dalam banyak kasus. Singkatnya, OS menjadi lebih pintar, seperti halnya API.
Berbasis berat panduan ini di Oldskool PC di mana logika dan ingatan mengecewakan saya - itu bacaan yang bagus, dan mungkin lebih mendalam lagi ke dalam "mengapa".
Hal-hal seperti Pembunuh CPU menggunakan sumber daya sebanyak mungkin untuk "memperlambat" sistem Anda, yang tidak efisien. Anda akan lebih baik menggunakan DOSBox untuk mengelola kecepatan jam yang dilihat aplikasi Anda.
Jika Anda penasaran tentang bagaimana kode sebenarnya diterapkan pada game komputer awal (dan mengapa mereka sangat buruk beradaptasi dengan sistem modern tanpa dimasukkan ke dalam kotak pasir dalam semacam program emulasi), kami juga menyarankan untuk memeriksa pemecahan proses yang panjang tapi menarik ini dalam jawaban SuperUser lainnya.
Punya sesuatu untuk ditambahkan ke penjelasannya? Suarakan di komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang paham teknologi? Lihat utas diskusi lengkap di sini .