Dlaczego tak trudno jest stworzyć emulator konsoli do gier?

14

Zawsze uważałem emulatory za fascynujące. Poważnie chciałbym stworzyć emulator dla starszej konsoli ganeracyjnej lub urządzenia przenośnego. Pomogłoby mi to zdobyć większe uznanie dla sprzętu i gier, które zostały stworzone dla tego sprzętu. Jednak ludzie zawsze mówią, jak ciężko jest i że nie powinienem nawet próbować. Chciałbym wiedzieć, dlaczego tak jest.

Chciałbym też kilka sugestii na temat dobrego miejsca na początek i gdzie mogę znaleźć potrzebne informacje?

Mikrofon
źródło

Odpowiedzi:

15

SO Pytanie

To wydaje się być popularnym źródłem informacji o tym, jak działają.

TL; DR - architektura jest zupełnie inna, a osiągnięcie oryginalnej architektury wymaga wielu równoległych zasobów.

Architektura procesora dla konsol do gier jest często nieco egzotyczna w porównaniu do przeciętnego komputera stacjonarnego. Emulacja oznacza wykonanie w oprogramowaniu wszystkiego, co zrobił oryginalny sprzęt. Oznacza to, że chociaż oryginalna konsola mogła mieć dedykowane układy graficzne, audio itp., A także procesor z innym zestawem instrukcji, emulator musi szybko wykonywać wszystkie funkcje tych równoległych zasobów.

O ile procesor graficzny konsoli nie jest stary, prawie na pewno musi być emulowany na procesorze graficznym komputera hosta, ponieważ nowoczesne karty graficzne, nawet te tanie, mają wielokrotnie przepustowość (w przypadku obciążeń graficznych) nawet najdroższych procesorów wielordzeniowych. Problemem tym jest fakt, że komunikacja między procesorem, kartą graficzną, innymi procesorami DSP na pokładzie i pamięcią została prawdopodobnie wysoce zoptymalizowana na konsoli, aby skorzystać ze specyfiki konfiguracji sprzętowej, dlatego też zasoby te muszą zostać dopasowane.

Biorąc pod uwagę wszystkie te trudności, zwykle niewiele wiadomo na temat specyfiki sprzętu konsoli, ponieważ projekt jest bardzo zawiły. Hobbyści stają się coraz mniej wykonalni.

Z perspektywy czasu symulator architektoniczny (program, który może na przykład uruchamiać program PowerPC na maszynie x86 i gromadzić wszelkiego rodzaju statystyki) może działać od 1000x do 100000x wolniej niż w czasie rzeczywistym. Symulacja RTL (symulacja wszystkich bramek i przerzutników, które składają się na układ) nowoczesnego procesora może zwykle działać tylko w zakresie od 10 Hz do kilkuset Hz. Nawet bardzo zoptymalizowana emulacja może być od 10 do 100 razy wolniejsza niż kod macierzysty, ograniczając w ten sposób to, co można dziś przekonująco emulować (szczególnie biorąc pod uwagę interaktywność w czasie rzeczywistym sugerowaną przez emulator konsoli do gier).

Kaczka komunistyczna
źródło