nes-proj/backyard/platform/c64/ctk/ctk-mouse-joy.S

136 lines
2.0 KiB
ArmAsm

;---------------------------------------------------------------------
.macpack generic
.import _ctk_mouse_joyx, _ctk_mouse_joyy
.import _ctk_mouse_firebutton
.export _ctk_mouse_joy
;---------------------------------------------------------------------
.bss
lastjoydy: .res 1
lastjoydx: .res 1
joydycnt: .res 1
joydxcnt: .res 1
;---------------------------------------------------------------------
.code
;---------------------------------------------------------------------
_ctk_mouse_joy:
ldy $dc02
lda #0
sta $dc02
lda $dc00
sty $dc02
ldy #0
ldx #0
lsr
bcs nodey
dey
nodey:
lsr
bcs noiny
iny
noiny:
lsr
bcs nodex
dex
nodex:
lsr
bcs noinx
inx
noinx:
and #1
eor #1
ora _ctk_mouse_firebutton
sta _ctk_mouse_firebutton
cpy lastjoydy
sty lastjoydy
bne noydy
tya
pha
inc joydycnt
lda joydycnt
cmp #$1f
bmi nostajoydycnt
lda #$20
sta joydycnt
nostajoydycnt:
lsr
lsr
lsr
lsr
tay
pla
asldeyloop:
asl
dey
bpl asldeyloop
tay
jmp ydy
noydy:
lda #0
sta joydycnt
ydy:
tya
clc
adc _ctk_mouse_joyy
cmp #240
bcc :+
lda #0
:
cmp #200
bcc :+
lda #199
:
sta _ctk_mouse_joyy
cpx lastjoydx
stx lastjoydx
bne noxdx
txa
pha
inc joydxcnt
lda joydxcnt
cmp #$1f
bmi nostajoydxcnt
lda #$20
sta joydxcnt
nostajoydxcnt:
lsr
lsr
lsr
lsr
tax
pla
asldexloop:
asl
dex
bpl asldexloop
tax
jmp xdx
noxdx:
lda #0
sta joydxcnt
xdx:
txa
clc
adc _ctk_mouse_joyx
sta _ctk_mouse_joyx
php
lda #$ff
cpx #0
bmi nolda02
lda #0
nolda02:
plp
adc _ctk_mouse_joyx+1
sta _ctk_mouse_joyx+1
rts