Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
cursos:ensamblador:gfx1_vram [19-01-2024 08:15] – sromero | cursos: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 | + | ld hl, 18514 |
- | ld a, 60 | + | ld a, 60 |
- | ld (hl), a | + | ld (hl), a |
- | ld hl, 18770 | + | ld hl, 18770 |
- | ld a, 66 | + | ld a, 66 |
- | ld (hl), a | + | ld (hl), a |
- | ld hl, 19026 | + | ld hl, 19026 |
- | ld a, 66 | + | ld a, 66 |
- | ld (hl), a | + | ld (hl), a |
- | ld hl, 19282 | + | ld hl, 19282 |
- | ld a, 126 ; 01111110b | + | ld a, 126 ; 01111110b |
- | ld (hl), a | + | ld (hl), a |
- | ld hl, 19538 | + | ld hl, 19538 |
- | ld a, 66 | + | ld a, 66 |
- | ld (hl), a | + | ld (hl), a |
- | ld hl, 19794 | + | ld hl, 19794 |
- | ld a, 66 | + | ld a, 66 |
- | ld (hl), a | + | ld (hl), a |
- | ld hl, 20050 | + | ld hl, 20050 |
- | ld a, 66 ; 01000001b | + | ld a, %01000001 |
- | ld (hl), a | + | ld (hl), a |
- | ld hl, 20306 | + | ld hl, 20306 |
- | ld a, 0 ; 00000000b | + | ld a, 0 ; 00000000b |
- | ld (hl), a | + | ld (hl), a |
ret | ret | ||
Línea 225: | Línea 225: | ||
<code basic> | <code basic> | ||
10 BORDER 1: PAPER 1: INK 7: CLS | 10 BORDER 1: PAPER 1: INK 7: CLS | ||
- | 20 For r = 10 TO 70 STEP 10 : CIRCLE 128, 96, R : NEXT R | + | 20 FOR r = 10 TO 70 STEP 10 : CIRCLE 128, 96, R : NEXT R |
30 PAUSE 0 | 30 PAUSE 0 | ||
40 INK 2 : PLOT 30, 30 : DRAW 220, 120 | 40 INK 2 : PLOT 30, 30 : DRAW 220, 120 | ||
Línea 334: | Línea 334: | ||
<code basic> | <code basic> | ||
10 CLS | 10 CLS | ||
- | 20 For i=0 TO 31 : POKE 16384+I, 170 : NEXT I | + | 20 FOR i=0 TO 31 : POKE 16384+I, 170 : NEXT I |
30 PAUSE 0 | 30 PAUSE 0 | ||
</ | </ | ||
Línea 356: | Línea 356: | ||
<code basic> | <code basic> | ||
10 CLS | 10 CLS | ||
- | 20 For i=0 TO 63 : POKE 16384+I, 170 : NEXT I | + | 20 FOR i=0 TO 63 : POKE 16384+I, 170 : NEXT I |
30 PAUSE 0 | 30 PAUSE 0 | ||
</ | </ | ||
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 | jr nz, SetBorder_fin | ||
; Si es bright | ; Si es bright | ||
- | xor 7 | + | xor %00000111 |
SetBorder_fin: | SetBorder_fin: | ||
Línea 984: | Línea 984: | ||
<code basic> | <code basic> | ||
- | 10 For i=0 TO 7 : BORDER I : NEXT I : GOTO 10 | + | 10 FOR i=0 TO 7 : BORDER I : NEXT I : GOTO 10 |
</ | </ | ||
Línea 1194: | Línea 1194: | ||
fadescreen_loop2: | fadescreen_loop2: | ||
ld a, (hl) ; Cogemos el atributo | ld a, (hl) ; Cogemos el atributo | ||
- | and 127 | + | and %01111111 |
ld c, a | ld c, a | ||
- | and 7 | + | and %00000111 |
jr z, fadescreen_ink_zero | jr z, fadescreen_ink_zero | ||
Línea 1210: | Línea 1210: | ||
sra a ; con 3 instrucciones de desplazamiento >> | sra a ; con 3 instrucciones de desplazamiento >> | ||
- | and 7 | + | and %00000111 |
jr z, fadescreen_paper_zero | jr z, fadescreen_paper_zero | ||
Línea 1246: | Línea 1246: | ||
| | ||
+ | |||
+ | Del mismo modo, el libro **//40 Best Machine code Routines for the ZX Spectrum// | ||
+ | |||
+ | \\ | ||
+ | * 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 '' | ||
+ | * 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). | ||
+ | |||
\\ | \\ |