Battle Mania Hack CO-OP

Estoy haciendo ( o intentando ) un hack para el Battle Mania y es una oportunidad para crear mi primer hilo y ver si hay gente interesada.

Battle Mania es un juego que me enamoró desde la primera vez que lo vi. Siempre me ha gustado mucho el trabajo que hizo VIC Tokai tanto con la primera entrega como con su secuela exclusiva para Japón, Battle Mania Daiginjou.
Aun así, cuando por fin pude jugarlos me llevé una pequeña decepción: no tenían opción de cooperativo para 2 jugadores. Siempre pensé que sería genial poder controlar a Maria junto a Mania.
Hace aproximadamente un mes decidí intentar hacerlo realidad.
Debo aclarar que no sé programar; apenas tengo algunos conocimientos básicos de Python, así que todo este proyecto está saliendo adelante con la ayuda de asistentes de programación como Codex o Cursor. El avance es lento (soy pobre y las versiones gratuitas tienen sus límites), pero la verdad es que estoy sorprendido con lo que he conseguido hasta ahora.

Por el momento ya he implementado:
• Selección de modo 1 jugador o 2 jugadores en la pantalla inicial.
• El modo 1P funciona como el juego original.
• En modo 2P, el jugador 1 controla a Mania y el jugador 2 a Maria.
• Ambos personajes pueden moverse de forma independiente, disparar y cambiar la dirección del disparo.
• Mania puede usar bombas; Maria no. ( su botón tendrá otro objetivo)
• He añadido un HUD para Maria con vida y puntuación, aunque aún no es funcional.
• Maria todavía no recibe daño ni suma puntos.

Mi intención no es simplemente hacer que Maria sea controlable, sino mantener la esencia del juego, donde Mania y Maria siempre combaten juntas.
Estoy diseñando el cooperativo alrededor de un sistema de dos estados para Maria. Ambas comenzarán con 4 vidas. Mania podrá ganar y perder vidas de forma normal, mientras que Maria solo podrá perderlas y nunca superar las 4.

Al pulsar el player 2 el botón de libre( el que seria de bomba) activara el "modo safe". En ese estado, Maria volverá a comportarse como en el juego original: dejará de ser controlable, no recibirá daño y acompañará automáticamente a Mania y en ese momento recuperará vidas utilizando las de Mania, pero siguiendo una regla sencilla: nunca podrá dejar a Mania con menos vidas que ella y nunca tendrá mas de 4. Al pulsar otra vez volverá a ser controlable.
Tengo pensado añadir más ítems de vida según la dificultad elegida, ya que ahora son dos personajes los que pueden perder vidas. Además, quiero implementar un contador de puntuación conjunta para saber mejor cuándo se consigue una vida extra.

Todavía estoy valorando cómo gestionar el final de la partida: si debe terminar cuando muera cualquiera de las dos o permitir que continúe el personaje que siga vivo y recuperar a ambas al comenzar la siguiente fase.

A nivel gráfico también me queda implementar el retrato de Maria para el marcador de vidas y un sprite de tres cuartos para el giro de Mania.( ahora es un H-Flip del sprite normal) Los gráficos ya están hechos, solo falta integrarlos.

Aunque tengo bastante claro que quiero hacer, estoy abierto a ideas o propuestas.
Gracias si has perdido algo de tu tiempo en leer esto.
Battle_Mania_Coop.png
Mucha suerte, yo este juego fue el que me volvio a meter al genero "marcianitos" de echo tengo una copia fisica comprada de battlemania dominjuouji
Muchísimas gracias :-)

WOW tienes una copia del segundo... el manual me parece una obra de arte, las ilustraciones son buenísimas, que suerte tenerlo !!!
Espero que puedas implementar todo lo que quieres hacer porque se nota que aprecias el juego. Yo no lo he jugado nunca pero solamente saber lo que estás haciendo ya tengo ganas de jugarlo a fondo y probar tu versión el día que completes el proyecto.

Un saludo y no dejes de poner actualizaciones por aquí en la medida que te sea posible [bye] .
Solo llegar a los resultados que has llegado sin conocimiento de ensamblador o C es increíble, mucho animo y tengo muchas ganas de ver el proyecto terminado!
@isacin
@-Giru-

Muchas gracias!!!
Pues más animado ahora si cabe.

Sí, es un juego que me gusta mucho, muy recomendable si no lo habéis probado. El segundo gráficamente es una delicia, al primero le tengo un especial cariño.

