aboutsummaryrefslogtreecommitdiff
path: root/lib/cpcrslib/cpc_PutSprite.s
blob: a6d6decd19e069a77fdbdafdca4b6c93797f50aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
.globl _cpc_PutSprite

_cpc_PutSprite::
;*************************************
; SPRITE ROUTINE WITHOUT TRANSPARENCY
; Supplied by Tim Riemann
; from a German forum
; DE = source address of the sprite
;      (includes header with 1B width [64byte maximum!], 1B height)
; HL = destination address
;*************************************

	POP AF
	POP HL	;DESTINATION ADDRESS
	POP DE	;SPRITE DATA
	PUSH AF
    ;EX DE,HL
    LD A,#64
    SUB (HL)
    ADD A
    LD (width1+1),A
    XOR A
    SUB (HL)
    LD (width2+1),A
    INC HL
    LD A,(HL)
    INC HL
width0:
		;ex de,hl
width1:
	JR width1 				;cada LDI es un byte
    LDI						;se hace el salto al byte correspondiente (64-ancho)
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
	LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
    LDI
width2:
   LD BC,#0X700
   EX DE,HL
   ADD HL,BC
   JP NC,width3
   LD BC,#0XC050
   ADD HL,BC
width3:
   EX DE,HL
   DEC A
   JP NZ, width1
   RET