Za poslední dva měsíce došlo do redakce asi 10 odpovědí na anketu. Protože však ještě není uzavřena, nebudu se prozatím dotazům z P.S. věnovat, abych tak případně nepodnítil další zvědavce. No, na jeden menší dotaz z této hromady přece jen odpovím, příště opravdu napíšu něco o GDOSu (se SPEEDOGDOSem a NVDI to bude horší, protože vše, co jsem našel, bylo prozatím v němčině, ale možná ještě něco někde bude).
Teď k prvnímu, a zároveň předposlednímu dotazu dnešního RvsČ. Je to spíše taková menší kritika od TMDyka, kterou si přál výslovně otisknout.
Zajímalo by mě a jistě i jiné redaktory, kteří mají stejné problémy s editorem Narsilu.
Starý editor, který jsem měl od Tebe předtím dělal to, že umazával barevné objekty ( podtržení, atd... ), ale ten nový, který jsi mi zaslal nyní, umazává řádky a posunuje je. Teď jsem 8x, slovy osmkrát, jsem předělával Game Master, protože po pár stránkách se mi sám od sebe posunuly řádky. Nemluvím ani tak o tom, že mi přestaly pasovat barevné obdélníky do textu, ale to že se mi text posunul. Kdyby se aspoň text posunul do další stránky. Jenže některé řádky se ztratily úplně, z jiných zůstalo jen pár písmen. Co je ovšem nejhorší, že ten tvůj slavný editor je problémový v tom, že když ukládáš .PNA, tak se stává, že se přepíše adresář. Tj. ten nový editor mi už zničil 2 disky. Texty, PNA, obrázky; takže GM jsem dělal po těch všech problémech ještě druhý den znovu. A druhý dotaz je ke ztrácení obdélníků a podtržení. Kolik jich smí být. Jednou si říkal, že asi 100, ale mě se ztrácejí už při počtu 50. Dál kolik smí být listů. Jestli je lepší mít dva soubory po 10 listech nebo jeden s 20 listy. Poslední dotaz je znovu k tisku článků. Už jsme o tom jednou mluvily. Proč není možno, aby tisk byl proveden i v obyčejném standartním provedení. Nepotřebuji mít vytištěn text v tučném, velmi zvláštním fontu. Nemluvě o tom, že při tisku každého 7 - 10 textu se blokne tiskárna, nebo to tiskne nesmysly. Tento problém není jen můj, už o tom jeden čtenář jednou psal. Naposledy mi to tisklo stále dokola jedny a tytéž řádky. Anebo to předělat do normálního tisku nedokážeš ?
Další část možná měla patřit spíš do ST NEWS, ale tady si ji možná někdo více všimne . . .
To je asi tak vše a hezky se bav při odpovědích pro mne. Pokud chceš nějaké zprávy, tak do GM napsalo asi 5 lidí, krom toho cos poslal Ty. Dalé v souboru Zanygolf jsem použil experimentu při posuzování hry. Hodnotilo ji asi 6 nebo 7 lidí. Už nevím, spočítej to. Co dál ? Radovi zbývá asi tak 190 do civilu.
Nová verze editoru má patrně opravdu pár chyb, bohužel u mě se nikdy neprojevili, takže k tomu nemám co říct. Osobně doporučuji pracovat způsobem. Nahrát fonty a text, uložit na disketu a pak opatrně přidávat obdelníky. Nevím bohužel, zda-li mohu nějak tyto chyby opravit. Nějaké změny jsem ve své interní verzi sice udělal, ale nejsem si jist tím, že by měli něco společného s tvými problémy. Každopadně ti mohu poslat zdrojový kód v Omikron Basicu, a pokud to dokážeš opravit, máš možnost (možná už to opravené je, měnil jsem něco v offsetech řádků, takže to mohlo zapřičinit to mizení), bohužel na Falconu nemám funkční kompilátor. A i sám omikron interpret běhá po několika mých tvrdých zásazích jen tak tak.
Taky jsem jednu chvíli uvažoval o nové verzi editoru vytvořené pomocí jazyka C. Jak to však dopadne, bohužel nemohu říci.
Ničení disků?? Patrně používáš takové chipové hudby, které natvrdo zakážou kontrolu výměny disk, tj. přehradí VBL rutinu. Jedinou možností je, jakmile budeš chtít saveovat, tak dlouho prohazovat disk A a B, dokud se neobjeví platný adresář, mělo by to fungovat.
To, že ti mizí obdelníky v textu už po padesáti osobně opravdu nechápu, protože v dimenzaci jich je prostě 100. Jediný problém, který vidím, se týká kompilátoru Omikronu, protože ten se chová dost často opravdu podivně.
Narsil krachuje po 7-10 textech??? To je kruté ;-), ale mě osobně nikdy nenapadlo, že by měl někdo zájem tisknout si celá čísla Narsilu na papír. Předělat na normální tisk by to samozřejmě šlo, ale v tom případě by se snížila kompatibilita s 9 jehličkovými tiskárnami, které by třeba němeli tenké písmo apod. Druhá věc se týká toho, jak se komu tisk v Narsilu libí. Bezdůvodně jsem určitě tento formát (2 sloupce) nevytvořil. Poté se na stránku vleze mnohem více místa (menší fonty), dále jsou do ní zapracovány obrázky atd. Tento druh tisku jsem zvolil, protože se mi osobně líbí víc. Pokud by se však ozvalo mnoho lidí se silně negativní reakcí, mohu to samozřejmě změnit. Nakonec, rozhodl jsem se, uveřejnit plný formát diskmagu Narsil (PNA), takže, počkej do příště, a pak se můžeš hrabat v čem chceš.
RADO? Už aby ho pustili . . .
Druhý dotaz došel od CHRUBIho a musím říci, že konečně přišlo něco okolo kódování. Dnes tedy poprvé, a já pevně věřím, že ne naposled, poradím dalšímu coderovi v našich řadách.
Mimo jiné umí tento člověk i vcelku slušně kreslit, takže má možnost, graficky si svá dílka sám doplnit, což cením.
. . . A nakonec mám dotaz, který se týká programování v assembleru. Mám nějaké pozadí (obrázek, ne část těla :-)), v popředí :-) mám třeba nějaké pohybující se sprite. Jak se docílí to, že sprajty pozadí nemažou, čili, že se pozadí obnovuje. Jakého postupu se používá (vždyť v 1 VBL procesor nestíhá nakopírovat (bez použítí blitteru) celou obrazovku. Nebo stíhá? Pak to ale žere spoustu času procesoru. Pak mám ještě jednu otázku. Existuje na ST ukazatel na systémovou sadu znaků, jestli ano, pak na které adrese leží. Předem díky za odpověď.
Nemáš za co, na takové dotazy odpovídám mile rád.
. . . A to je pro dnešek vše ;-)), dobrá, přece jen se vrátím k té odpovědi :-).
Procesor každopádně stíhá mazat celou obrazovku během jednoho VBL? Jak?
Takhle:
move.w
61,d0
move.l OBRAZOVKA(pc),a0 ;adresa obrazove pameti
lea 32000(a0),a0 ;pujdeme odzadu dopredu, je to rychlejsi
clr.l d1
clr.l d2
clr.l d3
clr.l d4
clr.l d5
clr.l d6
clr.l d7
move.l d1,a1
move.l d1,a2
move.l d1,a3
move.l d1,a4
move.l d1,a5
move.l d1,a6
;sedma by pouzil i A7 :-)
CLRSCR32000:
rept 9 ;kompiluj 10x
movem.l d1-d7/a0-a6,-(a0)
endr
movem.l d1-d7/a0-a4,-(a0)
dbf d1,CLRSCR32000 ;mazat 32kb
Funkční kód pro asembler najdeš v adresáři CHRUBI archívu DATA014.TOS.
Pokud chceš, nemusíš vůbec kopírovat celou obrazovou pamět, ale jen tu část, která byla změněna. Jak potom vytvářet například animace apod.
Takže, každopádně si nevystačíš pouze s jednou obrazovkou (na to jsi už pravděpodobně přišel sám). Jednu obrazovku musíš mít jako tzv. background (pozadí). Ta se nemění a její informace jsou používány jen a jen pro obnovu dat. Druhou a třetí obrazovku používáš pro jednotlivé pozice obrazovky.
Nejjednoduššeji to půjde vysvětlit pomocí jednoduchého algoritmu. Pro názornost použiji třeba assembler, ale jde to provést v kterémkoliv jiném jazyku.
bsr Kopiruj_Background_do_ScreenI
bsr Kopiruj_Background_do_ScreenII
;kopirování provedeš stejně jako mazání, ale navíc budeš vybírat do registrů hodnoty, tím se celá operace 2x zpomalí (nezapomeň na to, že bude muset celou rutinu překopat, registr navíc potřebuješ na adresu zdroje).
bsr Zapni_druhou_Obrazovku_jako_aktivni
;to provedeš změnou hardwarové adresy obrazové paměti nejlépe přes instrukci movep (by sedma).
PAINT_AGAIN: bsr Vykresli_sprajty_do_Obrazovky_I
;tedy do neviditelne obrazovky
bsr Prohod_I_a_II
;aktivni bude obrazovka I (poprve, pak zas II). Prostě se prohodí jejich pointery, do hardwarové banky se zapíše vždycky ten druhý screen
bsr Oprav_Neaktivni_Obrazovku
;buď se kopíruje celý Background do Neaktivní obrazovky (v případě, že existuje hodně sprite), nebo se obnoví jen oblasti pod vykreslenými sprite, pokaždé se to dělá přes MOVE (žádny or, eor, and apod.)
bsr TVA_RUTINA
;kolize, posuny, dalsi vypocty apod.
bra PAINT_AGAIN
Nějakým podobným způsobem to musíš udělat. Této metodě se jinak také říka doublebuffering. Budeš si s tím muset trochu pohrát, ale já věřím, že se ti to nakonec přece jen podaří.
Existuje však ještě jedna metoda, která podobnou věc umožní. Ta se dá použít pouze v případě, že tvůj sprajt bude velmi malý. Postup je následující, na počátku VBL rutiny obnovíš data, která byla na místě, kde je tvůj sprite, původně, potom vykreslíš sprite a čekáš na další VBL.
Jak je možné, že není vidět, např. u ATARI kurzoru, žádné mizení apod.??? Velmi jednodušše, VBL přerušení se volá na konci viditelné obrazovky, tj. po 200. řádku na TV. Potom zbývá asi ještě 70 řádků, které počítač (nepoužiješ-li border) nevyužije, během nich můžeš kreslit opravdu co chceš a nikdo samotný průběh změny nespatří.
Výhoda doublebufferingu oproti VBL kopírovací rutině spočívá především v tom, že není nutné vše stíhat bezpodmínečně během jednoho VBL. Ono někdy i 25 snímků za sekundu plně postačí :-). Některé efekty dokonce klesnou až na 10 snímků a člověk se přesto nezlobí, protože má v sobě jakousi automatiku, která se snaží ve všem vidět skutečný pohyb.
Nevýhodou naopak je, nutnost kopírování velkých bloků paměti (ovšem to vždy záleží spíše na programátorovi, zda si vybere kopírování celé obrazové paměti, nebo jen oblastí skutečných sprite).
A především, veliká pamětová náročnost, některé hry používají dokonce až pět kopií původní obrazovky, aby ušetřili rychlost procesoru. Jak?? Když už pomocí movem.l načtou určitý blok paměti, proč ho kopírovat jen jednou, když se to dá stihnout 2x. No a při nevyužitém cyklu kopírování mohou zase dělat něco jiného a zrychlí se tak vše o dobrých 25% . . .
Jestli má ST nějaký ukazatel na systémovou znakovou sadu??? Protože počítače ATARI ST pracují v grafickém režimu, nepoužívají žádný klasický ukazatel (jako ATARI 800), ale jejich operační systém má několik volání, kterými nastavuje určité fonty. Dá se to provést přes LINE-A (tedy už při bootu, není potřeba GEM) nebo přes služby VDI. Pokud bys však chtěl kódovat, vyhni se jakékoliv systémové službě a raději si rutinu pro vykreslování fontů naprogramuj sám.
Radou, jak takovou znakovou sadu změnit, ti může být DC.W $a000 (inicializace LINE-A), ta předá tři ukazatele, jeden z nich, (asi ten třetí) ukazuje na oblast paměti, kde jsou další tři ukazatele na adresy znakových sad.
A na poslední chvíli došla úvaha od Davida Janeby z Draconixu.
V poslední době mám pocit, že pesimismus okolo budoucnosti ST silně narůstá. Přitom však dochází k určitému paradoxu. Na jedné straně je zde evidentně se rozpadající základna uživatelů STéček a na druhé straně zřejmě vzrůstající obavy o naši budoucnost rozpoutaly všelijaké snahy o záchranu ST scény. V době, kdy byl ještě počet uživatelů STéček mnohem větší, se o nějakou scénu nikdo nestaral. Vzpomínám si, že v době ještě před Narsilem zde panovala podobná lhostejnost a apatie, s jakou se setkávám nyní u lidí okolo PC. Dostatečný přísun nových a hlavně kvalitních her svým způsobem poněkud demotivuje. Potenciální autor či programátor si řekne, že nemá smysl se namáhat, protože průměrný člověk úrovně komerčně úspěšných her těžko dosáhne. Vakuum, které vzniklo po téměř úplném zániku herního trhu, svým způsobem vytvořilo živnou půdu pro mnohé tyto latentní tvůrce. Avšak mnozí z těchto lidí nyní propadají ještě většímu pesimismu a někteří dokonce uvažují o prodeji STéčka a přechodu na jinou platformu. Argumentují tím, že snížení počtu aktivních uživatelů STéček je natolik drastické, že v podstatě již není pro koho nové hry vytvářet. Po změně platformy se však často tito lidé, dříve velmi tvořiví, po několika zklamáních plynoucích z jejich naivity a ze zkušeností z diametrálně odlišné scény, snadno stávají pouhými konzumenty. Počítačový svět tak přichází o mnohé, i když jen průměrné a nepříliš ambiciózní, přece jen tvůrce. Je však pochopitelné, že většina autorů potřebuje alespoň nějakou odezvu. Když už svůj výtvor dávají volně k dispozici nebo jej prodávají jen za mírný poplatek, potřebují vědět alespoň orientačně, ke kolika lidem se jejich výtvor dostal, kolika z nich se líbil, atd. Mnozí z nás se nyní právem ptají, jestli má smysl se ještě do něčeho nového pouštět. Pokud je situace vskutku tak špatná jak se zdá, pak musím dát zapravdu mým kolegům z Draconixu, že to smysl asi nemá. Myslím si, že požadavky našich autorů jsou opravdu minimální a že oni sami si zaslouží větší podporu. Pokud chceme zachránit alespoň to, co z ST scény ještě zbylo, měli bychom překonat vlastní lhostejnost a pohodlnost a věnovat trochu pozornosti lidem, kterým zřejmě i hrstka spokojených uživatelů stojí za všechnu tu námahu.
Ačkoliv se necítím na to, abych pravidelně přispíval do Narsilu, rád bych se s ostatními podělil o něco, co by některé mohlo zajímat. Jedná se o emulátor disketové jednotky pro ATARI 800. I když je toto téma možná poněkud vzdálené zaměření Narsilu, snad to pro někoho bude užitečné. V Public Sectoru je tento program na disku PRG003.
To byla opravdu zajímavá úvaha a mně osobně přinesla další nový náhled na věc. Ne každý musí na programování, skládání či kreslení vydělávat. Většině tvůrců proto stačí uznání jejich výtvorů, proto pokud by se autorovi ozvalo řekněme třicet či čtyřicet lidí s uznáním kvality jejich posledního produktu, patrně (upozorňuji, že na disku CZE003 je zcela nová revize dokonalého návodu na Ishar I od Draconixu a úplně nová hry od Čábry) by od Atari strojů tolik lidí neodcházelo. Nakonec, dostanou-li se k PC, stejně se jim přílišného uznání nedostane, byť tento computer ma asi 100x více lidí, protože všichni jsou navyklý na dokonalé zahraniční výtvory. Proto, pokud používáte nějaké volně šiřitelné výtvory či hrajete hry, měli byste se určitě autorům ozvat, Třeba s novoročním přáním, nebo jen tak.
OSUD ATARI SCÉNY OPRAVDU ZÁLEŽÍ NA NÁS, NEZNIČME SI JI SAMI.
Ještě odpoveď Davidovi a možnost pro všechny ostatní. Vůbec nevadí, že se nestaneš stalým redaktorem Narsilu, opravdu vítám kterýkoliv článek o něčem zajímavém od kohokoliv a nemusí se to přímo týkat počítačů ATARI, může to být třeba obecné pojednání o vlivu počítačů na lidi. Jedinou podmínkou, kterou si u každého článku kladu, je pochopitelnost pro všechny čtenáře, tedy jedná-li se o poněkud neobvyklou záležitost, není vhodné ohánět se navíc spoustu cizích slov a prázdných definicí. Raději vše předvést na praktickém příkladě. NARSIL PODPORUJE ČEŠTINU (mluvím čistě obecně). Ještě jednou tedy dík za článek, podívej se do Credits, jsi tam :-).
HEAD
P.S. K Rozsypání Menu: Na mém Falconu to nědělá, ale věřím, že je to možné, udělal jsem jednu změnu, pokud by se to rozsypávalo dále, ozvětě se, opět se na to podívám.
Malá technická poznámka, nevím jak Ptáka spustit a pod čím jste ho kompilovali. Ale na Falconu tam jen lítá jakýsi netopýr zleva doprava a nic :-).
P.P.S. Hluboko po všech uzávěrkách (nepochopitelně v sobotu, zatímco Narsil má vyjív v pondělí či úterý) došel ještě jeden dopis od Tondy Slavíka.
1) Nakopírovat shareware verzi Narsilu i přesto, že jsi si ho už zaregistroval, můžeš velmi jednodušše (podle mě se stejně jedná o hypotetickou úvahu, ale budiž). Nedáš mu druhý soubor s koncovkou čísla Narsilu. U 13 to bylo NAR02.013. A poté je Narsil neregistrovaný a bez článků :-).
Chaos engine by měl v originální verzi fungovat opravdu na všech počítačích na 8 Mhz a s procesorem 68000. Na mém TOSu 1.4 sice nejela jakási jeho podívná kopie, ale na TOSu 1.2 a 1.6 jede vše v pohodě.