Emulatory: co i jak?

Witam,

tytuł może być mylący, bo nie chodzi mi o same emulatory, ale ich tworzenie :slight_smile:

Mianowicie z kolegą od pewnego czasu robimy jakieś programiki, gierki itp. Ostatnio na naszej konsolce, chcieliśmy sobie odpalić starą grę napisaną chyba w pascalu. Niby można było by to odpalić w dosboxie, ale wersja tego na naszej konsolce jest dosyć dziadoska. Chcieliśmy zrobić coś podobnego (przynajmniej spróbować). I tu pojawia się pytanie: jak się do tego zabrać?

PS: Od razu mówię że nie interesują mnie moje szanse na tego wykonanie tylko mniej więcej jak to się robi… :!:

Co to jest ta “Wasza konsolka”?

Emulator czego (jakiego urządzenia, systemu) i na jaką platformę chcecie napisać?

Zacznijmy od szans na to, że napiszesz własny emulator: są bliskie zeru. Więcej przydatnych umiejętności i bardziej wymierne efekty uzyskasz poprawiając port DosBoksa na “Waszą konsolkę”. Pisanie emulatora zaczyna się od poznania architektury sprzętu, który chcesz emulować: budowy procesora, sposobu komunikacji z peryferiami, itd. Twój emulator musi być w stanie przynajmniej interpretować kod maszynowy danego procesora, w większości przypadków (tak jest np. z DosBox) także części sprzętu pobocznego (nośniki danych, karty graficzne i muzyczne, kontrolery) i systemu operacyjnego, w którym uruchamiane są właściwe programy. Jeśli nie masz na karku przynajmniej 20-kilku lat, istnieje bardzo duża szansa że masz masę materiału do przerobienia i musisz sporo nadrobić: od trybów pracy procesora, poprzez mapowanie urządzeń w pamięci, po działanie rejestrów, przerwania i masę innych rzeczy.

DosBox powstawał 8 lat i w jego tworzenie zaangażowanych było ~10 osób. Wiara, że zrobisz coś lepiej z kolegą w krótszym czasie jest naiwna. Więc ponownie sugeruję skupić się na poprawianiu DosBoksa. I, tak po prawdzie, zamiast pytać “jak”, trzeba było zerknąć w jego kod (albo kod dowolnego innego emulatora, np. MAME). Nauczyłbyś się więcej i szybciej niż z forum. :wink: No i poguglaj - jest kilka wstępnych artykułów na temat emulacji.