DPTP motor: ...
DPTP motor: ...
Írjunk játékot SEGA MD konzolra - 9. AB síkok kezelése
Blog
2020-02-21 10:36
don_peter
Írások: 18
A és B síkok kezelése

A most következő bejegyzés a SEGA MD képernyő síkokról és a síkok tulajdonságairól fog szólni, emellett a blog végéhez közeledve bemutatom, hogyan kell elhelyezni egy háttérképet az addig taglalt síkok egyikére.

Jurassic Park

A képen amelyet szerkesztettem egészen jól látszik az egyes síkok szerepe a megjelenéskor. Látható, hogy 3 síkot jelölök meg a képen, A és B síkok és persze a Sprite sík. Tudni lehet hogy ennél jóval több sík van, de jól elkülöníthetően csak összességében 4 sík elérhető a SEGA játék fejlesztésekor. Ezek mindegyike használható, de más más tulajdonságokkal bírnak. Előző VDP-vel foglalkozó fejezetben pontosabban leírom, de ismétlésként itt is megemlítek pár részletet.
Ha végig akarod olvasni a VDP-vel foglalkozó anyagot kattints ide: Írjunk játékot SEGA MEGA DRIVE konzolra - 6. VDP használata

Síkok és tulajdonságaik:

Síkok

Az ábrán is látható 4 alap sík létezik: A  és B síkok, Ablak sík és Sprite sík. Az AB síkok mindegyike képes a hardveresen görgetni, jobbra-balra és fel-le, általában a grafika hátterét és előtereit helyezik ezekre a síkokra. Az ablak sík egy olyan sík, amelyet általában a játék tájékoztató felületének használnak, jellemzően a képernyő valamelyik oldalán fixen helyezik el. Marad a sprite sík, amelyeken az animált és sima sprite grafikát helyezik el, ezen a síkon bármilyen pozícióban képesek vagyunk egy-egy grafikai elemet elhelyezni és akár mozgatni. Fontos még megemlíteni a háttér színt, amely ugyan nem egy sík, de még is nevezhető annak, mivel minden átlátszó réteg mögött ott lesz mint alap háttérszín sík.

Egy robbantott ábrán még tovább részletezhetőek lennének az egyes síkok:

Sík 2

Ha nagyon precízek vagyunk és figyelembe vesszük az összes megkülönböztethető síkot illetve majdnem az összeset mert az ablak sík nincs rajta, akkor a fentebb látható ábrán sorakozó és prioritásukat tekintve is sorba rendezett képernyő rétegződést alapul vehetjük a jövőben készített programjaink során. Fontos, hogy ahogyan a rétegződés is látszik, ha nem átlátszó egy-egy réteg, akkor simán kitakarja a mögötte lévő síkon vagy síkokon elhelyezett grafikát. Ezt tartsuk mindig szemelőt. A Sprite-oknál még tovább lehetne ezt bonyolítani, mert az gyes sprite elemeknek külön prioritásuk is van, szóval ezt az ábrát csak a megjeleníthető képernyő síkokként vegyük alapul a sprite-okat majd egy későbbi írásomban vesszük át.

Mint feljebb az első képen látható a Jurassic Park című játékot síkokra bontottam, így szemléltetve a lényeget. Vegyük ezt most elő és elemezzük ki, nem túl hosszasan. Figyeljük meg, hogy nem ABC sorrendbe értelmeződnek a síkok, tehát itt az első sík nem az A sík lesz.

Háttérszín sík


B sík
B sík

A sík
A sík

Sprite sík
Sprite sík

És egyben mind a 3 alkot egy képet
Jurassic Park

Ez a játék nem használ ablak síkot, így azt nem is tudtam leválasztani a kepéről. Egyébként elég kevés játék használja, egyszer majd lehet foglalkozok vele kicsit részletesebben is, de ebben a fejezetben erre nincs szükség. Fontos tehát az hogy jól értelmezzük az egyes síkok prioritását, ehhez még plusz segítséget nyújthat a következő kis leírásom:
Szín sík - mindig ez a sík látszik, ha feltételezzük, hogy az összes sík egy pontban átlátszik.
B sík - addig látszik, ameddig az A sík grafikai rajza ki nem takarja, ha van átlátszó része a B síknak és abban a pontban a felette lévő összes sík sem takarja vagy azok is átlátszóak, akkor a Szín sík lesz látható.
A sík - addig látszik ameddig a Sprite sík egyes, részletes vagy akár teljes síkot takaró grafikai elemei el nem takarják, vagy ameddig a Sprite elemek átlátszóak. Ha A sík egy területe átlátszó és az alatta elhelyezkedő B sík ugyan abban a pontban nem takar, akkor a Szín sík válik láthatóvá.
Sprite sík - a Sprite sík a legfelső sík, ha az egyes elemeinek prioritásától eltekintünk, akkor mondhatni ez a legfelső sík, tehát ez mindig látszik és az alsó síkok láthatóságai függnek ettől a síktól, a Sprite síkon elhelyezett grafikai elemek láthatóságát más nem befolyásolja.
Ablak sík - ez egy olyan sík, amit most nem vesézünk ki, mert ez a sík gyakorlatilag minden síkra hatással van, független a
a méretétől és grafikai tartamától.

