cursos:ensamblador:gfx1_vram

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
cursos:ensamblador:gfx1_vram [19-01-2024 08:17] sromerocursos:ensamblador:gfx1_vram [21-01-2024 18:43] (actual) – [Efectos sobre la imagen y los atributos] sromero
Línea 133: Línea 133:
     ORG 50000     ORG 50000
  
-    ld hl, 18514       ; Scanline 0 en Y=96 +    ld hl, 18514           ; Scanline 0 en Y=96 
-    ld a, 60           ; 00111100b +    ld a, 60               ; 00111100b 
-    ld (hl), a         ; Escribir+    ld (hl), a             ; Escribir
  
-    ld hl, 18770       ; Scanline 1 en Y=97 +    ld hl, 18770           ; Scanline 1 en Y=97 
-    ld a, 66           ; 01000010b +    ld a, 66               ; 01000010b 
-    ld (hl), a         ; Escribir+    ld (hl), a             ; Escribir
  
-    ld hl, 19026       ; Scanline 2 en Y=98 +    ld hl, 19026           ; Scanline 2 en Y=98 
-    ld a, 66           ; 01000010b +    ld a, 66               ; 01000010b 
-    ld (hl), a         ; Escribir+    ld (hl), a             ; Escribir
  
-    ld hl, 19282       ; Scanline 3 en Y=99 +    ld hl, 19282           ; Scanline 3 en Y=99 
-    ld a, 126          ; 01111110b +    ld a, 126              ; 01111110b 
-    ld (hl), a         ; Escribir+    ld (hl), a             ; Escribir
  
-    ld hl, 19538       ; Scanline 4 en Y=100 +    ld hl, 19538           ; Scanline 4 en Y=100 
-    ld a, 66           ; 01000001b +    ld a, 66               ; 01000001b 
-    ld (hl), a         ; Escribir+    ld (hl), a             ; Escribir
  
-    ld hl, 19794       ; Scanline 5 en Y=101 +    ld hl, 19794           ; Scanline 5 en Y=101 
-    ld a, 66           ; 01000001b +    ld a, 66               ; 01000001b 
-    ld (hl), a         ; Escribir+    ld (hl), a             ; Escribir
  
-    ld hl, 20050       ; Scanline 6 en Y=102 +    ld hl, 20050           ; Scanline 6 en Y=102 
-    ld a, 66           01000001b +    ld a, %01000001        También se puede usar binario 
-    ld (hl), a         ; Escribir+    ld (hl), a             ; Escribir
  
-    ld hl, 20306       ; Scanline 7 en Y=103 +    ld hl, 20306           ; Scanline 7 en Y=103 
-    ld a, 0            ; 00000000b +    ld a, 0                ; 00000000b 
-    ld (hl), a         ; Escribir+    ld (hl), a             ; Escribir
  
     ret     ret
Línea 914: Línea 914:
 ;------------------------------------------------------------ ;------------------------------------------------------------
 SetBorder: SetBorder:
-    out (254), a+    out ($fe), a
     ret     ret
  
Línea 934: Línea 934:
 ;------------------------------------------------------------ ;------------------------------------------------------------
 SetBorder: SetBorder:
-    out (254), a           ; Cambiamos el color del borde+    out ($fe), a           ; Cambiamos el color del borde
     rlca     rlca
     rlca     rlca
Línea 941: Línea 941:
     jr nz, SetBorder_fin   ; No es bright -> guardarlo     jr nz, SetBorder_fin   ; No es bright -> guardarlo
                            ; Si es bright                            ; Si es bright
-    xor 7                  ; -> cambiar la tinta a 0+    xor %00000111          ; -> cambiar la tinta a 0
  
 SetBorder_fin: SetBorder_fin:
Línea 1194: Línea 1194:
 fadescreen_loop2: fadescreen_loop2:
     ld a, (hl)                   ; Cogemos el atributo     ld a, (hl)                   ; Cogemos el atributo
-    and 127                      ; Eliminamos el bit de flash+    and %01111111                ; Eliminamos el bit de flash
     ld c, a     ld c, a
  
-    and 7                        ; Extraemos la tinta (and 00000111b)+    and %00000111                ; Extraemos la tinta (and 00000111b)
     jr z, fadescreen_ink_zero    ; Si la tinta ya es cero, no hacemos nada     jr z, fadescreen_ink_zero    ; Si la tinta ya es cero, no hacemos nada
  
Línea 1210: Línea 1210:
     sra a                        ; con 3 instrucciones de desplazamiento >>     sra a                        ; con 3 instrucciones de desplazamiento >>
  
-    and 7                        ; Eliminamos el resto de bits+    and %00000111                ; Eliminamos el resto de bits
     jr z, fadescreen_paper_zero  ; Si ya es cero, no lo decrementamos     jr z, fadescreen_paper_zero  ; Si ya es cero, no lo decrementamos
  
Línea 1246: Línea 1246:
  
  Rutinas más complejas pueden producir cortinillas y efectos mucho más vistosos. En la revista Microhobby se publicaron muchos de estos efectos de zoom, desaparición de pantalla o inversión, dentro de la sección //Trucos//.  Rutinas más complejas pueden producir cortinillas y efectos mucho más vistosos. En la revista Microhobby se publicaron muchos de estos efectos de zoom, desaparición de pantalla o inversión, dentro de la sección //Trucos//.
 +
 +Del mismo modo, el libro **//40 Best Machine code Routines for the ZX Spectrum//** ("Las 40 mejores rutinas en código máquina para el ZX Spectrum") de //John Hardman y Andrew Hewson// nos proporciona una serie de rutinas en ensamblador para realizar diferentes acciones con los píxeles y los atributos de la videoram, como por ejemplo:
 +
 +\\ 
 +   * Scrollear atributos a izquierda, derecha, arriba o abajo.
 +   * Scroll de pantalla de un carácter (8 pixels) a izquierda, derecha, arriba o abajo.
 +   * Scroll de pantalla de un pixel a izquierda, derecha, arriba o abajo.
 +   * Mezclar dos imágenes con ''OR'' o ''XOR''.
 +   * Inversión de la pantalla (píxeles a 0 se ponen a 1, y píxeles a 1 se ponen a 0).
 +   * Invertir carácter vertical y horizontalmente.
 +   * Rotar carácter 90º en sentido horario.
 +   * Alterar todos los atributos de la pantalla (los bits deseados).
 +   * Cambiar todos los atributos de la pantalla de un determinado valor por otro valor.
 +   * Rellenado de regiones cerradas (poniendo a 1 los píxeles dentro de esas regiones).
 +   * Impresión de figuras.
 +   * Copia de una zona de la pantalla en otra, ampliándola por una cantidad entera (por ejemplo, x2 o x3).
 +
  
 \\  \\ 
  • cursos/ensamblador/gfx1_vram.1705652222.txt.gz
  • Última modificación: 19-01-2024 08:17
  • por sromero