aboutsummaryrefslogtreecommitdiff
path: root/lib/cpcrslib/cpc_PutSp.s
blob: 0ddbf1075b500fa939b45446afbd275eeae60a25 (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
.globl _cpc_PutSp

_cpc_PutSp::	; 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)
	LD A,3 (IX)
   	LD L,4 (IX)
	LD H,5 (IX)

    LD (#ancho0+1),A		;actualizo rutina de captura
    ;ld (anchot+1),a	;actualizo rutina de dibujo
	SUB #1
	CPL
	LD (#suma_siguiente_linea0+1),A    ;COMPARTEN LOS 2 LOS MISMOS VALORES.

	LD A,2 (IX)
	;JP cpc_putsp0

pc_PutSp0:
	.DB #0XFD
	LD H,A		;ALTO, SE PUEDE TRABAJAR CON HX DIRECTAMENTE
	LD B,#7
ancho0:
loop_alto_2_pc_PutSp0:
	LD C,#4
loop_ancho_2_pc_PutSp0:
	LD A,(DE)
	LD (HL),A
	INC DE
	INC HL
	DEC C
	JP NZ,loop_ancho_2_pc_PutSp0
	.DB #0XFD
	DEC H
	RET Z

suma_siguiente_linea0:
salto_linea_pc_PutSp0:
	LD C,#0XFF			;&07F6 			;SALTO LINEA MENOS ANCHO
	ADD HL,BC
	JP nc,loop_alto_2_pc_PutSp0 ;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_PutSp0