A mostani bejegyzésem kapcsán készítettem egy olyan kis programot, amely az A és B síkokat mutatja be, vagy is mind két síkra kirajzolunk egy képet, majd az A síkot egyszerűen egyfolytában toljuk jobbra-fel irányba, hogy ezzel i szemléltessem a két különálló síkot.

A síkra tervezett kép
A sík

B síkra tervezett kép
B sík

A két képet kirajzolva A és B síkra egymást fedik, a fekete helyeken a kép átlátszó, tehát ha az egyik képet a másik felett elmozdítjuk, akkor az alsó rétegen elhelyezett kép is látszani fog, mind addig, ameddig a felső képen nincs valami színes grafikai rajzolat. A képek bal felső sarkában látható bevágás a VDP memória és maga a SEGA MD alap működésének kijátszása végett került megszerkesztésre. Ugyan is alapból a SEGA VDP memóriájának nullás indexén szereplő grafika az alap háttérgrafika, így ha azon bármilyen pixeles rajzolat van, az a teljes képernyőre kihat és ismétlődően teleszemeteli a minta a képet. Alapból erre az előző részben írtunk egy kis szösszenetet, de most a könnyebb érthetőség miatt, ezt kivettem és a képet a 0. indextől írjuk be a VDP memória területre.

A legjobb szemléltetésre a következő képet tudnám bemutatni:

8x8 pixel rács

A képen az látszik, hogy az egyes grafikai elem vagy elemek hogyan helyezkednek el egymás mellett, egy kis kocka 8x8 pixelt tartalmaz, ebből látható mennyiség pedig a SEGA esetében, mondjuk a 320x224-es felbontást választva 28x40db 8x8-as kocka. No ebből a 0. index-ű vagy is a legelső kocka az alap háttérgrafikai minta, ha ez az első elem üres, vagy is nem tartalmaz semmilyen rajzolatot, akkor a képünk grafikai háttere átlátszó lesz. Az indexelést soronként, azon belül pedig elemenként kell elképzelni, tehát az első sor első elemének index-e 0 lesz (mert ez is számít), majd a következő 1,2,3,4,5...,1119-ha a teljes képet vesszük. Belátható, hogy a grafika elemeinek megcímzésekor az egyes minta index-ét kell vegyük. Az eredmény meg maga a minta lesz. (Nem tudom mennyre sikerült ezt értelmesen leírnom, ha nem világos kérdezz a fórumban, és kifejtem másként.)

DPTP 5. demo program
DPTP 5. demo program

A fentebb látható kép már a megírt demo program működését mutatja, látható, hogy a B sík fixen van kirajzolva és az A síkot mozgatjuk jobbra-felfelé. A program elég összetett, de remélhetőleg az előző bejegyzéseim végigkísérése után érthető lesz minden. A programban összességében csak néhány új dolog van, ezek részletezve a következőek:
1. két képi állomány, amelyek az A és B síkokra rajzolunk ki, ezeket a DATA mappába találjuk, mindegyik kép 3 részből áll:
    a, képek grafikai elemei
    b, képek grafikájának térképe
    c, képek színei (ez utóbbi a szinpalettak.asm fájlban van, összevont állapotba)

Fájlok

2. memorai.asm fájl, amely a dinamikus memóriánkat engedi használni, ami összességében 64Kb, de ebből csak az X és Y tengelyeknek foglalunk le, változónként 2-2byte-hosszt

RAM

3. A és B síkok kezelése és színpaletta váltás

A sík kirajzolása

4. megszakításban kezelt A sík mozgása

Megszakításkezelés

Úgy gondolom ehhez a részhez nagyon többet nem is tudok hozzátenni, remélem akiben ég a vágy, hogy ezen régi platform konstrukció programozásával töltse el a nagy csapásként érkezett koronavírus miatti hosszúra nyúló karantén idejét, annak nagy segítségére lesznek a bejegyzéseim.

Mindenkinek sok sikert és kitartást kívánok a projekt megírásához.
A projekt fájlt innen tölthetitek le: DPTP_oktato_5.zip

Az eddigi megjelent BLOG bejegyzéseim a témában:
Írjunk játékot SEGA MEGA DRIVE konzolra - 9. AB síkok kezelése (itt vagy most)

Természetesen ezen cikk végéről sem maradhat le azon link mutatója, ahol feltehetitek kérdéseiteket a témában: Írjunk játékot SEGA MEGA DRIVE konzolra

Az erő legyen veletek és kitartást ebben a nem könnyű és veszélyes hetekben, hónapokban.


DPTP motor: GDPR infomráció!
2018 Május 25.-től hatályba lépett adatvédelmi szabályzatról itt olvashatsz bővebben: Adatvédelmi tájékoztató
Az oldal további használatához el kell olvasnod és fogadnod az adatvédelmi és cookie-k használatával kapcsolatos tájékoztatonkat.

Elfoadom!
Nem fogadom el!