OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 18.04.2024, 06:25

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 41 ]  Přejít na stránku 1, 2, 3  Další
Autor Zpráva
 Předmět příspěvku: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 05.08.2021, 15:19 
Offline
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3814
Has thanked: 279 times
Been thanked: 456 times
Zdravím pokročilejší kolegy, mám dotaz, zda vůbec a pokud ano tak jakým způsobem lze rolovat obraz u PMD 85 v Basicu. Modelová situace autíčko na závodní dráze nebo nějaká drátová "konstrukce" - modelace pohybu závodní dráhy. Nebo plošinovka, tam se jedná obvykle pohyb pozadí scény zleva doprava apod.

PMD umožňuje v pseudograficko-textovém režimu posouvat řetězce ale to není scroll pozadí a posuv je po sloupcích, tedy s malým rozlišením. V grafickém režimu bych zase řekl že Basicu rychle dojde dech když by musel vykreslovat minimálně měnící se = "pohybující se" část scény. U víc než pár úseček na obrazovce mi to přijde skoro nemožné aby se to hýbalo plynule.

Rád bych rozhýbal drátěnou konstrukci ze dvou křivek ve tvaru silnice jen na části obrazovky aby to běhalo rychleji.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 05.08.2021, 16:45 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3661
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 795 times
Pokial je to "dratena" konstrukcia a nema prilis vela ciar, tak najvyhodnejsie bude robit posuv celkovym prekreslenim novej konstrukcie namiesto starej.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 05.08.2021, 18:09 
Offline
Profík

Registrován: 28.07.2018, 14:37
Příspěvky: 923
Has thanked: 43 times
Been thanked: 411 times
Třeba takové "auto" - klasika všech klasik na PMD-85. Tam se zdánlivý pohyb krajnice cesty nalevo a napravo od autíčka vytváří tak, že se v obou místech krajnice projde shora dolů celá obrazovka a pouze v tomto místě se krajnice buď posune o jeden bajt doleva, nebo zůstane, nebo se posune o jeden bajt doprava - samozřejmě podle určitého algoritmu.

Z toho vyplývají dvě věci. Za prvé na tom autíčku uvidíš přibližnou maximální dosažitelnou rychlost "pohybu" i při použití nějaké finty. Pohyb celé plochy hrubou silou je někde úplně jinde v tom smyslu, že je to nepoužitelné. A samozřejmě z toho BASICu musíš volat strojovou rutinu. BASIC na to nemá ani náhodou. Za druhé pohyb do stran je z hlediska rychlosti použitelný pouze po bajtech. Ano, jde to i po jednotlivých pixelech, a v praxi je lepší kompromis, pokud rotuješ po dvou pixelech, ovšem ta rychlost animace rychle klesá tak, že třeba u FLAPPY2k se rotuje jen 7 mikrořádků s nápisem a ještě jsou zkráceny na cca 36 bajtů. A je to limit toho, co si lze dovolit. Ovšem nelze generalizovat. Každá úloha je jiná.

Suma sumárum, rozmysli si, jestli chceš rotovat obrazovku či její výseč s nakreslenými objekty, či jak říká jinými slovy BUSY, překreslovat objekty. Protože ty objekty se budou tak jako tak měnit, takže jejich posuv může být integrální součástí překreslování jejich tvaru (a tak se to většinou dělá, co jsem měl možnost pitvat cizí díla). Pokud bys chtěl opravdu obrazovku posouvat, tak jedině rutiny v assembleru a volat je z BASICu. Pak bych Ti nějaké konkrétní poslal. Bude to rychlé ale asi ne dost rychlé... Uvidíš, vyzkoušíš. Možná zkus detailněji popsat Tvé požadavky a představy.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 05.08.2021, 23:08 
Offline
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3814
Has thanked: 279 times
Been thanked: 456 times
Ano, Auto je takový nedostižný vzor :-). Já to mám jako basicovskou hříčku, dost zjednodušenou verzi kdy se používají písmena "I" pro stěny a Y coby "kosmická loď." Byl to první hra s grafické orgie slibujícím názvem - Průlet nebezpečným kaňonem,co jsem na PMD spustil. Tehdy jsem ani coby totální samouk neuměl data ukládat na kazetu ani koho se zeptat, takže jsem si program (není moc dlouhý) musel psát vždy znovu :lol:. Tuhle hru jsem nedávno při úklidu našel a rád bych si z ní udělal trochu pokročilejší verzi s normálním ovládáním joystickem, obrázky a tak :-). Existuje i verze pro PP-01, takže to se také časem dočká. Vzhledem k tomu, kolik hracích programů se pro PP zachovalo bych řekl že to je přes jednoduchost pořád dost unikát protože je to program opravdu z té doby.

