sobota 4. prosince 2004

Animace - díl pátý: Zahraj to ještě jednou, Joe

autor: George K.


5.1 Události bez komentáře

Jak jistě neuniklo minule vaší pozornosti, výpis animačního programu se skládal ze dvou částí - kratší (komentované), která ukládala Joa do paměti, a delší (nekomentované), která postavičku uváděla do pohybu. K této pasáži programu si nyní něco řekneme.
Za návěstím START je nejprve nastaveno přerušení IM 1 a je povoleno. To je důležité, protože jinak by nebylo možné použít instrukci HALT (u návěstí WA1) přesněji - program by se na ní zastavil a normálně už by s ním nikdo nehnul.
Proč je použití HALTu tak důležité? Tato instrukce nedělá nic jiného, než že podrží program do té doby, než naběhne přerušení. Pro nás je ovšem zajímavé, že v té samé chvíli začne obvod ULA od levého horního rohu přenášet obsah videoram na obrazovku televizoru (nekreslí se jen bitová videoram, ale i border - prostě úplně stejně, jako cokoliv jiného v televizi). To je třeba mít na paměti, protože takhle si co nejjednodušeji můžete zařídit, aby figurka při chůzi nepoblikávala. Při větším počtu sprajtů je potřeba napsat algoritmus poněkud lépe, ale pro našeho Joa, je ten uvedený až moc dorý.
Když je přerušení, tak jak má být, je obrazovka zaplněna vzorkem. Vzorek (ve výpisu -1, což je totéž jako 255, čili %11111111) můžete libovolně měnit, nejlépe je funkce masky vidět právě při hodnotě 255. Můžete samozřejmě nahrát do obrazovky cokoliv - třeba nějakou pěknou ulici, po které by Joe chodil.
Následuje inicializace. Podprogram INIT nastaví na počátek tabulku pozic, pak nastaví souřadnice Joa (ld hl,#4022) a schová do paměti obsah místa, kam bude postavička nakreslena (call HIDE). Potom je do hl dána adresa první fáze (P+0) a figurka je nakreslena (podprogram DRAW). Výchozí pozici Joa je možné měnit, jak je organizována videoram popisovat nebudu, to už vyšlo v každém časopise snad 50x. Číslo (oněch #4022) můžete měnit, ale sami si hlídejte, aby Joe "neodešel" do atributů a dál do paměti.
No a teď už jenom ta chůze. Řádkem ld b,80 chtěl autor říci, že figurka se 80-krát pohne, číslo lze opět měnit v rozsahu 0 - 255. Podprogram WAIT čeká (překvapivé, co?) a tím ovlivňuje rychlost Joeovy chůze. Zpomalení dosáhnete, když na řádku WAIT ld b,5 dáte do b číslo větší než 5, zrychlení, když je číslo menší než 5. Pozor, nula odpovídá 256.
Podprogram BACK vrací do videoram to, co tam bylo, než byl nakreslen Joe - tedy koná činnost naprosto opačnou k HIDE.
Teď je čas na to, aby byl nakreslen nový Joe a k tomu musí být známa jeho nová fáze a z té odvozena adresa její grafiky. To dělá část programu mezi návěstími POSIT a GO1.
Podíváte-li se na tab. DIRECT, můžete z ní vyčíst fáze pohybu: 2, 3, 4, 1, 5, 6, 7, 1. Fáze 1 je základní, kterou chůze začíná a která je vykreslena při inicializaci. Čísla zvětšená o 128 značí, že při kreslení této pozice bude potřeba zároveň posunout figurku o znak doprava. Nula na konci tabulky znamená skutečně jen konec tabulky a to, že tabulka se musí číst opět od začátku. V tabulce je "chyba": defw 128+1,0 je to samé jako defb 128+1,0,0,0 a jsou tam tedy dvě nuly navíc.
Další tabulka TABLE v sobě nese adresy grafických dat jednotlivých fází. Pro fázi 1 je to adr. P+68, atd.
Poslední tabulkou je SPACE, kam se ukládá původní obsah videoram, tedy místo, kam byl nakreslen Joe.
Nová pozice Joa je určena takto: de ukazuje na začátek a hl někam do tabulky fází (POSIT ld hl,DIRECT - to platí jen na počátku, v průběhu programu je adresa měněna!!!). Hl a de se navzájem zamění a z de je přečteno číslo fáze. Je-li to nula, proběhne záměna znovu a tím se dostáváme opět na počátek tabulky. Fáze je schována do registru b a pak je vymazán 7. bit (ono +128), číslo je vynásobeno dvěma a přičteno k hodnotě TABLE. Jelikož první pozice je 1 (2x1=2) a ne 0 (2x0=0), je třeba místo TABLE použít TABLE-2. Pak je z tabulky získána do de adresa grafických dat a je uložena pro další použití na adr. GO2+1. Do hl se dá adresa ve videoram a byl-li nastaven bit 7 v registru b (fáze), je proveden posun o znak vpravo (inc hl).
Pak už je postup stejný jako při inicializaci - nejprve je pozadí uloženo do tabulky SPACE (call HIDE) a pak je vykreslena nová figurka (call DRAW) a tento celý proces je opakován (djnz GOES). Toť vše.
Studium podprogramů HIDE a BACK si proveďte sami - jsou si navzájem dost podobné, dělají přibližně totéž a hlavně: dělají to dost rychle (ale ne nejrychleji). Rychlost by šla zvýšit nahrazením podprogramu NEXTHL jeho přímým zařazením do rutiny, ušetřilo by se 17 taktů v každém průchodu. Rychlejší instrukce přesunu než ldi už neexistují, ale daly by se obejít pomocí push a pop; v tom případě by musely být rutiny úplně předělány a navíc by bylo třeba v nich zakázat přerušení.
Pro zajímavost si zkuste napsat rutinu, mající tyto vstupní parametry: hl = volné místo v paměti, de = levý horní roh sprajtu, bc = 256*výška+šířka (nebo číst nějakým způsobem odpovídající); a přemisťující obdélník o šířce c znaků a výšce b bodů z videoram do paměti (nebo naopak). Pak tento podprogram protrasujte monitorem assembleru Prometheus a zjistěte jeho časovou náročnost (T-cykly) - schválně jak se vám to povede (pro porovnání kvality rutin musíte ovšem mít stejné vstupní parametry, resp. rozměry obdélníčku).
Kreslicí podprogram DRAW je dost podobný tomu z AnimAce č. 3. Všimnete si, že není univerzální (univerzální nejsou ani HIDE a BACK), a že dokáže kreslit jen sprajty o šířce dva znaky (výška může být libovolná). Pro rychlou animaci je výhodnější používat na míru šité rutiny, většinou tím odpadne nějaká opakovací smyčka a tím pádem se ušetří i spousta času.
Uvedený a popsaný algoritmus lze ještě krásně zoptimalizovat a zrychlit: když schováte do paměti pozadí a když vzápětí kreslíte novou figurku, pohybujete se na obrazovce vždy na tom samém místě - proč tedy nenapsat podprogram jeden, který by dělal obě dvě věci najednou? Ušetřil by se čas za opakovací smyčku a za předávání parametrů - uvědomíte-li si, jak často se podprogramy provádějí, pochopíte, že zde by neměl být "ani takt nazmar", protože může celkem drasticky ovlivnit výslednou rychlost programu.
Tímto končí nejen pátý díl AnimAce, ale vlastně i seriál samotný. Příště už se nebudeme pouštět do ničeho velkého, připravím pro vás jen nějaké vánoční překvapení (jak se znám, určitě to nebude nic hezkého...) a rozloučíme se. Rád bych se dozvěděl, zda vám byly mnou sdělené informace k něčemu dobré, zda vás seriál zaujal, co všechno byste chtěli vědět o animaci a bojíte se na to zeptat, zda má cenu pro příští rok připravovat pokračování a na jak složité úrovni. Zde bych upozornil, že nerad píšu pro úplné začátečníky - asi proto, že když jsem se sám učil programovat, nemohl jsem se z časopisů dozvědět nikdy víc než to, že znak vytiskneme RST #10, což omílali (a stále ještě omílají) všude nejmíň padesátkrát (oblíbené téma je i videoram na Spectru, jak jsem se zmínil již výše). Na výuku je nejlepší knížka, kde je všechno pohromadě - takových "učebnic" se dá sehnat několik na dost dobré úrovni.
Pokud tedy AnimAce II, pak jedině pro pokročilé.
(pokračování příště)

sobota 27. listopadu 2004

AnimAce - díl čtvrtý: Na hranicích animace

autor: George K.


4.1 Maskovaný Joe

Pamatujete se, jak jsem v prvním dílu (1.2.3) říkal, abyste si schovali obrazovku? Teď přišla ta pravá chvíle opět ji vytáhnout a trošku poupravit. K dvěma starým pozicím Joa přidámě několik nových, aby chůze byla plynulejší... takže začneme pěkně od levého okraje kreslit to, co vidíte tady vedle - pozor na dvě věci: 1) výška Joa vzrostla z 16 bodů na 17 (nad kloboukem přibyl prázdný řádek); 2) pozice kreslete těsně pod sebe (mezi hlavou a nohama zůstane 1 volný řádek, masky budou přiléhat k sobě). Malé čárky po stranách obrazu jsou čistě jen kůli orientaci (po osmi bodech); kreslení si poněkud zpříjemníme nastavením Attrs/Trasparent a Misc/Bright grid 1 (v ART studiu samozřejmě).
Postavičky představují fáze Joa v chůzi (všimněte si, že ruka se houpe na obě strany - dopředu i dozadu, ne jako např. u Manic Minera, kde jsou pouhé tři fáze a pak to při pohybu vypadá, že chodí neustále pravou (nevylučuji ani levou) nohou dopředu..., pozice za sebou následují v tomto pořadí: 1, 2, 3, 4, 1, 5, 6, 7 a tak pořád dokola. (Pro ty, kteří minule nedávali pozor připomímám, že ten černý flek vpravo je maska a že jí musí obkreslit se stejnou chutí jako Joa.)
Aby nám grafika vůbec k něčemu mohla posloužit, musíme ji v nějaké rozumné formě uložit do paměti, takže až skončíte s kreslením, nahrajte nějaký assembler (nejraději Prométhea protože na něm byl následující program odladěn a vy si tak ušetříte spoustu problémů při zjišťování, proč to jinde přesně takhle nefunguje) a opisujte...
Program CONVERT převádí postavičky z obrazovky do paměti. Použijeme ho následovně: program pouze přeložíme (ASSEMBLY) a vyskočíme do BASICu (BASIC). Nahrajeme obrazovku s panáčky (LOAD [*]"JménoObr"SCREEN$) a spustíme konvertor (PRINT USR 45e3). V levém horním rohu obrazovky by mělo být číslo 60476, z kterého můľete usoudit, že délka dat je právě 476 - pro jistotu si je uložíme SAVE [*]"Joe"CODE 6e4,476]. Co vlastě program udělal? Od adresy 60000 uložil po řádcích všechny masky, ale mezi každým bajtem nechal jednu mezeru (zdvojená instrukce - inc ix) - masky tedy leží na sudých adresách. Na liché adresy (počínaje 60001) byly uloženy pozice Joa (také po řádcích), takže jsme získali řádkově organizované sprajty a klidně se můžeme vrátit do assembleru (GO TO 1) a celý program spustit (RUN).
Ještě jednou upozorňuji, že program se spouští na adrese START (dáno pseudoinstrukcí - ent START) a ta není 4500, ale o něco víc! Kdo program dobře opsal, tomu se po obrazovce celkem plynule prošel Joe. A to je vše. Pozn.: Čísla označená ve výpisu xx lze v rozumné míře měnit, aniľ by to program nějak iritovalo, nebo to vedlo k jeho (nervovému) zhroucení.
org 45000  ;překládej od adr. 45000
 ent START  ;preogram se spouští od adr. START

DATA equ 60000  ;kam ukládat grafiku
HI equ 17  ;výška sprajtu (v bodech)
WI equ 2  ;šířka sprajtu (ve znacích)
P equ DATA  ;první pozice leží na počátku dat
        
CONVERT ld hl,#4002 ;adresa první masky ve videoram
 ld ix,DATA  ;a odsuď se začnou ukládat
 ld bc,7*256*HI*WI ;b=7*hi (7 pozic pod sebou), c=WI (šířka)
 push bc  ;schovej pro příště
 call C01  ;ulož všechny masky
 pop bc  ;obnov rozměry
 ld hl,#4000 ;adresa první figurky ve videoram
 ld ix,DATA+1 ;a odsuď se začnou ukládat

C01 push bc  ;uschovej výšku
 push hl  ;a adresu ve VRAM
 ld b,c  ;do b dej šířku sprajtu
