Welcome, Guest. Please login or register.


Author Topic: Grafikai trükkök (Read 211119 times)

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1346
  • Country: hu
  • Stray cat from Commodore alley
Re: Grafikai trükkök
« Reply #300 on: 2013.October.29. 19:37:15 »
Quote
De egyébként ilyeneket nem kell priviben küldjél, ez abszolúte a topik sztm. Nem ?
Lehet, hogy a témába vág, de ha rajtad kívül valakit érdekelt volna, akkor kérdeznek mások is. Vagy magyaráznak. Például IstvanV. Miután nem vetett hullámokat a kérdés, gondoltam nem terhelem vele a topic-ot.

Quote
A video is valszeg érdekelhet sok embert.
Akkor itt van a link: Poem for bugs by LFT

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #301 on: 2013.October.29. 20:00:07 »
Quote
gondoltam nem terhelem vele a topic-ot.
Hát lehet hogy csak én fejlődök lassan a "fórumozzunk okosan" kérdéskörökben, de a fórum sztm. azt szereti, ha terhelik.

Én legalábbis biztosan azt szeretem.

Ha minnél többen, minnél részletesebben fejtenek ki rajta bármit.

A fórum úgysem lesz, nem is lehet egy wiki oldal, épp azért, mert fórum.

Épp azért mert aki oda ír, az bötű szerint akarja látni ott az állítmányát az alanyokkal együtt.

A wiki -ket szerkesztik. Szépek lesznek, összefogottak, jól struktúráltak. A fórumok pedig szerkesztetlen hozzászólások gyülevészkedései.

És igen, egy olyan minimális szintig el lehet menni a rendezésében, hogy ha arról, amiről most írok egy kisebb szál kibontakozik, akkor azt át lehet metszeni a "fórumozzunk okosan" vagy az "általános csevej" rovatokba innen.

De ezzel szerintem vége. Az nem fórum, ha én a hozzászólásom előtt végig kell gondoljam, hogy a hsz -em most struktúrailag hova is illik be ... Ez most azért itt van, mert itt merült fel a dolog.

Ezzel én most terhelem a topikot ? Rosszul fórumozok ?

Pláne te, az állapotgép kérdéskörrel. Az állapotgép ugyan szintén nem grafikai trükk, és ha lesz alszál belőle, lehet csinálni neki állapotgép topikot.

De ez lenne a megoldás ? Örökké lattolgassam, hogy mi a privi téma, és mit tolhatok be oda, mégha már témaidegen is, de egyszer épp most oda kapcsolódik ?
« Last Edit: 2013.October.29. 20:49:50 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #302 on: 2013.October.29. 20:25:02 »
Quote
Akkor itt van a link: Poem for bugs by LFT

11:23 -tól az is nézzen meg 10 másodpercet, akit nem érdekel ... :)
Z80 System

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: Grafikai trükkök
« Reply #303 on: 2013.October.29. 20:29:26 »
Quote from: Z80System
11:23 -tól az is nézzen meg 10 másodpercet, akit nem érdekel ... :)
:ds_icon_cheesygrin:

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: Grafikai trükkök
« Reply #304 on: 2013.October.29. 20:34:11 »
Quote from: ergoGnomik
 Vagy magyaráznak.
Vagy figyelnek :-)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Grafikai trükkök
« Reply #305 on: 2013.October.29. 21:00:45 »
Quote from: Z80System
Persze az is lehet, hogy szerencsétlen EP -nek ez volt a legkisebb gondja ... hogy jujj, mi lesz akkor, ha programok százait vagy ezreit kell majd NTSC -síteni, az amerikai piacra ... úgy gondolt rá inkább, hogy "bárcsak ez lenne már az egyetlen problémám ..."

Igazabol ez pl PC-nel is igy van, ott sem szokas kozvetlenul a VGA mindenfele regisztereit irogatni (most foleg meg a DOS-os idoszakra es a sima - nem 3D gyorsitott genya-ize - videokartyakra gondolok), pedig azzal ott is lehet szinkron jelekbe beavatkozni stb. EP-n amugy is volt par hajmereszto dolog, amit egy cikkben is olvastam, ahol "az EP nem kompatibilis az EP-vel" es kb arrol volt szo, hogy egyesek olyan nagy ivben tettek a gep felepitesere, hogy azt hittek, egy gepen megtudvan a video memoria eppen aktualis cimet, az minden gepen tok ugyanott van, aztan ok voltak megsertodve, hogy nem :) Tehat, vagy kozvetlenul akarunk a hw-hez piszkalni, de akkor bizony elfogadjuk, hogy ennek lehetnek akar kompatibilitasi (akar jovobeli is, lasd NTSC verzio megjelenhetett volna szeles korben) problemakat, vagy inkabb ugymond az OS-re bizzak, es nem maguk akarjak az egesz LPT-t felepiteni legalabbis. Persze abban is vagyon igazsag, hogy az igazan "meresz" trukkok nyilvan igenylik a "meresz" huzasokat ...

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #306 on: 2013.October.29. 22:34:24 »
Quote
gondoltam nem terhelem vele a topic-ot.

Na, akkor visszahozom ide a témát, remélem nem bánod, ha mégis, akkor mondd, és többet ilyet nem csinálok.

Először is szétválasztandó a dolog az én érdeklődésem szerint 2 dologra.

Az egyik az állapotgépes kérdés, amilyen módszerrel te a példádat lehoztad a levélben, ez sztm. a kevésbé fontos része a dolognak, én pld. más változókkal oldom meg a dolgot, és ez a konkrét állapotokra bontás az eredeti problémámhoz nem szorosan kötődik, csak részlet.

A második rész az eredeti probléma, és abban valóban van változás.

Az eredeti probléma felvetésem az volt, hogy akkor írhatom be az új LPT címet (mikor már a rajzolásom kész van és) mikor nem vagyok pont abban a pillanatban mikor a NICK beolvassa a címet, viszont a cím beolvasása a NICK által, és ezáltal a tényleges képváltás majd csak ez után, az alsó borderem alatt, a teljes kép végekor fog megtörténni, ekkortól van átkapcsolva a nick az új LPT -re, és ekkor kezdhetem csak pusztítani az előző kép tartalmat.

Én a jelenlegi implementációm szerint "hibásan" működök, mert amikor a képrajzolásom készen van, akkor főprogramból direktben semmit nem nézve (tehát nem biztonságosan) bevágom a NICK -be a címet, aztán várok a megszakra. A NICK majd beolvassa a kép legalján a címet, mellesleg ugyanott generál egy megszakot is, ami szól a főprogramnak, hogy mehet tovább és bonthatja az eddig megjelenített képet.

A Zozo által javasolt módszer az, ha a videomegszakot az LPT reload mellé tesszuk, igy a programom kap információt arról, mikor már az LPT lecserélődött.
Igen ám, de ahhoz előtte be kell írjam, hogy lecserélődhessen, viszont arról meg nincs infó, hogy mikor írhatom be biztonságosan.
Tehát ha az LPT reload -ot és a megszakot ugyanoda teszem, akkor mire megjön a megszakom a képváltásról, addigra lekéstem a beírásról.

Eredeti véleményedben az állt, hogy a videómegszakot oda rakhatom, ahol csak az stabilan lehet LPT címet váltani, és abból írjak LPT címet.
Ez így nem igaz, mert a képernyő látható részéről is lehet LPT címet váltani biztonságosan, de az előző (kintlevő) képet még nem kezdhetem lebontani, mindaddig míg nem olvasta be a NICK a címet a kép alján.
A priviben a megszaknak azonban már ki volt jelölve a helye a látható kép és az alsó border határára. Így már valóban jó lehet, bár erre csak a privi olvasgatása közben jöttem rá. Hogy azért mégsem kell teljes egészében megvárni a beolvasást a kép végén, elég csak az alsó border tetejéig várni, és ha ide tesszük a megszakot, akkor két legyet üthetünk vele egy csapásra, mert itt egyrészt biztonságosan írhatjuk az LPT címet, másrészt ez jelzési pontnak is jó a kirajzolásnak, hogy ennél tovább már nem kell várnia, mert innentől a border van, vagyis a szinkron LPB -k, amiket ugysem módosítunk a kirajzolással.

Magyarul mikor készvagyok a képpel (éppúgy, ahogy eddig, és az most mindegy, hogy milyen állapotgéppel, vagy milyen biteken jelzem ezt melyik program szálnak), akkor az LPT címet nem szabad beírnom egyből, úgy ahogy most, hanem várnom kell időzítésre a video megszak formájában.

Ezt a video megszakot azonban nem rakhatom a reload mellé, hisz a megszak érkezésekor az új LPT címe még nem lesz beírva, leghamarabb a video megszak megérkezése pillanatában kerülhet az új LPT cím beírásra. Ha pedig a reload és a video megszak egy LPB -ben van, akkor ponthogy a reload után fog csak megérkezni a video megszak.

( Hacsak nincs erre valami okosság ... Zozo, ha egy LPB -ben van LPT reload és video megszak is, akkor melyik történik meg előbb, a video megszak, vagy hogy a NICK beolvassa a címet ? )

Na tehát ha nincs erre automatikus okosság akkor a megszakomat nem rakhatom a reload mellé közvetlenül, hanem valamennyivel korábbra kell tennem, mikor még a video megszak és az LPT reload között van időm időzítetten beírni az LPT címet. Én először tévesen azt gondoltam, hogy mivel a kintlévő kép bontásával úgyis várni kell a reload - ig, akkor max 1 pixelsorral lehet (érdemes) korábbra rakni a megszakot a reloadnál. Ez mindenképp hulyeség. Valójában a video megszakot az LPT végén lévő reload és az alsó border kezdete között (tehát a teljes alsó borderen belül) bárhova lehet rakni, hisz azon a teljes részen a látható képünk kirajzolása már befejeződött, és igaz lesz, hogy egy megszakkal mindkét legyet üthetjuk.
« Last Edit: 2013.October.30. 00:34:19 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #307 on: 2013.October.29. 22:51:30 »
A legeslegjobban az tetszene, ha Zozo azt mondaná végül, hogy ha egy LPB tartalmaz LPT reload -ot, meg tartalmaz video megszakot is, akkor először megérkezik már a z80 -hoz a video megszak, és csak UTÁNA fog valami legalább pár utasításnyi idővel a NICK által ujratöltödni az LPT cím.

Akkor ez a gondolatmenet továbbra is igaz és érdekes maradna számomra, DE minden maradhatna úgy ahogy eddig volt a programomban, tehát a reload és a megszak ugyanott maradhatna, csak a rajzolásom végeztével nem szabadna LPT címet írnom, hanem egyből el kellene kezdjek várni a megszakra, és csak a videomegszakom legelején, vagy a nagyon rövid video megszakom visszatérte után válthatnám az LPT címet.

Vagyis a módosítás csak annyi volna, hogy atrakom a tényleges LPT beváltást a megszak előttről a megszak utánra.

Ha Zozo viszont azt mondja, hogy nem a megszak jön meg előbb, akkor a megszakot is át kell helyezzem, az utolsó látható LPB -be (vagy bárhova az alsó borderen). És akkor mély szomorúság fog eltölteni ... :)
Z80 System

Offline geco

  • EP addict
  • *
  • Posts: 7223
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #308 on: 2013.October.29. 23:36:11 »
Miért ne adhatnál új címet az LPT-nek, amikor elkészült a rajzolásod?
Csak a törlés legyen a border elérése után.
« Last Edit: 2013.October.29. 23:56:41 by geco »

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #309 on: 2013.October.29. 23:59:00 »
Hát mert a cím adása 2 lépésből áll. 0x82 és 0x83 hexa portot kell írni. Ebben a sorrendben. És ha video szinkronizálás nélkül írod ezeket egymás után, és minden összeesküszik ellened hiába is csinálod a Zozo féle gyors out szekvenciával, elméletileg akkor is lehet hogy pont, hogy akkor írod be az elsőt mikor a NICK kiolvassa MINDKETTŐT, és a 82 -ben már az új érték van, de a 83 -ban még a régi. Ekkor a NICK értelmetlen címet tölt újra, ahol elvben bármilyen hülyeség is lehet a memóriában, és széteshet a kijelzés, mely magától többé helyre nem áll.
Z80 System

Offline geco

  • EP addict
  • *
  • Posts: 7223
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #310 on: 2013.October.30. 00:14:18 »
A rajzolásod nem a reload előtt ér véget?
Sokkal egyszerűbb, ha csak az egyik portot írod, mondjuk csak a 82-est, akkor a két LPT-dnek 4k-s range-en belül kell lennie, ennyi a megkötés, vagy, ha egy LPB-ben van megoldva a játék képernyője, akkor elég csak a képernyőd címét változtatni az LPB+6-on

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #311 on: 2013.October.30. 00:31:50 »
Quote
A rajzolásod nem a reload előtt ér véget?


Elvben beszélünk, tetszőleges és változó idejű kirajzolást feltételezve. Mint pld. egy 3D render, ahol frame -ről frame -re változhat a kirajzolási idő attól függően, hogy hova nézel.



Quote
Sokkal egyszerűbb, ha csak az egyik portot írod, mondjuk csak a 82-est, akkor a két LPT-dnek 4k-s range-en belül kell lennie, ennyi a megkötés,



Egy 4K- ra align -olt 4K -s range -en belül, igen.


Megszívlelendő tanács, símán lehet, hogy alkalmazni fogom, de szintén nem képvisel elvi megoldást.



Quote
ha egy LPB-ben van megoldva a játék képernyője, akkor elég csak a képernyőd címét változtatni az LPB+6-on



Igen, de egy valamire való EP játék esetében ezt a luxust nem engedhetjük meg magunknak. Ha másért nem, akkor egy színátmenetért kell a soronkénti LPB felbontás.
Z80 System

Offline geco

  • EP addict
  • *
  • Posts: 7223
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #312 on: 2013.October.30. 00:42:02 »
Jaaa, én azt hittem, gyakorlati problémánál járunk :)
Jó, hát render se kell hozzá, bármilyen feltétel megváltozhat, hogy a rajzolási idő változzon, azt hittem, hogy 50 fps-nél járunk.
Hát igen, egy kis színátmenet sosem árt :D , amúgy még azon is gondolkoztam, hogy jól jöhet sebességnövelés érdekében is, pl egy 40 széles képernyőn minden sor kezdőcíme 80h-val eltolva az előzőhöz képest, igaz sosem használtam még, és eléggé pazarló.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #313 on: 2013.October.30. 00:49:46 »
Quote
Jaaa, én azt hittem, gyakorlati problémánál járunk
Jó, hát render se kell hozzá, bármilyen feltétel megváltozhat, hogy a rajzolási idő változzon, azt hittem, hogy 50 fps-nél járunk.
50 FPS stuffokat írok, de valójában elvi ez a téma, az érdekel hogy lehet megkötések nélkül, 100% korrekten megcsinálni.

Illetve, ha belegondolunk ... akkor mégsem elvi. Ugyanis 50 FPS cuccnál nyilván nagyon be lesz cipőkanalzva minden a frame -be. Éppenséggel lehet hogy pont néha átcsúszik majd tizedpixelsort a frame -en ... és pont ez a határon lebegés a veszélyes ugye ...


Quote
Hát igen, egy kis színátmenet sosem árt , amúgy még azon is gondolkoztam, hogy jól jöhet sebességnövelés érdekében is, pl egy 40 széles képernyőn minden sor kezdőcíme 80h-val eltolva az előzőhöz képest, igaz sosem használtam még, és eléggé pazarló.

Én amikor csak lehet ezt használom, csak éppen 100H -val, nem 80H -val. Igy ugye magasabb byte Y koordináta, alacsonyabb byte meg X. Automatikus a címszámítás per byte.

A közöket pedig jól ki lehet tölteni sprite adattal.
« Last Edit: 2013.October.30. 00:59:09 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #314 on: 2013.October.30. 00:53:37 »
Közben még egy kis adalék arra az esetre, ha Zozo majd azt mondja, hogy a címbeolvasás előbb van, mint a megszak:

Akkor ha így tároljuk le az LPT -t:

hasznos adat
vég szinkron
kezdő szinkron <- reload

akkor a két borderünk "egyben lesz", magyarul a reload elött a megszak jöhet a teljes (alsó/felső) border alatt, nem pedig csak az alsó alatt, ahogy a "hagyományos" LPT layout -nál.
Z80 System