Control de usuario
Patrocinadores
Estadísticas
Miembros:
334.659
Online:
517
Hilos:
1.380.678
Mensajes:
24.885.209
Stats

Índice de foros Otras Consolas Consolas clásicas

Trabajo tiles megadrive

Para recordar esos momentos tan buenos que nos han hecho pasar...

Moderador: sd-snatcher

theelf
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 2882
Registrado: 09 Mar 2007
Ubicación: Igualada, Barcelona

Trabajo tiles megadrive

Mensajepor theelf 22 Dic 2009 05:10

Buenas, hace ya como un mes me entretuve bastante leyendo un post sobre si era posible un port de un juego de arcade/neogeo por ejemplo a MD/SNES

En este caso estuve trabajando para Megadrive

Estuve muy ocupado este ultimo mes, pero como este fin de semana dispuse de algun tiempo, decidi al menos, intentar algunos graficos.

Seguro muchos ya saven que son los tiles, y como se trabajan.

Para los que no, los tiles son pequeñas unidades graficas, de 8x8 pixeles, en el que se divide la pantalla. Agarrando la calculadora, la megadrive tiene 320x224 pixeles de resolucion asi que:

1 Tile : 8x8 pixeles = 64 pixeles
Pantalla: 320x224 = 71680 pixeles
Cantidad de tiles necesarios para llenar la pantalla: 71680/64 = 1120 tiles


Basicamente, si queremos poner un fondo de pantalla en MD, simplemente agarramos cualquier imagen, redimensionamos a 320x224, le adaptamos los colores a la paleta de megadrive, y listo. Ocupamos los 1120 tiles.

Pero que pasa si, necesitamos mostrar, por ejemplo, un escenario de un juego de peleas? porque el escenario, es mas amplio que 320x224, basicamente, son como poco 2 pantallas de largo.

Ahi es donde viene el calvario, ya que hay que lograr que aunque el fondo sea mucho mas grande que la pantalla, no ocupe mas de los 1120 tiles.

Luego viene otro problema, querremos poner, los personajes, las barras de energia..etc

Asi que hice calculos: La megadrive puede guardar en memoria un maximo de 1344 tiles (43008 bytes de VRAM), pero los tiles 0 a 255 son reservados para fuentes (texto). Con un truco se pueden usar tiles a partir del numero 128. Asi que nos quedarian un total de 1216 tiles utiles.

Otro punto a tomar en cuenta son los colores. Megadrive puede mostrar en pantalla 64 colores, pero con condiciones. No se puede usar una paleta de 64 colores, si no 4 de 16 colores.Pero en cada paleta hay un color de fondo y otro de transparencia, lo que nos resta 8 colores, que nos da un total de 56 colores utiles. En caso de los sprites se puede usar el color de fondo.

Como muestro en el siguiente grafico, un personaje ocupan un promedio de unos 90-100 tiles cada uno
, y se podria decir que un maximo de 110 tiles.

Imagen

Asi que habria que reservar 220 tiles para personajes, y al menos 30 mas para varios (barras, animaciones..etc)

Asi que de los 1216 tiles utiles, solo nos quedan 1216 - 250 = 966 tiles


Volvemos al fondo. Tenemos el fondo de NeoGeo "Fire at Wadamoya" de 640x224 pixeles.

Fondo: 640x224 = 143360 pixeles / 64 = 2240 tiles
Maximo disponible: 966 tiles


O sea, que solo disponemos de un 43% de tiles para trabajar, o lo que es lo mismo, tenemos que descartar un 67% de la imagen original.
Eso sin contar que la neogeo tiene 256 colores, mientras que nosotros solo disponemos de 14 para el plano de fondo.

Aqui viene el trabajo sucio :) con photoshop, paint shop pro..etc, hay que abrir la imagen original del fondo del NeoGeo, dividir en una cuadricula de 8x8 y buscar patrones, tiles similares, sitios muertos...