C02 ld a,(hl)  ;přečti byte z VRAM
 ld (ix+0),a ;a ulož ho do paměti
 inc hl  ;posuň se na následující byte
 inc ix  ;ale v paměti ukládej
 inc ix  ;"ob jedno"
 djnz C02  ;opakuj podle šířky (v našem případě 2x)
 pop hl  ;obnov adresu VRAM
 call NEXTHL  ;a jdi o jeden mikrořádek níž
 pop bc  ;obnov ukazatel výšky
 DJNZ C01  ;a pokud není 0 tak opakuj ukládání
 dec ix  ;ukazuj na 1. volný byte za grafikou (přiřaď bc=ix,
 ld b,hx  ;aby při volání z basicu (PRINT USR 45000) byla
 ld c,lx  ;tato hodnota vytištěna
 ret   ;vrať se

NEXTHL inc h  ;posuň se o jeden mikrořádek
 ld a,h  ;a pokud nedošlo k překročení
 and 7  ;osmi mikrořádek (tj. jednoho řádku),
 ret nz  ;tak se vrať
 ld a,l  ;jinak je nutno ošetřit
 add a,32  ;vstup na další řádek,
 ld l,a  ;a když to stačí,
 ret c  ;tak se vrať
 ld a,h  ;ale pokud byla překročena hranice mezi třetinami,
 sub 8  ;tak ještě správně dopočítej adresu a pak se vrať
 ld h,a  ;pozn.: znáte-li organizaci videoram, tak pro Vás
 ret   ;tento podprogram asi nebude takovou záhadou
 
;----------------------------
START ld iy,23610
 ld a,63
 ld i,a
 im 1
 ei

 ld hl,#4000
 ld de,#4001
 ld bc,#17ff
 ld (hl),-1
 ldir

 call INIT

 ld b,80
GOES push bc
 call WAIT
 call BACK

 ld de,DIRECT
POSIT ld hl,DIRECT
GOO ex de,hl
 ld a,(de)
 inc de
 or a
 jr z,GOO
 
 ld (POSIT+1),de
 ld b,a
 and 127
 ld hl,TABLE-2
 add a,a
 add a,l
 ld l,a
 ld a,h
 adc a,0
 ld h,a
 ld e,(hl)
 inc hl
 ld d,(hl)
 ld (GO2+1),de
 ld hl,(DR0+1)
 bit 7,b
 jr z,GO1
 inc hl
GO1 call HIDE
GO2 ld hl,0
 call DRAW
 pop bc
 djnz GOES
 ret

WAIT ld b,5
WAI halt
 djnz WAI
 ret
INIT ld hl,DIRECT
 ld (POSIT+1),hl
 ld hl,#4022
 call HIDE
 ld hl,P+0
DRAW ld bc,256*HI+WI
DR0 ld de,0
DR1 push bc
 push de
 ld b,c
DR2 ld a,(de)
 and (hl)
 inc hl
 or (hl)
 inc hl
 ld (de),a
 inc de
 djnz DR2
 ex de,hl
 pop hl
 call NEXTHL
 ex de,hl
 pop bc
 djnz DR1
 ret

HIDE ld bc,2*HI
 ld de,SPACE
 ld (DR0+1),hl
 jr HI1
HI0 dec hl
 dec hl
 call NEXTHL
HI1 ldi
 ldi
 jp pe,HI0
 ret

BACK ld bc,2*HI
 ld hl,SPACE
 ld de,(DR0+1)
 jr BA1
BA0 dec de
 dec de
 ex de,hl
 call NEXTHL
 ex de,hl
BA1 ldi
 ldi
 jp pe,BA0
 ret

DIRECT defb 2,3,4,128+1,5,6,7
 defw 128+1,0
TABLE defw P,P+68,P+136
 defw P+204,P+272,P+340
 defw P+408
SPACE defs 34
(pokračování příště)

sobota 21. srpna 2004

Hráli jste "HEROES '92"?

autor: George K.

Asi bych se spíš měl ptát: Dohráli jste "HEROES '92"? Dali jste lemmingovi deštník, vzali si Batmanův plášť, neodjeli taxíkem a odpověděli správně na otázku, kam jde kůň s hadem?
Jde kůň (klap, klap) a had (šš, šš). Na co jdou?
Povíme si něco o tom, kudy bylo správné se ubírat a kde to naopak nemělo smysl: první věc, která byla docela důležitá, bylo vzít papírek (prozkoumej kancelářský stolek, prozkoumej šuplík, vezmi papírek), který obsahoval výše uvedenou otázku, někdy v průběhu hry ho dát RoboCopovi II (použij papírek) a správné říci, že kůň s hadem jdou na nervy. V kanceláří u sekretářky byl neopomenutelný deštník, který se položil přede dveře výtahu a vychodivší lemming (po otvření dveří příkazem stiskni přivolávací tlačítko) si ho drze vzal a nezabil se tak pádem při chůzi z hlavní haly bůhvíkam na jih. Na parkovišti stačilo chvíli počkat a děly se věci: vybuchovala auta, batmobily a nakonec Batman zahodil svůj plášť (Vaše reakce: vezmi Batmanův převlek), hodící se při pádech z výšky ("pozor, schod!" je přece jenom nepřesné) do bahna. Na stanici metra Schwazreneggerova se také chvíli počká a neleze se hned do prvního metra, co se namane. Mezitím je dobré dívat se, co se děje a reagovat (prozkoumej mrtvou ženu, vezmi pistoli). Bez pistole je v metru veselo, ale když ji máte, v klidu přestřelku přežijete a ještě získáte nové kamarády (prozkoumej cestující), kteří s vámi vystoupí a zůstanou na stanici metra Stalloneova.
Je čas stát se někým jiným, vzít pár věcí a vzápětí se jich zbavit (vezmi malou krabičku, vezmi papírovou krabici, jdi na jih, polož papírovou krabici, prozkoumej papírovou krabici, polož malou krabičku). Pak se zase vrátíme do role Clouseaua a využijeme toho, co jsme si nadrobili (prozkoumej malou krabičku, vezmi hřebíky). Jdeme zpátky po kolejích do Arnoldovy stanice a odtud přes Manic Minera k bahnu. Zde - vezmi past na duchy, prozkoumej Batmanův převlek, použij Batmanův opasek - a jsme zpět v hlavní hale, hurá na vrátnici (pozor na RoboCopa I, nemá rád zbraně), ven na parkoviště (použij hřebíky, jdi do taxíku) a pokud s sebou nemáte moc věcí, dostaneme od Rodriga klobouk a bič. S tím sešviháte hada, ležícího na schodišti (použij bič), prozkoumáte osobnosti, Mirečka a vezměte si krabičku sirek. Výše zmíněnému RoboCopovi II dáte papírek a odpovíte, on vás za to pustí na střechu a nevypne reflektor, který na oblohu vrhá H, nebo-li znak Habermana (kdo viděl Batmana, chápe, ostatní mají smůlu). Se žralokem si hrát nepůjdeme, ale vylezeme na komín a skočíme do něj, on se o nás Haberman postará; pak položíme past na duchy do otvoru ve stěně, staneme se někým jiným, pro past si dojdeme a odneseme ji ke skleněné stěně, kde ji prozkoumáme, čímž vyvoláme ducha, pro kterého si přijdou krotiči duchů (to jsou ti noví kamarádi z metra) - ve stěně vzniknou díry, jimiž přileze lemming, projde nevšímavě kolem vás, probourá zeď komínu a odšplhá vzhůru. Konečně můžete být (Coleman a Clouseau) spolu, vítězství je na dosah ruky, stačí jen dojít k bombě a zapálit knot (použij krabičku sirek). Tak to byl stručný návod, přesně tak, jak to nemám rád, ale aspoň vidíte, že dohrát se to dalo a docela jednoduše.
Kdo udělal přesně tohle a nic víc, zažil asi 30% toho, co zažít mohl a získal ubohých nepostačujících cca 60 bodů. Body se přidělovaly následovně: 1 bod za každou navštívenou místnost (23-24 bodů), 2 body za každou objevenou věc (40-62 bodů) a zbytek za speciality, tedy za věci navíc, které nebylo nutno udělat, ale šlo to (0-34 bodů). (Čísla v závorkách udávají minimální a maximální bodové zisky, kterých lze dosáhnout.)
Hra má něco přes třicet místnosti, ale nekteré nesmíte navštívit - výtah, bazznek se žralokem, první metro, poslední sluj Manic Minera, atd. Ten jeden bod navíc získáte, když projdete tam a zpátky chodbou, kde byla spousta dveří.
Co se věcí týče, skoro pokaždé, když se vypsala zpráva "Objevil jsi ...", získali jste dva body. Takže v kanceláří jste pak mohli spatřit navíc telefonní kartu, krabičku cigaret, spodka kulového, velký kulový, jinde se objevila spousta klik a spousta problémů, po prozkoumání Clouseaua dokonce šimpán, atd. Programově vzato, dostávali jste body ne při samotném objevení, ale až na konci hry, kdy se zjišťovalo, které z vytipovaných předmětů jsou ve hře, což umožnilo několik dalších bodových ohodnocení, které by mohly patřit už spíše do specialit. Byly to: 1) živý vetřelec a 2) při dokončení hry Coleman a Clouseau v jedné místnosti. Co se vetřelce týká, byl neškodný, ale chudák. Ve chvíli, kdy jste si to přihasili na vrátnici s pistolí, RoboCop vás vyzval ji odhodit (a bylo záhodno ho poslechnout, protože jinak střílel - do vás), jenže na upuštěnou zbraň se vrhnul nic netušící "alien" a v zápětí byl postřelen on. Ani potom se ale nevyplatilo brát si pistolí zpět do rukou.
Nejzajímavější části hry ovšem byly speciality, které ukrývaly nejrůznější překvapení. Kdo chvíli trápil počítač příkazem použij teleportační přístroj (bylo zde podezřelé, že program hlásil "Nic se nestalo" - jindy (tj. při zbytecném použití věci) přece nepsal nic!!!), zažil určitě chvilku strachu, když napočtvrté teleport ožil, Coleman vlezl dovnitř a počítač zvesela oznámil, že "Z teleportu vylétla moucha..." - dobrý vtip, za který jste inkasovali pět bodů. Druhý teleport ne a ne naskočit, ale kdo měl výdrž, mohl tentokrát propadnout dojmu, že se program doopravdy "kousnul" - zase nic (krom pěti bodů), a pokud jste se vypořádali i s akční pasáží hry, bylo to dalších pět navíc.
Jinými specialitami bylo kouření a telefonování, které spolu částečně souvisely. Stačilo vzít telefonní kartu (byla v koši) a od sekretářky si zavolat (použij telefonní kartu) - bylo to Arthurovi Brownovi a za pět bodíků. Kdo zavolal dvakrát, prohloupil, protože karta se dala použít u Manic Minera v místnosti Útok mutantních telefonů, odkud bylo možno zavolat sekretářce (pět bodů). Když už jsme u toho Manika - chodit se tu dalo jen tak tak - jednou tam a podruhé zpátky; při třetím vstupu do místnosti jste došli do Návratu krále zvířat a ten se nedá přežít. Ale zpátky k hovoru se sekretářkou - vážně vás nenapadlo, že by svoje Velbloudy (v originále Camel) mohla chtít zpátky (pokud jste je odnesli)? Ano, vážně je chtěla (strašně řada totiž kouří), ale aby jste z toho taky něco měli (z toho kouření myslím), bylo dobré nejdřív získat sirky a zapálit si aspoň jednu cigaretu (pět bodů) a potom teprve hřebíčky do rakve vrátit sekretářce (jen čtyři body), která navíc jen tak z nudy reagovala na to, zda máte v kapse pistolí, či nikoliv.
Záludnou věci byl taxík (vlastně nejen on). Vejít se do něho dalo vždy, ale vylézt ven, to už bylo horší. První návštěva taxíku určitě dobře nedopadla, ale když mu nejdříve uděláte zimní antiskluzové obutí zapícháním hřebíků do pneumatik, v klidu můžete vstoupit. Chvilku se nic neděje (ani ven to nejde), ale nepřehánějte to s prozkoumáváním Rodriga, nebo se udusíte v kouří z jeho doutníků. Takž choďte do taxíku s minimálním počtem věci, jinak vám Rodrigo při pohledu na plné ruce nic nedá.
S duchem a krtkem to také nebylo jednoduché. Pokud se past nebo papírová krabice prozkoumají na nesprávných místech, ani se slizákem, ani s Montym už nehnete a můžete začít znovu. Pak navíc je potřeba na dně komínu past položit (západně do otvoru ve zdi), stát se někým jiným a past si vzít - tedy udáte tu ty samé grify, se kterými se setkáte u hřebíků (taky si je musíte podat pod stěnou a navíc v krabičce).
Krom HEROES samotných byla podstatnou částí soutěže halda otázek, jejichž správné zodpovězení přinášelo téměř polovinu bodů. Prozraďme si tedy, jak měly správné odpovědi (podle mne) vypadat:
1) Jednotlivé díly Horáců se jmenují HUNGRY HORACE, HORACE GOES SKIING, HORACE AND THE SPIDERS (což věděl skoro každý) a jejich autorem je WILLIAM TANG (což věděl málokdo).
2) Při nahrávání The Chip Factory chodí deset Tedů-techniků a ve hře hraje valčík NA KRÁSNÉM MODRÉM DUNAJI.
3) Autorství programů Gens, Mons, Colt, Pascal, C patří firmě HI-SOFT.
4) Za otce Spectra bych označil sira CLIVA MARLESE SINCLAIRA, autoři Spectra jsou STEVEN VICKERS (sw) a RICHARD ALTWASSER (hw).
5) Ochrana firmy OCEAN se jmenuje SPEEDLOCK (jejím autorem je David Aubrey Jones).
6) Hra Ghostbusters vznikla podle filmu... chvilka napětí... GHSTBUSTERS.
7) Rodina Weeků sestává z WALLYHO, HERBERTA a WILMY.
8) Autor PODRAZU III je FRANTIŠEK FUKA, jehož iniciály jsou F. F. Nezaměstnaný programátor není nikdo jiný než TIM COLEMAN a jeho přítelem je ARTHUR BROWN.
9) Ve hře Starquake je teleportů skutečně patnáct a ne jedenáct (omlouvám se všem, kterých se tento omyl dotknul): ALGOL, AMAHA, AMIGA, ASOIC, DELTA, EXIAL, IRAGE, KYZIA, OKTUP, QUAKE, RAMIX, SONIQ, TULSA, ULTRA, VEROX.
10) Na posledním obrázku ve hře Splitting Images je MARYLIN MONROE (kdepak Madonna...!).
11) Autorem her Green Beret, Hyperactive, Mikie, Cobra, Terra Cresta, Hypersport je JONATHAN SMITH (alias SMIFFF).
12) Všechny hry od Code Masters si můžete přečíst v jednom loňském Fifu (tak proto je měli všichni dobře...).
13) Třináctá otázka byla opravdu nešťastná a skoro každý ji měl alespoň trochu špatně. Martin Galway je pro většinu soutěžících zcela neznámou postavou, ačkoliv hělal hru do většiny her Jófy Smiffa. Jsem si téměř jistý těmito: COBRA, HYSTERIA, TERRA CRESTA (a možná i PING-PONG Bernie Dugggse). David Whittaker skládal většinou pro Code Masters, jeho hudba je v JET-BIKE SIMULATORu, SKI SIMULATORu, PLANTOONu, GHOSTBUSTERS II, GLIDE RIDER, atd. Nerad to říkám , ale Mike Follin není hudebník (na rozdíl od svého bratra Tima!), takže body inkasovali ti, kteří poroškrtli, nebo na uvedenou skutečnost upozornili (inu, chyták). František Fuka zhudebnil hry KABOOM, INDIANA JONES I-III, F. I. R. E., TETRIS 2, JET-STORY, BELEGOST. Proximální hudebník Miroslav Hlavička svoji hudbou doprovodil hry HEROES '92, (postřeh!), MAH JONGG, PERESTROJKA, AKCIONÁŘ II, BALLERIS a další (bohužel v Beerlandu žádná hudba není, natož poak Hlavičkova).
14) Proměny z vlka (vlkodlaka) v člověka a naopak se odehrávají ve hře KNIGHT LORE.
15) Academy 87 naprogramoval PETE COOKE, 3D hrami se proslavila firma INCENTIVE, jejich první byla DRILLER.
16) Knihy Hobbita Pán prstenů napsal JOHN RONALD REUEL TOLKIEN.
17) Autorem Města robotů byl ing. Vít Libovický (kdepak Kája Saudek!), heslo znělo KONVALINKA.
18) Free Copy má pravděpodobně na svědomí HAJASOFT.
19) Hlavní postava desetiboje je DALEY THOMPSON, autoři hry jsou PAUL OWENS a CHRISTIAN URQUHART.
20) Samantha Fox se svléká ve hře SAMANTHA FOX STRIP POKER.
21) Ve Winter Games si můžete zasportovat v těchto disciplínách: SKI JUMP, HOT DOG, SPEED SKATING, BIATHLON, BOBSLEIGH, FIGURAL SKATING.
22) Programy na tvorbu 48k hudby: ORFEUS (UNIVERSUM), WHAM! THE MUSIC BOX (MARK ALEXANDER), ZX-7 (JÁN DEÁK), MUSIC STUDIO (MS CID). (Pozn.: Ackoliv Miroslav Hlavička používá Orfea častěji než Universum, jeho autorem není. Stejně tak není autorem hry Krtek a autíčko, jak mylně uvedlo Fifo - autorem je Václav Lavička).
23) Hru Tetris na Spectru uvedl MIRRORSOFT, původni autoři programu jsou VADIM GERASIMOV a ALEXANDR PAŽITNOV.
24) V Terramexu máte na výběr z PĚTI dobrovolníků.
25) Dr. Blitzen vystupuje ve hrách DYNAMITE DAN a DYNAMITE DAN AND THE ISLAND OF ARCANUM.
26) Písničku Ghostbusters složil RAY PARKER, Jr., pro hru ji naprogramoval DAVID WHITTAKER (Rob Hubbard osobně se na Spectrech nevyskytuje), kadeřníkem byl NICK DAWSON.
27) Oba dva uvedené Bat many vrhla na trh firma OCEAN.
28) Názvy posledních tří levelů hry LEMMINGS jsou: SLEEPLEES NIGHTS, PRIDE COMES BEFORE..., ENVIROMENTALLY FRIENDLY.
29) Hi-Soft: GENS, Oasis Software: LASER GENIUS, T. R. C.: PIKOMON, Crystal Computing: ZEUS, Picturesque: EDITAS.
30) Ta nejklasičtější hra se jmenuje MANIC MINER a autorem je MATHEW SMITH.
Tak co, jak hodně jste uspěli v HEROES '92? Znáte teď svoje šance na umístění? Jestli se někomu hra zdála moc těžká - je mi líto, to jste asi nikdy těžkou hru neviděli. Oproti adventurám typu Larry I-V, The Sccret Of Monkey Island I-II, Main Street to nebylo nic moc (navíc jsou anglicky... grr!). Stačilo jenom trochu víc přemýšlet, trochu víc zkoušet - a bylo to...! Kdo dohrál, dá mi za pravdu, ostatním doporučují si to alespoň zkusit (i se všemi smrtonosnými konci), vždyť 26190 bajtů textu pro Desktop, se vyrovná povídce o deseti stránkách A4 (pro šťouraly - psáno strojem, řádkování 1,5).
Věřím, že jste se dobře bavili a že si zase rádi zahrajete nějakou další moji hru - třeba to bude tentokrát něco akčního, třeba... no necháme se překvapit.

