PDA

Ver la versión completa : [Análisis] MAME va a peor? Reflexion.



JoJo_ReloadeD
09/11/2008, 12:05
Andabamos hablando en otro foro de temas de emulacion, y otra persona conto esa impresion, al parecer muy generalizada, de que el MAME con el paso del tiempo, se ha ido convirtiendo en una bestia exagerada, que ahora programan peor que antes, y que ahora para emular el mismo juego necesitamos mucha mas maquina que en versiones anteriores.

Bien, pues he aqui una pequeña reflexion sobre el tema:



Precisamente esa es una de las cosas en la que la percepcion del sistema nos puede llevar a engaño. Me explico.

Todos recordamos por ejemplo, la primera version en la que el mame soportaba el outrun: Siendo esta una maquina bastante potente (2x 68k, z80), necesitaba una buena maquina por aquel entonces, algo menos de un p2 a 350 o asi era insuficiente.

Bien, ahora comparamos los requerimientos del mismo juego con una version actual del mame y vemos que hace falta un 1200 - 1400 mhz para que vaya suave.

La percepcion por tanto es que 'se han vuelto mas gandules y ahora lo hacen todo peor'.

Llevo oyendo expresiones como estas a lo largo de los años, y si bien es cierto que es lo que parece, no podemos estar mas lejos de la realidad.

Si leemos los readmes que acompañan a los mames, veremos que la politica de esta gente esta clara. El objetivo es emular de la forma mas fielmente imposible y de la forma mejor documentada todas las maquinas.

Ahora, volviendo al caso que nos ocupaba, el del outrun, tenemos una version inicial, que usa un core de emulacion del 68k en asm 386, el soporte de la paleta hard no esta hecho, esta hardcodeado para que se vea bien; la musica del z80 esta precacheada para evitar la emulacion de esa cpu... y la comparamos con una actual que:

- Tiene todos los cores de emulacion en C (mas portable e infinitamente mejor para documentar todo)
- Emula TODO, cualquier efecto en la paleta, en las colisiones, todo en tiempo real y como era en el sistema original, nada de hacks ni hardcodes.
- Se emulan TODAS las cpus en tiempo real.

Cual es el resultado? El requerimiento es infinitamente superior, si, pero la calidad del proyecto ha aumentado exponencialmente; y creo que esto es algo que no es subjetivo: da pie a una emulacion mas fiel y posibilita que el soporte de nuevos sistemas sea mas facil y que nuevos programadores se unan de forma mas facil al proyecto dada la extensa documentacion.

En resumidas cuentas, y con esto no quiero ofender a nadie: Señores que os quejais de que 'mame ha perdido calidad con los años'. ¿Sabeis que podeis descargar las versiones antiguas tambien desde su pagina? Asi podeis volver a jugar al outrun en un p2 350

eToiAqui
09/11/2008, 12:14
Eso es, para máquinas con pocos recursos, hay que utilizar versiones antiguas para que vayan mejor determinados juegos, ya que de una emulación preliminar con "apaños" se ha pasado, con el tiempo y una mejor documentación, a una emulación completa.

Así pues, nada más tengo que añadir a la excelente reflexión que has puesto. No sé quién me puso en mi blog, y me pareció un comentario muy acertado, que MAME pretende ser la mayor enciclopedia de los videojuegos, pero no para jugar, sino para tenerlos perfectamente documentados y en un futuro puedan reproducirse fielmente a expensas de que las placas de dicha máquina ya no existan.

otto_xd
09/11/2008, 12:38
El problema es que la gente no sigue el desarrollo del proyecto, yo he leido infinidad de veces que el mame va a peor... y me meo de la risa.

Me acuerdo cuando empezaron a tomar la politica de, vamos a quitar todos los hacks y la emulacion va a ser 100% fidedigna, ahi la gente no entendia nada porque el rendimiento caia en picado, pero como dices, los distintos modulos de emulacion empezaron a ser mucho mas limpios y correctos, y creo que tb empezaron a incluir emulacion de partes analogicas?Mucho mas complejas de emular... hace mucho que no me leo los readme y los hilos en mamedev, pero que lo reestructuraron para cambiar mil cosas estoy seguro.

Lo peor de esto es que ahi estan los cores en C y nadie saca emuladores "optimizados" basandose en eso xD

dj syto
09/11/2008, 14:29
yo tambien entiendo que cada vez añaden mas juegos. Y no pueden estar todos tan optimizados tan bien, proque si no al final tendriamos un ejecutable de 5000 megas.... y es normal ke "compartan" codigos.

Por ejemplo, tal vez el core de m68k ke funcionaba en el emu antiguo, hacia ke el outrun fuera volao, pero tal vez ese mismo core no funciona con otros juegos. Por lo que optan a poner otro core que funcione con mas juegos a la vez, para no tener ke poner una version distinta para cada uno...

Zenzuke
09/11/2008, 23:45
Me voy a partir de risa con el Zottd portando un mame de los nuevos a Pandora, que dice que lo quiere hacer xDDDD

Molondro
10/11/2008, 07:01
Entiendo todo ésto que decís, pero me parece exagerado no desde el punto de vista técnico sino del práctico que se necesite un PC a 1,2 Ghz para emular el Outrun...

Ñuño Martínez
10/11/2008, 11:25
El problema que yo tengo es que roms que me funcionaban antes, ahora no me funcionan porque me faltan "chips", porque estaban parcheadas, y como yo no sabo cómo leer la información de los chips y guardarlos para que funcionen, me tengo que j*d€r y esperar a encontrarlo en otro lugar...

En cuanto al rendimiento, yo no he notado tanta caída y con mi 1'8 Mhz con tarjeta gráfica Intel cutresalchichera me sigue funcionando decentemente.

Lo que creo que pasa es que esos que critican que "MAME va cada vez a peor" ni entienden el proyecto (emular, no jugar) ni saben cómo funciona una recreativa por dentro. El Outrun tenía tres procesadores funcionando en paralelo, mientras que los PC tienen sólo uno y por mucho "cuad-core" que le metan, tal como están diseñados los sistemas operativos para PC hoy en día, sigue siendo difícil emularlo, ya que sólo puede utilizarse un procesador. Yo no me quejo. Sólo espero poder tener una recreativa como debe ser algún día.

Malenko
10/11/2008, 11:38
El Outrun tenía tres procesadores funcionando en paralelo, mientras que los PC tienen sólo uno y por mucho "cuad-core" que le metan, tal como están diseñados los sistemas operativos para PC hoy en día, sigue siendo difícil emularlo, ya que sólo puede utilizarse un procesador. Yo no me quejo. Sólo espero poder tener una recreativa como debe ser algún día.

Si que se pueden aprovechar utilizando programación multithread. El problema es que la gente es muy "perrilla" y no se quiere molestar a adaptar sus programas a ese modelo de programación.

JoJo_ReloadeD
10/11/2008, 11:46
Si que se pueden aprovechar utilizando programación multithread. El problema es que la gente es muy "perrilla" y no se quiere molestar a adaptar sus programas a ese modelo de programación.

MAME soporta multithread:



-[no]multithreading / -[no]mt
Enables multithreading within MAME.

Malenko
10/11/2008, 11:56
Yo no he dicho que no lo soporte, solo digo que los SO actuales lo soportan y se puede programar para varios procesadores, ya que Ñuño Martinez hacía una afirmación muy rotunda y creo que errónea :)

dj syto
10/11/2008, 13:33
El Outrun tenía tres procesadores funcionando en paralelo, mientras que los PC tienen sólo uno y por mucho "cuad-core" que le metan, tal como están diseñados los sistemas operativos para PC hoy en día, sigue siendo difícil emularlo, ya que sólo puede utilizarse un procesador. Yo no me quejo. Sólo espero poder tener una recreativa como debe ser algún día.

