home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 46 / Flop_Magazin_46_2003_04_13_Raster_cs_Side_A.atr / gtiappcz.tch < prev    next >
Text File  |  2023-02-26  |  10KB  |  42 lines

  1. Grafick⑦ mdy 9++ a 10++¢Piotr Fusik (Fox/Taquart)¢<fox@scene.pl>¢P②eklad: Radek t❎rba (Raster/C.P.U.)¢¢Tento text je nedoslovn⑨m p②ekladem anglick⑦ho p②ekladu p
  2. vodn    ho ⇨l⇧nku publikovan⑦ho v polsk⑦m magaz    nu "Atarynka", ⇨    slo 2/2002. Fox mi ho osobn❎ poslal, əe mohu ud❎lat ⇨esk⑨ p②eklad pro Flop. Kladl mi na srdce, abych p②edt    m, neə budu text p②ekl⇧dat, nejd②    ve princip jeho speci⇧ln    ho grafick⑦ho mdu pochopil. To se mi na③t❎st     poda②ilo, takəe hur⇧ na ⇨eskou verzi. ¢¢LewiS/AiDS v ⇨l⇧nku v magaz    nu Atarynka 1/2002 p    ③e: ¢Nejpouə    van❎j③    m grafick⑨m mdem je "Konop
  3. v md", kter⑨ poprv⑦ pouəil Konop/Shadows v demu "Asskicker". Tento md byl pouə    v⇧n l⑦ta a pravd❎podobn❎ neexistuje jin⑨ md, kter⑨ by byl tak rychl⑨ s podobn⑨mi parametry (⇨tvercov⑦ body, mal⇧ obrazov⇧ pam❎④, 16 odst    n
  4.  [nebo jin⑨ GTIA md]).¢¢LewiS se m⑨lil, nebo④ existuje podobn⑨ md s je③t❎ lep③    mi vlastnostmi neə v⑨③e uveden⑨ "Konop
  5. v" (zn⇧m⑨ t⑦ə jako 9+). Tento nov⑨ md byl nazv⇧n 9++ a Fox ho pouəil nap②    klad v super demu Numen.¢¢V⑨hody nov⑦ho mdu 9++¢----------------------¢1. Je rychlej③     neə md 9+, p②itom v③ak nepouə    v⇧ pr⇧zdn⑦ mezi②⇧dky.¢2. Display List je zna⇨n❎ krat③     (kaəd⑨ grafick⑨ ②⇧dek je tvo②en pouze jedinou DL instrukc    ).¢3. Display List obsahuje pouze jednu jedinou definici obrazov⑦ pam❎ti na za⇨⇧tku, takəe nap②    klad pro pot②eby metody "st②    d⇧n     obrazovek" nen     nutn⑦ m    t dva DListy, ale sta⇨     m❎nit jen tuto jednu definici v jednom DL.¢4. Je moən⑦ jednodu③e vytvo②il variace tohoto mdu s jinou v⑨③kou ②⇧dku (nap②. 3,5 nebo 6 obrazov⑨ch bod
  6.  m    sto 4), maxim⇧ln❎ 16.¢5. Vypad⇧ l⑦pe - posu⇦te sami - hlavn❎ nap②    klad v GTIA mdu 10 jsou barvy hez⇨    , protoəe nepouəit    m pr⇧zdn⑨ch mezi②⇧dk
  7.  nen     sn    əen jas a sytost barev.¢¢Nev⑨hody¢--------¢1. V tomto mdu spot②ebov⇧v⇧ ANTIC podstatn❎ m⑦n❎ takt
  8. , ov③em 6502 zase mus     ud❎lat n❎jakou pr⇧ci nav    c. Nen     j     moc, ale mus     b⑨t p②esn❎ synchronizov⇧na se zobrazov⇧n    m a vyəaduje to psan     obsluən⑨ch rutin.¢2. Je probl⑦m se zobrazen    m nejspodn❎j③    ho, 240. obrazov⑦ho ②⇧dku. Proto se u mdu 9++ mus    te bu⇦ spokojit s maxim⇧ln❎ 59 ②⇧dky (59*4=236 obrazov⑨ch ②⇧dk
  9. ), a nebo ud❎lat nejvrchn❎j③     ⇨i nejspodn❎j③     ②⇧dek niə③    , tj. 3 obrazov⑦ ②⇧dky m    sto 4.¢¢My③lenka¢--------¢Hlavn     my③lenka je jednoduch⇧ - za②i⇦me, a④ ANTIC zobrazuje stejn⑨ obrazov⑨ ②⇧dek v    cekr⇧t pod sebou a pouə    v⇧ p②itom jen svou intern     pam❎④. To stejn⑦ se d❎je t②eba v ANTIC mdu 8 (GRAPHICS 3), kdy se data p②en⇧③ej     z hlavn     pam❎ti pouze pro prvn     obrazov⑨ ②⇧dek, a n⇧sleduj    c    ch 7 obrazov⑨ch ②⇧dk
  10.  se zobrazuje jiə z pam❎ti ANTICu.¢¢Teorie¢------¢ANTIC obsahuje intern     4-bitov⑨ registr DCTR, kter⑨ po⇨    t⇧ obrazov⑦ ②⇧dky. Norm⇧ln❎ pro kaəd⑨ ②⇧dek grafick⑦ho mdu po⇨    t⇧ od 0 do hodnoty p②    slu③n⑦ pro dan⑨ grafick⑨ md. Nap②    klad v nejjemn❎j③    ch mdech je tato hodnota 0, u grafik s dvojn⇧sobnou v⑨③kou bodu je to 1 atd.¢Jin⑦ je to p②i aktivovan⑦m vertik⇧ln    m rolov⇧n    . V prvn    m roluj    c    m ②⇧dku DCTR po⇨    t⇧ od VSCROL do 0, v n⇧sleduj    c    m norm⇧ln❎, a v posledn    m od 0 do VSCROL. Po⇨    t⇧n    m od A do B je my③leno, əe nejd②    ve je DCTR nastaveno hodnotou A a pobl    ə konce kaəd⑦ho obrazov⑦ho ②⇧dku je DCTR porovn⇧no s B. V p②    pad❎ rovnosti se p②ejde na dal③     DL instrukci, jinak je DCTR zv⑨③eno o 1.¢¢M❎jme nap②    klad tento DList:¢$2f¢$0f¢a VSCROL=13 (decim⇧ln❎):¢Pak se bude nejprve 4x opakovat prvn     obrazov⑨ ②⇧dek (DCTR bude nab⑨vat hodnot 13,14,15,0 - hodnota 0 n⇧sleduje po 15, protoəe DCTR je 4-bitov⑨ registr).¢Potom n⇧sleduje druh⑨ obrazov⑨ ②⇧dek 14x (DCTR bude nab⑨vat hodnot od 0 do 13 v⇨etn❎).¢¢Obdobn❎ pro VSCROL=3:¢Nejprve prvn     obrazov⑨ ②⇧dek 14x.¢Pot⑦ druh⑨ obrazov⑨ ②⇧dek 4x.¢¢Co je d
  11. leəit⑦, obrazov⇧ data pro n❎kolik stejn⑨ch ②⇧dk
  12.  se p②en⇧③ej     z hlavn     pam❎ti pouze jednou.¢¢Konstrukce mdu¢---------------¢Jak lze snadno vyvodit z p②ede③l⑨ch informac    , pro grafick⑨ md 9++ s kaəd⑨m ②⇧dkem o v⑨③ce 4 obrazov⑦ ②⇧dky, budeme pot②ebovat n⇧sleduj    c     DList:¢$6f,$xxyy(adresa obrazov⑦ pam❎ti)¢$0f¢$2f¢$0f¢...¢a budeme ve spr⇧vn⑨ch okaməic    ch m❎nit obsah VSCROL registru.¢¢N⇧sleduj    c     obr⇧zek v⇧m pom
  13. əe pochopit co se kdy d❎je:¢DCTR¢ 13  @--------------------------¢ 14  ---------------------------¢ 15  ---------------------------¢  0  ---------------------------¢  0  ===========================¢  1  ===========================¢  2  ===========================¢  3  ====!===================*##¢        \--viditeln⑨ obraz--/¢¢'-' - prvn     ②⇧dek grafick⑦ho mdu 9++¢      (bit 5 v DListu je nastaven)¢'=' - druh⑨ ②⇧dek grafick⑦ho mdu 9++¢      (bit 5 v DListu je nulov⑨)¢'@' - nyn     VSCROL mus     obsahovat 13¢'!' - nyn     se vyvol⇧v⇧ DLI rutina¢'*' - nyn     VSCROL mus     obsahovat 3¢'#' - nyn     nastavujeme 13 do VSCROL¢¢Obr⇧zek ukazoval dva ②⇧dky grafick⑦ho mdu 9++, tj. 8 obrazov⑨ch ②⇧dk
  14. . Tak⑦ zn⇧zoroval ⇨asov⇧n     - jednotliv⑦ obrazov⑦ ②⇧dky jsou vykreslov⇧ny zleva doprava.¢¢Nejprve mus     VSCROL obsahovat hodnotu 13 (decim⇧ln❎). Jakmile si ANTIC p②ebere tuto hodnotu do DCTR, vykresl     4x stejn⑨ obrazov⑨ ②⇧dek - tj. prvn     ②⇧dek grafick⑦ho mdu 9++. N⇧sledn❎ se budou vykreslovat jednotliv⑦ obrazov⑦ ②⇧dky druh⑦ho ②⇧dku grafick⑦ho mdu 9++. Na konci ⇨tvrt⑦ho obrazov⑦ho ②⇧dku mus    me zajistit, aby VSCROL obsahoval 3. Je dost ⇨asu na nastaven     t⑦to hodnoty do VSCROLu. M
  15. əeme to prov⑦st t②eba v DLI na prvn    m ②⇧dku. Mnohem kriti⇨t❎j③     je to s p②    pravou pro t②et     grafick⑨ ②⇧dek. Jak je vid❎t na obr⇧zku ('#'), je jen kr⇧tk⑨ okaməik p②ed koncem ②⇧dku, kdy mus    me uloəit hodnotu 13 do VSCROLu (jen p⇧r strojov⑨ch takt
  16. ).¢¢Varianty implementace¢---------------------¢Registr VSCROL m
  17. əeme nastavovat:¢a) pouəit    m DLI p②eru③en    ,¢b) uvnit② kdu n❎jak⑦ho na③eho efektu,¢c) pouəit    m IRQ POKEY ⇨asova⇨
  18. .¢¢Varianta a) je bezpochyby nejjednodu③③    , av③ak nejpomalej③    . Optim⇧ln     je varianta b), pouəiteln⇧ v③ak bude jen u jednoduch⑨ch efekt
  19.  typu bump mapping. Varianta c) je kvalitn❎j③     neə a), protoəe POKEY ⇨asova⇨e m
  20. əeme nastavovat s p②esnost     na jednotliv⑦ takty, takəe nepl⑨tv⇧me ⇨asem v rutin❎ p②eru③en    . Ov③em pro pot②eby hry ⇨i dema je c) nepraktick⇧, protoəe POKEY ⇨asova⇨e se pouə    vaj     tak⑦ pro generov⇧n     zvuk
  21.  a nechceme ob❎tovat ⑤rove hudebn    ho doprovodu (m⑦n❎ zvukov⑨ch gener⇧tor
  22. ) jen kv
  23. li nov⑦mu grafick⑦mu mdu.¢¢DLI rutina p②eru③en    ¢--------------------¢Pot②ebujeme, aby spot②ebov⇧vala co nejm⑦n❎ ⇨asu. Bude se vyvol⇧vat na kaəd⑦m druh⑦m grafick⑦m ②⇧dku (tj. jednou na 8 obrazov⑨ch ②⇧dk
  24. ) - to ②    d    me bitem 5 v DL instrukci.¢P②eru③en     se vyvol⇧v⇧ kr⇧tce po za⇨⇧tku vykreslov⇧n     obrazov⑦ho ②⇧dku (okaməik '!'). Norm⇧ln❎ NMI obsluha zjist     typ p②eru③en     (DLI nebo VLBKI) a uschov⇧ obsah registr
  25.  (p②inejmen③    m A registru). P②esto m⇧me st⇧le dost ⇨asu p②ed z⇧pisem hodnoty 13 do VSCROLu. Nejjednodu③③    m zp
  26. sobem jak spot②ebovat tento ⇨as (a zajistit spr⇧vnou synchronizaci) je pouəit     WSYNC. Pak zap    ③eme 13 do VSCROLu a ihned pot⑦ 3.¢¢Uk⇧zka:¢    lda #<dli¢    sta $200¢    lda #>dli¢    sta $201¢    lda #$22¢    sta $22f¢    lda #<dl¢    sta $230¢    lda #>dl¢    sta $231¢    lda #$40¢    sta $26f¢    lda #$c0¢    sta $d40e¢    jmp *¢¢dli pha¢    sta $d40a¢    lda #13¢    sta $d405¢    lda #3¢    sta $d405¢    pla¢    rti¢¢; 2 pr⇧zdn⑦ ②⇧dky, 1 ②⇧dek grafiky 9++¢dl  db $90,$6f¢    dw $f000¢; 29kr⇧t $8f,$2f => 58 ②⇧dk
  27.  grafiky 9++¢    db $8f,$2f,$8f,$2f,$8f,$2f,$8f,$2f¢    db $8f,$2f,$8f,$2f,$8f,$2f,$8f,$2f¢    db $8f,$2f,$8f,$2f,$8f,$2f,$8f,$2f¢    db $8f,$2f,$8f,$2f,$8f,$2f,$8f,$2f¢    db $8f,$2f,$8f,$2f,$8f,$2f,$8f,$2f¢    db $8f,$2f,$8f,$2f,$8f,$2f,$8f,$2f¢    db $8f,$2f,$8f,$2f,$8f,$2f,$8f,$2f¢    db $8f,$2f¢    db $41¢    dw dl¢¢Moən⇧ nen     na prvn     pohled z②ejm⑦, pro⇨ jsme zapsali 3 do VSCROLu na konci DLI, a ne p②ed z⇧pisem do $d40a (WSYNC)?¢Jak bylo zn⇧zorn❎no na obr⇧zku, VSCROL je ve druh⑦m ②⇧dku kontrolov⇧n bl    zko konci obrazov⑦ho ②⇧dku. P②esn❎ji, je to v okaməiku, kdyə je dokon⇨eno zpracov⇧n     aktu⇧ln    ho DL kdu. Av③ak kdyə pouəijeme DLI (kter⑦ se vyvol⇧v⇧ v posledn    m obrazov⑦m ②⇧dku DL kdu), prov⇧d     se dal③     porovn⇧n     DCTR s VSCROLem. Tud    ə VSCROL mus     jiə obsahovat 3, kdyə p②eru③en     za⇨    n⇧.¢¢Kolik takt
  28.  z    sk⇧me?¢--------------------¢To je velmi d
  29. leəit⇧ ot⇧zka, protoəe rychlost jsme zm    nili hned v prvn    m bod❎ mezi v⑨hodami tohoto nov⑦ho mdu.¢Jeden ②⇧dek mdu 9+ m
  30. əe v DListu vypadat takto:¢    db $0f,$00,$4f¢    dw screen¢    db $00¢Celkov❎: 6 takt
  31.  pro DL¢+ (64 nebo 80) takt
  32.  pro obraz (v z⇧vislosti na ③    ②ce obrazu).¢V mdu 9++ je to pouze jeden DL kd, takəe 1 takt pro DL¢+ (32 nebo 40) takt
  33.  pro obraz. Nav    c v③ak 6502 mus     nastavovat VSCROL, na coə spot②ebuje 6 takt
  34. . Spo⇨t❎me nyn     celou obrazovku (2 pr⇧zdn⑦ obrazov⑦ ②⇧dky, 59 ②⇧dk
  35.  gr.mdu 9++, zad⇧n     po⇨⇧tku videopam❎ti v prvn    m ②⇧dku, JVB):¢✓zk⑨ obraz:¢9+:  1+59*(6+64)+2+3=4136¢9++: 1+59*(1+32+6)+2+3=2307¢Norm⇧ln     ③    ②ka obrazu:¢9+:  1+59*(6+80)+2+3=5080¢9++: 1+59*(1+40+6)+2+3=2779¢Zhruba lze ②    ci, əe zisk p②edstavuje cca 6-7% CPU strojov⑦ho ⇨asu. To v③ak plat     jen v ide⇧ln    m p②    pad❎, kdy prov⇧d    me nastavov⇧n     VSCROLu p②    mo uvnit② kdu. Pouəijeme-li na to DLI, jako v uveden⑦m p②    kladu, vyjde n⇧m nov⑨ md 9++ nepatrn❎ pomalej③     neə star⑨ md 9+, ale st⇧le mnohem rychlej③     neə md bez pr⇧zdn⑨ch ②⇧dk
  36. , vytvo②en⑨ pouze DListem). P②itom nejv    c ⇨asu je promrh⇧no pouəit    m STA $d40a (synchronizace p②es WSYNC). Elegantn    m (av③ak obt    ən❎ realizovateln⑨m) ②e③en    m m
  37. əe b⑨t vyuəit     tohoto ⇨asu pro n❎jak⑦ v⑨po⇨ty.¢¢Hlavn❎ v③ak nesm    me zapom    nat na dal③     v⑨hody mdu 9++, d    ky kter⑨m se jeho pouəit     st⇧v⇧ v⑨hodn❎j③     neə klasick⑨ch md
  38.  konstruovan⑨ch pouze p②es DList. P②itom, pokud jiə nastavov⇧n     VSCROLu d❎l⇧me p②es DLI, je tu dal③     v⑨hoda: M
  39. əeme nap②    klad m❎nit barvu pozad     pro jednotliv⑦ ②⇧dky a nestoj     n⇧s to t⑦m❎② jiə ə⇧dnou pr⇧ci nav    c.¢¢P.S. Popsanou metodu s VSCROL registrem m
  40. əete obecn❎ pouə    t i pro vytvo②en     dal③    ch zaj    mav⑨ch md
  41. , t②eba hardwarem podporovan⑦ho textov⑦ho mdu 40x40 znak