From 0b924e936ef84900987d80a5ab431bda34a8c1e8 Mon Sep 17 00:00:00 2001 From: frankmilliron <34376619+frankmilliron@users.noreply.github.com> Date: Thu, 26 Dec 2019 11:38:32 -0800 Subject: [PATCH] Reset vector fixes (#89) --- src/prelaunch/head.on.a | 15 +++++++++++++++ src/prelaunch/impossible.miss.a | 11 ++++++++--- src/prelaunch/plasmania.a | 3 ++- src/prelaunch/shuffleboard.a | 31 +++++++++++++++++++++++++++++++ src/prelaunch/space.quarks.a | 22 ++++++++++++++++++++++ src/prelaunch/space.raiders.a | 23 +++++++++++++++++++++++ 6 files changed, 101 insertions(+), 4 deletions(-) mode change 100644 => 100755 src/prelaunch/plasmania.a create mode 100755 src/prelaunch/shuffleboard.a create mode 100755 src/prelaunch/space.quarks.a create mode 100755 src/prelaunch/space.raiders.a diff --git a/src/prelaunch/head.on.a b/src/prelaunch/head.on.a index 25dab81f0..09299e85b 100755 --- a/src/prelaunch/head.on.a +++ b/src/prelaunch/head.on.a @@ -7,8 +7,23 @@ !source "src/prelaunch/common.a" + ; clobbers $100, sets LC & page 3 reset vectors +NEW_RESET_VECTOR $7000 + lda #$4C + sta $7003 ; JMP not (JMP) + lda $104 + sta $7004 + lda $105 ; clone actual TR reentry point to $7000 + sta $7005 ; loops between LC and $7000 otherwise + + +READ_RAM2_WRITE_RAM2 + lda #0 + sta $FFFC + lda #$70 + sta $FFFD ; LC reset vector fix to $7000 + +READ_ROM_NO_WRITE + jmp $2000 !if * > $1C0 { diff --git a/src/prelaunch/impossible.miss.a b/src/prelaunch/impossible.miss.a index f531837d4..319d4b4ef 100755 --- a/src/prelaunch/impossible.miss.a +++ b/src/prelaunch/impossible.miss.a @@ -7,9 +7,14 @@ !source "src/prelaunch/common.a" + ; reboot on reset during title + +READ_RAM2_WRITE_RAM2 + +LC_REBOOT + +READ_ROM_NO_WRITE + lda #$60 sta $920 - jsr $800 ; decompress + jsr $800 ; decompress/title lda #$60 sta $9f1 @@ -18,9 +23,9 @@ lda #$60 sta $4018 - jsr $4000 ; LC switched in + jsr $4000 ; sets reset vector/LC switched in - +LC_REBOOT + +LC_REBOOT ; change it back to reboot jmp $800 diff --git a/src/prelaunch/plasmania.a b/src/prelaunch/plasmania.a old mode 100644 new mode 100755 index 27273e34b..314461319 --- a/src/prelaunch/plasmania.a +++ b/src/prelaunch/plasmania.a @@ -1,5 +1,5 @@ ;license:MIT -;(c) 2019 by qkumba +;(c) 2019 by qkumba/Frank M. !cpu 6502 !to "build/PRELAUNCH/PLASMANIA",plain @@ -8,6 +8,7 @@ !source "src/prelaunch/common.a" +USES_TEXT_PAGE_2 + +NEW_RESET_VECTOR $BFF0 ; overwrites $100 once game starts jmp $800 !if * > $1C0 { diff --git a/src/prelaunch/shuffleboard.a b/src/prelaunch/shuffleboard.a new file mode 100755 index 000000000..ea65fba08 --- /dev/null +++ b/src/prelaunch/shuffleboard.a @@ -0,0 +1,31 @@ +;license:MIT +;(c) 2019 by Frank M. + +!cpu 6502 +!to "build/PRELAUNCH/SHUFFLEBOARD",plain +*=$106 + + !source "src/prelaunch/common.a" + + +ENABLE_ACCEL + lda #$60 + sta $3EE2 + jsr $3EBB ; decompress + + lda #$60 + sta $1021 + jsr $1000 ; title/set reset vector + + lda #$2C + sta $97FF + sta $97F3 + sta $B1A2 ; BIT changing reset + + +RESET_VECTOR $100 + +DISABLE_ACCEL + + jmp $A03B + +!if * > $1C0 { + !error "code is too large, ends at ", * +} diff --git a/src/prelaunch/space.quarks.a b/src/prelaunch/space.quarks.a new file mode 100755 index 000000000..5fb22f9c6 --- /dev/null +++ b/src/prelaunch/space.quarks.a @@ -0,0 +1,22 @@ +;license:MIT +;(c) 2019 by Frank M. + +!cpu 6502 +!to "build/PRELAUNCH/SPACE.QUARKS",plain +*=$106 + + !source "src/prelaunch/common.a" + + +ENABLE_ACCEL + lda #$60 + sta $3E9D + jsr $3E65 ; decompress/set reset vector + + +RESET_VECTOR $100 + +DISABLE_ACCEL + + jmp $200 + +!if * > $1C0 { + !error "code is too large, ends at ", * +} diff --git a/src/prelaunch/space.raiders.a b/src/prelaunch/space.raiders.a new file mode 100755 index 000000000..cb7cd0ead --- /dev/null +++ b/src/prelaunch/space.raiders.a @@ -0,0 +1,23 @@ +;license:MIT +;(c) 2019 by Frank M. + +!cpu 6502 +!to "build/PRELAUNCH/SPACE.RAIDERS",plain +*=$106 + + !source "src/prelaunch/common.a" + + +ENABLE_ACCEL + lda #$60 + sta $8F09 + jsr $8EF1 ; decompress + + lda #1 + sta $401A ; reset vector patch + +DISABLE_ACCEL + + jmp $4000 + +!if * > $1C0 { + !error "code is too large, ends at ", * +}