add support for Neosoft self-decrypting nibble count at BB29 [fixes Animal Photo Fun, Comparison Kitchen]

This commit is contained in:
4am 2022-11-29 18:32:21 -05:00
parent c525e8c708
commit b250d98d23
5 changed files with 51 additions and 0 deletions

View File

@ -74,6 +74,7 @@ AnalyzeT00
!source "../patchers/t00_sve.a"
!source "../patchers/t00_swordthrust.a"
!source "../patchers/t00_scottforesman_dos33.a"
!source "../patchers/t00_neosoft.a"
; ----- add new DOS 3.3 patchers above this line -----
!source "../patchers/t00_nibtable.a" ; clobbers $2000..$2095 (AnalyzeT00 is decompressed into $2000)
!source "../patchers/t00_rwts.a" ; must run after all other patchers that might modify RWTS code

View File

@ -0,0 +1,43 @@
;-------------------------------
; #T00NEOSOFT
; nibble count during early boot
;
; tested on
; - Comparison Kitchen (Neosoft/DLM)
; - Animal Photo Fun (Neosoft/DLM)
;-------------------------------
; gTrack = 0
; Caller found DOS 3.3 RWTS
lda #$01
ldx #$38
jsr compare3 ; if T00,S01,$38 ==
!byte $20,$90,$B7
bcs +
ldx #$90
jsr compare3 ; and T00,S01,$90 ==
!byte $20,$00,$BB
bcs +
lda #$05
ldx #$DA
jsr compare3 ; and T00,S05,$DA ==
!byte $F8,$55,$E2; XOR #$55 of $AD $00 $B7 (LDA $B700)
bcs +
ldx #$6C
jsr compare2 ; and T00,S05,$6C ==
!byte $D0,$55 ; XOR #$55 of $85 $00 (STA $00)
bcs + ; passport-test-suite/Animal Photo Fun.woz [C=0] matches
jsr PrintByID
!byte s_neosoft
jsr modify2 ; then set T00,S05,$6C ==
!byte $A5,$39 ; XOR #$55 of $F0 $6C (BEQ +6C)
ldx #$DA
jsr modify1
!byte $D8 ; XOR #$55 of $8D (STA)
+

View File

@ -11,6 +11,8 @@
; - Percent 1 (Scott, Foresman and Company)
;-------------------------------
; gTrack = 0
; Caller found DOS 3.3 RWTS
lda #$0B
ldx #$15
ldy #$06

View File

@ -216,6 +216,7 @@ StringTableLow ; must be kept in sync with constants in enid.a
!byte <.enlightenmentb0
!byte <.enlightenment
!byte <.sfc
!byte <.neosoft
StringTableHigh ; must be kept in sync with constants in enid.a
!byte >.header
@ -371,6 +372,7 @@ StringTableHigh ; must be kept in sync with constants in enid.a
!byte >.enlightenmentb0
!byte >.enlightenment
!byte >.sfc
!byte >.neosoft
.passport
!text "Passport ",$00
@ -768,3 +770,5 @@ StringTableHigh ; must be kept in sync with constants in enid.a
!text "@",s_found,"flux timing @",s_protection,$8D,$00
.sfc
!text "@",s_found,"SFC @",s_protectioncheck,$8D,$00
.neosoft
!text "@",s_found,"Neosoft @",s_protectioncheck,$8D,$00

View File

@ -154,3 +154,4 @@ s_pfs = $95
s_enlightenmentb0 = $96
s_enlightenment = $97
s_sfc = $98
s_neosoft = $99