macros for reset vector

fixes https://github.com/a2-4am/4cade/issues/79
This commit is contained in:
4am 2019-12-23 10:48:04 -05:00
parent ac36258131
commit 3a906762c4
10 changed files with 42 additions and 92 deletions

View File

@ -177,3 +177,30 @@
jsr ROM_TEXT2COPY ; set alternate display mode on IIgs (required for some games)
+
}
!macro RESET_VECTOR .addr {
lda #<.addr
sta $3F2
lda #>.addr
sta $3F3
eor #$A5
sta $3F4
}
; for games that clobber $100-$105, the prelaunch code constructs a new reset vector
; somewhere else and sets its
!macro NEW_RESET_VECTOR .addr {
lda #$2C
sta .addr
lda #$88
sta .addr+1
lda #$C0
sta .addr+2
lda #$6C ; JMP ($FFFC) points to 'Reenter'
sta .addr+3
lda #$FC
sta .addr+4
lda #$FF
sta .addr+5
+RESET_VECTOR .addr
}

View File

@ -19,12 +19,8 @@
+ENABLE_ACCEL
lda #0
sta $3f2
lda #1
sta $3f3
lda #$A4 ; reset vector patch
sta $3f4 ; (doesn't work during copyright)
; re-patch reset vector (doesn't work during copyright sequence)
+RESET_VECTOR $100
lda #$6c
sta $bd40

View File

@ -7,25 +7,7 @@
!source "src/prelaunch/common.a"
lda #$2C
sta $7000
lda #$88
sta $7001
lda #$C0
sta $7002
lda #$6C ; JMP ($FFFC)
sta $7003 ; 'Reenter'
lda #$FC
sta $7004
lda #$FF
sta $7005 ; re-establish LC hook
lda #0
sta $3F2
lda #$70
sta $3F3
lda #$D5
sta $3F4 ; reset vector patch
+NEW_RESET_VECTOR $7000
jmp $2000

View File

@ -21,18 +21,8 @@
sta $2d07
sta $1c17
+
ldy #6
- lda $100-1,y ; game uses $100 as variable
sta $1B0-1,y ; move hook to $1B0
dey
bne -
lda #$B0
sta $3F2
lda #$01
sta $3F3
lda #$A4
sta $3F4 ; reset vector patch
; game uses $100 as variable, so move reset vector to $1B0
+NEW_RESET_VECTOR $1B0
+DISABLE_ACCEL
jmp $919

View File

@ -21,12 +21,8 @@
sta $948
jsr $940
lda #0
sta $3F2
lda #1
sta $3F3
lda #$A4
sta $3F4 ; reset vector patch
; re-patch reset vector
+RESET_VECTOR $100
jmp $950

View File

@ -11,25 +11,7 @@
sta $872
jsr $800 ; title
lda #$2C
sta $100
lda #$88
sta $101
lda #$C0
sta $102
lda #$6C ; JMP ($FFFC)
sta $103 ; 'Reenter'
lda #$FC
sta $104
lda #$FF
sta $105 ; re-establish LC hook
lda #0
sta $3f2
lda #1
sta $3f3
lda #$A4
sta $3f4 ; reset vector patch
+NEW_RESET_VECTOR $100
jmp $2007

View File

@ -18,12 +18,8 @@
sta $1DB2
jsr $1D1F
lda #0
sta $3f2
lda #1
sta $3f3
lda #$A4
sta $3f4 ; reset vector patch
; re-patch reset vector
+RESET_VECTOR $100
jmp $42BC

View File

@ -19,12 +19,8 @@
sta $BD19
jsr $BCFA
lda #0
sta $3F2
lda #1
sta $3F3
lda #$A4
sta $3F4 ; reset vector patch
; re-patch reset vector
+RESET_VECTOR $100
jmp $7E00

View File

@ -12,12 +12,8 @@
sta $2078
jsr $2000 ; decompress
lda #0
sta $3F2
lda #1
sta $3F3
lda #$A4
sta $3F4 ; reset vector patch
; re-patch reset vector
+RESET_VECTOR $100
+DISABLE_ACCEL
jmp $817

View File

@ -12,18 +12,7 @@
sta $9318
jsr $6BD1 ; decompress/title
ldy #6
- lda $100-1,y
sta $280-1,y ; move hook to $280
dey
bne -
lda #$80
sta $3F2
lda #$02
sta $3F3
lda #$A7
sta $3F4 ; reset vector patch
+NEW_RESET_VECTOR $280
jmp $6000