Que significa esto? pues, que basicamente si dos trozos de 8x8 (1 tile) son iguales, solo ocupan el espacio de 1 tile, si varios tile tienen un mismo color, ocupan solo 1..etc

Por ejemplo:

Imagen
Trozo de 40x24 pixeles, 15 tiles original de neogeo

Imagen
El mismo trozo, modificado, usando solo 6 tiles. Se aprecia la perdida de informacion, pero al menos se mantiene la "escencia" original

Asi que despues de 6 o 8 horas de trabajo, logre que este escenario de NeoGeo de 2240 tiles, quedara en solo 960 tiles!! XD menuda paliza me pege buscando patrones, copiando pegando trozos...
Y lo mas dificil, adaptar los 256 colores del NeoGeo a 14 colores. Lo peor fue que dentro de la paleta de la MD no encontre todos los colores necesarios, solo encontre 11. Asi que tuve que trabajar la imagen, y reducirla a 11 colores.

Imagen
Original NeoGeo, 256 colores, 2240 tiles

Imagen
Modificado para Megadrive, 11 colores, 960 tiles

Aqui dejo la rom de megadrive, si alguien quiere provarla en un emulador. Solo muestra el fondo, y presionando A y izquierda+derecha se hace el scroll



Espero que esta informacion sea util a alguien, o al menos, alguien le encuentre algun interes!! XD
Ultima edición por theelf el 23 Nov 2011 21:24, editado 1 vez
Imagen Imagen

ChepoXX
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 2876
Registrado: 18 Ago 2003

Mensajepor ChepoXX 22 Dic 2009 06:01

Buen curro, y la imagen queda bastante fiel al original, pero imagino que en el momento que se quiera animar el fondo todo se va al garete o me equivoco?

por otra parte seria interesante hacer la misma imagen pero con la super nintendo para ver hasta donde puede llegar en el tema de los tiles, si esta mas cerca que mega drive o de neo geo.

salu2
Imagen

Ralph
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 13593
Registrado: 23 Feb 2006

Mensajepor Ralph 22 Dic 2009 06:11

Genial, qeu currada te has pegado macho. Según lo que muestras, una cosa muy parecida al last blade podría ser viable, si es que la cantidad de información que debe pasar por el bus, no es demasiada (animación de los personasjes + la animación compleja de todo el escenario, etc). Kuego está la pega de los sprites extras que soponen las magias, y otras historias, como la sombra, o si se levanta algo de polvo cuando un personaje cae, que tambien necesita de sprites extras...

En teoría, la CPU de la megadrive podría ser lo suficientemente potente para manejarlo todo, pero problema está quizás en como viaja la información.


...Gran trabajo, repito. Muy instructivo [oki]


EDIT:

Buen curro, y la imagen queda bastante fiel al original, pero imagino que en el momento que se quiera animar el fondo todo se va al garete o me equivoco?


No si no se sobrepasa el limite de 966 tiles que quedaban despues de crear a los personajes. El usó 960, así que de hecho, le sobraban 6... el problema es si hay capacida para sustituir todos los tiles necesarios al mismo tiempo, para animar ese escenario. Es una cuestión del bus de la consola, y en ultima instancia, de la cpu.

BdM
Avatar de usuario
Papi ha vuelto
 
Mensajes: 11398
Registrado: 09 Dic 2002
Ubicación: There's no easy way out

Mensajepor BdM 22 Dic 2009 09:11

interesante información, gracias por compartirla [oki]
Imagen

nuvalo
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 1493
Registrado: 14 Mar 2007

Mensajepor nuvalo 22 Dic 2009 10:39

Supongo que ya lo has visto, pero por si acaso, échale un ojo a un video que hicieron para ver como cambia los tiles de la vram la megadrive:
http://www.youtube.com/watch?v=SPF5qrgvGYg

No estoy muy deacuerdo con la explicación de que la capacidad de la rom fuera la única causa de que los juegos no conserven todos los frames ni el tamaño de la versión original, ya que el espacio en la ram y vram es bastante limitadora, y la velocidad de la cpu te limitaría el nº de frames a intercambiar por segundo.
Código: Seleccionar todo
"Dios no juega a los dados, usa /dev/random"

Empty your mind, be formless, shapeless — like void*.If you put an  int into a void*, it           (__)
becomes the int. You put float into a void* it becomes the float. You put in a char it             (oo)
becomes the char. Now, void* can flow or it can overflow                                     /------\/
                                                                                            / |    ||
Be void* my friend.                                                                        *  /\---/\
                                                                                              ~~   ~~
(Ahora, con poderes de super vaca)


Chiste del día: ctrl+c, crtl+v http://imgur.com/CCeQf.jpg

theelf
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 2882
Registrado: 09 Mar 2007
Ubicación: Igualada, Barcelona

Mensajepor theelf 22 Dic 2009 11:09

Buen curro, y la imagen queda bastante fiel al original, pero imagino que en el momento que se quiera animar el fondo todo se va al garete o me equivoco?


En realidad, si te fijas, en la imagen de NeoGeo hay varios tipos de fuegos. Pero en mi imagen, para ahorrar tiles el fuego el el mismo en varias partes. Asi que animar el fuego, seria relativamente facil, y sin demasiado gastos de tiles.
Ademas se podria complementar la animacion con un cabio de paleta para el fuego (amarillo por naranja, naranja por rojo, rojo por naranja, naranja por amarillo...por ejemplo)

Aqui te marco los fuegos repetidos, para que veas que con pocos tiles, podria animar gran parte del escenario

Imagen

Kuego está la pega de los sprites extras que soponen las magias, y otras historias, como la sombra, o si se levanta algo de polvo cuando un personaje cae, que tambien necesita de sprites extras...


Habria que buscar alternativas o prescindir de efectos no muy importantes.En caso de las magias, ya se cuenta con eso. Fijate que Lee por ejemplo solo usa 70 tiles, pero yo le cuento con 110.

En caso de un luchador que ocupara muchos tiles, una posible solucion seria recortar un poco aqui y alli en sus magias, o en el momento de estas, como se saven cuando seran,descargar algo de memoria

No estoy muy deacuerdo con la explicación de que la capacidad de la rom fuera la única causa de que los juegos no conserven todos los frames ni el tamaño de la versión original, ya que el espacio en la ram y vram es bastante limitadora, y la velocidad de la cpu te limitaría el nº de frames a intercambiar por segundo.


Bastente no, limitadisima diria yo. Justamente por eso todo este trabajo. Yo podria cargar los 960 tiles para el trozo que se ve en pantalla, y dejar el fondo tal cual NeoGeo, y a medida que se hace el scroll, ir creando dinamicamente el trozo de escenario que falta.
Pero ahi me topo con el CPU de la megadrive, supongo que ya es demasiada carga.
Imagen Imagen

nuvalo
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 1493
Registrado: 14 Mar 2007

Mensajepor nuvalo 22 Dic 2009 11:38

Una pregunta, ¿no tienes tileado y repetido el suelo? Esa parte también podrías trucarla para que se repitiera, la mitad inferior izquierda hasta el centro es prácticamente igual, así supongo que salvarías más vram para otros sprites. Sino, yo intentaría recrear todo el fondo de forma que se repitiera el máximo nº de tiles (vale quedaría más cutre, pero tendrías espacio para otras cosas y quizás pudieras moverlo más rápido). De mover el escenario en megadrive no tengo mucha idea, pero creo que con un poco de optimización sí que debería de moverlo sin muchos problemas.
Código: Seleccionar todo
"Dios no juega a los dados, usa /dev/random"

Empty your mind, be formless, shapeless — like void*.If you put an  int into a void*, it           (__)
becomes the int. You put float into a void* it becomes the float. You put in a char it             (oo)
becomes the char. Now, void* can flow or it can overflow                                     /------\/
                                                                                            / |    ||
Be void* my friend.                                                                        *  /\---/\
                                                                                              ~~   ~~
(Ahora, con poderes de super vaca)


Chiste del día: ctrl+c, crtl+v http://imgur.com/CCeQf.jpg

theelf
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 2882
Registrado: 09 Mar 2007
Ubicación: Igualada, Barcelona

Mensajepor theelf 22 Dic 2009 14:11

Una pregunta, ¿no tienes tileado y repetido el suelo? Esa parte también podrías trucarla para que se repitiera, la mitad inferior izquierda hasta el centro es prácticamente igual, así supongo que salvarías más vram para otros sprites. Sino, yo intentaría recrear todo el fondo de forma que se repitiera el máximo nº de tiles (vale quedaría más cutre, pero tendrías espacio para otras cosas y quizás pudieras moverlo más rápido). De mover el escenario en megadrive no tengo mucha idea, pero creo que con un poco de optimización sí que debería de moverlo sin muchos problemas.



En realidad el suelo, no deven ser mas de 50 tiles repetidos hasta el cansancio XD en realidad, casi todo esta repetido 2 o 3 veces minimo

el escenario asi como esta se puede mover perfectamente en megadrive

Lo de recrear el fondo, es aun mas trabajo que lo que hice aun. Yo basicamente fui buscando patrones, repitiendolos, y dejando de un solo color algunas zonas. Pero rehacer un escenario, es un trabajo muy laborioso, digamos, que tendrian que pagarme para perder tantas horas... XD aunque si se hiciera de comienzo, tal vez podria dejarse en 500-600 tiles aprox, aunque no se veria tan fiel a la NeoGeo
Imagen Imagen

Ralph
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 13593
Registrado: 23 Feb 2006

Re:

Mensajepor Ralph 22 Dic 2009 14:24

theelf escribió:Lo de recrear el fondo, es aun mas trabajo que lo que hice aun. Yo basicamente fui buscando patrones, repitiendolos, y dejando de un solo color algunas zonas. Pero rehacer un escenario, es un trabajo muy laborioso, digamos, que tendrian que pagarme para perder tantas horas... XD aunque si se hiciera de comienzo, tal vez podria dejarse en 500-600 tiles aprox, aunque no se veria tan fiel a la NeoGeo


Dejarlo en 500/600 tiles es innecesario, no necesitas ahorrar tanto, porque las animaciones del escenario no creo que ocupen el deficit de tiles... bueno, tu sabrás a lo que me refiero. Los personajes, tampoco van a hacerlo. Ahorrar tanto en tiles si podría ser si quieres meter personajes enormes, pero no es el caso.

theelf
Avatar de usuario
MegaAdicto!!!
 
Mensajes: 2882
Registrado: 09 Mar 2007
Ubicación: Igualada, Barcelona

Mensajepor theelf 22 Dic 2009 15:57

Dejarlo en 500/600 tiles es innecesario, no necesitas ahorrar tanto, porque las animaciones del escenario no creo que ocupen el deficit de tiles... bueno, tu sabrás a lo que me refiero. Los personajes, tampoco van a hacerlo. Ahorrar tanto en tiles si podría ser si quieres meter personajes enormes, pero no es el caso.


Bueno, un ahorro de tiles ayudaria en cuanto al tamaño del juego. Si lo programas para megacd no importa, en cambio si solo se dispone de 512kb la cosa cambia. Pero si, para las pruebas que hago, tienes razon,es innecesario trabajar tanto la imagen, por eso parti de una captura de NeoGeo y no de 0

Creo que cada tile son aprox 20 bytes, asi que si se pueden ahorrar 300 tiles son 6.5kb! XD wow, te da suficiente espacio para instalar el Crysis :)
Imagen Imagen

Siguiente

Volver a Consolas clásicas

¿Quién está conectado?

Usuarios navegando por este foro: No hay usuarios registrados visitando el foro y 0 invitados