Welcome, Guest. Please login or register.


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

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #270 on: 2013.October.27. 14:49:45 »
Quote from: Z80System
Hát annó, mikor ott voltál, hogy 15 éves vagy, van egy EP -d, és az egyetlen doksid hozzá a kezelési útmutató (ami tulajdonképp egy EP BASIC tankönyv :)), de te játékot akarsz írni, és mi az a "gépikód", meg "hexa", és egy elszállás után percekig töltöd vissza az ASMON -t, akkor elég undok dolog tudott lenni meglévő programokból barkóbázni kifele az LPT szinkron értékeinek jelentését, hogy képes legyél egy saját képet bekapcsolni ...
Általában elég az "EXOS 2.1 Műszaki Leírás"-ból másolni. :)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #271 on: 2013.October.27. 14:51:00 »
Quote
Általában elég az "EXOS 2.1 Műszaki Leírás"-ból másolni. 
Ha tudod hogy létezik, és ha tudsz egyet szerezni ...
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #272 on: 2013.October.27. 14:52:57 »
Quote
az LPT hosszát 312-ről 262 sorra kell csökkenteni (szoftver változtatás). 



Hát lehet, hogy technikailag a hardvereseknek mindez bágátell, de az alkalmazásosok elmorzsolnának pár "imát" mikor ezt meghallanák ...
Z80 System

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #273 on: 2013.October.27. 14:57:37 »
Quote from: Zozosoft
Igen, meg úgy általában a programok 99%-a. Geco CPC átirataiban van olyan, hogy kellett a 300Hz-es CPC megszakítás is, így több videó megszakítás lett egy LPT-n belül.
Illetve az én átirataim jelentős részében. :oops: Azonban sokszor így is egyszerre csak egy megszakítást használtam az LPT-ben, mert különben nehéz megállapítani, hogy a 6 közül éppen melyik történt. :) Tehát a program minden megszakításnál módosítja az LPT-t a következő megszakítás pozíciójának megfelelően.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14775
  • Country: hu
    • http://enterprise.iko.hu/
Re: Grafikai trükkök
« Reply #274 on: 2013.October.27. 15:01:50 »
Quote from: IstvanV
- az LPT hosszát 312-ről 262 sorra kell csökkenteni
Hmmm, a 28 karaktersoros EXOS kép (status+27 sor) az 252 sor, még pont belefér. Lehet, hogy erre is kalkuláltak?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #275 on: 2013.October.27. 15:03:12 »
Quote from: Z80System
Ha tudod hogy létezik, és ha tudsz egyet szerezni ...
A hiányában nehéz lehetett a gépi kódú programozás (a csak EXOS-on keresztül történő hardver kezeléstől eltekintve, de akkor is kellene ez a könyv az EXOS hívások dokumentációjához), mert ebben volt található a DAVE és NICK programozásának a leírása is. És még ebben a könyvben sem volt információ a hardver szintű billentyűzet kezelésről. :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14775
  • Country: hu
    • http://enterprise.iko.hu/
Re: Grafikai trükkök
« Reply #276 on: 2013.October.27. 15:04:03 »
Quote from: Z80System
Ha tudod hogy létezik, és ha tudsz egyet szerezni ...
Ez mondjuk nem a Nick hibája. A fejlesztők példaértékű dokumentációt csináltak a gép minden porcikájáról.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #277 on: 2013.October.27. 15:07:38 »
Quote from: Zozosoft
Hmmm, a 28 karaktersoros EXOS kép (status+27 sor) az 252 sor, még pont belefér. Lehet, hogy erre is kalkuláltak?
Így azonban csak 10 sor marad a VBLANK+VSYNC-re, ami ugyan elég lehet (különösen fekete kerettel), de nem szabványos, illetve az NTSC TV-ken gyakran nem lett volna látható minden sor, mert a "szabványos" látható függőleges felbontás interlace módban csak 480 (2 * 240) sor.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #278 on: 2013.October.27. 15:19:45 »
Quote
A hiányában nehéz lehetett a gépi kódú programozás 


Idővel persze megtudtuk, és szereztünk is ... de addig tömény horror. Persze akkor még ezt nem úgy éltük ám meg. Nem mondom, nagy fellélegzés volt a doksi, meg a cartridge -os ASMON, de addig is minden pixelnek, meg minden egyes új infónak vagy puzzle darabkának örültünk mint majom.
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #279 on: 2013.October.27. 16:16:25 »
Most én úgy írtam meg az LPT beváltómat, hogy van egy bool falg -je hogy forced vagy nem forced,

ha nem forced, akkor betolja a 0x82 -t, 0x83 -at a címmel és mást nem csinál, de ha forced, akkor 0x83 -ra beírja a címkomponens + 64, aztán a címkomponens + 64 + 128 -at is ...

forced esetben jól működök,

nem forced esetben meg az egész kép border lesz.

Nem forced esetben sem csak simán a címkomponenseket kell kiírni, vagy csak valamit elrontok ?
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #280 on: 2013.October.27. 16:26:33 »
Quote
In normal use these bits are both set to one.

Jaaa ... azt írja az EXOS, hogy 1 -re kell őket állítani normálnál ...
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #281 on: 2013.October.27. 16:43:36 »
Na most mondja meg nekem valaki, hogy miért nem jelent az LPT újratöltésének módja időzített atombombát nem forszolt reload esetén ...

Az egész forszolás ugye azért lett kitalálva, hogy egy invalidus memóriát szkennelő NICK -et ki lehessen billenteni az elszálltságból.

Ha ilyen nem lehetne, akkor nem is kéne forszolás.

Az egyik mód, ahogy a NICK invalidus memóriát szkennelhet, az az, hogy a Z80 nem forszolt LPT címváltáskor beírta a 0x82 -es portot, és mielőtt beírná a 0x83 -mast is, a NICK pont reload -os LPB -t kezel, és újratölti a félig beírt címet.

Ezt írják is, hogy videó megszakkal kerüljem el.

Nade mi van, ha a programom nem frame -es, és nem is tudom hány frame -mel megy, sőt mondjuk 0 és 5 frame között változik az ideje.

A videómegszak megtörténtekor ( korábbi megállapodás szerint az a reload -ot jelölte egyben ) nem írhatom egyből át az LPT címeket nem forszolt módon, mert a frame végén a NICK be fogja tölteni, az én programom meg lehet 3 frame -ig fut.

Tehát backbufferbe le kell generáljam a képet, majd csak azután írhatom be az új LPT -t (ami a backbuffer -emre mutat), és majd annak a (mondjuk épp harmadik) frame -nek a végén fogja a NICK így újratölteni.

Igen ám, de mivel a programom ákármennyi ideig is tarthat, ezért bármikor lehet a fél beírás miatt NICK halál.

Tehát vígan fut a programom, majd egy pillanatban mikor pont úgy jön ki, akkor a NICK megbolondul, amiből egy forszolt írás kihozná, de hát az egyrészt ronda, ráadásul nem is tudom mikor bolondult meg ...

Magyarul egy időzített, kivédhetetlen NICK elszállás lebeg a programom feje fölött végig ... nem ?

Nincs megoldás ?
Z80 System

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1341
  • Country: hu
  • Stray cat from Commodore alley
Re: Grafikai trükkök
« Reply #282 on: 2013.October.28. 07:50:31 »
Nem értem ezt az aggódásodat az LPT elszálláson. Ha a programod nem "frame-es", akkor egy sima osztott állapotgéppel kezeled a szinkronizációt. Ahogy javasolják, oda teszel egy VINT-et, ahol biztonságos az LPT váltás. A megszakításkezelő megvizsgál egy flaget, hogy a rajzolásod elkészült-e már? Ha úgy találja igen, akkor átírja az LPT mutatót, és jelzi egy flagben, hogy a rajzolás kezdje meg a másik buffer feltöltését. Ha az aktuális puffer rajzolása kész, a rajzoló beállítja a flaget és vár, hogy a videómegszakítás jelezze, mikor folytathatja a másik bufferrel. Ha jól gondolom, a két flag akár egy is lehet - mondjuk egy kijelölt cím alsó két bitje - és csak sima növelgetéssel is lehet helyesen változtatni. De ezt jobban végig kellene gondolni.

