lnxspectrum:hgfx
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revizePředchozí verze | Následující verzeObě strany příští revize | ||
lnxspectrum:hgfx [2020/08/14 19:37] – lanex | lnxspectrum:hgfx [2020/08/14 19:53] – lanex | ||
---|---|---|---|
Řádek 23: | Řádek 23: | ||
Druhý je **Ink**. Tam kde je v zapisovaném bajtů logická jednička se do Bufferu zapíše právě vybraná indexová barva. Kde jsou logické nuly, se nic nemění. | Druhý je **Ink**. Tam kde je v zapisovaném bajtů logická jednička se do Bufferu zapíše právě vybraná indexová barva. Kde jsou logické nuly, se nic nemění. | ||
- | Třetí je **Copy**. Je to speciální funkce, díky které je možný například Vertikální Scroll v Basicu, nebo dokonce Horizontální Scroll o libovolný počet pixelů. Funguje to tak, že při čtení z Videoram se sice načte obsah paměti do registru, ale interně se v HGFX vyzvedne do odkládacího prostoru obsah 16 pixlů. ZX při zápisu jednoho bajtu zapíše 8 pixlů naráz. To odpovídá šířce 16 pixlů v HiRes, proto interně HGFX pracuje s 16 pixely. Při opětovném zápisu do Videoram se do Bufferu v HGFX zapíše na nové místo právě těchto 16 pixelů. Tím dojde k překopírování obsahu v Bufferu. Můžu tedy například nastavit ofset na 1, načíst obsah z adresy 16384 a znovu zapsat na adresu 16384. Tím se mi obsah Videoram posune o jeden pixel doleva. Takový zápis proběhne pouze 1x, při dalším zápisu do Videoram se chová | + | Třetí je **Copy**. Je to speciální funkce, díky které je možný například Vertikální Scroll v Basicu, nebo dokonce Horizontální Scroll o libovolný počet pixelů. Funguje to tak, že při čtení z Videoram se sice načte obsah paměti do registru, ale interně se v HGFX vyzvedne do odkládacího prostoru obsah 16 pixlů. ZX při zápisu jednoho bajtu zapíše 8 pixlů naráz. To odpovídá šířce 16 pixlů v HiRes, proto interně HGFX pracuje s 16 pixely. Při opětovném zápisu do Videoram se do Bufferu v HGFX zapíše na nové místo právě těchto 16 pixelů. Tím dojde k překopírování obsahu v Bufferu. Můžu tedy například nastavit ofset na 1, načíst obsah z adresy 16384 a znovu zapsat na adresu 16384. Tím se mi obsah Videoram posune o jeden pixel doleva. Takový zápis proběhne pouze 1x, při dalším zápisu do Videoram se chová |
===Obsluha celé Videoram=== | ===Obsluha celé Videoram=== | ||
Řádek 29: | Řádek 29: | ||
Jak obsluhovat celou Videoram, když je jen 6144 B velká? Systém funguje na principu " | Jak obsluhovat celou Videoram, když je jen 6144 B velká? Systém funguje na principu " | ||
- | -Nejprve inicializace HGFX, Videoram na adresu | + | -Nejprve inicializace HGFX, Videoram na adresu |
-Nastavíme pozici razítka na 100,100 (v pixelech) | -Nastavíme pozici razítka na 100,100 (v pixelech) | ||
- | -do videoram na adresu | + | -do videoram na adresu |
-nastavíme znovu pozici razítka, nyní 100,101 | -nastavíme znovu pozici razítka, nyní 100,101 | ||
- | -do videoram na adresu | + | -do videoram na adresu |
Nastavování pozice razítka opakujeme pro všechny linky spritu. | Nastavování pozice razítka opakujeme pro všechny linky spritu. | ||
Řádek 39: | Řádek 39: | ||
Pro kreslení není ze strany Z80 potřeba žádná rotace, to šetří spousta strojového času. Vykreslování funguje na principu nastavení absolutní X,Y pozice na obrazovce, a následné vykreslení do videoram na první pozici, například 16384. Bajt se vykreslí na pozici nastavených X,Y, nikoliv na ZX pozici 0,0. X je 10 bitová hodnota, aby pokryla celý možný rozsah v HiRes, 0-639. Y si vystačí s 8 bity, 0-239. | Pro kreslení není ze strany Z80 potřeba žádná rotace, to šetří spousta strojového času. Vykreslování funguje na principu nastavení absolutní X,Y pozice na obrazovce, a následné vykreslení do videoram na první pozici, například 16384. Bajt se vykreslí na pozici nastavených X,Y, nikoliv na ZX pozici 0,0. X je 10 bitová hodnota, aby pokryla celý možný rozsah v HiRes, 0-639. Y si vystačí s 8 bity, 0-239. | ||
+ | Pro případ že chceme vykreslovat druhou linku spritu nemusíme nutné měnit Y a vykreslovat na stejnou adresu jako předtím (16384). Videoram má 6144 bajtů. Druhou linku můžeme vykreslovat bez změny Y, na adrese 16416, nebo v případě nelineárního módu na adresu 16640. Stejná adresa jako adresa druhé linky v originální Videoram ZX. Díky tomu bude možné upravit stávající software na používání HGFX enginu, nebo barevné možnosti používat s běžným Basicem. | ||
lnxspectrum/hgfx.txt · Poslední úprava: 2022/07/18 18:36 autor: lanex