section Timedecruncher,code lea crunched,a0 lea decrunched,a1 bsr decrunch rts ;---------------------------------------------------- crunched incbin cruncheddata ;put the crunched data here decrunched dcb.b 200000,0 ;free mem for decrunched data ;***************************************************** ;* Turtle Smasher Data Decruncher * ;* Uses Registers D0,D1,D2,D3,A0,A1,A2 * ;* a0=address for crunched data * ;* a1=address where the decrunched data places * ;* * ;* Improved and Fixed for data decrunching by * ;* Mr.Crook & Him of VOX DEI. * ;* This source MUST be spread with the cruncher. * ;***************************************************** decrunch move.l a1,a2 add.l (a0)+,a2 add.l (a0),a0 subq.l #8,a0 move.l (a0),d0 again moveq #3,d1 bsr.w d46 tst.b d2 beq.b caa cmpi.w #7,d2 bne.b c7a lsr.l #1,d0 bne.b c5e bsr.w d3c c5e bcc.b c72 moveq #10,d1 bsr.w d46 tst.w d2 bne.b c7a moveq #18,d1 bsr.w d46 bra.b c7a c72 moveq #4,d1 bsr.w d46 addq.w #7,d2 c7a subq.w #1,d2 c7c moveq #7,d1 c7e lsr.l #1,d0 beq.b c90 roxl.l #1,d3 dbra d1,c7e move.b d3,-(a2) dbra d2,c7c bra.b caa c90 move.l -(a0),d0 move.w d0,$00dff180 ; make screen flashing move #$10,ccr roxr.l #1,d0 roxl.l #1,d3 dbra d1,c7e move.b d3,-(a2) dbra d2,c7c caa cmp.l a2,a1 bge.w exit moveq #$02,d1 bsr.w d46 moveq #2,d3 moveq #8,d1 tst.w d2 beq.b d26 moveq #4,d3 cmpi.w #2,d2 beq.w d10 moveq #3,d3 cmpi.w #1,d2 beq.w d02 moveq #2,d1 bsr.w d46 cmpi.w #3,d2 beq.b cf8 cmpi.w #2,d2 beq.b cec addq.w #5,d2 move.w d2,d3 bra.w d10 cec moveq #2,d1 bsr.b d46 addq.w #7,d2 move.w d2,d3 bra.w d10 cf8 moveq #8,d1 bsr.b d46 move.w d2,d3 bra.w d10 d02 moveq #8,d1 lsr.l #1,d0 bne.b d0a bsr.b d3c d0a bcs.b d26 moveq #14,d1 bra.b d26 d10 moveq #16,d1 lsr.l #1,d0 bne.b d18 bsr.b d3c d18 bcc.b d26 moveq #8,d1 lsr.l #1,d0 bne.b d22 bsr.b d3c d22 bcs.b d26 moveq #12,d1 d26 bsr.b d46 subq.w #1,d3 d2a move.b -1(a2,d2.l),-(a2) dbra d3,d2a bra.w again ;--------------------------------------------------- exit rts ;here we leave the decruncher ;--------------------------------------------------- d3c move.l -(a0),d0 move #$10,ccr roxr.l #1,d0 rts d46 clr.l d2 subq.w #1,d1 roxlloop lsr.l #1,d0 beq.b zerobit roxl.l #1,d2 dbra d1,roxlloop rts zerobit move.l -(a0),d0 move #$10,ccr roxr.l #1,d0 roxl.l #1,d2 dbra d1,roxlloop rts end