Welcome, Guest. Please login or register.


Author Topic: Nick 2.0 (Read 8027 times)

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Nick 2.0
« on: 2023.April.11. 11:36:20 »
Nick 2.0

 Gondolkodtam hogyan lehetne továbbfejleszteni a Nick-et, úgy hogy a meglévő módokat ne változtassam.
 Az egyik amire szükség van feltétlenül, hogy több mint 8 bites legyen a video memória adatbusza.
 Ennek köszönhetően egy karakterszélesség alatt nem 3 byte memóriahozzáférés, hanem ennek többszöröse érhető el.
 Mondjuk lehetne a nick 2.0 majd 24 adatbites.
 
 A nick 40 karakteres "szöveges" módját ki kellene terjeszteni, hogy a 80 karakteres módot is szöveges módban támogassa. Ehhez a TEXT 40 LD2 mutatójának legfelső bitjét használnám, mert az mindig nulla.
 Ha ez a bit aktív, az LD1-ről nem 40 hanem 80 karaktert olvas és a karaktermező ugyanott lenne mint text 40-nél. Az EXOS-t kell csak hozzáigazítani.

 Van egy nem használt mód a nickben:
 Kiterjeszteném a NICK memóriahozzáférését az EP teljes 4MB memóriájára.
 Ez a nem használt mód kiterjesztett-grafikus mód lenne. Ebben a módban az LD 1 pointert és az LD2 egyik  bájtját együtt kezelném. Így egy 20 bites címet alkotva ami az EP teljes memóriájában bárhova mutathat.
 A színmódok közül a 4 színű mód pixelméretével lehetővé tenném a 256 szín megjelenítését.
 Tegnap számolgattam graphics 4-ben a maximális képpont kb: 336x252 képpont lenne ami 256 szín esetén képpontonként 1byte, így 83KB memória kellene. Ezt csak a nick fent leírt címzés kiterjesztésével lehet elérni, tekintve hogy alapból csak 64k-et tud.
 Ha egy programhoz "frambuffer" kell, ami azt jelenti, hogy az egyik képet mutatom míg a másikat rajzolom, akkor így 2*83KB=166KB fog kelleni csak a képnek.
 A framebuffer támogatását úgy oldanám meg, hogy két sorparaméter tábla (LPT) lenne, és ha a Z80 jelez, hogy elkészült, akkor váltana a másikra a Nick 2.0.

Mindebből következik, hogy a Z80 memóriahozzáférése független lenne a NICK-től, nem lenne várakozás. Ezt vagy gyorsabb memóriával és időzítéssel oldanám meg, vagy kettős hozzáférésű (dual port) memóriával.

 A hardveres sprite kezelésen még gondolkodom, hogyan lehetne az egész képre kialakítani. Ha lesz "frambuffer" lehet hogy nem lesz szükség nagy hardveres támogatásra, csak gyors mezőmásolásra. Tehát hogy a Z80 egy-két I/O utasítással megadja a sprite helyét a memóriában, x/y felbontását, és hogy hova kell másolni. NICK 2.0 pedig elvégzi a háttérben, majd jelez megszakítással ha kész.

 Ezzel gyakorlatilag egy feturbózott Amiga környékére katapulna az Enterprise számítógép.

 Ilyen szép video képességekkel már szükséges lehet a CPU-t 80 MHz környékére felhúzni.

 

Offline Ep128

  • EP addict
  • *
  • Posts: 1849
  • Country: hu
    • Honlapom
Re: Nick 2.0
« Reply #1 on: 2023.April.11. 23:10:39 »
Nick 2.0
 Van egy nem használt mód a nickben:
 Kiterjeszteném a NICK memóriahozzáférését az EP teljes 4MB memóriájára.
 Ez a nem használt mód kiterjesztett-grafikus mód lenne. Ebben a módban az LD 1 pointert és az LD2 egyik  bájtját együtt kezelném. Így egy 20 bites címet alkotva ami az EP teljes memóriájában bárhova mutathat.

Nem szakértek hozzá, de... Ebből nem lenne gubanc (itt-ott fagyás) a "lefelé kompatibilitás" témában? Avagy hogy oldanád meg, hogy a memória olyan részeihez férjen hozzá, amik esetleg már egy adott programon belül foglaltak?

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Nick 2.0
« Reply #2 on: 2023.April.12. 08:26:20 »
Ez a NICK 2.0 egy elég alapos átdolgozása lenne a teljes rendszernek. Nem tudom ki hogyan van vele, de a 24 bites adatbusz nekem meglehetősen furcsának tűnik. Nem bonyolítaná az el túlságosan a címbusz kezelését? Valami okának csak kell lenni, hogy általában a mai rendszerek adatbuszai kettő egész számú hatványa bájt szélesek. (A videokártyák 192, 320 meg 384 bit széles adatbusza az más, mert három, öt vagy hat független 64 bites memória alrendszerből állnak össze.)

