From 6149eac1e86852d2f6286ce718a9c1d4ee7ad06e Mon Sep 17 00:00:00 2001 From: Peter Ferrie Date: Thu, 23 Jul 2020 12:37:27 -0700 Subject: [PATCH] FastChip MB everywhere --- src/prelaunch/battle.cruiser.a | 29 ++++++++++++++ src/prelaunch/genius.2.a | 21 ++++++++++ src/prelaunch/genius.a | 21 ++++++++++ src/prelaunch/oid.zone.a | 26 ++++++++++++ src/prelaunch/pitfall.ii.a | 28 ++++++++++++- src/prelaunch/rescue.raiders.a | 49 ++++++++++------------- src/prelaunch/resq.raiders.mb.a | 71 +++++++++++++++++++++++++++++++++ src/prelaunch/skyfox.a | 3 +- src/prelaunch/spy.strikes.bak.a | 19 +++++++-- 9 files changed, 233 insertions(+), 34 deletions(-) create mode 100644 src/prelaunch/resq.raiders.mb.a diff --git a/src/prelaunch/battle.cruiser.a b/src/prelaunch/battle.cruiser.a index 15a77f61e..9168c4d59 100644 --- a/src/prelaunch/battle.cruiser.a +++ b/src/prelaunch/battle.cruiser.a @@ -24,9 +24,38 @@ lda #$a5 sta $A22 ; patch - don't decrease lives + + lda #$4C + sta $8FFF + sta $9010 + lda #callback1 + sta $9001 + lda #callback2 + sta $9012 + lda #$C5 + sta $902A +DISABLE_ACCEL jmp $845 +callback1 + sec + sbc #8 + cmp #2 + bcc + +- jmp $9014 ++ ldy #$84 + jmp $9003 + +callback2 + sec + sbc #8 + cmp #2 + bcs - + jmp $902C + !if * > $1C0 { !error "code is too large, ends at ", * } diff --git a/src/prelaunch/genius.2.a b/src/prelaunch/genius.2.a index e850009ed..c6ad1b508 100644 --- a/src/prelaunch/genius.2.a +++ b/src/prelaunch/genius.2.a @@ -16,6 +16,10 @@ pha lda #$60 sta $9462 + lda #callback1 + sta $950F jsr $9442 pla beq + @@ -26,6 +30,23 @@ inc $9d ; game relies on it jmp $9600 +callback1 + lda #$4C + sta $D7D9 + lda #callback2 + sta $D7DB + jmp $D7C5 + +callback2 + sec + sbc #7 + cmp #2 + bcc + + jmp $D7E7 ++ jmp $D7DD + !if * > $1C0 { !error "code is too large, ends at ", * } diff --git a/src/prelaunch/genius.a b/src/prelaunch/genius.a index 99e00008e..f164394a1 100644 --- a/src/prelaunch/genius.a +++ b/src/prelaunch/genius.a @@ -16,6 +16,10 @@ pha lda #$60 sta $9462 + lda #callback1 + sta $950F jsr $9442 pla beq + @@ -26,6 +30,23 @@ inc $9d ; game relies on it jmp $9600 +callback1 + lda #$4C + sta $D7D9 + lda #callback2 + sta $D7DB + jmp $D7C5 + +callback2 + sec + sbc #7 + cmp #2 + bcc + + jmp $D7E7 ++ jmp $D7DD + !if * > $1C0 { !error "code is too large, ends at ", * } diff --git a/src/prelaunch/oid.zone.a b/src/prelaunch/oid.zone.a index 3101e558e..5f73b326f 100644 --- a/src/prelaunch/oid.zone.a +++ b/src/prelaunch/oid.zone.a @@ -18,9 +18,35 @@ lda #$ad sta $7FD5 ; patch - don't decrease lives + + lda #$4C + sta $AF79 + sta $AF8C + lda #callback1 + sta $AF7B + lda #callback2 + sta $AF8E +DISABLE_ACCEL jmp $3FFD +callback1 + sec + sbc #8 + cmp #2 + bcc + +- jmp $AF93 ++ jmp $AF7D + +callback2 + sec + sbc #8 + cmp #2 + bcs - + jmp $AF90 + !if * > $1C0 { !error "code is too large, ends at ", * } diff --git a/src/prelaunch/pitfall.ii.a b/src/prelaunch/pitfall.ii.a index b5c528384..73139f7ef 100644 --- a/src/prelaunch/pitfall.ii.a +++ b/src/prelaunch/pitfall.ii.a @@ -1,5 +1,5 @@ ;license:MIT -;(c) 2019 by 4am +;(c) 2019-2020 by 4am, qkumba !cpu 6502 !to "build/PRELAUNCH/PITFALL.II",plain @@ -12,6 +12,17 @@ sta $3D34 jsr $0800 ; decompress +RESET_VECTOR reset + lda #$4C + sta $2DF5 + sta $2E06 + lda #callback1 + sta $2DF7 + lda #callback2 + sta $2E08 +DISABLE_ACCEL jmp $6000 ;612A copies pages 2E & 2F to AE & AF for final location @@ -19,6 +30,21 @@ reset +READ_RAM2_NO_WRITE jmp ($FFFC) +callback1 + sec + sbc #8 + cmp #2 + bcc + +- jmp $AE0A ++ jmp $ADF9 + +callback2 + sec + sbc #8 + cmp #2 + bcs - + jmp $AE21 + !if * > $1C0 { !error "code is too large, ends at ", * } diff --git a/src/prelaunch/rescue.raiders.a b/src/prelaunch/rescue.raiders.a index eb51a939c..a0a898c33 100755 --- a/src/prelaunch/rescue.raiders.a +++ b/src/prelaunch/rescue.raiders.a @@ -7,36 +7,27 @@ !source "src/prelaunch/common.a" - +ENABLE_ACCEL - lda #$60 - sta $A37 - jsr $800 ; find and load "DOS" - ldx #$60 - stx $BFE5 - jsr $BFC8 - lda #$4C - sta $4047 - +GET_MOCKINGBOARD_SPEECH - bcs + - lda #$60 - sta $40FB ; no speech chip, pretend no MB -+ - +DISABLE_ACCEL ; otherwise Mockingboard detection fails - lda #0 - jsr $4000 - lda #reset - sta $FFFD - lda #$4C - sta $BFE5 - +READ_RAM1_WRITE_RAM1 ; fix crash on //c+ - jmp $404A - -reset + +READ_RAM2_WRITE_RAM2 + jsr EnableAccelerator + lda #3 + sta $56 ; ldrhi + lda $D401 + pha + lda $D403 + pha + lda #rraiders_mb + jsr LoadFileDirect + pla + sta $D403 + pla + sta $D401 +READ_ROM_NO_WRITE - jmp $FAA6 + jmp $300 + +rraiders_mb + !byte 25 + !text "PRELAUNCH/RESQ.RAIDERS.MB" !if * > $1C0 { !error "code is too large, ends at ", * diff --git a/src/prelaunch/resq.raiders.mb.a b/src/prelaunch/resq.raiders.mb.a new file mode 100644 index 000000000..549ed1191 --- /dev/null +++ b/src/prelaunch/resq.raiders.mb.a @@ -0,0 +1,71 @@ +;license:MIT +;(c) 2020 by qkumba + +!cpu 6502 +!to "build/PRELAUNCH/RESQ.RAIDERS.MB",plain +*=$300 + + !source "src/constants.a" ; no code in these + !source "src/macros.a" + + lda #$60 + sta $A37 + jsr $800 ; find and load "DOS" + ldx #$60 + stx $BFE5 + jsr $BFC8 + lda #$4C + sta $4047 + +GET_MOCKINGBOARD_SPEECH + bcs + + lda #$60 + sta $40FB ; no speech chip, pretend no MB ++ + lda #$60 + sta $4024 + +DISABLE_ACCEL ; otherwise Mockingboard detection fails + lda #0 + jsr $4000 + lda #$20 + sta $4024 + lda #$4C + sta $4110 + sta $411A + lda #callback1 + sta $4112 + lda #callback2 + sta $411C + jsr $4024 + + +READ_RAM1_WRITE_RAM1 ; fix crash on //c+ + lda #reset + sta $FFFD + lda #$4C + sta $BFE5 + jmp $404A + +reset + +READ_ROM_NO_WRITE + jmp $FAA6 + +callback1 + sec + sbc #5 + cmp #2 + bcc + +- jmp $4144 ++ jmp $4114 + +callback2 + sec + sbc #4 + cmp #3 + bcs - + jmp $411E diff --git a/src/prelaunch/skyfox.a b/src/prelaunch/skyfox.a index a112797ef..22d8cdb4d 100755 --- a/src/prelaunch/skyfox.a +++ b/src/prelaunch/skyfox.a @@ -1,5 +1,5 @@ ;license:MIT -;(c) 2019 by qkumba/Frank M. +;(c) 2019-2020 by qkumba/Frank M. !cpu 6502 !to "build/PRELAUNCH/SKYFOX",plain @@ -38,6 +38,7 @@ jmp $67BD callback + sec sbc #8 cmp #2 rts diff --git a/src/prelaunch/spy.strikes.bak.a b/src/prelaunch/spy.strikes.bak.a index edb9fc61a..f4c9b8032 100644 --- a/src/prelaunch/spy.strikes.bak.a +++ b/src/prelaunch/spy.strikes.bak.a @@ -1,5 +1,5 @@ ;license:MIT -;(c) 2019 by 4am +;(c) 2019-2020 by 4am, qkumba !cpu 6502 !to "build/PRELAUNCH/SPY.STRIKES.BAK",plain @@ -11,7 +11,8 @@ lda #$60 sta $0849 jsr $0800 ; decompress - +GET_MACHINE_STATUS + +READ_RAM2_NO_WRITE + lda MachineStatus and #CHEATS_ENABLED beq + ; lives in $17 @@ -19,7 +20,19 @@ sta $6AE7 ; patch - don't decrease lives sta $87EE ; patch - don't increase lives + - +DISABLE_ACCEL + lda MockingboardStuff + asl + bpl skipmb + lsr + and #7 + ora #$30 + sta $8F33 + lda #3 + sta $8FEC + +skipmb + jsr DisableAccelerator + +READ_ROM_NO_WRITE jmp $6000 !if * > $1C0 {