<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[atari.area forum - kompresja - wynik na 1 stronie]]></title>
		<link>https://www.atari.org.pl/forum/viewtopic.php?id=3875</link>
		<atom:link href="https://www.atari.org.pl/forum/extern.php?action=feed&amp;tid=3875&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Najświeższe odpowiedzi w kompresja - wynik na 1 stronie.]]></description>
		<lastBuildDate>Fri, 17 Feb 2006 19:27:12 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50928#p50928</link>
			<description><![CDATA[<p>Wiedzialem, ze jak tytko Fox sie wypowie to wszystkich pozamiata... ;)</p><p>A moja metda tez ma 34 bajty. Brzydki przypadek :P</p>]]></description>
			<author><![CDATA[null@example.com (laoo/ng)]]></author>
			<pubDate>Fri, 17 Feb 2006 19:27:12 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50928#p50928</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50850#p50850</link>
			<description><![CDATA[<div class="quotebox"><cite>xxl napisał/a:</cite><blockquote><p>moja metoda tu sie calkowicie wyklada : 34 bajty</p></blockquote></div><p>Moja wykłada się jeszcze bardziej. :)</p><div class="quotebox"><cite>xxl napisał/a:</cite><blockquote><p>i taka mala prosba&nbsp; :-) czy mozna bezczelnie zapierniczyc Twoja procke do rozpakowania plansz w gierce? oczywiscie wymieniajac Cie na liscie plac ?</p></blockquote></div><p>Bezczelnie zapierniczyc lepiej nie próbuj, ale jeśli grzecznie zapierniczysz, to proszę bardzo. ;)</p>]]></description>
			<author><![CDATA[null@example.com (Fox)]]></author>
			<pubDate>Thu, 16 Feb 2006 16:12:54 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50850#p50850</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50837#p50837</link>
			<description><![CDATA[<p>rewelacja ....</p><p>moglbys spakowac i sprawdzic ile bajtow ma</p><p>przyklad5:<br />aaaaaaaaaaaaaaaa<br />aaaaaaaaaaaaaaaa<br />aaaaabbbbbaaaaaa<br />aaaabaaaaabaaaaa<br />aaabaababaabaaaa<br />aaabacaaacabaada<br />ddabaacccaabaadd<br />ddaabaaaaabaaada<br />daaaababbbaaaada<br />daaaaaaaaaaaaada<br />daaaaaaaaaaaadaa</p><p>moja metoda tu sie calkowicie wyklada : 34 bajty</p><p>i taka mala prosba&nbsp; :-) czy mozna bezczelnie zapierniczyc Twoja procke do rozpakowania plansz w gierce? oczywiscie wymieniajac Cie na liscie plac ?</p>]]></description>
			<author><![CDATA[null@example.com (xxl)]]></author>
			<pubDate>Thu, 16 Feb 2006 11:30:11 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50837#p50837</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50811#p50811</link>
			<description><![CDATA[<p>Łącząc pomysł Sebana z pomysłem Magnusa i pewnym moim spostrzeżeniem otrzymujemy 78-bajtową prockę dekompresji. Oba obrazki mają po 11 bajtów.</p><div class="codebox"><pre><code>zp   equ $80     ; $18
sreg equ zp+$17  ; 1
inp  equ $98     ; 2

 org $8000
decompr
 lda #$80
 ldx #23
 ldy #0
decompr_byte
 sty zp,x
decompr_bit
 asl @
 bne decompr_next
 lda (inp),y
 inw inp
 rol @
decompr_next
 inc zp,x
 bcs decompr_bit
 dex
 bpl decompr_byte
 ldx #23
draw_byte
 ldy zp,x
 dey
 mva (inp),y sreg
 txa
 pha
 lsr @
 php
 asl @
 plp
 rol @
 asl @
 asl @
 tax
 eor #15
 tay
draw_pixel
 lda sreg
 and #2
 lsr sreg
 adc #$51
 lsr sreg
draw_store1
 sta scr1,x+
draw_store2
 sta scr1,y-
 txa
 and #3
 bne draw_pixel
 pla
 tax
 dex
 bpl draw_byte
 rts

pic1 dta %10010010,%01001100,%10011110,%01110011,%00100100,%10000000,%01010001,%01010101,%01011001,%00010101,%11010101
pic2 dta %11011010,%01001001,%00111100,%10011100,%10010010,%01101100,%01010100,%01010101,%00000000,%01011001,%11111101

main
 mva #$21 $22f
 mwa #dl $230

 mwa #pic1 inp
 mwa #scr1 draw_store1+1
 mwa #scr1 draw_store2+1
 jsr decompr

 mwa #pic2 inp
 mwa #scr2 draw_store1+1
 mwa #scr2 draw_store2+1
 jsr decompr

 jmp *

dl dta $70,$70,$46,a(scr1)
:11 dta 6
 dta $70,$70
:12 dta 6
 dta $41,a(dl)

scr1 org *+192
scr2 org *+192

 run main

 end</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Fox)]]></author>
			<pubDate>Wed, 15 Feb 2006 16:47:19 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50811#p50811</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50796#p50796</link>
			<description><![CDATA[<p>Dobrze rozumiem ze chodzi o zadanie zadawane kandydatom do pracy informatyka? Czy chodzilo o napisanie takiej gierki? Ciekawy sposob szukania programistow :P</p><p>A gierka super!</p>]]></description>
			<author><![CDATA[null@example.com (laoo/ng)]]></author>
			<pubDate>Wed, 15 Feb 2006 08:24:00 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50796#p50796</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50794#p50794</link>
			<description><![CDATA[<p>M ustawione to plot ale ustawione razem z T to draw (zauwaz, ze draw &#039;rysuje&#039; tylko w &#039;pionie&#039; a fill dziala jak draw w poziomie). wartosc pierwszego bajtu dla tego przykladu moze byc: 2,15, 54 itd. akurat w tym przykladzie kolejnosc &#039;rozkazow&#039; niema znaczenia - bedzie mialo znaczenie ... ale o tym pozniej.</p><p>reszta danych? - nie bierzesz pod uwage wartosci P - zwroc tez uwage ze zmienia sie jego interpretacja wraz z T.</p><p>dobrze kombinujesz - to bylo moje zadanie przy rekrutacji kolesi na informatykow. wlasciwie to czesc zadania - glownie chodzilo o zerzniecie gry: <a href="http://www.jarkey.net/playgames/crabs_game.htm">http://www.jarkey.net/playgames/crabs_game.htm</a> tak sie sklada ze napisalem to w c i kto wie... jak znajdzie sie jakis grafik i muzyk to portne to na atari? chetny jest ktos?</p><p>-- dodane</p><p><a href="http://atariarea.krap.pl/forum/viewtopic.php?pid=50795#p50795">http://atariarea.krap.pl/forum/viewtopi … 795#p50795</a></p>]]></description>
			<author><![CDATA[null@example.com (xxl)]]></author>
			<pubDate>Wed, 15 Feb 2006 06:23:24 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50794#p50794</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50793#p50793</link>
			<description><![CDATA[<p>xxl: Coś mi się nie zgadza, albo nie wszystko zrozumiałem :(</p><p>Dane wejściowe były następujące:</p><p>_1____________1_<br />_1____________1_<br />_1____________1_<br />_1___3____3___1_<br />_1_____11_____1_<br />_1_____44_____1_<br />_1____________1_<br />_1___3____3___1_<br />_1____________1_<br />_1____________1_<br />_1____________1_<br />_1____________1_</p><br /><p>Po spakowaniu otrzymałeś&nbsp; %10,%11011100,%1111,%11011100,%110110,%10110101,%1110110,%10110101,%1001000,%10010001,%1011000,%10100001.</p><p>M jest zawsze ustawione, a z analicy danych wychodzi mi, że zawsze robisz plot.<br />Zakładam, że pierwszy bajt równy zero kończy dekompresję, stad wartość pierwszego bajtu jest zwiększana o 1.<br />czyli:</p><p>%10,&nbsp; &nbsp; &nbsp; &nbsp; - na poz $1 i +$c<br />%11011100,&nbsp; &nbsp; - stawiasz znak 1</p><p>%1111,&nbsp; &nbsp; &nbsp; &nbsp; - na poz $10 i +$c<br />%11011100,&nbsp; &nbsp; - stawiasz znak 1</p><p>%110110,&nbsp; &nbsp; &nbsp; &nbsp; - poz $35 i +$5<br />%10110101,&nbsp; &nbsp; - stawiasz znak 3</p><p>%1110110,&nbsp; &nbsp; - poz $75 i +$5<br />%10110101,&nbsp; &nbsp; - stawiasz znak 3</p><p>%1001000,&nbsp; &nbsp; - na poz $47 i $48<br />%10010001,&nbsp; &nbsp; - wpisanie znaku 1</p><p>%1011000,&nbsp; &nbsp; - na poz $57 i $58<br />%10100001&nbsp; &nbsp; - wpisanie znaku 4</p><p>A co z resztą danych? Poza pierwszym i drugim wierszem brakuje mi jedynek występujących po lewej i prawej stronie...</p>]]></description>
			<author><![CDATA[null@example.com (to-mix)]]></author>
			<pubDate>Wed, 15 Feb 2006 02:23:22 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50793#p50793</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50792#p50792</link>
			<description><![CDATA[<p>pisze z palca wiec mozliwe ze sie machnalem:</p><p>%10,%11011100,%1111,%11011100,%110110,%10110101,%1110110,%10110101,%1001000,%10010001,%1011000,%10100001</p><p>12 bajtow</p><p>ciezko napisac pakera... depakera o wiele prosciej</p>]]></description>
			<author><![CDATA[null@example.com (xxl)]]></author>
			<pubDate>Tue, 14 Feb 2006 23:30:03 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50792#p50792</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50790#p50790</link>
			<description><![CDATA[<p>xxl: bądź tak dobry i podaj dane wyjściowe (ciąg bajtów na wyjściu) dla drugiego przykładu, po spakowaniu go twoim sposobem. thx</p>]]></description>
			<author><![CDATA[null@example.com (to-mix)]]></author>
			<pubDate>Tue, 14 Feb 2006 20:36:12 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50790#p50790</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50781#p50781</link>
			<description><![CDATA[<div class="codebox"><pre><code>        asl @
        ror @</code></pre></div><p>to rzeczywiscie mialo dac najstarszy bit w C, ale i ewentualne jego skasowanie - a ze dawno w 6502 klepalem<br />to i bladnie przyjalem ze &#039;ror&#039; rotuje z pominieciem C...</p>]]></description>
			<author><![CDATA[null@example.com (jellonek)]]></author>
			<pubDate>Tue, 14 Feb 2006 16:30:18 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50781#p50781</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50780#p50780</link>
			<description><![CDATA[<p>Cyklujac najbardziej zagniezczone petle mamy</p><div class="codebox"><pre><code>loopp   lda (ptr3),y    ;5
        sta (ptr2),y    ;6
        inc ptr3        ;5
        inc ptr2        ;5
        dex             ;2
        bne loopp       ;3</code></pre></div><p>26 cykli</p><p>oraz<br /></p><div class="codebox"><pre><code>rle     sta (ptr2),y      ;6
        inc ptr2          ;5
        dex               ;2
        bne rle           ;3</code></pre></div><p>16 cykli.</p><p>Dodatkowo zauwazylem, ze w mojej procce jest blad bo zapomnialem, ze iny tez ustawia bit N. Rozwiazaniem jest dodanie np lsr @ czyli<br /></p><div class="codebox"><pre><code>L   lda $ffff,y             ;4
    lsr @                   ;2
    sta bufor_docelowy,y    ;5
    iny                     ;2
    bcc L                   ;3</code></pre></div><p>i mam 16 cykli zamiast 14 i moje obliczenia sredniego czasu zwiekszaja sie do&nbsp; 27 cykli (najmniej 18 cykli najwiecej 29) oczywisice pamietajac zeby dane byly przesuniete w lewo i konczacy znak miał ustawiony najmlodszy bit.</p><p>Reasumujac petlę ofsetującą masz bardzo dluga, a RLE jest identyczna. Nie wiem jak ulozy sie srednia, bo jest inna reprezentacja danych, ale chyba na moją korzysc :P</p><br /><p>PS.: wydaje mi sie, ze<br /></p><div class="codebox"><pre><code>        asl @
        ror @</code></pre></div><p>jest równoważne<br /></p><div class="codebox"><pre><code>        clc</code></pre></div><p>wiem ze chciales skoczyc jesli najstarszy bit byl ustawiony ale tak sie nie da. (no i dodatkowo skaczac do rle jest ustawiony bit N i bedzie się krecilo troche dluzej :) ) Ale da sie samym lsr @ jesli bedzie sie inadzej pamietalo ten bajt w buforze.</p>]]></description>
			<author><![CDATA[null@example.com (laoo/ng)]]></author>
			<pubDate>Tue, 14 Feb 2006 15:54:04 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50780#p50780</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50779#p50779</link>
			<description><![CDATA[<p>laoo:<br /></p><div class="codebox"><pre><code>ptr1    equ $80
ptr2    equ $82
ptr3    equ $84

        org $2000

qniec   rts
decomp  lda ptr2+1
        sta ptr3+1
        ldy #0

loop    lda (ptr1),y
        beq qniec
        inc ptr1
        asl @
        ror @
        tax
        lda (ptr1),y
        bcc rle

; offsetowanie
        sta ptr3
loopp   lda (ptr3),y
        sta (ptr2),y
        inc ptr3
        inc ptr2
        dex
        bne loopp
koniec  inc ptr1
        bne loop
        inc ptr1+1
        jmp loop

; rle
rle     sta (ptr2),y
        inc ptr2
        dex
        bne rle
quit   inc ptr1
        bne loop
        inc ptr+1
        jmp loop
; w miejsce od &quot;quit&quot; wpisac: beq koniec (co da krotszy kod, ale sie wolniej wykona... )</code></pre></div><p>policzy ktos cykle? ;)</p><p>dekompresja do tego co wczesniej opisalem - tylko zaznaczam - to moj pierwszy kod od jakichs 15 lat ;)<br />pewnie cos spartolilem...<br />ptr1 - wskaznik na dane wyjsciowe<br />ptr2 - wskaznik gdzie dekompresowac<br />zalozenie - bufor wyjsciowy zaczynaja sie od adresu w miare niskiego wzgledem poczatku strony (&lt;64), bo brak sprawdzania przepelnienia ;)</p>]]></description>
			<author><![CDATA[null@example.com (jellonek)]]></author>
			<pubDate>Tue, 14 Feb 2006 13:57:06 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50779#p50779</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50778#p50778</link>
			<description><![CDATA[<p>Algorytm konkretnie pod zastosowanie, czyli rzeczywiscie w praktyce program i maszyna wirtualna ktora go wykonuje :)<br />Pobierannie po dwa bajty jest bardzo wygodne i faktycznie chyba juz nie ma co kombinowac dalej, bo kodujac na bitach moznaby uszczknac tylko z 2-3 bajty ale IMHO za duzym kosztem.</p><p>nie wiem tylko jak obliczana jest ta ilosc literek &#039;b&#039; do pominiecia i od ktorego momentu pomijamy, ale wierzę, ze to jest zakodowane jakos w P :) Jezeli te kodowanie w P jest dobre, to powinno dzialac :P</p>]]></description>
			<author><![CDATA[null@example.com (laoo/ng)]]></author>
			<pubDate>Tue, 14 Feb 2006 13:01:31 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50778#p50778</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50777#p50777</link>
			<description><![CDATA[<div class="quotebox"><cite>laoo/ng napisał/a:</cite><blockquote><p>Tak czytam co Ty tu napisales ... i mysle, ze chyba nie zrozumiales</p></blockquote></div><p>Tia, cofnalem sie i przeczytalem, że WYJSCIOWYCH bedzie 3k, a wczesniej<br />nie wiem czemu mi sie przeczytalo, że wejsciowych :), czyli nawet liczac te 3k<br />jako bajty, a nie symbole wyszlo mi ze trza spakowac 768 bajtow do &lt;256 :)<br />czyli do 33,(3)% co się takie łatwe nie wydaje jak nie ma odpowiedniego rozkladu<br />danych :). No, ale jak widac wzialem pod uwage gorszy problem niż był w rzeczywistości.</p>]]></description>
			<author><![CDATA[null@example.com (Sc0rpi0)]]></author>
			<pubDate>Tue, 14 Feb 2006 12:55:14 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50777#p50777</guid>
		</item>
		<item>
			<title><![CDATA[Odp: kompresja - wynik na 1 stronie]]></title>
			<link>https://www.atari.org.pl/forum/viewtopic.php?pid=50776#p50776</link>
			<description><![CDATA[<p>zapisze jeszcze raz:</p><p>rozpakowane bloki maja po 192 bajty, wypelniamy go wartoscia wystepujaca najczesciej</p><p>pobieramy dlugosc &#039;programu z opisem dekompresji&#039;<br />pobieramy kolejno 2 bajty</p><p>co zawieraja te dwa bajty:<br />pierwszy bajt - index - od ktorego miejsca w boku 192 b zaczynamy<br />drugi bajt bity od najstarszego:</p><p>|M|T|D|D|P|P|P|P|W|</p><p>M - metoda fill, plot<br />plot stawia dana na poczatku i po przesunieciu innymi slowy moze zrobic tak: ABBBBBA lub tak: A (A istotny),<br />fill wypelnia, moze zrobic tak:AAAbbbAAAbbbAAA (A istotny) - nie z przykladu powyzej</p><p>T - tryb patrz P dla plot automatyczna zmiana na draw<br />jesli M bylo plot to przy ustawieniu T mamy draw oraz zmiane interpretacji P</p><p>D - dane - sa juz tyklko 3 rozne elementy<br />dane: 01, 10, 11</p><p>P - przesuniecie 1-16 lub index+x*16<br />w zaleznosci od T mozemy zrobic przy plot tak: A lub AbbbbbA a przy draw tak: AAAAAA lub tak: AbbAbbA (A dane istotne)<br />to dekompresor musi zadbac i obliczac koniec dzialania rozkazow ale to jest akurat b.proste.</p><br /><p>analogia w nazwie fill, draw i plot jest trafna w przypadku tego algorytmu i TYCH konkretnych danych.</p><p>W - jakas wartosc bitu 9<br />moj poprzedni post byl zaszumiony i to jest wlasnie ta niechciana tresc ;-)</p>]]></description>
			<author><![CDATA[null@example.com (xxl)]]></author>
			<pubDate>Tue, 14 Feb 2006 12:46:03 +0000</pubDate>
			<guid>https://www.atari.org.pl/forum/viewtopic.php?pid=50776#p50776</guid>
		</item>
	</channel>
</rss>