A abych nezapomněl:
Jde kůň (klap, klap) a had (šš, šš). Na co jdou?

Poslední Návrat žijící smrti

autor: George K.

Začal nový rok, soutěž k deseti letům ZX Spectra tedy skončila a než bude kompletně vyhodnocena, povíme si (jen tak pro zajímavost) něco o podstatné části hry HEROES '92 - o ochraně The Return Of The Living Death (Návrat žijící smrti).
Nejdříve k ochranám vůbec - jsou dvojího typu: 1) chrání program před kopírováním, nebo 2) chrání program před zkoumáním. Slabinou každé ochrany je, že po jejím průchodu je program čistý a pokud se Vám podaří tuto chvíli vystihnout a do programu se vloupat - máte ho. Navíc, kde nemůže software, tam pomůže hardware, a tak člověk, který vítězoslavně stiskne tlačítko Multi-/Masterface nebo NMI si připadá jako bůhvíjaký bůh a přiblble dodá: "Kraknul jsem to." Možná, že někoho napadá otázka proč vůbec by se ochrana měla prolamovat - také by mě to zajímalo, ale jsou lidé, kteří si prostě musí dokázat, že jsou lepší než ti, kteří tu ochranu psali (což je většinou omyl). Návrat žijící smrti jsou vlastně ochrany dvě - Žijící smrt a pak její Návrat. Obě mají několik vrstev, které nejsou sice nijak geniální, ale dokáží znepříjemnit pěkné deštivé odpoledne.
Již po nahráti basicu asi začátečníka překvapí příkaz IF COPY THEN CAT & DOG a pak fakt, že výraz za RANDOMIZE USR není definován. Ve skutečnosti na tom není nic zvláštního, a tak za chvíli určitě přijdete na to, jak se program spouští - a je tu malé překvapení pro hackery používající obrazovkové monitory - rozpakování nechutně zničí prostřední třetinu a trošku poškodí basicový systém. Navazuje několik ldirů, které rozstrkají program po paměti (případně náhodou vymažou paměťový monitor... Vaše škoda, příště si ho nahrajte jinam) a identifikace, zda je program instalován z diskety nebo kazety - podle toho se také dále pokračuje (při nahrávání z pásky by neměla být připojena D40 - program se buď hroutí nebo vyvede něco "až potom" - samozřejmě naschvál).
Pak následuje nahrání zbytku programu - hra má vlastní loadery jak pro disk, tak pro pásku. Loadery jsou ke své škodě nedoceněny - dokáží totiž nahrávat paměť "napřeskáčku" (z čehož plyne, že kód na médiu je Vám na dvě věci - na ... a na nic), ale tato funkce není zcela využita (pouze u kazetové verze se na konci používá obrazovka, protože v paměti je zapotřebí mít současně víc věcí, než je možné) - snad někdy příště.
HEROES se nejdříve rozpakují (teď je pro změnu zničena spodní třetina); opět pár ldirů, operací se zásobníkem, obrázek, hudba a - heslo. Jediná možnost, jak heslo utajit, je, aby ho program sám neznal - proto, ať napíšete cokoliv, vždy se provede to samé, ale za chvíli se přijde do míst, která se správně odkódují jen při tom pravém hesle (to je ta chvíle, kdy se jinak program zhroutí) - existuje skutečně jen to jedno jediné. Při rozkódování musí program ležet na stejném místě, na jakém byl zakódován - místo je to více než nepříjemné: od spodní třetiny videoram až do konce paměti... všechny další skoky jsou prováděny přes zásobník a v tom se nepříliš dobře orientuje, a tak procesor nakonec dohopsá až k dalšímu rozpakování (leží podobně blbě jako odkódování), pak opět chvilka zásobníkových skoků a - konečně start.
Tedy - ne tak docela. Následuje další identifikace "páska versus disk" založená na stavech sběrnice a ROM (tato část se špatně trasuje), opět se spočítá hodnota zásobníku a pak se někudy vběhne do podprogramu, který program správně rozmístí po paměti a ještě pozmění pár adres.
Začíná hra - a to je chvíle pro Návrat žijící smrti. Jejím základem je přerušení (je podezřele velké, že?), které čas od času program odchytává a nechává ho pokračovat někde úplně jinde - kdo přerušení vypnul, dostal se trasováním ke zcela falešným podprogramům, které program ve skutečnosti nikdy nepoužívá (on ho totiž většinou hroutí). Ti, kteří rádi mačkají tlačítko SNAP, se asi dočkali překvapení - nefunguje. Milovníci upravených ROM, si také příliš neužili - aspoň na páskách. Návrat žijící smrti je organickou součástí programu a jen některé jeho pasáže je možné odstranit. Navíc je napsán úmyslně tak, aby odradil - je v něm spousta věcí navíc a špatně.
Kdo hledal texty, které by mu usnadnily hraní, našel, se vší pravděpodobností, vzkaz: THE RETURN OF THE LIVING DEATH: WELCOME TO THE 21st ROUND (ONLY 79 LAPS TO GO), jenž nebyl zdaleka jediným, co jsem tu pro hackery zanechal. Skutečné texty jsou zapakovány textovým pressorem Tolkien 4.0, což se samo o sobě skoro rovná ochraně - pro přečtení by se musely vybalit (bylo by jich asi o 9kB víc).
Poslední Návrat žijící smrti se vygeneruje v okamžiku, kdy hru dokončíte - program je smazán a zůstává pouze obrazovka a hudba (rozkódování bodovacího podprográmku je založeno na podobném principu jako to minulé). Bodování samotné je záležitostí jednoduchou, ale složitě napsanou - snad každý pokus o podvod je někde vidět, takže - kdo si přidal pár bodů a podle ASCII kódu vzniklého čísla domaloval vnitřní rámeček, doběhl sám sebe. Navíc je bodování uděláno tak, aby i při pěti naprosto stejných dokončeních hry vyprodukovalo pět rozdílných tabulek - to co, v těch tabulkách bylo vždy stejné, bylo přesně tím, co nic neznamenalo... K bodování neodmyslitelně patří pozice - slabé to místo všech textovek, protože v sobě musí nést údaje o stavu hry, které samozřejmě jdou pozměnit. Proto jsou prozice HEROES generovány na podobném principu jako finální tabulka - dvě pozice ve stejnou chvíli = dva rozdílné kódy.
Abych to neměl tak jednoduché, zpříjemnil mi život každý Didaktik, na kterého jsem narazil - některé části ochrany na nich prostě nechodily a já ještě doteď nevím proč. Základním problémem je, že každý Didaktik je ve své podstatě originál (tedy nenahraditelný) a koupíte-li si počítač, disketovku a Melodika, můžete hovořit o štěstí, když se spolu snesou. Programátor aby se pak zbláznil při zjišťování, zda je chyba v jeho programu, nebo ve výrobním programu nejmenované zahraniční společnosti. Ať již bylo Specter vyrobeno několik miliónů - nelišily se tak, aby programy na nich nechodily; to se bohužel o branách do světa výpočetní techniky říct nedá. Díky Didaktikům jsou tedy některé pasáže ochrany "mrtvé" - a to je škoda. Po deseti letech si Spectrum zasloužilo pořádnou ochranu, která by potrápila a která by vlastně pro hackery byla hrou ve hře. Proto jsem ji také psal. Škoda.
Veselá příhoda na závěr: Asi nejvíc mě vytočilo, když pásková verze nefungovala s hudebním obvodem AY - přesněji - fungovala se všemi AY, krom Melodiku. (To je vůbec věc, ten Melodik, ještě že nemám absolutní sluch, jinak bych asi vyletěl z kůže při zjištění, že zase hraje o dvě oktávy výše.)
Pokud jste tedy nezkoušeli ochranou projít, zkuste to - je to prča.

středa 4. srpna 2004

AnimAce - díl třetí: Navštivte strojový kód

autor: George K.

Welcome to Machine Code! Možná, že je některým čtenářům líto, že jsem bezcitně opustil Basic a jistě se najdou i tací, co mi budou tvrdit, že v tom krásném jazyce by se dalo napsat daleko více, než jsem minule ukázal, ale moje letitá zkoušenost je, že animovat by se mělo ve strojáku a toho se ve zbytku seriálu budu držet. Tento díl nepřinese asi tolik konkrétních informací, jako ty předchozí, protože je třeba dohodnout se na určitých pojmech a výrazech, které budeme nadále používat a které mohou být pro někoho horkou novinkou.
Ti, kteří neovládají strojový kód, nemusejí zoufat, že jim budou následující stránky na nic - doporučuji sehnat si Universumovu knihu Assembler a ZX Spectrum - vždyť: kolik řečí znáš, tolikrát jsi člověkem...

3.1 Trochu (více) nudná teorie

Každá animace má svůj účel - většinou ji chceme využít v hrách - a na ten je třeba od samého počátku myslet. Neexistuje pravidlo, kdy jakou animaci použít - to je prostě na existenci jak postaviček tak pozadí, navíc je potřeba to všechno sladit (ne cukrem) a tady narazíme na ten největší problém: VZÁJEMNÉ PŘEKRÝVÁNÍ. Tomuto typu grafiky se říká sprajty (sprites) a využívá ho 90 % všech her. Díky náročnosti na rychlost nemůže být o Basicu ani řeč.
3.1.1 Nemaskované sprajty
Než abych složitě popisoval, co mám nemaskovaným sprajtem na mysli, bude jednodušší, když si nahrajete nějakou pěknou hru, kde na ně můžeme narazit. Jistě vám nemusím dvakrát připomínat Manic Manera; zde bylo většinou použito nemaskovaných sprajtů OR (pozadí a postavičky splývají do jednoho celku - přesvědčte se o tom).
Další bezmaskové sprajty najdete ve hrách PYJAMARAMA, ATIC ATAC, SAMANTHA (tam vlastně ne, tam jsou k vidění jiné zajímavé věci), STARQUAKE, atd; tentokrát to bude typ XOR (jako když nastavíte OVER 1 - nevypadá to moc hezky). Nesympatická na sprajtech OR a XOR je, jak se chovají k pozadí a k sobě navzájem; často není vůbec patrné, co se děje, zvláště navrství-li se několik sprajtů na sebe.
3.1.2 Zamaskované sprajty - to je ono!
Pyšní se jimi takové hry, jako je COBRA, GREEN BERET, BAT MAN, Jméno Růže (to musel dělat nějakej machr!), THREE WEEKS IN PARADISE, HERBERT, HIGHWAY, HEARTLAND a dalších pár stovek. Všimněte si např. v Green Beret co se stane, potká-li se víc chlapíků najednou (krom toho, že vás zabijí) - a to se ke všemu ještě roluje pozadí...! Klasickým příkladem sprajtu s maskou je šipka v Art Studiu, Desktopu, Orfeovi...
Co je myšleno maskou? Podívejte se na obrázek: jsou na něm tři typy čtverečků: 1) černé - to je Joe, tak jak ho znáte; 2) bílé - patří také Joeovi (tvoří mu vnitřek těla, obličej a jakousi ochranou čáru kolem); 3) šedé - a to je maska.Ve skutečnosti se grafika a maska nedají zakreslit do jednoho obrázku, udělal jsem to jenom kůli názorné ilustraci. Obrázky by správně měli být dva: na jednom by byla jen grafika a na druhém jen maska (obrázky musí mít stejné rozměry a když je dáte "na sebe" musí dohromady vypadat právě takto). V praxi se využije jednotlivých čtverečků následovně: maska se přiloží na pozadí a to, co "leží pod ní" zůstane zachováno. Vznikne "díra", do které se potom dokreslí grafika, a pak to vypadá přesně jako v Green Beret (Jonathan Smifff mi zaplatil, abych ho propagoval, tak se snažím). Uvědomte si, že tím, jak definujete masku, ovlivňujete výsledný efekt - když v masce necháte v místě skla "bílo", neuvidíte skrz lupu nic, když prostor skla vyplníte, zůstane "průhledné". Existují i masky založené na opačném principu, ale připadá mi výhodnější používat tyto.

