lnxspectrum:blitter
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í verzeNásledující verze | Předchozí verzeNásledující verzeObě strany příští revize | ||
lnxspectrum:blitter [2019/04/11 18:43] – [Verze] lanex | lnxspectrum:blitter [2019/05/15 14:24] – lanex | ||
---|---|---|---|
Řádek 85: | Řádek 85: | ||
^6 WDT (Width)^ | ^6 WDT (Width)^ | ||
- | |Režim Blok v SRC |Šířka přenášených dat (0-65535). Aby k přenosu dat o délce WDT došlo, v HGT by měla být 1. Také záleží na nastavení Modulo. | | + | |Režim Blok v SRC |Šířka přenášených dat (0-65535). Aby k přenosu dat o délce WDT došlo, v HGT by musí být 1. Také záleží na nastavení Modulo. | |
|Režim Sprite v DST a Blok v SRC |Šířka přenášených dat (0-255) v registru 6. Pokud je aktivní CopyCLR, v registru 7 je vertikální offset pro přenos barev (počet linek, případně attributů v lince). | | |Režim Sprite v DST a Blok v SRC |Šířka přenášených dat (0-255) v registru 6. Pokud je aktivní CopyCLR, v registru 7 je vertikální offset pro přenos barev (počet linek, případně attributů v lince). | | ||
Řádek 127: | Řádek 127: | ||
Blitter ještě k tomu obsahuje přídavnou pamět 64 kB, ta je adresovatelná pouze Blitterem. Z80 do ní nemůže nijak zasahovat. Blitter naopak má mnohem rychlejší pamět pro svoje přesuny. Navíc díky tomu může být software pro ZX mnohem větší, pamět mu nebudou zabírat grafická data. Ty totiž můžou být v paměti Blitteru. | Blitter ještě k tomu obsahuje přídavnou pamět 64 kB, ta je adresovatelná pouze Blitterem. Z80 do ní nemůže nijak zasahovat. Blitter naopak má mnohem rychlejší pamět pro svoje přesuny. Navíc díky tomu může být software pro ZX mnohem větší, pamět mu nebudou zabírat grafická data. Ty totiž můžou být v paměti Blitteru. | ||
- | V takovém režimu by Z80 jen diktoval blitteru, co, jak a kam vykreslovat. Nejvíce taktů by zabralo kopírování dat do ZX Spectrum Videoram, a to by trvalo max. 20736 taktů. A to ještě jen v případě kopírování celé obrazovky i s barvama. Díky interní kopii obrazovky však této hodnoty dosáhneme jedině v případě, že každy bajt bude unikátní hodnoty. Je tedy zcela jisté, že obrazovka v ZX DRAM bude obnovena datově mnohem dříve, než paprsek TV dostihne adresu kopírování. Interní paměť se dá bez problémů využít jako videobuffer. Navíc pokud by se kopírovala jen část, sníží se o další takty. Není problém během jednoho snímku smazat celou obrazovku, vykreslit sprity, a následně aktualizovat videoram v ZX DRAM. | + | V takovém režimu by Z80 jen diktoval blitteru, co, jak a kam vykreslovat. Nejvíce taktů by zabralo kopírování dat do ZX Spectrum Videoram, a to by trvalo max. 20736 taktů. A to ještě jen v případě kopírování celé obrazovky i s barvama. Díky interní kopii obrazovky však této hodnoty dosáhneme jedině v případě, že každy bajt bude unikátní hodnoty. Je tedy zcela jisté, že obrazovka v ZX DRAM bude obnovena datově mnohem dříve, než paprsek TV dostihne adresu kopírování, a to včetně barevné složky. Interní paměť se dá bez problémů využít jako videobuffer. Navíc pokud by se kopírovala jen část, sníží se o další takty. Není problém během jednoho snímku smazat celou obrazovku, vykreslit sprity, a následně aktualizovat videoram v ZX DRAM. |
Stále ale platí, že by se dalo vytvořit jako externí interface, bez jakéhokoliv zásahu do ZX Spectra. Grafický výkon by byl na ZX Spectrum neskutečný :) Možná dokonce by byl ve skutečném FPGA ještě rychlejší, | Stále ale platí, že by se dalo vytvořit jako externí interface, bez jakéhokoliv zásahu do ZX Spectra. Grafický výkon by byl na ZX Spectrum neskutečný :) Možná dokonce by byl ve skutečném FPGA ještě rychlejší, | ||
- | ===== Příklady ===== | ||
- | Nejprve je potřeba LnxBlitter (dále jen LB) zinicializovat. To provedeme zápisem na port 231. Pošleme na něj hodnotu 129, což znamená Enable + Reset. Dále provedeme test, zda LB odpovídá. Přečteme port 231 a měl by vrátit verzi LnBlitteru. Hodnota jiná než aktuální 6 (verze L6) ukončíme, protože Blitter neodpovídá. V opačném případě je LB je připraven. | ||
- | |||
- | < | ||
- | org 32768 | ||
- | |||
- | ld a, | ||
- | out (231), | ||
- | |||
- | in a, | ||
- | cp 6 ;je to verze L6? | ||
- | ret nz ; | ||
- | </ |
lnxspectrum/blitter.txt · Poslední úprava: 2019/12/08 12:40 autor: lanex