aboutsummaryrefslogtreecommitdiff
path: root/lib/cpcrslib/cpc_PutSp2x14.s
blob: 241d66b3143466556bf956bd37ef74aee6e649b5 (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
.globl _cpc_PutSp4x14

_cpc_PutSp4x14::	; 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 e,0 (IX)
	LD d,1 (IX) ;sprite
   	LD l,2 (IX)
	LD h,3 (IX) ;address
	ld A,#14

pc_PutSp0X:
	.DB #0XFD
	LD H,A		;ALTO, SE PUEDE TRABAJAR CON HX DIRECTAMENTE
	LD B,#7
ancho0X:
loop_alto_2_pc_PutSp0X:
	LD C,#4
loop_ancho_2_pc_PutSp0X:
	EX DE,HL
	LDI
	LDI
	LDI
	LDI
	EX DE,HL
	;LD A,(DE)
	;LD (HL),A
	;INC DE
	;INC HL
	;DEC C
	;JP NZ,loop_ancho_2_pc_PutSp0X
	.DB #0XFD
	DEC H
	RET Z

suma_siguiente_linea0X:
salto_linea_pc_PutSp0X:
	LD C,#0XFC			;&07F6 			;SALTO LINEA MENOS ANCHO
	ADD HL,BC
	JP nc,loop_alto_2_pc_PutSp0X ;sig_linea_2zz		;si no desborda va a la siguiente linea
	LD BC,#0XC050
	ADD HL,BC
	LD B,#7			;SÓLO SE DARÍA UNA DE CADA 8 VECES EN UN SPRITE
	JP loop_alto_2_pc_PutSp0X