Ensi vuonna aion opettaa 2 lukukauden mikroprosessoriluokan kolmannen vuoden opiskelijoille EE: lle. ilmoittauduttaaksesi luokkaan, opiskelijoiden on oltava suorittaneet ohjelmointi- ja digitaalisten järjestelmien oppitunnit.

Harkitaksesi tehtävien tekemistä voidaksesi motivoida opiskelijoita reaalimaailmassa soveltamaan luokassa opetettuja käsitteitä. opiskelijat luomalla emulaattorin vanhemmalle järjestelmälle tyhjästä ryhmän projektina, joka on suoritettava luokan loppuun asti (joka on, kuten huomautettiin, 2 lukukautta pitkä).

Yritän valita hyvä kohdejärjestelmä tähän projektiin, ja päätavoitteena on, että sen on oltava melko yksinkertaista jäljitellä. Mitä vähemmän oheislaitteita on jäljiteltävä, sitä parempi. Mitä vähemmän repeytyviä oivalluksia ja virheitä on, sitä parempi. Halusin altistaa opiskelijat kokoonpanokielen, käskykoodauksen, osoitetilojen, suorittimen rekistereiden, muistikartoitettujen laitteistorekistereiden jne. Tärkeille käsitteille, eikä välttämättä temppuille, joita vaaditaan spriittien renderöimiseksi riittävän nopeasti mielenkiintoisen videopelin tekemiseksi. puolijohdetekniikalla, joka oli saatavilla 1980-luvulla hyväksyttävin kustannuksin. Ymmärrän, että se oli tuolloin välttämätöntä; yritän vain löytää järjestelmän, joka ei väärinkäyttäisi näitä temppuja liikaa. Ihannetapauksessa kyseisen järjestelmän ei pitäisi vaativat syklin tarkkaa emulointia tai temppuja, kuten skannausviivan jahtaaminen.

Toinen vaatimus liittyy suorituskykyyn. Opiskelijat eivät todellakaan tunne ohjelmistojen optimointitekniikoita, joten jopa ensimmäisen Playstationin tai Nintendo 64: n jäljitteleminen aiheuttaa todennäköisesti suorituskykyongelmia (ehkä jopa SNES ja Genesis). Tässä vaiheessa opiskelijoiden on vain huolissaan emulaattorin toteuttaminen oikein, ei tehokkaasti. Suoritinemulaation toteuttaa varmasti tulkki, ei kääntäjä / kääntäjä.

Lopuksi en usko, että opiskelijat pitävät emulaattoria mielenkiintoisina, jos näytti juuri rekisteriarvot leluohjelman suorittamisen jälkeen (vaikka tämä tekisi projektista paljon yksinkertaisemman). Haluaisin valita järjestelmän, jolle pelejä tehtiin, vaikka kyseinen järjestelmä ei olisikaan oma videopelikonsoli. Minusta tuntuu, että pelien pelaaminen emulaattorilla olisi opiskelijoille erittäin motivoivaa.

Esimerkiksi nyt tarkastelen NES , mutta se tuntuu silti hieman monimutkaiselta, etenkin PPU. Onko olemassa yksinkertaisempia vaihtoehtoja?

Kommentit

  • Mielenkiintoinen kysymys. Se saattaa olla tärkeää lisätä pyyntö vastauksista pysyä poissa tavallisista taisteluista paremmasta järjestelmästä / prosessorista / vdu / jne. ja keskittyä didaktiseen osaan.
  • Kysymyksessä on ilmeinen ristiriita. Kirjoittaja haluaa keskittyä CPU-emulointiin, toisesta puolestaan hän haluaa saada kuvia ja ääntä koko emuloidusta järjestelmästä. Vaikka jälkimmäisen pyyntö on ymmärrettävä, se johtaa yhtä kovaan työhön ohittaa oheislaitteita, näyttää kuvia ja toistaa äänitehtäviä.
  • Mahdollisesti hyödyllinen resurssi olettaen, että se on Z80-kone eikä 6502: z80.info/decoding.htm Z80-ohjeiden algoritmisesta dekoodauksesta (lukuun ottamatta joukkoa erikoistapauksia, mutta siinä se on). Emulaattorin vaatiminen tosiasiallisesta dekoodaamisesta algoritmien sijasta haun avulla rajoittaisi opiskelijoiden kykyä kopioida ja liittää sekä olla merkityksellistä mikroprosessorikurssille?
  • Tämä ei ehkä ole etsimäsi, mutta ehkä Sen sijaan, että kirjoittaisit emulaattorin (jonka minä ’ m olettaen, että he toimivat tietokoneellaan), he saattavat pystyä osoittamaan saman käsitteellisen tiedon työskentelemällä todellisen laitteiston kanssa. Pyydä heitä hankkimaan ARM Cortex M4 -pohjainen kehyslevy, oppimaan työskentelemään paljaan metallin kanssa.
  • ehkä TI-83 …?

Vastaa

Minä siirrän CHIP-8 eteenpäin.

Tämä järjestelmä on pohjimmiltaan jostain syystä kehitetty virtuaalikone. On olemassa pelejä, jotka on kirjoitettu CHIP-8: lle. Siinä on muutama opkoodi, pino, pari ajastinta ja matalan resoluution bittikartoitettu näyttö, mutta se on riittävän yksinkertainen, että muutamat ensimmäiset emulaattorit mahtuvat muutamaan kilotavuun varhaisissa 8-bittisissä tietokoneissa.

Voit käyttää enemmän kuin muutamia viitetoteutuksia.

Julkisesti on pelejä ja niin edelleen. verkkotunnus jo, kuten täällä , jotta sinun ei tarvitse tarjota omia pelejäsi.

Kommentit

  • Ayy for Chip 8. Se ’ on helppo löytää toteutuksia monilla kielillä ja arkkitehtuuri on yksinkertainen.
  • CHIP-8 on hieno idea esittelyyn emulle sen yksinkertaisuuden vuoksi.Kirjoitettuani NES-emulaattorin aiemmin voin kertoa teille, että suorittimen kirjoittaminen oli erittäin aikaa vievää ja työlästä – ja 6502 on yksinkertainen niin pitkälle kuin prosessorit menevät. Sen sijaan CHIP-8: lla on vain 35 hyvin yksinkertaista ohjetta. Lisäksi monet järjestelmät luottivat tarkkaan ajoitukseen CPU: n ja muun laitteiston välillä, kun taas CHIP-8: lla ei ole tällaista vaatimusta.
  • Kommentteja ei käytetä laajempaan keskusteluun; tämä keskustelu on siirretty chatiin .
  • Olen ’ m kokenut ohjelmoija, mutta En ole koskaan kirjoittanut emulaattoria. Tämän vastauksen jälkeen ajattelin: ” Hei, tämä siru8 näyttää tarpeeksi helpolta,

