16Aug
Jeśli kiedykolwiek próbowałeś stworzyć starą grę komputerową na nowoczesnym systemie, prawdopodobnie byłeś zszokowany tym, jak szybko gra działała. Dlaczego stare gry wymykają się spod kontroli na nowoczesnym sprzęcie?
Wcześniej dzisiaj pokazaliśmy, jak uruchomić starsze oprogramowanie na nowoczesnych komputerach;Dzisiejsza sesja pytań i odpowiedzi jest miłym komplementem, który wyjaśnia, dlaczego niektóre starsze oprogramowanie( w szczególności gry) nigdy nie działają poprawnie, gdy próbujesz uruchomić je na nowoczesnym sprzęcie.
Dzisiejsze pytanie &Sesja odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupy Q & A.
Pytanie Czytnik
SuperUser TreyK chce wiedzieć, dlaczego stare gry komputerowe szalają szybko na nowym sprzęcie:
Mam kilka starych programów, które ściągnąłem z komputera Windows z lat 90-tych i próbowałem uruchomić je na stosunkowo nowoczesnym komputerze. Co ciekawe, biegali z niesamowitą szybkością - nie, nie z szybkością 60 klatek na sekundę, raczej z oh-my-god-the-character-is-walking-at-the-speed-of-soundszybki. Naciskam klawisz strzałki, a sprite postaci będzie się przesuwać po ekranie znacznie szybciej niż normalnie. Postęp w grze następował znacznie szybciej niż powinien. Istnieją nawet programy, które spowalniają procesor, aby można było grać w te gry.
Słyszałem, że jest to związane z grą w zależności od cykli procesora lub czegoś w tym rodzaju. Moje pytania są następujące:
- Dlaczego starsze gry robią to i jak sobie z tym radzą?
- W jaki sposób nowsze gry nie robią to i działają niezależnie od częstotliwości procesora?
Więc jaka jest historia? Dlaczego akurat sprite w starych grach są tak szybkie, że gra staje się nie do zagrania?
Odpowiedź Autor
Recenzent SuperUser JourneymanGeek go zrywa:
Sądzę, że założyli, że zegar systemowy działałby z określoną szybkością i wiązał ich wewnętrzne zegary z tą częstotliwością zegara. Większość z tych gier prawdopodobnie działała w systemie DOS i była w trybie rzeczywistym( z pełnym, bezpośrednim dostępem do sprzętu) i zakładała, że korzystasz z systemu iirc 4.77 MHz dla komputerów PC i dowolnego standardowego procesora, który był dostępny dla innych systemów, takich jak Amiga.
Wzięli również sprytne skróty w oparciu o te założenia, w tym oszczędzając niewielką ilość zasobów, nie zapisując wewnętrznych pętli synchronizacji wewnątrz programu. Wzięli również tyle mocy procesora ile mogli - co było przyzwoitym pomysłem w czasach powolnych, często biernie chłodzonych chipów!
Początkowo jednym ze sposobów na obejście różnej szybkości procesora był stary, dobry przycisk Turbo( spowalniający system).Nowoczesne aplikacje znajdują się w trybie chronionym, a system operacyjny ma tendencję do zarządzania zasobami - nie nie zezwala na aplikację DOS( która działa w NTVDM w systemie 32-bitowym), aby w wielu przypadkach zużywać cały procesor. W skrócie, systemy operacyjne stały się mądrzejsze, podobnie jak interfejsy API.
Opierając się mocno na tym przewodniku na Oldskool PC, w którym zawiodła mnie logika i pamięć - jest to świetna lektura i prawdopodobnie bardziej wnika w "dlaczego".
Rzeczy jak CPUkiller zużywają jak najwięcej zasobów, aby "spowolnić" system, co jest nieefektywne. Lepiej wykorzystaj DOSBox do zarządzania szybkością zegara, którą widzi twoja aplikacja.
Jeśli zastanawiasz się, w jaki sposób kod został zaimplementowany we wczesnych grach komputerowych( i dlaczego tak źle przystosowują się do nowoczesnych systemów, nie będąc piaskownicą w programie emulującym), sugerujemy sprawdzenie tego długiego, ale interesującego niepowodzeniaprocesu w kolejnej odpowiedzi SuperUser.
Czy chcesz coś dodać do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.