;Protoscan II Protection
LOOP BSR.S PROT TST.B D0 ;Original BNE.S LOOP ;No try again CLR.W -(SP) ;Function warmstart TRAP #1 ;and return to desktop
PROT LEA $63000,A0 ;Buffer MOVE.L A0,$7079E MOVEQ #1,D3 L7054C MOVE.L D3,$707A2 BSR L70776 BSR.S L70582 BSR.S L705B8 BSR.S L705CE BSR L7060E BSR L7060E BSR.S L705B8 BSR L706CA BSR L7073A MOVE.B $707A6,D0 TST.B D0 BEQ.S L70580 MOVE.L $707A2,D3 DBF D3,L7054C L7057E BRA.S L7057E L70580 RTS L70582 MOVE.W #0,D0 ADDQ.B #1,D0 LSL.B #1,D0 ORI.W #0,D0 EORI.B #7,D0 ANDI.B #7,D0 L70596 MOVE.B #7,$FFFF8800.W MOVE.B #$FF,$FFFF8802.W MOVE.B #$E,$FFFF8800.W MOVE.B $FFFF8800.W,D1 ANDI.B #$F8,D1 OR.B D0,D1 MOVE.B D1,$FFFF8802.W RTS L705B8 MOVE.W #$80,$FFFF8606.W MOVE.W #$D0,D6 BSR L706E0 MOVEQ #$28,D7 BSR L706DA RTS L705CE BSR L706FE MOVE.W #$86,$FFFF8606.W MOVE.W #$4F,D6 BSR L706E0 MOVE.W #$80,$FFFF8606.W MOVE.W #$1B,D6 BSR L706E0 MOVE.L #$60000,D7 L705F4 SUBQ.L #1,D7 BEQ.S L70602 BTST #5,$FFFFFA01.W BNE.S L705F4 RTS L70602 BRA.S L705CE MOVE.W #$FFF9,$707A6 RTS L7060E CLR.L $70796 MOVE SR,L7078C MOVE.W #$90,$FFFF8606.W MOVE.W #$190,$FFFF8606.W MOVE.W #$90,$FFFF8606.W MOVEQ #$16,D6 MOVE.W #$200,D2 MULU D6,D2 MOVE.W D2,L7078E MOVE.L $7079E,D3 ADD.L D3,D2 MOVE.L D2,L70792 BSR L706E0 MOVE.L $7079E,D0 MOVE.B D0,$FFFF860D.W LSR.L #8,D0 MOVE.B D0,$FFFF860B.W LSR.L #8,D0 MOVE.B D0,$FFFF8609.W MOVE.W #$80,$FFFF8606.W MOVE.W #$E8,D6 BSR.S L706E0 MOVE.L #$50000,D7 MOVEA.L L70792(PC),A5 MOVE.W #$200,D0 L70678 DBF D0,L70678 L7067C BTST #5,$FFFFFA01.W BEQ.S L706A6 SUBQ.L #1,D7 BEQ.S L706C4 MOVE.B $FFFF8609.W,L70797 MOVE.B $FFFF860B.W,L70798 MOVE.B $FFFF860D.W,L70799 CMPA.L L70796,A5 BGT.S L7067C L706A6 MOVE.W #$90,$FFFF8606.W MOVE.W $FFFF8606.W,D5 MOVE.W D5,L70790 BTST #0,D5 BEQ.S L706C4 MOVE.W #$80,$FFFF8606.W BSR.S L7072C L706C4 MOVE.W L7078C(PC),SR RTS L706CA MOVE.W #$80,$FFFF8606.W MOVE.B #7,D0 BSR L70596 RTS L706DA DBF D7,L706DA RTS L706E0 BSR.S L706EE MOVE.W D6,$FFFF8604.W BSR.S L706EE RTS MOVE.W $FFFF8604.W,D3 L706EE MOVE SR,-(A7) MOVE.W D7,-(A7) MOVEQ #$28,D7 L706F4 DBF D7,L706F4 MOVE.W (A7)+,D7 MOVE.W (A7)+,SR RTS L706FE MOVE.W L7079A,D6 ANDI.W #3,D6 MOVE.L #$50000,D7 MOVE.W #$80,$FFFF8606.W BSR.S L706E0 L70714 SUBQ.L #1,D7 BEQ.S L70722 BTST #5,$FFFFFA01.W BNE.S L70714 RTS L70722 MOVE.B #$F9,$707A6 RTS L7072C BSR.S L706EE MOVE.W $FFFF8604.W,$7079C BSR.S L706EE RTS L7073A MOVE.L $7079E,D1 ADDI.L #$2EE0,D1 MOVEA.L D1,A0 MOVE.L #$DAC,D3 MOVEQ #0,D2 MOVE.W -(A0),D5 L70750 MOVE.W -(A0),D0 CMP.W D0,D5 BNE.S L7075E ADDQ.L #2,D2 DBF D3,L70750 BRA.S L7076E L7075E SUBI.L #$170C,D2 BMI.S L7076E CLR.B $707A6 RTS L7076E ST $707A6 RTS L70776 MOVE.L #$176F,D2 MOVEA.L $7079E,A0 MOVE.L $4BA.W,D3 L70784 MOVE.W D3,(A0)+ DBF D2,L70784 RTS L7078C DC.L 0 L7078E DC.L 0 L70790 DC.L 0 L70792 DC.L 0 L70796 DC.L 0 L70797 DC.L 0 L70798 ORI.B #3,D0 L70799 DC.L 0 L7079A DC.L 0
;To remove a Protoscan protection all you have to do is type MOVEQ #0,D0 ;RTS ($70004E75) you need the moveq so that D0 is equil (0) when it returns ;from the protection as most of them do a TST.B D0 see above example.
;Here is a brief list of games you will find this protection in:
;The Untouchables ;Postman Pat ;Ninja Warriors ;Continental Curcus ;Where Time Stood Still
|