3.2 Zákadní sprajtovací algoritmus

Všechny hry, využívající sprajty, vycházejí z jednoho systému jejich přemísťování, který je podle potřeby individuálně přizpůsobován a optimalizován, až k nepoznání. Jeho základ by mohl vypadat přibližně takto:
1. je-li to nutné, vykresli pozadí (např. při posunu ulice to nutné je)
2. nastav nové souřadnice sprajtů
3. polož všechny sprajty od nejspodnějšího k nejsvrchnějšímu (tento bod bývá konkretizován podle toho, zda se hraje ve 3D (BAT MAN, KNIGHT LORE) nebo "nadhledu z boku" (RENEGADE 1, 2, jízda městem v BAT MAN 3) nebo jen "pohledu z boku" (RoboCop, Green Beret) či "shora" (STAR DRAGON, LIGHT FORCE); obecně platí, že sprajty s nejnižším pořadovým číslem jsou "nejdál")
4. zvedni všechny sprajty od nejsvrchnějšího k nejspodnějšímu (viz. 3.)
5. zpátky na bod 1.
Vypadá to na první pohled trochu pochybně, ale hned si k tomu řekneme víc - je jisté, že něco vykreslit a vzápětí to smazat je hloupost - mezi bodem 3. a 4. se musí čekat, aby si člověk vůbec měl šanci sprajty prohlédnout, někdy se také musí otestovat pohyb a podoby, narazí na nejrůznější komplikace: program bude nechutně pomalý a při velkém počtu sprajtů bude obraz blikat až hrůza. Řešení spočívá v tom, že se všechny přípravné práce musejí provést někde v paměti a na obrazovku se dostane pouze nový "snímek", který bleskurychle překreje ten předcházející. Opět existuje několik způsobů, jak se vypořádat s přípravnými pracemi: tuším že v COBŘE se to dělá tak, že během jednoho přerušení se vyhodnotí nové pozice sprajtů, uloží se na odkazy na jejich data na zásobníku, a v dalším přerušení se to všechno nakreslí a to ještě zbyde čas na zvuk. Jiná varianta je mít někde v paměti rezervní obrazovku, jejíž obsah se bude kopírovat do videoram (bývá relativně pomalé), chytřejší programy kopírují pouze tu část, kde došlo ke změnám.

3.3 Prográmek na dobrou noc

Program byl odladěna na systému Prometheus - používáte-li jiný překladač, může dojít u pseudoinstrukcí k odlišnostem v zápisu. Program se snaží konkretizovat mlhavé představy o magické moci masky... Zkuste zpozorovat rozdíl, ke kterému dojde uvnitř čtverečku, když v datech změníte čísla 24 na 0.
ent START  ;pseudoinstrukce, udávající kde má program
    ;začátek
START ld hl,16384 ;bitová mapa videoram je zaplněna vzorkem
 ld de,16385 ;kvůli demonstraci účinků masky
 ld bc,6143
 ld (hl),255 ;číslo vzorku (255) je možno měnit podle libosti...
 ldir
 ld hl,DATA  ;HL ukazuje začátek dat sprajtu
 ld de,#4022 ;DE říká, kam do videoram se bude kreslit
 ld b,8  ;výška sprajtu je osm bodů
LOOP ld a,(de)  ;vezmi bajt z videoram
 and (hl)  ;a ponech pouze to, co je v masce
 inc hl  ;posuň se bajt grafiky
 or (hl)  ;a přidej ho k masce
 inc hl  ;posuň se na další masku
 ld (de),a  ;bajt polož do videoram
 inc d  ;posuň se ve videoram na další řádek
 djnz LOOP  ;opakuj 8x
 ret   ;konec - vrať se

DATA defb 0,0,0,126,0,66,24,66,24,66,0,66,0,126,0,0
(pokračování příště)

sobota 31. července 2004

AnimAce - díl druhý: BASIC je báječné místo pro život

autor: George K.

Jak jsem slíbil minule, přišel čas pro nenáročnou hru - nemám sice za cíl ukázat vám, jak se píší hry, ale v BASICu se dost dobře animovat nedá a hra je ten nejlepší způsob, jak si to ukázat. Připravte si znakovou sadu z kapitoly 1.3.1 a hurá do toho...

Jednoduchá hra v BASICu

2.1 Neotřelý originální námět

Ještě než začnete přepisovat výpis programu do počítače, prozradím vám, o co ve hře půjde. Joe se nachází v místnosti plné lávek a jeho úkolem není nic překvapivějšího, než dostat se z té nejhořejší na tu nejspodnější. Aby to nebylo tak jednoduché, ne po každé lávce se dá bez problémů chodit a padat se smí pouze z omezené výšky. A teď ... hurá do opisování!!!
100 LET j$="!""%&#$'()*-.+,/0": LET lives=3: LET level=1
 102 GO SUB 1000
 104 GO SUB 1100
 106 GO SUB 1300
 110 IF konec=1 THEN LET lives=lives-1: BEEP 1,-10: IF lives>0 THEN GO TO 102
 112 IF konec=0 THEN GO TO 104
 120 CLS : PRINT AT 10,11;"GAME OVER"
 999 PAUSE 0: INK 0: PAPER 7: BORDER 7: CLS : STOP
1002 INK 7: PAPER 0: BORDER 0: CLS : PRINT AT 10,12;"LEVEL ";level
1004 PAUSE 0: CLS
1006 LET pad=0: LET konce=0: LET time=1000
1018 RESTORE (level-1)*10+9000
1020 READ y,x: LET pos=1
1022 READ lin,col,ink,pap,t$
1024 IF t$="" THEN GO TO 1200
1026 PRINT AT lin,col; INK ink; PAPER pap;t$: GO TO 1022
1102 IF INKEY$="s" THEN BEEP .1,1: PAUSE 0: PAUSE 0: BEEP .1,10: RETURN
1104 IF INKEY$="a" THEN LET konec=1: RETURN
1106 IF pad>0 THEN GO TO 1180
1108 IF INKEY$="o" THEN GO TO 1150
1110 IF INKEY$<>"p" THEN RETURN
1120 IF x=30 THEN RETURN
1132 GO SUB 1200
1134 IF pos=1 OR pos=13 THEN LET pos=5: GO TO 1200
1136 IF pos=5 OR pos=9 THEN LET pos=1: LETx=x+1: GO TO 1200
1150 IF x=1 THEN RETURN
1162 GO SUB 1200
1164 IF pos=9 OR pos=5 THEN LET pos=13: GO TO 1200
1166 IF pos=13 OR pos=1 THEN LET pos=9: LET x=x-1: GO TO 1200
1180 GO SUB 1200
1182 LET y=y+(y<20)
1200 PRINT OVER 1;AT y,x;j$(pos TO pos+1); AT y+1,x;j$(pos+2 TO pos+3)
1205 RETURN
1300 LET pad2=pad
1302 IF SCREEN$ (y+2,x)=" " THEN IF SCREEN$ (y+2,x+1)=" " THEN LET pad=pad+1
1304 IF y=19 THEN LET konec=1
1306 IF pad=pad2 THEN LET pad=0: IF pad2>4 THEN LET konec=1
1310 RETURN
9000 DATA 2,10,4,5,0,7,"111111111111111"
9001 DATA 8,1,0,7,"111111111111111111111111",8,10,0,0,"  "
9002 DATA 13,8,0,7,"11111111111"
9009 DATA 0,0,0,0,""

2.2 Komentář výpisu programu

