Uživatelské nástroje

Nástroje pro tento web


hgfx:porty_registry

Porty HGFX

HGFX používá několik portů, víceméně se zde režim jen zapíná, a více se na porty nesahá. Pro rychlejší ovládání HGFX se používají Registry. Porty najdeme v General sadě ZXI.

gZxi_01h - Extra graphics modes

  • Na tomto portu se zapínají různé grafické režimy, které HGFX podporuje.
HodnotaPopis
00Classic ZX
01HiResColour(HRC) - 512×192 pixels / 64×48 attributes / Spectrum attributes
02HiResindeXedColour(HRXC) - 512×192 pixels / 64×48 attributes / indeXedColours
03HGFX 1, 256×192 pixels, two buffers, 256 colors, ZX / linear memory layout
04HGFX 2, 512×192 pixels, one buffer, 256 colors, linear memory layout
05HGFX 3, 512×384 pixels, one buffer, 16 colors, linear memory layout

gZxi_20h - General settings

  • Nastavuje hlavní parametry.
bitPopis
b0memory layout: 0 - standard ZX; 1 - linear
b1border colour: 0 - standard ZX; 1 - indexed (index 0-7)
b2ZX transparency: 0 - enable; 1 - disable

gZxi_21h - high byte of Videoram area

  • Ukazatel na adresu Videoram 6144 B.
40h - default

gZxi_22h - high byte of Registers area

  • Ukazatel na adresu kde se nacházejí Registry.
5Bh - default

gZxi_23h - high byte of Indexed colour table area

  • Ukazatel na adresu kde se nachází Indexovaná paleta barev, 256 barev v pořadí BGR, 768 B.
5Ch - default

gZxi_2Fh - status

  • Zde se čte status HGFX při spuštěné funkci FastErase nebo FastCopy.
bitPopis
b00 - ready; 1 - busy

Registry HGFX

Pro ovládání rychlejších funkcí HGFX jsou použity registry. Je to malý blok v paměti, do kterého se dají zapisovat hodnoty rychleji pomocí LD (REG),A, LD (HL),A nebo dokonce LD (REG),HL. Pokud jsou registry umístěny v RAM, je možné jejich hodnoty i číst a použít tak třeba INC (HL). Podtržené názvy jsou zkrácené verze pro používání v ASM.

00 - Video parameters

  • VParam, nastavuje který Buffer (A nebo B) je viditelný, aktivní pro čtení, aktivní pro zápis. Pokud používáme režim HiRes (gZxi_01h - Extra graphics modes = 04), bude přístupný vždy pouze Buffer A.
bityPopis
b00 - Zobrazovat Buffer A; 1 - Zobrazovat buffer B
b10 - Zapisovat do Bufferu A; 1 - Zapisovat do Bufferu B
b20 - Číst z Bufferu A; 1 - Číst z Bufferu B

01h - Planar Mode

  • PMode, zde se nastaví pracovní režim pro zápis do Bufferů.
HodnotaJménoPopis
00INK ModeTento režim zapíše barvu pouze tam, kde se do videoram zapisuje z pohledu Z80 bitová 1. Jaká barva, to zaleží na nastavení SColor a PMask. Kde se zapisuje bitová 0, se nic nemění.
01COPY ModePokud nepředcházelo čtení z Bufferu (nazveme to cInk), chová se podobně jako INK. Ale tam kde se zapisuje z pohledu Z80 do videoram bitová 0 se nastaví Indexovaná barva dle registru 0Eh Paper Color Index. Pokud ale předcházelo čtení z Bufferu, uloží se do interní Cache hodnoty 8 pixlů, jednotlivé Indexy barev, které je možné při příštím zápisu opět do Bufferu zapsat. Čtená hodnota (z pohledu Z80) musí být stejná jako zapisovaná, jinak se provede pouze cInk.
02ATTR ModeTento režim zapíše podobně jako režim INK Mode barvu SColor a PMask tam, kde se do videoram zapisuje z pohledu Z80 bitová 1. Kde se zapisuje bitová 0, se nastaví barva definovaná pomocí SPColor. a PMask.

02h - Advance Commands

  • ACom, Spouští interní CopyAll nebo EraseAll. Během provádění těchto úkolů procesor Z80 nadále běží a program normálně pokračuje. Není však možné používat jakýmkoliv způsobem Buffery HGFX. Při takovém pokusu budou zapisované hodnoty ignorovány. Proto je někdy nutné vyčkat na dokončení. Jestli je nebo není hotov zjistíme na portu Status.
HodnotaNázevPopis
00NOP
01COPY_ALLZkopíruje velice rychle celý obsah zdrojového Bufferu do cílového Buferru.
02ERASE_ALLSmaže velice rychle celý cílový Buffer.

03h - Ink Color Index

  • SColor, v tomto registru se nastavuje kterou Indexovanou barvou se bude pracovat. Hodnota může být v rozsahu 0-255. Zápis této barvy do Bufferu je ovlivněn nastavením registru PMask.

04h - Planar Mask

  • PMask, v tomto registru nastavujeme se kterými vrstvami (Planar) budeme pracovat. Indexová barva v Bufferu se skládá z 8 bitů. Je tedy možná hodnota 0-255. Každý bit se nachází v jedné Vrstvě (0-7). Každá vrstva je zastoupena jedním bitem v registru PMask. Nastavíme-li 255, budeme měnit hodnoty ve všech vrstvách. Pokud nastavíme na 3, můžeme měnit hodnoty jen v prvních dvou vrstvách. Ostatní zůstanou nedotčeny. Pokud bude PMask = 3 a budeme zapisovat dle SColor barvu 255, ovlivní se pouze první 2 vrstvy (binárně 00000011).

0Dh Advanced Graphics Feature

  • AGF, v tomto registru si můžeme zapnout speciální zobrazovací metody FILL a HAM Mode.
HodnotaJménoPopis
00Standartní RežimKlasický režim 256 indexovaných barev
01FILL RežimRežim pro podporu vektorů
02HAM RežimRežim pro vícebarevné zobrazení

0Eh Paper Color Index

  • SPColor, zde nastavujeme jaká indexová barva bude použíta pro PAPER při vykreslování v režimu COPY Mode a ATTR mode (viz. 01h - Planar Mode).

0Fh Fill Planar Mask

  • FPMask určuje, kterých vrstev se bude týkat režim FILL. Ostatní se budou chovat normálním způsobem.

Offsety

Následujicí registry jsou Offsety. Všechny jsou 16 bitové a dovolují i záporné hodnoty (Signed). Je možné tedy nastavit i takové hodnoty jako třeba -6 nebo -32768. Jednotky jsou v Pixlech, Offsety určují jaká je poloha naší videoram v Bufferu X a Y. Pokud bude Videoram nastavená na adresu 16384, následně nastavíme D_OffsetX na 128 a D_OffsetY na 96, potom zápis na adresu 16384 bude zobrazen přesně uprostřed obrazovky.

Offsety máme dva, jeden pro zápis a druhý pro čtení z Bufferu.

05h - Destination OffsetX

  • D_OffX, cílový offset X, -32768 až 32767

07h - Destination OffsetY

  • D_OffY, cílový offset Y, -32768 až 32767

09h - Source OffsetX

  • S_OffX, zdrojový offset X, -32768 až 32767

0Bh - Source OffsetY

  • S_OffY, zdrojový offset Y, -32768 až 32767
hgfx/porty_registry.txt · Poslední úprava: 2023/10/24 09:19 autor: lanex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki