From: Oliver Schmidt 
Date: Mon, 12 Oct 2015 18:18:13 +0000 (+0200)
Subject: Allow to override mouse sprite location data.
X-Git-Tag: V2.16~217
X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=08efc299ffacac0e13296a33e50ef64be99358e3;p=cc65
Allow to override mouse sprite location data.
---
diff --git a/libsrc/c64/mcbdefault.s b/libsrc/c64/mcbdefault.s
index c4feddfea..cd36d8515 100644
--- a/libsrc/c64/mcbdefault.s
+++ b/libsrc/c64/mcbdefault.s
@@ -11,6 +11,8 @@
         .export         _mouse_def_callbacks
         .import         _mouse_def_pointershape
         .import         _mouse_def_pointercolor
+        .import         mcb_spritememory
+        .import         mcb_spritepointer
 
         .include        "mouse-kernel.inc"
         .include        "c64.inc"
@@ -20,7 +22,6 @@
 ; Sprite definitions. The first value can be changed to adjust the number
 ; of the sprite used for the mouse. All others depend on this value.
 MOUSE_SPR       = 0                             ; Sprite used for the mouse
-MOUSE_SPR_MEM   = $0340                         ; Memory location
 MOUSE_SPR_MASK  = $01 .shl MOUSE_SPR            ; Positive mask
 MOUSE_SPR_NMASK = .lobyte(.not MOUSE_SPR_MASK)  ; Negative mask
 VIC_SPR_X       = (VIC_SPR0_X + 2*MOUSE_SPR)    ; Sprite X register
@@ -33,18 +34,30 @@ VIC_SPR_Y       = (VIC_SPR0_Y + 2*MOUSE_SPR)    ; Sprite Y register
 
 initmcb:
 
+; Make all RAM accessible
+
+        lda     #$30
+        ldy     $01
+        sei
+        sta     $01
+
 ; Copy the mouse sprite data
 
         ldx     #64 - 1
 @L0:    lda     _mouse_def_pointershape,x
-        sta     MOUSE_SPR_MEM,x
+        sta     mcb_spritememory,x
         dex
         bpl     @L0
 
 ; Set the mouse sprite pointer
 
-        lda     #<(MOUSE_SPR_MEM / 64)
-        sta     $07F8 + MOUSE_SPR
+        lda     #<(mcb_spritememory / 64)
+        sta     mcb_spritepointer + MOUSE_SPR
+
+; Restore memory configuration
+
+        sty     $01
+        cli
 
 ; Set the mouse sprite color
 
diff --git a/libsrc/c64/mcbspritedata.s b/libsrc/c64/mcbspritedata.s
new file mode 100644
index 000000000..2c7aa1491
--- /dev/null
+++ b/libsrc/c64/mcbspritedata.s
@@ -0,0 +1,4 @@
+; VIC sprite data for the mouse pointer
+
+        .export         mcb_spritememory  := $0340
+        .export         mcb_spritepointer := $07F8