;SNES Mouse read routine ;(C) 1999, 2000 Realtime Simulations and Roleplaying games ;By Grog ;ReadSNESMouse -- Use Ports $4016 and $4017 to read the SNES mouse (port 2) ;In: none ;Out: X=delta X ; Y=delta Y ReadSNESMouse: LDA #$01 STA $4016 ;Reset old-style port read LDA #$00 JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A BPL + AND #$7F ;Remove 1s complement sign EOR #$FF ;Invert INC A ;Add one (2s complement) + TAY LDA #$00 JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A JSR ReadPort4017Bit ROL A BPL + AND #$7F ;Remove 1s complement sign EOR #$FF ;Invert INC A ;Add one (2s complement) + TAX RTS ReadPort4017Bit: PHA LDA $4017 CLC ADC #'0' JSL Print LSR PLA RTS