Přece jenom, ne všichni mají náladu zkoumat, co jsem napsal, a tak svůj produkt trochu osvětlím:


  • je provedena inicializace (100), tj. počet životů (3), startovní místnost (1) a všechny Joeovy pozice se uloží do řetězce



  • je vykreslena místnost (102), otestován pohyb (104) a pád (106) a nastala li smrt, je odečten život (110), v horším případě hra končí (120), v lepším pokračuje (112)



  • podprogram na vykreslení místnosti (1000) má jako vstupní parametr číslo místnosti v proměnné level. Místnosti leží v datech (9000, 9010, 9020...): první a druhé číslo udávají, kde má Joe na začátku stát, zbývající data jsou organizována takto: řádek, sloupec, inkoust, papír a co vytisknout. Posloupnost je ukončena prázdným řetězcem (""). Data jedné místnosti se musí vejít do posloupnosti řádků ...0-...9, jak je vidět podle výrazu na ř.1018. Do proměnné pos je dána 1, což označuje fázi Joa snožmo vpravo a vykreslení místnosti je ukončeno jejím zobrazením (skok z ř. 1024 na ř. 1200)



  • další podprogram hlídá pohyb Joa (1100) a je-li třeba, pak i jeho pád. Po stisku klávesy S bude provedena pauza, dokud opět něco nezmáčkneme. Klávesa A umožňuje spáchat sebevraždu - hodí se to ve chvíli, kdy už je jasné, že jste to zkazili. Pro pohyb Joa zůstaly klávesy O a P. Jde-li ještě jít doleva či doprava, je nejprve smazána stará pozice a potom do proměnné pos uložena nová a návrat se opět provede přes vykreslení pozice



  • podprogram vytisknutí pozice vychází z toho, že jedna pozice má 4 znaky, které lze získat z řetězce J$ basicovským příkazem TO. Proto jsou také pozice číslovány 1, 5, 9, 13, protože každé číslo zároveň udává i kolikátým znakem pozice v řetězci začíná



  • poslední podprográmek (1300) nastavuje pád. Je-li pod nohama Joa prázdno, je hodnota proměnné pad zvýšena o jedničku. Smrt pádem nastává buď při dopadu Joa na řádek 19, nebo když je pád delší než 4 (1306). V podprogramu pohybu (1100) je testována hodnota pad a je-li nenulová, sune se Joe po obrazovce směrem dolů (1180). (Pozn.: výraz na ř. 1182 postupně zvyšuje číslo řádku, dokud Y<20.)


  • 2.3 Play the game

    Po spuštění se na obrazovce objeví 4 plošinky z jedniček a pár znaků představující Joa. S tím se ovšem nesmíříme a konečně udáme tu znakovou sadu z minule. Napište
    CLEAR 49999: LOAD ""CODE 50000
    a nahrajte upavený font. Dále doplňte program následovně:
    1000 POKE 23606,0: POKE 23607,60
    (tj. tiskni sadu z ROM)
    1008 POKE 23606, A: POKE 23607,B
    (kde A, B si musíme spočítat - viz. 1.2.2)
    Také je dobré dopsat řádek 118, kde bude to samé co na ř. 1000. Protože jsme si definovali pouze několik prvních znaků, není vrácení původních hodnot tak nutné, ale, obecně vzato, tam patří. (Abych nezapomněl: zaměňte v datech dvojice "0,7" za "7,0".)
    Spustíte-li znovu program, bude po obrazovce běhat Joe. Prozatím nevyužité předefinované znaky zneužijeme k následujícímu: !3! použijeme jako zarážku a "4" jako nebezpečnou podlahu, s "2" si naložte dle libosti. Rozšíříme data místností:
    9002 DATA 3,5,6,0,"3",8,12,5,0,"44"
    Pro hru to nebude mít zatím žádné důsledky, ty musíme vyrobit my. Tedy...
    1122 IF pos=5 THEN IF SCREEN$(y+1,x+3)="3" THEN RETURN
    1152 IF pos=12 THEN IF SCREEN$(y+1,x-1)="3" THEN RETURN
    a teď již nejde jít tam, kde stojí v cestě "3".
    Na závěr mám pro vás úkol: doplňte program tak, aby se Joe zabil i v případě, že vstoupí nohama na "44". Protože vás nechci napínat až do příště, najdete řešení na konci dílu.

    2.4 Jak snadno přijít k penězům

    Hru můžete ještě vylepšit o následující: když ji Joe stoupne na "22", postupuje do další místnosti, délky smrtelných pádů nemusí být konstantní, po pádu nebo průchodu místností zahraje nějaká znělka, ovládání klávesami by mohlo být předefinovatelné, neškodilo by ani ošetřit kempston joystick. Zatím nevyužitá proměnná time se může zapojit do hry a omezit dobu určenou k průchodu místnostmi, atd. Jsou to všechno samozřejmě nesmysly, které nemají praktický význam, ale pokud to ještě neumíte, můžete se na nich naučit spousy postupů a triků... Nakonec doporučuji ke hře dodělat pěkný obrázek, dobře znějící hudbu, hezké intro, pár zajímavých vizuálních efektů, a všechno to poslat do PROXIMY k distribuci... příjemnou zábavu.
    Příště nadobro opustíme starý dobrý BASIC a zavítáme do strojového kódu, jehož rychlost nám umožní daleko více. Bohužel už se nesetkáte s celým výpisem, ale pouze s úryvky z nejhrůznějších (pardon, překlep - správně nejrůznějších) rutin...

    Řešení (ovšem že ne jediné):

    1308 IF SCREEN$(y+2,x)="4" THEN IF SCREEN$(y+2,x+1)="4" THEN LET konec=1
    (pokračování příště)

    středa 30. června 2004

    Art Studio - referenční příručka

    autor: Daniel Jenne

    Co je to Art studio?
    Art studio je grafický procesor s moderní koncepcí. Jeho možnosti nebyly zatím překonány žádným jiným programem na mikropočítači ZX Spectrum. Originální program byl vytvořen firmou O.C.P. , já však budu popisovat českou verzi upravenou Janem Pánkem.

    K čemu je Art studio?
    Jak již bylo řečeno, je Art studio grafický procesor. Z názvu vyplývá, že je určen pro práci s grafikou. Konkrétně jím lze vytvářet a opravovat obrázky. Art studio pracuje s jedním obrázkem (s jednou bitovou mapou displeje). Aplikace vytvořených obrázků je neobvykle široká. Namátkou lze uvést například: ilustrace ke knihám, manuálům, návodům a zprávám, tvorba grafiky pro hry, výukové a systémové programy, vytváření tvarů písmen, malování schémat, umělecko-průmyslové návrhy a další a další možné použití.

    Co najdete v této knize?
    Jak podnázev "referenční příručka" napovídá, jsou v této knize shromážděna všechna důležitá fakta o programu Art studio. Naleznete zde rovněž popis instalace vaší tiskárny. Informace jsou seřazeny podle jednotlivých souborů voleb (menu). Především má však tento metodický materiál sloužit k doplnění znalostí, které získáte studiem učebnice. V učebnici nejsou totiž uvedeny absolutně všechny podrobnosti o všech příkazech. Pokud prostudujete učebnici a zjistíte, že vám chybí určitá informace, je čas sáhnout po tomto materiálu.

    Základní terminologie
    V referenční příručce se vyskytují určité speciální výrazy, které mají úzký vztah k uváděným faktům. Protože nemusí být některé výrazy všem uživatelům srozumitelné, bude lépe nejdříve uvést jejich stručný přehled a charakteristiku.

    Obrazovka je to, co vidíte po zapnutí počítače. Například při nahrávání některé hry se do ní zpravidla ukládá úvodní obrázek. Obrazovka je složena ze tří částí: 1. Bitová mapa, 2. Atributy a 3. Okraj.

    Bitová mapa. Celá obrazovka je složena z bodů. Velikost je 256 na 192 bodů. Každému bodu přísluší jeden bit, který určuje, zda má bod barvu papíru, nebo inkoustu. To odpovídá velikosti 32 na 24 znaků, při velikosti znaku 8 na 8 bodů. Každému znaku ( tj. čtverci 8x8 bodů) jsou přiřazeny určité informace. Tyto informace se nazývají atribut. V dalším textu budeme body, které mají barvu papíru označovat jako zhasnuté. Body, které mají barvu inkoustu, budou rozsvícené.

    Atribut. Jedná se o společné vlastnosti jednoho znaku - čtverce 8x8 bodů; znak se také nazývá atributový čtverec. Jde o vlastnosti: barva papíru, barva inkoustu, řízení jasu a řízení blikání. V této souvislosti si uvědomte, že není možná libovolná kombinace bodů v libovolných barvách. Barva papíru udává barvu zhasnutého bodu. Barva inkoustu udává barvu rozsvíceného bodu. Pokud je zapnut jas, jsou barvy dvakrát jasnější. Pokud je zapnuto blikání, mění se pravidelně barva inkoustu a barva papíru.

    Barva. K dispozici je celkem 8 barev (jak papíru, tak inkoustu): bílá žlutá, světle modrá, zelená fialová, červená, modrá a černá.

    Okraj. Obrazovka, tak jak jsme jí definovali, však nepokrývá celou plochu televizní obrazovky. Zbývající plocha se nazývá okraj a Spectrum (a tedy i Art studio) umí pro tento okraj nastavit jednu z osmi barev. Ve většině případů je barva okraje pro obrázek nevýznamná, ale někdy i ona může sehrát určitou roli (například u obrázku, kde je převážně černé pozadí, by jiný než černý okraj působil rušivě).

    Nahrání a spuštění
    Program Art studio nahrajete z přiložené kazety příkazem LOAD "art cs". Po nahrátí programu následuje dotaz Kopii? (A/N). Stisknete-li klávesu A, následuje dotaz na které zařízení se má kopie vytvořit. Klávesou P Art studio zkopírujete na magnetofon. Stisknete-li klávesu M, kopie se provede na microdrive. Po skončení kopírování následuje dotaz Další kopii (A/N). Jestliže stisknete klávesu A, zopakují se dotazy pro vytváření kopie. Po stisku N se přejde k instalaci ovládacích prvků.

    Ovládání
    Veškeré povely se v programu Art studio volí pomocí tzv. menu (vyslov "meny", menu = nabídka). Tato menu se objevují na obrazovce a obsahují seznamy použitelných příkazů. Po obrazovce pohybujete zvoleným způsobem ukazovátkem (nejčastěji ve tvaru šipky), kterému se říká kurzor. Příkazy z menu se vybírají umístěním kurzoru na pozici zvoleného příkazu a stisknutím klávesy pro volbu. Pohyb kurzoru je možno ovládat klávesami (vlevo, vpravo, nahoru, dolu a volba), křížovým ovladačem (joystick, čti "džojstyk"). V dalších verzích i pomoci myši.

    Práce pomocí kurzoru a menu byla zvolena z jednoho prostého důvodu: nemusíte si pomatovat rozsáhlý seznam příkazů pro ovládání programu. Stačí, pamatujete-li si 5 kláves pro ovládání pohybu kurzoru. Menu tedy zároveň tvoří funkci nápovědy.

    Položky, které se mohou v menu vyskytnout, lze rozdělit do čtyř základních skupin:

    1. Příkazy - po vyvolání se okamžitě provedou. Jako příklad může sloužit příklad "Smaž obrazovku" v menu "Ostatní"; obrazovka se ihned smaže.

    2. Přepínač - určuje, jak se některé příkazy budou chovat. Například přepínač "Plné" v menu "Text" určuje, zda se budou psát tučná písmena či nikoliv. Za přepínačem je vždy příznak,je-li zapnutý či vypnutý. Pokud má tento tvar křížku, je přepínač vypnutý. Jestliže má tvar "zatržítka", je přepínač zapnutý.

    3. Skupinové přepínače - jde o řadu přepínačů, z nichž pouze jeden může být zapnutý. Jde například o sadu přepínačů "Zarov. Vlevo", "Střed" a "Zarov. vpravo" v menu "Tisk". U této sady je označen "zatržítkem" pouze zapnutý přepínač. Pokud zvolíte jiný z této sady, původně zapnutý se automaticky vypne. U sady přepínačů nejsou vypnuté přepínače nijak označeny.

    4. Parametr - po aktivaci této položky musíte zadat určitý parametr: číslo nebo text. V Art studiu se setkáte pouze s textovým parametrem. Budete pomocí parametru zadávat jméno při práci se soubory na kazetě. Vložení parametru se ukončí klávesou ENTER.

    1. Tvary
    Při tvorbě většiny obrázků budete často potřebovat pravidelné geometrické tvary. Dokonce je budete používat víc, než nepravidelné tvary. Časem patrně zjistíte, že tvary, které nejsou složené z geometrických elementů je lépe tvořit bod po bodu (viz kapitola 4. Zvětšit).

    Všechny tvary jsou sestaveny z čar o síle jednoho bodu. Pokud požadujete silnější čáru je nutné tvar zdvojit, nebo zvětšit (viz kapitola 7. Okénka).

    Pokud není nastaveno jinak, jsou body rozsvěcovány. Jestliže je zapnutá volba "Naopak" (viz kapitola 8. Barvy a kapitola 2. Maluj), jsou body zhasínány. Pokud je zapnutá volba "Přes" (viz kapitola 8. Barvy), body se rozsvěcují, ale při křížení čar, se body v místě křížení zhasnou.

    Současně se změnou bitové mapy, se mění atributy, přes které čára vede. Atributy se nastaví podle aktuálního stavu (viz kapitola 8. Barvy).

    Po zvolení příslušného tvaru se kurzor změní ze šipky na "záměrný čtvereček". Tím potom určíte velikost daného elementu - u čáry jsou to například koncové body. Důležitý je bod uprostřed čtverečku. Ten se totiž bere jako začátek úsečky, střed kružnice...

    Pokud se pokusíte po zvolení elementu posunout obrazovku o některou ze zakrytých řádek (viz kapitola 11. Ostatní), vybraný element se zruší a kurzor nabude opět tvaru šipky. Nelze tedy například volbou "Obdélníky" orámovat celou obrazovku.

    Body
    Kreslení jednotlivého bodu je v podstatě zařazeno pouze "pro pořádek", neboť manipulace s jednotlivými body je mnohem snadnější při několikanásobném zvětšení (viz kapitola 4. Zvětšit).

    Záměrný čtvereček umístíte do žádaného místa . Jestliže stisknete volbu (klávesou pro aktivaci, tlačítko střelby), bod uprostřed se rozsvítí (nebo zhasne - to závisí na volbách "Naopak" a "Přes"; viz kapitola 8. Barvy).

    Čáry
    Dalším základním geometrickým elementem po bodu je úsečka. Pomocí úseček lze již sestavit i poměrně složitý obrázek.

    Úsečka je vždy definována dvěmi krajními body. Nejprve tedy nadefinujete jeden krajní bod - záměrný čtvereček umístíte tak, aby krajní bod úsečky byl na žádaném místě a stisknete volbu. Potom obdobným způsobem určíte i druhý krajní bod. Pokud je zapnutý přepínač "Gumové", je čára (nebo jiný tvar) při posouvání koncového bodu průběžně zobrazována.

    Polygon
    Tento termín v sobě skrývá lomenou čáru. Některé obrysy lze složit z množství (krátkých a dlouhých) úseček. Pokud byste používali jednotlivé čáry, byli byste nuceni vždy umístit začátek další úsečky na konec předchozí. Polygon to provede za vás.

    Nejdříve určíte počáteční bod lomené čáry (podobně jako u úsečky) a potom již volíte postupně začátky jednotlivých úseček. Můžete v podstatě nakreslit nekonečnou lomenou čáru. Pokud ovšem budete potřebovat použít jiný tvar nebo menu stačí záměrným čtverečkem "vyjet" do oblasti hlavního menu a zvolit cokoli jiného.

    Obdélníky
    Další základní tvar, který malé děti začínají kreslit, je obdélník. Vy máte k dispozici libovolný pravoúhlý čtyřúhelník (nudli o poměru stran 1:32 se snad ani nedá říkat obdélník). Tento základní prvek jistě často použijete ať již k zarámování nadpisu či k nakreslení prostorové ilustrace.

    Čtyřúhelník definujete jeho úhlopříčku, nebo lépe řečeno dvěma vrcholy, které jsou na úhlopříčce. Nejdříve určíte jeden z vrcholů a potom druhý protilehlý. Strany jsou vykresleny vždy rovnoběžně s okrajem obrazovky. Nemůžete tedy nakreslit "pootočený" obdélník. Pro nakreslení čtverců můžete s výhodou volby "Rastr x" a "Rastr y".

    Trojúhelníky
    Trojúhelník je rovněž velni užitečný prvek (třeba na střechu ježibabí chaloupky). Doplňuje nabídku základních "hranatých" geometrických tvarů.

    Jelikož je každý trojúhelník určen třemi body, budete i vy muset postupně zvolit tři body. První dva určují jednu stranu a třetí zbývající dvě strany. Doporučuji provádět experimenty se zapnutou volbou "Gumové".

    Kroužky
    O předchozích tvarech lze prohlásit, že byste je uměli nakreslit i od ruky. Mnohý z vás by však raději sáhl po kružítku, kdyby měl nakreslit kružnici. V Art studiu samozřejmě nic takového nepotřebujete - vždyť máte k dispozici tento příkaz.

    Kružnice je určena středem a poloměrem. Nejdříve zvolíte střed. Druhou volbou definujete bod, kterým bude kružnice procházet - poloměr bude tedy vzdálenost těchto bodů.

    Úhly
    Úhly se společným vrcholem či paprsky, tak by se tento tvar dal nazvat. I když se nejedná o žádný základní tvar, jistě i pro něj najdete využití (například popisování obrázku, který obsahuje více stejných částí).

    Nejdříve definujete společný střed. Každou další volbou nakreslíte úsečku s jedním koncem ve společném středu a druhým v dané pozici.

    Gumové
    Tento přepínač určuje, zda se bude vykreslovat průběh tvorby tvaru tak, jak budete posouvat kurzor. Jestliže je volba zapnutá a kreslíte například úsečku, je vždy zobrazena úsečka z prvního zvoleného bodu do pozice kurzoru. Jak pohybujete kurzorem mění se i úsečka. Je zcela jasné, že tento způsob využijete ve většině případů - je snadnější přesné umístění koncového bodu, máte představu, jak nakreslený tvar ovlivní obrázek, ještě předtím, než ho definitivně potvrdíte.

    V několika málo případech budete nuceni tuto vlastnost potlačit. Průběžné vynášení tvaru zpomaluje pohyb kurzoru. Při kreslení velkých kružnic je toto zpomalení již značné a je tedy lepší přepínač vypnout.

    Rastr x, Rastr y
    Rastr je síť tvořená okraji atributových čtverců. Jednodušeji řečeno, pokud zapnete některý z přepínačů, obrazovka rázem přestane mít v příslušném rozlišení 256 či 192 bodů, ale pouze 32 či 24.Toto zmenšení přesnosti se však týká pouze umístění bodů, které definují tvar; ten je nakreslen normálně. Jestliže umístíte kurzor jinam než do vrcholu atributového čtverce, definiční bod se automaticky umístí do levého dolního vrcholu atributového čtverce.

    Této vlastnosti můžete s výhodou použít při vytváření barevných obrázků - ušetříte si mnoho nepříjemností způsobených společnými barvami pro atributový čtverec. Tyto volby vám budou rovněž nápomocny při kreslení rovnoběžek, čtverců, pravoúhlých trojúhelníků...

    Ve spojení s volbami "Rastr 1" a "Rastr 2" (viz kapitola 3. Jiné) vám pomůže při správném rozvržení obrázku.

    2. Maluj
    Jak sám název napovídá, příkazy z tohoto manu vám umožní kreslit čáru "od ruky" - nepravidelné tvary o různé tloušťce. Pokud nepoužíváte k řízení Art studia myš, je použití tohoto menu problematické - klávesnicí či ovladačem můžeme totiž dělat jen vodorovné, svislé a šikmé čáry. Ovšem v případě, že budete malovat pouze jednotlivé motivy volbou "Vzor", není toto omezení tak významné.

    Pro všechny druhy kreslení je společná ta vlastnost že každá kreslená čára je složena s jednotlivých prvků. Jedná se v podstatě profil nástroje, se kterým se maluje. Kreslení se provádí tak, že se nástroj pravidelně dotýká kreslící plochy obrazovky. Pokud budete nástrojem pohybovat pomalu, tvary se mohou spojit a vytvořit třeba černou silnou čáru. Pokud zrychlíte pohyb, čára se rozpadne na jednotlivé prvky - třeba černé čtverečky.

    Podobně jako v menu Tvary, se při změnách bitové mapy provádí i změna příslušných atributů. Do atributových čtverců přes které přejedete, se zapíše nastavený stav (viz kapitola 8. Barvy).

    Brk
    Poněkud záhadný název vám nabízí možnost psát seříznutým husím brkem. K dispozici máte šestnáct brků s různým profilem - od svislého, přes šikmý až po vodorovný. Kromě napodobování starobylých písem (švabach) jistě najdete i jiné rozumnější použití.

    Po navolení tohoto příkazu se objeví podřízené menu, kterým zvolíte profil brku. Volbu provedete tak, že najedete šipkou na vybraný profil a stisknete volbu. Místo šipky se objeví obrázek tužky (to je moderní verze brku). Pokud nyní budete pohybovat kurzorem a současně držet volbu, bude se kreslit čára se zvoleným profilem.

    Sprej
    Tímto příkazem dostanete k dispozici barvu ve spreji. Tuto možnost jistě oceníte, když budete chtít nepravidelně zaplnit nějakou plochu či napsat nějaký nápis na zeď (tedy obrázek zdi). Můžete zvolit jednu z osmi velikostí sprejů. Stříkání je naprosto náhodné. O tom se můžete přesvědčit, jestliže necháte sprej stříkat na jedno místo - záhy se objeví černé kolečko.

    Nejprve opět navolíte z podřízeného menu hustotu spreje. Objeví se obrázek nádobky se sprejem. Pokud budete při pohybu nádobky držet volbu, bude sprej zanechávat za sebou vystříkanou stopu.

    Vzor
    Tento příkaz vám nabídne jedno ze šestnácti "razítek". Razítka mají různou velikost - od velikosti 4x4 až do velikosti 19x19 bodů. Můžete buď razítkovat jednotlivé obrázky, nebo kreslit čáry sestavené z těchto obrázků.

    V podmenu si vyberete příslušný obrázek. Velikost se zvětšuje zleva doprava a shora dolů. Místo šipky se objeví malířská štětka. Pokud stisknete volbu, na místo, kde je kurzor se vloží zvolený obrázek. Jestliže podržíte volbu a budete pohybovat kurzorem, bude se kreslit řada příslušných vzorů.

    Oprav vzor
    Pomocí tohoto podmenu můžete libovolný obrázek z příkazu "Vzor" opravit. Opravujete vždy poslední zvolený obrázek (v menu "Vzor" je označen černým rámečkem). Pokud najedete šipkou na kterýkoliv bod a stisknete volbu, stav bodu se změní - je-li rozsvícen zhasne a naopak. Kromě samotného tvaru, který je označen nápisem "Data", je vedle ještě stejně veliký obrázek označený "Mask". Při kreslení obrázku se totiž nejdříve zhasnou body, které jsou označeny v "masce" a potom se teprve rozsvítí body označené v "datech".

    Jestliže ukončíte opravování zrušením menu, změny se pouze uloží. Pokud opustíte menu tím, že zvolíte obrázek vzoru ve skutečné velikosti, můžete navíc ihned opraveným obrázkem malovat.

    Naopak
    Tento přepínač má stejný význam jako stejnojmenný přepínač v menu "Barvy". Pokud je vypnut, provádí se kreslení normálním způsobem, tak jak je to v této příručce popsáno. Pokud je zapnutý, operace s bitovou mapou mají opačný význam. Tím mám na mysli, že bod, který měl být rozsvícen, je naopak zhasnut.

    Pokud tento přepínač zapnete a vezmete si v menu "Vzor" černý čtvereček, dostanete poměrně výkonnou "gumu".

    Přepínač je samozřejmě platný pro všechny příkazy.

    3. Jiné
    V tomto menu jsou soustředěny některé ostatní funkce, které však logicky nepřísluší do žádného jiného menu. Jde většinou o akce, které se týkají celé obrazovky, nebo mají výlučné postavení.

    Ukaž obraz
    Při práci s Art studiem neuvidíte vždy celou obrazovku. Tři řádky (tj. 24 bodů) je zakryto hlavním menu. Tato oblast je zpřístupněna šipkami v hlavním menu (viz kapitola 11. Ostatní). Jestliže vytváříte obrázek, který využívá celou obrazovku, jistě budete potřebovat zhodnotit celkový dojem. Pochopitelně, že můžete obrázek vytisknout. Pokud ale nemáte tiskárnu po ruce, musíte hodnocení provést pouze podle obrazovky.

    Po zvolení příkazu se odstraní z obrazovky veškerá menu a ukáže se celý obrázek. Hlavní menu se vrátí zpět po stisku volby.

    Smaž obraz
    Než začne malíř pracovat na svém obrazu, musí si nejprve připravit plátno. I vy máte možnost si vaše "elektronické" plátno připravit. Po provedení tohoto příkazu se bitová mapa obrazovky vynuluje - všechny body zhasnou. Všechny atributy se nastaví na shodnou hodnotu. Tato hodnota je dána aktuálním stavem přepínačů "Inkoust", "Papír", "Jas" a "Blik" (viz kapitola 8. Barvy).

    Pokud si omylem zrušíte pracně vytvořený obrázek, máte i zde možnost použít menu "Zpět" pro návrat k původnímu obrázku.

    Rastr 1, Rastr 2
    Tyto dva příkazy zobrazí rastr 8x8 nebo 16x16 bodů. Takto vytvořené čtverce odpovídají buď jednomu, nebo čtyřem atributovým čtvercům. Jistě toho s výhodou použijete buď při navrhování barevných obrázků, nebo při rozvrhování plochy obrazovky. Čtverce jsou vytvořeny pomocí příznaku v atributu pro zvýraznění jasu. Jestliže použijete rastr při opravách již hotového obrázku, který používá rozdílný jas, bude tento obrázek znehodnocen - při rušení rastru se totiž příznaky jasu u všech atributů nastaví shodně na nízký jas. Art studio bere rastr jako normální součást obrázku, který je ovlivňován změnou atributů. Například při malování čáry mohou některé čtverce rastru zhasnout - pokud je ovšem vypnut přepínač "Jas".

    Zruš rastr
    Tento příkaz ruší rastr, který byl vyvolán jedním z příkazů "Rastr 1" a "Rastr 2". Při rušení dojde ke ztrátě informace o jasu ve všech atributech - pozor tedy na použití rastru u barevných obrázků, kde je použit jas.

    Změna barev
    Pokud budete vytvářet barevné obrázky, zjistíte, že se vám nepovedla kombinace barev. Jste tedy postaveni před problém, nahradit v určité oblasti jednu barvu jinou. Tento příkaz umí v nadefinovaném okně přebarvit vše co má barvu shodnou s barvou nadefinovanou přepínačem "Papír" na barvu, která je shodná s barvou nadefinovanou přepínačem "Inkoust" (viz kapitola 8. Barvy)

    Tento příkaz můžete vyvolat pouze pro předem nadefinované okno (viz kapitola 7. Okénka).

    Číslo verze
    Po provedení příkazu se vám ukáže informace o autorovi původní verze, roku vytvoření a autorovi vaší verze.

    4. Zvětšit
    Celá obrazovka je tvořena dvourozměrným polem - bitovou mapou. Art studio má sice prostředky, kterými můžete malovat větší objekty, ale někdy je nezbytné pracovat s jednotlivými body - opravení detailů, návrh složitých tvarů...

    Při práci s jednotlivými body se obrazovka změní. Objeví se zvětšený výřez obrazovky, orámovaný ze dvou stran černými pruhy se šipkami na konci. Na těchto pruzích jsou "navlečeny" bílé segmenty. Tyto segmenty jsou menší či větší v závislosti na zvoleném zvětšení. K čemu to všechno je? Tím že se na obrázek díváte v určitém zvětšení, můžete pracovat najednou pouze s jeho výřezem. Jistě by bylo užitečné umět zvětšený výřez po obrazovce posouvat. A to právě umožňují šipky na koncích černých pruhů. Pokud na některou z nich přesunete kurzor a stisknete volbu, zvětšené okénko se přesune ve směru šipky. Zároveň se posune bílý segment - jeho pozice na černém pruhu indikuje pozici výřezu v celé obrazovce. Obrázek dvou zkřížených čtverečků v levém rohu je rovněž funkční - pokud na něj přesunete kurzor a stisknete volbu, výřez se přemístí na obrazovce do levého horního rohu. Pokud při posunování výřezu podržíte volbu, výřez se posouvá tak dlouho, pokud držíte volbu.

    Jestliže budete měnit některé body, opět se spolu s nimi bude měnit i atribut - nastaví se na aktuální hodnoty určené v menu "Barvy" (viz kapitola 8. Barvy).

    V horní řádce je menu složené z příkazů a přepínačů, které budou popsány dále. O jednom se však zmíním již teď. Pokud chcete opustit režim zvětšení, provedete to právě příkazem "Menu".

    2x, 4x a 8x
    Jedním z těchto příkazů projevíte přání zvětšit určitý výřez obrazovky. číslo udává, kolikrát. Po volbě se kurzor změní na tvar lupy. Tímto kurzorem najedete na místo, které si chcete prohlédnout a stisknete volbu. Ukáže se zvětšený výřez. Pokud chcete opravit bod, najeďte na něj kurzorem a stiskněte volbu. Bod se změní v závislosti na stavu sady přepínačů "Piš", "Smaž" a "Změň". Také můžete volbu podržet a pohybovat kurzorem - budou se měnit všechny body, na kterých se kurzor ocitne.

    Mříž
    Tento přepínač se týká zobrazení zvětšeného výřezu při zvětšení 8x. Pokud je zapnut, jsou jednotlivé body umístěny do rastru. To vám umožní lépe si rozpočítat vytvářené detaily.

    Piš, Smaž a Změň
    Touto sadou přepínačů určíte, co se má stát s bodem ve výřezu, jestliže na něj umístíte kurzor a stisknete volbu. Aktivní volba je indikována zinvertováním nápisu v menu.

    Pokud je nastaven přepínač Piš, bod se rozsvítí. Při volbě Smaž se bod zhasne. Volba změň způsobí změnu stavu bodu - jestliže byl rozsvícen zhasne a byl-li zhasnut, rozsvítí se.

    Je jasné, že vhodný režim zvolíte podle typu práce. Jestliže budete chtít vyplnit ručně nějakou plošku, patrně si jako aktivní zvolíte přepínač Piš.

    Jak bylo řečeno v úvodu této kapitoly, při manipulaci s jednotlivými body, se rovněž mění příslušné atributy. Můžete tedy ve zvětšení provést jemné korekce barevných obrázků. Při této práci zjistíte, že potřebujete často měnit barvu inkoustu a papíru. Bylo by velmi nevýhodné pokaždé rušit zvětšení a přes menu barvy měnit nastavení atributů. Proto máte menu "Barvy" k dispozici rovnou - význam viz kapitola 8. Barvy.

    5. Plň
    Při své práci jistě narazíte na problém vyplnit část obrázku. Příkazy z tohoto menu vám umožní vyplnit uzavřenou plochu. Je možné vyplnit plochu černou, nebo použít jeden z 32 předdefinovaných vzorků. Uzavřená plocha je ta část obrázku, která je uzavřena nepřerušovanou křivkou.

    Algoritmus, který realizuje vyplnění, je poměrně velmi rychlý. Při vyplňování složité plochy se může stát, že některé body zůstanou zhasnuté (to je dáno algoritmem a rovněž závisí na místě, odkud jste začali vyplňovat).

    Pokud vyplňovaná oblast zasahuje do části obrazovky, která je ukrytá pod hlavním menu, vyplní se i tato "neviditelná" část.

    Při vyplňování se opět nastavují příslušné atributy (viz kapitola 8. Barvy). Můžete tedy použít "bílý" vzor pro nastavení atributů v části plochy, aniž byste změnily bitovou mapu.

    Plň černou
    Po aktivaci příkazu se objeví obrázek malířského válečku, Pokud jej umístíte dovnitř uzavřené plochy a stisknete volbu, plocha se vyplní "černou". Vyplňování začíná bodem, který se kryje se středem válečku. Jestliže vám při plnění "černá" uteče z uzavřené plochy (stačí díra o velikosti jednoho bodu), lze se vrátit zpět k původnímu obrázku příkazem "Zpět". Vyplňování lze rovněž přerušit stisknutím klávesy BREAK (CAPS SHIFT+0).

    Plň vzorkem
    Po aktivaci se objeví nabídka 32 vzorů. Ten správný zvolíte tak, že na něj umístíte kurzor a stisknete volbu. Dál budete postupovat stejně jako při volbě "Plň černou". Jestliže je zapnutý přepínač "Naopak" (viz kapitola 8. Barvy), máte k dispozici invertované vzorky.

    Vyper vzorek
    Nejprve je vám nabídnuto 32 vzorů. Jsou stejné jako při vyplňování vzorkem. Jakmile jeden z nich zvolíte, vše, co jste nakreslili bezprostředně před vyvoláním tohoto příkazu se "vypere" příslušným vzorem. Tímto termínem se rozumí proces, při kterém se zhasnou všechny body, které nejsou ve vzorku nastaveny. Jestliže například nakreslíte čáru a "vyperete" ji šikmým šrafováním, získáte čárkovanou čáru. Tento postup můžete i několikrát zopakovat.

    Edituj vzory
    Může se stát, že předdefinované vzory vás neuspokojí. V tom případě máte možnost libovolný vzorek opravit. Po vyvolání příkazu se zobrazí zvětšený vzorek. Pokud nyní přesunete kurzor na libovolný bod a stisknete volbu, bod změní svůj stav. Pod zvětšeným vzorkem je zobrazena ploška vyplněná vzorkem, který opravujete.

    Opravujete vždy poslední použitý vzorek (v nabídce je označen černým rámečkem).

    6. Text
    Pokud budete vytvářet některé seriózní obrázky, jako ilustrace k technické dokumentaci či zprávě, jistě budete potřebovat obrázek popsat. Toto menu vám umožní dopisovat do obrázku libovolný text.

    Znaky jsou tvořeny maticí bodů o velikosti 8x8. Po nahrátí Art studia máte k dispozici standardní znaky z ROM paměti ZX Spectra - tedy ty, které používají Basic. Sada tvarů znaků se označuje anglickým slovem font - norma ČSN tento termín překládá jako typ písma. Fonty lze libovolně editovat a ukládat či číst. O tom ale až ve spojitosti s příkazem "Edituj".

    Znaku jsou tedy opět vytvořeny z bodů. Přestože máte k dispozici pouze znaky normální ASCII abecedy, háčky a čárky můžete ve zvětšení snadno přidělat.

    Při psaní jsou funkční, kromě normálních tištitelných znaků, i některé řídící znaky. Kurzor lze při psaní přesunout libovolným směrem pomocí kurzorů (CAPS SHIFT + 5, 6, 7 a 8). Napsaný znak lze zrušit klávesou DELETE (CAPS SHIFT + 0). Kombinací SYMBOL SHIFT a klávesy jsou přístupné znaky označené na klávesnici červeně - !, $, (, +, =, /, ?, |.

    Při psaní znaků se opět nastavují příslušné atributy. Rovněž se při vytváření písem respektuje stav přepínačů "Naopak" a "Přes" (viz kapitola 8. Barvy).

    Zleva doprava
    Po vyvolání tohoto příkazu se kurzor změní na obrázek velmi podobný velkému I. Velikost znázorňuje velikost písmen, kterými se bude psát. Kurzor umístíte na místo, kam budete chtít psát a stisknete volbu. Kurzor se změní na vodorovnou čárku a je možné psát text. Zpět do předchozího režimu se vrátíte klávesou ENTER. Při psaní můžete používat i šipky pro přesun kurzoru a DELETE pro zrušení posledně napsaného znaku.

    Dolů
    Někdy jistě budete potřebovat psát nápisy i poněkud netypickým způsobem - shora dolů. Pravidla pro psaní jsou shodná jako při psaní zleva doprava ovšem s tím rozdílem, že další znak se píše pod a ne vedle. Společně s přepínačem "Otočení" lze dosáhnout libovolné orientace znaků.

    Výška 1x, 2x a 3x
    Touto sadou přepínačů můžeme určit výšku písma. číslo v názvu přepínače znamená násobek výšky normálního znaku: pokud je aktivní přepínač Výška 1x, je písmo nejmenší - má normální výšku t.j. 8 bodů. Přepínač 2x nastavuje výšku 16 bodů a přepínač 3x výšku 24 bodů. Při psaní je velikost písma indikována velikostí kurzoru (viz odstavec Zleva doprava).

    Šířka 1x, 2x a 3x
    Touto sadou přepínačů určujete šířku písma. Velikost je možné opět volit ze tří možností: 8 bodů, 16 bodů a 24 bodů (viz předchozí odstavec).

    Nastavením přepínačů výška a šířka můžete používat rovnou devět velikostí písma. Pokud byste chtěli jinou velikost písmenek či jiný poměr výšky a šířky, musíte použít příkaz "Změna velikosti" v menu "Okna".

    Otočení
    Tímto přepínačem můžete požádat, aby se písmenka psala otočená o 90 stupňů proti směru hodinových ručiček. Tímto způsobem můžete s výhodou popisovat grafy, rysy, tabulky... Přepínač pochopitelně platí při psaní zprava doleva i shora dolů.

    Plné
    Někdy je výhodné některé popisky zvýraznit či odlišit. Tento přepínač vám umožní psát písmenka zvýrazněně; oproti normálnímu písmu jsou silnější.

    Zvýrazněné znaky jsou vytvořeny tím, že se písmenko tiskne dvakrát, podruhé je však posunuto o bod vpravo. Některá písmenka se tímto postupem mohou změnit k horšímu; například u malého "m" se "slijí" nožičky. Potom je možné buď změnit základní tvar písmene, nebo výsledek upravit ve zvětšení ručně.

    Caps Lock
    Pokud jste již psali nějaký text, jistě jste zjistili, že píšete malá písmenka. Velké písmeno napíšete tak, že stisknete klávesu CAPS SHIFT a potom příslušné písmeno. Tímto přepínačem lze postup obrátit. Pokud je přepínač zapnutý, píšete rovnou velká písmena a s klávesou CAPS SHIFT malá písmena.

    Přepínač se týká pouze písmen. Smazání znaku provedete kombinací kláves CAPS SHIFT a 0 bez ohledu na stav přepínače Caps Lock.

    Rastr x a Rastr y
    Přepínače stejného významu můžete nalézt i v menu Tvary. Umožní vám umístit znaky přesně na pozice atributových čtverců. To vám pomůže lépe zakomponovat text do barevného obrázku; nebo obrázku rozvrženého pomocí atributových čtverců.

    Edituj
    Pomocí tohoto menu můžete pracovat s tvary písmenek. K dispozici máte celkem 96 znaků. Tvary znaků je možné uložit na kazetu a použít později; a to nejen v Art studiu, ale i v jiných programech. Rovněž lze hotové tvary načíst z magnetofonu (tvary písmenek budou dále označovány termínem font).

    Po aktivaci příkazu se rozložení na obrazovce změní. V dolní části obrazovky je zobrazen celý font ve skutečné velikosti. Znak označený neúplným obdélníkem je tzv. aktivní; je zobrazen nad fontem ve zvětšení společně se dvěma sousedními znaky. Aktivní znak změníte velice jednoduše: umístíte na příslušný znak ve skutečné velikosti kurzor a stisknete volbu.

    Aktivní znak (a jeho dva kolegové) má nejen tu výhodu, že ho vidíte ve zvětšení, ale že ho můžete libovolně upravovat; stačí když umístíte kurzor na některý z bodů, jímž je písmeno tvořeno a stisknete volbu. Bod změní svůj stav: jestliže byl rozsvícen zhasne a jestliže byl zhasnut rozsvítí se.

    Nad zvětšenými písmeny je umístěno menu s nabídkou ostatních příkazů. Na koncích menu jsou umístěny šipky. Jimi můžete rovněž změnit aktuální znak; šipky přesouvají pozici aktuálního znaku vlevo či vpravo.

    Volba "Menu" vrátí řízení zpět hlavní menu. O ostatních příkazech se dozvíte v následujících odstavcích.

    Písmeno
    Příkazy obsažené v tomto menu se týkají aktivního znaku. Volba "Smaž" znak vymaže. Příkazy "Zrcadlo x" a "Zrcadlo y" převrátí znak v ose x nebo y. "Rotace 1/4" otočí znak o 90 stupňů proti směru hodinových ručiček. Příkazy "Roluj vpravo" a "Roluj dolů" cyklicky posunou znak o bod v příslušném směru.

    Sada
    Příkazy v tomto menu mají shodný význam jako příkazy v menu "Písmeno", s tím rozdílem, že se týkají celé sady písmenek. Pouze v případě, že se pokusíte smazat celý font, Art studio se přeptá na správnost této akce.

    Jiné
    Tento příkaz vám umožní definovat font jiným způsobem než ručním nadefinováním či nahráním z kazety. Volba "Opiš ROM" zkopíruje standardní font uložený v paměti ROM; tyto tvary znak; používá Spectrum po zapnutí. Druhý příkaz můžete zvolit pouze v případě, že před vyvoláním příkazu "Text" z hlavního menu jste měli nadefinované okno (viz kapitola 7. Okna). Pokud je vše v pořádku, začne se okno kopírovat do tvaru znaků. Kopírování začne od pozice aktuálního znaku. Okno se přenáší odleva doprava a shora dolů.

    Mgf.
    Tímto příkazem můžete uložit font na magnetofon, nebo naopak z magnetofonu nahrát. Font uložíte příkazem "Ulož soubor". Soubor, který takto nahrajete můžete použít i jinde. Má stejné vlastnosti jako soubor, který byste dostali příkazem Basicu SAVE "jméno" CODE xxxxxx,768; kde xxxxxx je adresa, která vás ovšem nezajímá. Číslo 768 je snad jasné : 96 písmen krát 8 bajtů.

    Příkazy "Nahraj soubor" a "Nahraj další" nahrajete již hotový font (třeba získaný z nějaké hry). Liší se tím, že příkazu "Nahraj soubor" musíte ještě sdělit jméno souboru.

    Příkazy "Ověř soubor" a "Ověř další" můžete otestovat správnost nahrávky.

    7. Okénka
    Toto menu vám nabídne pravděpodobněji nejmocnější příkazy Art studia - práci z okny. Jestliže pracujete na nějakém obrázku, většinou nevytváříte obrázek celý najednou, ale postupně. Okno je část obrazovky omezená obdélníkem. S touto obdélníkovou částí můžete pracovat - vymazat jí, zkopírovat, přesunout, otočit, zrcadlit, změnit její velikost...

    Klasické použití oken je například zopakování motivu. Nakreslíte třeba mrak, ten umístíte do okna a můžete jej několikrát zkopírovat; dostanete zamračenou oblohu.

    Pozor na atributy při práci s okny. Pokud například přesunete okno, ve kterém jsou rovněž různé atributy, přesunou se i ty. Pokud však neumístíte okno na nové místo zcela shodně vzhledem k atributům, může se stát, že pracně vytvořené barevné efekty (vypočítané přímo na bod) budou zničeny.

    Definuj okno
    Tento příkaz vám umožní nadefinovat okno. Po zvolení příkazu se místo šipky objeví čtvereček. Nyní přesunete kurzor na místo, kde má být jeden roh okna. Pozici potvrdíte stiskem volby. Zbývá určit druhý roh okna. Při přesunu na pozici druhého rohu, vám bude Art studio pro informaci neustále zobrazovat právě platné okno (ceĺý postup je analogický ke kreslení obdélníků; viz kapitola 1. Tvary). Po stisku volby je okno nadefinováno.

    Pokud chcete některý z rohů okna do té části obrazovky, která je kryta hlavním menu, přesuňte obrazovku pomocí šipek v hlavním menu (viz kapitola 11. Ostatní).

    Minulé okno, celý obraz
    Existují ještě další dvě možnosti jak definovat okno. První z nich je "Minulé okno". Pokud použijete tento příkaz. aktivuje se posledně definované okno. Například pokud nadefinujete okno, zinvertujete ho a pok si vzpomenete, že to nebylo to pravé, lze tímto příkazem nadefinovat stejné okno a zinvertovat jej zpět (po provedení nějaké akce s oknem, se definice zpravidla zruší).

    Druhá možnost "Celý obraz" uzavře do okna celou obrazovku. To se vám může hodit pro změny většího rázu: zinvertovat celou obrazovku (častý případ), změna barev v celém obrázku, atd.

    Vymaž okno
    Tento příkaz je analogický k příkazu "Vymaž obraz" (viz kapitola 3. Jiné). Obsah nadefinovaného okna se vymaže (body zhasnou) a atributy se nastaví na aktuální hodnoty; tj. podle stavu přepínačů v menu "Barvy".

    Pozor na atributové čtverce. Pokud okno zasahuje pouze část atributového čtverce, vymaže se sice pouze ta část bitové mapy, která je v oknu, ale atribut se změní pro celý čtverec. Může se tedy stát, že si zničíte vybarvení části obrázku.

    Zkopíruj okno
    Tímto příkazem můžete zkopírovat nadefinované okno. Po vyvolání se na obrazovce objeví "druhé" okno, v jehož levém horním rohu je umístěn kurzor. Pokud budete pohybovat kurzorem, okno se bude rovněž posouvat. Po stisku volby se do tohoto okna zkopíruje obsah předem nadefinovaného okna (je na obrazovce rovněž viditelné).

    Samozřejmě se rovněž zkopírují i atributy. Pozor tedy na kopírování necelých atributových čtverců v barevných obrázcích.

    Přesuň okno
    Tento příkaz je analogický k "Zkopíruj okno" s tím rozdílem, že staré okno se před zkopírováním vymaže. Okno se tedy pouze přenese. Okno můžete přesunout i o několik málo bodů.

    Invertuj okno
    Tento příkaz zinvertuje bitovou mapu v okně. Zhasnuté body se rozsvítí a naopak. Atributy zůstanou nezměněny.

    Změna velikosti
    Jde v podstatě o "zkopírování" okna. Rozdíl je v tom, že velikost "druhého" okna není shodná s velikostí nadefinovaného okna, ale můžete si zvolit velikost libovolnou.

    Po zvolení příkazu nadefinujete "druhé okno" stejným postupem jako v "Definuj okno". Po potvrzení "druhého okna", se chvilku nic neděje - Art studio přepočítává okno do nových rozměrů. Při zmenšování původního okna může dojít ke ztrátě určitých detailů - jde o jednotlivé body, tenké čáry ap.

    Změna a přesun
    Příkaz je shodný s příkazem "Změna velikosti", s tím rozdílem, že se původní okno před zkopírováním vymaže.

    Zrcadlo x a Zrcadlo y
    Těmito příkazy můžete obsah okna zrcadlově převrátit kolem osy x, nebo y. Jedná se samozřejmě o osy okna. Spolu s bitovou mapou se převrátí i atributy.

    Rotace 1/4, 1/2 a 3/4
    Okno se otočí okolo svého středu o 90, 180 či 270 stupňů. Samozřejmě že se otočí i atributy.

    Slož
    Pokud vytváříte okny nějaké nové prvky obrázku, ať již příkazem "Zkopíruj okno" či "Změna velikosti", existují dvě možnosti, jak tyto prvky do obrázku umístit. Režim závisí právě na přepínači "Slož". Pokud je vypnutý, část obrazovky kam se má okno umístit se nejprve vymaže. V tomto režimu se rovněž převezmou i atributy. Je-li zapnutý, nový obsah se přidá ke starému. V tomto případě zůstanou atributy nezměněny. Spojení obrázků závisí také na stavu přepínače "Přes" (viz kapitola 8. Barvy).

    Vícekrát
    Pokud je tento přepínač vypnutý, provede se určitá akce s oknem ("Přesun", "Změna velikosti"...) pouze jednou. Pak se definice okna zruší. Zapnut´m přepínače získáte možnost provést operaci vícekrát za sebou, bez nutnosti znovu definovat okno.

    8. Barvy
    I přes jistou neohrabanost při ovládání barev je možné vytvořit poměrně slušné barevné obrázky. Menu barvy neobsahuje žádný příkaz, ale pouze přepínače, nebo sady přepínačů. V závislosti na jejich stavu se potom nastavují barevné atributy a řídí se operace s bitovou mapou.

    Téměř ve všech případech, kdy se provádí nějaké změny bitové mapy, se zároveň mění i atributy. Na tuto vlastnost je upozorněno v každém menu a příkazu, kterého se týká.

    Znovu zopakuji naši úmluvu z úvodu: bod označený termínem "zhasnutý", má barvu papíru a bod "rozsvícený" má barvu inkoustu. Kromě barvy papíru a inkoustu má atribut i další dvě vlastnosti: Jas - všechny barvy (s výjimkou černé) jsou o stupeň jasnější; máte tedy k dispozici vlastně 15 barev: základní sadu a sadu s jasnějším odstínem. Blikání - pokud je tato vlastnost aktivní, periodicky se prohazuje barva papíru a barva inkoustu; pokud máte nastavenou kombinaci černá-bílá, jde o obyčejné blikání, jinou kombinací lze však dosáhnout i jiných efektů.

    Další přepínače slouží k určení režimu při změnách bitové mapy. Problém je totiž následující: pokud vynášíte motiv do již existujícího obrázku, jak tento motiv začlenit? Buďto lze obrázky "položit přes sebe" tj. ve výsledném obrázku svítí všechny body, které byly rozsvíceny buď v jednom nebo druhém motivu. Další metoda je zhasnout v původním obrázku všechny body, které jsou v motivu rozsvíceny. Tyto režimy lze ovládat přepínači "Přes" a "Naopak".

    Inkoust
    Touto sadou přepínačů můžete zvolit platnou barvu inkoustu (rozsvíceného bodu). Po vyvolání se objeví nabídka osmi barevných čtverců. Právě platná barva je uzavřena do černého rámečku. Kromě barev máte k dispozici ještě čtvereček, který obsahuje písmeno t. Je to počáteční písmeno slova transparentní. Pokud zvolíte tuto "barvu", Art studio bude zachovávat při nastavení atributů původní barvu inkoustu.

    Papír
    Tato sada přepínačů je analogická k přepínači "Inkoust". Zde se ovšem jedná o barvy papíru (zhasnutého bodu). Opět máte k dispozici i možnost zvolit "transparentní" papír.

    Okraj
    Je pouze o pomocnou funkci. Tímto přepínačem lze totiž změnit barvu okraje. Tento fakt je v podstatě nedůležitý, ale někdy se vám může hodit; třeba pro posouzení celkového vzhledu obrázku i s příslušným okrajem.

    Jas
    K dispozici máte sadu přepínačů "Vypnout", "Zapnout" a "Transparent". Jejich prostřednictvím máte možnost stanovit, zda budou barvy v jasnějším odstínu, či nikoliv. Stav "Transparent" vám opět umožňuje požádat Art studio, aby ponechalo původní hodnoty.

    Při použití této vlastnosti při konstrukci obrázku dejte pozor na příkazy "Rastr 1", "Rastr 2" a "Zruš rastr" v menu "Jiné". Pokud tyto příkazy použijete, příznak jasu bude nenávratně ztracen.

    Blik
    Sada přepínačů je stejná jako u přepínače "Jas". Místo jasu se ale ovládá blikání; pokud je tato vlastnost zapnuta, zaměňuje se periodicky v atributu barva papíru s barvou inkoustu. Výsledný dojem je, že atributový čtverec bliká (pokud pochopitelně nemáte nastavenou stejnou barvu papíru a inkoustu; pak nebliká). Zase je přístupný transparentní stav, při kterém se tato vlastnost nemění.

    Přes
    Tento přepínač se týká operací s bitovou mapou. Pokud je zapnutý, je aktivní spojování obrázků v tzv. režimu XOR. Tento režim je pojmenován podle stejnojmenné logické funkce a znamená že se vykreslované body pouze prostě nerozsvítí, ale změní svůj stav (body, které byly zhasnuty se rozsvítí a naopak). Pokud je vypnutý, příslušné body se pouze rozsvítí.

    Kromě normálního kreslení je tento přepínač aktivní i při přihrávání obrázku z magnetofonu.

    Naopak
    Opět přepínač, který se týká operací s body (bitovou mapou). Pokud je vypnutý, chová se Art studio normálně; můžete malovat, vyrábět vzory. Pokud je zapnutý, chová se vzhledem k rozsvěcení bodů naopak. Takže všechny operace, které body rozsvěcely, je nyní budou zhasínat. Takže vhodná volba z menu "Maluj" vám může dát k dispozici poměrně výkonnou "gumu".

    Transparent
    Tento příkaz nastaví všechny přepínače na stav "transparentní". Pokud tedy budete provádět nějaké změny bitové mapy, nebude docházet ke změně atributů. Výhody tohoto režimu snad není potřeba vysvětlovat.

    Standard
    Tímto příkazem nastavíte všechny přepínače na "standardní" hodnoty" inkoust černý, papír bílý, jas a blikání vypnuté, bílý okraj, přes a naopak jsou vypnuté.

    9. Mgf.
    Tato verze Art studia umožňuje ukládat a zpětně číst data pouze z kazetového magnetofonu. Můžete takto nakládat buď s obrazovkou, nebo s tvary znaků (font). Ukládání a čtení fontu je popsáno v kapitole 6. Text.

    Obrazovku vytvořenou a nahranou Art studiem lze použít tak, jako by byla obrazovka uložena příkazem Basicu SAVE "jméno" CODE xxxxxx,6912, kde xxxxxx je pro vás nevýznamná adresa. Obrázek lze tedy například nahrát do obrazovky příkazem LOAD "" SCREEN$.

    Při čtení se obrazovka ukládá do záložní oblasti příkazu "Zpět" (viz kapitola 11. Ostatní). Pokud při čtení dojde k chybě, je zachován původní obrázek. Jestliže ale přesto chcete nahraný obrázek (byť s chybou), lze si ho snadno vyvolat příkazem "Zpět".

    Kteroukoli operaci s magnetofonem můžete kdykoliv přerušit stiskem klávesy BREAK (CAPS SHIFT + 0).

    Ulož soubor
    Příkazem uložíte na magnetofon celou obrazovku. Po aktivaci si Art studio vyžádá vložení jména souboru. Můžete vložit jméno dlouhé až 10 znaků. Vložení ukončíte klávesou ENTER. Následně se objeví zpráva Start tape, then press any key. Což znamená "Spusť magnetofon a stiskni klávesu". Pokud tedy poslechnete a stisknete klávesu, obrazovka se začne ukládat.

    Nahraj soubor, Nahraj další
    Příkazy se od sebe liší pouze tím, že "Nahraj soubor" si vyžádá jméno souboru, kdežto "Nahraj další" načte první nalezený vhodný soubor. Pokud Art studio narazí na nějaký soubor, zobrazí jeho jméno a k němu připojí poznámku o své další činnosti. Například poznámka čte se znamená, že Art studio je se souborem spokojeno a čte obrázek. Při neshodě jmen ohlásí nalezlo se. Je-li soubor příliš velký, ohlásí velké.

    Ověř soubor, Ověř další
    Jelikož si jistě vážíte své vlastní práce, budete se chtít pojistit proti špatné magnetofonové kazetě, nebo špatnému magnetofonu. Tyto příkazy vám umožní uložený soubor zkontrolovat. Rozdíl mezi příkazy byl vysvětlen v minulém odstavci. Při ověřování reaguje Art studio poznámkou ověřuje se.

    Přihraj soubor, Přihraj další
    Určitě se dostanete do situace, kdy budete potřebovat spojit dva obrázky dohromady. Tyto příkazy vám umožní připojit k existující obrazovce, tu která je na kazetě.

    Režim připojení závisí na stavu přepínače "Přes". Pokud je vypnutý, obrazovka se normálně připojí (viz kapitola 8. Barvy). Pokud je zapnutý, změní se všechny body v původní obrazovce, které jsou v přihrávané obrazovce rozsvíceny.

    Atributy se nepřihrají, ale zůstanou původní.

    10. Tisk
    Jistě nastane čas, kdy budete potřebovat nějaký obrázek dostat na papír. Jinými slovy, budete ho potřebovat vytisknout. To předpokládá, že budete mít k dispozici tiskárnu, která umí tisknout grafiku. Ze zahraničních bodových tiskáren jsou to téměř všechny.

    Art studio vám nabízí poměrně širokou škálu možností jak a kam obrázek vytisknout. Obrázek můžete vytisknout v několika velikostech. Výsledný obrázek můžete na stránce umístit vpravo, vlevo nebo doprostřed.

    Instalace specifického druhu tiskárny je popsána v kapitole 12. Instalace.

    Rovněž je možné vytisknout obrázek se simulací barev. Místo jednoho bodu se tiskne rastr, který převádí barvu do stupňů šedi.

    Tisk 1x1, 2x2, 3x3, 4x4 a 5x5
    Těmito příkazy spustíte tisk na vaší tiskárně. Rozdíl mezi jednotlivými příkazy je ve velikosti obrázku. Příkazem 1x1 se tiskne obrázek v normální velikosti; bod na obrazovce je bod na papíře. Ostatní příkazy tisknou místo bodu čtverec příslušné velikosti. Pokud některý příkaz nelze aktivovat, je to způsobeno tím, že počet bodů na řádce nedostačuje pro příslušnou velikost.

    Tisk lze opět zastavit stisknutím klávesy BREAK (CAPS SHIFT + 0).

    Pokud nelze vyvolat žádný z příkazů, znamená to, že není nainstalovaná tiskárna.

    Tisk dle barev
    Tímto příkazem spustíte tisk se simulací barev. Obrázek má velikost 3x3. Místo jednoho bodu se tiskne čtvereček o velikosti 3x3 body. Každá barva je reprezentována rastrem, který více či méně převádí určitou barvu do stupnice šedi.

    Normální tisk, Dvojitý tisk
    Sada přepínačů vám umožňuje poslat jednu ze dvou inicializačních sekvencí znaků (viz kapitola 12. Instalace). Možný význam je například tisk v jednoduché nebo dvojité hustotě grafiky.

    Otočit
    Pokud je přepínač zapnutý, tiskne se obrázek otočený o 90 stupňů; je položen na bok. Takto můžete vytisknout obrázky i ve větším měřítku než v normální pozici. Velikost obrazovky je totiž 192x256 bodů. V normální poloze potřebujete tedy na řádce násobky 256 bodů. Otočený obrázek vyžaduje méně; násobky 192 bodů.

    Zarov. vlevo, Střed, Zarov. vpravo
    Touto sadou přepínačů můžete určit pozici obrázku na papíře. Buď je obrázek posunut co nejvíce vlevo, nebo vpravo. Případně je umístěn do středu papíru. Tyto pozice jsou samozřejmě relativní podle nainstalované kapacity řádky. Pokud uvedete v instalaci méně bodů než se na řádku skutečně vejde, potom bude obrázek posunut k levému okraji.

    Line feed
    Přepínač vám umožní povolit či zakázat vyslání dodatkového znaku pro ukončení řádky (viz kapitola 12. Instalace).

    ZX-Printer
    Pokud jste vlastníky speciální tiskárny ZX-Printer, nebo jiné s ní kompatibilní, případně některého emulátoru ZX Spactra, který tuto tiskárnu podporuje, nemusíte provádět instalaci a použít tento příkaz. Tisk se provede pomocí speciálního podprogramu v Basicu. V tomto případě nemají na tisk přepínače žádný vliv.

    11. Ostatní
    V předchozích odstavcích byly popsány téměř všechny možnosti Art studia. V této kapitole se krátce zmíním o zbývajícím.

    V hlavním menu se nachází příkaz "Zpět". Po jeho vyvolání se neobjeví podmenu, ale přímo se vykoná. Art studio disponuje jednou "záložní" obrazovkou, do které čas od času uloží aktuální stav obrazovky. Tím "čas od času" mám na mysli, že se uloží například po vykonání nějakého příkazu, po nahrání obrazovky z magnetofonu atd. Po aktivaci příkazu "Zpět" se záložní obrazovka přesune do hlavní.

    Jestliže tedy například vyplňujete nějakou plochu, a zjistíte, že se vám to nepovedlo, můžete příkazem "Zpět" vyvolat stav obrazovky před vyplněním.

    Další zvláštností v hlavním menu jsou obrázky šipek, umístěné vlevo od nabídky příkazů. Obrazovku nevidíte vždy celou, neboť tři řádky (24 bodů) jsou zakryté hlavním menu. Art studio však umožňujepracovat se všemi body na obrazovce. Zmíněné šipky vám umožní posunout viditelnou část obrazovky. Ta se posune směrem, kterým ukazuje šipka. Jednou aktivací se posune o jednu řádku (8 bodů). Bílý obdélníček vedle šipek se posouvá nahoru nebo dolů podle toho, kterou šipku jste zvolili. Indikuje, která část obrazovky je právě viditelná.

    Pozor, při posunování obrazovky se může stát, že se zruší navolené funkce. Typický příklad je, pokud chcete zarámovat celou obrazovku. Vezmete obdélník, jeden roh umístíte do rohu obrazovky, potom v dobré víře přesunete viditelnou část obrazovky a ejhle, definice obdélníku se zruší.

    12. Instalace
    Art studio umožňuje tisknout vytvořené obrázky na tiskárně. Pokud ale nevlastníte speciální tiskárnu označovanou jako ZX-Printer, kterou umí Art studio ovládat rovnou, musíte provést instalaci vaší tiskárny. Modifikace spočívá v začlenění modulu, který obsahuje definici tiskárny a příslušné podprogramy pro inicializaci a ovládání.

    Postup modifikace je následující:
    1. Upravit ukázkový modul pro vaši tiskárnu a interface.
    2. Přeložit a nahrát přeložený kód (třeba programam MASM).
    3. Nahrát část Art studia příkazem LOAD "ART - CS" CODE 31200.
    4. Potom nahrát přeložený kód příkazem LOAD "jméno" CODE 34629,100.
    5. Nahrát zpět část Art studia příkazem SAVE "ART - CS" CODE 31200,29600.