anti-m/src/ididsi.a

129 lines
2.4 KiB
Plaintext

; IDSI tracer
; written by qkumba
;
; tested on
; - Juggler
; - Trick Shot
;
IDIDSI
lda #8
ldx #1
ldy #19
jsr CompareMemory
!byte $A0,$0E ;LDY #$0E
!byte $B9,$00,$08 ;LDA $0800,Y
!byte $49,$AA ;EOR #$AA
!byte $99,$00,$08 ;STA $0800,Y
!byte $C8 ;INY
!byte $D0,$F5 ;BNE *-9
!byte $0A,$B1,$03 ;encoded
!byte $D1,$F3,$AA ;encoded
bcs @exit
; patch code to regain control after decryption
lda #<@callback1 xor $D1
sta $8ba
lda #>@callback1 xor $D1
sta $8bb
@exit
rts
@callback1
ldx #$DF
lda $1057
cmp #$84
bne @hook2b
lda #0
sta $107C
sta $10D4
lda #$2C
sta $1088
ldx #$F9
@hook2b
lda #<@callback2
sta $1000,X
lda #>@callback2
sta $1001,X
jmp $1000
@callback2
ldy #@tracer2_e-@tracer2
@copyphase2
lda @tracer2-1,y
sta $1C5D-1,y
dey
bne @copyphase2
lda #$5D
sta $1C2D
lda #$1C
sta $1C2E
jmp $1600
@tracer2
!pseudopc $1C5D {
@tracer2x
ldy #@tracer3_e-@tracer3
@copyphase3
lda @tracer3-1,y
sta $BF00-1,y
dey
bne @copyphase3
lda #$BF
sta $4FB
jmp $103
@tracer3
!pseudopc $BF00 {
@tracer3x
lda $196
sta @cb3patch1+1
sta @cb3patch2+1
sta @cb3patch3+1
sta @cb3patch4+1
ldx $197
stx @cb3patch3+2
stx @cb3patch4+2
dex
stx @cb3patch1+2
stx @cb3patch2+2
lda #<@callback3
sta $196
lda #>@callback3
sta $197
jmp $100
@callback3
@cb3patch
ldx #$FB
@cb3patch1
lda $d1d1,X ;SMC
cmp #$c0
bne @cb3jump
ldy #<((@cb3_end + 1) & -2)
- tya
eor $bf00,y
sta $bf00,y
iny
iny
bne -
lda #$BF
@cb3patch2
sta $d1d1,X ;SMC
ldx #$37
lda #$00
@cb3patch3
sta $d1d1,X ;SMC
ldx #$42
lda #$18
@cb3patch4
sta $d1d1,X ;SMC
@cb3jump
jmp (@cb3patch3+1)
@cb3_end
}
@tracer3_e
}
@tracer2_e