NES读取手柄的6502汇编代码

陪她去流浪 桃子 2015年04月17日 编辑 阅读次数:2790
; 读取手柄1
; JOY_NOW:当前值, JOY_LAST:前一次的值
; 一些常数, 某些可以按位或组合
; Right:$01, Left:$02, Down:$04, Up:$08
; Start:$10, Select:$20, B:$40, A:$80
JOY_NOW = $00
JOY_LAST = $01
read_joy:
    lda    JOY_NOW     ; 保存上一次的值
    pha
    lda    #$01        ; 硬件初始化
    sta    $4016
    lsr
    sta    $4016
    ldx    #$08        ; 循环读取8次
    sta    JOY_NOW     ; 初始化
    sta    JOY_LAST
joy_loop:
    lda    $4016       ; 循环读取
    and    #$01        ; 仅取的效位
    sta    JOY_LAST    ; 借用上一次的地址
    lda    JOY_NOW
    asl
    ora    JOY_LAST
    sta    JOY_NOW
    dex
    bne    joy_loop
    pla                ; 保存上一次的按键值
    sta    JOY_LAST
    rts

标签:代码片段 · 汇编 · 6502 · nes