]> git.sur5r.net Git - cc65/commitdiff
Code optimizations (by Stefan Haubenthal and me).
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 6 Jan 2009 17:49:29 +0000 (17:49 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 6 Jan 2009 17:49:29 +0000 (17:49 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3906 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/nes/nes-stdjoy.s

index 21ca7cfb629ba4a4a3e94f9e0d518d1193b8b32e..d850afde3652b2b335c3233ca2f585542484cc77 100644 (file)
@@ -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