a ver, el problema en este caso no es ke tenga 4, 5, o 6 procesadores. Porque como ya han apuntado antes, en mames antiguos funcinaba de **** madre requiriendo muchsimo menos sistema.

El problema esta en lo que yo expuse. Que para ganar compatibilidad, utilizan cores mas universales ke por lo tanto estan menos optimizados.

JoJo_ReloadeD
10/11/2008, 13:54
a ver, el problema en este caso no es ke tenga 4, 5, o 6 procesadores. Porque como ya han apuntado antes, en mames antiguos funcinaba de **** madre requiriendo muchsimo menos sistema.

El problema esta en lo que yo expuse. Que para ganar compatibilidad, utilizan cores mas universales ke por lo tanto estan menos optimizados.

Eso es generalizar a lo bestia syto. Piensa que si antes se usaban varios cores en asm incompletos ahora se usan solo cores en c completos, y a esto, añadiendole el resto de cosas que antes no estaban emuladas (timing, paletas), pues tenemos los mames de hoy en dia.

Te pongo un par de ejemplos. El ghosts & goblins empezo a emularse con sonido alla por el 97, el core de emulacion del z80 era en asm, y el sonido del YM lo enrutaban al opl3 de la soundblaster!

Eso era, a efectos de portabilidad, lo peor del mundo. Solo funcionaria en pcs con soundblaster. Si, iba perfecto en mi 486dx4 a 100, era lo bueno :)

Hoy dia el core del z80 esta en C, y el YM lo emulan via software, consiguiendo el efecto que tenia originalmente en la maquina.

¿Que pide mas cpu? Toma, pues claro, pero la emulacion es infinitamente mas fiel.

P.D.
Otro ejemplo que me viene a la cabeza es el emulador de spectrum de Pedro Gimeno. SPECTRUM.EXE.

Este venia sin ningun soporte de timings y hecho 100% en asm. Rulaba los juegos perfectos en un 386 lento, con 25mhz ya iba bien.

Comparalo con x128, que tiene ya mas de 10 años, y ya en el 96 o por ahi pedia ¡un pentium 100! para hacer lo mismo que el otro. Obviamente la velocidad de todo ya era la original, no pegaba acelerones para luego pegar bajones.

Oootro ejemplo. Recordais UltraHLE? Esos pentium 200 con vodooo rulando el mario64? Comparadlo con cualquier emu de n64 actual.

Si el hacer hacks para hacer rular una cosa mas o menos es lo que tiene; pide menos maquina. Ahora, emula al 100% que es lo suyo y veras que necesitas muchisima mas maquina.

Ñuño Martínez
10/11/2008, 14:12
MAME soporta multithread: Pues ni me había fijado en ese detalle.

De todas formas, una cosa es "multi-hilo" y otra "multi-procesador/nucleo". Que sí, que ya sé que los últimos Linuxes y Güindouses pueden ejecutar hilos diferentes en procesadores diferentes, pero estoy siguiendo bastante de cerca el desarrollo de la tercera versión del compilador Free Pascal y ya son varias las ocasiones en las que se han dado de bruces con el tema de los procesadores múltiples, principalmente porque cada SO lo hace diferente (y recordemos que MAME funciona en varios SO) pero también porque luego el SO hace lo que le sale del planificador (algo que me parece lógico, por otra parte).

Así, por mucho que MAME le diga al SO que quiere ejecutar la emulación de cada procesador en un núcleo diferente, si al SO se le pone entre ciclo y ciclo que tienen que compartir todos el mismo aunque haya suficientes, pues tienen que compartir el mismo y termina rindiendo menos que con un mono núcleo. Y eso en Windows es más que frecuente, por su puñetera manía de reservar recursos "por si los necesita otro proceso" que, evidentemente, nunca llega (o al menos así ha sido hasta el XP SP2, que no lo he comprobado ni en el SP3 ni en el Vista).

