1
2; DRAW XOR SPRITE 1 BYTE DEFINITION ROTATED
3; 04.2006 aralbrec, Sprite Pack v3.0
4; sinclair spectrum version
5
6PUBLIC SP1_DRAW_XOR1
7EXTERN SP1_DRAW_XOR1NR
8EXTERN SP1RETSPRDRAW, SP1V_ROTTBL, SP1V_PIXELBUFFER
9
10; following data segment copied into struct sp1_cs
11
12   ld hl,0
13   ld ix,0
14   call SP1_DRAW_XOR1
15
16; following draw code called by way of SP1UpdateNow
17;
18;  a = hor rot table
19; bc = graphic disp
20; hl = graphic def ptr
21; ix = left graphic def ptr
22;
23; 51 + 166*4 - 6 + 10 = 719 cycles
24
25.SP1_DRAW_XOR1
26
27   cp SP1V_ROTTBL/256
28   jp z, SP1_DRAW_XOR1NR
29
30   add hl,bc
31   add ix,bc
32   ex de,hl
33   ld h,a
34
35   ;  h = shift table
36   ; de = sprite def (graph only)
37   ; ix = left sprite def
38
39.SP1XOr1Rotate
40
41   ; 0
42
43   ld bc,(SP1V_PIXELBUFFER+0)
44   ld a,(de)
45   inc de
46   ld l,a
47   ld a,(hl)
48   inc h
49   ld l,(ix+0)
50   or (hl)
51   xor c
52   ld (SP1V_PIXELBUFFER+0),a
53   ld l,(ix+1)
54   ld c,(hl)
55   dec h
56   ld a,(de)
57   inc de
58   ld l,a
59   ld a,c
60   or (hl)
61   xor b
62   ld (SP1V_PIXELBUFFER+1),a
63
64   ; 1
65
66   ld bc,(SP1V_PIXELBUFFER+2)
67   ld a,(de)
68   inc de
69   ld l,a
70   ld a,(hl)
71   inc h
72   ld l,(ix+2)
73   or (hl)
74   xor c
75   ld (SP1V_PIXELBUFFER+2),a
76   ld l,(ix+3)
77   ld c,(hl)
78   dec h
79   ld a,(de)
80   inc de
81   ld l,a
82   ld a,c
83   or (hl)
84   xor b
85   ld (SP1V_PIXELBUFFER+3),a
86
87   ; 2
88
89   ld bc,(SP1V_PIXELBUFFER+4)
90   ld a,(de)
91   inc de
92   ld l,a
93   ld a,(hl)
94   inc h
95   ld l,(ix+4)
96   or (hl)
97   xor c
98   ld (SP1V_PIXELBUFFER+4),a
99   ld l,(ix+5)
100   ld c,(hl)
101   dec h
102   ld a,(de)
103   inc de
104   ld l,a
105   ld a,c
106   or (hl)
107   xor b
108   ld (SP1V_PIXELBUFFER+5),a
109
110   ; 3
111
112   ld bc,(SP1V_PIXELBUFFER+6)
113   ld a,(de)
114   inc de
115   ld l,a
116   ld a,(hl)
117   inc h
118   ld l,(ix+6)
119   or (hl)
120   xor c
121   ld (SP1V_PIXELBUFFER+6),a
122   ld l,(ix+7)
123   ld c,(hl)
124   dec h
125   ld a,(de)
126   ld l,a
127   ld a,c
128   or (hl)
129   xor b
130   ld (SP1V_PIXELBUFFER+7),a
131
132   jp SP1RETSPRDRAW
133