Zatím jsem si udělal sprit o velikosti 6x8 pixelů alias 1 znaku ve tvaru kosmické lodičky, tak se s ním dá poněkud vylepšit grafická stránka hry i přes použitý textový režim. Ale narazil jsem na generování stěn a jejich posun, Basic je generuje jako text, kdy obrazovka automaticky roluje nahoru po řádcích a to generuje "pohyb" kdy cesta lodi je samozřejmě ve formě znaků nad sebou. Rád bych i stěny udělal z kostiček co by se posouvaly nahoru stejně jako u auta. Ovšem Basic je p-o-m-a-l-ý, ten zvládne jen statické sprity v počtu 1 změna v daném okamžiku aby to bylo ještě snesitelně rychlé. To jsem si vyzkoušel v Člověče, nezlob se. Jediný dostatečně rychlý režim je defakto prosté rolování textu nahoru.

Basic má šikovné příkazy WINDOWA a zde trochu méně vhodný WINDOWG pro text a grafiku, kdy text se dá dobře "uzamknout" do vybrané části obrazovky, což samozřejmě hru urychlí když PMD nemění celou VRAM a ještě jde okolo okna udělat graficky působivé pozadí, které se generuje/zobrazí jenom jednou a hra samotná pak samozřejmě vypadá o několik řádů lépe než rolující 3 znaky, zejména v ColorAce. Nepotřebuju dynamické změny rychlosti, pro začátek bohatě stačí když bude krajina ubíhat stále stejnou rychlostí. Cílem totiž není projet to nejrychleji, ale bez nárazu do stěny.

Můj vrchol možného je část obrazovky vyplněná techno-obrázkem s okénkem, ve kterém se pohybuje loď (coby sprit bude zobrazena vždy jenom jedna a ne jako řada znaků) a chtěl bych písmena nahradit kostičkami o rozlišení 2x2 pixely tedy 1/4 znaku aby se dala dělat jemná spojitá čára. To bych technicky tak nějak věděl jak udělat v Basicu ale vím že by to bylo nehratelně pomalé. Basic je navíc ještě omezený na 80 bajtů strojáku v řadě když to má být součástí programu bez problémů s nahráváním do paměti, ale myslím že by to šlo očůrat když se to nahraje přes CODE kamkoliv a Basic bude mít jen adresy skákající na rutinky. Hru píšu primárně pro PMD 85-3, kde je k dispozici nejvíc RAM s tím, že se to bude pouštět hlavně v emulátoru kvůli obrázkům.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 05.08.2021, 23:41 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1520
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 383 times
Pak je to jasné.
Připravit si sadu semigrafických znaků s přepřipravenými tvary, na sebe při správném řazení (kaňon zahýbá doleva/kaňon zahýbá doprava/kaňon jde rovně) navazujícími, skládanými z těch 2x2 "pixelů", á la čárová grafika na ZX81 (nebo spíš jako na TRS-80).
I když by šlo samozřejmě předpřipravit i tvary v jemném rozlišení, nějaké opravdu stavební prvky graficky ztvárněného kaňonu, a na 2x2 se vykašlat, protože to při použití předdefinovaného znaku krom zhoršení estetické stránky nic neurychlí.
A použít prostý scroll v okně s jendoznakovou "raketkou".
A půjde to bez bajtu strojáku, čistý Basic.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 06.08.2021, 09:52 
Offline
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3814
Has thanked: 279 times
Been thanked: 456 times
Tak ty stěny zatím budu řešit pseudografikou zabudovanou do PMD verze 3, tedy znaky BDh,CDh. Vypadá to pořád o poznání grafičtěji než písmenka a hlavně - běží to rychle i v Basicu :-). Teď už jen dopiluju tu lodičku aby se vykreslovala na správném místě v tunelu a nějaké to eye-candy na obrazovku a bude z toho pěkná oddychovka.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 06.08.2021, 10:39 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1520
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 383 times
Zrovna na PMD 85-3 v režimu kompatibility by mělo být možné znakovou sadu předefinovat, protože, pokud se nepletu, je v takovém případě překopírovaná do RAM.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 06.08.2021, 10:54 
Offline
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3814
Has thanked: 279 times
Been thanked: 456 times
Asi ano, ale proč to dělat když docela dobře použitelné pseudografické znaky už trojka obsahuje? Leda tak tu lodičku aby to byl znak také ale jako sprit se to bude zase dobře přemazávat aby za ní nebyla čára duchů :-). Jinak ale idea dobrá, zapíšu si ji do poznámkovníčku.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 07.08.2021, 09:06 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3661
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 795 times
Tak ma napadlo - vobec netreba predefinovavat znakovu sadu a ani vhodne semigraficke symboly, ale mozno by nebolo zle vyuzit graficke prikazy BMOVE a BPLOT, ktore priamo dokazu vykreslit nejaky blok grafiky.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 07.08.2021, 12:52 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2287
Bydliště: Brno
Has thanked: 846 times
Been thanked: 308 times
Neni taketo vykreslovanie grafiky v basicu pomalsie ako ked sa pouziju preddefinovane znaky?

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 07.08.2021, 22:34 
Offline
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3814
Has thanked: 279 times
Been thanked: 456 times
Hlavně jak udělat scroll obrazovky s grafikou aniž by to řešil program překreslováním všech grafických bodů. Pokud se bude využívat BPLOT a BMOVE, musí se v paměti udržovat šaškárna kde jaký tvar je aby se dal překreslit při posunu na další řádek, normálně se jen budou překreslovat bloky v daných souřadnicích a obraz se nehýbe. Znakový režim toto scrollování naopak dělá automaticky. Pokud by šlo zařídit aby i grafika rolovala nahoru po řádcích jako text a řešil by se jen ten jeden řádek kde bude loď, tak sem s tím. To by mi vyřešilo všechny potíže s výkonem a ještě by ty "stěny" vypadaly dobře a mohly by i navazovat.

