Uživatelské nástroje

Nástroje pro tento web


lnxspectrum:hgfx

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
lnxspectrum:hgfx [2020/07/28 12:11]
lanex
lnxspectrum:hgfx [2020/07/28 12:55] (aktuální)
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šší, a přitom výkonnější.  Skládá se ze 3 částí. První část jsou dva Buffery / Videoram, které jsou nad původní ZX videoram. Která se zobrazuje a do které se zapisuje se dá řídit pomocí registrů. Jejich rozlišení je 640x240 pixelů, každý pixel může mít 1 barvu z 256 indexových barev. Defaultně je nultý index průhlednost, tam se zobrazuje původní videoram ZX. +Na rozdíl od **LnxBlitteru** je celkově jednodušší, a přitom výkonnější.  Skládá se ze 3 částí. První část jsou dva Buffery / Videoram, které jsou nad původní ZX videoram. Která se zobrazuje a do které se zapisuje se dá řídit pomocí registrů. Jejich rozlišení je 640x240 pixelů, každý pixel může mít 1 barvu z 256 indexových barev. Defaultně je nultý index průhlednost, tam se zobrazuje původní obsah videoram ZX. 
  
 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 "razítek". Díky tomu se dá vykreslovat všude po celé HiRes ploše, ale i rychle vykreslovat větší počet spritů. Jako příklad postupu si popíšeme vykreslení dvou spritů:
 +
 +-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: 2020/07/28 12:55 autor: lanex