mirror of
https://github.com/antoinevignau/source.git
synced 2024-12-29 11:30:55 +00:00
de8cad5750
How to detect & use the 4play peripheral card
72 lines
2.8 KiB
ArmAsm
72 lines
2.8 KiB
ArmAsm
*
|
|
* Alex Lukazi's 4play routines
|
|
* http://lukazi.blogspot.com/
|
|
*
|
|
* (c) 2016, Brutal Deluxe Software
|
|
* http://www.brutaldeluxe.fr/
|
|
*
|
|
* Use them at your own risk ;-)
|
|
*
|
|
|
|
mx %11
|
|
org $300
|
|
lst off
|
|
|
|
*---------- Entry point
|
|
|
|
KBD = $C000
|
|
KBDSTROBE = $C010
|
|
PRBYTE = $FDDA
|
|
COUT = $FDED
|
|
|
|
*---------- Driver equates
|
|
|
|
FPInitAll = $1000 ; Clear tables and variables
|
|
FPFindAll = FPInitAll+3 ; Find all 4play cards
|
|
FPFindIt = FPFindAll+3 ; Return 1st 4play card found (if any)
|
|
FPLoopIt = FPFindIt+3 ; ...and you can continue looping
|
|
FPReadDigital = FPLoopIt+3 ; Read the joystick the new way
|
|
FPSetAnalogClampValues = FPReadDigital+3 ; Set the values for the old way
|
|
FPReadAnalog = FPSetAnalogClampValues+3 ; Read the joystick the old way
|
|
FPReadTrigger = FPReadAnalog+3 ; Read buttons
|
|
FPReadTrigger1 = FPReadTrigger+3 ; Read buttons
|
|
FPReadTrigger2 = FPReadTrigger1+3 ; Read buttons
|
|
FPReadTrigger3 = FPReadTrigger2+3 ; Read buttons
|
|
FPSetSlot = FPReadTrigger3+3 ; Force 4play slot for...
|
|
FPDirectRead = FPSetSlot+3 ; ...a direct read of a joystick
|
|
|
|
*---------- The code
|
|
|
|
jsr FPInitAll ; Clear all
|
|
jsr FPFindAll ; Find all 4play cards
|
|
|
|
lda $F9 ; Get slot high
|
|
jsr PRBYTE
|
|
lda $F8 ; Get slot low
|
|
jsr PRBYTE
|
|
|
|
ldx #$04 ; Force slot 4
|
|
jsr FPSetSlot
|
|
|
|
*---
|
|
|
|
]lp lda #$8D
|
|
jsr COUT
|
|
ldx #$01 ; Read first joystick
|
|
jsr FPDirectRead
|
|
jsr PRBYTE ; display its value
|
|
|
|
lda #$A0
|
|
jsr COUT
|
|
|
|
ldx #$02 ; Read second joystick
|
|
jsr FPDirectRead
|
|
jsr PRBYTE ; display its value
|
|
|
|
lda KBD ; loop until a
|
|
bpl ]lp ; key is pressed
|
|
|
|
bit KBDSTROBE ; exit
|
|
rts
|
|
|