Co nějaká rutinka co by řádky 64 až 160 ( číslováno shora) pravidelně posunula o 8 nahoru mezi sloupci 3 až 45 aby se dal použít rámeček...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 07.08.2021, 23:01 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3661
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 795 times
Czech Human píše:
Hlavně jak udělat scroll obrazovky s grafikou aniž by to řešil program překreslováním všech grafických bodů. Pokud se bude využívat BPLOT a BMOVE, musí se v paměti udržovat šaškárna kde jaký tvar je aby se dal překreslit při posunu na další řádek, normálně se jen budou překreslovat bloky v daných souřadnicích a obraz se nehýbe. Znakový režim toto scrollování naopak dělá automaticky.
Nie je najmensi problem cokolvek kreslit cez BPLOT a nasledne to odscrollovat hore obycajnym PRINTom :)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 08.08.2021, 00:52 
Offline
Kecálek

Registrován: 10.07.2014, 01:57
Příspěvky: 169
Has thanked: 25 times
Been thanked: 225 times
Czech Human píše:
Co nějaká rutinka co by řádky 64 až 160 ( číslováno shora) pravidelně posunula o 8 nahoru mezi sloupci 3 až 45 aby se dal použít rámeček...


nieco taketo?

[ aby sme sa nepohybovali v neparnych sirkach/vyskach, rutina scrolluje riadky <64,160) a stlpce <3,45), teda ak som sa niekde nepreklepol v pocitani ;] ]


Přílohy:
scroll.bin [124 bajtů]
261 krát
scroll.txt [685 bajtů]
280 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 08.08.2021, 11:15 
Offline
Profík

Registrován: 28.07.2018, 14:37
Příspěvky: 923
Has thanked: 43 times
Been thanked: 411 times
Tak se taky přidám do diskuse. V příloze je demo program v BASICu pro PMD 85-3. Bohužel je to jen pro trojku, protože assemblerovskou část jsem musel zkompilovat od adresy BE00h, kam se kopírují programy v rámci příkazu CODE. (Nemohlo to přece zůstat kompatibilní s dvojkovou verzí, která spouští CODE od adresy 7000h, že...)

Jinak máme díkybohu emulátor PMD-85 od RMTeamu, jinak bych tu konverzi assemblerovského programu do řetězce v BASICu nedal. Takže spustit emulátor PMD 85-3, pomocí LOAD 1 natáhnout program a modifikovat.


Přílohy:
scroll.txt [726 bajtů]
280 krát
CHScroll.zip [412 bajtů]
260 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Scroll grafiky na PMD 85 v Basicu
PříspěvekNapsal: 08.08.2021, 11:28 
Offline
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3814
Has thanked: 279 times
Been thanked: 456 times
Díky všem za podnětné příspěvky, až budu mít chvíli tak to hned vyzkouším :-). Třeba se nakonec i ten Basic naučí snesitelně rychle rolovat plošinovky ;-).


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 41 ]  Přejít na stránku 1, 2, 3  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz