Welcome, Guest. Please login or register.


Author Topic: Nick 2.0 (Read 2688 times)

Offline Tuby128

  • EP addict
  • *
  • Posts: 1248
  • Country: hu
Re: Nick 2.0
« Reply #15 on: 2023.April.21. 21:53:52 »
Ismét továbbgondoltam a fejlesztést, összegyűjtöttem ezeket a gondolatiamat.

A grafikában egy objektum ráhelyezése egy meglévő háttére úgy történik, hogy az alakzat pl. labda  egy téglalap alakú vászonra van rárajzolva, és ugye az alakzaton kívüli pixeleket nem akarjuk a háttérre másolni. Ezért létezik egy ún maszk, amely ugyanolyan pixel méretű mint az eredeti kép, és azt adja meg melyik pixeleket kell másolni.
 Fejlettebb rendszereknél ez a maszk nemcsak 0 és 1 lehet, hanem áttetszőséget is lehet szabályozni: pl. kék vízesés átlátszik. Ennek a szakkifejezése "alpha blending".
 Vannak rendszerek ahol megspórolták a maszkot, és kijelölték az egyik színt láthatatlannak, a többi pedig felülírja a hátteret.

 Azokon a rendszeken, ahol nincsen beépített sprite vezérlés, a processzor elkészíti vagy átmásolja a hátteret a video memóriába, majd erre rámásolja a mozgó tárgyakat akár maszkot használva. A probléma az, hogy a felülírt hátteret vissza kell állítani a következő képen, hogy újra rákerülhessenek a tárgyak az új pozícióban. Minél magasabb a háttér felbontása és bitmélysége, annál több időt igényel a visszaállítás.

 Az már egy előrelépés lenne ha lenne egy scrollozható háttér, és egy olyan előtér amire felmásolhatóak lennének a tárgyak, így csak törölni kellene az előteret a következő képváltás előtt. Csak törlés alatt azt értem hogy nem kellene fenntartani a memóriában a háttérből egy érintetlen példányt amivel felülírjuk a módosított képet. A nick 2.0 pedig ezt a hátteret és előteret rajzolná fel egymásra.
 Nem gondolnám hogy két sorparaméter táblát kellene fenntartani előtérnek és háttérnek, de az is baj, hogy nem nagyon van hely LD3 adatmezőnek a sorparaméter táblában.
 Esetleg a nem használt módban az utolsó 8 byte szín mezőt lehetne felhasználni LD3 és akár további pointereknek.

 

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14592
  • Country: hu
    • http://enterprise.iko.hu/
Re: Nick 2.0
« Reply #16 on: 2023.April.22. 10:59:23 »
Javasolnám, hogy tanulmányozd az eredeti Nick-ben a külső színbemenetek működését, amire vonatkozik a SPRITE nevű EXOS rendszerváltozó. Rájönnél, hogy ezt az egész háttér kérdést már megoldották, és beépítették az eredeti Nick-be. Csak a spritéket kéne odakötni az EC drótok végére.

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1238
  • Country: hu
  • Stray cat from Commodore alley
Re: Nick 2.0
« Reply #17 on: 2023.April.22. 12:34:23 »
Igazad van Zozo, csakhogy Tubynak azt a sprite kezelő logikát is meg kell valahogyan valósítania. Vagy legalábbis nekem úgy jött le, hogy nem egy kiegészítőt tervez az eredeti gépekhez, hanem egy teljesen új hardvert.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1248
  • Country: hu
Re: Nick 2.0
« Reply #18 on: 2023.November.09. 02:57:08 »
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?

Azért sárga, mert az EP-n a 8 biten a pirosnal és a zöldnek adtak 3 bitet , a kéknek csak 2-őt. Emiatt a kék nem tudja követni a másik két színt és hiányzik, ilyenkor sárgás lesz a kép.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1248
  • Country: hu
Re: Nick 2.0
« Reply #19 on: 2023.November.26. 16:28:11 »
Kiderült, hogy nem azért sárga. Azért volt sárga, mert elrontottam a PC-re C-ben írt kép konverter programot.

