aboutsummaryrefslogtreecommitdiff
path: root/lib/cpcrslib/cpc_PutMaskSp.s
blob: e9683e4d755a00e196875e41759c1207551e57ce (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
;void  						cpc_PutMaskSprite(int *sprite, int *posicion);
;void    					cpc_PutMaskSp(int *sprite, char alto, char ancho, int *posicion);
.globl _cpc_PutMaskSp

_cpc_PutMaskSp::	; dibujar en pantalla el sprite
		; Entradas	bc-> Alto Ancho
		;			de-> origen
		;			hl-> destino
		; Se alteran hl, bc, de, af

	LD IX,#2
	ADD IX,SP
	LD L,4 (IX)
	LD H,5 (IX)
	LD A,3 (IX)
   	LD E,0 (IX)
	LD D,1 (IX)
    ld (#loop_alto_2m_PutMaskSp0+#1),a		;actualizo rutina de captura
	SUB #1
	CPL
	LD (#salto_lineam_PutMaskSp0+#1),A    ;comparten los 2 los mismos valores.
	ld A,2(IX)
	;JP cpc_PutMaskSp0

cpc_PutMaskSp0:
	.DB #0XFD
	LD H,A		;ALTO, SE PUEDE TRABAJAR CON HX DIRECTAMENTE
	LD B,#7
loop_alto_2m_PutMaskSp0:
	LD C,#4
	EX DE,HL
loop_ancho_2m_PutMaskSp0:
	LD A,(DE)	;LEO EL BYTE DEL FONDO
	AND (HL)	;LO ENMASCARO
	INC HL
	OR (HL)		;LO ENMASCARO
	LD (DE),A	;ACTUALIZO EL FONDO
	INC DE
	INC HL
	DEC C
	JP NZ,loop_ancho_2m_PutMaskSp0
	.DB #0XFD
	DEC H
	RET Z
	EX DE,HL
salto_lineam_PutMaskSp0:
	LD C,#0XFF
	ADD HL,BC
	JP nc,loop_alto_2m_PutMaskSp0
	LD BC,#0XC050
	ADD HL,BC
	LD B,#7
	JP loop_alto_2m_PutMaskSp0

.globl _cpc_PutMaskSprite

_cpc_PutMaskSprite::	; dibujar en pantalla el sprite
		; Entradas	bc-> Alto Ancho
		;			de-> origen
		;			hl-> destino
		; Se alteran hl, bc, de, af

	POP AF
	POP HL
	POP DE
	PUSH AF
	LD A,(HL)		;ANCHO
	INC HL
    ld (#loop_alto_2m_PutMaskSp0+#1),a		;ACTUALIZO RUTINA DE CAPTURA
    ;LD (ANCHOT+1),A	;ACTUALIZO RUTINA DE DIBUJO
	SUB #1
	CPL
	LD (#salto_lineam_PutMaskSp0+#1),A    ;COMPARTEN LOS 2 LOS MISMOS VALORES.
	LD A,(HL)	;ALTO
	INC HL
	EX DE,HL
	jp cpc_PutMaskSp0