Merge pull request 'Correciones de los días 2, 3 y 4' (#2) from jota/compudanzas:tutorial_de_uxn_días_2_a_4 into main

Reviewed-on: #2
This commit is contained in:
sejo 2022-01-07 23:41:09 +00:00
commit 98fd37df09
3 changed files with 25 additions and 28 deletions

View File

@ -44,7 +44,7 @@ veamos algunos ejemplos!
## ejemplo del modo corto
###LIT2
### LIT2
en primer lugar, recapitulemos. el siguiente código empujará el número 02 hacia abajo en la pila, luego empujará el número 30 (hexadecimal) hacia abajo en la pila, y finalmente los sumará, dejando el número 32 en la pila:
```
@ -283,7 +283,7 @@ las 8 posibles combinaciones del byte 'pixel' que tenemos para dibujar un pixel
* 42: dibujar el píxel con el color 2 en la capa del primer plano
* 43: dibujar el píxel con el color 3 en la capa del primer plano
##hola píxel
## hola píxel
el siguiente código dibujará un píxel con el color 1 en la capa del primer plano, en las coordenadas (8,8):
@ -481,7 +481,7 @@ cada byte corresponde a una fila del tile, y cada bit de una fila corresponde al
por ejemplo, podríamos diseñar un azulejo que corresponda al contorno de un cuadrado de 8x8, activando o desactivando sus píxeles en consecuencia.
```el contorno de un cuadrado marcado con 1s, y su interior marcado con 0s
``` el contorno de un cuadrado marcado con 1s, y su interior marcado con 0s
11111111
10000001
10000001
@ -494,12 +494,11 @@ por ejemplo, podríamos diseñar un azulejo que corresponda al contorno de un cu
como cada una de las filas es un byte, podemos codificarlas como números hexadecimales en lugar de binarios.
vale la pena notar (o recordar) que los grupos de cuatro bits corresponden a un nibble, y cada combinación posible en un nibble puede ser codificada como un dígito hexadecimal.
=> ./hexadecimal.gmi {hexadecimal}
vale la pena notar (o recordar) que los grupos de cuatro bits corresponden a un nibble, y cada combinación posible en un nibble puede ser codificada como un dígito {hexadecimal}.
basándonos en eso, podríamos codificar nuestro cuadrado de la siguiente manera:
`el contorno de un cuadrado marcado con 1s, y sus interiores marcados con 0s, y su equivalente en hexadecimal
``` el contorno de un cuadrado marcado con 1s, y sus interiores marcados con 0s, y su equivalente en hexadecimal
11111111: ff
10000001: 81
10000001: 81
@ -598,7 +597,7 @@ notemos que un 0 en el nibble inferior borrará el tile.
además, 5, 'a' y 'f' en el nibble bajo dibujarán los píxeles que están "encendidos" pero dejarán los que están "apagados" como están: esto le permitirá dibujar sobre algo que ha sido dibujado antes, sin borrarlo completamente.
##hola sprite
## hola sprite
hagámoslo! El siguiente programa dibujará nuestro sprite una vez:
@ -698,8 +697,7 @@ observemos que en este caso, tenemos un par de macros 8ADD-X y 8ADD-Y para incre
como el sprite cuadrado es simétrico, no podemos ver el efecto de rotarlo.
aquí están los sprites de la roca y del personaje de darena:
=> ./darena.gmi darena
aquí están los sprites de la roca y del personaje de {darena}:
```
@piedra 3c4e 9ffd f962 3c00
@ -722,7 +720,7 @@ un solo tile de 2bpp de 8x8 píxeles necesita 16 bytes para ser codificada. esto
para demostrar esta codificación, vamos a remezclar nuestro cuadrado de 8x8, asignando uno de los cuatro estados posibles (0, 1, 2, 3) a cada uno de los píxeles:
```un cuadrado de 8x8 construido con los dígitos 0 y 1 en el borde, y 2 y 3 en el interior
``` un cuadrado de 8x8 construido con los dígitos 0 y 1 en el borde, y 2 y 3 en el interior
00000001
03333311
03333211
@ -737,7 +735,7 @@ podemos pensar en cada uno de estos dígitos como un par de bits: 0 es 00, 1 es
de esta manera, podríamos pensar en nuestro sprite de la siguiente manera:
```un cuadrado de 8x8 construido con un par de bits entre paréntesis, correspondientes a la representación binaria de cada uno de los estados
``` un cuadrado de 8x8 construido con un par de bits entre paréntesis, correspondientes a la representación binaria de cada uno de los estados
(00) (00) (00) (00) (00) (00) (00) (01)
(00) (11) (11) (11) (11) (11) (01) (01)
(00) (11) (11) (11) (11) (10) (01) (01)
@ -765,7 +763,7 @@ separamos nuestro tile en dos cuadrados diferentes, uno para los bits altos y ot
ahora podemos pensar en cada uno de estos cuadrados como sprites de 1bpp, y codificarlos en hexadecimal como lo hicimos antes:
los dos cuadrados 8x8 anteriores con su correspondiente codificación hexadecimal
``` los dos cuadrados 8x8 anteriores con su correspondiente codificación hexadecimal
00000000: 00 00000001: 01
01111100: 7c 01111111: 7f
01111100: 7c 01111011: 7b
@ -1080,6 +1078,4 @@ sin embargo, te invito a que te tomes un descanso, y a que sigas explorando el d
# apoyo
si te ha gustado este tutorial y te ha resultado útil, considera compartirlo y darle tu apoyo :)
=> ./apoyo.gmi {apoyo}
si te ha gustado este tutorial y te ha resultado útil, considera compartirlo y darle tu {apoyo} :)

View File

@ -1,6 +1,7 @@
# tutorial de uxn: día 3, saltos condicionales y el teclado/controlador
¡esta es la tercera sección del tutorial uxn!
¡esta es la tercera sección del tutorial uxn!
=> ./tutorial_de_uxn.gmi {tutorial de uxn}
aquí introducimos el uso del dispositivo controlador en la computadora uxn varvara: esto nos permitirá añadir interactividad a nuestros programas, y empezar a discutir el flujo de control en uxntal.
@ -768,6 +769,4 @@ en el tutorial uxn día 4 cubrimos el uso del vector de pantalla para crear anim
# apoyo
si te ha gustado este tutorial y te ha resultado útil, considera compartirlo y darle tu apoyo :)
=> ./apoyo.gmi {apoyo}
si te ha gustado este tutorial y te ha resultado útil, considera compartirlo y darle tu {apoyo} :)

View File

@ -1,6 +1,7 @@
# tutorial uxn: día 4, variables y bucle de animación
¡esta es la cuarta sección del tutorial uxn!
=> ./tutorial_de_uxn {tutorial de uxn}
aquí hablamos del bucle de animación del ordenador varvara, a través de su vector de dispositivo de pantalla.
@ -16,6 +17,7 @@ discutimos el dispositivo de pantalla de varvara en el día 2, pero nos saltamos
```
ahora que ya tenemos el concepto de vectores de dispositivos en el tutorial de uxn día 3, ¡vamos a entrar de lleno en cómo usar el de la pantalla!
=> ./tutorial_de_uxn_día_3.gmi {tutorial de uxn día 3}
## asignación
@ -295,7 +297,7 @@ de forma similar a las variables de la página cero, para direccionar estas vari
sin embargo, como estas direcciones se dan como offsets relativos y con signo, sólo se pueden alcanzar si están dentro de los 256 bytes que rodean a la instrucción que las carga o almacena.
instrucciones ###: LDR, STR
### instrucciones: LDR, STR
las instrucciones para trabajar de esta manera son:
@ -490,7 +492,8 @@ el siguiente programa nos permite controlar la posición horizontal de nuestro c
=> ./img/screencap_uxn-moving-square.gif animado que muestra un cuadrado moviéndose horizontalmente en la pantalla, aparentemente controlado por un humano.
¡nótese las similitudes entre el programa anterior, y lo que cubrimos en el tutorial de uxn del día 3!
=> TUTORIAL UXN DÍA 3
=> ./tutorial_de_uxn_día_3.gmi {tutorial de uxn día 3}
```
( hola-sprite-enmovimiento.tal )
@ -710,8 +713,9 @@ podríamos definir esta operación de módulo rápido como una macro para hacer
%8MOD { #07 AND } ( byte -- byte%8 )
```
si esto no te ha quedado muy claro, te recomiendo que vuelvas a mirar el tutorial de uxn del día 3, en particular la discusión de las operaciones lógicas.
=> TUTORIAL UXN DÍA 3
si esto no te ha quedado muy claro, te recomiendo que vuelvas a mirar el tutorial de uxn del día 3, en particular la discusión de las operaciones lógicas.
=> ./tutorial_de_uxn_día_3.gmi {tutorial de uxn día 3}
## aritmética de punteros
@ -921,7 +925,6 @@ podemos utilizar estas macros para dividir la frecuencia en nuestro código:
.Pantalla/direc DEO2 ( establecer la dirección calculada )
```
=> ./img/screencap_uxn-animation-quarterspeed.gif animación de una franja diagonal dentro de un cuadrado pixelado. la diagonal se mueve desde abajo a la derecha hasta arriba a la izquierda. se mueve más lentamente que la anterior.
ah, ¡mucho mejor!
@ -954,7 +957,8 @@ en modo corto, estas instrucciones cargan o almacenan cortos desde o hacia la me
# día 5
en el tutorial de uxn día 5 introducimos el dispositivo de ratón varvara para explorar más interacciones posibles, y cubrimos los elementos restantes de uxntal y uxn: la pila de retorno, el modo de retorno y el modo de mantenimiento.
=> TUTORIAL UXN DÍA 5
=> ./tutorial_de_uxn_día_5.gmi {tutorial de uxn día 5}
¡también discutimos posibles estructuras para crear bucles y programas más complejos utilizando estos recursos!
@ -964,6 +968,4 @@ después, ¡sigue explorando y comparte tus descubrimientos!
# apoyo
si te ha gustado este tutorial y te ha resultado útil, considera compartirlo y darle tu apoyo :)
=> ENLACE DE APOYO
si te ha gustado este tutorial y te ha resultado útil, considera compartirlo y darle tu {apoyo} :)