A hétvégén kicsit programozgattam. Találtam egy képet a neten, ami 24 bites színmélységű, és gondoltam átkonvertálom. Először borzasztó lett (lásd csatolmány). Ennek az az oka, hogy ahol 24 biten színátmenet van, ott a 8 bitesre levágás miatt sima egyszínűt ad.
 Ekkor kezdtem keresgélni, hogy milyen matematikai megoldással lehet "dithering"-ezni. Kétféle megoldás van, az egyik a 2x2 vagy 4x4-es mátrix alapú (mint kiderült nekem nem jó, mert sormintát hagy a képen), vagy pedig a Floyd-Steinberg eljárással, amit szerintem mindenki ismer.

 Már majdnem elkezdtem írni a programot hozzá, amikor kiderült, hogy ha Photoshop megkapja az "indexelt színlistát", melyet az EP tud, akkor ő is elő tudja állítani a ditherelt képet.
 Elkezdtem kézzel felvenni az EP színeket a phtoshop-ba, majd a 19. szín után (237 van még hátra) rájöttam, hogy az úgyis egy fájlba menti, megnézem a formátumát. Kiderült hogy nagyon egyszerű, mert egy indexelt színhez 3 darab Byte tartozik (piros-zöld-kék), majd a lista legvégén megadja hogy hány valid (használt) szín van. Írtam rá egy kis programocskát, ami létrehozta az EP 256 színét.
 Ezután a 320x240-es (lekicsínyített, de továbbra is 24bites) képre elkészítettem a dither-elt változatot. Ezt utána betöltöttem a módosított EP emulátorba.
 Kicsit változtatni kellett a Basic betöltőmön, mert a kép 320*240*1byte= 76800 Byte =  75kB, ami már nem fér el 4db "video" lapon, a basic betöltőm nem állt készen a 5. 16kB lapra. De pár órás hibakeresés után megcsináltam.

 Rendszer:
Enterprise Emulátor 256 kB (F0-FF szegmensek) - RAM amely a NICK 2.0-nak teljes mértékben címezhető a Graphics hires 4 képpont méretű, de 256 színű módban.
A képet az F4 szegmenstől F7 szegmensekig tároltam, majd amikor növeltem a függőleges megjelenítést, akkor az F8 szegmenset is felhasználtam.
Alapvetően a rendszer az 1. szabad szegmenst használja (az én esetemben a F0) ezért azt nem is bántottam.
A video memóriába sem akartam írni (FC-FF), mert azt felül szokták írni a grafikai rutinok.
 Azt csinálja a Basic betötőm, hogy nyit egy video lapot a képernyőre (mint helyfoglalót, amit nem változtat meg a rendszer) majd ennek módosítja a sorparaméter tábláját.
Ennek előnye, ha bármi gond van, akkro nyomok egy SHIFT+F5-öt és visszakapom a szöveges módot, látom a hibaüzeneteket stb.



Offline Tuby128

  • EP addict
  • *
  • Posts: 1248
  • Country: hu
Re: Nick 2.0
« Reply #20 on: 2023.November.26. 18:30:57 »
Még egy-két példa netről szedett nagyfelbontású kép konvertálva.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9748
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Nick 2.0
« Reply #21 on: 2023.November.26. 21:46:26 »
Azért nem rosszak ezek a képek!
Graphics hires 2 módban lenne brutális 255 szín.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Tuby128

  • EP addict
  • *
  • Posts: 1248
  • Country: hu
Re: Nick 2.0
« Reply #22 on: 2023.November.27. 05:34:28 »
Nem tudom. Hires 2-ben a pixel nem négyzet alakú hanem függőlegesen hosszúkás. Ezt már korábban kifejtetettem, hogy hires 2-ben csak interlace használatával lenne a pixel négyzet.
 Másik dolog, hogy a 320x240 méretnél ahogy írtam 70kB körül van a kép mérete. Hires 2-ben 140kB lenne, interlace-szel pedig 280kB. Az azért nagyon sok, nemcsak betölteni, hanem kezelni is.
 Vizsgálgattam az akkori és későbbi japán hardverek felbontását, talán csak később a playstation 1 próbálkozott a teljes pal felbontás kihasználásával. De ott sem minden játékban.

 Még egy dolog amit meg kell említeni, hogy a tűéles képek, amiket közzétettem azok az emulátorból származnak. A TV-n ezek szépen megszűrve jelennek meg, a képet tovább javítva.