Empezando a portar Metal Slug de Atari STE a MegaDrive

Saludos compañer@s,


Empezando a hacer los primeros pinitos en MegaDrive;
intentando portar Metal Slug desde el STE a Mega

Para los que no conozcáis el port que publiqué hace unos meses para Atari STE:

hilo_port-de-metal-slug-a-atari-st-completado_2428878





Ahora he conseguido, en MegaDrive, que se vea con unos colores muchísimo más parecidos a los originales;
también he colocado un plano parallax a ese primer nivel.

Y la música suena igual que la versión STE;
todo es audio digital, mezclado a 4 voces.


Imágenes del actual (19 de Octubre de 2021) Work in Progress para MegaDrive / Genesis:

El mapeado ahora utiliza 64 colores, los sprites disponen de 32 colores en exclusiva para ellos.



Imagen

Imagen

Imagen

Imagen


Perdonad la presencia de Sonic, está ahí como sprite de prueba; con él compruebo colisiones y cosas así.
Deleitanos con un Sonic Slug por favor.
Que le den a Metal Slug, ahora todos queremos Sonic Slug
Niiiiiiiiice [tadoramo]

Intentará terminar solo el primero nivel?
joooooooooooder!!!!!!!!!!!

Que pasada!!! Cuentános un poco más como lo estás haciendo??
Enhorabuena!! Me flipais y me dais envidia sana los que sois capaces se realizar estos proyectos. Muchos ánimos!!

Saludos.
Impresionante. Mucho ánimo, ojalá nos deleites con un juego completo.
GREAT!,ojala algun dia podamos jugar aunque sea el Stage 1.
buen trabajo, aunque preferiria que fuera para snes.
@jordigahan
Con esa baja resolución pues hay que currarselo mucho mas. Tendrías que adaptar todos los escenarios a una resolución mas baja, en Megadrive tienes que bajar la cantidad de colores nada mas.

De adaptar, pues se puede, pero creo que ira mejor en una Megadrive.
jordigahan escribió:buen trabajo, aunque preferiria que fuera para snes.

En Snes no se puede,el Ricoh se quema.
@emerald golvellius no trolees y pon mas juegos raros.
Como diría el gran Karlos Arguiñano:
Ricoh, ricoh y con fundamento.

@masteries
Excelente trabajo.
Hay dos proyectos de conversión del Metal Slug para MD. Uno desde el arcade y otro desde la Atari ST (que no sé si está terminado).

Eso es la fiebre del oro pero con programadores descamisados locos por hacerle un hijo a la negra de Sega.
gaditanomania escribió:Hay dos proyectos de conversión del Metal Slug para MD. Uno desde el arcade y otro desde la Atari ST (que no sé si está terminado).

Eso es la fiebre del oro pero con programadores descamisados locos por hacerle un hijo a la negra de Sega.

Deberian agruparse,unir sus esfuerzos en una version.
@emerald golvellius

Exactamente. Mejor un Metal Slug neonato que dos abortos.
gaditanomania escribió:@emerald golvellius

Exactamente. Mejor un Metal Slug neonato que dos abortos.

Hoy dia con Internetto deberia ser mas facil que grupos pudieran crearse,pero aun asi es dificil.
La otra version esta siendo hecha por Vetea de Omebrou group, ha estado publicando actualizaciones diarias en su cuenta de twitter.

gaditanomania escribió:@emerald golvellius

Exactamente. Mejor un Metal Slug neonato que dos abortos.



Bueno, en el caso que nos ocupa (pues somos dos, un programador/músico y un grafista) no es exactamente así.

Esto del Metal Slug es la base de aprendizaje para manejar el STE, MegaDrive y DreamCast.



Estamos haciendo un juego completamente nuevo, que sigue las mecánicas de Metal Slug; y como el tema creación de gráficos y sprites siempre es complejo y relativamente lento. Pues fuí tomando elementos de Metal Slug para ir dando forma al engine del juego, ir creando los patrones de IA, generadores de enemigos, secuencias de bloqueo de scroll...

Ahora estoy haciendo que la programación de STE y MegaDrive coincidan en todo cuanto sea posible. Lógicamente, las versiones serán diferentes en cuanto a colorido, y la del STE no creo que llegue a tener parallax.

Respecto a la música, ya disponemos de algunos temas; la versión MegaDrive está diseñada para ser un cartucho de 8 MB, con un chip de apoyo que reproduce música comprimida y la inyecta desde el propio cartucho. Por lo que descomprimiendo, el cartucho rondaría los 320 Mbits. Si recuerdo bien, el cartucho de Paprium dispone de algo similar,

Al ser multiplataforma desde su concepción, no me meto en el jardín (bonito, pero demasiado dedicado) de la música sintetizada para los chips Yamaha 2149 y Yamaha 2612. Por eso todo el audio es digital.


La versión STE exige disco duro (problema solucionado, ya los fabrico y vendo baratitos), y un mando con soporte para 3 botones (que también modifico y vendo). La versión MegaDrive / Genesis lleva todo lo necesario en el cartucho, y DreamCast ya dispone de todo lo necesario por sí misma :)





Porque mola más crear juegos nuevos, que empezar a remezclar lo que ya existe... además, no te vaya a pasar como a aquellos del Streets of Rage para PC, que les acabó llegando un "cesar y desistir" por parte de SEGA . Metal Slug es una saga que está viva, activa y sigue dando beneficios y generando interés a SNK; si te metes demasiado en ese tiesto, te podrá llegar un "cesar y desistir" por parte de SNK


¡Mejor evitarlo y dar más satisfacciones con un juego nuevo!
masteries escribió:
gaditanomania escribió:@emerald golvellius

Exactamente. Mejor un Metal Slug neonato que dos abortos.



Bueno, en el caso que nos ocupa (pues somos dos, un programador/músico y un grafista) no es exactamente así.

Esto del Metal Slug es la base de aprendizaje para manejar el STE, MegaDrive y DreamCast.



Estamos haciendo un juego completamente nuevo, que sigue las mecánicas de Metal Slug; y como el tema creación de gráficos y sprites siempre es complejo y relativamente lento. Pues fuí tomando elementos de Metal Slug para ir dando forma al engine del juego, ir creando los patrones de IA, generadores de enemigos, secuencias de bloqueo de scroll...

Ahora estoy haciendo que la programación de STE y MegaDrive coincidan en todo cuanto sea posible. Lógicamente, las versiones serán diferentes en cuanto a colorido, y la del STE no creo que llegue a tener parallax.

Respecto a la música, ya disponemos de algunos temas; la versión MegaDrive está diseñada para ser un cartucho de 8 MB, con un chip de apoyo que reproduce música comprimida y la inyecta desde el propio cartucho. Por lo que descomprimiendo, el cartucho rondaría los 320 Mbits. Si recuerdo bien, el cartucho de Paprium dispone de algo similar,

Al ser multiplataforma desde su concepción, no me meto en el jardín (bonito, pero demasiado dedicado) de la música sintetizada para los chips Yamaha 2149 y Yamaha 2612. Por eso todo el audio es digital.


La versión STE exige disco duro (problema solucionado, ya los fabrico y vendo baratitos), y un mando con soporte para 3 botones (que también modifico y vendo). La versión MegaDrive / Genesis lleva todo lo necesario en el cartucho, y DreamCast ya dispone de todo lo necesario por sí misma :)





Porque mola más crear juegos nuevos, que empezar a remezclar lo que ya existe... además, no te vaya a pasar como a aquellos del Streets of Rage para PC, que les acabó llegando un "cesar y desistir" por parte de SEGA . Metal Slug es una saga que está viva, activa y sigue dando beneficios y generando interés a SNK; si te metes demasiado en ese tiesto, te podrá llegar un "cesar y desistir" por parte de SNK


¡Mejor evitarlo y dar más satisfacciones con un juego nuevo!


¡Tiene buena pinta lo que comentas de hacer un juego nuevo de estilo MS!¡Suerte con el proyecto!

Salud.
emerald golvellius escribió:
jordigahan escribió:buen trabajo, aunque preferiria que fuera para snes.

En Snes no se puede,el Ricoh se quema.


Igual que tus retinas.

TheTourist escribió:@jordigahan
Con esa baja resolución pues hay que currarselo mucho mas. Tendrías que adaptar todos los escenarios a una resolución mas baja, en Megadrive tienes que bajar la cantidad de colores nada mas.

De adaptar, pues se puede, pero creo que ira mejor en una Megadrive.


Colores... numero de planos... sonido...
@masteries Como estás haciendo para que los complejos y ultra detallados fondos de Metal Slug encajen en la escasa VRAM de Mega Drive?
Caben en la vram sin mucho problema. Para el scroll se envían los nuevos tiles al vuelo, hay ancho de banda suficiente para soportarlo a la velocidad que se actualizan.
@EPSYLON EAGLE

jeje

Eso tiene truco, de hecho el mapa de la misión 1 tiene 8723 tiles de 8x8 pixels; vamos los tiles que maneja MegaDrive

No se están cargando todos los tiles a la vez... se cargan y descargan de forma dinámica, según vas avanzando por el nivel; el código que hace esto he tenido que picarlo, porque SGDK no te proporciona funciones como estas.

También se comprueba la paleta a la que corresponden los colores de ese tile, porque para el mapeado se usan varias paletas a la vez.


Y hay algún truco más, como no habilitar el segundo plano, y en cambio configurarlo apuntando todo al primer plano; así puedo tener dos zonas a distinta velocidad y prioridad en el primer plano, pero ahorrando 8 KB de VRAM; que hacen falta para los sprites... pero este truco acarrea otras problemáticas (que ya tengo resueltas, pero ahí están)... xD
Mola. Cúrrate un dev diary en inglés igual hasta consigues apoyo, patreons o mas interesados en youtube

Como está haciendo el que adapta symphony of the night y los shinobi de game gear a megadrive
SuperPadLand escribió:Que le den a Metal Slug, ahora todos queremos Sonic Slug



¿Sonic Slug? ¿SS? ¿Sega Saturn?

Ahora todo encaja...
Sonic Slug pues mira, algo nuevo y no un "copy paste"...
masteries escribió:@EPSYLON EAGLE

jeje

Eso tiene truco, de hecho el mapa de la misión 1 tiene 8723 tiles de 8x8 pixels; vamos los tiles que maneja MegaDrive

No se están cargando todos los tiles a la vez... se cargan y descargan de forma dinámica, según vas avanzando por el nivel; el código que hace esto he tenido que picarlo, porque SGDK no te proporciona funciones como estas.

También se comprueba la paleta a la que corresponden los colores de ese tile, porque para el mapeado se usan varias paletas a la vez.


Y hay algún truco más, como no habilitar el segundo plano, y en cambio configurarlo apuntando todo al primer plano; así puedo tener dos zonas a distinta velocidad y prioridad en el primer plano, pero ahorrando 8 KB de VRAM; que hacen falta para los sprites... pero este truco acarrea otras problemáticas (que ya tengo resueltas, pero ahí están)... xD

Naaaaa Caben en la vram sin mucho problema... [carcajad],eso cabe ahi sin problemilla hombre [+risas]
Muy chulo! va a haber la posibilidad de 2 jugadores?
emerald golvellius escribió:Naaaaa Caben en la vram sin mucho problema... [carcajad],eso cabe ahi sin problemilla hombre [+risas]


Capacidad del hardware, no menosprecio al trabajo de programación de este usuario.

Nah, ya me cansé.
Señor Ventura escribió:
emerald golvellius escribió:Naaaaa Caben en la vram sin mucho problema... [carcajad],eso cabe ahi sin problemilla hombre [+risas]


Capacidad del hardware, no menosprecio al trabajo de programación de este usuario.

Nah, ya me cansé.

Pues yo gano [sonrisa]
Me quito el sombrero y lo dejo por aquí para seguir el avance.

Un saludo.
@masteries

Gracias por la respuesta tan notable, si necesita feedback aquí estamos, mucha suerte en su proyecto [beer]
Sacándole el partido a este hardware de recreativa, la memoria de vídeo bien exprimidita:


Imagen


Se están mostrando ahí un Slug gigante, 2 tanques enormes, 4 aviones, 14 explosiones pequeñas, 12 disparos y el Sonic.

Los sprites ya llevan la paleta definitiva para Metal Slug en MegaDrive.

También está sonando la misma música que en la versión STE, todo sonido digital sampleado a 16 KHz; y todo lo que en Atari STE necesita casi 4 MB de RAM (ahora unos 3,6 MB de RAM); en MegaDrive cabe en tan sólo 1 MB de ROM, y no estoy comprimiendo nada.

Se nota que al no estar basado el hardware de vídeo en planos, no es necesario guardar los gráficos pre-desplazados y ahí está el ahorro de memoria.


Ahora mismo, en esa pantalla, se están utilizando 62 sprites de los 79 sprite disponibles en MegaDrive. ¡Y fíjaos que brutalidad!
También comprobamos que muy pocos juegos, en su momento, exprimieron el hardware de vídeo. Da bastante de sí.

Me he escrito mi propio gestor de la VRAM, porque el que viene por defecto me la estaba fragmentado con mucha facilidad y no es tan óptimo.

El juego lo estoy ejecutando en modo PAL 50 Hz, y no se resiente nada.

Así que en Mega y Super no hubo Metal Slug porque no les salió de las nar*****
@masteries

Gracias por compartir tus impresiones.

Bueno, en MD o SNES no hubo un Metal Slug básicamente porque en 1996 Sega ya había dejado de hacer MD hace tiempo y apenas salían juegos y Nintendo ya estaba a punto de aparcar la SNES en favor de la N64.

Eso no quita que algún grupo de programación le hubiera dado por comprarle la licencia a SNK y hacerlo. Pero a esas alturas debía ser mucha inversión con pocas expectativas de ganancias.
Pues si estás viendo que el sistema es más agradecido que en la versión de Atari, eso podría dar margen a mejoras que podrías implementar.

Sigue metiéndole caña al asunto, yo por mi parte estaré a la espera de nuevos avances, se ve que le echas ganas.

PD: Bueno, en MD ya teníamos nuestro Metal Slug llamado Gunstar Heroes, pero sí que cualquiera hubiera alucinado con un port de este en la consola de Sega.
@masteries

Gracias pelo update!

Cuanto a la CPU, ¿Cómo el M68000 de MD se sale al desafío de mantener los cálculos de los disparos, la IA enemiga, las cajas de colisiones y la física en general?
Los aviones se mimetizan con el fondo, da la sensación de que usan sus mismas paletas. Un par de subpaletas mas le hubiese venido de perlas.
Pues yo los veo perfectos esos aviones, excelente trabajo, sigue así.
EPSYLON EAGLE escribió:@masteries

Gracias pelo update!

Cuanto a la CPU, ¿Cómo el M68000 de MD se sale al desafío de mantener los cálculos de los disparos, la IA enemiga, las cajas de colisiones y la física en general?


Sin problemas,

He adaptado el mismo engine, las mismas funciones de creación y destrucción de sprites del Atari STE;
el código viene a ser 90% igual entre ambas versiones.

Tampoco hago uso de memoria dinámica, incluso los slots de la VRAM ya están reservados de ante mano para una "series" de sprites, y luego el gestor de VRAM que he escrito va asignando y des-asignando los slots.
En el que viene con SGDK es mucho menos eficiente, pero porque no se las tuvo que ver antes con un sistema de vídeo planar como el STE xD

Lo que si he podido hacer, es optimizar una barbaridad las colisiones de los disparos enemigos cuando tienen que detectar al jugador; esto incluso lo voy a cambiar en el engine del STE; se va a trasladar esta optimización de MD a STE xD



El mismo gestor de la VRAM evita que todos los sprites quieran cambiar su fotograma al mismo tiempo, para mantener el consumo de DMA equilibrado, lo distribuye en el tiempo cuando es necesario, haciendo que algún sprite se retrase un frame en su animación...

cuando un juego corre a 50 fps, porque un sprite en un momento determinado funcione a 49 fps... ni lo notamos. Eso ya se estaba haciendo en el STE, sólo que aquí he tenido que tener en cuenta también que animar, implicar enviar a la VRAM.


