@AxelStone Gracias por enseñarnos estas maravillas de MSX2
El Street Fighter 2 y Super Mario World... buff... el último parece el de Super Nintendo
Y respecto a Street Fighter 2, ya podían haber hecho algo así para ST y Amiga. El que hicieron fué un gran truñaco.
@dinodiniMe alegro que te guste tanto el resultado que he conseguido con el engine de juegos Run&Gun que he programado, y ejemplificado en forma de port de Metal Slug, tanto para STE como Megadrive (aún en curso).
Estos feedback son muy satisfactorios para los desarrolladores,
Ahora puedo responder al alguna de las dudas que te han estado inquietando; el por qué en su día había tanto truñaco.
Empezaré indicando que
el gran rendimiento que has visto en Atari STE (también podría ejecutarse en un ST a secas, pero mejor a 25 fps que a 50)
se debe a un formato de sprites muy especial, que hace un uso del blitter de forma no documentada y muy rara, pues lleva al blitter a un híbrido de estados que se suponían no permitidos.
Pero que funciona, y
proporciona mayor eficiencia a la hora de dibujar sprites en pantalla; y también permite dibujar sprites de hasta 256 píxeles de ancho. Cuando el límite teórico del blitter del ST (los modelos que lo llevan) y del STE es de 48 píxeles.
Este formato lo empezó Anima, con su Ghouls and Ghost arcade para Atari STE, y digo arcade, porque en esta versión Anima ejecuta directamente el código de la versión arcade, y reemplaza las llamadas a funciones gráficas; después DML hizo que el formato fuese accesible al resto de mortales, y lo integro en sus herramientas AGT para Atari ST/E
Luego
también está el hecho de que gestiono de forma independiente el limpiado de la pantalla... como en las máquinas con blitter o usando sólo CPU, el hecho de dibujar un sprite hace que se quede pintado para siempre sobre el escenario, pues te ves obligado a limpiar, lo que es restaurar el fondo donde había pintado el sprite. Y eso consume una barbaridad de CPU y blitter (si lo tienes).
Pero,
¿y si el sprite no se ha movido? ¿o si ha cambiado su fotograma, pero sigue cubriendo la parte que había manchado anteriormente? ¿O si sólo se ha movido un poco hacia un lado? La respuesta en estos casos es no limpiar, o limpiar sólo el rastro que han dejado. Que es lo que hago con el engine de Metal Slug. Esta si es un aportación mía al engine.
Con esta técnica, que a priori consume un poco de CPU adicional, acabas ahorrando muchísimo tiempo, que utilizas para dibujar más sprites y mantenerte en 50 fotogramas.
El mezclador de audio digital, que programé desde cero, está super optimizado escrito totalmente en ensamblador. Se come sólo el 5% de la CPU disponible en cada fotograma. Debo decir que el 68000 es bastante amigable en su ensamblador, me tuve que pelear, pero no es ni de lejos tan complejo como el Z80
-Ahora regresamos al pasado... ¿por qué todo esto no se vió en su día?Según me explicaba DML en nuestras largas conversaciones (DML es Douglas Little, lleva programando videojuegos desde que tenía 19 años, en ICE software; puedes ver su nombre en los créditos de Cisco Heat para ST y Amiga, Chase HQ 2, Hydra...) en aquellos tiempos, cuando programabas para una de estas máquinas, recibías a los sumo un manual con una descripción del hardware y un ensamblador y con suerte un compilador de C.
Y las muy contadas ocasiones en que tenías ejemplos, éstos eran muy churreros o funcionaban mal.
Las compañías, por raro y antinatural que nos parezca no te entregaban un kit de desarrollo con ejemplos sobre cómo utilizar el hardware... esto sumado a que los tiempos de desarrollo solían ser cortos (6 - 8 meses para hacer un juego), daba lugar a inmensos truñacos. Tmabién había desarrolladores que cobraban poco y mal, eso tampoco ayudaba.
Me explicó que la primera compañía que se tomó esto en serio, lo de entregar un kit de verdad cuando te hacías con la licencia de desarrollo, fué Nintendo, con el kit de Super Nintendo... que era muy caro, pero te venía un ensamblador, un compilador de C, un depurador para ejecutar paso a paso incrustado en un emulador de la consola... todo esto para MS-DOS. También venían ejemplos de cómo utilizar el hardware, como usar todos los modos, planos de scroll, sprites, sonido... y un número de teléfono para contactar con entendidos de este hardware y software, y te atendían en estos idiomas: japonés, inglés, francés y español
Sega empezó a entregar ejemplos software para Megadrive/Genesis cuando vió el giro de acontecimientos de Nintendo, aunque según me explicaban, nunca llegó a un soporte tan completo como el de Nintendo.
El hecho es que resulta patente, que ambas consolas solían entregar mejores juegos que Amiga o ST/E
Para el Amiga, ST/E, Spectrum, Amstrad... tu mismo te las tenías que componer, poca ayuda recibías; también es cierto que no hacía falta pagar un licenciamiento por publicar para esos ordenadores.
Pero un set de librerías gráficas y de sonido, es lo que tenían que haber entregado todos los fabricantes, para asegurarse productos de calidad.
Por mi parte, lo último que he hecho ha sido homogeneizar el código entre Atari ST/E y Megadrive, de forma que ambas máquinas compartan el mismo código en C de los juegos; así portar de una a otra es más sencillo.
Sigue habiendo alguna diferencia debido al hardware, (en Megadrive tengo que comentar todo lo relativo al limpiado de los sprites xD, porque no le hace falta) pero facilita mucho la labor.