mirror of
https://github.com/cc65/cc65.git
synced 2025-02-04 13:32:54 +00:00
check trigger button (TRIGx); correctly report joystick count depending
on 5200 console version
This commit is contained in:
parent
803e9904db
commit
98195a516e
@ -1,7 +1,7 @@
|
||||
;
|
||||
; Standard joystick driver for the Atari 5200.
|
||||
;
|
||||
; Christian Groessler, 2014-05-12
|
||||
; Christian Groessler, 2014-05-28
|
||||
;
|
||||
|
||||
.include "zeropage.inc"
|
||||
@ -44,12 +44,6 @@
|
||||
.addr READJOY
|
||||
.addr 0 ; IRQ entry not used
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
; Constants
|
||||
|
||||
JOY_COUNT = 4 ; Number of joysticks we support
|
||||
|
||||
|
||||
.code
|
||||
|
||||
; ------------------------------------------------------------------------
|
||||
@ -78,7 +72,12 @@ UNINSTALL:
|
||||
;
|
||||
|
||||
COUNT:
|
||||
lda #JOY_COUNT
|
||||
lda $FD32 ; check ROM version
|
||||
cmp #$E8
|
||||
bne @2port
|
||||
lda #4
|
||||
.byte $2C ; bit opcode, eats the next 2 bytes
|
||||
@2port: lda #2
|
||||
ldx #0
|
||||
rts
|
||||
|
||||
@ -90,14 +89,19 @@ CENTER = 228 / 2
|
||||
SENSIVITY = 16
|
||||
|
||||
READJOY:
|
||||
and #3 ; fix joystick number
|
||||
and #3 ; put joystick number in range, just in case
|
||||
tay
|
||||
asl a
|
||||
tax ; Joystick number * 2 (0-6) into X, index into ZP shadow registers
|
||||
|
||||
lda #0 ; Initialize return value
|
||||
cmp TRIG0,y
|
||||
bne @notrg
|
||||
lda #$10 ; JOY_FIRE
|
||||
|
||||
; Read joystick
|
||||
|
||||
ldy PADDL0,x ; get horizontal position
|
||||
@notrg: ldy PADDL0,x ; get horizontal position
|
||||
cpy #CENTER-SENSIVITY
|
||||
bcs @chkleft
|
||||
|
||||
@ -115,16 +119,12 @@ READJOY:
|
||||
bcs @chkdown
|
||||
|
||||
ora #1 ; JOY_UP
|
||||
bne @buttons
|
||||
bne @done
|
||||
|
||||
@chkdown:
|
||||
cpy #CENTER+SENSIVITY
|
||||
bcc @buttons
|
||||
bcc @done
|
||||
|
||||
ora #2 ; JOY_DOWN
|
||||
|
||||
@buttons:
|
||||
; @@@ TODO: BOTTON STATE
|
||||
|
||||
rts
|
||||
|
||||
@done: rts
|
||||
|
Loading…
x
Reference in New Issue
Block a user