diff options
author | Juan J. Martinez <jjm@usebox.net> | 2021-05-03 08:21:10 +0100 |
---|---|---|
committer | Juan J. Martinez <jjm@usebox.net> | 2021-05-03 10:00:00 +0100 |
commit | c3b0fa04a663fe233765b83d3be41a42aa08c25d (patch) | |
tree | 0befda349001ef6ce306b39378f9c70ad917363e /lib/cpcrslib/cpc_PutSpTr.s | |
download | return-of-traxtor-cpc-c3b0fa04a663fe233765b83d3be41a42aa08c25d.tar.gz return-of-traxtor-cpc-c3b0fa04a663fe233765b83d3be41a42aa08c25d.zip |
Diffstat (limited to 'lib/cpcrslib/cpc_PutSpTr.s')
-rw-r--r-- | lib/cpcrslib/cpc_PutSpTr.s | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/lib/cpcrslib/cpc_PutSpTr.s b/lib/cpcrslib/cpc_PutSpTr.s new file mode 100644 index 0000000..e1d24fa --- /dev/null +++ b/lib/cpcrslib/cpc_PutSpTr.s @@ -0,0 +1,75 @@ +.globl _cpc_PutSpTr + +_cpc_PutSpTr:: ; 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,4 (IX) + LD L,6 (IX) + LD H,7 (IX) + + + LD (#anchot+1),A ;actualizo rutina de dibujo + SUB #1 + CPL + LD (#suma_siguiente_lineat+1),A ;comparten los 2 los mismos valores. + + LD A,2 (IX) + ;JP cpc_PutSpTr0 + +cpc_PutSpTr0: + .DB #0XFD + LD H,A ;ALTO, SE PUEDE TRABAJAR CON HX DIRECTAMENTE +anchot: +loop_alto_2t: + LD B,#0 +loop_ancho_2t: + LD A,(DE) + AND #0XAA + JP Z,sig_pixn_der_2 + LD C,A ;B es el único registro libre + LD A,(HL) ;pixel actual donde pinto + AND #0X55 + OR C + LD (HL),A ;y lo pone en pantalla +sig_pixn_der_2: + LD A,(DE) ;pixel del sprite + AND #0X55 + JP Z,pon_buffer_der_2 + LD C,A ;B es el único registro libre + LD A,(HL) ;PIXEL ACTUAL DONDE PINTO + AND #0XAA + OR C + LD (HL),A +pon_buffer_der_2: + INC DE + INC HL + DEC B + JP NZ,loop_ancho_2t + .DB #0XFD + DEC H + RET Z +suma_siguiente_lineat: +salto_lineat: + LD BC,#0X07FF ;&07f6 ;salto linea menos ancho + ADD HL,BC + JP NC,loop_alto_2t ;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_2t + + LD A,H + ADD #0X08 + LD H,A + SUB #0XC0 + JP NC,loop_alto_2t ;sig_linea_2 + LD BC,#0XC050 + ADD HL,BC + JP loop_alto_2t + |