add support for encrypted E7Everywhere [fixes Language Carnival]

This commit is contained in:
4am 2024-04-29 12:10:05 -04:00
parent 7829069ff4
commit b2686f485e
4 changed files with 35 additions and 3 deletions

View File

@ -404,6 +404,7 @@ _endDiversiPatchers
+
!source "patchers/bbf9.a" ; gIsProDOS only
!source "patchers/fbffencrypted.a" ; gIsProDOS only
!source "patchers/e7everywhere.encrypted.a" ; gIsProDOS only
!source "patchers/pfs.prodos.a" ; gIsProDOS && T05 only
!source "patchers/leisure.a" ; gIsProDOS && T22 only
!source "patchers/memory.config.a" ; gIsProDOS only

View File

@ -3,8 +3,9 @@
; E7 bitstream in the track seam of every track
;
; We can't attack the bitstream itself (like #UNIVERSALE7) because it's not
; within any sector data, so we search for the code instead. AFAIK the code
; is never encrypted.
; within any sector data, so we search for the code instead. Encrypted
; variant is handled elsewhere.
;
; This does a full-track search on every track, which is unfortunate. I've
; only seen this protection on DOS and ProDOS disks, so we filter on that
; to optimize performance a little bit.

View File

@ -0,0 +1,30 @@
;------------------------------------------------------------------------------
; #E7EVERYWHERE.ENCRYPTED
; E7 bitstream in the track seam of every track
;
; We can't attack the bitstream itself (like #UNIVERSALE7) because it's not
; within any sector data, so we search for the code instead.
;
; tested on
; - Language Carnival 1 & 2 (DLM)
;------------------------------------------------------------------------------
; gIsProDOS is TRUE here
lda #$0F
sta .sector+1
.sector lda #$FF ; modified at runtime
ldx #$0C
ldy #$0A
jsr compare
!byte $F5
!byte $20,$00,$20
!byte $90,$04
!byte $20,$B0,$FE
!byte $60
bcs .nextsector ; passport-test-suite/Language Carnival.woz [C=0] matches
jsr PrintByID
!byte s_e7everywhere
jsr modify1 ; change branch target to success path
!byte $09
.nextsector
dec .sector+1
bpl .sector

View File

@ -387,7 +387,7 @@ StringTableHigh ; must be kept in sync with constants in enid.a
.passport
!text "Passport ",$00
.header
!text "@",s_passport,"by 4am@",s_space7,"@",s_space7," 2024-04-28",$00
!text "@",s_passport,"by 4am@",s_space7,"@",s_space7," 2024-04-29",$00
.bar9
!text "_________",$00
.bar18