Jeśli kiedykolwiek próbowałeś uruchomić i uruchomić klasyczną grę komputerową w nowoczesnym systemie, prawdopodobnie byłeś zszokowany, jak to zrobić szybki gra działała. Dlaczego stare gry wymykają się spod kontroli na nowoczesnym sprzęcie?
Wcześniej dzisiaj my pokazał, jak uruchomić starsze oprogramowanie na nowoczesnych komputerach ; dzisiejsza sesja pytań i odpowiedzi to miły komplement, który pozwala zrozumieć, dlaczego niektóre starsze programy (szczególnie gry) nie działają poprawnie, gdy próbujesz je uruchomić na nowoczesnym sprzęcie.
Dzisiejsza sesja pytań i odpowiedzi jest dostępna dzięki uprzejmości SuperUser - części Stack Exchange, grupy witryn internetowych z pytaniami i odpowiedziami.
Pytanie
Czytnik SuperUser TreyK chce wiedzieć, dlaczego stare gry komputerowe szaleją szybko na nowym sprzęcie:
Mam kilka starych programów, które ściągnąłem z komputera z systemem Windows wczesnych lat 90. i próbowałem je uruchomić na stosunkowo nowoczesnym komputerze. Co ciekawe, biegały z niesamowitą szybkością - nie, nie z szybkością 60 klatek na sekundę, raczej w rodzaju, o mój boże, postać idzie z prędkością dźwięku. szybki. Naciskałem klawisz strzałki, a duszek postaci przesuwał się po ekranie znacznie szybciej niż normalnie. Postęp czasu w grze przebiegał znacznie szybciej niż powinien. Są nawet programy do spowolnij procesor tak, że te gry są rzeczywiście grywalne.
Słyszałem, że jest to związane z grą w zależności od cykli procesora lub coś w tym rodzaju. Moje pytania to:
- Dlaczego starsze gry to robią i jak im to uszło na sucho?
- Jak działają nowsze gry nie zrobić to i działać niezależnie od częstotliwości procesora?
Więc o co chodzi? Dlaczego właściwie sprite'y w starych grach płoną po ekranie tak szybko, że gra staje się nie do zagrania?
Odpowiedź
Współautor SuperUser JourneymanGeek wyjaśnia to:
Sądzę, że założyli, że zegar systemowy będzie działał z określoną częstotliwością i powiązali swoje wewnętrzne zegary z tą częstotliwością. Większość z tych gier prawdopodobnie działała w systemie DOS i była tryb rzeczywisty (z pełnym, bezpośrednim dostępem do sprzętu) i założyłem, że korzystasz z iirc System 4,77 MHz dla komputerów PC i dowolnego standardowego procesora, który ten model działał dla innych systemów, takich jak Amiga.
Użyli również sprytnych skrótów w oparciu o te założenia, w tym zaoszczędzili niewielką część zasobów, nie pisząc wewnętrznych pętli czasowych w programie. Zajmowały też tyle mocy procesora, ile mogły - co było przyzwoitym pomysłem w czasach powolnych, często biernie chłodzonych chipów!
Początkowo jednym ze sposobów obejścia różnych szybkości procesora był stary dobry Przycisk Turbo (co spowolniło twój system). Nowoczesne aplikacje działają w trybie chronionym, a system operacyjny ma tendencję do zarządzania zasobami - nie robią tego dopuszczać aplikacja DOS (która i tak działa w NTVDM w systemie 32-bitowym), aby w wielu przypadkach zużywać cały procesor. Krótko mówiąc, systemy operacyjne stały się inteligentniejsze, podobnie jak interfejsy API.
Mocno oparty ten przewodnik na komputerze Oldskool tam, gdzie zawiodła mnie logika i pamięć - to świetna lektura i prawdopodobnie zagłębia się w „dlaczego”.
Rzeczy jak CPUkiller zużywaj jak najwięcej zasobów, aby „spowolnić” system, co jest nieefektywne. Lepiej byłoby użyć DOSBox aby zarządzać szybkością zegara, którą widzi Twoja aplikacja.
Jeśli jesteś ciekawy, w jaki sposób rzeczywisty kod został zaimplementowany we wczesnych grach komputerowych (i dlaczego tak słabo dostosowują się do nowoczesnych systemów, nie będąc w piaskownicy w jakimś programie emulacji), sugerujemy również sprawdzenie ten długi, ale interesujący podział procesu w innej odpowiedzi SuperUser.
Masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych zaawansowanych technicznie użytkowników Stack Exchange? Sprawdź cały wątek dyskusji tutaj .