Egyébként egyszer-kétszer én is gondolkodtam hogyan kellene hasonlóképp "felturbózni" az Enterprise-okat. Ennyire merész gondolataim nekem nem voltak, tán a fantázia hiánya miatt. Az utóbbi időben azután arra jutottam, hogy igazából talán legjobb úgy szeretni ezeket a gépeket, ahogyan vannak. Még ha létre is jön valamiféle mindenkivel egyetértésben meghatározott műszaki tartalom a feljavításra és az gyártásba is kerülne, akkor sem lesz benne minden EP-ben. Úgy meg csak egy amúgy is kicsi közösségen belüli még apróbb klikk jönne létre. Vagy legalábbis nekem ez az érzésem.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Nick 2.0
« Reply #3 on: 2023.April.16. 05:59:51 »
Sikerült az EP32 emulátort átépíteni, úgy hogy Graphics hires 4 módban 256 színnel tudok megjeleníteni.

Egyelőre a 256 színű módot változtattam meg, majd később a helyére teszem.

 Érdekesség, hogy ha kiadom a GRAPHICS hires 4 parancsot, akkor egy 40 karakter széles és 20 sor magas grafikus lapot nyit meg, ami 40*8 * 20*9= 57600 képpont, amennyiben minden képpont 256 színű lehet, akkor ez 57600 Byte = 56 KB. A jó öreg Nick 64Kb -os így kivonva a 56KB = 8KB marad mindenre (rendszerváltozók, text 40 mód, maga a sorparaméter tábla etc.). Ez vajmi kevés. Ezért az emulátor most 4 x 64KB videomemórián fut, ami a F0 - FF szegmenseken terül el.
 A LD2 pointer alsó bájtjával tudok a 64KB-okat ugrani. Kipróbáltam ha 64KB határon definiálok egy LPT Blokkot, akkor a sor kiolvasásakor szépen folytatja a következő szegmesen.

 Mivel az exos nem kezeli az új módot, nekem kell a sorparaméter tábla LD1 és LD2 címeit igazítani.

 Már bekészítettem egy BMP képet, amit sikerült EP-féle 8 bitre átkonvertálnom. Majd holnap ha lesz idöm betöltöm a memóriába, megnézem hogyan mutat a kép az emulátoron. Még ki kell találnom, hogyan ismerem fel a 16KB-os szegmenshatárt ha képet másolgatok a memóriába. A BMP fájl lentről felfelé épül fel.

 Számolgattam, a Nick lehetőséget ad maximálisan 44 karakter széles és 28 karakter magas képet létrehozni (a status sor is benne van) ez akkor
(28*44) 252px*352px  = 89 KB memóra. Néhány ekkora kép tárolása már lehet hogy több floppit is igényel :D
 Ha esetleg igény lenne 16 bites grafikára, akkor ennek duplája 178KB kell.

 Nagyon nagy szerencse hogy annak idején így tervezték meg az EP-t, mert ezt kevés módosítással sikerült elérnem az emulátorban.
« Last Edit: 2023.April.16. 06:03:33 by Tuby128 »

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Nick 2.0
« Reply #4 on: 2023.April.16. 16:02:46 »
Hála LGB segítségének sikerült betölteni basicben egy EP-re módosított BMP file-t a memóriába.

Csatolmányban az eredeti 24 bites kép.
Az átalakított képet nem lehet már megnyitni, mert nem szabályos BMP. Ezért azt nem tudom ide feltölteni.
A végeredményt viszont igen. 256 színű kép. 52KB videomemóriát foglal :D (A jenleg 256KB-ból :P)

Sajnos nekem nincsenek ismereteim, hogyan kell lebutítani egy 24 bites képet 8 bitesre, az ep speciális R:G:B - 3:3:2 felépítése és azok súlyozott értéke miatt úgy tünik nem alkalmas a gyorsan összedobott konverterem szép képet visszaadni.
 Még majd dolgozom ezen a 24 -> 8 bit konverzión.

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Nick 2.0
« Reply #5 on: 2023.April.16. 16:35:25 »
A piros és zöld csatornában vagy egyszerűen eldobod az alsó öt bitet, vagy a színtartományból az alsó egy tizenhatodot (nevezzük mondjuk az elsőnek) a 0-hoz rendeled, a felső egy tizenhatodot (legyen a tizenhatodik) a 7-hez rendeled, a közbeeső tizenhatod párokat meg ahhoz az értékhez, amit közre fognak (második és harmadik az 1-hez, negyedik és ötödik a 2-höz, stb.)

A kék csatorna trükkös, mert az EP-ban egyenetlenül van felosztva. Ott is számolhatsz valami hasonló tartományokat, mint a másik két színre és aszerint rendelgeted hozzá a négy effektív értéknek (0, 2, 5, 7) megfelelő 0-tól 3-ig terjedő színkódhoz. Ami a valószínűleg kimaradó középső színtartományra esik, azt egy a két középső színből összeállított pepita mintájú, az eredeti képpel megegyező méretű virtuális képből veszed a konvertált képpont pozíciója alapján.

