📄 game.asm
字号:
.ifnz GAMEPAD_SUPPORT ;;ljd change for 28.29.31.70 (gpio) 03/09/17
fReadGamePad:
.ifnz SPHE8202
;;clock,latch=0
.ifnz GAMEPAD_FOR_128PIN
smb GPAD_CLK,GPAD_PORT_CFG_CLK
.else
smb GPAD_CLK,bGamePortBuff
lda bGamePortBuff
sta GPAD_PORT_CFG_CLK
.endif
.ifnz GAMEPAD_FOR_128PIN
smb GPAD_LATCH,GPAD_PORT_CFG_LATCH
.else
smb GPAD_LATCH,bGamePortBuff
lda bGamePortBuff
sta GPAD_PORT_CFG_LATCH
.endif
rmb GPAD_CLK,GPAD_PORT_CLK
rmb GPAD_LATCH,GPAD_PORT_LATCH
jsr fDelay
;;latch=1
.ifnz GAMEPAD_FOR_128PIN
rmb GPAD_LATCH,GPAD_PORT_CFG_LATCH
.else
rmb GPAD_LATCH,bGamePortBuff
lda bGamePortBuff
sta GPAD_PORT_CFG_LATCH
.endif
jsr fDelay
jsr fDelay
;latch=0
.ifnz GAMEPAD_FOR_128PIN
smb GPAD_LATCH,GPAD_PORT_CFG_LATCH
.else
smb GPAD_LATCH,bGamePortBuff
lda bGamePortBuff
sta GPAD_PORT_CFG_LATCH
.endif
rmb GPAD_LATCH,GPAD_PORT_LATCH
jsr fDelay
jsr fDelay
jsr fDelay
jsr fDelay
jsr fDelay
jsr fDelay
;;read data
stz IOP_DATA4_L ;;clear data
stz IOP_DATA4_H
ldx #8
lGetNextButton:
.ifnz GAMEPAD_FOR_128PIN
bbr GPAD_D0,GPAD_PORT_D0,lPad0Is0
.else
bbr GPAD_D0,GPAD_PORT_D0_D1,lPad0Is0
.endif
sec
bra lMakePad0Dat
lPad0Is0:
clc
lMakePad0Dat:
rol IOP_DATA4_L
.ifnz GAMEPAD_FOR_128PIN
bbr GPAD_D1,GPAD_PORT_D1,lPad1Is0
.else
bbr GPAD_D1,GPAD_PORT_D0_D1,lPad1Is0
.endif
sec
bra lMakePad1Dat
lPad1Is0:
clc
lMakePad1Dat:
rol IOP_DATA4_H
;;make clock =1
.ifnz GAMEPAD_FOR_128PIN
rmb GPAD_CLK,GPAD_PORT_CFG_CLK
.else
rmb GPAD_CLK,bGamePortBuff
lda bGamePortBuff
sta GPAD_PORT_CFG_CLK
.endif
jsr fDelay
;;make clock =0
.ifnz GAMEPAD_FOR_128PIN
smb GPAD_CLK,GPAD_PORT_CFG_CLK
.else
smb GPAD_CLK,bGamePortBuff
lda bGamePortBuff
sta GPAD_PORT_CFG_CLK
.endif
rmb GPAD_CLK,GPAD_PORT_CLK
jsr fDelay
dex
bne lGetNextButton
;;make clock =1
.ifnz GAMEPAD_FOR_128PIN
rmb GPAD_CLK,GPAD_PORT_CFG_CLK
.else
rmb GPAD_CLK,bGamePortBuff
lda bGamePortBuff
sta GPAD_PORT_CFG_CLK
.endif
rts
.else
;;clock,latch=0
lda GPAD_PORT_CFG_CLK
ora #GPAD_CFG_CLK
sta GPAD_PORT_CFG_CLK
lda GPAD_PORT_CFG_LATCH
ora #GPAD_CFG_LATCH
sta GPAD_PORT_CFG_LATCH
rmb GPAD_CLK,GPAD_PORT_CLK
rmb GPAD_LATCH,GPAD_PORT_LATCH
jsr fDelay
lda GPAD_PORT_CFG_LATCH
and #%11110111
sta GPAD_PORT_CFG_LATCH
jsr fDelay
lda GPAD_PORT_CFG_LATCH
ora #GPAD_CFG_LATCH
sta GPAD_PORT_CFG_LATCH
rmb GPAD_LATCH,GPAD_PORT_LATCH
stz IOP_DATA4_L ;;clear data
stz IOP_DATA4_H
ldx #8
lGetNextButton:
bbr GPAD_D0,GPAD_PORT_D0_D1,lPad0Is0
sec
bra lMakePad0Dat
lPad0Is0:
clc
lMakePad0Dat:
rol IOP_DATA4_L
bbr GPAD_D1,GPAD_PORT_D0_D1,lPad1Is0
sec
bra lMakePad1Dat
lPad1Is0:
clc
lMakePad1Dat:
rol IOP_DATA4_H
;;make clock =1
lda GPAD_PORT_CFG_CLK
and #%11101111
sta GPAD_PORT_CFG_CLK
jsr fDelay
;;make clock =0
lda GPAD_PORT_CFG_CLK
ora #GPAD_CFG_CLK
sta GPAD_PORT_CFG_CLK
rmb GPAD_CLK,GPAD_PORT_CLK
jsr fDelay
dex
bne lGetNextButton
lda GPAD_PORT_CFG_CLK
and #%11101111
sta GPAD_PORT_CFG_CLK
rts
.endif
.endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -