![]() |
RLE сжатие (покритикуйте)
Собственно сжатие картинки и разжатие
(причём разжатие занимает всего 20 байт) Code:
ORG 7E00HCode:
ORG 7F00H |
Для начала, заменить cp 0 на and a
|
Будет плохо паковаться при большом количестве неповторяющихся байт.
Ввести флажок "последовательность из разных/одинаковых байт". Пример: 06 - 7й бит=0 - 6 разных байт 01 23 45 67 89 AB 85 - 7й бит=1 - 5 одинаковых байт CD 83 - 7й бит=1 - 3 одинаковых байта EF 04 - 7й бит=0 - 4 разных байта 55 AA 33 CC 00 - конец |
RLE-весьма неэффективная методика. Попробуй хотя бы простейшее словарное сжатие, получишь более существенный эффект.
|
Quote:
Quote:
Quote:
|
Quote:
|
Если логика меня не подводит, то компрессор можно переписать так:
Code:
ld hl,#4000P.S. Такой алгоритм эффективен только для экранов с линейной адресацией, а для спектрумовского нужно учитывать строение экрана. |
Quote:
У меня наоборот, пишу часто и мои проги всегда работают, но так как мой код никто почти не видит я не знаю на сколько это правильно с точки зрения как мелочей так и архитектуры в целом. (по этому и прошу критики, как кода так и каких-то подходов) (На РНР проще, много форумов всегда можно показать код и найти кучу критики и сделать выводы, а на Specy так много не пишут.) |
Для начала почитайте http://zx.pk.ru/showthread.php?t=5335
Почему именно RLE? В силу простоты только если? Возьмите Huffman или Lempel-Ziff. Вообще Lempel-Ziff могут быть очень короткими (как Laser Cpmact) при этом очень эффективными. |
Quote:
Quote:
Quote:
|
| All times are GMT +4. The time now is 21:50. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.