diff --git a/src/mods/t00only.a b/src/mods/t00only.a index b60cee5..44cca6c 100644 --- a/src/mods/t00only.a +++ b/src/mods/t00only.a @@ -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 diff --git a/src/patchers/t00_neosoft.a b/src/patchers/t00_neosoft.a new file mode 100644 index 0000000..d2a3474 --- /dev/null +++ b/src/patchers/t00_neosoft.a @@ -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) ++ diff --git a/src/patchers/t00_scottforesman_dos33.a b/src/patchers/t00_scottforesman_dos33.a index 61695b6..78a65af 100644 --- a/src/patchers/t00_scottforesman_dos33.a +++ b/src/patchers/t00_scottforesman_dos33.a @@ -11,6 +11,8 @@ ; - Percent 1 (Scott, Foresman and Company) ;------------------------------- ; gTrack = 0 + ; Caller found DOS 3.3 RWTS + lda #$0B ldx #$15 ldy #$06 diff --git a/src/strings/en.a b/src/strings/en.a index 66aeb54..5cdaa8e 100755 --- a/src/strings/en.a +++ b/src/strings/en.a @@ -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 diff --git a/src/strings/enid.a b/src/strings/enid.a index 8b65dd6..6936db8 100644 --- a/src/strings/enid.a +++ b/src/strings/enid.a @@ -154,3 +154,4 @@ s_pfs = $95 s_enlightenmentb0 = $96 s_enlightenment = $97 s_sfc = $98 +s_neosoft = $99