From aa827876549a3ca00ba7f3c2a07bd4c735125f9d Mon Sep 17 00:00:00 2001 From: Peter Ferrie Date: Tue, 11 Jul 2017 21:19:36 -0700 Subject: [PATCH] support some AGI games --- src/id/dos33.a | 27 +++++++++++++++++++++++++-- src/id/trace.a | 10 ++++++---- src/patchers/sierra.a | 39 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 68 insertions(+), 8 deletions(-) diff --git a/src/id/dos33.a b/src/id/dos33.a index cd3a08a..ac78bd0 100755 --- a/src/id/dos33.a +++ b/src/id/dos33.a @@ -62,11 +62,34 @@ IDDOS33 !byte $6C,$3E,$00 !byte $EE,$FE,$08 !byte $EE,$FE,$08 + !byte WILDCARD,WILDCARD,WILDCARD + !byte WILDCARD,WILDCARD,WILDCARD + !byte WILDCARD,WILDCARD,WILDCARD + !byte $A6,$2B + bcs .exit +; +; DOS 3.3 has JSR $FE89 / JSR $FE93 / JSR $FB2F +; some Sierra have STA $C050 / STA $C057 / STA $C055 instead +; with the unpleasant side-effect of showing text-mode garbage +; if mixed-mode was enabled at the time +; + lda #$00 + ldx #$3F + ldy #$09 + jsr compare ; if T00,S00,$3F == !byte $20,$89,$FE !byte $20,$93,$FE !byte $20,$2F,$FB - !byte $A6,$2B - bcs .exit + bcc + + lda #$00 + ldx #$3F + ldy #$09 + jsr compare ; if T00,S00,$3F == + !byte $8D,$50,$C0 + !byte $8D,$57,$C0 + !byte $8D,$55,$C0 ++ + ; ; Sector order map must be standard (no exceptions) ; diff --git a/src/id/trace.a b/src/id/trace.a index fc585fb..27bb958 100755 --- a/src/id/trace.a +++ b/src/id/trace.a @@ -44,10 +44,12 @@ TraceDOS33b sta $084B lda #>TraceDOS33c sta $084C - lda #$2C ; disable calls to - sta $083F ; TEXt/PR0/IN0 - sta $0842 - sta $0845 + lda #$EA + ldy #9 +.noppatch + sta $83E,Y ; disable calls to + dey ; TEXt/PR0/IN0 + bne .noppatch ; including "Grafboot" jmp $0801 TraceDOS33c diff --git a/src/patchers/sierra.a b/src/patchers/sierra.a index 44e923a..8235ecd 100755 --- a/src/patchers/sierra.a +++ b/src/patchers/sierra.a @@ -20,6 +20,10 @@ ; Winnie the Pooh ; Donald Duck ; Mickey's Space Adventure +; King's Quest +; Leisure Suit Larry +; Space Quest +; The Black Cauldron ; ; module by qkumba ;------------------------------- @@ -185,7 +189,7 @@ !byte $80 ;dummy !byte $08,$CE,$CF,$CD,$CF,$CE,$C9,$C3,$CF ;NOMONICO - bcc + ++ bcc + ldy #19 jsr SearchTrack !byte $20,$07,$FF ;JSR $FF07 @@ -197,13 +201,44 @@ !byte $A9,$02 ;LDA #$02 !byte $85,$0C ;STA $0C !byte $4C,$41,$7E ;JMP $7E41 - bcc + ++ bcc + ldy #17 jsr SearchTrack !byte $20,$27,$15 ;JSR $1527 !byte $4C,$6C,$41 ;JMP $416C !byte $84,$C2,$CC,$CF,$C1,$C4,$A0,$D7,$C1,$CC,$D4 ;"BLOAD WALT..." ++ bcc + + ldy #11 + jsr SearchTrack + !byte $20,$00,$FF ;JSR $FF00 + !byte $18 ;CLC + !byte $A9,$7A ;LDA #$7A + !byte $65,$08 ;ADC $08 + !byte $8D,$65,$66 ;STA $6665 ++ bcc + + ldy #18 + jsr SearchTrack + !byte $20,$00,$FF ;JSR $FF00 + !byte $A9,$00 ;LDA #$00 + !byte $85,$A6 ;STA $A6 + !byte $85,$A7 ;STA $A7 + !byte $A9,$00 ;LDA #$00 + !byte $85,$A8 ;STA $A8 + !byte $85,$A9 ;STA $A9 + !byte $20,$3A,$53 ;JSR $533A ++ bcc + + ldy #21 + jsr SearchTrack + !byte $20,$00,$FF ;JSR $FF00 + !byte $A5,$AC ;LDA $AC + !byte $8D,$E0,$7E ;STA $7EE0 + !byte $A5,$AD ;LDA $AD + !byte $8D,$E1,$7E ;STA $7EE1 + !byte $A5,$06 ;LDA $06 + !byte $85,$AC ;STA $AC + !byte $A5,$07 ;LDA $07 + !byte $85,$AD ;STA $AD bcs ++ + sta gDisplayBytes pha