Nintendo emulátor fejlesztése C++ nyelven
Absztrakt
Szakdolgozatom célja egy régi játékkonzol a Nintendo által készített Nintendo Entertainment System (NES) architektúrájának bemutatása és hozzá egy emulátor elkészítése. Az architektúrát az egyes részegységek szerint mutatom be. Először a 6502-es CPU működését részletezem. Itt kitérek az egyes címzési üzemmódokra, a használható utasításkészletre, továbbá a megszakításkezelési rendszerre. Az architektúra áttekintését az APU-val folytatom, itt a konkrét hullámforma előállításának folyamatát, illetve a NES-re írt programok által használható regisztereket mutatom be. Az ezt következő fejezetben a PPU működéséről van szó, itt kitérek a használható regiszterekre, a címtérre, továbbá ismertetem a képgenerálás folyamatát. Ezt követően a kontroller működését szemléltetem. Az architektúra bemutatását a játékok tárolására használt kazetták bemutatásával zárom, itt kitérek az emulációhoz használható INES formátumra, és az úgynevezett mapper-ekre. Az elkészített implementáció hasonló struktúrában kerül bemutatásra, mint ahogy az architektúra bemutatása is történik. Az egyes részegységek implementációinak bemutatása után az SDL külső könyvtár segítségével megvalósított felhasználói kezelőfelület kerül áttekintésre. Végül reflektálva az elkészített implementációm egy-két optimalizációs hibájára, ajánlok pár ötletet egy jobb, az emuláló gépet kevésbé terhelő program elkészítéséhez. A kutatás során megismerkedtem a NES architektúrájával, továbbá sikeresen implementáltam egy egyszerű, de stabilan működő emulátort.