26

Odp: Krócej sie nie da !!!

A czy Basic można włączyć na czas dekompresji? Jeżeli tak, to proponuję:

src = $9D
dest = $24;

loop  jsr get
      beq stop
      lsr @
      tay
q0    jsr get
q1    sta (dest,x)
      inc dest
      bne q2
      inc dest+1
q2
      dey
_bpl  bmi loop
      bcs q0
      bcc q1

get   JMP $A293
stop  rts

Wynik: 32 bajty na zerowej :)


Jakby ktoś się uparł, że musi chodzić na XL/XE z oryginalnym ROM'em to można i tak:

src = $9D
dest = $24;

loop  jsr get
      beq stop
      lsr @
      tay
q0    jsr get
q1    sta (dest,x)
      jsr $E6D1

      dey
_bpl  bmi loop
      bcs q0
      bcc q1

get   JMP $A293
stop  rts

Wynik: 26 bajtów ;)

Trzeba się tylko upewnić, że obydwa ROMy są w odpowiedniej wersji :D

27

Odp: Krócej sie nie da !!!

hej!

chyba popadamy w jakąś paranoję :D

ale jeszcze krócej o 3 bajty będzie tak:

src = $9D
dest = $24;

loop  jsr $A293
      beq stop
      lsr @
      tay
q0    jsr $A293
q1    sta (dest,x)
      jsr $E6D1

      dey
_bpl  bmi loop
      bcs q0
      bcc q1

stop  rts

Ostatnio edytowany przez seban (2005-08-04 17:02:50)

28

Odp: Krócej sie nie da !!!

Nie będzie... Co robi 'jsr get' w poprawionej przez Ciebie procedurce?

29

Odp: Krócej sie nie da !!!

whoops! ;) sorki! :) się pospieszyłem :D

ale tak naprawdę... to chciałem sobie zażartować ;) dalsza droga chyba już nie ma sensu ;D
chociaż idac za słowami kogoś mądrego kto powiedział "...każdy program można zawsze skrócić o jeden bajt..."
możemy dojść do depacker'a o długości 1 bajtu :D
ba... idąc dalej za teoriami jakiegoś szalogego gościa z giełdy na "grzybowskiej" możemy zrobić kompresję do 1 bajtu :D
użwyając funkcji XOR :D pierwszy bajt xor'ujemy z drugim... wynik z trzecim bajtem... itd. ;-)


Seban

Ostatnio edytowany przez seban (2005-08-04 17:07:51)

30

Odp: Krócej sie nie da !!!

Seban, korekta: zamiast

jsr get

ma być:

jsr $a293

Dodatkowo powrót można zrealizować jako beq exit, do miejsca, gdzie wywoływano podprocedurkę i usunąć rts i mamy:

src = $9D
dest = $24;

loop  jsr $A293
      beq exit
      lsr @
      tay
q0    jsr $a293
q1    sta (dest,x)
      jsr $E6D1

      dey
_bpl  bmi loop
      bcs q0
      bcc q1

22 bajty.

Ostatnio edytowany przez Marek Konopka (2005-08-04 17:11:32)

31

Odp: Krócej sie nie da !!!

hej Konop!

Już poprawiłem :D to z pośpiechu :D

chcialem być lepszy od Magnusa ;) ( to żart oczywiście :) )

Seban

32

Odp: Krócej sie nie da !!!

w nastepnej wersji podobnego mini konkursu bede musial wprowadzic regulamin ;) co wolno a czego nie wolno

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

33

Odp: Krócej sie nie da !!!

miazga:)

34

Odp: Krócej sie nie da !!!

jak to dobrze, że tebe nie jest moderatorem :lol:

no to co depakujemy? ;)

I Ty zostaniesz big endianem...

35

Odp: Krócej sie nie da !!!

Ja proponuję nha początek zdepakować BYX'a i ze dwa piwa ;)

Sikor umarł...

36

Odp: Krócej sie nie da !!!

Ej, ale zauwazcie ze taka kreatywnosc wystepuje tylko PO QUASCIE ;)

37

Odp: Krócej sie nie da !!!

ciiicho ... bo sie wyda ;)