Repository navigation
DEZ80: Nivel 2
- Introducción
-
Nivel 2: Práctica
- Video 2.P01: Introducción al nivel 2
- Video 2.P02: Anima tus pixeles
- Video 2.P03: EJEMPLO. Reto 1.1: Animación de un pixel
- Video 2.P04: Reto: Ponlos en movimiento
- Video 2.P05: Práctica: Repeticiones
- Video 2.P06: Dibuja y anima a lo grande
- Video 2.P07: Práctica: Posiciones variables
- Video 2.P08: Reto: Domina las repeticiones
- Video 2.P09: Crea tu animación
- Resumen de instrucciones
Introducción a todo lo que se va a ver en este segundo nivel
Este vídeo consta de 3 actividades (Retos)
Sólo se pueden usar estas instrucciones:
| Instrucción | Código máquina | Tamaño | Descripción |
|---|---|---|---|
| LD A, ## | 3E ## | 2 bytes | Cargar un valor en el registro A |
| LD (##%%),A | 32 %% ## | 3 bytes | Almacenar A en la posición de memoria indicada |
| LD HL, ##%% | 21 %% ## | 3 bytes | Cargar un valor en el registro HL |
| LD (##%%),HL | 22 %% ## | 3 bytes | Almacenar HL en las posiciones #### y #### + 1 |
| JR ## | 18 FE | 2 bytes | Bucle infinito |
| HALT | 76 | 1 byte | Parar el procesador hasta que llegue interrupción |
| JP ##%% | C3 %% ## | 3 bytes | Saltar a la dirección ## %% |
El resto de instrucciones del Z80 se puede consultar en esta tabla: https://clrhome.org/table/#
- Reto 1.1: Animar un pixel
- Reto 1.2: Barra de progreso
- Reto 1.3: Animar un sprite
Los retos se resuelven en el siguiente apartado, después de que Fran resuelva el Reto 1.1
- Descripción: Animar un pixel que se mueva por las 4 primeras posiciones. Repetición infinita. Mínimo 0.1 segundos por fotograma
- Este reto se resuelve en el Vídeo 2.P03
Para hacer la animación del pixel tenemos que guardar en la dirección C000 los bytes 0x88, 0x44, 0x22 y 0x11 que se corresponden con el pixel rojo en su recorrido hacia la derecha
La frecuencia de refresco del monitor es de 50Hz. Es decir, que se pinta un fotograma nuevo cada 20ms. Esto significa que para que se vea bien el movimiento hay que pintar el pixel y esperar al menos 20ms para que se pinte. Luego se guarda el nuevo valor de la animación y se espera otros 20ms...
El algoritmo sería algo como esto:
- Pintar pixel (88)
- wait 20ms (tiempo que tarda en pintarse el fotograma)
- Pintar pixel (44)
- wait 20ms
- Pintar pixel (22)
- wait 20ms
- Pintar pixel (11)
Como restricción del reto me dicen que cada fotograma tiene que estar al menos 0.1 segundos = 100ms = 100.000µs
Es decir, que el algoritmo a implementar debe ser este:
- Pixel 1
- wait 100ms
- Pixel 2
- wait 100ms
- Pixel 3
- wait 100ms
- Pixel 4
- wait 100ms
- Salta al principio
La instrucción halt espera a que llegue una interrupción. Tarda aproximadamente 3ms (más o menos). Por ello para lograr un retraso de 100ms hay que ejecutar al menos 30 instrucciones halt
-
Código máquina:
3E 88 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 44 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 22 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 11 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 C3 00 40 -
Programa desensamblado:
ld a,#88
ld (#c000),A
halt
...
halt
ld a,#44
ld (#c000),A
halt
...
halt
ld a,#22
ld (#c000),A
halt
...
halt
ld a,#11
ld (#c000),A
halt
...
halt
JP #4000- Resultado:

- Descripción: Animación de una barra de probreso de 4 pixeles (4x1). Se mueve de izquierda a derecha y tiene que sacar todos los colores
- Bonus: Adicto al pixel: Si la barra de progreso mide más de 4 pixeles
La secuencia utilizada es la siguiente: primero una barra cyan, despues una amarilla, despues una rojo y por último la azul (fondo) para volver al estado inicial. La barra de progreso de cada color tiene 4 fotogramas
| Fotograma | Cyan | Amarillo | rojo | Fondo |
|---|---|---|---|---|
| 1 | 08 | 87 | 8F | 77 |
| 2 | 0C | C3 | CF | 33 |
| 3 | 0E | E1 | EF | 11 |
| 4 | 0F | F0 | FF | 00 |
-
Código máquina:
3E 08 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 0C 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 0E 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 0F 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 87 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E C3 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E E1 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E F0 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 8F 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E CF 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E EF 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E FF 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 77 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 33 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 11 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 00 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 C3 00 40 -
Programa desensamblado:
(Cada halt son en realidad 30 halts)
LD A,#08
LD (#C000),A
HALT
LD A,#0C
LD (#C000),A
HALT
LD A,#0E
LD (#C000),A
HALT
LD A,#0F
LD (#C000),A
HALT
LD A,#87
LD (#C000),A
HALT
LD A,#CE
LD (#C000),A
HALT
LD A,#E1
LD (#C000),A
HALT
LD A,#F0
LD (#C000),A
HALT
LD A,#8F
LD (#C000),A
HALT
LD A,#CF
LD (#C000),A
HALT
LD A,#EF
LD (#C000),A
HALT
LD A,#FF
LD (#C000),A
HALT
LD A,#77
LD (#C000),A
HALT
LD A,#33
LD (#C000),A
HALT
LD A,#11
LD (#C000),A
HALT
LD A,#00
LD (#C000),A
HALT
JP #4000
- Resultado:

- Bus: Barra de progreso de 8 pixeles de largo
En este caso hay que hacer dos escrituras, en las posiciones C000 y C0001. Ahora cada barra de progreso tendrá 8 fotogramas (el doble)
| Fotograma | Cyan | Amarillo | rojo | Fondo |
|---|---|---|---|---|
| 1 | 08 00 | 87 0F | F8 F0 | 77 FF |
| 2 | 0C 00 | C3 0F | FC F0 | 33 FF |
| 3 | 0E 00 | E1 0F | FE F0 | 11 FF |
| 4 | 0F 00 | F0 0F | FF F0 | 00 FF |
| 5 | 0F 08 | F0 87 | FF F8 | 00 77 |
| 6 | 0F 0C | F0 C3 | FF FC | 00 33 |
| 7 | 0F 0E | F0 E1 | FF FE | 00 11 |
| 8 | 0F 0F | F0 F0 | FF FF | 00 00 |
-
Código máquina:
21 08 00 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 0C 00 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 0E 00 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 0F 00 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 0F 08 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 0F 0C 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 0F 0E 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 0F 0F 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 87 0F 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 C3 0F 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 E1 0F 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 F0 0F 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 F0 87 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 F0 C3 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 F0 E1 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 F0 F0 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 F8 F0 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 FC F0 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 FE F0 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 FF F0 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 FF F8 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 FF FC 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 FF FE 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 FF FF 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 77 FF 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 33 FF 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 11 FF 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 FF 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 77 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 33 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 11 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 00 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 C3 00 40 -
Programa desensamblado:
LD HL,#0008
LD (#C000),HL
HALT
LD HL,#000C
LD (#C000),HL
HALT
LD HL,#000E
LD (#C000),HL
HALT
LD HL,#000F
LD (#C000),HL
HALT
LD HL,#080F
LD (#C000),HL
HALT
LD HL,#0C0F
LD (#C000),HL
HALT
LD HL,#0E0F
LD (#C000),HL
HALT
LD HL,#0F0F
LD (#C000),HL
HALT
LD HL,#0F87
LD (#C000),HL
HALT
LD HL,#0FCE
LD (#C000),HL
HALT
LD HL,#0FE1
LD (#C000),HL
HALT
LD HL,#0FF0
LD (#C000),HL
HALT
LD HL,#87F0
LD (#C000),HL
HALT
LD HL,#C3F0
LD (#C000),HL
HALT
LD HL,#E1F0
LD (#C000),HL
HALT
LD HL,#F0F0
LD (#C000),HL
HALT
LD HL,#F0F8
LD (#C000),HL
HALT
LD HL,#F0FC
LD (#C000),HL
HALT
LD HL,#F0FE
LD (#C000),HL
HALT
LD HL,#F0FF
LD (#C000),HL
HALT
LD HL,#F8FF
LD (#C000),HL
HALT
LD HL,#FCFF
LD (#C000),HL
HALT
LD HL,#FEFF
LD (#C000),HL
HALT
LD HL,#FFFF
LD (#C000),HL
HALT
LD HL,#FF77
LD (#C000),HL
HALT
LD HL,#FF33
LD (#C000),HL
HALT
LD HL,#FF11
LD (#C000),HL
HALT
LD HL,#FF00
LD (#C000),HL
HALT
LD HL,#7700
LD (#C000),HL
HALT
LD HL,#3300
LD (#C000),HL
HALT
LD HL,#1100
LD (#C000),HL
HALT
LD HL,#0000
LD (#C000),HL
HALT
- Resultado:

- Descripción: Animar un sprite de tamaño 4x4 como mínimo.
- Bonus: Fotogramaster: Animación con más de 4 fotogramas
- Bonus: Cambiazos: Sólo escribir en la memoria de vídeo los bytes que cambien en cada fotograma
El sprite es un pulsador de 4x5 pixeles, que se guarda en las direcciones C000, C800 D000, D800 y E000. Estos son los fotogramas:
Fotograma 1:
| Dir | Colores | Valor |
|---|---|---|
| C000 | AAAA | F0 |
| C800 | FCCF | 06 |
| D000 | FCCF | 06 |
| D800 | ACCA | 96 |
| E000 | RCCR | 9F |
-
Código máquina:
3E F0 32 00 C0 3E 06 32 00 C8 3E 06 32 00 D0 00 3E 96 32 00 D8 3E 9F 32 00 E0 C3 00 40
Fotograma 2 y 4:
| Dir | Colores | Valor |
|---|---|---|
| C000 | 0000 | 00 |
| C800 | AAAA | F0 |
| D000 | FCCF | 06 |
| D800 | ACCA | 96 |
| E000 | RCCR | 9F |
-
Código máquina:
3E 00 32 00 C0 3E F0 32 00 C8 3E 06 32 00 D0 00 3E 96 32 00 D8 3E 9F 32 00 E0 C3 00 40
** Fotograma 3**:
| Dir | Colores | Valor |
|---|---|---|
| C000 | 0000 | 00 |
| C800 | 0000 | 00 |
| D000 | AAAA | F0 |
| D800 | ACCA | 96 |
| E000 | RCCR | 9F |
-
Código máquina:
3E 00 32 00 C0 3E 00 32 00 C8 3E F0 32 00 D0 00 3E 96 32 00 D8 3E 9F 32 00 E0 C3 00 40 -
El código máquina completo es:
3E F0 32 00 C0 3E 06 32 00 C8 3E 06 32 00 D0 00 3E 96 32 00 D8 3E 9F 32 00 E0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 00 32 00 C0 3E F0 32 00 C8 3E 06 32 00 D0 00 3E 96 32 00 D8 3E 9F 32 00 E0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 00 32 00 C0 3E 00 32 00 C8 3E F0 32 00 D0 00 3E 96 32 00 D8 3E 9F 32 00 E0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 00 32 00 C0 3E F0 32 00 C8 3E 06 32 00 D0 00 3E 96 32 00 D8 3E 9F 32 00 E0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 C3 00 40 -
Programa desensamblado:
LD A,#F0
LD (#C000),A
LD A,#06
LD (#C800),A
LD A,#06
LD (#D000),A
LD A,#96
LD (#D800),A
LD A,#9F
LD (#E000),A
HALT
...
LD A,#00
LD (#C000),A
LD A,#F0
LD (#C800),A
LD A,#06
LD (#D000),A
LD A,#96
LD (#D800),A
LD A,#9F
LD (#E000),A
HALT
...
LD A,#00
LD (#C000),A
LD A,#00
LD (#C800),A
LD A,#F0
LD (#D000),A
LD A,#96
LD (#D800),A
LD A,#9F
LD (#E000),A
HALT
...
LD A,#00
LD (#C000),A
LD A,#F0
LD (#C800),A
LD A,#06
LD (#D000),A
LD A,#96
LD (#D800),A
LD A,#9F
LD (#E000),A
HALT
...
JP #4000
- Resultado:

- Tamaño del programa: 226 Bytes
-
Primero se pinta la parte estática del fotograma y en cada fotograma sólo la dinámica
-
En el sprite generado, la parte estática son 2 bytes y la dinámica 3
-
Se ha actualizado el sprite
-
Código máquina:
3E FF 32 00 D8 3E FF 32 00 E0 3E F0 32 00 C0 3E 06 32 00 C8 3E 06 32 00 D0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 00 32 00 C0 3E F0 32 00 C8 3E 06 32 00 D0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 00 32 00 C0 3E 00 32 00 C8 3E F0 32 00 D0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 00 32 00 C0 3E F0 32 00 C8 3E 06 32 00 D0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 C3 00 40 -
Programa desensamblado:
LD A,#FF
LD (#D800),A
LD A,#FF
LD (#E000),A
LD A,#F0
LD (#C000),A
LD A,#06
LD (#C800),A
LD A,#06
LD (#D000),A
HALT
...
LD A,#00
LD (#C000),A
LD A,#F0
LD (#C800),A
LD A,#06
LD (#D000),A
HALT
...
LD A,#00
LD (#C000),A
LD A,#00
LD (#C800),A
LD A,#F0
LD (#D000),A
HALT
...
LD A,#00
LD (#C000),A
LD A,#F0
LD (#C800),A
LD A,#06
LD (#D000),A
HALT
...
JP #4000
- Tamaño: 193 bytes
- Resultado:

- Descripción: Movimiento de 4 en 4 píxeles. Al menos 5 fotogramas. 0.3 segundos por fotograma
- Bonus: Super16Bits: Usar las instrucciones 21 y 22 para pintar en pantalla
Hay 5 fotogramas, que se mueven de 4 en 4 píxeles. Por tanto la bala se tendrá que escribir en las posiciones: C000, C001, C002, C003 y C004. Cada fotograma debe permanecer en pantalla 0.3 segundos. Por tanto habrá que utilizar unas 100 instrucciones halt
Para pintar el fotograma hay que borrar primero el anterior y luego pintar el nuevo.
-
Código máquina:
3E 00 32 04 C0 3E FF 32 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 00 32 00 C0 3E FF 32 01 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 00 32 01 C0 3E FF 32 02 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 00 32 02 C0 3E FF 32 03 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 3E 00 32 03 C0 3E FF 32 04 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 C3 00 40 -
Tamaño del programa: 240 bytes
-
Programa desensamblado:
LD A,#00
LD (#C004),A
LD A,#FF
LD (#C000),A
HALT
...
LD A,#00
LD (#C000),A
LD A,#FF
LD(#C001),A
HALT
...
LD A,#00
LD (#C001),A
LD A,#FF
LD(#C002),A
HALT
...
LD A,#00
LD (#C002),A
LD A,#FF
LD(#C003),A
HALT
...
LD A,#00
LD (#C003),A
LD A,#FF
LD(#C004),A
HALT
...
JP #4000
- Resultado:

-
Utilizar las instrucciones 21 y 22 (ld hl,#valor, ld (#dir),hl)
-
Código máquina:
21 00 00 22 04 C0 21 FF 00 22 00 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 00 22 00 C0 21 FF 00 22 01 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 00 22 01 C0 21 FF 00 22 02 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 00 22 02 C0 21 FF 00 22 03 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 00 22 03 C0 21 FF 00 22 04 C0 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 C3 00 40 -
Programa desensamblado:
LD HL,#0000
LD (#C004),HL
LD HL,#00FF
LD (#C000),HL
HALT
...
LD HL,#0000
LD (#C000),HL
LD HL,#00FF
LD (#C001),HL
HALT
...
LD HL,#0000
LD (#C001),HL
LD HL,#00FF
LD (#C002),HL
HALT
...
LD HL,#0000
LD (#C002),HL
LD HL,#00FF
LD (#C003),HL
HALT
...
LD HL,#0000
LD (#C003),HL
LD HL,#00FF
LD (#C004),HL
HALT
...
JP #4000
- Descripción: La parte izquierda de la trama (estática) es de 4x2 y la parte derecha (dinámica) de 16x2. Se usan 3 fotogramas de subida y 3 de bajada
- Bonus: Potenciador: Hacer la trampa más grande (más ancha o más larga)
- Bonus: Optimizador: Cada fotograma sólo puede ocupar 32 bytes. El tamaño total debe ser menor de 32 * fotogramas
Cada fotograma tiene 5 bytes por file. La primera columna contiene los bytes estáticos, que no cambian
| Fotograma | Dir | +00 | +01 | +02 | +03 | +04 |
|---|---|---|---|---|---|---|
| 1 | C000 | FD | 00 | 00 | 00 | FC |
| 1 | C800 | FB | 00 | 00 | 00 | F8 |
| 2 | C000 | FD | 00 | 00 | FC | F0 |
| 2 | C800 | FB | 00 | 00 | F8 | F0 |
| 3 | C000 | FD | 00 | FC | F0 | F0 |
| 3 | C800 | FB | 00 | F8 | F0 | F0 |
| 4 | C000 | FD | FC | F0 | F0 | F0 |
| 4 | C800 | FB | F8 | F0 | F0 | F0 |
| 5 | C000 | FD | 00 | FC | F0 | F0 |
| 5 | C800 | FB | 00 | F8 | F0 | F0 |
| 6 | C000 | FD | 00 | 00 | FC | F0 |
| 6 | C800 | FB | 00 | 00 | F8 | F0 |
-
Código máquina:
3E FD 32 00 C0 3E FB 32 00 C8 21 00 00 22 01 C0 21 00 FC 22 03 C0 21 00 00 22 01 C8 21 00 F8 22 03 C8 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 00 22 01 C0 21 FC F0 22 03 C0 21 00 00 22 01 C8 21 F8 F0 22 03 C8 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 FC 22 01 C0 21 F0 F0 22 03 C0 21 00 F8 22 01 C8 21 F0 F0 22 03 C8 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 FC F0 22 01 C0 21 F0 F0 22 03 C0 21 F8 F0 22 01 C8 21 F0 F0 22 03 C8 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 FC 22 01 C0 21 F0 F0 22 03 C0 21 00 F8 22 01 C8 21 F0 F0 22 03 C8 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 21 00 00 22 01 C0 21 FC F0 22 03 C0 21 00 00 22 01 C8 21 F8 F0 22 03 C8 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 C3 00 40 -
Tamaño del programa:: 702
-
Programa desensamblado:
LD A,#FD
LD (#C000),A
LD A,#FB
LD (#C800),A
LD HL, #0000
LD (#C001),HL
LD HL, #FC00
LD (#C003),HL
LD HL, #0000
LD (#C801),HL
LD HL, #F800
LD (#C803),HL
HALT
...
LD HL, #0000
LD (#C001),HL
LD HL, #F0FC
LD (#C003),HL
LD HL, #0000
LD (#C801),HL
LD HL, #F0F8
LD (#C803),HL
HALT
...
LD HL, #FC00
LD (#C001),HL
LD HL, #F0FC
LD (#C003),HL
LD HL, #F8F0
LD (#C801),HL
LD HL, #F0F0
LD (#C803),HL
HALT
...
LD HL, #F0FC
LD (#C001),HL
LD HL, #F0F0
LD (#C003),HL
LD HL, #F0F8
LD (#C801),HL
LD HL, #F0F0
LD (#C803),HL
HALT
...
LD HL, #FCF0
LD (#C001),HL
LD HL, #F0F0
LD (#C003),HL
LD HL, #F8F0
LD (#C801),HL
LD HL, #F0F0
LD (#C803),HL
HALT
...
LD HL, #0000
LD (#C001),HL
LD HL, #F0FC
LD (#C003),HL
LD HL, #0000
LD (#C801),HL
LD HL, #F0F8
LD (#C803),HL
HALT
...
- Resultado:

-
Dibujar la parte estática:
3E FD 32 00 C0 3E FB 32 00 C8 -
Fotograma 1:
21 00 00 22 01 C0 21 00 FC 22 03 C0 21 00 00 22 01 C8 21 00 F8 22 03 C83E 64 76 3D 20 FC -
Fotograma 2:
21 00 00 22 01 C0 21 00 FC 22 03 C0 21 00 00 22 01 C8 21 00 F8 22 03 C83E 64 76 3D 20 FC -
Fotograma 3:
21 00 FC 22 01 C0 21 F0 F0 22 03 C0 21 00 F8 22 01 C8 21 F0 F0 22 03 C83E 64 76 3D 20 FC -
Fotograma 4:
21 FC F0 22 01 C0 21 F0 F0 22 03 C0 21 F8 F0 22 01 C8 21 F0 F0 22 03 C83E 64 76 3D 20 FC -
Fotograma 5:
21 00 FC 22 01 C0 21 F0 F0 22 03 C0 21 00 F8 22 01 C8 21 F0 F0 22 03 C83E 64 76 3D 20 FC -
Fotograma 6:
21 00 00 22 01 C0 21 FC F0 22 03 C0 21 00 00 22 01 C8 21 F8 F0 22 03 C83E 64 76 3D 20 FC -
Codigo máquina:
3E FD 32 00 C0 3E FB 32 00 C8 21 00 00 22 01 C0 21 00 FC 22 03 C0 21 00 00 22 01 C8 21 00 F8 22 03 C8 3E 64 76 3D 20 FC 21 00 00 22 01 C0 21 00 FC 22 03 C0 21 00 00 22 01 C8 21 00 F8 22 03 C8 3E 64 76 3D 20 FC 21 00 FC 22 01 C0 21 F0 F0 22 03 C0 21 00 F8 22 01 C8 21 F0 F0 22 03 C8 3E 64 76 3D 20 FC 21 FC F0 22 01 C0 21 F0 F0 22 03 C0 21 F8 F0 22 01 C8 21 F0 F0 22 03 C8 3E 64 76 3D 20 FC 21 00 FC 22 01 C0 21 F0 F0 22 03 C0 21 00 F8 22 01 C8 21 F0 F0 22 03 C8 3E 64 76 3D 20 FC 21 00 00 22 01 C0 21 FC F0 22 03 C0 21 00 00 22 01 C8 21 F8 F0 22 03 C8 3E 64 76 3D 20 FC C3 00 40 -
Tamaño: 192 bytes
-
Programa desensamblado:
LD A,#FD
LD (#C000),A
LD A,#FB
LD (#C800),A
LD HL, #0000
LD (#C001),HL
LD HL, #FC00
LD (#C003),HL
LD HL, #0000
LD (#C801),HL
LD HL, #F800
LD (#C803),HL
LD A,#100
HALT
DEC A
JR nz,#FC
LD HL, #0000
LD (#C001),HL
LD HL, #F0FC
LD (#C003),HL
LD HL, #0000
LD (#C801),HL
LD HL, #F0F8
LD (#C803),HL
LD A,#100
HALT
DEC A
JR nz,#FC
LD HL, #FC00
LD (#C001),HL
LD HL, #F0FC
LD (#C003),HL
LD HL, #F8F0
LD (#C801),HL
LD HL, #F0F0
LD (#C803),HL
LD A,#100
HALT
DEC A
JR nz,#FC
LD HL, #F0FC
LD (#C001),HL
LD HL, #F0F0
LD (#C003),HL
LD HL, #F0F8
LD (#C801),HL
LD HL, #F0F0
LD (#C803),HL
LD A,#100
HALT
DEC A
JR nz,#FC
LD HL, #FCF0
LD (#C001),HL
LD HL, #F0F0
LD (#C003),HL
LD HL, #F8F0
LD (#C801),HL
LD HL, #F0F0
LD (#C803),HL
LD A,#100
HALT
DEC A
JR nz,#FC
LD HL, #0000
LD (#C001),HL
LD HL, #F0FC
LD (#C003),HL
LD HL, #0000
LD (#C801),HL
LD HL, #F0F8
LD (#C803),HL
LD A,#100
HALT
DEC A
JR nz,#FC
JP #4000
-
Descripción: Animación de una pelota de 4x4 píxeles. Se mueve 4 píxeles hacia abajo y rebota volviendo a su posición original. Debe botar encima de la letra "A". La instrucción 21 sólo se puede usar 1 vez en todo el programa. Hay que usar las instrucciones 36 y 26.
-
Bonus: Acelerado: La pelota debe variar su velocidad: más rápido cerca del suelo y más lento en la parte superior
El sprite de la pelota es el siguiente:
| Linea | Valor |
|---|---|
| 1 | 66 |
| 2 | F9 |
| 3 | F9 |
| 4 | 66 |
En el primer experimento lo dibujamos en la dirección C000:
- Experimento 1:
21 00 C0 36 66 26 C8 36 F9 26 D0 36 F9 26 D8 36 66 18 FE
LD HL,#C000
LD (HL),66
LD H,#C8
LD (HL),F9
LD H,#D0
LD (HL),F9
LD H,#D8
LD (HL),66
Para dibujar la bola encima de la A hay que usar la dirección C002. Sólo hay que cambiar la primera instrucción:
- Experimento 2: Bola encima de la A:
21 02 00 26 C0 36 66 26 C8 36 F9 26 D0 36 F9 26 D8 36 66 18 FE
LD HL,#0002
LD H,#C0
LD (HL),66
LD H,#C8
LD (HL),F9
LD H,#D0
LD (HL),F9
LD H,#D8
LD (HL),66
LD H,#E0
LD (HL),00
LD H,#E8
LD (HL),00
LD H,#F0
LD (HL),00
LD H,#F8
LD (HL),00
- Resultado:

Para hacer la animación completa hay que que pintar fotogramas de 4x8 píxeles. En esta tabla se muestran todos:
| Línea | Fot-1 | Fot-2 | Fot-3 | Fot-4 | Fot-5 | Fot-6 | Fot-7 | Fot-8 |
|---|---|---|---|---|---|---|---|---|
| 1 | 66 | 00 | 00 | 00 | 00 | =Fot-4 | =Fot-3 | =Fot2 |
| 2 | F9 | 66 | 00 | 00 | 00 | |||
| 3 | F9 | F9 | 66 | 00 | 00 | |||
| 4 | 66 | F9 | F9 | 66 | 00 | |||
| 5 | 00 | 66 | F9 | F9 | 66 | |||
| 6 | 00 | 00 | 66 | F9 | F9 | |||
| 7 | 00 | 00 | 00 | 66 | F9 | |||
| 8 | 00 | 00 | 00 | 00 | 66 |
- Fotograma 1:
21 02 00
26 C0 36 66
26 C8 36 F9
26 D0 36 F9
26 D8 36 66
26 E0 36 00
26 E8 36 00
26 F0 36 00
26 F8 36 00
-
Cod. Fot1:
21 02 00 26 C0 36 66 26 C8 36 F9 26 D0 36 F9 26 D8 36 66 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 -
Fotograma 2:
26 C0 36 00
26 C8 36 66
26 D0 36 F9
26 D8 36 F9
26 E0 36 66
26 E8 36 00
26 F0 36 00
26 F8 36 00
-
Cod. Fot2:
26 C0 36 00 26 C8 36 66 26 D0 36 F9 26 D8 36 F9 26 E0 36 66 26 E8 36 00 26 F0 36 00 26 F8 36 00 -
Fotograma 3:
26 C0 36 00
26 C8 36 00
26 D0 36 66
26 D8 36 F9
26 E0 36 F9
26 E8 36 66
26 F0 36 00
26 F8 36 00
-
Cod. Fot3:
26 C0 36 00 26 C8 36 00 26 D0 36 66 26 D8 36 F9 26 E0 36 F9 26 E8 36 66 26 F0 36 00 26 F8 36 00 -
Fotograma 4:
26 C0 36 00
26 C8 36 00
26 D0 36 00
26 D8 36 66
26 E0 36 F9
26 E8 36 F9
26 F0 36 66
26 F8 36 00
-
Cod. Fot4:
26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 66 26 E0 36 F9 26 E8 36 F9 26 F0 36 66 26 F8 36 00 -
Fotograma 5:
26 C0 36 00
26 C8 36 00
26 D0 36 00
26 D8 36 00
26 E0 36 66
26 E8 36 F9
26 F0 36 F9
26 F8 36 66
-
Cod. Fot5:
26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 66 26 E8 36 F9 26 F0 36 F9 26 F8 36 66 -
Rutina de Wait:
3E F0 76 3D 20 FC -
Código final:
21 02 00 26 C0 36 66 26 C8 36 F9 26 D0 36 F9 26 D8 36 66 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 3E F0 76 3D 20 FC 26 C0 36 00 26 C8 36 66 26 D0 36 F9 26 D8 36 F9 26 E0 36 66 26 E8 36 00 26 F0 36 00 26 F8 36 00 3E F0 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 66 26 D8 36 F9 26 E0 36 F9 26 E8 36 66 26 F0 36 00 26 F8 36 00 3E F0 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 66 26 E0 36 F9 26 E8 36 F9 26 F0 36 66 26 F8 36 00 3E F0 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 66 26 E8 36 F9 26 F0 36 F9 26 F8 36 66 3E F0 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 66 26 E0 36 F9 26 E8 36 F9 26 F0 36 66 26 F8 36 00 3E F0 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 66 26 D8 36 F9 26 E0 36 F9 26 E8 36 66 26 F0 36 00 26 F8 36 00 3E F0 76 3D 20 FC 26 C0 36 00 26 C8 36 66 26 D0 36 F9 26 D8 36 F9 26 E0 36 66 26 E8 36 00 26 F0 36 00 26 F8 36 00 3E F0 76 3D 20 FC -
Programa desensamblado:
LD HL,#0002
LD H,#C0
LD (HL),#66
LD H,#C8
LD (HL),#F9
LD H,#D0
LD (HL),#F9
LD H,#D8
LD (HL),#66
LD H,#E0
LD (HL),#00
LD H,#E8
LD (HL),#00
LD H,#F0
LD (HL),#00
LD H,#F8
LD (HL),#00
LD A,#F0
HALT
DEC A
JR NZ,#FC
LD H,#C0
LD (HL),#00
LD H,#C8
LD (HL),#66
LD H,#D0
LD (HL),#F9
LD H,#D8
LD (HL),#F9
LD H,#E0
LD (HL),#66
LD H,#E8
LD (HL),#00
LD H,#F0
LD (HL),#00
LD H,#F8
LD (HL),#00
LD A,#F0
HALT
DEC A
JR NZ,#FC
LD H,#C0
LD (HL),#00
LD H,#C8
LD (HL),#00
LD H,#D0
LD (HL),#66
LD H,#D8
LD (HL),#F9
LD H,#E0
LD (HL),#F9
LD H,#E8
LD (HL),#66
LD H,#F0
LD (HL),#00
LD H,#F8
LD (HL),#00
LD A,#F0
HALT
DEC A
JR NZ,#FC
LD H,#C0
LD (HL),#00
LD H,#C8
LD (HL),#00
LD H,#D0
LD (HL),#00
LD H,#D8
LD (HL),#66
LD H,#E0
LD (HL),#F9
LD H,#E8
LD (HL),#F9
LD H,#F0
LD (HL),#66
LD H,#F8
LD (HL),#00
LD A,#F0
HALT
DEC A
JR NZ,#FC
LD H,#C0
LD (HL),#00
LD H,#C8
LD (HL),#00
LD H,#D0
LD (HL),#00
LD H,#D8
LD (HL),#00
LD H,#E0
LD (HL),#66
LD H,#E8
LD (HL),#F9
LD H,#F0
LD (HL),#F9
LD H,#F8
LD (HL),#66
LD A,#F0
HALT
DEC A
JR NZ,#FC
LD H,#C0
LD (HL),#00
LD H,#C8
LD (HL),#00
LD H,#D0
LD (HL),#00
LD H,#D8
LD (HL),#66
LD H,#E0
LD (HL),#F9
LD H,#E8
LD (HL),#F9
LD H,#F0
LD (HL),#66
LD H,#F8
LD (HL),#00
LD A,#F0
HALT
DEC A
JR NZ,#FC
LD H,#C0
LD (HL),#00
LD H,#C8
LD (HL),#00
LD H,#D0
LD (HL),#66
LD H,#D8
LD (HL),#F9
LD H,#E0
LD (HL),#F9
LD H,#E8
LD (HL),#66
LD H,#F0
LD (HL),#00
LD H,#F8
LD (HL),#00
LD A,#F0
HALT
DEC A
JR NZ,#FC
LD H,#C0
LD (HL),#00
LD H,#C8
LD (HL),#66
LD H,#D0
LD (HL),#F9
LD H,#D8
LD (HL),#F9
LD H,#E0
LD (HL),#66
LD H,#E8
LD (HL),#00
LD H,#F0
LD (HL),#00
LD H,#F8
LD (HL),#00
LD A,#F0
HALT
DEC A
JR NZ,#FC
JP #4000
- Resultado:

En vez de tiempo constante entre fotogramas, voy a hacer que el tiempo de espera entre fotogramas sea variable, hasta que la pelota llegue al suelo. Voy a probar con estos tiempos: 240, 120, 60, 30, 15, que en hexadecimal es: F0, 78, 3C, 1E, 0F
-
Código final:
21 02 00 26 C0 36 66 26 C8 36 F9 26 D0 36 F9 26 D8 36 66 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 3E F0 76 3D 20 FC 26 C0 36 00 26 C8 36 66 26 D0 36 F9 26 D8 36 F9 26 E0 36 66 26 E8 36 00 26 F0 36 00 26 F8 36 00 3E 78 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 66 26 D8 36 F9 26 E0 36 F9 26 E8 36 66 26 F0 36 00 26 F8 36 00 3E 3C 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 66 26 E0 36 F9 26 E8 36 F9 26 F0 36 66 26 F8 36 00 3E 1E 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 66 26 E8 36 F9 26 F0 36 F9 26 F8 36 66 3E 0F 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 66 26 E0 36 F9 26 E8 36 F9 26 F0 36 66 26 F8 36 00 3E 1E 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 66 26 D8 36 F9 26 E0 36 F9 26 E8 36 66 26 F0 36 00 26 F8 36 00 3E 3C 76 3D 20 FC 26 C0 36 00 26 C8 36 66 26 D0 36 F9 26 D8 36 F9 26 E0 36 66 26 E8 36 00 26 F0 36 00 26 F8 36 00 3E 78 76 3D 20 FC C3 00 40 -
Resultado:

Voy a probar con estos valores de tiempos: 80, 40, 20, 10, 08
-
Código final:
21 02 00 26 C0 36 66 26 C8 36 F9 26 D0 36 F9 26 D8 36 66 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 3E 80 76 3D 20 FC 26 C0 36 00 26 C8 36 66 26 D0 36 F9 26 D8 36 F9 26 E0 36 66 26 E8 36 00 26 F0 36 00 26 F8 36 00 3E 40 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 66 26 D8 36 F9 26 E0 36 F9 26 E8 36 66 26 F0 36 00 26 F8 36 00 3E 20 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 66 26 E0 36 F9 26 E8 36 F9 26 F0 36 66 26 F8 36 00 3E 10 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 66 26 E8 36 F9 26 F0 36 F9 26 F8 36 66 3E 08 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 66 26 E0 36 F9 26 E8 36 F9 26 F0 36 66 26 F8 36 00 3E 10 76 3D 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 66 26 D8 36 F9 26 E0 36 F9 26 E8 36 66 26 F0 36 00 26 F8 36 00 3E 20 76 3D 20 FC 26 C0 36 00 26 C8 36 66 26 D0 36 F9 26 D8 36 F9 26 E0 36 66 26 E8 36 00 26 F0 36 00 26 F8 36 00 3E 40 76 3D 20 FC C3 00 40

En el vídeo se muestra un ejemplo de repetición: Hacer un parpadeo de una barra de 4 píxeles. Se hace que parpadee 20 veces y que termine. Se pide como ejercicio que se haga el programa pero ocupando menos de 32 bytes, utilizando repeticiones
Hay dos bucles anidados. Uno para contar las 20 repeticiones del LED (0x14), y otro interno para generar las pausas con Halt. El valor inicial para estas pausas será de 64 (0x40)
-
Código máquina:
3E 14 21 FF FF 22 00 C0 06 40 76 05 20 FC 21 00 00 22 00 C0 06 40 76 05 20 FC 3D 20 E5 18 FE -
Código desensamblado:
LD A, #14
LD HL, #FFFF
LD (#C000),HL
LD B,#40
HALT
DEC B
JR nz,FC
LD HL,#0000
LD (#C000),HL
LD B,#40
HALT
DEC B
JR nz,FC
DEC A
JR nz,-29
JR FE
- Tamaño del programa: 31 bytes
- Resultado: Al cabo de 20 repeticiones se termina (aunque el gif animado luego vuelve a empezar)

- Descripción: Dibujar un suelo de 4x4 píxeles que sea "Tileable". Utilizar la instrucción 36 (LD (HL),**)
De momento voy a usar el mismo suelo que propone Fran
| Linea | Dir | Valor |
|---|---|---|
| 1 | C000 | FF |
| 2 | C800 | A5 |
| 3 | D000 | 5A |
| 4 | D800 | FF |
-
Código máquina:
21 00 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 18 FE -
Código desensamblado:
LD HL,#C000
LD (HL),#FF
LD H,#C8
LD (HL),#A5
LD H,#D0
LD (HL),#5A
LD H,#D8
LD (HL),#FF
JR FE
- Resultado:

-
Descripción: Dibujar un suelo de 4x320 pixeles utilizando la baldosa del reto 3.1. Se debe colocar mediante la repetición de esa baldosa. El código debe ser único
-
Bonus: Minimalista30. El código debe ocupar menos de 30 bytes
-
Bonus: Profundidades. Que el suelo ocupe más de 4 píxeles de alto
Modificamos el código anterior para que se escriba en H el valor C0. Sólo con cambiar el valor de L se conseguirá pintar baldosas por la derecha. Usamos el acumulador para contar 80 caracteres (0x50). Habrá que hacer 80 repeticiones para pintar el suelo
- Código máquina:
21 A0 00 3E 50 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 18 FE - Tamaño: 26 bytes (Bonus Minimalista30 conseguido)
LD HL,#00A0
LD A,#50
LD H,#C0
LD (HL),#FF
LD H,#C8
LD (HL),#A5
LD H,#D0
LD (HL),#5A
LD H,#D8
LD (HL),#FF
INC HL
DEC A
JR nz, EC
JR FE
- Resultado:

- Descripción: Dibujar un cielo a partir de un tile de 16x4 pixeles. Se debe utilizar el código de los retos anteriores
- Bonus:Pixelador: Hacer que el cielo tenga más de 4 pixeles de ancho
| Linea | Dir | Valor |
|---|---|---|
| 1 | C0 | F0 |
| 2 | C8 | 5A |
| 3 | D0 | A5 |
| 4 | D8 | 1E |
| 5 | E0 | 0F |
| 6 | E8 | 0A |
| 7 | F0 | 05 |
| 8 | F8 | 08 |
El cielo lo empezamos a dibujar después de terminar con el suelo, pero el proceso de dibujo es el mismo:
-
Código máquina:
21 00 00 3E 50 26 C0 36 F0 26 C8 36 5A 26 D0 36 A5 26 D8 36 1E 26 E0 36 0F 26 E8 36 0A 26 F0 36 05 26 F8 36 08 23 3D 20 DC 18 FE -
Programa desensamblado:
LD HL,#0000
LD A,#50
LD H,#C0
LD (HL),#F0
LD H,#C8
LD (HL),#5A
LD H,#D0
LD (HL),#A5
LD H,#D8
LD (HL),#1E
LD H,#E0
LD (HL),#0F
LD H,#E8
LD (HL),#0A
LD H,#F0
LD (HL),#05
LD H,#F8
LD (HL),#08
INC HL
DEC A
JR nz,DC
- Resultado (parcial):

Ahora hacemos lo mismo pero borrando la parte central. Se puede hacer pintando 00s a tope o bien con bucles anidados...
-
**Código máquina:
21 50 00 3E 50 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 3D 20 DC 18 FE -
Programa desensamblado:
LD HL,#0050
LD A,#50
LD H,#C0
LD (HL),#00
LD H,#C8
LD (HL),#00
LD H,#D0
LD (HL),#00
LD H,#D8
LD (HL),#00
LD H,#E0
LD (HL),#00
LD H,#E8
LD (HL),#00
LD H,#F0
LD (HL),#00
LD H,#F8
LD (HL),#00
INC HL
DEC A
JR nz,DC
- Resultado:

Hacemos ahora el programa completo. Primero se pinta el cielo, luego la parte central y por último el suelo
-
Cielo:
21 00 00 3E 50 26 C0 36 F0 26 C8 36 5A 26 D0 36 A5 26 D8 36 1E 26 E0 36 0F 26 E8 36 0A 26 F0 36 05 26 F8 36 08 23 3D 20 DC -
Cielo 2:
3E 50 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 3D 20 DC -
Suelo:
21 A0 00 3E 50 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 18 FE -
Código máquina final:
21 00 00 3E 50 26 C0 36 F0 26 C8 36 5A 26 D0 36 A5 26 D8 36 1E 26 E0 36 0F 26 E8 36 0A 26 F0 36 05 26 F8 36 08 23 3D 20 DC 3E 50 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 3D 20 DC 21 A0 00 3E 50 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 18 FE
-
Descripción: Dibujar el personaje de 8x8 que dispara una bala que se mueve hasta el final de la pantalla y al final hay una animación de explosión
-
Bonus: Animador: Animar el personaje que dispara. Poner un enemigo que se muere
Al terminar de dibujar el escenario, pasamos a dibujar el personaje:
| Linea | Dir | Valores |
|---|---|---|
| 1 | C0 | 70 80 |
| 2 | C8 | D5 00 |
| 3 | D0 | 77 08 |
| 4 | D8 | 05 7F |
| 5 | E0 | 06 04 |
| 6 | E8 | 70 80 |
| 7 | F0 | 40 80 |
| 8 | F8 | 60 60 |
-
Código máquina:
21 70 80 22 50 C0 21 D5 00 22 50 C8 21 77 08 22 50 D0 21 05 7F 22 50 D8 21 06 04 22 50 E0 21 70 80 22 50 E8 21 40 80 22 50 F0 21 60 60 22 50 F8 -
Programa desensamblado:
LD HL, #8070
LD (#C050),HL
LD HL, #00D5
LD (#C850),HL
LD HL, #
LD (#D050),HL
LD HL, #
LD (#D850),HL
LD HL, #8070
LD (#E050),HL
LD HL, #
LD (#E8050),HL
LD HL, #
LD (#F050),HL
LD HL, #
LD (#F850),HL
-
Siguiente parte: Animación de la bala: Hay que hacer que vaya desde la dirección D852 Hasta el final (78 posiciones). Hay que hacer un bucle para que se repita 79 veces el movimiento de la bala
-
Código máquina:
21 52 D8 3E 4E 36 F0 06 10 76 05 20 FC 36 00 23 3D 20 F2 -
Programa desensamblado:
LD HL,#D852
LD A,#4E
LD (HL),#F0
LD B,#80
HALT
DEC B
JR nz,FC
LD (HL),#00
INC HL
DEC A
JR nz,F2
- Ultima parte: Animación de la explosión
Hay que imprimir en la última posición los 6 sprites de la animación
| Dir | Valor1 | Valor2 | Valor3 | Valor4 | Valor5 | Valor6 |
|---|---|---|---|---|---|---|
| D0 | 00 | 99 | 98 | 81 | 08 | 00 |
| D8 | 66 | 64 | 42 | 04 | 00 | 00 |
| E0 | 66 | 62 | 24 | 02 | 00 | 00 |
| E8 | 00 | 99 | 91 | 18 | 01 | 00 |
-
Código máquina:
21 9F D0 36 00 26 D8 36 66 26 E0 36 66 26 E8 36 00 3E 40 76 3D 20 FC 21 9F D0 36 99 26 D8 36 64 26 E0 36 62 26 E8 36 99 3E 40 76 3D 20 FC 21 9F D0 36 98 26 D8 36 42 26 E0 36 24 26 E8 36 91 3E 40 76 3D 20 FC 21 9F D0 36 81 26 D8 36 04 26 E0 36 02 26 E8 36 18 3E 40 76 3D 20 FC 21 9F D0 36 08 26 D8 36 00 26 E0 36 00 26 E8 36 01 3E 40 76 3D 20 FC 21 9F D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 3E 40 76 3D 20 FC 18 FE -
Programa desensamblado:
LD HL,#D09F
LD (HL), #00
LD H,#D8
LD (HL), #66
LD H,#E0
LD (HL), #66
LD H,#E8
LD (HL), #00
LD A,#40
HALT
DEC A
JR nz,FC
LD HL,#D09F
LD (HL), #99
LD H,#D8
LD (HL), #64
LD H,#E0
LD (HL), #62
LD H,#E8
LD (HL), #99
LD A,#40
HALT
DEC A
JR nz,FC
LD HL,#D09F
LD (HL), #98
LD H,#D8
LD (HL), #42
LD H,#E0
LD (HL), #24
LD H,#E8
LD (HL), #91
LD A,#40
HALT
DEC A
JR nz,FC
LD HL,#D09F
LD (HL), #81
LD H,#D8
LD (HL), #04
LD H,#E0
LD (HL), #02
LD H,#E8
LD (HL), #18
LD A,#40
HALT
DEC A
JR nz,FC
LD HL,#D09F
LD (HL), #08
LD H,#D8
LD (HL), #00
LD H,#E0
LD (HL), #00
LD H,#E8
LD (HL), #01
LD A,#40
HALT
DEC A
JR nz,FC
LD HL,#D09F
LD (HL), #00
LD H,#D8
LD (HL), #00
LD H,#E0
LD (HL), #00
LD H,#E8
LD (HL), #00
JP #4000
-
Código máquina Final:
21 00 00 3E 50 26 C0 36 F0 26 C8 36 5A 26 D0 36 A5 26 D8 36 1E 26 E0 36 0F 26 E8 36 0A 26 F0 36 05 26 F8 36 08 23 3D 20 DC 3E 50 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 3D 20 DC 21 A0 00 3E 50 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 21 70 80 22 50 C0 21 D5 00 22 50 C8 21 77 08 22 50 D0 21 05 7F 22 50 D8 21 06 04 22 50 E0 21 70 80 22 50 E8 21 40 80 22 50 F0 21 60 60 22 50 F8 21 52 D8 3E 4E 36 F0 06 10 76 05 20 FC 36 00 23 3D 20 F2 21 9F D0 36 00 26 D8 36 66 26 E0 36 66 26 E8 36 00 3E 40 76 3D 20 FC 21 9F D0 36 99 26 D8 36 64 26 E0 36 62 26 E8 36 99 3E 40 76 3D 20 FC 21 9F D0 36 98 26 D8 36 42 26 E0 36 24 26 E8 36 91 3E 40 76 3D 20 FC 21 9F D0 36 81 26 D8 36 04 26 E0 36 02 26 E8 36 18 3E 40 76 3D 20 FC 21 9F D0 36 08 26 D8 36 00 26 E0 36 00 26 E8 36 01 3E 40 76 3D 20 FC 21 9F D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 3E 40 76 3D 20 FC C3 00 40 -
Resultado:

-
Ejemplo: Movimiento de la barra del Arkanoid. Dirección: C730. Animar el movimiento para que vaya a la derecha y luego a la izquierda
-
Dibujo del arcanoid completo en la posición C730. Hay que dibujarlo por columnas (de 4 bits). La primera columna y la última contendrá todo ceros para borrar el anterior arkanoid que puede haber
21 30 C7 26 C7 36 00 26 CF 36 00 26 D7 36 00 26 DF 36 00 23 26 C7 36 77 26 CF 36 FF 26 D7 36 FF 26 DF 36 77 23 26 C7 36 0F 26 CF 36 0F 26 D7 36 0F 26 DF 36 0F 23 26 C7 36 0F 26 CF 36 0F 26 D7 36 0F 26 DF 36 0F 23 26 C7 36 EE 26 CF 36 FF 26 D7 36 FF 26 DF 36 EE 23 26 C7 36 00 26 CF 36 00 26 D7 36 00 26 DF 36 00
LD HL, #C730
LD H,#C7
LD (HL), #00
LD H,#CF
LD (HL), #00
LD H,#D7
LD (HL), #00
LD H,#DF
LD (HL), #00
INC HL
LD H,#C7
LD (HL), #77
LD H,#CF
LD (HL), #FF
LD H,#D7
LD (HL), #FF
LD H,#DF
LD (HL), #77
INC HL
LD H,#C7
LD (HL), #77
LD H,#CF
LD (HL), #FF
LD H,#D7
LD (HL), #FF
LD H,#DF
LD (HL), #77
INC HL
LD H,#C7
LD (HL), #EE
LD H,#CF
LD (HL), #FF
LD H,#D7
LD (HL), #FF
LD H,#DF
LD (HL), #EE
INC HL
LD H,#C7
LD (HL), #00
LD H,#CF
LD (HL), #00
LD H,#D7
LD (HL), #00
LD H,#DF
LD (HL), #00
JR FE

Ahora lo metemos en un bucle, incrementando HL. Usamos un contador inicializado a 34 (0x22)
LD A, #4C
;-- Pintar arkanoid (codigo anterior)
DEC L
LD B, #08
HALT
DEC B
JR NZ, FC
DEC A
INC HL
JP NZ,#4005 (JR NZ,8C)
-
Código máquina:
3E 4C 21 30 C7 26 C7 36 00 26 CF 36 00 26 D7 36 00 26 DF 36 00 23 26 C7 36 77 26 CF 36 FF 26 D7 36 FF 26 DF 36 77 23 26 C7 36 0F 26 CF 36 0F 26 D7 36 0F 26 DF 36 0F 23 26 C7 36 0F 26 CF 36 0F 26 D7 36 0F 26 DF 36 0F 23 26 C7 36 EE 26 CF 36 FF 26 D7 36 FF 26 DF 36 EE 23 26 C7 36 00 26 CF 36 00 26 D7 36 00 26 DF 36 00 2D 2D 2D 2D 2D 06 08 76 05 20 FC 3D 23 20 8C 3E 4C 26 C7 36 00 26 CF 36 00 26 D7 36 00 26 DF 36 00 23 26 C7 36 77 26 CF 36 FF 26 D7 36 FF 26 DF 36 77 23 26 C7 36 0F 26 CF 36 0F 26 D7 36 0F 26 DF 36 0F 23 26 C7 36 0F 26 CF 36 0F 26 D7 36 0F 26 DF 36 0F 23 26 C7 36 EE 26 CF 36 FF 26 D7 36 FF 26 DF 36 EE 23 26 C7 36 00 26 CF 36 00 26 D7 36 00 26 DF 36 00 2D 2D 2D 2D 2D 06 08 76 05 20 FC 2D 3D 20 8C C3 00 40 -
Resultado:

- Descripción: se tienen 2 tiles (0 y 1). Hay que repetirlas con el patrón 00000000010000000001... 9 veces el tipo 0 y una el tipo 1
- Bonus: Múltiple: Mínimo 3 tipos de tiles. Mínio dos de ellos se tienen que repetir 4 veces
Primero dibujamos 9 tiles del tipo 0:
-
Código máquina:
21 A0 00 3E 09 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC - Programa desensamblado:
LD HL,#00A0
LD A,#9
LD H,#C0
LD (HL),#FF
LD H,#C8
LD (HL),#A5
LD H,#D0
LD (HL),#5A
LD H,#D8
LD (HL),#FF
INC HL
DEC A
JR nz, EC
JR FE
Y ahora dibujamos la tile 1, que es toda roja: 26 C0 36 FF 26 C8 36 FF 26 D0 36 FF 26 D8 36 FF 18 FE
LD H,#C0
LD (HL),#FF
LD H,#C8
LD (HL),#FF
LD H,#D0
LD (HL),#FF
LD H,#D8
LD (HL),#FF
- El primer patrón completo es la unión de los anteriores:
21 A0 00 3E 09 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 26 C0 36 FF 26 C8 36 FF 26 D0 36 FF 26 D8 36 FF 18 FE
Ahora hay que meterlo en otro bucle:
LD B,8
Codigo anterior
INC HL
DEC B
JR nz,D5
-
Código máquina:
06 08 21 A0 00 3E 09 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 26 C0 36 FF 26 C8 36 FF 26 D0 36 FF 26 D8 36 FF 23 05 20 D4 18 FE -
Resultado:

- Descripción: 21 enemigos de 3 tipos. Patrón: 123123123... Tiles de 8x8
- Bonus: De3En3: Patrón: 111222333
Lo siguiente es dibujar el cielo y la parte central...
-
Código máquina:
21 00 00 3E 50 26 C0 36 F0 26 C8 36 5A 26 D0 36 A5 26 D8 36 1E 26 E0 36 0F 26 E8 36 0A 26 F0 36 05 26 F8 36 08 23 3D 20 DC 3E 50 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 3D 20 DC 06 08 21 A0 00 3E 09 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 26 C0 36 FF 26 C8 36 FF 26 D0 36 FF 26 D8 36 FF 23 05 20 D4 18 FE
LD HL,#0000
LD A,#50
LD H,#C0
LD (HL),#F0
LD H,#C8
LD (HL),#5A
LD H,#D0
LD (HL),#A5
LD H,#D8
LD (HL),#1E
LD H,#E0
LD (HL),#0F
LD H,#E8
LD (HL),#0A
LD H,#F0
LD (HL),#05
LD H,#F8
LD (HL),#08
INC HL
DEC A
JR nz,DC
LD HL,#0050
LD A,#50
LD H,#C0
LD (HL),#00
LD H,#C8
LD (HL),#00
LD H,#D0
LD (HL),#00
LD H,#D8
LD (HL),#00
LD H,#E0
LD (HL),#00
LD H,#E8
LD (HL),#00
LD H,#F0
LD (HL),#00
LD H,#F8
LD (HL),#00
INC HL
DEC A
JR nz,DC
LD B,8
LD HL,#00A0
LD A,#9
LD H,#C0
LD (HL),#FF
LD H,#C8
LD (HL),#A5
LD H,#D0
LD (HL),#5A
LD H,#D8
LD (HL),#FF
INC HL
DEC A
JR nz, EC
JR FE
INC HL
DEC B
JR nz,D5
- Ahora toca dibujar el personaje:
21 70 80 22 50 C0 21 D5 00 22 50 C8 21 77 08 22 50 D0 21 05 7F 22 50 D8 21 06 04 22 50 E0 21 70 80 22 50 E8 21 40 80 22 50 F0 21 60 60 22 50 F8
- Programa desensamblado:
LD HL, #8070
LD (#C050),HL
LD HL, #00D5
LD (#C850),HL
LD HL, #
LD (#D050),HL
LD HL, #
LD (#D850),HL
LD HL, #8070
LD (#E050),HL
LD HL, #
LD (#E8050),HL
LD HL, #
LD (#F050),HL
LD HL, #
LD (#F850),HL
El código copleto hasta ahora es:
-
Código máquina:
21 00 00 3E 50 26 C0 36 F0 26 C8 36 5A 26 D0 36 A5 26 D8 36 1E 26 E0 36 0F 26 E8 36 0A 26 F0 36 05 26 F8 36 08 23 3D 20 DC 3E 50 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 3D 20 DC 06 08 21 A0 00 3E 09 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 26 C0 36 FF 26 C8 36 FF 26 D0 36 FF 26 D8 36 FF 23 05 20 D4 21 70 80 22 50 C0 21 D5 00 22 50 C8 21 77 08 22 50 D0 21 05 7F 22 50 D8 21 06 04 22 50 E0 21 70 80 22 50 E8 21 40 80 22 50 F0 21 60 60 22 50 F8 18 FE -
Estos son los villanos:
![]()
- Dibujo del tile 1:
| Linea | Valor 1 | Valor 2 |
|---|---|---|
| 1 | 23 | 0C |
| 2 | 01 | 48 |
| 3 | 00 | 49 |
| 4 | FF | F0 |
| 5 | 10 | E8 |
| 6 | 00 | C8 |
| 7 | 00 | 0C |
| 8 | 01 | 02 |
LD HL,#0060
LD H,#C0
LD (HL),#23
LD H,#C8
LD (HL),#01
LD H,#D0
LD (HL),#00
LD H,#D8
LD (HL),#FF
LD H,#E0
LD (HL),#10
LD H,#E8
LD (HL),#00
LD H,#F0
LD (HL),#00
LD H,#F8
LD (HL),#0
-
Código máquina:
21 60 00 26 C0 36 23 26 C8 36 01 26 D0 36 00 26 D8 36 FF 26 E0 36 10 26 E8 36 00 26 F0 36 00 26 F8 36 01 -
Código máquina:
23 26 C0 36 0C 26 C8 36 48 26 D0 36 49 26 D8 36 F0 26 E0 36 E8 26 E8 36 C0 26 F0 36 0C 26 F8 36 02 -
Diubjo malo 2:
| Linea | Valor 1 | Valor 2 |
|---|---|---|
| 1 | 23 | AE |
| 2 | 34 | E1 |
| 3 | 71 | F4 |
| 4 | 73 | F6 |
| 5 | 70 | F0 |
| 6 | 61 | BC |
| 7 | 30 | E0 |
| 8 | 06 | 03 |
-
Código máquina:
23 26 C0 36 23 26 C8 36 34 26 D0 36 71 26 D8 36 73 26 E0 36 70 26 E8 36 61 26 F0 36 30 26 F8 36 06 -
Código máquina:
23 26 C0 36 AE 26 C8 36 E1 26 D0 36 F4 26 D8 36 F6 26 E0 36 F0 26 E8 36 BC 26 F0 36 E0 26 F8 36 03 -
Diubjo malo 3:
| Linea | Valor 1 | Valor 2 |
|---|---|---|
| 1 | 80 | 80 |
| 2 | 50 | EC |
| 3 | F5 | D4 |
| 4 | 77 | EE |
| 5 | F5 | FB |
| 6 | 74 | F9 |
| 7 | FF | FF |
| 8 | EF | 3F |
-
Código máquina:
23 26 C0 36 80 26 C8 36 50 26 D0 36 F5 26 D8 36 77 26 E0 36 F5 26 E8 36 74 26 F0 36 FF 26 F8 36 EF -
Código máquina:
23 26 C0 36 80 26 C8 36 EC 26 D0 36 D4 26 D8 36 EE 26 E0 36 FB 26 E8 36 F9 26 F0 36 FF 26 F8 36 3F -
Borrar el último:
23 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 -
Código máquina de los 3 enemigos (Patrón):
21 60 00 26 C0 36 23 26 C8 36 01 26 D0 36 00 26 D8 36 FF 26 E0 36 10 26 E8 36 00 26 F0 36 00 26 F8 36 01 23 26 C0 36 0C 26 C8 36 48 26 D0 36 49 26 D8 36 F0 26 E0 36 E8 26 E8 36 C0 26 F0 36 0C 26 F8 36 02 23 26 C0 36 23 26 C8 36 34 26 D0 36 71 26 D8 36 73 26 E0 36 70 26 E8 36 61 26 F0 36 30 26 F8 36 06 23 26 C0 36 AE 26 C8 36 E1 26 D0 36 F4 26 D8 36 F6 26 E0 36 F0 26 E8 36 BC 26 F0 36 E0 26 F8 36 03 23 26 C0 36 80 26 C8 36 50 26 D0 36 F5 26 D8 36 77 26 E0 36 F5 26 E8 36 74 26 F0 36 FF 26 F8 36 EF 23 26 C0 36 80 26 C8 36 EC 26 D0 36 D4 26 D8 36 EE 26 E0 36 FB 26 E8 36 F9 26 F0 36 FF 26 F8 36 3F
LD HL,#0060
LD A,7
Enemigos
INC HL
DEC A
JR NZ,XX
-
Código máquina:
21 6F 00 3E 0726 C0 36 23 26 C8 36 01 26 D0 36 00 26 D8 36 FF 26 E0 36 10 26 E8 36 00 26 F0 36 00 26 F8 36 01 23 26 C0 36 0C 26 C8 36 48 26 D0 36 49 26 D8 36 F0 26 E0 36 E8 26 E8 36 C0 26 F0 36 0C 26 F8 36 02 23 26 C0 36 23 26 C8 36 34 26 D0 36 71 26 D8 36 73 26 E0 36 70 26 E8 36 61 26 F0 36 30 26 F8 36 06 23 26 C0 36 AE 26 C8 36 E1 26 D0 36 F4 26 D8 36 F6 26 E0 36 F0 26 E8 36 BC 26 F0 36 E0 26 F8 36 03 23 26 C0 36 80 26 C8 36 50 26 D0 36 F5 26 D8 36 77 26 E0 36 F5 26 E8 36 74 26 F0 36 FF 26 F8 36 EF 23 26 C0 36 80 26 C8 36 EC 26 D0 36 D4 26 D8 36 EE 26 E0 36 FB 26 E8 36 F9 26 F0 36 FF 26 F8 36 3F23 3D C2 05 40 -
Ahora lo reunificamos todo. Primero la parte del reto anterior:
21 00 00 3E 50 26 C0 36 F0 26 C8 36 5A 26 D0 36 A5 26 D8 36 1E 26 E0 36 0F 26 E8 36 0A 26 F0 36 05 26 F8 36 08 23 3D 20 DC 3E 50 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 3D 20 DC 06 08 21 A0 00 3E 09 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 26 C0 36 FF 26 C8 36 FF 26 D0 36 FF 26 D8 36 FF 23 05 20 D4 21 70 80 22 50 C0 21 D5 00 22 50 C8 21 77 08 22 50 D0 21 05 7F 22 50 D8 21 06 04 22 50 E0 21 70 80 22 50 E8 21 40 80 22 50 F0 21 60 60 22 50 F8 -
Esto está en la dirección 40AE:
21 6F 00 3E 07 26 C0 36 23 26 C8 36 01 26 D0 36 00 26 D8 36 FF 26 E0 36 10 26 E8 36 00 26 F0 36 00 26 F8 36 01 23 26 C0 36 0C 26 C8 36 48 26 D0 36 49 26 D8 36 F0 26 E0 36 E8 26 E8 36 C0 26 F0 36 0C 26 F8 36 02 23 26 C0 36 23 26 C8 36 34 26 D0 36 71 26 D8 36 73 26 E0 36 70 26 E8 36 61 26 F0 36 30 26 F8 36 06 23 26 C0 36 AE 26 C8 36 E1 26 D0 36 F4 26 D8 36 F6 26 E0 36 F0 26 E8 36 BC 26 F0 36 E0 26 F8 36 03 23 26 C0 36 80 26 C8 36 50 26 D0 36 F5 26 D8 36 77 26 E0 36 F5 26 E8 36 74 26 F0 36 FF 26 F8 36 EF 23 26 C0 36 80 26 C8 36 EC 26 D0 36 D4 26 D8 36 EE 26 E0 36 FB 26 E8 36 F9 26 F0 36 FF 26 F8 36 3F 23 3D C2 B3 40
La dirección donde se pinta el sprite con los enemigos es la dirección 40AE
Código final: 21 00 00 3E 50 26 C0 36 F0 26 C8 36 5A 26 D0 36 A5 26 D8 36 1E 26 E0 36 0F 26 E8 36 0A 26 F0 36 05 26 F8 36 08 23 3D 20 DC 3E 50 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 3D 20 DC 06 08 21 A0 00 3E 09 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 26 C0 36 FF 26 C8 36 FF 26 D0 36 FF 26 D8 36 FF 23 05 20 D4 21 70 80 22 50 C0 21 D5 00 22 50 C8 21 77 08 22 50 D0 21 05 7F 22 50 D8 21 06 04 22 50 E0 21 70 80 22 50 E8 21 40 80 22 50 F0 21 60 60 22 50 F8 21 6F 00 3E 07 26 C0 36 23 26 C8 36 01 26 D0 36 00 26 D8 36 FF 26 E0 36 10 26 E8 36 00 26 F0 36 00 26 F8 36 01 23 26 C0 36 0C 26 C8 36 48 26 D0 36 49 26 D8 36 F0 26 E0 36 E8 26 E8 36 C0 26 F0 36 0C 26 F8 36 02 23 26 C0 36 23 26 C8 36 34 26 D0 36 71 26 D8 36 73 26 E0 36 70 26 E8 36 61 26 F0 36 30 26 F8 36 06 23 26 C0 36 AE 26 C8 36 E1 26 D0 36 F4 26 D8 36 F6 26 E0 36 F0 26 E8 36 BC 26 F0 36 E0 26 F8 36 03 23 26 C0 36 80 26 C8 36 50 26 D0 36 F5 26 D8 36 77 26 E0 36 F5 26 E8 36 74 26 F0 36 FF 26 F8 36 EF 23 26 C0 36 80 26 C8 36 EC 26 D0 36 D4 26 D8 36 EE 26 E0 36 FB 26 E8 36 F9 26 F0 36 FF 26 F8 36 3F 23 3D C2 B3 40
- Este es el resultado:

- Descripción: Animación de los enemigos. De 4 en 4 píxeles. 0.5seg por fotograma
- Bonus: BillyJean
- Bonus: SuperAnimador
El algoritmo es este:
Pintar universo
LD D, #6F (Posicion inicial)
LD C,#03 (contador de animacion)
Siguiente_fotograma:
LD L,D
LD A,7
Dibujar:
Pintar sprite (posicion dada por L)
(El sprite debe pintar 00 al final)
INC HL
DEC A
JP NZ,Dibujar
Bucle de espera (con registro B)
DEC D
DEC C
JP NZ,siguiente_fotograma
JP #4000
-
Pintar universo:
21 00 00 3E 50 26 C0 36 F0 26 C8 36 5A 26 D0 36 A5 26 D8 36 1E 26 E0 36 0F 26 E8 36 0A 26 F0 36 05 26 F8 36 08 23 3D 20 DC 3E 50 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 3D 20 DC 06 08 21 A0 00 3E 09 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 26 C0 36 FF 26 C8 36 FF 26 D0 36 FF 26 D8 36 FF 23 05 20 D4 21 70 80 22 50 C0 21 D5 00 22 50 C8 21 77 08 22 50 D0 21 05 7F 22 50 D8 21 06 04 22 50 E0 21 70 80 22 50 E8 21 40 80 22 50 F0 21 60 60 22 50 F8 -
Inicialización:
16 6F 0E 1E -
Siguiente fotograma: Dir: 40B2:
6A 3E 07 -
Dibujar sprite:
26 C0 36 23 26 C8 36 01 26 D0 36 00 26 D8 36 FF 26 E0 36 10 26 E8 36 00 26 F0 36 00 26 F8 36 01 23 26 C0 36 0C 26 C8 36 48 26 D0 36 49 26 D8 36 F0 26 E0 36 E8 26 E8 36 C0 26 F0 36 0C 26 F8 36 02 23 26 C0 36 23 26 C8 36 34 26 D0 36 71 26 D8 36 73 26 E0 36 70 26 E8 36 61 26 F0 36 30 26 F8 36 06 23 26 C0 36 AE 26 C8 36 E1 26 D0 36 F4 26 D8 36 F6 26 E0 36 F0 26 E8 36 BC 26 F0 36 E0 26 F8 36 03 23 26 C0 36 80 26 C8 36 50 26 D0 36 F5 26 D8 36 77 26 E0 36 F5 26 E8 36 74 26 F0 36 FF 26 F8 36 EF 23 26 C0 36 80 26 C8 36 EC 26 D0 36 D4 26 D8 36 EE 26 E0 36 FB 26 E8 36 F9 26 F0 36 FF 26 F8 36 3F 26 C0 -
Repeticion de enemigos:
23 3D C2 B5 40 -
Borrar ultimo sprite:
36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 -
Bucle de espera:
06 80 76 05 20 FC
LD B,#80
halt
DEC B
JR nz,FC
-
Repetir siguiente fotograma:
15 0D C2 B2 40
DEC D
DEC C
JP NZ,siguiente_fotograma
-
Fin: Volver a comenzar:
C3 00 40
JP #4000
-
Código máquina final:
21 00 00 3E 50 26 C0 36 F0 26 C8 36 5A 26 D0 36 A5 26 D8 36 1E 26 E0 36 0F 26 E8 36 0A 26 F0 36 05 26 F8 36 08 23 3D 20 DC 3E 50 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 3D 20 DC 06 08 21 A0 00 3E 09 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 26 C0 36 FF 26 C8 36 FF 26 D0 36 FF 26 D8 36 FF 23 05 20 D4 21 70 80 22 50 C0 21 D5 00 22 50 C8 21 77 08 22 50 D0 21 05 7F 22 50 D8 21 06 04 22 50 E0 21 70 80 22 50 E8 21 40 80 22 50 F0 21 60 60 22 50 F8 16 6F 0E 1E 6A 3E 07 26 C0 36 23 26 C8 36 01 26 D0 36 00 26 D8 36 FF 26 E0 36 10 26 E8 36 00 26 F0 36 00 26 F8 36 01 23 26 C0 36 0C 26 C8 36 48 26 D0 36 49 26 D8 36 F0 26 E0 36 E8 26 E8 36 C0 26 F0 36 0C 26 F8 36 02 23 26 C0 36 23 26 C8 36 34 26 D0 36 71 26 D8 36 73 26 E0 36 70 26 E8 36 61 26 F0 36 30 26 F8 36 06 23 26 C0 36 AE 26 C8 36 E1 26 D0 36 F4 26 D8 36 F6 26 E0 36 F0 26 E8 36 BC 26 F0 36 E0 26 F8 36 03 23 26 C0 36 80 26 C8 36 50 26 D0 36 F5 26 D8 36 77 26 E0 36 F5 26 E8 36 74 26 F0 36 FF 26 F8 36 EF 23 26 C0 36 80 26 C8 36 EC 26 D0 36 D4 26 D8 36 EE 26 E0 36 FB 26 E8 36 F9 26 F0 36 FF 26 F8 36 3F 23 26 C0 00 3D C2 B5 40 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 06 80 76 05 20 FC 15 0D C2 B2 40 C3 00 40 -
Este es el resultado:

Estos son los sprites:
![]()
- Algoritmo:
- Dibujar universo
- Animación de la bala
- Pinta bala
- Pausa
- Borrar bala
- Incrementar posicion (HL)
- Repetir las veces necesarias hasta que la bala alcance al enemigo
- Animación de la explosión
- Pintar fotograma 1
- wait
- ...
- Pintar fotograma 6
- wait
- Incrementar posicion (HL)
- Repetir tantas veces como enemigos
- Pintar personaje emocionado
- wait
- Pintar personaje inicial
- Terminar
Implementación de las diferentes partes:
-
Pintar universo:
21 00 00 3E 50 26 C0 36 F0 26 C8 36 5A 26 D0 36 A5 26 D8 36 1E 26 E0 36 0F 26 E8 36 0A 26 F0 36 05 26 F8 36 08 23 3D 20 DC 3E 50 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 3D 20 DC 06 08 21 A0 00 3E 09 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 26 C0 36 FF 26 C8 36 FF 26 D0 36 FF 26 D8 36 FF 23 05 20 D4 21 70 80 22 50 C0 21 D5 00 22 50 C8 21 77 08 22 50 D0 21 05 7F 22 50 D8 21 06 04 22 50 E0 21 70 80 22 50 E8 21 40 80 22 50 F0 21 60 60 22 50 F8 21 6F 00 3E 07 26 C0 36 23 26 C8 36 01 26 D0 36 00 26 D8 36 FF 26 E0 36 10 26 E8 36 00 26 F0 36 00 26 F8 36 01 23 26 C0 36 0C 26 C8 36 48 26 D0 36 49 26 D8 36 F0 26 E0 36 E8 26 E8 36 C0 26 F0 36 0C 26 F8 36 02 23 26 C0 36 23 26 C8 36 34 26 D0 36 71 26 D8 36 73 26 E0 36 70 26 E8 36 61 26 F0 36 30 26 F8 36 06 23 26 C0 36 AE 26 C8 36 E1 26 D0 36 F4 26 D8 36 F6 26 E0 36 F0 26 E8 36 BC 26 F0 36 E0 26 F8 36 03 23 26 C0 36 80 26 C8 36 50 26 D0 36 F5 26 D8 36 77 26 E0 36 F5 26 E8 36 74 26 F0 36 FF 26 F8 36 EF 23 26 C0 36 80 26 C8 36 EC 26 D0 36 D4 26 D8 36 EE 26 E0 36 FB 26 E8 36 F9 26 F0 36 FF 26 F8 36 3F 23 3D C2 B3 40 -
Animación de la Bala:
0E 1D 21 52 D8 3E FF 77 06 10 76 05 20 FC 3E 00 77 23 0D 20 F0
LD C,#1F
LD HL,#D852
;-- Pintar bala
LD A,#FF
LD (HL),A
;-- Pausa
LD B,#10
HALT
DEC B
JR nz,#FC
;-- Borrar bala
LD A,#00
LD (HL),A
;-- Repetir
INC HL
DEC C
JR nz,#F0
-
Animación de la explosión
-
Fotogramas:
| Linea | F1 | F2 | F3 | F4 | F5 | F6 |
|---|---|---|---|---|---|---|
| 1 | 00 | 00 | 00 | 00 | 00 | 00 |
| 2 | 00 | 00 | 00 | 00 | 00 | 00 |
| 3 | 00 | 99 | 98 | 81 | 08 | 00 |
| 4 | 66 | 64 | 42 | 04 | 00 | 00 |
| 5 | 66 | 62 | 24 | 02 | 00 | 00 |
| 6 | 00 | 99 | 91 | 14 | 01 | 00 |
| 7 | 00 | 00 | 00 | 00 | 00 | 00 |
| 8 | 00 | 00 | 00 | 00 | 00 | 00 |
- Código máquina. Fotograma 1:
3E 15 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 66 26 E0 36 66 26 E8 36 00 26 F0 36 00 26 F8 36 00 06 10 76 05 20 FC
LD A,#15 ;-- Repeticiones de las explosiones
LD H,#C0 (Direccion 0x4194)
LD (HL),#00
LD H,#C8
LD (HL),#00
LD H,#D0
LD (HL),#00
LD H,#D8
LD (HL),#00
LD H,#E0
LD (HL),#00
LD H,#E8
LD (HL),#00
LD H,#F0
LD (HL),#00
LD H,#F8
LD (HL),#00
INC HL
LD H,#C0
LD (HL),#00
LD H,#C8
LD (HL),#00
LD H,#D0
LD (HL),#00
LD H,#D8
LD (HL),#66
LD H,#E0
LD (HL),#66
LD H,#E8
LD (HL),#00
LD H,#F0
LD (HL),#00
LD H,#F8
LD (HL),#00
;-- Pausa
LD B,#20
HALT
DEC B
JR nz,#FC
-
Código máquina. Fotograma 2:
26 C0 36 00 26 C8 36 00 26 D0 36 99 26 D8 36 64 26 E0 36 62 26 E8 36 99 26 F0 36 00 26 F8 36 00 06 10 76 05 20 FC -
Fotograma 3:
26 C0 36 00 26 C8 36 00 26 D0 36 98 26 D8 36 42 26 E0 36 24 26 E8 36 91 26 F0 36 00 26 F8 36 00 06 10 76 05 20 FC -
Fotograma 4:
26 C0 36 00 26 C8 36 00 26 D0 36 81 26 D8 36 04 26 E0 36 02 26 E8 36 14 26 F0 36 00 26 F8 36 00 06 10 76 05 20 FC -
Fotograma 5:
26 C0 36 00 26 C8 36 00 26 D0 36 08 26 D8 36 00 26 E0 36 00 26 E8 36 01 26 F0 36 00 26 F8 36 00 06 10 76 05 20 FC -
Fotograma 6:
26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 06 10 76 05 20 FC -
Repeticion:
23 3D C2 94 41
INC HL
DEC A
JP NZ,#xxxx
- Pintar personaje en victoria: ``
Sprintes:
| L | V1 | V2 |
|---|---|---|
| 1 | 30 | E0 |
| 2 | E8 | B9 |
| 3 | 3B | EF |
| 4 | 1F | 47 |
| 5 | 03 | 0E |
| 6 | 30 | E0 |
| 7 | 30 | 60 |
| 8 | 30 | 60 |
-
Dibujo personaje victoria:
21 30 E0 22 50 C0 21 E8 B9 22 50 C8 21 3B EF 22 50 D0 21 1F 47 22 50 D8 21 03 0E 22 50 E0 21 03 0E 22 50 E8 21 30 60 22 50 F0 21 30 60 22 50 F8 06 80 76 05 20 FC
LD HL, #E030
LD (#C050),HL
LD HL, #B9E8
LD (#C850),HL
LD HL, #EF3B
LD (#D050),HL
LD HL, #471F
LD (#D850),HL
LD HL, #0E03
LD (#E050),HL
LD HL, #0E03
LD (#E850),HL
LD HL, #6030
LD (#F050),HL
LD HL, #6030
LD (#F850),HL
;-- Pausa
LD B,#80
HALT
DEC B
JR nz,#FC
JP #4000
-
Programa prueba:
21 00 00 3E 50 26 C0 36 F0 26 C8 36 5A 26 D0 36 A5 26 D8 36 1E 26 E0 36 0F 26 E8 36 0A 26 F0 36 05 26 F8 36 08 23 3D 20 DC 3E 50 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 3D 20 DC 06 08 21 A0 00 3E 09 26 C0 36 FF 26 C8 36 A5 26 D0 36 5A 26 D8 36 FF 23 3D 20 EC 26 C0 36 FF 26 C8 36 FF 26 D0 36 FF 26 D8 36 FF 23 05 20 D4 21 70 80 22 50 C0 21 D5 00 22 50 C8 21 77 08 22 50 D0 21 05 7F 22 50 D8 21 06 04 22 50 E0 21 70 80 22 50 E8 21 40 80 22 50 F0 21 60 60 22 50 F8 21 6F 00 3E 07 26 C0 36 23 26 C8 36 01 26 D0 36 00 26 D8 36 FF 26 E0 36 10 26 E8 36 00 26 F0 36 00 26 F8 36 01 23 26 C0 36 0C 26 C8 36 48 26 D0 36 49 26 D8 36 F0 26 E0 36 E8 26 E8 36 C0 26 F0 36 0C 26 F8 36 02 23 26 C0 36 23 26 C8 36 34 26 D0 36 71 26 D8 36 73 26 E0 36 70 26 E8 36 61 26 F0 36 30 26 F8 36 06 23 26 C0 36 AE 26 C8 36 E1 26 D0 36 F4 26 D8 36 F6 26 E0 36 F0 26 E8 36 BC 26 F0 36 E0 26 F8 36 03 23 26 C0 36 80 26 C8 36 50 26 D0 36 F5 26 D8 36 77 26 E0 36 F5 26 E8 36 74 26 F0 36 FF 26 F8 36 EF 23 26 C0 36 80 26 C8 36 EC 26 D0 36 D4 26 D8 36 EE 26 E0 36 FB 26 E8 36 F9 26 F0 36 FF 26 F8 36 3F 23 3D C2 B3 40 0E 1D 21 52 D8 3E FF 77 06 10 76 05 20 FC 3E 00 77 23 0D 20 F0 3E 15 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 23 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 66 26 E0 36 66 26 E8 36 00 26 F0 36 00 26 F8 36 00 06 10 76 05 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 99 26 D8 36 64 26 E0 36 62 26 E8 36 99 26 F0 36 00 26 F8 36 00 06 10 76 05 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 98 26 D8 36 42 26 E0 36 24 26 E8 36 91 26 F0 36 00 26 F8 36 00 06 10 76 05 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 81 26 D8 36 04 26 E0 36 02 26 E8 36 14 26 F0 36 00 26 F8 36 00 06 10 76 05 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 08 26 D8 36 00 26 E0 36 00 26 E8 36 01 26 F0 36 00 26 F8 36 00 06 10 76 05 20 FC 26 C0 36 00 26 C8 36 00 26 D0 36 00 26 D8 36 00 26 E0 36 00 26 E8 36 00 26 F0 36 00 26 F8 36 00 06 10 76 05 20 FC 23 3D C2 94 41 21 30 E0 22 50 C0 21 E8 B9 22 50 C8 21 3B EF 22 50 D0 21 1F 47 22 50 D8 21 03 0E 22 50 E0 21 03 0E 22 50 E8 21 30 60 22 50 F0 21 30 60 22 50 F8 06 80 76 05 20 FC C3 00 40 -
Resultado final:

| Instrucción | Código máquina | Tamaño | Descripción |
|---|---|---|---|
| LD A, ## | 3E ## | 2 bytes | Cargar un valor en el registro A |
| LD B, ## | 06 ## | 2 bytes | Cargar un valor en el registro B |
| LD D, ## | 16 ## | 2 bytes | Cargar un valor en el registro D |
| LD C, ## | 0E | 2 bytes | Cargar un valor en el registro C |
| LD L,D | 6A | 1 byte | L=D |
| LD (##%%),A | 32 %% ## | 3 bytes | Almacenar A en la posición de memoria indicada |
| LD HL, ##%% | 21 %% ## | 3 bytes | Cargar un valor en el registro HL |
| LD (##%%),HL | 22 %% ## | 3 bytes | Almacenar HL en las posiciones #### y #### + 1 |
| LD H,** | 26 ** | 2 bytes | Almacener un valor en H |
| LD (HL),** | 36 ** | 2 bytes | Almacenar un valor en la dirección indicada por HL |
| LD (HL),A | 77 | 1 byte | Almacenar A en la direccion indicada por HL |
| INC HL | 23 | 1 byte | Incrementar el registro HL |
| DEC A | 3D | 1 byte | Decrementar el acumulador A |
| DEC H | 25 | 1 byte | Decrementar el registro H |
| DEC L | 2D | 1 byte | Decrementar el registro L |
| DEC D | 15 | 1 byte | Decrementar el registro D |
| DEC E | 1D | 1 byte | Decrementar el registro E |
| DEC B | 05 | 1 byte | Decrementar el registro B |
| DEC C | 0D | 1 byte | Decrementar el registro C |
| JR ## | 18 FE | 2 bytes | Bucle infinito |
| JR nz,** | 20 ** | 2 bytes | Saltar si no cero |
| JR nc,** | 30 ** | 2 bytes | Saltar si acarreo |
| JR z, ** | 28 ** | 2 bytes | Saltar si cero |
| JR c, ** | 38 ** | 2 bytes | Saltar si acarreo |
| HALT | 76 | 1 byte | Parar el procesador hasta que llegue interrupción |
| JP ##%% | C3 %% ## | 3 bytes | Saltar a la dirección ## %% |
| JP nz, ##%% | C2 %% ## | 3 bytes | Saltar a la dirección ## %% si no cero |
| JP nc, ##%% | D2 %% ## | 3 bytes | Saltar a la dirección ## %% si no acarreo |
| JP z, ##%% | CA %% ## | 3 bytes | Saltar a la dirección ## %% si cero |
| JP c, ##%% | DA %% ## | 3 bytes | Saltar a la dirección ## %% si hay acarreo |
| JP p, ##%% | F2 %% ## | 3 bytes | Saltar a la dirección ## %% si resultado positivo |
| JP m, ##%% | FA %% ## | 3 bytes | Saltar a la dirección ## %% si resultado negativo |