Enseguida que pueda pondré un video del estado actual y alguna cosita mas.
Bueno pues lo dicho, aquí va un video del estado actual del hack.

Además de lo que puse en el mensaje principal he añadido ya un tile del "2" para la puntuación de María, y también el tile para el icono de María en su marcador de vidas. Ahora el HUD ya esta visualmente completo, solo me falta hacerlo funcional.

El gameplay es un poco caótico porque estoy controlando a los dos personajes yo solo con dos mandos y, claro... me explota el cerebro 😅. Aun así, se puede ver cómo se mueven y disparan de forma independiente y cómo, además, Mania (la rubia) puede darse la vuelta, cosa que no podía hacer en el modo normal.
Por ahora el giro es un hFlip del sprite, pero como comenté, tendrá un frame de 3/4 como el de Maria para que sea menos brusco.



Tenía una primera versión del icono de María con unos colores que me gustaban más, pero he aprendido que aunque la paleta tiene 64 colores, está dividida en cuatro subpaletas de 16, y solo puedo utilizar los colores de una de ellas.

Una de las cosas que más me está gustando de este proyecto es aprender cómo funciona un juego de Mega Drive por dentro. Está siendo muy divertido e interesante.

Iré poniendo más avances.
@Fill Espectro yo aún estoy flipando de que estés llevando este proyecto sin saber programar. ¿Podrías comentarnos para los que no tenemos ni idea el proceso y como lo desarrollas?.

Me refiero a que le pasas la ROM a la IA, tú le dices lo que quieres, te la devuelve, la pruebas y se la vuelves a entregar comentándole lo que está bien y lo que te gustaría cambiar?. ¿Así continuamente?.
¿No tienes que añadir ninguna linea de código o revisas nada?.

Enhorabuena.
@aranya

Pues si más o menos, se podría decir que la IA es el cerebro y las manos y yo soy sus ojos.

Tengo una estructura de carpetas:
Original: rom original
Notes: notas numeradas sobre cada script y un archivo de resumen general
Tools: cada script numerado
Work: cada ROM numerada generada a partir de la rom anterior + el script
Asm: desensamblado parcial
Art: tiles, etc
Un archivo TODO para saber qué queda pendiente.

La IA tiene acceso a la carpeta del proyecto.

Yo le digo a la IA que vamos a hacer, lo intenta y crea un script ( tools ) parchea una copia de la rom con ese script ( work ), crea unas notas de lo que ha hecho ( notes) y actualiza el resumen general con las conclusiones de la prueba anterior.

Entonces yo cojo la rom parcheada, la pruebo en Exodus y le digo que ha pasado: no ha pasado nada, ha pasado algo pero está mal, el juego crashea, ha salido perfecto, etc y continuamos el proceso para hacer el siguiente probe. Voy por el probe_113, para que te hagas una idea.

Exudus es un emulador que tiene un montón de opciones de debugging.
Puedes ver los tiles cargados en vram en cada pantalla y saber su block number, que sería como su referencia.
Puedes aislar capas y ver solo los sprites o ver solo el fondo
Puedes mover un sprite, girarlo, ver que tiles lo componen. ( Más o menos )
Todo esto me ayuda a saber qué está pasando y toda esa información es muy útil para la IA.
Por ejemplo pude ver donde había un hueco vacío en Vram para poner mis tiles nuevos ( Los tiles los dibuje yo, claro ), o saber exactamente cuántos píxeles había que mover un sprite que quedaba desplazado al voltearlo.

Muchas pruebas rompen el juego o hacen cosas inesperadas, el proceso es lento pero poco a poco va saliendo.

No he escrito una sola línea de código, pero el trabajo que hago detrás no es poco.
@Fill Espectro pues me parece flipante como lo estás llevando y organizando. Enhorabuena.
Creo que es un trabajo muy minucioso y de constante prueba error, eso sí encuentras el error claro. Pero ver los avances debe de ser muy gratificante.

Gracias por la explicación, me ha gustado mucho y me ha ayudado a entender el proceso.
A mi esto me ha dejado loquísimo, ¿Cómo te lo has planteado? ¿Decompilas a ensamblador y lo estás reprogramando ahí o lo sacas a C? ¿Es tu primer hack?
Fuah, me has descubierto codex (hasta ahora usaba la ia como un chat). Brutal lo que hace es poco.

Suerte con tu proyecto! es muy interesante!
13 respuestas