4cade/src/prelaunch/prince.of.persia.a

71 lines
1.4 KiB
Plaintext

;license:MIT
;(c) 2022 by qkumba, Frank M.
!cpu 6502
!to "build/PRELAUNCH.INDEXED/PP",plain
*=$106
!source "src/prelaunch/common.a"
inc $3F4 ; force reboot on reset
+READ_RAM2_NO_WRITE
jsr EnableAccelerator
lda MachineStatus
and #CHEATS_ENABLED
sta cheat_smc1+1
sta cheat_smc2+1
lda WaitForVBL
cmp #$60
php
+READ_ROM_NO_WRITE
lda #$60
sta $13B8
jsr $1200 ; decompress
lda #<callback1
sta $FE06
lda #<callback2
sta $FD26
lda #>callback1
sta $FE07
sta $FD27
plp
bne @good_vbl
ldx #<callback3
stx $FD6A
sta $FD6B
@good_vbl
jmp $EE00
callback1
cheat_smc1
lda #0
beq +
dec $2D0E ; patch - don't decrease time
+
+READ_RAM2_NO_WRITE
jsr DisableAccelerator
+READ_RAM1_WRITE_RAM1
jmp $4906
callback2
jsr $FF24
cheat_smc2
lda #0
beq +
lda #$a5
sta $2612 ; patch - don't decrease lives
+
rts
callback3
lda #$60 ; if VBL disabled in TR
sta $4ED ; then disable VBL in game
jmp $F924
!if * > $1C0 {
!error "code is too large, ends at ", *
}