From: uz Date: Tue, 6 Jan 2009 17:49:29 +0000 (+0000) Subject: Code optimizations (by Stefan Haubenthal and me). X-Git-Tag: V2.13.0rc1~349 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=8c8e0b131f81d4d1523379f0e5728201a6e9d69e;p=cc65 Code optimizations (by Stefan Haubenthal and me). git-svn-id: svn://svn.cc65.org/cc65/trunk@3906 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/libsrc/nes/nes-stdjoy.s b/libsrc/nes/nes-stdjoy.s index 21ca7cfb6..d850afde3 100644 --- a/libsrc/nes/nes-stdjoy.s +++ b/libsrc/nes/nes-stdjoy.s @@ -6,46 +6,46 @@ ; Stefan Haubenthal, 2004-10-05 ; - .include "zeropage.inc" + .include "zeropage.inc" - .include "joy-kernel.inc" - .include "joy-error.inc" - .include "nes.inc" + .include "joy-kernel.inc" + .include "joy-error.inc" + .include "nes.inc" ; ------------------------------------------------------------------------ ; Header. Includes jump table -.segment "JUMPTABLE" +.segment "JUMPTABLE" ; Driver signature - .byte $6A, $6F, $79 ; "joy" - .byte JOY_API_VERSION ; Driver API version number + .byte $6A, $6F, $79 ; "joy" + .byte JOY_API_VERSION ; Driver API version number ; Button state masks (8 values) - .byte $08 ; JOY_UP - .byte $04 ; JOY_DOWN - .byte $02 ; JOY_LEFT - .byte $01 ; JOY_RIGHT - .byte $80 ; JOY_FIRE (A) - .byte $40 ; JOY_FIRE2 (B) - .byte $20 ; JOY_FIRE3 (Select) - .byte $10 ; JOY_FIRE4 (Start) + .byte $10 ; JOY_UP + .byte $20 ; JOY_DOWN + .byte $40 ; JOY_LEFT + .byte $80 ; JOY_RIGHT + .byte $01 ; JOY_FIRE (A) + .byte $02 ; JOY_FIRE2 (B) + .byte $04 ; (Select) + .byte $08 ; (Start) ; Jump table. - .addr INSTALL - .addr UNINSTALL - .addr COUNT - .addr READJOY - .addr 0 ; IRQ entry unused + .addr INSTALL + .addr UNINSTALL + .addr COUNT + .addr READJOY + .addr 0 ; IRQ entry unused ; ------------------------------------------------------------------------ ; Constants -JOY_COUNT = 2 ; Number of joysticks we support +JOY_COUNT = 2 ; Number of joysticks we support .code @@ -58,9 +58,9 @@ JOY_COUNT = 2 ; Number of joysticks we support ; INSTALL: - lda #JOY_ERR_OK - ldx #0 -; rts ; Run into UNINSTALL instead + lda #JOY_ERR_OK + ldx #0 +; rts ; Run into UNINSTALL instead ; ------------------------------------------------------------------------ ; UNINSTALL routine. Is called before the driver is removed from memory. @@ -68,7 +68,7 @@ INSTALL: ; UNINSTALL: - rts + rts ; ------------------------------------------------------------------------ @@ -76,37 +76,32 @@ UNINSTALL: ; COUNT: - lda #JOY_COUNT - ldx #0 - rts + lda #JOY_COUNT + ldx #0 + rts ; ------------------------------------------------------------------------ ; READ: Read a particular joystick passed in A. ; READJOY: - and #$01 ; Fix joystick number - tay ; Joystick number (0,1) into Y + and #$01 ; Fix joystick number + tay ; Joystick number (0,1) into Y + + lda #1 + sta APU_PAD1,y + lda #0 + sta APU_PAD1,y ; Read joystick - lda #1 - sta APU_PAD1,y - lda #0 - sta APU_PAD1,y - sta tmp1 - - ldx #8 -@L1: asl tmp1 - lda APU_PAD1,y - and #$01 - beq @L2 - lda tmp1 - ora #$01 - sta tmp1 -@L2: dex - bne @L1 - - lda tmp1 -; ldx #$00 ; fix X - rts + ldx #8 +@Loop: lda APU_PAD1,y + ror a + ror tmp1 + dex + bne @Loop + + lda tmp1 +; ldx #$00 ; X implicitly fixed + rts