A következő címkéjű bejegyzések mutatása: kreatív. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: kreatív. Összes bejegyzés megjelenítése

2025/10/01

Szegmentált kijelző dizájnok

Gondolom sokan találtuk magunkat szemtől szembe négyszemközt egy szegmentált kijelzővel. Ha nem, akkor ilyen módon néznek ki:

7 szegmenenses számkijelző

Megkérdőjelezhetetlenül a leggyakoribb fajta a 7 szegmenses képernyő, ami felébb látható. Az ilyen kijelző különféle szimbólumok megjelenítésére szolgáltatott; amik leggyakrabban európai-arab számok lennének, de más is lehet. A felhasználási módtól függően akár nem egységesített, fiktív szmbólumok is.

Léteznek persze másfajta kijelzők is, amik a szegmensek számában, azok megjelenésében, illetve akár még sok másban is különböznek egymástól. Ez az igazi techológiai diverzitás.

Több szegmenssel létrehozni egy kijelzőt nagyon könnyű. Tulajdonképpen a monitorok és a monokróm kijelzők is ilyenek, nekik kurva sok részük van. Ezt az emberi érzékekhez viszonylagosan nagy számot a vízszintes és függőleges felbontás számértékinek összeszorzásával kapjuk meg. Interneten rengeteg ilyet dizájnt találunk.

Azonban ez nem jelent kihívást/unaloműzést/időeltöltést (alkalmazástól függően). Egy szegmenst odarajzolni könnyebb, minthogy... elvenni. Sok internetlakó próbálkozott evvel a folyamattal, vagyis azzal, hogy kevesebbmint7 szegmenses képernyőket öntsenek papírra. Hogy mennyire jártak sikerrel, az eléggé személytől függő, szubjektív kérdés, mivelhogy minél kevesebb szegmensünk van, annál inkább fognak a számok egymásra hasonlítani; kvázi az olvashatóság gyérül elfele. De megpróbálni meg lehet ettől függetlenül.

Én is ezt tettem tegnap több iskolai óra kellős közepén merthogy unalmasak voltak és ez volt a legjobb tevékenység ami akkor felkínálkozott. Az eredmény 2 darab 6-felosztásos és 1 darab 5-felosztásos kijelző lett. 4 felosztásosat még nem sikerült készítenem. Hadd mutassam meg, mire jutottam.

3 normális dizájn pattant ki fejemből (ami amúgy nincs is).

Mindhárom elképzeléshez felírtam 10 euroarab számot, kivéve az alsóhoz, mert annál a 0 nem tűnik lehetségesnek, legalábbis nem olvashatóan.
A színes kompozíciók a teljes kijelzőket jelölik, minden külön színnel jelölt osztás egy-és-ugyanazon szegmens, egyszerre kapcsolnak fel és le (csak azon az adott kijelzőn belül természetesen).

Mint minden kétes jogszabályzatú szellemi tulajdonnál, itt is elmondom, hogy ezek CC:BY 4 szerint terjeszthetőek, nem akadályozza szabadalom, vagy szerzői jog.

2024/07/09

Új hardver a játékkonzolomhoz

 Azért nem írtam semmit sem, mert 1 hétig nyaralni voltam egy Tisza melletti faluban.

Gondok akadtak a konzolom hardverének tervezésekor, pontosabban a videójelgenerátorral. Emiatt úgy gondoltam, újratervezem. Íme:

CPU: Intel® P8051AH mikrokontroller
    ¤10MHz óra
    ¤128b belső RAM, külső nincs
    ¤64kb külső ROM
    ¤videóalapú megszakítás (INT0)
    ¤megállító gomb (INT1)
VIDEO: Egyedi
    ¤160×312 pontos felbontás
    ¤2,5MHz pixelóra
    ¤PAL komponens kimenet
    ¤6 bites színpaletta:
        ¤5: világosság (Y)
        ¤4: világosság (Y)
        ¤3: piros különbség (Pr)
        ¤2: piros különbség (Pr)
        ¤1: kék különbség (Pb)
        ¤0: kék különbség (Pb)
