passport/src/patchers/origin.a

37 lines
1.0 KiB
Plaintext

;-------------------------------
; #ORIGIN
; disk allows either $DE or $AB + timing bit
; for the address epilogue -- if it finds the latter,
; it also munges the sector number from the address field
; (no patches required, but we want to
; log it and pretend we patched something
; so we get a nice CRACK COMPLETE message)
;
; tested on
; - Times of Lore
; - Ultima V
;-------------------------------
!zone {
; gIsProDOS is TRUE here
lda #$0F
sta .sector+1
.sector lda #$FF ; modified at runtime
ldx #$8B
ldy #$0C
jsr compare
!byte $BD,$8C,$C0; LDA $C08C,X
!byte $C9,$AB ; CMP #$AB
!byte $D0,$0C ; BNE +
!byte $38 ; SEC
!byte $A5,$5D ; LDA $5D
!byte $E9,$11 ; SBC #$11
bcs + ; passport-test-suite/Ultima V.woz [C=0] matches
jsr PrintByID
!byte s_origin
inc gPatchCount
+ dec .sector+1
bpl .sector
.exit
}