โฮมเพจ » ทำอย่างไร » ทำไมเกมเก่าถึงเล่นเร็วเกินไปในคอมพิวเตอร์สมัยใหม่?

    ทำไมเกมเก่าถึงเล่นเร็วเกินไปในคอมพิวเตอร์สมัยใหม่?

    หากคุณเคยลองเล่นเกมคอมพิวเตอร์แนววินเทจและเล่นบนระบบที่ทันสมัยคุณอาจตกใจกับวิธีการดังกล่าว รวดเร็ว เกมวิ่ง ทำไมเกมเก่าถึงขาดการควบคุมบนฮาร์ดแวร์ที่ทันสมัย?

    ก่อนหน้านี้เราแสดงให้คุณเห็นถึงวิธีการใช้งานซอฟต์แวร์ที่เก่ากว่าบนคอมพิวเตอร์ที่ทันสมัย เซสชั่นคำถามและคำตอบของวันนี้เป็นคำชมที่ดีที่ทำให้เข้าใจว่าทำไมซอฟต์แวร์รุ่นเก่า (โดยเฉพาะเกม) ดูเหมือนจะไม่ทำงานเมื่อคุณพยายามเรียกใช้บนฮาร์ดแวร์ที่ทันสมัย.

    เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.

    คำถาม

    TreyK ผู้อ่าน SuperUser ต้องการทราบว่าเพราะเหตุใดเกมคอมพิวเตอร์รุ่นเก่าจึงทำงานอย่างรวดเร็วบนฮาร์ดแวร์ใหม่:

    ฉันมีโปรแกรมเก่าสองสามตัวที่ฉันดึงออกมาจากคอมพิวเตอร์ Windows ยุคต้นยุค 90 และพยายามเรียกใช้พวกเขาบนคอมพิวเตอร์ที่ค่อนข้างทันสมัย น่าสนใจพอพวกเขาวิ่งด้วยความเร็วที่รวดเร็ว - ไม่ใช่ไม่ใช่ 60 เฟรมต่อวินาทีอย่างรวดเร็วแทนที่จะเป็นแบบตัวละครเดินเร็วด้วยความเร็วของเสียง รวดเร็ว ฉันจะกดแป้นลูกศรและสไปรต์ของตัวละครจะซิปผ่านหน้าจอเร็วกว่าปกติมาก ความก้าวหน้าของเวลาในเกมกำลังเกิดขึ้นเร็วกว่าที่ควร มีแม้กระทั่งโปรแกรมที่ทำให้ซีพียูของคุณช้าลงเพื่อให้เกมเหล่านี้เล่นได้จริง.

    ฉันได้ยินมาว่าเรื่องนี้เกี่ยวข้องกับเกมขึ้นอยู่กับรอบการทำงานของ CPU หรืออะไรทำนองนั้น คำถามของฉันคือ:

    • ทำไมเกมรุ่นเก่าถึงทำเช่นนี้และพวกเขาทำได้อย่างไร?
    • เกมใหม่ทำอย่างไร ไม่ ทำสิ่งนี้และทำงานโดยไม่ขึ้นกับความถี่ของ CPU?

    ดังนั้นเรื่องราวคืออะไร เหตุใดสไปรท์ในเกมเก่าจึงลุกโชนบนหน้าจอเพื่อให้เกมเล่นได้อย่างรวดเร็ว?

    คำตอบ

    ผู้ร่วมสนับสนุน SuperUser JourneymanGeek แบ่งมันลง:

    ฉันเชื่อว่าพวกเขาคิดว่านาฬิการะบบจะทำงานในอัตราที่กำหนดและเชื่อมโยงกับตัวจับเวลาภายในกับอัตรานาฬิกาดังกล่าว เกมเหล่านี้ส่วนใหญ่อาจทำงานบน DOS และเป็นโหมดจริง (ด้วยการเข้าถึงฮาร์ดแวร์โดยตรงทั้งหมด) และถือว่าคุณใช้ iirc ระบบ 4.77 MHz สำหรับพีซีและโปรเซสเซอร์มาตรฐานใด ๆ ก็ตามที่ใช้กับระบบอื่นเช่น Amiga.

    พวกเขายังใช้ทางลัดที่ฉลาดขึ้นอยู่กับสมมติฐานเหล่านั้นรวมถึงการประหยัดทรัพยากรเล็กน้อยโดยไม่เขียนลูปภายในเวลาในโปรแกรม พวกเขายังใช้พลังงานตัวประมวลผลมากเท่าที่จะทำได้ซึ่งเป็นความคิดที่ดีในช่วงเวลาที่ช้าชิปมักจะเย็นตัวลงอย่างอดทน!

    เริ่มแรกวิธีหนึ่งในการรับความเร็วโปรเซสเซอร์ที่แตกต่างกันคือปุ่ม Turbo ตัวเก่า (ซึ่งทำให้ระบบของคุณช้าลง) แอปพลิเคชั่นที่ทันสมัยอยู่ในโหมดป้องกันและระบบปฏิบัติการมีแนวโน้มที่จะจัดการทรัพยากร - พวกเขาจะไม่ อนุญาต แอปพลิเคชัน DOS (ซึ่งทำงานใน NTVDM บนระบบ 32 บิตอยู่แล้ว) เพื่อใช้งานตัวประมวลผลทั้งหมดในหลายกรณี ในระยะสั้นระบบปฏิบัติการได้ฉลาดขึ้นเช่นเดียวกับ API.

    อย่างหนักตามคู่มือนี้บนพีซี Oldskool ที่ตรรกะและหน่วยความจำฉันไม่ได้ - เป็นการอ่านที่ยอดเยี่ยมและอาจเจาะลึกลงไปใน“ ทำไม”.

    สิ่งต่างๆเช่น CPUkiller ใช้ทรัพยากรมากที่สุดเท่าที่จะทำได้เพื่อ“ ช้า” ลงในระบบของคุณซึ่งไม่มีประสิทธิภาพ คุณควรใช้ DOSBox เพื่อจัดการความเร็วสัญญาณนาฬิกาที่แอปพลิเคชันของคุณเห็น.

    หากคุณสงสัยเกี่ยวกับวิธีการใช้งานรหัสจริงในเกมคอมพิวเตอร์ยุคแรก (และทำไมพวกเขาจึงปรับใช้กับระบบที่ทันสมัยโดยไม่ต้องถูก sandboxed ในโปรแกรมจำลองบางประเภท) เราขอแนะนำให้ลองตรวจสอบความยาวนี้ แต่น่าสนใจ ดำเนินการในคำตอบ SuperUser อื่น.


    มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.