diff --git a/src/passport.a b/src/passport.a index fd89e30..f8b0c0b 100755 --- a/src/passport.a +++ b/src/passport.a @@ -724,6 +724,7 @@ _applyToAll !source "patchers/protecteddos.a" !source "patchers/fbff.a" !source "patchers/sierra.a" + !source "patchers/corrupter.a" !source "patchers/ea.a" lda gPatchCount diff --git a/src/patchers/corrupter.a b/src/patchers/corrupter.a new file mode 100644 index 0000000..4ed060a --- /dev/null +++ b/src/patchers/corrupter.a @@ -0,0 +1,40 @@ +;------------------------------- +; #CORRUPTER +; intentionally destroys T00,S00 +; if protection check fails +;------------------------------- +!zone { +corrupter + lda #$0F + sta .sector+1 +.sector lda #$FF ; modified at runtime + ldx #$2C + ldy #$07 + jsr compare + !byte $20,$E3,$03,$84,$00,$85,$01 + bcs .nextsector + ldx #$D4 + ldy #$0F + jsr compare + !byte $A9,$00,$8D,$00,$A0,$EE,$D3,$40 + !byte $AD,$D3,$40,$C9,$FF,$D0,$F1 + bcs .nextsector + ldx #$A4 + ldy #$0F + jsr compare + !byte $A9,$23,$85,$02,$A9,$00,$85,$03 + !byte $A9,$01,$85,$04,$20,$28,$40 + bcs .nextsector + sta gDisplayBytes + pha + lda #s_corrupter + jsr PrintByID + pla + ldy #$01 + jsr modify + !byte $60 +.nextsector + dec .sector+1 + bpl .sector +.exit +} diff --git a/src/strings/en.a b/src/strings/en.a index 893945c..e3871ee 100755 --- a/src/strings/en.a +++ b/src/strings/en.a @@ -84,9 +84,10 @@ s_specdel = $41 s_bytrack = $42 s_a5count = $43 s_restart = $44 -s_eab0 = $45 -s_eatrk6 = $46 -STRINGCOUNT = $47 +s_corrupter= $45 +s_eab0 = $46 +s_eatrk6 = $47 +STRINGCOUNT = $48 !zone { StringTable @@ -409,6 +410,9 @@ StringTable !text "T%t,S%0 Found A5 nibble count",$8D,$00 .restart !text "Restarting scan",$8D,$00 +.corrupter + !text "T%t,S%0 Protection check intentionally",$8D + !text "destroys unauthorized copies",$8D,$00 .eaboot0 !text "T00 Found Electronic Arts bootloader",$8D,00 .eatrk6