Uživatelské nástroje

Nástroje pro tento web


lnxspectrum:komprimace

Komprimace dat v projektu

Z80 Assembler obsažený v LnxSpectrum emulátoru podporuje komprimaci dat v ZX projektech. Díky této metodě lze do vašeho projektu dát více dat, než by bylo možné v nekomprimované podobě. Můžete vložit do projektu například obrázky které by standartně zabraly 6912 bajtů, ale zkomprimované zaberou třeba jen 4000 bajtů.

Jak komprimovat data

Víme, že máme data která chceme komprimovat například na adrese 16384, v délce 6912 bajtů. V okně s debugerem, nebo assembler editorem v menu najdeme položku „Save binary“. Vyskočí okno a tam si zvolíme rozsah: Start address 16384, Length 6912, Last address se automaticky vyplní hodnotou 23295. Zaškrtneme „Compress data“ a stiskněte „Save“. V dalším dialogu si soubor pojmenujete a také si můžete vybrat mezi souborem *.binc (ideální pro vkládání do projektů), nebo pro soubor *.tap. Do svého projektu soubor vložíte pomocí volby „Include (asm, bin, scr…)“, a do kódu připíšete „include „název_souboru.binc““.

Také lze vytvořit screenshot v hlavním okně s emulátorem, menu „Emulator/Save Screenshot“, kde najdeme v seznamu typu souborů mimo *.scr, *.jpg a *.png také komprimovaný *.scrc.

Jak rozbalit data

K rozbalení takto připravených dat je potřeba krátka rutina ve vašem projektu, kterou vložíte příkazem include „decompress.lib“. Kompiler jí sám připojí k projektu.

Příklad kódu: rozbalení komprimovaného obrázku:

		org	50000		 ; od adresy 50000
 
		ld	hl,obrazek1	 ; ukazatel na zdroj komprimovaných dat
		ld	de,16384	 ; ukazatel na videoram
		call	decompress	 ; rozbalit komprimovaná data do videoram
		ret
 
decompress:	include	"decompress.lib" ; vlož knihovnu Decompress
obrazek1:	include	"krtek.scrc"	 ; komprimovaný obrázek

Verze kompressoru

Ve verzi 1.6.7 byla kompimační rutina přepsána, a tím zvýšena její účinnost. Pro projekty využívajicí data zkomprimované původní verzí se v projektu musí vložit starší verze dekompressoru „decompress_old,lib“.

lnxspectrum/komprimace.txt · Poslední úprava: 2018/07/31 10:05 (upraveno mimo DokuWiki)