Nếu bạn đã từng cố gắng thiết lập và chạy một trò chơi máy tính cổ điển trên một hệ thống hiện đại, bạn có thể sẽ bị sốc về cách Nhanh trò chơi đã chạy. Tại sao các trò chơi cũ mất kiểm soát trên phần cứng hiện đại?
Sớm nay chúng tôi đã chỉ cho bạn cách chạy phần mềm cũ hơn trên máy tính hiện đại ; phiên hỏi và trả lời hôm nay là một lời khen hay giúp tìm hiểu lý do tại sao một số phần mềm cũ hơn (cụ thể là trò chơi) dường như không bao giờ hoạt động bình thường khi bạn cố gắng chạy chúng trên phần cứng hiện đại.
Phiên Hỏi & Đáp hôm nay đến với chúng tôi với sự hỗ trợ của SuperUser — một phần của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều hành.
Câu hỏi
Người đọc SuperUser TreyK muốn biết lý do tại sao các trò chơi máy tính cũ chạy rất nhanh trên phần cứng mới:
Tôi có một vài chương trình cũ, tôi đã gỡ bỏ một máy tính Windows đầu những năm 90 và cố gắng chạy chúng trên một máy tính tương đối hiện đại. Điều thú vị là chúng chạy với tốc độ cực nhanh - không, không phải loại nhanh 60 khung hình / giây, đúng hơn là kiểu oh-my-god-the-character-is-walk-at-the-speed-của âm thanh Nhanh. Tôi sẽ nhấn một phím mũi tên và hình vẽ của nhân vật sẽ lướt qua màn hình nhanh hơn nhiều so với bình thường. Tiến trình thời gian trong trò chơi diễn ra nhanh hơn nhiều so với dự kiến. Thậm chí có những chương trình được thực hiện để làm chậm CPU của bạn để những trò chơi này thực sự có thể chơi được.
Tôi nghe nói rằng điều này liên quan đến trò chơi tùy thuộc vào chu kỳ CPU hoặc tương tự như vậy. Câu hỏi của tôi là:
- Tại sao các trò chơi cũ lại làm được điều này, và làm thế nào để họ thoát khỏi nó?
- Làm thế nào để trò chơi mới hơn không phải làm điều này và chạy độc lập với tần số CPU?
Vậy câu chuyện là gì? Chính xác thì tại sao các sprite trong các trò chơi cũ lại phát sáng trên màn hình quá nhanh khiến trò chơi không thể chơi được?
Câu trả lời
Người đóng góp cho SuperUser JourneymanGeek phân tích:
Tôi tin rằng họ đã giả định rằng đồng hồ hệ thống sẽ chạy ở một tốc độ cụ thể và gắn bộ hẹn giờ nội bộ của họ với tốc độ đồng hồ đó. Hầu hết các trò chơi này có thể chạy trên DOS và chế độ thực (với quyền truy cập phần cứng trực tiếp, đầy đủ) và giả sử bạn đang chạy một iirc Hệ thống 4,77 MHz cho PC và bất kỳ bộ xử lý tiêu chuẩn nào mà mô hình đó chạy cho các hệ thống khác như Amiga.
Họ cũng sử dụng các phím tắt thông minh dựa trên những giả định đó bao gồm tiết kiệm một chút tài nguyên bằng cách không viết các vòng định thời nội bộ bên trong chương trình. Chúng cũng sử dụng nhiều sức mạnh bộ xử lý nhất có thể - đó là một ý tưởng hay trong thời đại chip chậm, thường được làm mát thụ động!
Ban đầu, một cách để kiểm soát tốc độ bộ xử lý khác nhau là Nút Turbo (làm chậm hệ thống của bạn). Các ứng dụng hiện đại đang ở chế độ được bảo vệ và hệ điều hành có xu hướng quản lý tài nguyên - chúng sẽ không cho phép một ứng dụng DOS (dù sao cũng đang chạy trong NTVDM trên hệ thống 32 bit) để sử dụng hết bộ xử lý trong nhiều trường hợp. Tóm lại, hệ điều hành đã trở nên thông minh hơn, cũng như các API.
Rất dựa trên cơ sở hướng dẫn này trên PC Oldskool nơi logic và trí nhớ không làm tôi thất vọng - đó là một bài đọc tuyệt vời và có lẽ đi sâu hơn vào “lý do tại sao”.
Nội dung như CPUkiller sử dụng càng nhiều tài nguyên càng tốt để “làm chậm” hệ thống của bạn, vốn không hiệu quả. Bạn sẽ tốt hơn khi sử dụng DOSBox để quản lý tốc độ đồng hồ mà ứng dụng của bạn nhìn thấy.
Nếu bạn tò mò về cách mã thực tế đã được triển khai trong các trò chơi máy tính thời kỳ đầu (và tại sao chúng thích nghi rất kém với các hệ thống hiện đại mà không bị hộp cát trong một số loại chương trình mô phỏng), chúng tôi cũng khuyên bạn nên xem phân tích quy trình dài nhưng thú vị này trong một câu trả lời SuperUser khác.
Có điều gì đó để thêm vào lời giải thích? Tắt âm thanh trong các bình luận. Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange am hiểu công nghệ khác? Kiểm tra toàn bộ chuỗi thảo luận tại đây .