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/07/28 12:11] – lanex | lnxspectrum:hgfx [2020/07/28 12:55] – lanex | ||
---|---|---|---|
Řádek 3: | Řádek 3: | ||
**HGFX** je alternativní grafický systém, navržený pro ZX Spectrum. Je možné ho zrealizovat pomocí FPGA, a připojit k reálnému ZX Spectrum jako interface. Systém zvyšuje výkonnost celého grafického rozhraní, ale také grafické možnosti celého ZX Spectra. | **HGFX** je alternativní grafický systém, navržený pro ZX Spectrum. Je možné ho zrealizovat pomocí FPGA, a připojit k reálnému ZX Spectrum jako interface. Systém zvyšuje výkonnost celého grafického rozhraní, ale také grafické možnosti celého ZX Spectra. | ||
- | Na rozdíl od **LnxBlitteru** je celkově jednodušší, | + | Na rozdíl od **LnxBlitteru** je celkově jednodušší, |
Velikost jednoho Bufferu je tedy 153600 Bajtů. To je pro ZX Spectrum hodně dat, Buffery jsou proto jen **Write Only**. Rozlišení 640x240 je pro případ použití HiRes režimu. Do Bufferů se dá kreslit jak v HiRes režimu, tak v LowRes současně. Systém nemá žádné problémy s Attributy, jako klasická ZX videoram. Co pixel, to barva, ať je kdekoliv. | Velikost jednoho Bufferu je tedy 153600 Bajtů. To je pro ZX Spectrum hodně dat, Buffery jsou proto jen **Write Only**. Rozlišení 640x240 je pro případ použití HiRes režimu. Do Bufferů se dá kreslit jak v HiRes režimu, tak v LowRes současně. Systém nemá žádné problémy s Attributy, jako klasická ZX videoram. Co pixel, to barva, ať je kdekoliv. | ||
Řádek 24: | Řádek 24: | ||
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á stejně jako režim **Ink**, dokuď nedojde k dalšímu čtení z Videoram. | 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á stejně jako režim **Ink**, dokuď nedojde k dalšímu čtení z Videoram. | ||
+ | |||
+ | ===Obsluha celé Videoram=== | ||
+ | |||
+ | Jak obsluhovat celou Videoram, když je jen 6144 B velká? Systém funguje na principu " | ||
+ | |||
+ | -Nejprve inicializace HGFX, Videoram na adresu 32768, linearní režim. | ||
+ | -Nastavíme pozici razítka na 100,100 (v pixelech) | ||
+ | -do videoram na adresu 32768 a 32769 vykreslíme první linku spritu. | ||
+ | -nastavíme znovu pozici razítka, nyní 100,101 | ||
+ | -do videoram na adresu 32768 a 32769 vykreslíme druhou linku spritu. | ||
+ | |||
+ | Nastavování pozice razítka opakujeme pro všechny linky spritu. | ||
+ | |||
lnxspectrum/hgfx.txt · Poslední úprava: 2022/07/18 18:36 autor: lanex