porque si el STE puede perfectamente a 50 fps; en esta consola donde el 68000 tiene bastante más tiempo libre que en el Atari... recordad que en el STE no sólo tenía que ejecutar todo eso, sino también dar las órdenes al blitter (para pintar y limpiar) y mezclar los 3 canales de audio digital, y entre un 68k a 8 MHz y un 68k a 7.67 MHz no hay mucha diferencia.

Lo que si hecho en falta, es que el DAC de audio de la MD no tenga capacidad DMA
Eso fue un fallo considerable en el diseño de la consola,
@masteries En definitiva, parece que ves que pueda mantener toda la acción tal y como tiene en la Atari ST.

Tiene muy buena pinta. La paleta elegida está muy lograda, de hecho, parece mejor integrada que el "Metal Slug" que el equipo que desarrolló Papi Comando está consiguiendo. Muy logradas las imágenes con los vehículos, en especial los aviones, muy próximos al color del arcade.

Estoy deseando verlo en movimiento y con musicote.

Sigo disfrutando y alucinando con este tipo de proyectos donde la gente se junta, reviven la Mega Drive y como público podemos disfrutar de ello. La scene está que arde con este tipo de cosas, se deja a un lado el "what if..." y se va demostrando las capacidades de la consola desmitificando dichos repetitivos.
@masteries es sorprendente lo rápido que has cogido el pulso a la consola, tendrá mucho que ver la experiencia con el Atari (y la maestría interior... claro ;) ). Pero estrenarse con una adaptación así de todo un Metal Slug son palabras mayores.

Sí, eso hay que verlo en movimiento, si no, no nos lo creemos XD
masteries escribió:El mismo gestor de la VRAM evita que todos los sprites quieran cambiar su fotograma al mismo tiempo, para mantener el consumo de DMA equilibrado, lo distribuye en el tiempo cuando es necesario, haciendo que algún sprite se retrase un frame en su animación...


Generalmente se dejan pasar dos o tres frames desde que inicias una animación, hasta que sucede en pantalla, ¿cuantos dejas pasar tu?.

Lo bueno de un juego de plataformas, o "run'n gun", es que no rompes el juego si retrasas el ataque o la defensa de un enemigo durante un puñado de frames... tiempo suficiente para animar en pantalla todo lo que necesites en una máquina como esta.

masteries escribió:Lo que si hecho en falta, es que el DAC de audio de la MD no tenga capacidad DMA
Eso fue un fallo considerable en el diseño de la consola,


¿Como transfieres un sample entonces?, ¿que tasa de transferencia tiene a base de cpu?.
Un update,

He conseguido gestionar en pantalla a la vez:

-Hasta 15 sprites de 32x32 píxeles (o 16 tiles de 8x8 píxeles), éstos comprenden los torsos de los soldados, chatarrilla volando, explosiones pequeñas, la bomba que lleva el avión, el cartelito de Go-> , y bastantes más

-Hasta 4 sprites más grandes, de 60 tiles cada uno (helicópteros,tanques o explosiones más grandes)

-Hasta 2 soldados de los exóticos: como los que llevan escudo, el del bazzoka, el que está encaramado a un árbol...

-El jugador y el HUD minimalista

-La piernas de los soldados, los disparos, las granadas, los proyectiles de mortero y los impactos en el suelo/agua de los disparos, están cargados de forma constante en la RAM de vídeo

-Y el frame buffer con el escenario ultradetallado, + 110 tiles para un scroll parallax


Y ya no cabe más,

Los sprites enormes como el Slug, comparten su espacio con 3 vehículos/explosiones grandes y los soldados poco comunes.

----------------------------------------------------------

Los samples los maneja el Z80, y lo escribe él mismo en el DAC uno a uno más o menos cuando corresponde.
@masteries

Gracias! Muchas ganas para ver todo en movimiento! [beer]
@masteries Suena genial!
¿Algún pantallazo de regalo?

Me he puesto en hardmode con Gunstar Heroes para tener fresca la locura que se podría ver en pantalla en una versión de Metal Slug.

Y si la acción es tan sólo la mitad de dinámica lo que puedes mostrar con ese juego, ya es todo un logro.
47 respuestas