diff options
author | Juan J. Martinez <jjm@usebox.net> | 2023-11-05 11:22:55 +0000 |
---|---|---|
committer | Juan J. Martinez <jjm@usebox.net> | 2023-11-05 11:31:28 +0000 |
commit | 2fbdf974338bde8576efdae40a819a76b2391033 (patch) | |
tree | 64d41a37470143f142344f9a439d96de3e7918c2 /lib/cpcrslib/cpc_PutSpXOR.s | |
download | kitsunes-curse-2fbdf974338bde8576efdae40a819a76b2391033.tar.gz kitsunes-curse-2fbdf974338bde8576efdae40a819a76b2391033.zip |
Initial import of the open source release
Diffstat (limited to 'lib/cpcrslib/cpc_PutSpXOR.s')
-rw-r--r-- | lib/cpcrslib/cpc_PutSpXOR.s | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/lib/cpcrslib/cpc_PutSpXOR.s b/lib/cpcrslib/cpc_PutSpXOR.s new file mode 100644 index 0000000..f4e58f0 --- /dev/null +++ b/lib/cpcrslib/cpc_PutSpXOR.s @@ -0,0 +1,79 @@ +.globl _cpc_PutSpXOR + +_cpc_PutSpXOR:: ; 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 (#anchox0+#1),A ;actualizo rutina de captura + SUB #1 + CPL + LD (#suma_siguiente_lineax0+#1),A ;comparten los 2 los mismos valores. + + LD A,2 (IX) + JP cpc_PutSpXOR0 + + +.globl _cpc_PutSpriteXOR + +_cpc_PutSpriteXOR:: ; 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 (#anchox0+#1),A ;ACTUALIZO RUTINA DE CAPTURA + ;LD (ANCHOT+1),A ;ACTUALIZO RUTINA DE DIBUJO + SUB #1 + CPL + LD (#suma_siguiente_lineax0+1),A ;COMPARTEN LOS 2 LOS MISMOS VALORES. + LD A,(HL) ;ALTO + INC HL + EX DE,HL + ;LD A,(IX+4) + JP cpc_PutSpXOR0 + + +cpc_PutSpXOR0: + .DB #0XFD + LD H,A ;ALTO, SE PUEDE TRABAJAR CON HX DIRECTAMENTE + LD B,#7 +anchox0: +loop_alto_2x: + LD C,#4 +loop_ancho_2x: + LD A,(DE) + XOR (HL) + LD (HL),A + INC DE + INC HL + DEC C + JP NZ,loop_ancho_2x + .DB #0XFD + DEC H + RET Z + +suma_siguiente_lineax0: +salto_lineax: + LD C,#0XFF ;&07F6 ;SALTO LINEA MENOS ANCHO + ADD HL,BC + JP NC,loop_alto_2x ;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_2x + |