4cade/src/demo/karateka.a

103 lines
1.9 KiB
Plaintext

;license:MIT
;(c) 2022 by qkumba
!cpu 6502
!to "build/DEMO/KARATEKA#060200",plain
*=$200
!source "src/prelaunch/common.a"
!source "src/constants.a" ; no code in these
!source "src/macros.a"
+READ_RAM2_WRITE_RAM2
jsr EnableAccelerator
reset
+LOAD_FILE_KEEP_DIR karateka, $3FF6, karateka_dir_e-karateka_dir_b
+READ_ROM_NO_WRITE
lda #$60
sta $4013
jsr $3FF6 ; decompress
ldx #5
- lda $100,x
sta $BF29+return-callback1,x
dex
bpl -
ldx #callback_e-callback_b
- lda callback_b-1,x
sta $BF29-1,x
dex
bne -
lda #$AD
sta $A4A6
lda #<callback1
sta $A51C
lda #>callback1
sta $A51D
txa
jmp $A495
callback_b !pseudopc $329 {
callback1
lda #<callback2
sta $20F
lda #>callback2
sta $210
jmp $200
callback2
jsr $104
ldx #3-1
- lda patch,x
sta $B7EA,x
sta $B7EF,x
sta $B80C,x
sta $B818,x
dex
bpl -
lda #$AD
sta $D0A
sta $C59
sta $C68
sta $C78
sta $C8D
sta $CB9
sta $D72
sta $D88
sta $DDF
lda #$60
sta $777F
ldx #2-1
- lda patch2,x
sta $B7FD,x
sta $D16,x
sta $B5D8,x
sta $3F2,x
dex
bpl -
jsr $FB6F
+DISABLE_ACCEL
lda #0
rts
patch !byte $A9,$00,$EA
patch2 !word return
return
}
callback_e
karateka
!byte karateka_e-karateka_b
karateka_b
karateka_dir_b
!text "X/KARATEKA"
karateka_dir_e
!text "/KARATEKA"
karateka_e
!if * > $3F0 {
!error "code is too large, ends at ", *
}