2024/06/27

Játékkonzolos ötletem

Már jó sok éve akarok egy játékkonzolt építeni. (2021. novembere óta azt hiszem). De valamiért minden verziót abbahagytam a tervezési fázisnál.

Természetesen azt lehet gondolni, hogy csak venni kell egy alaplapot, merevlemezt, meg minden szirszart, pont úgy, ahogy egy PC-t építene valaki.

Viszont nem ilyen konzolt szerettem volna mindig is csinálni, hanem egy olyat, aminek teljesen saját hardvere van. Egy ehhez hasonlót. Arra aztán tényleg büszke lehet lenni.

Azonban mivel nem gyártanak nagyon sok olyan chipet, amivel le tudnám a hardver tervezési idejét rövidíteni (és semmiképp sem szeretnék olyan hardvert használni, amit nem gyártanak, és nincs alternatíva), ezért saját szintetizátort és videokimenetet kell készítenem.

Itt vannak potenciális specifikációk, amiket el szeretnék érni:
    ¤ Intel 8051-es mikrokontroller főprocesszorként (IC)
        ¤ 32kB 64kB extra RAM
        ¤ 32kB 64kB külső ROM
        ¤ 10MHz frekvencia
        ¤ Scanline és időzítőalapú megszakítás
        ¤ (Esetleg még pár időzítő a beépítetteken kívül)
    ¤ SID-szerű PSG (IC×4, 4 oszcillátor, 4 modulátor)
        ¤ 4 hangcsatorna
        ¤ FM és AM modulálhatóak, mindegyik külön-külön
        ¤ Felfutás-Tartás-Lecsengés (ASR) hangerőszabályozó
        ¤ Áteresztő szűrők (alul, felül)
        ¤ Előre definiált dobkészlet (szűrős zajgenerátorral megoldva)
        ¤ 256 darab frekvencia (f=16×? Hz, ahol a "?" a 256 érték egyike)
        ¤ Pulzus, háromszög, szinusz, fűrészjel (ezeket invertálni is lehet)
        ¤ LFSR zajgenerátor
        ¤ Külső hangbemenet
        ¤ Monó hangkimenet, és bemenet
        ¤ Leolvasható hangcsatornák, és ASR értékek
    ¤ Megadrive-szerű videogenerátor
        ¤ PAL szabvány
        ¤ Komponens (component) videokimenet, hasonlít az AV kompozithoz.
        ¤ 256 szín, ahol a színbyte-ok így néznek ki helyiértékenként:
            ¤ 128: fényerő×2
            ¤ 64: fényerő
            ¤ 32: kék különbség×4
            ¤ 16: kék különbség×2
            ¤ 8: kék különbség
            ¤ 4: piros különbség×4
            ¤ 2: piros különbség×2
            ¤ 1: piros különbség
        ¤ 3 rétegű játékmező
            ¤ Objektumréteg
            ¤ Merev háttér (nem alkalmazható rá semmiféle torzítás)
            ¤ Hajlékony háttér (alkalmazható rá vektormátrixos torzítás)
            ¤ Minden rétegnek egy 16 színű paletta áll rendelkezésre
            ¤ A két háttérréteg 40×30 egységből áll, mindkettő pixelenként eltolható jobbra
            ¤ Egy egység 8×8 pixeles, minden pixel 4 bites (a 16 színű paletta miatt), vagyis egy teljes egység 4×8=32 byteos
            ¤ Ki lehessen kapcsolni a kimenetet, így a processzor irányítja a megjelenő színt
            ¤ Le lehessen takarni a képernyő minden széléről 1 egységet
    ¤ Hardver
        ¤ Két Atari2600 kompatibilis joystick (4 iránygomb, egy tűzgomb)
        ¤ Külső hangbemenet a játékkártya-porton van
        ¤ Extra kommunikációs és soros port, a CPU 1-es portjára kötve
        ¤ Felfüggesztő kapcsoló, ami az órajelet kikapcsolja, és a hangot is lenémítja, illetve a kommunikációs porton is jelet ad
        ¤ Sztereó hangkimenet kapcsoló, amivel az egyik csatorna hangját el lehet tolni, 0,02sec-mal
        ¤ 3,5mm jack hangcsatlakozó
    ¤ Kiegészítők
        ¤ Majd a legtávolabbi jövőben egy CD-s készülék
        ¤ Toldalék a kártyaportra, amivel mikrofont lehet a külső hangbemenetre kötni, így gameplayt lehessen felvenni rögzítőkártyával