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
Prueba de concepto de sprites transparentes
Prueba de concepto de sprites transparentes
- Adjuntos
-
- sprites.dsk
- (190.21 KiB) Descargado 60 veces
- ronaldo
- Forum Addict
- Mensajes: 358
- Registrado: Sab 14 Sep , 2013 9:31 pm
- Ubicación: Alicante
- Contactar:
Re: Prueba de concepto de sprites transparentes
Muy interesante idea el uso de tintas para ocultar el dibujado y borrado @abalore. Me gusta tu estilo
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:
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.
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
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.
Re: Prueba de concepto de sprites transparentes
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.
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.
- Mode 2
- 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
¡Genial!, Abalore.
Deseando ver esos resultados en Ensamblador.
Deseando ver esos resultados en Ensamblador.
BUSCO: VideoPac+, Jaguar Saturn, Micromanía 1, Amstrad Semanal, MicroHobby, juegos especialmente CPC y Vectrex, Aquarius, Sam Copé, 520 ST, manual +3, manual CPC664.
Re: Prueba de concepto de sprites transparentes
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
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
- Mode 2
- 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
¡¡Genial!!Próximamente subiré la versión ensamblador puro, a ver cuantos sprites de 8x8 es capaz de dibujar por frame!Saludos
BUSCO: VideoPac+, Jaguar Saturn, Micromanía 1, Amstrad Semanal, MicroHobby, juegos especialmente CPC y Vectrex, Aquarius, Sam Copé, 520 ST, manual +3, manual CPC664.
Re: Prueba de concepto de sprites transparentes
Pues aquí está la prueba en ensamblador puro. Se alcanzan 28 sprites a 50 Hz.
- Adjuntos
-
- sprites.dsk
- (190.21 KiB) Descargado 57 veces
- ronaldo
- Forum Addict
- Mensajes: 358
- Registrado: Sab 14 Sep , 2013 9:31 pm
- Ubicación: Alicante
- Contactar:
Re: Prueba de concepto de sprites transparentes
Buen trabajo, @abalore . Estaría guay que pusieras el código por aquí para que pudiéramos verlo y comentarlo
Re: Prueba de concepto de sprites transparentes
Claro, sin problemas. Aquí está.Buen trabajo, @abalore . Estaría guay que pusieras el código por aquí para que pudiéramos verlo y comentarlo
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 |