vietän siihen ehkä muutaman tunnin ”. Kolme viikkoa myöhemmin olen ’ vielä täällä yrittäen selvittää, miksi ohjelmat hyppäävät jatkuvasti muistitilasta. Paljon hauskaa, myös paljon ” mitä helvettiä ”.

  • ihmettelen, olisiko niitä ollut este poistamaan tyhjä odotus plot-sprite-rutiinista ja lisäämällä selkeä tyhjä-odota-käsky? CDP1802 ei ole ’ ta-nopeudemon, mutta se pystyi melkein varmasti piirtämään useamman kuin yhden spritin kehystä kohden ilman tyhjää odottelua.
  • Vastaa

    Voi. Hieno kysymys. Yritän antaa muutaman vihjeen, mutta pidän kysymystä laajemmaksi vastauksena täällä mielekkäämmän keskustelun sijaan.


    […] antaa opiskelijoille tehtäväksi luoda emulaattori vanhempaa järjestelmää varten

    Melko siistiä.

    tyhjästä,

    Jos tämän oletetaan olevan todella tyhjästä ja ohjelmistona, se ei oikeastaan pitää sitä tehtäväksi, joka sopii aloittelijoille niin rajoitetussa ajassa. Ellei ole tapaa ottaa vastaan reaaliaikaisia vaatimuksia (jotka ovat pelien kannalta vielä tärkeämpiä), olisin mieluummin varovainen.

    Itse asiassa koska kyse on EE: stä, miksi et tekisi oikeaa laitteistoa? (Jotkut) klassiset suorittimet ja niihin liittyvät laitteet on silti helppo hankkia. Yhdessä modernin nestekidenäytön kanssa laitteistoponnistelu on melko toteutettavissa muutamassa viikossa erittäin yksityiskohtaisesti.

    ryhmähankkeena, joka valmistuu vuoden loppuun asti. luokka (joka on, kuten huomautettiin, 2 lukukautta pitkä).

    Mikä voi olla tiukin ehto.

    Yritän valita tälle projektille hyvän tavoitejärjestelmän, jonka päätavoitteena on, että sen on oltava melko yksinkertaista jäljitellä. Mitä vähemmän oheislaitteita on jäljiteltävä, sitä parempi. vähemmän kopioita tarvitsevia omituisuuksia ja virheitä, myös parempi.

    Kuulostaa hyvältä yritykseltä. Ja mikä tärkeämpää, se poistaa joitain näennäisen yksinkertaisia järjestelmiä (kuten singleboarders) luettelosta, koska ne luottavat I / O-laitteiden monimutkaiseen käsittelyyn (kuten reaaliaikainen pääsy portteihin LED-segmenttien ohjaamiseksi näennäisesti jatkuvalla tavalla).

    Haluan altistaa opiskelijat kokoonpanon tärkeille käsitteille kieli, käskykoodaus, osoitetilat, prosessorirekisterit, muistikartoitetut laiterekisterit jne.,

    Jotain, joka voidaan tehdä aidolla laitteistolla emuloinnin lisäksi, eikö ole?

    Ihannetapauksessa kyseisen järjestelmän ei pitäisi vaatia syklitarkkaa emulointia tai temppuja, kuten skannausviivan jahtaamista.

    Yhdessä videolähdön oletetun vaatimuksen kanssa tämä edellyttää yksinkertaista, kiihdyttämätöntä bittikartan logiikkaa.

    Toinen vaatimus koskee suorituskykyä. Opiskelijat eivät todellakaan tunne ohjelmistojen optimointitekniikoita, joten jopa ensimmäisen Playstationin tai Nintendo 64: n jäljitteleminen aiheuttaa todennäköisesti suorituskykyongelmia (ehkä jopa SNES ja Genesis).

    En pelkää täällä paljon, koska todellinen PC-laitteisto on melko nopea. Todelliset kysymykset eivät ole emulaation nopeus, vaan reaaliaikaiset näkökohdat – erilaisten emulointiosien synkronointi – jotka edellyttävät erittäin huolellista ja hienosäädettyä ohjelmistosuunnittelua. Ei voida odottaa täällä. Aivan mainitsemasi ”palkkikilpailu” -osa.

    Tässä vaiheessa opiskelijoiden on vain huolissaan emulaattorin toteuttamisesta oikein, ei tehokkaasti. CPU-emuloinnin toteuttaa varmasti tulkki, ei kääntäjä / kääntäjä.

    Jopa alkeellisimmillekin reaaliaikainen synkronointi on välttämätöntä pelata peliä. Ainakin näytön palautuksen synkronointi on välttämätöntä – ei ainakaan itse simulaation nopeuttamiseksi.

    Pelien luontainen tarve käyttää ajastustehosteita – ja synkronoitua näytön manipulointia hienommalla tasolla kuin kehyksiä – tekee asiasta haasteen minkä tahansa reaalimaailman pelin ajamiselle ehdotetulla emulaattorilla.

    Haluaisin valita järjestelmän, jolle pelit tehtiin, vaikka kyseinen järjestelmä ei olisikaan oma videopelikonsoli. Mielestäni pelien pelaaminen emulaattorissa olisi opiskelijoille erittäin motivoivaa.

    Olen tästä täysin samaa mieltä. Suuri osa Andre LaMothe -kokeilun ja oppimisjärjestelmien menestyksestä perustuu tärkeimpään pelikykyyn.

    Esimerkiksi, katson nyt NES: ää, mutta se tuntuu silti hieman monimutkaiselta, etenkin PPU. Onko olemassa yksinkertaisempia vaihtoehtoja?

    Se vaikeutuu, koska perusvaatimukset ovat ristiriidassa keskenään. Ainoastaan onnistuneet konsolit / tietokoneet saivat suuren valikoiman pelejä, mutta niillä on myös monimutkaisempi laitteistorakenne, joka sallii upeita pelejä.

    Tarkistetaan joitain tunnettuja järjestelmiä. Haluaisin erottaa ne ”yksinkertaiset” ja ”monimutkaiset” järjestelmät videologiikkansa monimutkaisuuden mukaisesti (* 1)

    Yksinkertaiset järjestelmät

    Ensimmäisessä iteroinnissa nämä ovat kaikki järjestelmät, joissa ei ole erillistä VDC / CRTC-järjestelmää. / p>

    • Atari VCS – lopulta perimmäinen järjestelmä, jota käytetään kokoonpanon oppimiseen, työskentelemään äärimmäisellä perustasolla ilman välitilaa eikä paljon hoidettavaa. Samalla se ”on nimimerkki termille” kilpajuoksu ”.

      Tämän sanottuaan se voi silti olla järjestelmä, jota on etsittävä, koska ajoituksesta riippuvat osat ovat hyvin määriteltyjä ja (verrattuna muihin videoihin) äärimmäisen yksinkertainen ja helppo jäljitellä – paitsi että se ei ole fuksiä. Lisäksi se on erittäin hyvin dokumentoitu yleisesti käytettävissä olevista lähteistä.

    • Commodore PET – melko yksinkertainen järjestelmä, varsinkin siitä lähtien koko video-osa voidaan jäljitellä melko abstraktisti, silti VIA: t on ainakin osittain jäljiteltävä. Tärkeintä, että se sisältää vain kaksi ajoituslähdettä (kellon vieressä).

      Suuri plus PET: lle (ja seurannalle) on hyvä dokumentointi (myös yksinkertaisuuden vuoksi). Vaikka siinä on CRTC, melkein mikään peli (tai muu ohjelmisto) ei käyttänyt sen uudelleenohjelmointia lainkaan, mikä on yksinkertainen ja epätäydellinen (abstrakti) emulointi mahdollinen.

      Takapuolella on vain melko pieni määrä pelejä ja suurin osa niistä on kirjoitettu BASIC-kielellä, mikä saattaa vaatia jonkin verran tutkimusta abstraktin määrän ja yksityiskohtien löytämiseksi emuloinnissa.

    • Apple II – Jälleen uskomaton hyvin dokumentoitu järjestelmä, jossa on paljon ohjelmistoja. Suuri osa siitä perustuu kokoonpanoon. Vaikka laitteisto on täysin dokumentoitu ja rakennettu vain TTL: stä, sen toiminta ei ole kovin yksinkertaista ja koska jotkut pelit luottavat tarkasti ajoituksiin oivalluksiin ja laskusilmukkoihin, emulointi voi olla monimutkaisempaa kuin oletetaan ensi silmäyksellä.

      Plussana voi olla, että Apple II oli melko suosittu Brasiliassa (jo silloin).

    • TRS-80 – Tässäkin videologiikka on rakennettu TTL: stä, mutta paljon yksinkertaisempi kuin Applessa. Samanlainen muu I / O on melko yksinkertainen. Negatiivisella puolella on jälleen melko pieni määrä pelejä.

    Toistaiseksi todelliset muinaiset, mutta myös jotkut myöhemmät järjestelmät voidaan luokitella yksinkertaisiksi:

    • Sinclair Spectrum – Vaikka logiikka tarjoaa muutamia temppuja, kelloja & viheltää, se on suoraviivainen kaakeloitu bittikarttasuunnittelu. Toistaiseksi emulaation mahdollisuudet ovat hyvät, paitsi kuten tavallista, pelit luottavat suuresti ajoitukseen, mikä taas vaikeuttaa emulointia.

      Sekä Apple II: n kanssa, jossa melkoiset kloonit Brasiliassa .

    • Samanlainen tapaus voidaan tehdä ORIC-perheelle.

    • Atari ST – Se voi olla yllätys nykypäivän pisteestä mutta Atari ST: ssä ei ollut hienostunutta videolaitteistoa. Vain 3 grafiikkatarkkuutta ja 9-bittinen CLUT jopa 16 samanaikaiselle värille. Muutama synkronointipiste ja yksi ajastin. Lisäksi uudenaikainen CPU ja oma äänisiru. Kuulostaa taivaassa tehdystä ottelusta, jos, vaikka se ei olisi enää pelien ohjelmoijille. Myös tässä ohjelmisto merkitsi kokonaisia temppuja mahtavien pelien luomiseen (* 2).

    Ensimmäinen johtopäätös ”yksinkertaisista” järjestelmistä on, että vaikka laitteisto saattaa olla vähemmän monimutkainen, ohjelmisto on kuitenkin toiminut paljon tämän voittamiseksi. Tämän seurauksena se voi On sanottava, että vähemmän monimutkaiset järjestelmät eivät välttämättä tee emulaatiosta vähemmän monimutkaista, koska eri laitteita ei saa jäljitellä, mutta yksinkertaista laitteistoa on noudatettava hyvin tarkkaan ajoituksella, jotta nykyinen pelikoodi toimisi.

    Monimutkaiset järjestelmät

    Nämä ovat yleensä kaikki järjestelmät, joissa on hienostunut VDC

    • 9918 ff .- Tämä ei ole niin paljon yhdestä järjestelmästä, mutta lopulta yleisin käytetty VDC (TI kutsui sitä VDP: ksi). Vaikka TI 99/4: lle suunniteltuakin, TI myi sen kaikille kiinnostuneille. Tuloksena oli enemmistö kaikista järjestelmistä (* 3) käyttäen 9918: ta tai jotakin sen jatkokuvioista (9928/38/58 / …).

      Pelikonsolit, kuten Coleco Vision , Sega SG-1000 aina -järjestelmään a sekä TI 99/4 – tai Memotech MTX -tietokoneet aina koko MSX-koneiden maailma käytti tätä perhettä.

      Kuulostaa hyvältä, eikö olekin? No, varmasti on paljon pelejä. Lisäksi tällainen VDP auttaa yksinkertaistamaan emulointia, koska se tarjoaa selkeän eron prosessorin ja näytön välillä ja rajoittaa pelin ”temppuja” siihen, mitä VDP tarjoaa, mikä puolestaan on selvästi määritelty. Ja jälleen kerran, se on olemassa oleva ohjelmisto, joka tekee emuloinnista vaikeaa, koska ohjelmoijat tekivät tietysti tietysti ajoitustemppuja manipuloidakseen näyttöä oikeaan aikaan. Mainitsiko kukaan ”Racing the Beam”?

    • Commodore VC20, C64, C16 jne. – Sama pätee kaikkiin Commodores-kotitietokoneisiin. Vaikka niiden monimutkaisuus eroaa siitä, että niillä on sprittejä tai ei, tarjoavat ajastimia tai eivät, äänet tai ei, ongelma on sama kuin 9918-tuoteperheessä: Ohjelmisto, joka käyttää tiettyjä ajoitustilanteita pelitehosteiden luomiseen.

    • 6847 Systems – Tandy CoCo, Matra Alice ja samankaltaiset sisältävät saman ongelman.

    Voisin jatkaa sellaisten pelijärjestelmien kanssa, kuten NES tai MegaDrive, mutta lopetan luettelon tässä, koska periaatteen pitäisi olla jo selvä: Vaikka jotkut järjestelmät saattavat yhdistää monimutkaisempi jäljiteltävä, todellinen asia ei ole videolaitteiston monimutkaisuus, mutta aina kun ohjelmoija ”parantaa”, mitä voidaan tehdä älykkäällä ohjelmoinnilla (* 4). Joten projektisi todellinen ongelma ei ole (niin paljon) laitteistoa (* 5), koska se on ohjelmisto, etenkin temppuja ja työkaluja, joita käytetään todellisissa olemassa olevissa peleissä .

    Se on erityisen huono, koska haluat käyttää (kuten luin) olemassa olevia pelejä motivaationa. Monia ei ole käynnissä vähemmän kova reaaliaikainen emulointi.

    Tämän riippuvuuden vähentäminen vähentää oikein suoritettavien pelien määrää. Pienentämällä se tasolle, joka sallii sen käsittelemisen rajoitetusti, sopivia pelejä on melkein mahdotonta löytää.

    Johtopäätös: oikea kompromissi on tapa, mutta sellainen, joka vie paljon tutkimusta ja rajoittaa samalla käytettävyyttä.


    Ehkä nyt on mahdollista hyökätä tämä hieman eri näkökulmasta. Kokeillaan seuraavia:

    • Olemassa olevan vanhan laitteiston käyttö:

      Vaikka tämä on osoittautunut toimivaksi (* 6), tarjoaa parhaan yhteensopivuuden ja helppokäyttöisyyden avoimissa kehitysympäristöissä, se voi jättää välittämättä EE-opiskelijoiden ”rakentaa” -viestin.

    • Käytä olemassa olevia koulutuspelejä:

      Järjestelmät, kuten Andre LaMothe ”s XGS ovat upeita työkaluja sukellukseen yksityiskohtaiseen laitteistokehitykseen ja ohjelmointiin. Toki jotkut juotokset edellyttävät (valmiita koontiversioita on saatavana), ne ovat melkein täydellisiä ohjelmistolla määriteltyjä järjestelmiä, dokumentoidusti ja tarjoavat valtavan pelikirjaston. Puhumattakaan hänen kirjoistaan pelien ohjelmoinnista.

      Hieno bonus on, että opiskelijat voivat viedä järjestelmän kotiin ja pelaamaan myös kurssin päättymisen jälkeen.

    • Rakenna oma yksinkertainen järjestelmäsi:

      Ota klassinen keskusyksikkö (esimerkiksi 6502), Jotkut RAM, FLASH ja VIA sekä FPGA erittäin perustavan CRTC: n toteuttamiseksi ja valmis. Opiskelija juottaa sen, voi oppia komponenteista ja niiden vuorovaikutuksesta, mukaan lukien FPGA-käyttö (joka voi olla pakko jo tänään), ja suorittaa sitten ohjelmistonsa todellisella laitteistolla. Jopa pienillä numeroilla tällaisen levyn pitäisi olla mahdollista valmistaa noin 50 euroon tai vähemmän. Kuten XGS-idea, se toimii myös kurssin päätyttyä – mukaan lukien omistajuuden tunne heidän järjestelmäänsä.

      Tietysti opiskelijoiden on kirjoitettava omat pelinsä, mutta yksinkertaisia pelejä voidaan tehdä melko lyhyessä ajassa – puhumattakaan siitä, että seurantakurssit voivat myös käyttää pelejä, jotka edellinen luokka kirjoitti.

    • Suorita ”oman” järjestelmän jäljittely

      Aivan kuten aikaisemmin, paitsi että kaikki on virtuaalista. Sen etuna oli kaivo määritteli ja sulkee järjestelmän, varsinkin sellaisen, jossa ei ole rajoituksia johtuen vähemmän ”täydellisestä” emulaatiosta – emulointi on määritelmänsä mukaan täydellinen ja kaikki sen omituisuudet ovat järjestelmässä. Haittana on jälleen ohjelmisto-osa.

    • iv Käytä pehmeää laitteistoa:

      Neil Franklin on luonut projektin, joka luo useita yleisiä järjestelmäkomponentteja, aivan kuten perinteisissä tietokoneissa, mutta käyttää mikro-ohjaimia erillisten sirujen sijaan. Siinä yhdistyvät emulointi todelliseen laitteistoon. Vaikka komponentteja kehitetään edelleen emulointina, niiden on tarkoitus toimia mikro-ohjaimessa ja niitä käytetään aivan kuten ”aitoja” pelimerkkejä. Yksi järjestelmä voidaan perustaa käyttämällä SoftCPU-moduulia, joka jäljittelee esimerkiksi 6502: ta, jossa on jonkin verran RAM-muistia ja ROM-muistia, yhdessä SoftVGA: n kanssa, joka toimittaa päätelaitteen, kuten videoliitännän, ja SoftPS2: n emuloivan näppäimistön ja hiiren. Kaikki on kytketty rinnakkais- tai sarjaväylän (SPI) kautta, mikä mahdollistaa muiden komponenttien lisäämisen, jotka voidaan esittää myös emulointiin.

      Sen lisäksi, että kyse on emulaatiosta, siinä on rajoitettu määrä laitteistoa voidaan tehdä leipälaudalla (silti se ei ole koskaan varhaisessa vaiheessa aloittamaan juottamista), se osoittaa myös melko tyypillisen nykypäivän tekniikan tehtävän – korvaa perinteinen logiikka mikrokontrollereilla – käytännössä.

      The Tuloksena on järjestelmä, joka tarjoaa todellisen (vanhan) tietokoneen kosketuksen ja tuntuman samalla, kun sitä rakennetaan nykyaikaisella laitteella, joka käyttää rinnakkaisia emulaatioita.

    • Määritettävissä olevan emulaattorin käyttö:

      Ei, kyse ei ole MAME: sta tai vastaavasta, vaan JavaScriptin kirjoitetusta emulaattorikehyksestä, joka käsittelee yleisiä osia (mukaan lukien ajoitus), johon oppilaasi lisäävät emulaationsa (mikä oli tavoite, eikö olekin?) Kokonaisen järjestelmän muodostamiseksi. Koska JS toimitetaan lähdekoodina, jopa kehystä itse voidaan muokata.

      Kunkin emulaation laadusta riippuen tämä voi olla käyttökelpoinen mistä tahansa yksinkertaisesta esittelyjärjestelmästä aina 1980-luvun täysin toteutettuun virkistykseen asti. tietokone.

    Joten ehkä jotkut yllä olevista muunnelmista voivat olla hyvä alku?


    * 1 – Keskityn vain videoon (ja CPU) pitämään sen yksinkertaisena. Pelkkä video toimii jo hyvin kitkemään täydelliset järjestelmät. Ääni lisää uuden ulottuvuuden ja voi vaikeuttaa sitä huomattavasti tämän soveltamisalan ulkopuolella.

    * 2 – Katsokaa vain Xenonia. Uraauurtava pystysuuntainen vierityslaite, jossa on useita siirtyviä kerroksia ja monia animoituja esineitä, jotka kaikki toimivat erittäin sujuvasti ohjelmistossa. Itse asiassa se oli niin hienosäädetty, että sen siirtäminen (yleensä) kykenevämmälle Amigalle (grafiikka viisas) kesti jonkin aikaa ja johti hiukan pienempään peliin.

    * 3 – Järjestelmät, jotka ei ole suunniteltu myyty yksikkö. Sitten taas, jotkut pelikonsolit, joissa ei vain onnistuta, joten se voi jopa saada enemmistön numeroissa.

    * 4 – Glide64 -renderöintilaajennus N64-emulaattoreille on kirjoittanut moniosaisen sarjan ( Johdanto , P .1 , P.2 , P.3 ) blogiviestejä esteet, joita hänen täytyi kiivetä saadakseen videon emulointiosan toimimaan – kaikki eivät koske laitteiston emuloimisen monimutkaisuutta, mutta kaikilla tavoilla CPU muutti ja nipistää lähtöä -videologiikan vieressä. Tämä on vielä merkittävämpää, kun otetaan huomioon, että N64 on jo melko tyhjä ja suljettu järjestelmä.

    * 5 – Pidän itse asiassa monimutkaisempaa videolaitteistoa loistavana oppitunnina EE-opiskelijoille, koska se osoittaa hyvin mitä voidaan tehdä muutamalla portilla ohjelmapinoiden sijasta – vielä enemmän, kun ne ovat tekemässä laitteistoa myöhemmin, eikö olekin?

    * 6 – Stefan Höltgen esimerkiksi FU Berlinissä käyttää vanhaa hänen luokkiensa pelijärjestelmät (muiden kuin EE: n) opiskelijoiden esittelemiseksi todellisesta laitteistosta ja todellisesta ohjelmoinnista ja niiden merkityksestä jokapäiväisiin tehtäviin (ja peleihin).

    Kommentit

    • @Tommy No, haluaisin välttää tämän, koska ei ole helppoa vastausta. Tärkeintä saattaa olla, että vaikka Z80 on jonkin verran ” omituinen ”, 68k on kaikkea muuta kuin yksinkertainen. Kaikilla laajennussanoilla (CPU32: een saakka) yhdellä käskyllä voi olla jopa 11 sanaa (22 tavua), ja niiden purkaminen on vakava sotku. Sitten taas kaikki riippuu tapa, jolla emulaattori koostuu. Z80 on melko suora etuosa 8080, helppo jäljitellä, muutamilla muokkaajilla, joita voidaan helposti käsitellä. 68k: n, jopa vain alkuperäisen, se on paljon enemmän työtä.
    • ” tehtävä sopii fuksiin niin rajoitetusti. ” Hän sanoi, että nämä ovat 3. vuoden opiskelijoita, eivät fuksiä, ja he ’ ovat jo suorittaneet useita edellytyksiä.
    • @ wizzwizz4 No, riippumatta siitä, mikä henkilökohtainen mielipiteemme on, JS on BASICin laillinen perillinen. Vakava ja kaikin tavoin! Ajattele vain sitä.Se ei vain toimi n jokaisen varsinaisen tietokoneen vieressä, se ’ jopa asennetaan oletusarvoisesti, eikä siitä ole mitään tapaa päästä eroon siitä menettämättä paljon toimintoja. Ajattele vielä enemmän, kuinka paljon huonoja ja uskomattomia hitaita ohjelmistoja on kirjoitettu JS: ään – täydellinen todiste, eikö ’ ole sitä?
    • @Raffzahn It ’ täysin erilaiset Ensinnäkin BASICilla oli useita yhteensopimattomia välineitä … Ohhh! Se on BASICin seuraaja!
    • He ’ eivät vieläkään ole ensimmäisen vuoden opiskelijat. Ja mielestäni sinun pitäisi antaa toimenpideohjelmalle epäilys siitä, että hän ei ’ nimeä projektia, jos opiskelijat eivät ole ’ vaadittu tausta.

    Vastaa

    Toistaiseksi on olemassa hyviä ideoita.

    Mutta jotain harkittavaa.

    Jos teet jotain CP / M-koneen kaltaista, ne ovat todella yksinkertaisia ja yksinkertaisia, varsinkin kun kaikki BIOSin lisäksi myös IN / OUT-ominaisuus on eristetty. 8080 / Z80-perheen jäsenistä.

    Minusta ei vaikuta epätavalliselta, että CP / M-kone on ensimmäisen lukukauden tavoite. (En tiedä opetussuunnitelmaasi)

    Mutta esimerkiksi perus-CP / M-kone ei tarvitse syklin tarkkuutta, se ei tarvitse keskeytyksiä, monimutkaisin asia, jonka hänen on tehtävä, on äänestää näppäimistöä nähdäksesi onko näppäintä painettu. (Päinvastoin kuin avainkoon ja avaimen tai minkä tahansa muun seuranta.)

    Sitten voit lisätä toisen lukukauden vaatimukset, kuten käyttöliittymän grafiikkasirulle. SG-1000: n yllä oleva esimerkki voisi helposti olla CP / M-kone ensimmäisellä lukukaudella ja sitten helposti muunnettavissa SG-1000: ksi toisella (koska Z80-osa on kaikki tehty ensimmäisellä lukukaudella) .

    Lopuksi luulen, että luokkaasi kannattaa hyväksymisohjelma, jonka opiskelijat voivat suorittaa suorittimensa tarkistamiseksi. Muutama jännittävämpi asia kuin huonon suorittimen virheenkorjaus, etenkin koneen kielellä, jota et ehkä tunne .

    6502-yhteisössä on testiohjelmia, jotka voivat tarkistaa, että keskusyksikkö suorittaa kaikki ohjeet oikein, en ole varma, mitä muut suorittimet voivat käyttää.

    Ja jos se on mitään lohtua laajuuteen, kirjoitin sekä simulaattorin että siihen liittyvän kokoonpanijan yli 2 viikon joululomalle, jos se antaa sinulle apua kuinka suuria projektit ovat. Perusprosessorit ovat melko yksinkertaisia.

    Kommentit

    • Z80: ssa FUSE tarjoaa testejä, vaikka kaikki eivät ole yleisiä tai välttämättä tarkkoja syklin suhteen. ajoitus; ne ’ ovat myös väliaikaisessa tekstimuodossa, mutta olen ’ transkriboinut ne JSON: iin: github.com/TomHarte/CLK/tree/master/OSBindings/Mac/… – aseta testit.in.json avulla alkutilat ja selvitä miten kauan sinun pitäisi juosta, ja sitten testaa.expected.json vahvistaaksesi tulokset. Siellä ’ s myös zexall ja zexdoc, alun perin CP / M-tiedostot, mutta laajalti mukautetut ja hyvin hitaat. Ensimmäisen läpäisy edellyttää, että joukko dokumentoimattomia asioita on oikein, jälkimmäisen ohittaminen ei ’ t.
    • … ja ainoa asia, jonka minä ’ olet koskaan löytänyt mallille 6809, olettaen, että kukaan ajatteli ehdottavansa Vectrexiä tai Coco / Dragonia, sisältyy laajempaan Williamsin arcade-koneen testipakettiin osoitteessa seanriddle.com/wetsold.html . 6502-mallissa olen erittäin aluksella Klaus Dormannin, Wolfgang Lorenzin ja AllSuiteA: n testeillä, jotka kaikki näyttävät olevan paljon näkyvämpiä kuin Z80- tai 6809-testit.
    • @Tommy Sikäli kuin Olen ’ tietoinen siitä, että kaikki sulake ’ -testit ovat jaksotarkkoja. Ole hyvä ja lähetä virheitä, jos ne ’ eivät ole 🙂
    • @PhilipKendall katso sähköpostini 29.5.2017 fuse-emulator-devel re: DJNZ ja luetaanko offset lopullisella iteraatiolla. Alan Coxin johtopäätös siitä, onko FUSE ’ -testattu käyttäytyminen oikein, oli, että se ’ s ” avoin tulkinnalle ” käytettävissä olevien lähteiden perusteella. Joten ajattelin, että ” ei välttämättä oikea ” oli oikeudenmukainen. Minun olisi todennäköisesti pitänyt olla selvä: Löysin vain kourallinen poikkeamia tiimisi tulkinnasta ’ todisteiden ja oman tulkinnastani. Pahoittelut huonosta muodosta.
    • @Tommy – ” Alan Coxin johtopäätös FUSE ’ -testistä käyttäytyminen on oikein, että se ’ s ” on avoin tulkinnalle ” käytettävissä olevan tiedon perusteella lähteet ” …kunnioitan paljon Alanin tekemiä asioita, ’ on melko helppo tarkistaa, onko testattu käyttäytyminen samaa kuin varsinainen Z80-suoritin (etenkin CMOS-versioissa joka voidaan ajaa leipälaudalle pienillä kellotaajuuksilla yksityiskohtaisten testien asettamiseksi hyvin yksinkertaisesti), joten tässä on ehdottomasti kyse tilanteesta, jossa hänen mielestään ’ on jotain vikaa, hänen pitäisi olla pystyy osoittamaan sen erittäin helposti.

    Vastaa

    Voinko ehdottaa SG-1000 ?

    Järjestelmä on vain muutama kuin kolmen vapaana olevan sirun ryhmittely – Z80, TMS9928A grafiikalle ja SN76489 äänelle ohjaimien kanssa NO: n (normaalisti avoimen) kytkimen mykkäinä ryhminä.

    Ohjelmistoissa tai laitteistoissa voit simuloida tai jäljitellä mitä tahansa tämän osaa erikseen tai kaikki yhdessä tuottaaksesi koko järjestelmän.

    järjestelmä käyttää pelinsä yksinkertaisia ei-pankkikytkettyjä ROM-levyjä, ja ne käyttävät yleensä Älä luota mihinkään temppuihin, kuten keskinäytön keskeytyksiin tai jaksojen laskemiseen, niiden vaikutusten aikaansaamiseksi. Vain yksi laattakartta ja useita sprittejä ylhäällä. Ehdotan, että tämä on paljon yksinkertaisempi kuin järjestelmä, joka sisältää monia vuorovaikutuksessa olevia sisäisiä komponentteja ja älykkäitä kasetteja, kuten NES.

    Sinun on tarjottava omat pelisi jäljiteltäviksi eikä levitettävä lisensoimattomia. tietysti tekijänoikeuksin suojattu materiaali.

    Kommentit

    • … ja tietysti ColecoVision on täsmälleen sama komponenttikokoelma, erilaisilla liitännöillä logiikka ja hyvin monimutkaisemmat ohjaimet. Joten SG-1000-emulaattoria on yleensä helppo laajentaa tukemaan molempia.
    • On myös huomattava, että 9918 on monimutkainen siru, joka sisältää sprittejä, monimutkaisia modeja ja tietoja, kuten hän ei ’ et halua käyttää. Eikö ’ T sitä?

    Vastaa

    Yksinkertainen, yksinkertainen tietokone, kuten ZX Spectrum, kuulostaa kohtuulliselta – Mutta ympärillä on yksinkertaisesti liian monta hyvää emulaattoria, jotta tämä olisi hyödyllinen vaihtoehto. Luulen myös, että 6502 on helpompi jäljitellä.

    Joten mahdollinen vaihtoehto voi olla Oric-1 tai Atmos by Tangerine Systems , joka käytti 6502-muistia, jota ei pankkitili, ei mukautettuja pelimerkkejä paitsi yksinkertainen video ja suhteellisen yksinkertainen kehyspuskuri. Se ei myöskään ole ylivoimaisesti yhtä tunnettu kuin Spectrum, silti on olemassa ohjelmistoja (pelejä), jotka tuovat mukanaan yksinkertaisia yhteensopivuustestejä (mielestäni jotkut ”saavutustajut” ovat erittäin tärkeitä opiskelijoille). Atmoksella on jo useita emulaattoreita (tietojeni mukaan kolme), mutta niiden lukumäärä on rajallinen, mikä helpottaa sen selvittämistä, huijaako ja kopioiko koodi yksinkertaisesti.

    Kukaan Oric-pelit olivat tietysti niin kehittyneitä, että tarvitset 100% syklin tarkan emulaation pelien suorittamiseen.

    Kommentit

    • I ’ d väittävät, että Oric-arkkitehtuuri estää rasterikilpailuja sillä, että sillä ei ole sivukanavaa videonhallintarekistereihin eikä sitä ole asetettu niin, että kilpailu voisi ajatellusti lisätä väritarkkuuttasi (vastakohtana spektrille). Jos sillä olisi kuitenkin vain kaksi HIRES-puskuria, sanon ’ d varmemmin. Olisitko samaa mieltä?
    • @Tommy En ’ ole liian perehtynyt Oric-videopiiriin. Sanon joka tapauksessa, että Oricilla oli niin lyhyt elämä ja niin rajallinen käyttäjäkunta, että kehittyneitä tekniikoita videon säätämiseen, kuten tiedämme ZX Spectrumista, ei ole ’ t kehitetty (ainakaan tietokoneen aktiivisen käyttöiän aikana, ’ tässä on useita mielenkiintoisia demoja demozoo.org/platforms/ 49 )
    • Voi, sitten ’ esitän paremman perustelun: Oric-videopiirillä on modaalinen tila, mukaan lukien teksti- tai grafiikkatila, mutta ei altistuneet rekisterit. Kaikki asetetaan videovirran ohjaustavuilla – mukaan lukien etu- ja taustamääritteet. Ihmisillä on taipumus valittaa siitä, koska se tarkoittaa, että jos haluat aukottoman grafiikan, ’ rajoitetaan neljään väreihin riviä kohden, joista kaksi on kahden muun bittiä täydentäviä. Jotkut nykyaikaisista peleistä näyttävät silti todella hyviltä – esim. Stormlord youtube.com/watch?v=QSDy-BC580M
    • @Tommy Sarjaominaisuudet tekevät ohjelmoinnista hieman hankalampaa, I ’ arvaa, mutta attribuuttiristiriidan määrä on vielä parempi kuin ZX-spektrillä, luulen.
    • Xenon 1 tarvitsee syklin tarkan, muuten se lukkiutuu, kun alus räjähtää (vastuuvapauslauseke: Kirjoitin amigalle oric-emulaattorin nimeltä amoric ja kompastuin tähän asiaan, mutta vain tässä pelissä)

    vastaus

    Perustuen kriteereihisi ja tarpeeseen pitää projekti mielenkiintoisena opiskelijoille, suosittelen harkitsee vakavasti Vectrex -Arcade-järjestelmää, jonka Milton Bradley myi 1980-luvun alussa.

    kirjoita kuvan kuvaus tähän

    Koska Vectrex on ainutlaatuinen vektorinäytön käyttämisessä rasterinäytön sijasta, se ei vaativat monimutkaisen videolaitteiston jäljittelemistä. Näyttöä hallinnoi keskusyksikkö, ja itse näyttöä on helppo jäljitellä nykyaikaisessa järjestelmässä ja hyvällä suorituskyvyllä.

    Vektorinäytön jäljittelemisen lisäksi CPU ( Motorola 6809) ja I / O-siru (MOS 6522) eivät edusta liian limaa h haastetta, koska ne ovat yksinkertaisia 8-bittisiä osia, jotka on dokumentoitu hyvin.

    Muistimalli on myös hyvin yksinkertainen, eikä siinä ole pankkijärjestelmiä, joista olen tietoinen. Vectrexissä on yhteinen PSG-äänisiru, mutta sen jäljittelemistä voidaan pitää ylimääräisenä luottona.

    Toisin kuin muut yksinkertaiset 1980-luvun alun pelikonsolit, Vectrex-pelit ovat pysyneet melko hyvin, koska sen kyky tuottaa sileä yksivärinen grafiikka mukaan lukien 3D-lanka-kehys. Tämän todistaa edelleen modernin ”home brew” -kehityksen suosio, jossa kehittäjät jatkavat uusien Vectrex-pelien luomista.

    Yksi viimeinen etu Vectrexille on, että alkuperäinen järjestelmän ROM on vapaasti jaettavissa.

    Kommentit

    • Paitsi, että vectrex imee hyvin myös ’ Palkissa ajamisen ’ -kategoria, eikö ’ ole sitä?
    • @Raffzahn, kuten ymmärrän, Vectrex-keskusyksikkö ohjaa elektronisuihku – täsmälleen päinvastainen kuin ” säteellä kilpaavalle ” tilanteelle, jossa ohjelmiston on tehtävä tarkkaan ajastettu tila pysy ajan tasalla ulkoisesti ajoitetun rasteriskannausnäytön kanssa.
    • @Mark It ’ s sama VCS: n kanssa. Tässäkin sädettä ohjaa CPU. Jos keskusyksikkö ei käytä WSYNC: ää jokaisella rivillä ja ennen kuin rivi on valmis, näyttö horjuu. Ja ymmärrän OP: n, ’ tarkalleen ottaen ei luoda järjestelmää, jolla on tiukat ajoitusvaatimukset – jotka ovat välttämättömiä Vectrexille.
    • @Raffzahn: VCS: n CPU ohjaa pystysuoraa, mutta se ei hallitse vaakatasoa. ’ Ei ole epätavallista, että peli tuottaa kymmeniä tai jopa satoja skannauslinjoja ilman väliintuloa WSYNC. WSYNC: n puuttuessa säde on samassa vaakasuorassa asennossa joka 76. sykli. WSYNC: n tallentaminen on usein helpoin tapa odottaa, että säde saavuttaa näytetyn alueen oikean puolen, mutta se ’ on tuskin ainoa tapa. Ohjelmoija, joka oli niin taipuvainen, pystyi hyödyntämään sprite-liikkeen ja käyttäytymisen monimutkaisia yksityiskohtia kirjoittaakseen pelin, joka ei koskaan käyttänyt WSYNC: ää lainkaan.
    • Um, ihmiset, puhumme täällä emulaattorista. Fosforien haalistumisessa ei tule olemaan ongelmaa, kun taas emuloitu CPU vie liian kauan seuraavan kehyksen piirtäminen. Ei ole ” sädettä ” eikä emulaattorin tarvitsisi varmasti ” kilpailu ”, koska emulaattorin näyttö pysyy melko staattisena niin kauan kuin tarvitaan kehysten välillä.

    Vastaa

    Emulaattorin luominen alusta alkaen on suhteellisen suuri tehtävä erityisesti kokematon opiskelijalle ja saattaa osoittautua ongelmalliseksi. Joten sinun on todella oltava varovainen siitä, mitä alustaa jäljitellä ja mitä tietoja jakaa / käyttää. Minulle paras valinta on ZX 48K -alusta , kun kasvoin sillä ja tunnen sen sisäisen toiminnan, joten vastaus se on puolueellinen … Mutta meidän on pidettävä mielessä, että nykyään opiskelijat eivät yleensä nähneet / käyttäneet / tienneet sitä niin paljon kuin me … Sinun on saavutettava:

    1. oikea suorittimen isetemulointi

      vaikka siellä olisi tonnia käskysarjoja Sinun on oltava varovainen, sillä esimerkiksi Z80: ssä 99,99% niistä sisältää virheitä. Joten sinun pitäisi valita jokin testattu vertailujoukko heille, ja nyt se on oikea (tai ainakin perustavanlaatuinen).

      Esimerkiksi tässä on minun Z80-isetti, joka ohittaa ZEXALin 100% menestyksellä:

      Z80-alustalla on yksi suuri etu, ja siihen on olemassa kattavia testaajia, kuten ZEXALL Exerciser , joka voi auttaa emulaattorin virheenkorjauksessa paljon.

      Mielestäni siellä on myös versioita i8080, mutta en tiedä yhtään tällaista testaajaa eri suorittimen perhe.

    2. Ajoitus

      hyvin perusemulointiin riittää kellotics-menetelmä (tai kuristus), joka tunnetaan ja käytetään … en näe tässä mitään ongelmaa. Nykyään tietokoneilla on suhteellisen hyvä tarkkuus ajoitusta varten (PC: RDTSC, Windows PerformanceCounter, …).

      Perusemulaattori voi ohittaa emuloidun alustan SISÄLTÖ, mutta varokaa jotkut käyttöjärjestelmät / pelit / sovellukset tehtävä käyttökelvottomaksi, ellei sitä ole jäljitelty oikein. Tämä ei koske vain demoja. Vanhojen tietokoneiden tavanomainen ajoitus johtui joistakin keskeytyksistä (yleensä videon päivityksestä) ja rajoitetusta määrästä jaksoja, jotka pystyttiin suorittamaan ennen sitä. Mutta väitetysti samanaikaisesti suoritettujen käskyjen määrä voi olla hyvin erilainen, ja jotkut ohjelmat saattavat ylivuotoa ja vahingoittaa itse tai jäätyä. SISÄLTÖ on vaikein asia toteuttaa kellotikillä, joten sinun tulisi välttää sitä hinnalla millä hyvänsä … Toisaalta MC-tason ajoitusten kanssa se on todella helppoa ja vain muutama rivirivi koodia.

    3. Ääni

      tämä on alustasta riippuvainen ongelma ja sinun on valittava äänen tulo / lähtö oikein. Esimerkiksi Windowsissa ainoa käyttökelpoinen vaihtoehto on WAvEIN / WAVEOUT matalan viiveen ja helppokäyttöisyyden vuoksi. DirectX ei ole käyttökelpoinen (ainakin silloin kun yritin käyttää sitä tällaiseen tehtävään) johtuen KORKEISTA viiveistä eikä toimivista soittopyynnöistä.

      Käytän puskuroitua lähestymistapaa suoran kaiutinajon sijasta, jotta emulointisi voi räjähtää suoritusaika MC-tason oikean suorituksen sijasta (mitä teen joka tapauksessa, mutta epäilen opiskelijoiden pystyvän tekemään sen kuluvana ajankohtana).

    4. Video

      Tämä on myös alustasta riippuvainen. .. ja sinun tulisi käyttää API: ta, jonka oppilaasi tuntevat. Jopa säteen jäljitys on suhteellisen helppo toteuttaa yksinkertaisella bittikartalla … ZX: n kaltaisissa tietokoneissa Scanline-tilauksella on erityinen merkitys ja se voi olla hyvin häiritsevä aloittelijoille, joten on parempi käyttää käännös-LUT-taulukoita muuntamalla osoitteen ja y-koordinaatin välillä edestakaisin.

      Useimmat vanhemmat käyttöympäristöt käyttivät 50 Hz / 60 Hz virkistystaajuutta ja suhteellisen pientä tarkkuutta, joten nykyään tietokoneiden, vaikka heillä ei olisikaan optimoitua emulointia, tulisi silti olla riittävän nopeita. Jos ei, myös kehysten ohittaminen on vaihtoehto …

    5. iv muut HW ja oheislaitteet

      Absoluuttinen vähimmäismäärä on RAM / ROM-muisti ja näppäimistö. Muisti on yleensä erittäin helppoa, vain staattinen taulukko ja / tai jotain sivunvaihtoa … Näppäimistö voidaan emuloida asettamalla I / O painettujen näppäinten mukaan. I / O voidaan myös yhdistää muistiin joihinkin matriiseihin aivan kuten muisti. ISR-rutiinin ansa on myös vaihtoehto, mutta tekee näppäimistöstä käyttökelvottoman muokattujen avainten käsittelijöiden kannalta.

      En häiritse FDC-, AY- tai muita oheislaitteita, koska emulaattorin tulisi olla mahdollisimman yksinkertainen. Mutta jos olet onnekas, saattaa olla joitain opiskelijoita, jotka ovat paljon muita edellä tässä projektissa. Niille, jotka voisit ehdottaa toteuttamaan jännittäviä ominaisuuksia, kuten FDC, DMA, jopa aidon äänikortin äänen (oikeille nauhoille tai muille soittimille), jotka mahdollistaa paljon hienoja ominaisuuksia, esimerkiksi katso:

    6. Tiedostot

      Haluan käyttää Z80 / SNA-tiedostomuotoja osoitteessa TAP / TZX: n käyttö on mukavaa, mutta emulaattori olisi alusta alkaen melko buginen, joten rutiinien lataaminen ei välttämättä toimi oikein, joten käytön ja virheenkorjauksen tekeminen on erittäin vaikeaa.

    7. ROM

      tämä on ongelmallisin osa, koska monet alustan ROM-levyt eivät ole vielä ilmaisia ja purkamalla / lataamalla / käyttämällä niitä emulointi saattaa vaarantaa oikeudellisia kysymyksiä.

      Joistakin kommenteista näyttää siltä, että ZX-ROM-levyt ovat nyt julkisia … ja on myös kommentoituja ROM pri NTS: n avulla emulaattorin ensimmäisten vaiheiden virheenkorjaus on paljon helpompaa (kun mikään ei vielä toimi).

      Mutta kannattaa aina harkita emulointia ja laillisia juttuja , varsinkin jos emulaattorit sijoitetaan jonnekin Internetiin

    Tässä muutamia aiheeseen liittyviä QA-linkkejä:

    Vastaus

    Etsitkö Ehdotan, että pysyt 8-bittisissä tietokoneissa (tai varhaisissa yksinkertaisissa 16/32-bittisissä), ZX Spectrum 48k on niin suhteellisen yksinkertainen järjestelmä – hyvin dokumentoitu, ei sprittejä, ei äänisirua, ei RAM-pankit, yksinkertainen I / O, si monipuolinen grafiikka (vaikkakin omituisella asettelulla), ei tarvita täydellistä sykliä emulointia, tunnettu prosessori, helppo kasettien käsittely (ROM-ansojen avulla voidaan tehdä vielä helpompaa) Pelejä on tonnia , joista monilla on sallittu lisenssi.

    Haittapuoli: tarjolla on valtava määrä saatavilla olevia emulaattoreita, monet itse retro-luokka ja monet lähdekoodilla käytettävissä, joten muiden koodien huijaamisen ja kopioinnin vaara on suuri.

    Ja tietysti aikaisemmin emuloimattoman järjestelmän emulaattorin parissa työskenteleminen antaisi lisäetua saavutuksen tunteesta.

    Kommentit

    • Minulla oli sama vaisto, mutta jatkaisin ehdottamalla, että tarvitset SNA- ja Z80-tiedostoja sekä riittävän tarkasti määriteltyjä tilannevedosmuotoja ’ edes huolehdi nauhan emuloinnista. Ja olkoon ’ s rehellisiä, TZX on tässä vaiheessa hieman miasma.
    • Uskon, että Spectrum ROM on nyt julkinen, mikä voi auttaa (tai tehdä asioista liian helppoa)
    • ZX Spectrum on hieno esimerkki yksinkertaisesta laitteistosta, mutta myös yksi melko monimutkaisesta, sykelaskentaohjelmasta (Racing the Beam), jolla saadaan käyttökelpoisia pelitehosteita.
    • @Tommy Voi, en koskaan ehdottaisi ZX80 / 81 -laitetta samasta syystä. Ja vaikka en ole oikea Spectrum buff, olen nähnyt sille hyvää ajoituksesta riippuvaa koodia. Useimmat prominet-näytön manipulaatiot sen jälkeen, kun osa on näytetty, mutta ennen kuin se juoksee kerran. ’ on hyvin yksinkertainen ongelma, joka löytyy monista järjestelmistä. Ei suurta ongelmaa, mutta ajoituksesta riippuvainen. Esimerkiksi yksinkertaiset emulointijärjestelmät, jotka vain kuristavat nopeutta kehystasolla, tuottavat paskaa nopeammille emulaatioisänteille … ja niin edelleen.
    • @Stormcloud Spectrum-ROM ei ole julkinen, vaikka lupa on annettu myönnetty jakamaan sitä emulaattoreiden kanssa käytettäväksi. ZX80- ja ZX81-ROM-levyt on julkaistu GPL: n alla.

    Answer

    Voinko ehdottaa vilkaisua varhaisia pelihalleja? Erityisesti nämä kaksi 8080 / Z80-alustaa:

    • Midway 8080 – Kehitetty vuonna 1975 ja antaa voiman Avaruuden hyökkääjät . Käyttää RAM-muistissa 256x224x1-bittistä mustavalkoista kehyspuskuria.

    • VIC Dual – Sega / Gremlin ”Vuonna 1977 suunniteltu alusta – tunnetuin peli on Carnival . Video on 32×28-kokoinen 8×8 merkin kokoinen (kaikki RAM-muistissa) ja tukee yksinkertaista väripaletti, joka on yhdistetty PROM: iin.

    Näitä on helppo jäljitellä, kun saat Z80-emulaation toimimaan. Ei ole hauskoja skannauslinjan temppuja tai outoja suorittimen odotustiloja. Ohjaimet ovat käytettävissä bittikartoitettujen I / O-porttien kautta.

    Voit pelata näiden alustojen kanssa vuorovaikutteisesti http://8bitworkshop.com/ (Täysi paljastus: Minulla on tämä sivusto ja olen kirjoittanut sivustolle linkitettyjä kirjoja, jotka kuvaavat näitä alustoja)

    Apple] [on myös hyvä valinta 6502-pohjaiselle alustalle, vaikka videoalijärjestelmä on monimutkaisempi kuin kahdella pelihallialustalla.

    Kommentit

    • Mihin se ’ arvoinen, mielestäni Space Invaders on innoittamana ehdotus. Jos muisti palvelee sitä ’ on vain 8080, jossa on 1 bpp bittikartoitettu näyttö, jokin porttien IO ohjauksille, ei yritystä kilpailla rasterilla, ääni, joka on vain muotoa ” laukaise melu X nyt ”, erittäin rento tarkkuusvaatimus, ja se tuottaa pelin, jota he toisinaan yrittävät nytkin myydä. Se ’ on vain laillisuuskysymys, joka saattaa antaa tauon, vaikka olen ’ m aina epäselvä akateemisista poikkeuksista.
    • Että ’ on melko oikeassa, siellä ’ on myös ulkoinen siru, joka auttaa 8080 ’ tynnyrinvaihtajan puuttuminen. Laitteistossa ei pitäisi olla ’ mitään laillisuusongelmaa (’ ei ole tekijänoikeuksin suojattua BIOS: ia tai muuta koodia) ja se ’ on melko helppo kirjoittaa oma peli, esimerkiksi: 8bitworkshop.com/v3.2.0/?platform=mw8080bw& file = game2.c

    vastaus

    PET tai TRS80 saattaa toimia hyvin. Yksinkertainen laitteisto, jossa on teksti näytöllä, jotta ne voidaan jäljitellä suoralla tekstillä, joka lisätään ensin koodi parittomille merkistöille myöhemmin, eikä todennäköisesti sisällä paljoa tarkan jaksolaskennan koodia.

    Bonusideo, jos haluat valitse PET: n lisääminen, kun C64-tuki antaisi grafiikkaa.

    6502 on todennäköisesti yksinkertaisempi jäljitellä.

    Viimeinen ajatus voi olla Ohio Scientific Superboard II tai sen UK-inkarnaatio. UK101, koska en usko, että sillä on ohjelmoitava videolaitteisto.

    Kommentit

    • Kyllä, kaikki kolme (PET, TRS, Superboard (unohdin täysin) myöhemmästä)) ovat hienoja yksinkertaisia koneita ja hyviä emuloinnille. Mutta puuttuu myös hyvä valikoima käyttövalmiita pelejä. Puhumattakaan väreistä ja vastaavista, joita ihmiset odottavat tänään.

    Vastaus

    Digitaalinen PDP-8 on erittäin yksinkertainen arkkitehtuuri, jolle voi olla helppo kirjoittaa emulaattori. Joitakin syitä tähän ovat:

    • Vain 8 perusohjetta
    • Ei videoliitäntää jne. Jäljiteltäväksi, vain päätelaitteen I / O
    • Ei tarvetta syklin tarkkuus, varsinainen koneiden sarja ei takaa samaa käyttäytymistä eri toteutuksissa
    • Voi aloittaa yksinkertaisella asetuksella (esim. 4Kword-kone, joka käyttää FOCAL-69: tä) ja tehdä emulaattorista vähitellen enemmän monimutkainen (esim. 32Kword-kone, jolla on laajennettu aritmeettinen käyttöjärjestelmä, joka käyttää OS / 8: ta RK05-levyltä)
    • Paljon online-käyttöoppaita
    • MAINDEC-diagnostiikka ja niiden ohjeet ovat saatavilla verkossa, jotka voivat käytetään testaamaan, että emulointi toimii oikein

    Tämä ei välttämättä kata kaikkia vaatimuksiasi, esim. muistikartoitettuja I / O-osia, mutta se sisältää varmasti asioita, kuten käskyjen dekoodauksen ja osoitetilat. Paljon dokumentaatio menee suoraan laitteiston perustasolle, joka saattaa olla sopiva EE-kurssille.

    Kommentit

    • Mielenkiintoinen asia on, että useimmilla yllä mainituilla järjestelmillä on joko Z80- tai 6502-suorittimet, joista molemmista puuttuu jonkin verran tuettujen osoitetilojen suhteen. Jos osoitetilojen peitto on tärkeää, PDP-8: lla on paljon parempi valinta niistä.
    • ” -pelissä ” kysymyksessä, uskon, että seikkailu säilytetään / herätetään edelleen PDP-arkkitehtuureille (mutta tarkista se – voin olla väärässä).
    • @TobySpeight You ’ oikein, se ylläpidetään tai herätetään, mutta PDP-10 : lle, joka on täysin yhteensopimaton PDP-8: n kanssa.

    Vastaus

    ZX Spectrum -vaihtoehto on jo kerrottu: sen vahvuus on täysin yksinkertainen IO-laitteisto ja se, että monet olemassa olevat pelit EI vaadi tarkkaa, sykliä – kaikkien oivallusten oikea emulointi ääntä lukuun ottamatta (ei mitään lähellä äänen korjaamista ilman CPU: n syklitarkkaa emulointia ja CPU: n tuottaman keskitason 1-bittisen äänivirran oikeaa alinäytteistystä).

    Mikä tahansa muu pelilaitteiden vaihtoehto, kuten NES, G Enese ja kaikki vastaavat sprite-pohjaiset koneet eivät ole tietenkään vaihtoehto, koska monimutkaisen laitteiston oppimiseen, tapojen kehittämiseen, emuloinnin puutteiden korjaamiseen jne. tarvitaan paljon aikaa. Esimerkiksi jopa ”yksinkertainen” Super Mario NES-peli ei toimi, ellei PPU: n sprite-törmäysbittiä ole jäljitelty oikein.

    Muut vaihtoehdot IMHO ovat seuraavat:

    1. varhaisen tekstitilan pohjainen IBM PC
    2. jokin olemassa olevista CP / M-koneista
    3. (ei sisällä mitään ”suuria” koneita ennen ”mikro” -kautta)

    Avainkohta tässä on tekstitilanäyttö, jota ei ole niin vaikea jäljitellä ja paljon yksinkertaisempi näyttää isäntäkoneessa (edes ei tarvitse näyttää pikseligrafiikkaa, työskennellä ikkunointijärjestelmän / SDL / jne. kanssa!).

    Joitakin tutkimuksia tarvitaan kuitenkin, jotta voidaan kerätä sopivia ohjelmia toimiakseen, mukaan lukien pelit. CP / M: ssä on joitain tekstimoodipelejä, ja niiden pitäisi myös olla joitain IBM PC: lle.

    Kommentit

    • Mahdollisen edun CP / M-kone on, että ’ on pakko olla vähintään yksi, jolle pelkkä 8080-emulointi tekee?
    • Hieno, mutta sitten taas on ei ole paljon pelejä IBM: lle tekstitilassa, vai mitä?
    • @Raffzahn – vain yksi on oltava .
    • @Jules Hehehe … joo. Mutta sitten sanon ’ sanon, että vähintään 8080 tekee tempun

    Vastaa

    Järjestelmä, jossa on pienin määrä mukautettuja pelimerkkejä, olisi todennäköisesti puhtaampi kohde jäljiteltäväksi.

    Apple II on yksi yksinkertaisimmista järjestelmistä (ei LSI: tä lukuun ottamatta prosessoria 6502), jolle kirjoitettiin valtavia määriä (helposti saatavilla olevia) pelejä.

    On myös julkaistu tonnia (vintage) kirjoja ja artikkeleita Apple II: n ja 6502-prosessorin järjestelmäarkkitehtuurista. Siksi järjestelmää on dokumentoitu melko hyvin useista (siteerauskelpoisista) lähteistä.

    Apple II: n emulaattorit voivat olla luokkaa 10K riviä C-koodia, mahdollisesti hieman vähemmän, mikä saattaa sopia sinun kurssin aikataulu.

    Kommentit

    • Suoritin voi olla yksinkertainen, mutta oheislaitteiden (näyttö jne.) jäljitteleminen olisi todennäköisesti silti huomattava tehtävä

    Vastaus

    Oletetaan, että sillä on mitään panosta, nämä ovat suorat muistiinpanoni koneista, joille olen kirjoittanut emulaattoreita, suunnilleen julkaisun aikajärjestyksessä, toivottavasti tarjota värejä tiedostomuotoihin jne.:

    Atari 2600

    Atari 2600: n erottava piirre on synergia prosessorin ja grafiikkalähdön välillä; pelit on toteutettu reaaliaikainen toiminto, joka toimittaa graafisia komponentteja videolähtöön rasterin käynnistyessä. Joten mielestäni tämä on huono valinta ilmoitettuun tarkoitukseen – 2600-emulaattorin kirjoittamisen todellinen kova työ on ajoitus ja vuorovaikutus mikroprosessorin ulkopuolella.

    Apple II

    Suhteellisen yksinkertainen laitteisto, mutta hyvin vivahteikas, ja siinä on useita grafiikkatiloja, ja sinun on edettävä kohti NTSC-videon opettamista, jotta voit purkaa värilähtö. Disk II: n jäljitteleminen on myös melkein pakko, mutta se on sinänsä pieni tehtävä, koska yleisimmät tiedostomuodot odottavat sinun tarjoavan Applen GCR-kooderin.

    ZX80 / 81

    Keskeinen kekseliäisyys on myös todennäköisesti liian monimutkainen ilmoitettuun tarkoitukseen, mikä uudistaa CPU: n päivityssyklin ja osan käskyjen hakemisesta videon skannaamiseksi. Jos päätit olla lisäämättä tätä mekanismia alkuperäisen tavoin, päädyt vain ROM-oletustekstitilaan.

    Commodore Vic-20

    Tämä on tavallinen bittikartoitettu kone yksinkertaisella prosessorilla 6502: ssa ja kunnollisella määrällä pelejä, joista osa toimitettiin patruunalla, mikä vapauttaa sinut tarve jäljitellä nauha- tai levyasemaa. Ainoa voiteen voima on sen 6522s; nämä ovat yhdistelmäajastin / Vaihtaja / syöttö / lähtö-sirut, joissa on koko joukko epätasaisuuksia. Mutta Vic-20: n siisti etu on, että se käynnistyy BASIC-kehotteeseen saakka ilman 6522: n toimintaa, ja BASIC itse toimii vain 6522: n ajastimilla , jopa epätarkasti.

    Sen lyhyt aika markkinajohtajana ennen C64: n saapumista rajoittaa myös laitteistoa edistyneempien nimikkeiden määrää – on olemassa esimerkkejä rasterikilpailuista, kuten Imagic-otsikot , mutta ne ovat vähemmistössä.

    Tiedostomuodot, joissa tiedot säilytetään, ovat sotkuisia , mutta rajoittamalla itsesi patruunatukeen ja varoen käyttää vain kaseteissa toimitettuja otsikoita, pitäisi välttää tämä ongelma.

    ZX Spectrum

    Katettu muualla; Mielestäni hyvä valinta. Varsinkin jos noudatat tilannekuvan tiedostomuotoja.

    Oric 1 / Atmos

    Katettu muualla; kunnollinen valinta, mutta siellä on toinen noista ärsyttävistä 6522-laitteista. Suurin osa peleistä on saatavana nauhalla, sinun täytyy tukea kaikkea sitä.

    Acorn Electron

    Bitmapped, 6502 plus suhteellisen yksinkertainen ulkoinen logiikka, mutta kuusi erilaista grafiikkamoodia ja ajoitus tekisi vaivaa – kunkin jakson hinta riippuu käytettävästä alueesta (ROM vs. RAM), grafiikkatilasta (40 saraketta vs. 80 saraketta) tilat) ja mahdollisesti nykyinen grafiikkalähdön tila (80 saraketilaa estävät RAM-muistin käytön pikselialueen aikana; 40 sarakkeen tilat eivät ”t”). Mutta voit vain mallintaa sen 1 MHz: n koneeksi useimmille peleille, ja pääset useimmiten pakoon linjakeskeinen versio grafiikkalähdöstä.

    ROM-levyllä on vain vähän pelejä, mutta onneksi nauhalaitteisto sallii enimmäkseen erittäin heikkolaatuisen emuloinnin: se on ilk, joka herättää keskeytä tavun vastaanottamisen yhteydessä, vain kahdella otsikolla, jotka voin ajatella tekevän syvempää itsetarkastusta.

    Amstrad CPC

    Todennäköisesti yksi välttää ilmoitettuun tarkoitukseen – sillä on 6845 CRTC, joka tekee erittäin konfiguroitavasta grafiikkalähdöstä ja siksi paljon otsikoita, jotka kilpailevat rasterista. Levyn käyttö oli myös melko laajaa, mutta sen 8272-levynohjain on aivan ylimääräinen päänsärky verrattuna WD1770: een, jonka näet usein muualla.

    MSX ja / tai ColecoVision / SG1000

    Eri äänisirut, sama prosessori ja video.Luulen, että voit päästä melko pitkälle huomiotta jättämällä ajoituksen vuorovaikutuksen, koska video-siru pitää oman RAM-muistinsa käsivarren pituudelta. Mutta se on laatat ja spritit sekä neljä erilaista grafiikkamoodia, mikä on luultavasti liian merkittävä yritys mikroprosessointikurssille.

    Master System

    Teknisesti parannettu SG1000, joka on kaikki mitä kone tekee sekä ylimääräinen grafiikkatila, mutta ylimääräinen grafiikkatila on niin paljon parempi kuin muut, että vain yksi otsikko käyttää mitään muu. Joten se yksinkertaistaa asioita jonkin verran, jos olet onnellinen alueella, jossa enimmäkseen jätät huomiotta ajoituksen.

    Mutta puhut silti sprite-prioriteettien huomioon ottamisesta, pikselikohtaisten törmäysten tarkistamisesta jne. Todennäköisesti liikaa .

    Alaviite: huijaaminen nauhan käyttöoikeudella

    Joillekin yllä mainituille kotitietokoneille voit itse ohittaa nauhanemulaation kaikelle, mikä on koodattu ROM-oletusmuodossa, vain lisäämällä sopiva ansa järjestelmän ROM-levylle ja taustatulostus lähdetiedostosta. Monet, mutta eivät kaikki, otsikot tukeutuvat täysin sisäänrakennettuun ROM-levyyn IO-nauhalle, jotta monet nimikkeet voidaan ladata ilman todellisia laitteistoyrityksiä.

    Joka tapauksessa se on bodge-job-hakkerointi, mutta se ”tehdään, jos emulaation kyseinen puoli ei ole sinulle tärkeä – sinun pitäisi vain poistaa se yhtälöstä ja jättää huomiotta se, mikä ei toimi.

    Tarkemmin sanottuna:

    Vic-20:

    • jos ohjelmalaskuri saa arvon 0xf7b2, kopioi seuraava nauhan otsikko kohtaan b3: b2, nollaa 0x90 ja 0x93 ja jatka 0xf7b5: stä (kun vältät JSR: ää);
    • ansa 0xf90b, tarkista X = 0xe, jos niin sitten Hanki seuraava nauhadatan runko ja kirjoita emuloituun muistiin c2: c1: stä, mutta enintään af: ae rungon koosta riippumatta, aseta sitten bitti 6 arvoon 0x90, tyhjennä kanto- ja keskeytysliput ja jatka 0xfccf: stä. / li>

    Oric:

    ROM 1.0: ssa pidä PC osoitteessa 0xe630. Katso versiota 1.1 varten osoite 0xe6c9.

    Kun olet saanut sen, lataa A seuraavalla tavulla nauhalta ja aseta nolla-arvo sen arvon mukaan.

    Sitten RTS.

    Alkuperäisellä ROM-levyllä on myös lippu kohdassa 0x67 tai 0x24d, joka erottaa koneen nopeat ja hitaat nauhakoodaukset, mutta tavallisessa nauhatiedostomuodossa on vain dekoodatut tavut, jotta nopea ja nopea likainen emulointi älä huoli siitä.

    Elektroni:

    Asenna NOP: t 0xf4e5, 0xf6de, 0xf6fa ja 0xfa51 poistaaksesi nauhahaaran käytöstä. Käyttöjärjestelmä yrittää nyt ladata nauhatiedot kuin sarja-ROM-levylle.

    Katkaise tietokoneesta 0xf0a8 ja tarkista, että X rekisteri on yhtä suuri kuin 14 ja arvo osoitteessa 0x247 on nolla. Sitten tiedät, että ROM yrittää hakea seuraavaa tavua nauhalta.

    Laita seuraava tavu Y: hen, aseta A arvoksi 0 ja RTS.

    Ensisijaisen nauhatiedostomuodon avulla voit tavoittaa tavuja tavallisesti suoraan tiedostosta (muutaman triviaalin palan jälkeen GZ: n tai muun GZ-dekompressorin kautta, vaikka voisit vain pistää etukäteen).

    ZX-spektri:

    (Tämä on kirjoitettu hyvin vanhoista muistiinpanoista; saattaa olla syytä vahvistaa ROM-levyn purkaminen).

    Ansaitse tietokone saavuttaen 0x056c 48 kt: n ROM-levyllä. Tartu seuraavaan lohkoon nauhalta (jos käytät TAP-tiedostoa, sinulle annetaan se suoraan; väittäisin, että sinun ei pitäisi vaivautua yrittämään tukea TZX: ää tällaisessa projektissa).

    Jos sen pituus on pienempi kuin DE: n arvo, nollaa siirto ja paluu.

    Vertaa lohkon ensimmäistä tavua B: n arvoon. Jos ne eivät sovi yhteen, nollaa siirto ja paluu.

    Taita muuten ensimmäiset DE-tavut, jotka sait IX: n osoittamaan osoitteeseen, ja aseta C: n pieni bitti ja aseta siirto.

    Suorita sitten RET suoraan tai ohita muuten vain tietokone eteenpäin 0x05e2: lle, joka on RET, joka normaalisti päättää nauhan lataamisen.

    128 kt: n koneet jakautuvat 48 kt: n ROM: iin nauhan lataamista varten, joten sama hakkerointi edellyttää, että tarkistetaan, mitä sivut ladataan.

    Kommentit

    • Hieno kirjoitus. Olen samaa mieltä kaikesta sanotusta – ehkä kahdesta pienestä lisäosasta Apple II: lle. Vaikka on totta, että videolaitteisto vaatii melko vähän ajattelua, sen hienovaraisuus voidaan jättää täysin huomiotta emuloinnissa, kuten vain tiettyjen bittikuvioiden vastaavuus on käännettävä väreiksi – jos ollenkaan, A2: ksi, jossa juoksevat usein mustavalkoisella näytöllä, jolla se voitaisiin jäljitellä tavallisena bittikarttana ilman mitään yksityiskohtia. Toiseksi, niin kauan kuin toistettavat Gemes ovat ProDOS-pohjaisia, ei tarvita yksityiskohtaista Disk II -emulointia, koska se toimii erilaisten laitteistojen kanssa.
    • @Raffzahn mikä olisi yksinkertaisin hakutaulun muoto väritulos olla?Päätellen takaisin NTSC: ltä ja käsittelemällä kaikkea hajoavaksi kaksinkertaiselle korkealle resoluutiolle, voin kuvitella taulukon, jonka indeksoi kolmibittinen laskuri, joka edustaa vaihetta ja viiden bittinen siirtorekisteri videolähtöä saadakseen puolet värisyklistä keskipisteellä. Joten 256 merkintätaulukko. Mutta se ’ on hyvin naiivi päättely; onko ihmisillä mennyt paremmin?
    • @Tommy: Yksinkertainen tapa on yksinkertaisesti käyttää toistuvaa nelivärisarjaa (mielestäni (punainen, tumman keltainen, vihreä, sininen) kaksinkertaisten hi-res-pikselien ja hämärtymisen kannalta. se jättää hieman värejä esineisiin, mutta todelliset monitorit pyrkivät siihen joka tapauksessa. Koska Apple]

      vastaus

      Luulen, että graafisten pelien käyttäminen kohteena saattaa venyttää oppilaasi liian pitkälle. Pelin suorittaminen vaatii yleensä hyvää emulaatiota paitsi Suurin osa prosessorin toiminnoista, mutta myös paljon laitteistoa, ei vähiten videopiirit (jotka ovat usein melko monimutkaisia ja aiheuttavat monissa tapauksissa paljon hienoja ajoitusongelmia). Jos mikään ei toimi oikein, tulokset ovat todennäköisesti hyvin dis nimittäminen. Ehdotan, että aloitetaan helpommalla kohteella.

      Tarkoitan järjestelmää, jolla on tekstitilan käyttöliittymä eikä graafinen, koska tällaiset käyttöliittymät ovat yleensä paljon yksinkertaisempia ja niillä ei ehkä ole erityisiä ajoitusvaatimuksia. jotka on täytettävä (ts. ne toimivat usein täysin rinnakkain prosessorin pääsyn muistiin vaikuttamatta ollenkaan prosessoriin). Suosittelen myös järjestelmää, jossa on integroitu konetason valvontaohjelma, koska se auttaa ohjelmien virheenkorjauksessa käynnissä koneella tarvitsematta suorittaa virheenkorjainta emulointitasolla.

      Nykyiseen henkilökohtaiseen tutkimusprojektiini perustuva ehdotus on Nascom 2 -tietokone. Tämä on suhteellisen yksinkertainen Z80-pohjainen kone, jossa on tekstitilan laitteisto, joka ei ole vuorovaikutuksessa suorittimen kanssa (jos on kiistoja, se on päättänyt suorittimen eduksi, mikä tarkoittaa, että teoreettisesti kourallinen pikseleitä kussakin kehyksessä ei välttämättä näy, jos näyttöä käytetään samanaikaisesti päivityksen kanssa. esiintyy, mutta th ei todennäköisesti ole erityisen havaittavissa tai edes yleinen, joten antaa käyttökelpoisen tuloksen hyvin yksinkertaisella laitteistolla). Tarkka ajoitus ei siksi todennäköisesti ole erityisen vaikeaa tai tärkeää tälle koneelle. Koneen laitteisto on sekä yksinkertainen että hyvin dokumentoitu. Integroidut oheislaitteet ovat UART (joita voidaan käyttää joko etäpäätteisiin / tulostimiin tai kasettien lataamiseen ja tallentamiseen …. mikä tarkoittaa, että kasettien käsittelyä ei tarvitse jäljitellä äänitasolla, mikä säästää paljon toteutusaikaa) ja rinnakkainen IO-moduuli. Saatavilla olevat työkalut kannustavat myös kokeilemaan kokoonpanokieliä, mikä on mielestäni toivottava tavoite kurssillesi.

      Yksi mielenkiintoinen asia tässä koneessa on, että käytettävissä olevissa emulointivaihtoehdoissa on aukko: koneen tunnetuin verkkosivu on pyytänyt javascript-pohjaista emulaattoria, jonka he voivat upottaa sivulle, mutta kukaan ei ole vielä toimittanut sitä.

      Vastaa

      Olen tehnyt kaksi ja vähän tyhjästä emulointia Macille Swiftin avulla. Nämä ovat henkilökohtaisia havainnot, jotka perustuvat kokemukseeni.

      Yksikään emuloinnistani ei ole täysin syklin mukainen, mikä johtaa muutamaan ongelmaan.

      Commodore PET

      Tämä oli ensimmäinen kirjoittamasi emulointi. Tarvitset vähintään 6502-emulaation, PIA-emulaation, VIA-emulaation ja videoemulaation.

      6502 on todella yksinkertainen ja erinomainen prosessori aluksi. Se on myös melko hyvin dokumentoitu. Visual6502-sivusto oli korvaamaton ohjeiden tarkan käyttäytymisen selvittämiseksi, jos dokumentointi oli epäselvää. Kirjoitin sivuun sivuna hieman myöhemmän prosessorin (unohdan kumpi), joka täytti joitain käskyjoukon aukot. Tämä teki 6502-testikoodin kirjoittamisen paljon helpommaksi (jopa PHX ja PHY helpottavat joitain asioita. toisaalta kaikki ohjelmistot, jotka käyttivät alkuperäisen 6502: n ”dokumentoimattomia ohjeita”, rikkoutuvat emulointiin.

      PIA ja VIA ovat suhteellisen yksinkertaisia IO-siruja jäljiteltävissä. Video-ohjain voi olla yhtä yksinkertainen kuin luen näytön RAM-muistin, kääntämällä ASCII-muotoon tai läheiseen likiarvoon ja piirtämällä tuloksena olevan tekstin ikkunaan. Lopulta loin joukon bittikarttoja, jotka olivat tarkkoja kopioita PET-merkistöstä.

      Pääresurssini PET oli ”Ohjelmointi PET / CBM” kirjoittanut Raeto West. Minulla on alkuperäinen kopio, mutta on olemassa PDF-ver sionit verkossa. Tärkeä on myös BASIC- ja KERNAL-ROM-levyjen saatavuus.Et halua kirjoittaa käyttöjärjestelmää uudestaan.

      Nauha-aseman jäljitteleminen oli PITA. Ohjelmistoversioni oli vähemmän luotettava kuin oikea, jonka PET-omistajat tietävät todella sanovan jotain. Ajattelin, että ongelma perustuu syklin tarkkoihin ajoituspulsseihin, ja vaikka emulaattorini laskee kellopulsseja, se ei välttämättä kutsunut ajastimen keskeytystä täsmälleen oikeaan aikaan.

      Minulla oli enemmän menestystä kirjoittamisessa kaksoislevyasemien emulointi. Tämä vaati myös vankkaa IEEE 488 -emulointia, mutta levyaseman emulointi oli melko helppoa. Se ei ole laitteistoemulointi, se vain ottaa PET: n lähettämät komennot ja suorittaa ne Macin kiintolevyllä olevilla litteillä tiedostoilla.

      Lopulta kirjoitin koodin, joka pysäyttäisi emulaattori, ruiskuta ohjelmatiedosto suoraan muistiin ja käynnistä sitten emulaattori uudelleen. Tämä osoittautui niin paljon helpommaksi kuin levyjen tai nauhojen jäljitteleminen, että lopetin niiden käsittelyn.

      Emulaattorini toimii riittävän hyvin useimpien PET-koodien kanssa. Valitettavasti PET Space Invadersissa on ongelma – luultavasti näppäimistökoodin aiheuttama – joten se ei tunnista näppäinpainalluksia kunnolla. En myöskään yrittänyt puuttua äänen tuottamiseen.

      Sinclair ZX Spectrum

      Tämä on joillakin tavoin jopa PET: tä helpompaa. Sinun on kirjoitettava Z80-emulaattori, joka on monimutkaisempi kuin 6502, mutta on olemassa CPM-testipaketti, jolla voit tarkistaa suuren osan sen toiminnallisuudesta, sinun tarvitsee vain jäljitellä CPM: n merkkilähtöjen aliohjelmaa, jotta se olisi toimiva. / p>

      Ainoat muut pelimerkit, jotka sinun on jäljiteltävä, ovat ULA, eikä sinun tarvitse tehdä suurta osaa siitä, jos olet valmis luopumaan nauha-asemasta. Lisäksi videogeneraattori, joka on vähän outo tavallaan, kun se käsittelee näytön RAM-muistia.

      Spectrumissa on todella mukava asia, että näyttö on aina bittikarttatilassa ja käyttöjärjestelmä luo merkkejä suoraan kirjoituspikselikuvioiden kirjoittaminen. Sinun ei tarvitse huolehtia merkistöstä, koska se on maagisesti mukana käynnistettäessä emulaattori Spectrum ROM -levyjen ollessa ladattuina.

      Sain spektrin siihen pisteeseen, että voisin ladata ja käyttää Manic Mineria ja se oli pelattavissa, vaikkakin ilman ääntä. Kesti noin kolme kuukautta työskentelyä ehkä kahdeksan tuntia viikossa alusta loppuun.

      Commodore 64

      Tämä on keskeneräinen työ. Ilmeisesti minulla oli jo 6502, jota muutin antamaan minulle 6510: n IO-portin. Toistaiseksi se tekee pankin kytketään oikein, osa CIA-toiminnoista on toteutettu ja emuloidaan tarpeeksi VIC II -toimintoja, jotta saan PET-vastaavan eli normaali tekstitila toimii. Myös reunus- ja merkkivärimuisti toimivat.

      Olen edelleen on monimutkaisempia grafiikkatiloja jäljitellä ja kirjoituksia, ja minun pitäisi pystyä tekemään jotain äänen kanssa, koska se on erillinen siru, en ole riippuvainen tarkasta suorittimen ajoituksesta.

      TL; DR

      Helpoin emulointi, paitsi CPU: sta oli Spektri. Aloitan luultavasti siitä, vaikka vanha CP / M 8080 -pohjainen tietokone saattaa olla vieläkin helpompaa, jos pääset käsiksi CP / M: ään.

      Muita havaintoja

      Tarvitset todennäköisesti hyvän ristikokoonpanon kohdealustalle. Se saa erittäin tylsän käsikokoamisen koodin yksikötestejä varten.

      Myös purkija on hyödyllinen. Minun ei tarvinnut purkaa Commodore BASIC ROM -levyjä, koska purkamiset ovat vapaasti saatavilla Internetissä. Mutta kun yritin saada Space Invadersin toimimaan, se ei toiminut aluksi ja purkija oli korvaamaton ongelmanratkaisussa.

      Tästä syystä cc65 suite on vahva tapa aloittaa 6502-koneella. Siinä on mukana hyvä kokoonpanija ja erinomainen purku. Z80-tilanne ei ollut niin hyvä, mutta löysin lopulta kohtuullisen kokoonpanijan nimeltä z80asm. Luulen, että minun piti kuitenkin kääntää se lähteestä.

      Tarvitset myös hyvää vankkaa dokumentaatiota. Jälleen 6502-dokumentaatio on online-tilassa käytännöllisesti katsoen vertaansa vailla. Dokumentit ovat vähemmän esillä Spectrumille, mutta ne ” niin yksinkertaista, voit päästä eroon melko huonoista ULA-emuloinneista.

      Vastaa

      Kaikkien muiden hienojen ehdotusten ohella, kuten vaihtoehtona Z-80: lle ja CP / M: lle, voit harkita yleistä Motorola 6809 -järjestelmää suorittamaan FLEX tai mahdollisesti OS-9 , molemmat Unix-innoittamana. CLI-pohjaisena järjestelmänä ei tarvitse saada tarkkaa ajoitusta.

      Jos rakennat simulaattoria uudelleen, se muistuttaa pikemminkin laitteistoa; käyttöjärjestelmän siirtäminen oli todellinen tehtävä – jonka tein 1980-luvulla – toisin kuin klooni-jotain-koululle-tehtävä.”Käynnistääkö se käyttöjärjestelmän ja ajaa ohjelmia?” on erittäin realistinen kohde.

      Koska se käyttää kannettavaa käyttöjärjestelmää, joka toimi useilla eri valmistajien laitteistoilla, se tarkoittaa, että opiskelijoilla ei ole vain yhtä tapaa tehdä se. Opiskelija A saattaa rakentaa bittikartanäyttö; Opiskelija B saattaa tehdä UART: n ja sillä on sarjaliitäntä. Jotkut saattavat yrittää saada jokaisen jakson oikein; jotkut saattavat yrittää vain saada kaikki toiminnot oikein. Siksi sen sijaan, että yrität vain kopioida jotain ymmärtämättä välttämättä alkuperäistä suunnittelurajoitukset, opiskelijat ovat kiinnostuneet oikeasta suunnittelukysymyksestä: mikä on hyvä tapa tehdä tämä?

      CPU

      • 6809 oli tuolloin ainutlaatuinen siinä mielessä, että oli mahdollista kirjoittaa täysin sijainnista riippumaton koodi, joka toimisi identtisesti missä tahansa muistissa.
      • Käskyjoukko oli melkein kokonaan ortogonaalinen
      • 8-bittisenä prosessorina 16-bittisellä osoiteväylällä se on melko yksinkertainen
      • Poikkeusmekanismi ja tehokas -osoitteiden manipulointi muistuttaa suuresti nykyaikaisia prosessoreita.
      • Motorolan suunnittelussa sillä oli muistikartoitettu IO pikemminkin kuin erityiset IO-ohjeet
      • Helpompi tehdä kuin Z-80 (paljon vähemmän ohjeita ) tai 6502 (vähemmän erikoistapauksia)
      • aineistoa https://en.wikipedia.org/wiki/Motorola_6809
      • FLEX suunniteltiin Unixin innoittamaksi järjestelmäksi 8-bittisille suorittimille

        • Se on suunniteltu erityisesti siirrettävyyttä varten, ja sen käynnistämiseksi vaaditaan vain vähän järjestelmäkutsuja – mielestäni vain merkkien lukeminen / kirjoittaminen, levykelohkojen lukeminen / kirjoittaminen ja jonkinlainen käynnistys (lue sektori ja hyppy
        • Laitteisto-agnostinen näille perustoiminnoille, mikä tekee simuloinnista paljon helpompaa.
        • On innostavaa kirjoittaa vain muutama toiminto ja käynnistää koko käyttöjärjestelmä
        • Ei grafiikkaa mietittäväksi (mikä on näkymästäsi positiivista tai negatiivista)
        • Paljon saatavilla olevaa materiaalia, f ind kautta https://en.wikipedia.org/wiki/FLEX_(operating_system)

        OS-9 samanlainen tarkoitus

        • Enemmän Unix-tyyppistä kuin FLEX, hieman vaikeampaa siirtää, sikäli kuin muistan
        • Myöhemmin siirretty 68000: een
        • Paljon saatavilla olevaa materiaalia, etsi osoitteesta https://en.wikipedia.org/wiki/OS-9

    Vastaa

    Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *