Emulator Igralne Konzole Game Boy
Total Page:16
File Type:pdf, Size:1020Kb
Univerza v Ljubljani Fakulteta za racunalniˇ ˇstvo in informatiko Klemen Jesenovec Emulator igralne konzole Game Boy DIPLOMSKO DELO VISOKOSOLSKIˇ STROKOVNI STUDIJSKIˇ PROGRAM PRVE STOPNJE RACUNALNIˇ STVOˇ IN INFORMATIKA Mentor: doc. dr. BoˇstjanSlivnik Ljubljana, 2018 Copyright. Rezultati diplomske naloge so intelektualna lastnina avtorja in Fakultete za raˇcunalniˇstvo in informatiko Univerze v Ljubljani. Za objavo in koriˇsˇcenje rezultatov diplomske naloge je potrebno pisno privoljenje avtorja, Fakultete za raˇcunalniˇstvo in informatiko ter mentorja. Besedilo je oblikovano z urejevalnikom besedil LATEX. Fakulteta za raˇcunalniˇstvo in informatiko izdaja naslednjo nalogo: Tematika naloge: Za operacijski sistem MS Windows izdelajte emulator za igralno konzolo Game Boy. Opiˇsitenjegovo zgradbo in naˇcindelovanja, njegovo delovanje pa preizkusite z izbranimi igricami, za katere ugotovite, do katere mere delujejo. Kazalo Povzetek Abstract 1 Uvod 1 2 Sorodna dela 5 2.1 Statiˇcnotolmaˇcenjein dinamiˇcnoprevajanje . .6 3 Pregled strojne opreme 9 3.1 Sestava emulatorja . 10 4 Centralna procesna enota 11 4.1 Registri in zastavice . 11 4.2 Ukazi . 12 4.3 Prekinitve . 20 4.4 Implementacija v emulatorju . 21 5 Pomnilnik 25 5.1 Krmilniki pomnilniˇskihmodulov . 27 5.2 Implementacija v emulatorju . 28 6 Grafiˇcnikoprocesor 31 6.1 Grafiˇcnicevovod . 32 6.2 Registri . 33 6.3 Pomnilnik . 35 6.4 Implementacija v emulatorju . 36 7 Tipkovnica 39 7.1 Implementacija v emulatorju . 40 8 Casovnikˇ 43 8.1 Implementacija v emulatorju . 44 9 Delovanje emulatorja 47 10 Zakljuˇcek 51 Literatura 53 Seznam uporabljenih kratic kratica angleˇsko slovensko LCD liquid-crystal display tekoˇcekristalnizaslon IR infrared infrardeˇce ROM read-only memory bralni pomnilnik RAM random-access memory bralno-pisalni pomnilnik PC program counter programski ˇstevec SP stack pointer skladovni kazalec SGB Super Game Boy Super Game Boy MBC memory bank controller krmilnik pomnilniˇskih modu- lov OAM object attribute memory tabela lastnosti objektov DMA direct memory access neposredni dostop do pomnil- nika Povzetek Naslov: Emulator igralne konzole Game Boy Avtor: Klemen Jesenovec Diplomsko delo obravnava problem ˇstudijestojne opreme in izdelave emula- torja za igralno konzolo Game Boy. Problema smo se lotili s preuˇcevanjem dokumentacije Game Boya in njegovih lastnosti. Za implementacijo emula- torja smo zaradi njegove uˇcinkovitosti in bliˇzini strojne opreme izbrali jezik C++. Problem smo razbili na podprobleme in implementirali vsak podsis- tem Game Boya posebej, ki smo jih nato zdruˇziliv celoto. Konˇcenrezultat diplomske naloge je delujoˇcemulator Game Boya. Kljuˇcnebesede: emulator, Game Boy, C++. Abstract Title: Game Boy Emulator Author: Klemen Jesenovec This thesis describes the problem of hardware study and implementation of an emulator for the Game Boy video game console. The work began with studying Game Boy's documentation and its hardware properties. The C++ language was chosen for the implementation due to its efficiency and it being close to hardware. We divided the problem into sub-problems and implemented each Game Boy subsystem separately, which we then combined into a whole. The final result of the thesis is a working Game Boy emulator. Keywords: emulator, Game Boy, C++. Poglavje 1 Uvod Game Boy [2] je prenosna igralna konzola, ki jo je leta 1989 izdalo japonsko podjetje Nintendo. Prvi model je priˇselle v sivi barvi, prikazan je na sliki 1.1. Slika 1.1: Prvi model igralne konzole Game Boy (DMG). Visok je 148, ˇsirok90 in debel 32 milimetorv. Zelen zaslon LCD brez 1 2 Klemen Jesenovec osvetljenega ozadja ima nastavljiv kontrast in premore ˇstiriodtenke zelenka- ste barve. Moˇznoje tudi nastavljanje glasnosti zvoka in prikljuˇcitev sluˇsalk na 3.5 mm zvoˇcniprikljuˇcek. Igre so v obliki kaset in se jih vstavi v reˇzo na zadnjem delu Game Boya. Kaseta igre Tetris je prikazana na sliki 1.2. Game Boy podpira tudi serijsko povezavo z drugo konzolo. Uporabnik z njim upravlja z osmimi gumbi. Nintendu je uspelo prodati kar 118 milijonov konzol [7]. Tako je Game Boy, v ˇcasupisanja tega diplomskega dela, tretja najbolje prodajana igralna konzola vseh ˇcasov. Pred njim je le Sonyjev Playstation 2 z veˇckot 155 milijoni prodanih konzol in Nintendov Nintendo DS, ki je nasledil Game Boyevega naslednika in je bil prodan 154 milijonkrat. V letih po izidu prvega modela igralne konzole, je izˇsloˇse nekaj iz- boljˇsav [12]: • Game Boy Light je bil preoblikovan izvirnik z manjˇsoobliko in bolj uˇcinkovitim delovanjem, ter je tako porabil manj energije. • Game Boy Pocket, ki je bil izdan le na japonskem, je bil prav tako preoblika, ki so mu dodali ˇseosvetlitev ozadja. • Game Boy Color je bila zadnja izboljˇsava, ki je konzoli dodala tudi za- slon v barvah in nekaj novih zmogljivosti strojne opreme kot so hitrejˇse delovanje, veˇcjakoliˇcinaspomina, nove moˇznostiprikazovanja, ipd. Game Boy so izdelovali vse do leta 2003, ko ga je nasledil Game Boy Advance. Seznam najbolj prodajanih iger vkljuˇcuje[6]: • Tetris (35 milijonov prodanih kopij), • Pok´emonRed, Green in Blue (31 milijonov prodanih kopij), • Super Mario Land (18 milijonov prodanih kopij), • Kirby's Dream Land (5 milijonov prodanih kopij). Diplomska naloga 3 Slika 1.2: Kaseta igre Tetris. V tej diplomski nalogi se bomo posvetili predvsem lastnostim strojne opreme izvirnega modela Game Boya s poudarkom na izdelavi emulatorja, ki bo tekel na osebnih raˇcunalnikih.Vsa izvorna koda nastalega emulatorja je prosto dostopna na GitHubu [5]. V drugem poglavju sledi primerjava sorodnih del. V naslednih poglavjih pa so podrobnejˇseopisane lastnosti strojne opreme in njihove implementa- cije v emulatorju napisanem v programskem jeziku C++. V poglavju 3 se nahaja sploˇsniopis strojne opreme in emulatorja. Temu sledijo poglavja, ki podrobneje opiˇsejopodsisteme. V poglavju 4 centralno procesno enoto, v 5. pomnilnik, v 6. grafiˇcnikoprocesor, v 7. tipkovnico in v 8. poglavju je opisan ˇcasovnik. V 9. poglavju je opisano delovanje emulatorja. Temu sledi le ˇsezakljuˇcek. 4 Klemen Jesenovec Poglavje 2 Sorodna dela Emulator [1] je programska oprema, ki omogoˇcigostujoˇcemu raˇcunalniˇskemu sistemu, da se obnaˇsakot drug raˇcunalniˇskisistem t. i. gost. To omogoˇca gostujoˇcemu raˇcunaliˇskemu sistemu poganjanje programske opreme, ki je bila napisana za raˇcunalniˇskisistem gosta. To ima kar nekaj prednosti, kot so • dodatne zmogljivosti, ki jih izvirni raˇcunalniˇskisistem ni imel; • omogoˇcanjepoganjanja programske opreme na drugaˇcnihsistemih; • ohranjanje stare programske opreme na novejˇsihsistemih. Seveda pa imajo emulatorji tudi nekaj hib: • legalne teˇzave s krˇsitvijoavtorskih pravic; • gostiteljski sistemi morajo biti bolj zmogljivi od sistema gosta. Od Game Boyevega izida do danes je bilo narejenih ˇzekar nekaj emulatorjev. Seznam pomembnejˇsihobstojeˇcihemulatorjev vkljuˇcuje: • BGB je zaprtokodni emulator, poznan po svoji natanˇcnostiin vizual- nim razshroˇsˇcevalnikom. • Gambatte je zelo natanˇcenemulator, ki pa je tudi odprtokoden. • Coffee GB je emulator napisan v Javi. 5 6 Klemen Jesenovec • GEM je emulator Game Boya, ki uporablja dinamiˇcnoprevajanje. Seznam podobnih emulatorjev, ki niso neposredno povezani z Game Boy- em, vkljuˇcuje: • Oracle Virtual Box je prosta in odprtokodna programsa oprema za virtualizacijo osebnih raˇcunalnikov. Uporablja dinamiˇcnoprevajanje. • VMware Workstation Player je prosta, ampak ne odprtokodna, pro- gramska oprema za virtualizacijo osebnih raˇcunalnikov. • DosBox je prosto dostopen emulator, ki emulira raˇcunalnike kompati- bilne z IBMovem osebnim raˇcunalnikom in poganja DOS operacijski sistem. 2.1 Statiˇcnotolmaˇcenjein dinamiˇcnopreva- janje Emulatorje lahko delimo v dve veˇcjiskupini glede na metodo izvajanja pro- gramske kode gosta. Emulatorji s s statiˇcnimtolmaˇcenjemkodo programske opreme gosta izvajajo ukaz za ukazom, tako da ukaze berejo in izvajajo pro- gramsko. Po drugi strani emulatorji z dinamiˇcnimprevajanjem ob samem delovanju emulatorja kodo gosta prevedejo v strojno kodo, ki se izvaja na gostiteljskem raˇcunalniˇskem sistemu. Spodaj je naˇstetihnekaj prednosti in slabosti obeh metod. statiˇcnotolmaˇcenje dinamiˇcnoprevajanje laˇzjaimplementacija teˇzjeza implementacijo poˇcasnejˇseizvajanje programi se izvajajo hitreje niso vezani na arhitekturo gostitelja potrebno je znanje o arhitekturi gostitelja Tabela 2.1: Primerjava statiˇcnegatolmaˇcenjain dinamiˇcnegaprevajanja. Diplomska naloga 7 Spodaj je v tabeli naˇstetihnekaj programov, ki uporabljajo razliˇcneme- tode. statiˇcnotolmaˇcenje dinamiˇcnoprevajanje DosBox Oracle Virtual Box Jpcsp PPSSPP Coffee GB PCSX2 RPCS3 Tabela 2.2: Primeri programov, ki uporabljajo razliˇcnemetode. V tem diplomskem delu smo se zaradi hitrejˇseimplementacije odloˇcili za emulator s statiˇcnimtolmaˇcenjem, saj to ˇsevedno zadoˇsˇcaza realistiˇcno izvajanje programov za igralno konzolo Game Boy. 8 Klemen Jesenovec Poglavje 3 Pregled strojne opreme Game Boy je kot veˇcinoostalih raˇcunalnikihsistemov sestavljen iz centralne procesne enote, pomnilnika in vhodno izhodnih naprav. Ima po meri narejeno centralno procesno enoto, ki je podobna Zilogo- vem Z80. Ima 8-bitno aritmetiˇcnologiˇcnoenoto in 16-bitno vodilo. Urina frekvenca znaˇsa4.194304 MHz. Vgajen je tudi ˇcasovnik, ki lahko proˇzipre- kinitve. Poleg ˇcasovne prekinitve lahko prekinitve proˇzijotudi video enota, gumbi in serijska povezava. Notranji pomnilnik je razdeljen na delovni, video in specializiran pomnil- nik. Poleg notranjega pomnilnika se v kaseti nahaja tudi zunanji pomnilnik.