A veszély persze valószínűleg tényleg megvan, dehát jól sikerült pointer aritmetikával olyan "memória szántást" lehet csinálni, hogy ihajj, aztán mégis használjuk.

U.I.: Egyébként meg úgy kell igazítani az LPT-ket, hogy a címük alsó bájtja mindig azonos legyen, így elég csak egy port írás a váltáshoz, és nem is tud elkalandozni. Szerintem Zozo - vagy valaki más nagy tapasztalatú guru - ezt már írta is valamelyik témánál.
« Last Edit: 2013.October.28. 07:59:16 by ergoGnomik »

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #283 on: 2013.October.28. 08:54:57 »
Quote
Nem értem ezt az aggódásodat az LPT elszálláson.
Nagyon nem aggódom, de azért tudni szeretem mi a stejsz, és nem is tetszene ha tényleg úgy lenne, ahogy problémázok rajta.


Quote
Ha a programod nem "frame-es", akkor egy sima osztott állapotgéppel kezeled a szinkronizációt.

Na ez túl absztrakt volt, nem végeztem progmatot, szal ez nekem dzsiberis.


Quote
Ahogy javasolják, oda teszel egy VINT-et, ahol biztonságos az LPT váltás.

Hát az LPT váltás nagyjából mindenhol biztonságos, ha megszakhoz van szinkronolva, nem? De maradjunk a végénél, mert azt alkudtuk ki Zozo -val.


Quote
A megszakításkezelő megvizsgál egy flaget, hogy a rajzolásod elkészült-e már? Ha úgy találja igen, akkor átírja az LPT mutatót, és jelzi egy flagben, hogy a rajzolás kezdje meg a másik buffer feltöltését.

Nem oda buda. Ha arra várok, hogy a megszakkezelő írja át a címet (aki mellesleg figyeli hogy már kész -e a rajzolás, ahogy írod), akkor lemaradhatok egy frame -ről.

Tehát a megszakítás (és az általa kezelt flag) csak azt jelzi a főprogramnak, hogy a NICK már betoltotte a főprogram által korábban megadott új LPT címet, ezért már a főprogram pusztíthatja az előző LPT által mutatott képet.

Ha megszakra várnék az átírással, akkor valóban biztosan stabil lenne, de mikor 2.5 frame alatt megvan egy kép, akkor 3/4 frame határon nem töltődne be a cím a NICK -be, hiszen nem írtam bele, mert várok a megszakra, hanem a megszaknál írnám be a 3/4 frame határon, és majd a 4/5 frame -nél töltené csak be a NICK.

Ha meg nem várok megszakra a beírással, ahogy most van, hanem csak a regi kép lebontásával várok a megszakra, akkor pedig előfordulhat NICK elszállás ... sztm.
« Last Edit: 2013.October.28. 09:11:49 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: Grafikai trükkök
« Reply #284 on: 2013.October.28. 09:20:09 »
Quote
A megszakításkezelő megvizsgál egy flaget, hogy a rajzolásod elkészült-e már? Ha úgy találja igen, akkor átírja az LPT mutatót, és jelzi egy flagben, hogy a rajzolás kezdje meg a másik buffer feltöltését.

Mondjuk egy nekem nem nagyon tetsző módon lehet hogy megiscsak jó amit mondasz ...

Ha a megszakot nem az LPT legvégéhez, hanem kicsit korábbra teszem (csak az a baj, hogy elég sok ídőt visz a szinkron, azt meg nem tudom szabad -e darabolni), szóval csak 1-2 pixelsorral korábbra tenném, mint most a legvége,

akkor ott valóban el lehetne kapni a megszakkal azt a pillanatot, ahol már kész van egy 2,95 frame -es lefutás is, és a rendelkezésre álló 1-2 pixelsoron még stabilan be lehetne váltani az új LPT -t ...

Csak mégse tetszene ha csak ezt lehetne ...

Meg egyáltalan ... lehet a szinkront így megbontani ? Hogy a szinkron utolsó előtti raszterében legyen egy megszak rakva ?
« Last Edit: 2013.October.28. 09:27:48 by Z80System »
Z80 System