Prueba de concepto de sprites transparentes

Programando el Amstrad en BASIC, C, etc.
abalore
Forero habitual
Forero habitual
Mensajes: 152
Registrado: Dom 09 Jul , 2006 8:59 pm

Prueba de concepto de sprites transparentes

Mensajepor abalore » Lun 06 Jul , 2015 2:39 pm

Aquí os envío una prueba de concepto de sprites transparentes en BASIC.

La gracia es que todos los sprites actualizan la posicion simultaneamente y sin parpadeos (sin hacer switching de la memoria de video ni sincronizarse con el retrazo vertical), y se pueden definir objetos de background que estén detrás o delante de los sprites, así como de diversos colores. Utiliza un modo 0 de 5 colores.

Logicamente con mas de 2 o 3 sprites se pone lento, pero sólo es una prueba de concepto para luego hacer una implementación en ensamblador. He probado a compilarlo con FaBaCom y no funciona. A ver si alguno de los expertos en FaBaCom lo puede compilar y postear los resultados de rendimiento.

Saludos
Adjuntos
sprites.dsk
(190.21 KiB) Descargado 60 veces

Avatar de Usuario
ronaldo
Forum Addict
Forum Addict
Mensajes: 358
Registrado: Sab 14 Sep , 2013 9:31 pm
Ubicación: Alicante
Contactar:

Re: Prueba de concepto de sprites transparentes

Mensajepor ronaldo » Lun 06 Jul , 2015 5:57 pm

Muy interesante idea el uso de tintas para ocultar el dibujado y borrado @abalore. Me gusta tu estilo :D

Para compilar con FaBaCoM y que funcione, el problema que tienes está en la línea 160. A FaBaCoM no le gustan las expresiones como argumento para STRING$ (y creo que tampoco para PEN). Es fácil de arreglar:

Código: Seleccionar todo

160 PEN 4
163 FOR i=1 TO 20
165 p=(i\7+1)*4:PEN p
167 p=p+200:PRINT STRING$(19,p);
169 NEXT
Con ese pequeño cambio, ya funciona correctamente con FaBaCoM.

Por cierto, el parche que hicimos el otro día tiene un efecto lateral no deseado. Resulta que la parte que parcheamos la utiliza también para dibujar los retornos de carro al final de un PRINT, por lo que la instrucción PRINT ahora salta de línea sin volver a colocar el carro al comienzo de la misma. Habrá que mejorar el parche para que esto no suceda.

abalore
Forero habitual
Forero habitual
Mensajes: 152
Registrado: Dom 09 Jul , 2006 8:59 pm

Re: Prueba de concepto de sprites transparentes

Mensajepor abalore » Lun 06 Jul , 2015 7:21 pm

Excelente @ronaldo, ahora sí funciona con FaBaCom. Y la ganancia de rendimiento es espectacular. Se pueden mover 10 caracteres de manera bastante fluida, lo que da para muchos juegos simples.

Hmm, una putadilla lo del parche, pero seguro que encontramos la forma de solucionarlo. A ver si tengo un rato y le echo un vistazo. Ahora mismo estoy portando el concepto del modo este de 5 colores a asm con firmware, por curiosidad de ver cuanto rendimiento se chupa el intérprete.

Y posteriormente lo portaré a asm sin firmware, con una rutina de sprites en condiciones.

Avatar de Usuario
Mode 2
I am The Forum
I am The Forum
Mensajes: 2058
Registrado: Lun 10 Oct , 2005 8:01 pm
Ubicación: Sevilla, años 80.
Contactar:

Re: Prueba de concepto de sprites transparentes

Mensajepor Mode 2 » Mar 07 Jul , 2015 1:21 pm

¡Genial!, Abalore. =D>
Deseando ver esos resultados en Ensamblador. \:D/
BUSCO: VideoPac+, Jaguar Saturn, Micromanía 1, Amstrad Semanal, MicroHobby, juegos especialmente CPC y Vectrex, Aquarius, Sam Copé, 520 ST, manual +3, manual CPC664.

abalore
Forero habitual
Forero habitual
Mensajes: 152
Registrado: Dom 09 Jul , 2006 8:59 pm

Re: Prueba de concepto de sprites transparentes

Mensajepor abalore » Jue 09 Jul , 2015 12:38 am

Aquí está la versión en ensamblador con llamadas al firmware, traducido directamente de BASIC y sin optimizar.

La ganancia de velocidad es aproximadamente x4, lo que nos lleva a la conclusión de que el intérprete de BASIC consume el 75% del tiempo de CPU, dejando sólo un 25% para la ejecución de las pertinentes llamadas de firmware. Y eso hablando de dibujar caracteres en modo gráfico que es un procedimiento costoso, si usaramos caracteres en modo texto, posiblemente el tiempo de CPU consumido por el intérprete de BASIC se iría a un 90%.

Me parece una buena noticia para la gente que quiere hacer juegos fluidos sin bajarse mucho al hardware, ya que programar en ensamblador usando el firmware no dista mucho en dificultad de hacerlo en BASIC.

Próximamente subiré la versión ensamblador puro, a ver cuantos sprites de 8x8 es capaz de dibujar por frame!

Saludos
Adjuntos
sprites.rar
(1.35 KiB) Descargado 44 veces

Avatar de Usuario
Mode 2
I am The Forum
I am The Forum
Mensajes: 2058
Registrado: Lun 10 Oct , 2005 8:01 pm
Ubicación: Sevilla, años 80.
Contactar:

Re: Prueba de concepto de sprites transparentes

Mensajepor Mode 2 » Vie 10 Jul , 2015 2:24 pm

=D>
Próximamente subiré la versión ensamblador puro, a ver cuantos sprites de 8x8 es capaz de dibujar por frame!Saludos
¡¡Genial!! \:D/
BUSCO: VideoPac+, Jaguar Saturn, Micromanía 1, Amstrad Semanal, MicroHobby, juegos especialmente CPC y Vectrex, Aquarius, Sam Copé, 520 ST, manual +3, manual CPC664.

abalore
Forero habitual
Forero habitual
Mensajes: 152
Registrado: Dom 09 Jul , 2006 8:59 pm

Re: Prueba de concepto de sprites transparentes

Mensajepor abalore » Dom 12 Jul , 2015 2:49 pm

Pues aquí está la prueba en ensamblador puro. Se alcanzan 28 sprites a 50 Hz.
Adjuntos
sprites.dsk
(190.21 KiB) Descargado 57 veces

Avatar de Usuario
McKlain
I am The Forum
I am The Forum
Mensajes: 2558
Registrado: Mar 28 Nov , 2006 2:48 pm
Ubicación: Málaga
Contactar:

Re: Prueba de concepto de sprites transparentes

Mensajepor McKlain » Dom 12 Jul , 2015 6:34 pm

Muy bueno =D>
Mi música: https://mcklain.bandcamp.com

gg
I am The Forum
I am The Forum
Mensajes: 2289
Registrado: Mié 13 Dic , 2006 10:48 am

Re: Prueba de concepto de sprites transparentes

Mensajepor gg » Sab 18 Jul , 2015 12:01 pm

Muy bueno.
Saludos,
gg.

Avatar de Usuario
ronaldo
Forum Addict
Forum Addict
Mensajes: 358
Registrado: Sab 14 Sep , 2013 9:31 pm
Ubicación: Alicante
Contactar:

Re: Prueba de concepto de sprites transparentes

Mensajepor ronaldo » Sab 18 Jul , 2015 6:23 pm

Buen trabajo, @abalore :). Estaría guay que pusieras el código por aquí para que pudiéramos verlo y comentarlo :)

abalore
Forero habitual
Forero habitual
Mensajes: 152
Registrado: Dom 09 Jul , 2006 8:59 pm

Re: Prueba de concepto de sprites transparentes

Mensajepor abalore » Mié 22 Jul , 2015 2:11 am

Buen trabajo, @abalore :). Estaría guay que pusieras el código por aquí para que pudiéramos verlo y comentarlo :)
Claro, sin problemas. Aquí está.

No lo he puesto antes porque este es el foro de BASIC y me parecía un poco fuera de lugar.
Adjuntos
sprites.rar
(8.49 KiB) Descargado 45 veces


¿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