diff --git a/src/passport.a b/src/passport.a index 510e8eb..21b97ed 100755 --- a/src/passport.a +++ b/src/passport.a @@ -744,6 +744,8 @@ _applyToAll !source "patchers/rwtsswapmecc.a" ; gIsMECCFastloader only !source "patchers/protecteddos.a" ; gIsProtDOS only !source "patchers/fbff.a" + !source "patchers/fbffencrypted.a" ; gIsProDOS only + !source "patchers/polarware.a" ; gIsProDOS only !source "patchers/sierra.a" ; gIsBoot0 only !source "patchers/corrupter.a" ; T13 only !source "patchers/ea.a" ; (gIsEA || gIsBoot0) only diff --git a/src/patchers/fbffencrypted.a b/src/patchers/fbffencrypted.a new file mode 100644 index 0000000..126bf32 --- /dev/null +++ b/src/patchers/fbffencrypted.a @@ -0,0 +1,45 @@ +;------------------------------- +; #FBFFENCRYPTED +; an encrypted variant of Activision's Timing Bit Detection +; +; see 4am crack no. 622 The Electric Crayon: ABCs +; for full explanation +; +; tested on many Polarware disks: +; The Electric Crayon: ABCs (1986) +; The Electric Crayon: Fun on the Farm (1986) +; The Electric Crayon: This Land is Your Land (1986) +; The Spy's Adventures in North America +; The Spy's Adventures in Europe +; The Crimson Crown +; Oo-Topos +; +; and several non-Polarware disks: +; Clue Master Detective +; RISK (1988, Leisure Genius) +; ESL Writer (1989, Scholastic) +; Magic Spells v2.1 (1985, The Learning Company) +; +;------------------------------- +!zone { + lda gIsProDOS ; only seen this protection on ProDOS disks + bne .exit + ldy #$06 + jsr SearchTrack + !byte $39,$FD + !byte $2F,$FB + !byte $39,$FC + bcs .exit + inx + inx + inx + sta gDisplayBytes + pha + lda #s_fbff + jsr PrintByID + pla + ldy #$01 + jsr modify + !byte $A2 +.exit +} diff --git a/src/patchers/polarware.a b/src/patchers/polarware.a new file mode 100644 index 0000000..61c7e26 --- /dev/null +++ b/src/patchers/polarware.a @@ -0,0 +1,38 @@ +;------------------------------- +; #POLARWARE +; a delayed secondary protection check +; seen on Polarware games +; similar to #FBFFENCRYPTED but the encryption key is different +; and the routine ultimately returns regardless of success or failure +; (but the value in the accumulator is different and is used later +; to trigger hilarious in-game failure) +; +; tested on +; The Spy's Adventures in North America +; The Spy's Adventures in Europe +; The Crimson Crown +; Oo-Topos +; +;------------------------------- +!zone { + lda gIsProDOS ; only seen this protection on ProDOS disks + bne .exit + ldy #$06 + jsr SearchTrack + !byte $29,$6D + !byte $3F,$EB + !byte $29,$60 + bcs .exit + inx + inx + inx + sta gDisplayBytes + pha + lda #s_fbff + jsr PrintByID + pla + ldy #$01 + jsr modify + !byte $B2 +.exit +} diff --git a/src/strings/en.a b/src/strings/en.a index d9132d2..f431479 100755 --- a/src/strings/en.a +++ b/src/strings/en.a @@ -138,7 +138,7 @@ StringTable ; can be set directly before calling PrintByID. ; .header - !text "Passport by 4am 2018-01-25",$00 + !text "Passport by 4am 2018-01-26",$00 .mainmenu !text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D !text " "