A.D.A. Amiga Demoscene Archive

  Welcome guest! Please register a new account or log in

  

  

  

log in with SceneID

  

Demos Amiga Demoscene Archive Forum / Coding / [req] about a decruncher

 

Author Message
nwm
Member
#1 - Posted: 3 Nov 2013 14:19
Reply Quote
hi

I wonder if this decruncher is an unknown format or a modified known cruncher ?


DECRUNCH:
cmpi.w #'DP',(a0)
bne.w _notcrunched

lea DECRUNCH(pc),a3
movea.l a0,a1 ; addr data crunched
addq.w #2,a0 ; skip header
move.l a1,addr1+2-DECRUNCH(a3) ;$15C(a3)
movea.l a1,a2
adda.l (a0)+,a2 ; decrunched len
move.l a2,addr2+2-DECRUNCH(a3) ;$162(a3)
move.b (a0)+,v1+1-DECRUNCH(a3) ;$E9(a3)
move.b (a0)+,v2+1-DECRUNCH(a3) ;$113(a3)
move.b (a0)+,v3+1-DECRUNCH(a3) ;$133(a3)
move.b (a0)+,v4+1-DECRUNCH(a3) ;$141(a3)
move.b (a0)+,v5+1-DECRUNCH(a3) ;$147(a3)
move.b (a0)+,v6+1-DECRUNCH(a3) ;$159(a3)
move.l (a0)+,d0 ; .L
movea.l a0,a4
adda.w #256,a0
adda.l d0,a0
movea.l a2,a1
suba.l -(a0),a1
move.l -(a0),d0

loc_0_B422:
moveq #3,d1
bsr.w sub_0_B4F4
tst.w d2
beq.w loc_0_B4B4
cmpi.b #7,d2
bne.s loc_0_B474
lsr.l #1,d0
bne.s loc_0_B43C
bsr.w sub_0_B4DE

loc_0_B43C:
bcs.s loc_0_B448
moveq #2,d1
bsr.w sub_0_B4F4
addq.w #7,d2
bra.s loc_0_B474

loc_0_B448:
moveq #8,d1
bsr.w sub_0_B4F4
tst.w d2
beq.s loc_0_B458
addi.w #$A,d2
bra.s loc_0_B474

loc_0_B458:
moveq #$C,d1
bsr.w sub_0_B4F4
tst.w d2
beq.s loc_0_B468
addi.w #$109,d2
bra.s loc_0_B474

loc_0_B468:
moveq #$F,d1
bsr.w sub_0_B4F4
addi.l #$110B,d2

loc_0_B474:
subq.w #1,d2
move.w d2,d3

loc_0_B478:
lsr.l #1,d0
bne.s loc_0_B47E
bsr.s sub_0_B4DE

loc_0_B47E:
bcs.s loc_0_B486
moveq #8,d5
moveq #6,d1
bra.s loc_0_B4A8

loc_0_B486:
lsr.l #1,d0
bne.s loc_0_B48C
bsr.s sub_0_B4DE

loc_0_B48C:
bcs.s loc_0_B494
moveq #0,d5
moveq #3,d1
bra.s loc_0_B4A8

loc_0_B494:
lsr.l #1,d0
bne.s loc_0_B49A
bsr.s sub_0_B4DE

loc_0_B49A:
bcs.s loc_0_B4A2
moveq #$48,d5
moveq #6,d1
bra.s loc_0_B4A8

loc_0_B4A2:
move.w #$88,d5
moveq #7,d1

loc_0_B4A8:
bsr.s sub_0_B4F4
add.w d5,d2
move.b (a4,d2.w),-(a2)
dbf d3,loc_0_B478

loc_0_B4B4:
cmpa.l a2,a1
bge.w loc_0_B536
lsr.l #1,d0
bne.s loc_0_B4C0
bsr.s sub_0_B4DE

loc_0_B4C0:
bcc.s loc_0_B514
moveq #2,d1
bsr.s sub_0_B4F4
v1 moveq #-1,d1
moveq #3,d3
tst.b d2
beq.s loc_0_B526
cmp.b d2,d3
beq.s loc_0_B506
cmpi.b #1,d2
beq.s loc_0_B4E8
moveq #6,d3
moveq #3,d1
bra.s loc_0_B4EC

; ======================================

sub_0_B4DE:
move.l -(a0),d0
move #$10,ccr
roxr.l #1,d0
rts

loc_0_B4E8:
moveq #4,d3
moveq #1,d1

loc_0_B4EC:
bsr.s sub_0_B4F4
add.w d2,d3
v2 moveq #-1,d1
bra.s loc_0_B526


sub_0_B4F4:
subq.w #1,d1
moveq #0,d2

loc_0_B4F8:
lsr.l #1,d0
bne.s loc_0_B4FE
bsr.s sub_0_B4DE

loc_0_B4FE:
addx.l d2,d2
dbf d1,loc_0_B4F8
rts

loc_0_B506:
moveq #8,d1
bsr.s sub_0_B4F4
move.w d2,d3
addi.w #$E,d3
v3 moveq #-1,d1
bra.s loc_0_B526

loc_0_B514:
lsr.l #1,d0
bne.s loc_0_B51A
bsr.s sub_0_B4DE

loc_0_B51A:
bcs.s loc_0_B522
moveq #2,d3
v4 moveq #-1,d1
bra.s loc_0_B526

loc_0_B522:
moveq #1,d3
v5 moveq #-1,d1
loc_0_B526:
bsr.s sub_0_B4F4

loc_0_B528:
move.b -1(a2,d2.w),-(a2)
dbf d3,loc_0_B528
cmpa.l a2,a1
blt.w loc_0_B422

loc_0_B536:
v6 moveq #-1,d7
addr1 lea 0,a0
addr2 lea 0,a2

loc_0_B544:
move.b (a1)+,d0
cmp.b d7,d0
bne.s loc_0_B55A
moveq #0,d1
move.b (a1)+,d1
beq.s loc_0_B55A
move.b (a1)+,d0
addq.w #1,d1

loc_0_B554:
move.b d0,(a0)+
dbf d1,loc_0_B554

loc_0_B55A:
move.b d0,(a0)+
cmpa.l a2,a1
blt.s loc_0_B544

_notcrunched:
rts
pmc
Member
#2 - Posted: 17 Nov 2013 15:22 - Edited
Reply Quote
According to this list:

http://www.amiga-stuff.com/crunchers-id.html

The "DP" identifier signifies a Defjam Packer derivative.
sp_
Member
#3 - Posted: 21 Dec 2013 05:02 - Edited
Reply Quote
keep up the good job

 

  Please register a new account or log in to comment

  

  

  

 

A.D.A. Amiga Demoscene Archive, Version 3.0