8BP Programado juegos profesionales desde Basic

Programando el Amstrad en BASIC, C, etc.
Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Jue 02 Jun , 2022 8:58 pm

Hola,
el jueguecillo que estoy haciendo tiene varios niveles y para cada nivel tengo unas 10-15 líneas DATA tales como

Código: Seleccionar todo

2160DATA 39,254,14,0,2,0,0,22,0,1,254,18,0,1,0,0,1,-3,0,1,-4,0,5,-5,0,254,14,0,2,0,0,9,0,1,252,10,0,1,0,0,0
2161DATA 36,254,14,0,14,0,1,254,19,0,2,0,0,1,4,0,5,5,0,254,14,0,1,0,0,1,3,0,12,0,1,252,10,0,1,0,0,0
2162DATA 6,254,15,0,2,0,0,254,20,0,1,0,0,1,-3,0,1,-4,0,5,-5,0,254,15,0,2,0,0,6,0,-1,254,14,0,2,0,0,254,18,0,1,0,0,1,-3,0,1,-4,0,5,-5,0,254,14,0,2,0,0,11,0,1,252,10,0,1,0,0,0
2163DATA 39,254,15,0,2,0,0,5,0,-1,254,20,0,1,0,0,1,-3,0,1,-4,0,5,-5,0,254,15,0,2,0,0,16,0,-1,252,11,0,1,0,0,0
2164DATA 39,254,14,0,2,0,0,5,0,1,254,18,0,1,0,0,1,-3,0,1,-4,0,5,-5,0,254,14,0,2,0,0,15,0,1,252,10,0,1,0,0,0
2165DATA 39,254,14,0,2,0,0,16,0,1,254,19,0,2,0,0,1,4,0,5,5,0,254,14,0,1,0,0,1,3,0,5,0,1,252,10,0,1,0,0,0
2200DATA 254,8,0,18,0,-1,254,12,0,2,0,0,1,4,0,5,5,0,254,8,0,1,0,0,1,3,0,16,0,-1,254,12,0,2,0,0,1,4,0,5,5,0,254,8,0,1,0,0,1,3,0,254,8,0,9,0,-1,254,12,0,2,0,0,1,1,0,12,5,0,254,8,0,1,0,0,1,3,0,254,7,0,2,0,0
2210DATA 38,0,1,254,8,0,2,0,0,254,11,0,1,0,0,1,-3,0,1,-4,0,5,-5,0,254,8,0,13,0,-1,254,8,0,2,0,0,254,9,0,1,0,0,1,-3,0,1,-4,0,5,-5,0,254,7,0,2,0,0,8,0,1,254,8,0,2,0,0,254,11,0,1,0,0,1,-3,0,1,-4,0,5,-5,0
2220DATA 254,8,0,2,0,0,8,0,-1,254,7,0,2,0,0,254,9,0,1,0,0,1,-3,0,1,-4,0,5,-5,0,254,7,0,2,0,0,18,0,1,254,8,0,2,0,0,0
2230DATA 254,8,0,1,0,0,254,11,0,1,0,0,1,-3,0,1,-4,0,5,-5,0,254,8,0,2,0,0,14,0,-1,254,11,0,1,0,0,1,-3,0,1,-4,0,5,-5,0,254,8,0,2,0,0,8,0,-1,254,7,0,2,0,0,254,9,0,1,0,0,1,-3,0,1,-4,0,5,-5,0,254,7,0
2240DATA 2,0,0,24,0,1,254,10,0,2,0,0,1,4,0,5,5,0,254,8,0,1,0,0,1,3,0,2,0,0,13,0,-1,254,12,0,2,0,0,1,4,0,5,5,0,254,8,0,1,0,0,1,3,0,254,8,,13,0,-1,254,12,0,2,0,0,1,4,0,5,5,0
2250DATA 254,8,0,1,0,0,1,3,0,254,7,0,2,0,0,24,0,1,254,8,0,2,0,0,
He leído por aquí que guardar los datos de esta forma ocupa bastante espacio. Solo hay números (varía el número de cifras e incluso hay negativos). Voy leyendo con un READ y metiéndolos en memoria con POKE.

Estoy intentando que ocupen menos espacio. Lo único que se me ha ocurrido es meter los datos en una cadena de caracteres y cambiar los números de más de una cifra por una letra. De esta manera voy leyendo carácter a carácter y comprobando si he de modificar el carácter obtenido por su número en caso de ser una letra.

De esta forma me ahorro las comas (,) pero no consigo un gran ahorro por el código extra necesario y es demasiado lento al tener que comprobar cada carácter.

¿Alguna forma más optimizada de guardar y leer esta información?

Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Vie 03 Jun , 2022 4:35 pm

Creía que ayer dejé un comentario a esto pero veo que no está.

Decía que quizá podrías representar dos valores usando un único byte pero para eso tus valores deberían estar entre 0-15 y veo que tienes ahí valores negativos y demás, si puedes modificar eso de algún modo quizá podrías conseguir reducir a la mitad haciendo eso que digo.

Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Sab 18 Jun , 2022 7:49 am


Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Dom 19 Jun , 2022 12:55 pm

Hola, una pregunta.
Estoy creando un plugin para aseprite, para obtener los valores de los colores sin tener que pasar por RGAS.

Lo que no entiendo bien es a qué hacen referencia los valores de los colores ya que al índice de color en la paleta no es, la paleta tiene 27 colores y aquí hay valores mucho más allá.

Imagen

Entonces ¿como asigno los valores a cada color si no es respecto a su índice en la paleta?.

Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Dom 19 Jun , 2022 6:48 pm

RGAS no exporta a nivel de píxel sino que horizontalmente cada número corresponde a dos píxeles. El sprite de la imagen es de 12x10 píxeles. Cada número no corresponde a un color de la paleta sino al correspondiente de dos píxeles.

Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Dom 19 Jun , 2022 7:35 pm

Ya, eso lo vi en los vídeos de Retroman, refiriendome a que cada valor representados píxeles, pero lo que no sé es que valores tienen los colores.
Es decir, si tengo un pixel en modo 0 de color amarillo.
¿Dónde está o de donde o cómo obtengo el valor del color amarillo?.
Si el amarillo, supongamos, es 15, entonces el valor final para el pixel es ¿30 o igualmente 15?.

Avatar de Usuario
MoteroV4
Forero habitual
Forero habitual
Mensajes: 106
Registrado: Jue 02 May , 2019 9:26 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor MoteroV4 » Dom 19 Jun , 2022 8:10 pm

Ya, eso lo vi en los vídeos de Retroman, refiriendome a que cada valor representados píxeles, pero lo que no sé es que valores tienen los colores.
Es decir, si tengo un pixel en modo 0 de color amarillo.
¿Dónde está o de donde o cómo obtengo el valor del color amarillo?.
Si el amarillo, supongamos, es 15, entonces el valor final para el pixel es ¿30 o igualmente 15?.
La codificación de los píxeles. la propia VRAM es compleja. En la lista de videos del Profe de su curso DEZ80 hablaba de todo esto, con tablas y ejemplos en Mode 1 y cómo se forman en binario.
Lista de videos DEZ80: https://www.youtube.com/playlist?list=P ... 6IqFp6s3vY
Clase del formato de los Píxeles: https://youtu.be/1v2DKEWMKNg

Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Lun 20 Jun , 2022 6:46 pm

Viendo el video y la página http://www.cpcmania.com/Docs/Programmin ... memory.htm entiendo que en modo 0 sería:

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
pixel 0 (bit 0) pixel 1 (bit 0) pixel 0 (bit 2) pixel 1 (bit 2) pixel 0 (bit 1) pixel 1 (bit 1) pixel 0 (bit 3) pixel 1 (bit 3)

-Si por ejemplo tenemos dos píxeles codificados como C0 en hexadecimal
-Pasado a binario 11000000
-Haciendo la transformación quedaría tal que: 10 10 00 00

La primera tinta de la paleta es el color negro y se supone que estos dos píxeles son de color negro. No veo la correspondencia

Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Lun 20 Jun , 2022 9:50 pm

Yo he mirado el código de spedit ya que en ese código se ponen esos valores pero no he sacado mucho en claro.
Tengo que ver esos vídeos, un poco lioso esto.

Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Lun 20 Jun , 2022 9:52 pm

Rgas muestra estos valores.

Imagen

Avatar de Usuario
jjaranda13
Forero habitual
Forero habitual
Mensajes: 129
Registrado: Jue 18 Feb , 2016 4:12 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor jjaranda13 » Mié 22 Jun , 2022 12:47 am

Yo he mirado el código de spedit ya que en ese código se ponen esos valores pero no he sacado mucho en claro.
Tengo que ver esos vídeos, un poco lioso esto.
mira el capitulo 25 del manual de 8BP , se titula "organizacion de la memoria de video"
en ese capitulo se explica los bits que son para especificar la TINTA de cada pixel en mode 0,1 y 2

como podras comprobar, los bits se especifican con cierto "desorden" pero una vez comprendido es sencillo porque es simplemente que por ejemplo en mode 0 los bits de los dos pixeles no estan 4 a la izquierda y 4 a la derecha, sino que estan remezclados
Imagen
Adjuntos
mode0.JPG

Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Vie 24 Jun , 2022 8:02 am

Ya se puede descargar el juego

Imagen



https://21bloques.itch.io/goody

Avatar de Usuario
jjaranda13
Forero habitual
Forero habitual
Mensajes: 129
Registrado: Jue 18 Feb , 2016 4:12 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor jjaranda13 » Dom 17 Jul , 2022 1:06 pm

felicidades Ivan, gran juego!

Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor Ivan » Dom 17 Jul , 2022 5:02 pm

felicidades Ivan, gran juego!
Gracias, a disfrutarlo!

Avatar de Usuario
shao
Forum Addict
Forum Addict
Mensajes: 381
Registrado: Sab 06 Oct , 2012 8:37 pm
Ubicación: Alicante

Re: 8BP Programado juegos profesionales desde Basic

Mensajepor shao » Jue 04 Ago , 2022 3:09 pm

Hola, en el frogger (aunque también en el fruit y vegetables y quizá en los demás) si simplemente cambio el "|SETUPSP" de la línea 170 por su correspondiente "CALL&70FD", entonces el juego da un error en ejecución:

Imagen

Imagen

¿A qué se debe esto?.

Otra cosilla, el comando "|MUSICOFF" no está documentado en el wrapper de C, no se sabe su dirección de memoria pero en el juego "Fruit y vegetables" se usa en la línea 100.

El asunto del plugin para Aseprite que comenté arriba tendrá que esperar.


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic