*>--------------------------------------------------<* * * Whittaker Ripper for Vampire's Universal Ripper * * >> Player by David Whittaker << * * ...ripper made by Vampire (of course!) * just assemble and save as executable * saveadr = 0 lenght = 4 datadr = 8 datlen = 12 type = 16 prefix1ptr = 18 prefix2ptr = 22 suffix1ptr = 26 suffix2ptr = 30 message = 34 savename = 38 namelenght = 42 datnamadr = 44 callflags = 48 fromadr = 50 toadr = 54 flashreg = 58 memtableptr = 62 memtypes = 78 newname = 92 dosbase = 66 gfxbase = 70 savecodeptr =112 PlayCIAA =116 * W - parameter-bits: %00000 * |||||____additional data found * ||||_____own save routine (set if opt=decr) * |||______saveable * ||_______playable / (viewable) * |________data found ** >> Header << header: dc.w $601A,$5044,$4f53 ; 0: RIPSEG header \ dc.w %1000000000000000 ; 6: (flags: see docs) \ 16 bytes dc.w InfoText-header ; 8: offset to InfoText / -------- dc.b "UniSEG" ; 10: identifier !! / dc.l checkmem ; rip-routine (without mem-loop!) dc.l 0 ; for decrunching or converting to disk plptr dc.l 0 ; new !! dc.w checkmem-header dc.w ende-checkmem safety: ; This label must (!) be at this pos. moveq #121,d0 ; You can put here a routine which is rts ; called from cli. ; That might be an error message or ; a complete cli-ripper! ** >> Individual area starting here!! << checkmem: cmp.w #$47fa,(a0) bne.s testnew move.l a0,a1 cmp.w #$fffe,2(a1) beq.s cont subq.l #4,a1 cmp.w #$303c,(a1) beq.s cont subq.l #4,a1 cmp.w #$08f9,(a1) beq.s cont no rts cont cmp.w #$4e75,-2(a1) beq.s no move.l a1,saveadr(a5) lea messy2(pc),a2 move.l a2,message(a5) lea plptr(pc),a3 lea oldreplay(pc),a2 move.l a2,(a3) move.l a1,a2 btst #0,d7 beq.s nodo bsr doping2 nodo bra.s mhmh2 testnew move.w #$4e75,d2 move.w #$48e7,d3 move.w #$4cdf,d4 cmp.w (a0),d3 bne.s nix cmp.w 8(a0),d4 bne.s nix cmp.w $c(a0),d2 bne.s nix cmp.w $e(a0),d3 bne.s nix cmp.w $16(a0),d4 bne.s nix cmp.w $1a(a0),d2 bne.s nix cmp.w $1c(a0),d3 bne.s nix cmp.w $24(a0),d4 bne.s nix cmp.w $28(a0),d2 bne.s nix cmp.w -2(a0),d2 ; gegenprobe !! beq.s nix cmp.w -6(a0),d4 beq.s nix cmp.w -14(a0),d3 beq.s nix move.l a0,a2 btst #0,d7 beq.s mhmh bsr.s doping mhmh lea plptr(pc),a3 lea playnew(pc),a2 move.l a2,(a3) lea messy(pc),a2 move.l a2,message(a5) mhmh2 move.b #%11000000,type(a5) lea pre1(pc),a2 move.l a2,prefix1ptr(a5) btst #1,d7 beq.s nix bsr.s len nix rts len move.l a2,a1 ; lenght moveq #2,d2 lll move.w d2,d4 move.l a1,a2 move.l #$80000,d3 llp subq.l #2,d3 beq.s nix move.w d3,(a6) cmp.w #$4e71,(a2)+ bne.s llp dbf d4,llp move.l memtableptr(a5),a3 cmp.l 4(a3),a2 ble.s lenok subq.w #1,d2 bmi.s nix bra.s lll lenok sub.l a1,a2 move.l a2,lenght(a5) bset #5,type(a5) rts doping: move.l a0,a1 move.w #$a00,d2 hope moveq #0,d3 move.b (a1),d3 cmp.b #$ff,d3 bne.s nope nx moveq #0,d3 move.b 3(a1),d3 cmp.b #$06,d3 bne.s nope clr.b (a1) clr.b -1(a1) nope addq.l #1,a1 dbf d2,hope rts playnew: subq.w #1,d0 movem.l a0/a5,-(a7) jsr (a0) movem.l (a7),a0/a5 lea $e(a0),a0 moveq #0,d1 jsr PlayCIAA(a5) jsr $e(a0) movem.l (a7)+,a0/a5 bsr.s doping rts oldreplay: subq.w #1,d0 movem.l a0/a5,-(a7) jsr (a0) movem.l (a7),a0/a5 move.w #$300,d1 find_lp cmp.w #$47fa,(a0) bne.s lpx cmp.w #$4a2b,4(a0) bne.s lpx cmp.b #$67,8(a0) bne.s lpx cmp.w #$33fc,-10(a0) bne.s play lpx addq.w #2,a0 dbf d1,find_lp bra.s err play move.l a0,$70000 moveq #0,d1 jsr PlayCIAA(a5) err movem.l (a7),a0/a5 jsr (a0) movem.l (a7)+,a1/a5 bsr.s doping2 rts doping2: moveq #0,d4 move.w #$300,d2 dplp cmp.w #$ffff,(a1)+ bne.s gnlpfth move.w (a1),d3 beq.s drug cmp.w #6,d3 bne.s dplpc drug clr.w -2(a1) dplpc dbf d2,dplp rts gnlpfth cmp.w #$ff00,-2(a1) bne.s dplpc cmp.b #$6,2(a1) bne.s dplpc bra.s drug InfoText: lin1 dc.b lin2-lin1-2,"David Whittaker Ripper - 1.2+ for new and old songs !!",$a lin2 dc.b lin3-lin2-2," Player by D. Whittaker - ripper by The Vampire",$a lin3 dc.b lin4-lin3-2," OPT 2: 'calc lenght' (I hope it is correct!).",$a lin4 dc.b last-lin4-2," Replay problems? ...let's dope1 (Aaaaargh!)",$a last messy dc.b messy2-messy-2 dc.b "Whittaker routine possible...",$a messy2 dc.b pre1-messy2-2 dc.b "Old Whittaker routine possible !",$a pre1: dc.b ende-pre1-1 dc.b "whit." ende even END .