No sé, tal vez en sí logre repartir las emulaciones en varios núcleos, pero por lo que sé es mucha cuestión de suerte (bueno, más bien de que el planificador esté de buenas).

dj syto
10/11/2008, 14:28
Eso es generalizar a lo bestia syto. Piensa que si antes se usaban varios cores en asm incompletos ahora se usan solo cores en c completos, y a esto, añadiendole el resto de cosas que antes no estaban emuladas (timing, paletas), pues tenemos los mames de hoy en dia.

Te pongo un par de ejemplos. El ghosts & goblins empezo a emularse con sonido alla por el 97, el core de emulacion del z80 era en asm, y el sonido del YM lo enrutaban al opl3 de la soundblaster!

Eso era, a efectos de portabilidad, lo peor del mundo. Solo funcionaria en pcs con soundblaster. Si, iba perfecto en mi 486dx4 a 100, era lo bueno :)

Hoy dia el core del z80 esta en C, y el YM lo emulan via software, consiguiendo el efecto que tenia originalmente en la maquina.

¿Que pide mas cpu? Toma, pues claro, pero la emulacion es infinitamente mas fiel.

P.D.
Otro ejemplo que me viene a la cabeza es el emulador de spectrum de Pedro Gimeno. SPECTRUM.EXE.

Este venia sin ningun soporte de timings y hecho 100% en asm. Rulaba los juegos perfectos en un 386 lento, con 25mhz ya iba bien.

Comparalo con x128, que tiene ya mas de 10 años, y ya en el 96 o por ahi pedia ¡un pentium 100! para hacer lo mismo que el otro. Obviamente la velocidad de todo ya era la original, no pegaba acelerones para luego pegar bajones.

Oootro ejemplo. Recordais UltraHLE? Esos pentium 200 con vodooo rulando el mario64? Comparadlo con cualquier emu de n64 actual.

Si el hacer hacks para hacer rular una cosa mas o menos es lo que tiene; pide menos maquina. Ahora, emula al 100% que es lo suyo y veras que necesitas muchisima mas maquina.

eske justo eso eso es lo que yo digo. Es a lo que me refiero tio. El hecho de estar mas optimizados antes incluye estar hechos en asm. y se han pasado a c para ser mas portables, y para que esten mas completos aumentando su compatibilidad (pero requiriendo mas sistema).

JoJo_ReloadeD
10/11/2008, 14:44
eske justo eso eso es lo que yo digo. Es a lo que me refiero tio. El hecho de estar mas optimizados antes incluye estar hechos en asm. y se han pasado a c para ser mas portables, y para que esten mas completos aumentando su compatibilidad (pero requiriendo mas sistema).

No te habia entendido entonces :)

Zenzuke
10/11/2008, 15:06
Esque el MAME team nunca dijo que su objetivo fuera que todo el mundo se pudiera viciar de lo lindo en cualquier ordenador. Realmente su objetivo es preservar esas máquinas recreativas EXACTAMENTE tal y como eran, y esa es la principal preocupación, con el rendimiento bastante más atrás.

dj syto
10/11/2008, 15:26
Esque el MAME team nunca dijo que su objetivo fuera que todo el mundo se pudiera viciar de lo lindo en cualquier ordenador. Realmente su objetivo es preservar esas máquinas recreativas EXACTAMENTE tal y como eran, y esa es la principal preocupación, con el rendimiento bastante más atrás.

y sin embargo y aun asi y apesar de todo. Creo que con estos cambios lo que realmente estan consiguiendo eske cada vez mas gente pueda jugar a mas juegos. Puesto que se emulan mayor numero de roms, y en mayor numero de sistemas (ordenadores, sistemas operativos, consolas, etc...)

yo creo que realmente hemos salido ganando MUCHO con su forma de trabajar.

Ñuño Martínez
10/11/2008, 16:01
Totalmente de acuerdo.

Aparte de que así se evita que muchos grandes juegos queden en el olvido y se pierdan, aunque eso signifique que algunos bodrios nunca morirán (Bullfight :vomiton4:)