HANG: Egyedi (előzőhöz képest szinte változatlan)
    ¤4+1 csatorna
    ¤4 periódikus hang
    ¤1 LFSR fehérzaj
    ¤Alul és felüláteresztő szűrő
    ¤ASR (Felfutás, tartás, lecsengés) burkológörbe
    ¤256 frekvencia (f=16×?, ahol "?" a 256 érték egyike)
    ¤Külső hangbemenet
    ¤Leolvasható csatornakimenetek
    ¤Monó hangbemenet és kimenet
        ¤Kapcsolható ál-sztereó kimenet, ahol az egyik oldal 0,02sec-mal el van tolva

Használható továbbá egy 1×16 karakteres LCD, illetve egy külső port is.  Videómemória nincs, hanem az Atari2600-hoz hasonlóan valós időben kerül kirajzolásra a kép. A fő órajel a 10MHz-es kristály, a pixelóra ennek az 1/4-ede. A kirajzolt pixel egyenesen a CPU 1-es portjáról kerül kiolvasásra. Az 1-es port többi bitje:
    ¤7: külső port, 8-as tüske
    ¤6: kijelző mód (0: adat, 1: instrukció)

2024. 07. 10.-i friss hírek: minden csatornán állítható bázisfeszültség, amivel 2-bites hangfileokat lehet lejátszani. Ha a bázisfeszültség nem 0, akkor az analóg hanggenerátor kikapcsolódik a túlfeszültség elkerülése érdekében.

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

2024/06/17

C64 VIC-2 átmappelés

 Visszatértem jejeje.

Megint gyakoroltam assemblyt. C64C emulátorban természetesen.
Egy egész délutánt kínlódtam rá, de sikerült megalkotni egy kis programot (utility).
Annyit csinál, hogy a VIC-2 chipet átmappeli a RAM $4000-$7FFF blokkjába, és kiveszi a beépített karaktertárolót, és a BASIC-et is. Ez utóbbinak ugyan nincs hatása valamiért, majd esetleg utánanézek, vagy (mivel kirakom ide a forráskódot, hogy másoljad lefele) esetleg te is megpróbálhatod, ha értesz hozzá. Itt van a segítség.

A program eredménye

*a program NEM tartalmaz karakterkészletet, azt utánpótolni kell. Pl. innen.

Forráskód itt érhető el.

2024/06/09

6510-es assembly gyakorlás

 Elég sok ideje nem volt rovat, szóval most írok egyet.

 Gyakoroltam 6510-es assembly (6502-esként többen ismerik), emulált Commodore 64C környezetben. Egy olyan programot írtam, ami diszkós/karneválos fényeket idéz elő, és garantált epilepsziarohammal jár együtt :-). Kipróbáltam volna egy igazi konzolon is (mert hogy nekem van biza), csak mivel nincs a 64-ben beépített assembler de még RAM monitor sem (aminek egyáltalán nem örülök), ezért minden gépi kódos progit egy saját BASIC programmal kell betölteni bájtról bájtra. És mivel a diszkó.bin (maga a 6510-es program) 145 bájtos, ezért 145× nagyobb a hibalehetőség, mintha egy bájtos lenne.

Alább van videós demonstráció is.



2024/05/05

Még egy új játék készül! :-)


Lehet tippelni, hogy melyik játék remake-je. Nem, nem lesz Magnet stáb és motiváció hiánya miatt.

2024/04/28

Szögesdrót-minta

 Tegnap kitaláltam egy díszítő mintát. Egy egyenesen alapszik, tehát akár röpdogába is lehet elválasztóként rajzolni.

 A minta lényege, hogy a nevéből adódóan egyszerű, de mégis egy kicsit agresszív kinézetet mutasson. Hogy ezt mennyire sikerült eltalálni, azt nem tudom.

 Két változata van. Mindkettőben hosszú vonalak követnek egy/pár rövid vonalkát. Az egyik változatban az egymást követő vonalak merőlegesek egymásra, kvázi kis tüskéknek néznek ki. A másik változatban a merőleges vonalak helyett kis × jelek vannak. Itt van két ábra, hogy hogyan néznek ki.

 


 Azt is kipróbáltam, hogy milyen a merőleges minta, ha a vonalat közéjül folytonosan rajzolom.