From 0925b14c2e10827ce1381861baa33d68a8b6a158 Mon Sep 17 00:00:00 2001 From: ronaldo Date: Sat, 30 Jul 2016 13:07:51 +0200 Subject: [PATCH] New versions the 2 first examples * Also added new example 03 --- examples/1.01-pixelesbasicos.mc | 11 ++- examples/1.02-dibujopixeles8x4.mc | 11 ++- examples/1.03-spritedata.mc | 110 ++++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+), 5 deletions(-) create mode 100644 examples/1.03-spritedata.mc diff --git a/examples/1.01-pixelesbasicos.mc b/examples/1.01-pixelesbasicos.mc index ba14994..0da7fb0 100644 --- a/examples/1.01-pixelesbasicos.mc +++ b/examples/1.01-pixelesbasicos.mc @@ -6,7 +6,7 @@ ;; ;; CÓDIGO MAQUINA ;; -;; 3E 88 32 00 C0 18 FE +;; 4000 - 3E 88 32 00 C0 18 FE ;; ;; ;; @@ -59,7 +59,14 @@ ;; 2. Ahora los 4 píxeles de color amarillo y cian ;; 3. Pinta los 4 primeros píxeles uno de cada color ;; (fondo, amarillo, cian y rojo) +;; 4. Amplía el programa para que pinte los 8 primeros píxeles +;; (4 rojos y 4 amarillos) ;; +;; RETOS CREATIVOS +;; +;; 1. Amplía el programa para que pinte los 16 primeros píxeles +;; formando una bandera +;; ;; ;; ;; EXPLICACIONES EN ESTE VÍDEO @@ -75,7 +82,7 @@ ;; * La instrucción de salto relativo JR ;; * Números negativos: complemento a 2 ;; * La memoria de vídeo: Funcionamiento -;; * La memoria de vídeo: Codificación de los píxeles +;; * La memoria de vídeo: Codificación de los píxeles (modo 1) ;; * Direcciones de memoria: Little endian y Big Endian ;; ;;=================================================================================== \ No newline at end of file diff --git a/examples/1.02-dibujopixeles8x4.mc b/examples/1.02-dibujopixeles8x4.mc index c3c75fe..f8dba1b 100644 --- a/examples/1.02-dibujopixeles8x4.mc +++ b/examples/1.02-dibujopixeles8x4.mc @@ -6,8 +6,8 @@ ;; ;; CÓDIGO MAQUINA ;; -;; 21 F0 F0 22 00 C0 21 0F 0F 22 00 C8 21 00 00 22 -;; 00 D0 21 FF FF 22 00 D8 18 FE +;; 4000 - 21 F0 F0 22 00 C0 21 0F 0F 22 00 C8 21 00 00 22 +;; 4010 - 00 D0 21 FF FF 22 00 D8 18 FE ;; ;; ;; @@ -80,12 +80,17 @@ ;; 3. Dibuja una reja vertical de color rojo ;; ;; -;; RETROS CREATIVOS +;; RETOS CREATIVOS ;; ;; 1. Dibuja una cara y compártela ;; 2. Haz un dibujo original y compártelo ;; ;; +;; RETOS AVANZADOS +;; +;; 1. Amplía el programa para que el dibujo sea de 16x16 píxeles +;; y aparezca en el centro de la pantalla. +;; ;; ;; EXPLICACIONES EN ESTE VÍDEO ;; diff --git a/examples/1.03-spritedata.mc b/examples/1.03-spritedata.mc new file mode 100644 index 0000000..e1f3197 --- /dev/null +++ b/examples/1.03-spritedata.mc @@ -0,0 +1,110 @@ +;;=================================================================================== +;; EJEMPLO +;; +;; Dibujar 8 píxeles en una posición seleccionable de la memoria +;; +;; +;; CÓDIGO MAQUINA +;; +;; 4000 - 2A 20 40 3A 22 40 77 23 77 18 FE +;; 4020 - 20 C0 CA +;; +;; ### EJERCICIO 1: +;; +;; 1 - Abrir Winape +;; 2 - [F7] Abrir el depurador, analizador de memoria +;; 3 - Ampliar la zona de volcado de memoria +;; 4 - Buscar la dirección &4000 +;; 5 - Escribir código máquina en 4000 y 4020 +;; 6 - Modificar el registro PC=4000 +;; 7 - Cerrar depurador y observar ejecución +;; +;; Resultado: Pinta 8 píxeles de colores rojo, amarillo, azul y fondo +;; en la mitad de la primera línea de la pantalla +;; +;; * Observar que CA 11001010 en binario +;; * Recordar el funcionamiento de los colores +;; +;; +;; ### EJERCICIO 2: +;; +;; Trazar paso a paso el ejercicio 1 +;; +;; 1 - Repetir pasos 1 al 6 del ejercicio 1 +;; 2 - Buscar la dirección &4000 en la zona de desensamblado +;; 3 - [F8] Ejecutar la primera instrucción (2A 00 40 LD HL, (4020)) +;; 4 - Observar que el registro HL vale ahora &C020 +;; 5 - [F8] Ejecutar la segunda instrucción (3A 02 40 LD A, (4022)) +;; 6 - Observar que el registro A vale ahora &CA +;; 7 - Buscar la dirección &C020 en la zona de volcado de memoria +;; 8 - [F8] Ejecutar la tercera instrucción (77 LD (HL), A) +;; 9 - Observar que la dirección de memoria &C020 (HL) +;; ahora contine &CA (A) +;; 10 - [F8] Ejecutar la cuarta instrucción (23 INC HL) +;; 11 - Observar que HL ahora contiene &C021 (siguiente posición) +;; 12 - [F8] Ejecutar la cuarta instrucción (77 LD (HL), A) +;; 13 - Observar que la dirección de memoria &C021 (HL) +;; ahora contine &CA (A) +;; +;; ### EJERCICIO 3: +;; +;; 1 - Cambiar los bytes en &4020 (20 C0 CA) por (20 C8 F0) +;; 2 - Modificar el registro PC=4000 +;; 3 - Cerrar el depurador y observar el cambio +;; +;; * Observar que F0 11110000 en binario +;; * Observar que CA 11001010 en binario +;; * Recordar el funcionamiento de los colores +;; +;; Resultado: Se pintan de amarillo los 4 píxeles que están justo +;; debajo de los píxeles dibujados antes +;; +;; +;; ### EJERCICIO 4: +;; +;; 1 - Repetir el ejercicio 3 pero cambiando los bytes por: +;; * 20 D0 0F +;; * 20 D8 CC +;; * 20 E0 FF +;; * 20 E8 AA +;; +;; Resultado: Aparece un dibujo de 6x4 píxeles con distintos colores +;; +;; +;; +;; RETOS +;; +;; 1. Consigue que los 8 píxeles se dibujen al final de la primera +;; fila de la pantalla +;; 2. Amplía el programa para que en lugar de 8 píxeles dibuje 16 +;; 3. Consigue que los 16 píxeles se dibujen al principio de la +;; última fila de la pantalla +;; +;; +;; RETOS CREATIVOS +;; +;; 1. Siguiendo las instrucciones del ejercicio 4, consigue +;; dibujar la inicial de tu nombre en pantalla en &C370 +;; +;; +;; RETOS AVANZADOS +;; +;; 1. Amplía el programa para que dibuje la inicial de tu nombre +;; en una sola ejecución, en la posición &C370 +;; +;; +;; EXPLICACIONES EN ESTE VÍDEO +;; +;; * Abrir WinAPE, introducir código y ejecutar +;; * Depurar código paso a paso (instrucción por instrucción) +;; * Registro HL e instruccion LD +;; * Instrucciones de incremento INC +;; * Acceso a memoria por posición (punteros básicos) +;; +;; EXPLICACIONES EN OTROS VÍDEOS +;; +;; * La memoria de vídeo: Disposición +;; * Separación entre código y datos +;; * Sprites en videojuegos +;; +;;=================================================================================== \ No newline at end of file