2022-08-30 19:20:02 +00:00
|
|
|
;license:MIT
|
|
|
|
;(c) 2022 by qkumba
|
|
|
|
|
|
|
|
!cpu 6502
|
2022-10-01 00:04:02 +00:00
|
|
|
!to "build/DEMO/KARATEKA#060200",plain
|
2022-08-30 19:20:02 +00:00
|
|
|
*=$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
|
2022-09-27 17:20:04 +00:00
|
|
|
ldx #3-1
|
|
|
|
- lda patch,x
|
|
|
|
sta $B7EA,x
|
|
|
|
sta $B7EF,x
|
|
|
|
sta $B80C,x
|
|
|
|
sta $B818,x
|
|
|
|
dex
|
|
|
|
bpl -
|
2022-08-30 19:20:02 +00:00
|
|
|
lda #$AD
|
|
|
|
sta $D0A
|
|
|
|
sta $C59
|
|
|
|
sta $C68
|
|
|
|
sta $C78
|
|
|
|
sta $C8D
|
|
|
|
sta $CB9
|
|
|
|
sta $D72
|
|
|
|
sta $D88
|
|
|
|
sta $DDF
|
|
|
|
lda #$60
|
|
|
|
sta $777F
|
2022-09-27 17:20:04 +00:00
|
|
|
ldx #2-1
|
|
|
|
- lda patch2,x
|
|
|
|
sta $B7FD,x
|
|
|
|
sta $D16,x
|
|
|
|
sta $B5D8,x
|
|
|
|
sta $3F2,x
|
|
|
|
dex
|
|
|
|
bpl -
|
|
|
|
jsr $FB6F
|
2022-08-30 19:20:02 +00:00
|
|
|
|
|
|
|
+DISABLE_ACCEL
|
|
|
|
lda #0
|
|
|
|
rts
|
|
|
|
|
2022-09-27 17:20:04 +00:00
|
|
|
patch !byte $A9,$00,$EA
|
|
|
|
patch2 !word return
|
|
|
|
|
2022-08-30 19:20:02 +00:00
|
|
|
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 ", *
|
|
|
|
}
|