Ha még így sem jó az eredmény, akkor marad a kézzel javítgatás. Vagy kilesed az ep128emu képkonverteréből IstvanV hogyan csinálta a színek átalakítását.

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Nick 2.0
« Reply #6 on: 2023.April.16. 17:21:02 »
Kicsit próbáltam számolgatni a kék csatornára. 0..36 tartomány lehetne a 0, 37..109 tartomány az 1, 146..218 tartomány a 2 és a 219..255 tartomány a 3. A 110..145 tartományt pedig ditherezni az 1 és 2 színekkel.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Nick 2.0
« Reply #7 on: 2023.April.16. 17:46:31 »
Megvan mit rontottam el. Fordítva vannak a bitek az EP-n. A legkisebb helyiértéken lévő a legerősebb. A PCs RGB-nél pedig a legnagyobb helyiértékű a legerősebb.
Most változtatom éppen kép-konverteremet.

Nick leírás:
RED= b0 * 4/7 + b3 * 2/7 + b6 * 1/7
GREEN= b1 * 4/7 + b4 * 2/7 + b7 * 1/7
BLUE= b3 * 2/3 + b5 * 2/3

Szerkesztve Tuby128 kérésére, az utolsó sor helyesen:
BLUE= b3 * 2/3 + b5 * 1/3
« Last Edit: 2023.November.09. 20:41:39 by Dr.OG »

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Nick 2.0
« Reply #8 on: 2023.April.16. 17:55:15 »
SIKER!


Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Nick 2.0
« Reply #9 on: 2023.April.16. 18:33:45 »
Most hogy van egy snapshot-om ebben a különleges módban a memóriáról. Ezt be tudom tölteni majd az FPGA-ba (ha elkészül) a NICK 2.0, és akkor azonnal lesz képem is.

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Nick 2.0
« Reply #10 on: 2023.April.16. 19:24:00 »
Jól néz ki! :smt023 Azonban lehet, hogy csak az én szememmel van valami baj, de nekem kicsit sárgásnak tűnik az új változat. Ez vajon mitől lehet?

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Nick 2.0
« Reply #11 on: 2023.April.16. 19:32:35 »
Sikerült az EP32 emulátort átépíteni, úgy hogy Graphics hires 4 módban 256 színnel tudok megjeleníteni.
Eléggé jól néz ki!
Lesz majd hardver is, amely támogat ilyen videomódot?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Nick 2.0
« Reply #12 on: 2023.April.16. 20:37:46 »
Hardver az biztos lesz. Szoftvert kellene írni, meg az exost hozzáigazítani. Az talán nagyobb munka.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Nick 2.0
« Reply #13 on: 2023.April.17. 12:46:27 »
Van valakinek valamilyen ötlete, hogyan csináljam meg a sprite kezelést?
 Tegnap nézegettem a Nintendo Super NES (SNES) megoldását.
Feltölt a memóriába egy hatalmas tömböt, amin 8x8 16x16 stb pixeles képek (csempék) vannak egymás mellett. Mindegyiknek van egy címe ID, és a háttérre ezeket lehet felpakolni a ID számuk alapján.
 A SNES-nél a 0. Szín transzparens. Tehát ahol 0 van megadva, ott átlátszó a háttér. Ez azért fontos mert 3 hátteret lehet egymásra tenni. Pl egy hegyvonulatos képre rá lehet szuperponálni egy szivárványt. Így mindkettő látszik.
 Lehet még sprie-okat definiálni akik szintén csempékből állnak. Meg lehet adni hogy mélységében hol legyen, ugyanis a megrajzolt palota mögé repülő madarak is ilyen sprite-ok.

 Ez a csempés módszer gyakorlatilag olyan mint a Nick Text 40 módja, csak több színnel, több karaktertel.
 Sajnos a Nick TEXT módszerével csak egy hátteret lehet létrehozni. Jó volna ha 2-3 text 40-es képet össze lehetne másolni.

 Ami még fontos lenne a scrollozás függőlegesen és vízszintesen. Arra gondoltam, hogy a Nick 2.0 kaphatna néhány új I/O portot amivel egy utasítással el lehet mozgatni pixelenként az összes LPT sor által kijelzett képet mind vízszintes mind függőleges irányban a memóriában. Tehát egy out x,y utasítás után a Nick 2.0 y pixellel eltolva kezdi olvasni az adatokat a memóriából. Ugyanez vertikálisan is.
 Mindezzel rengeteg Z80 munkát meg lehet spórolni.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Nick 2.0
« Reply #14 on: 2023.April.18. 19:24:49 »
Nick 2.0 feature:
 2 video kimenet. Két LPT tábla. Az egyikben nyitva maradhat a szokásos szöveges mód, a másikban is hasonlót fel lehet építeni, de még jobb ha a teszprogram kimenete a másikon fut (grafikus mód) ezzel igazán kényelmes lehet a programozás.
 Nagy kihívás lesz a memoria management ennyi adat olvasásához, de van egy ötletem.

Nyilván lesz a Nick 2.0-án alternatív dvi-d kimenet(ek).