forked from sejo/compudanzas
Merge branch 'main' of tildegit.org:sejo/compudanzas
This commit is contained in:
commit
3c42655a6f
|
@ -44,7 +44,7 @@ veamos algunos ejemplos!
|
||||||
|
|
||||||
## ejemplo del modo corto
|
## 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:
|
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
|
* 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
|
* 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):
|
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.
|
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
|
11111111
|
||||||
10000001
|
10000001
|
||||||
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.
|
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.
|
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}
|
|
||||||
|
|
||||||
basándonos en eso, podríamos codificar nuestro cuadrado de la siguiente manera:
|
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
|
11111111: ff
|
||||||
10000001: 81
|
10000001: 81
|
||||||
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.
|
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:
|
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.
|
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:
|
aquí están los sprites de la roca y del personaje de {darena}:
|
||||||
=> ./darena.gmi darena
|
|
||||||
|
|
||||||
```
|
```
|
||||||
@piedra 3c4e 9ffd f962 3c00
|
@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:
|
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
|
00000001
|
||||||
03333311
|
03333311
|
||||||
03333211
|
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:
|
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) (00) (00) (00) (00) (00) (00) (01)
|
||||||
(00) (11) (11) (11) (11) (11) (01) (01)
|
(00) (11) (11) (11) (11) (11) (01) (01)
|
||||||
(00) (11) (11) (11) (11) (10) (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:
|
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
|
00000000: 00 00000001: 01
|
||||||
01111100: 7c 01111111: 7f
|
01111100: 7c 01111111: 7f
|
||||||
01111100: 7c 01111011: 7b
|
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
|
# apoyo
|
||||||
|
|
||||||
si te ha gustado este tutorial y te ha resultado útil, considera compartirlo y darle tu apoyo :)
|
si te ha gustado este tutorial y te ha resultado útil, considera compartirlo y darle tu {apoyo} :)
|
||||||
|
|
||||||
=> ./apoyo.gmi {apoyo}
|
|
|
@ -1,6 +1,7 @@
|
||||||
# tutorial de uxn: día 3, saltos condicionales y el teclado/controlador
|
# 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}
|
=> ./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.
|
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
|
# apoyo
|
||||||
|
|
||||||
si te ha gustado este tutorial y te ha resultado útil, considera compartirlo y darle tu apoyo :)
|
si te ha gustado este tutorial y te ha resultado útil, considera compartirlo y darle tu {apoyo} :)
|
||||||
|
|
||||||
=> ./apoyo.gmi {apoyo}
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# tutorial uxn: día 4, variables y bucle de animación
|
# tutorial uxn: día 4, variables y bucle de animación
|
||||||
|
|
||||||
¡esta es la cuarta sección del tutorial uxn!
|
¡esta es la cuarta sección del tutorial uxn!
|
||||||
|
|
||||||
=> ./tutorial_de_uxn {tutorial de 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.
|
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!
|
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}
|
=> ./tutorial_de_uxn_día_3.gmi {tutorial de uxn día 3}
|
||||||
|
|
||||||
## asignación
|
## 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.
|
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:
|
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.
|
=> ./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!
|
¡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 )
|
( 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 )
|
%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.
|
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
|
|
||||||
|
=> ./tutorial_de_uxn_día_3.gmi {tutorial de uxn día 3}
|
||||||
|
|
||||||
## aritmética de punteros
|
## 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 )
|
.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.
|
=> ./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!
|
ah, ¡mucho mejor!
|
||||||
|
@ -954,7 +957,8 @@ en modo corto, estas instrucciones cargan o almacenan cortos desde o hacia la me
|
||||||
# día 5
|
# 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.
|
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!
|
¡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
|
# apoyo
|
||||||
|
|
||||||
si te ha gustado este tutorial y te ha resultado útil, considera compartirlo y darle tu apoyo :)
|
si te ha gustado este tutorial y te ha resultado útil, considera compartirlo y darle tu {apoyo} :)
|
||||||
|
|
||||||
=> ENLACE DE APOYO
|
|
Loading…
Reference in New Issue
Block a user