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