DesmumeX v0.6

He publicado una nueva version de DesmumeX (DesmumeX v0.6), el emulador de Nintendo DS para Xbox. Esta versión es más rápida que la anterior, gracias a la idea de optimización de weinerschnitzel. El código fuente está también disponible, como un ejemplo de cómo aplicar esta optimización a un emulador. Si alguien lo quiere probar, que busque "DesmumeX v0.6".

Como siempre, recordad que las roms deben colocarse descomprimidas en el directorio "roms", y que con el botón negro se puede cambiar entre los distintos modos de visualización (pantalla 1, pantalla 2, doble pantalla).

Gracias al aumento de velocidad (alrededor de un 10%), ahora hay varios juegos 2D que ya son jugables si utilizamos la configuración adecuada (New Zealand Story, Bubble Bobble Double Shoot, Bubble Bobble Revolution...).

Recordad también que si apretamos el botón "Y" en el menú de roms justo despues de haber seleccionado un juego, el emulador guardará la configuración elegida, y la recordará las próximas veces que juguemos a ese mismo juego.

Agradecimientos especiales a los desarrolladores que ayudaron a conseguir esta idea de optimización: weinerschnitzel, Madmab, SPPV, Hyper_Eye y ldotsfan.
hcf escribió:He publicado una nueva version de DesmumeX (DesmumeX v0.6), el emulador de Nintendo DS para Xbox. Esta versión es más rápida que la anterior, gracias a la idea de optimización de weinerschnitzel. El código fuente está también disponible, como un ejemplo de cómo aplicar esta optimización a un emulador. Si alguien lo quiere probar, que busque "DesmumeX v0.6".

Como siempre, recordad que las roms deben colocarse descomprimidas en el directorio "roms", y que con el botón negro se puede cambiar entre los distintos modos de visualización (pantalla 1, pantalla 2, doble pantalla).

Gracias al aumento de velocidad (alrededor de un 10%), ahora hay varios juegos 2D que ya son jugables si utilizamos la configuración adecuada (New Zealand Story, Bubble Bobble Double Shoot, Bubble Bobble Revolution...).

Recordad también que si apretamos el botón "Y" en el menú de roms justo despues de haber seleccionado un juego, el emulador guardará la configuración elegida, y la recordará las próximas veces que juguemos a ese mismo juego.

Agradecimientos especiales a los desarrolladores que ayudaron a conseguir esta idea de optimización: weinerschnitzel, Madmab, SPPV, Hyper_Eye y ldotsfan.


Gracias hcf a ti y a tu equipo, por esta nueva versión. [ok]
Increible, muchas gracias.

Como curiosidad personal, esas optimizaciones se podrían aplicar al emulador de gba o a alguno más que funcione algo lento?

Saludos!
kanyero escribió:Como curiosidad personal, esas optimizaciones se podrían aplicar al emulador de gba o a alguno más que funcione algo lento?


Sí, precisamente lo más positivo de este truco, es que puede aplicarse casi a cualquier emulador o aplicación de Xbox!! Yo lo he aplicado con éxito a este DesmumeX que acabo de publicar, y también al emulador de Atari Jaguar (en breve publicaré una nueva versión, que también es entre un 10% y un 15% más rápida).

Sin embargo, también lo he probado con el emulador de Sega Saturn (Yabause) y no ha habido ninguna mejora, así que hasta que no lo pruebas, no sabes cómo va a funcionar... pero bueno, de momento llevo dos de tres, lo cual no está mal. Lo bueno es que es un truco bastante fácil, así que hacer la prueba no cuesta demasiado.

En el emulador de GBA debería hacerlo madmab, porque él es el que domina el código fuente de ese emulador. Al estar tan integrado el core del emulador con el interfaz "madmab edition" (como en todos los emuladores de madmab) es un poco más difícil separar el código que queremos optimizar, y eso sólo podría hacerlo él. Pero ahora anda demasiado liado...

En todo caso, respondiendo a tu pregunta, efectivamente se podría aplicar a todos los emuladores de consolas, de arcade... incluso al XBMC4Xbox :)
Es decir que el emulador de jaguar sería mucho mas funcional ya que habían varios juegos que les faltaba un poco para ir bien.

Tambien sería interesante probarlo en el MAME ya que podría hacer que los juegos mortal kombat por fin vayan bien por que jugar al UMK en xbox es un martirio, lo mismo para las ultimas versiones de los emuladores de snes que utilizan parte de bsnes para fidelidad pero a costa de rendimiento.

La verdad que 10-15% de velocidad adicional puede resultar mucho dependiendo de que cosas quiera emular.

Gracias por tu trabajo y el dato, tambien sería interesante si nos puedes explicar (brevemente y para dummies) en que consiste el truco o el consejo de optimización.
ChepoXX escribió:Es decir que el emulador de jaguar sería mucho mas funcional ya que habían varios juegos que les faltaba un poco para ir bien.


Exacto, en el caso de la Jaguar esta pequeña mejora realmente marca la diferencia, y hay varios juegos a los que antes les faltaba un poco, a los que ahora podremos jugar. Rayman se podrá jugar con sonido por ejemplo, y algunos juegos como Double Dragon 5 o Evolution-Dino Dudes ya van prácticamente perfectos.

ChepoXX escribió:Gracias por tu trabajo y el dato, tambien sería interesante si nos puedes explicar (brevemente y para dummies) en que consiste el truco o el consejo de optimización.


La idea de weinerschnitzel (que es increíble que no se nos haya ocurrido a ninguno en todo este tiempo) consiste en aprovechar que hoy día existen compiladores que generan código más optimizado que los que habitualmente hemos utilizado para programar para Xbox. Por ejemplo el Intel C++ o el GCC, generan código más rápido. Entonces, lo que hay que hacer es extraer el código que queremos mejorar, y compilarlo con alguno de estos compiladores, y así creamos una librería optimizada. Luego invocamos a esta librería desde los compiladores tradicionales, y así ejecutamos código más rápido. Por supuesto, tiene algunas compilcaciones (en emuxtras y en assemblergames hemos tenido algunas discusiones muy interesantes sobre este tema) pero la idea básica es esa.
Es decir parte del código es separado y optimizado para volverlo a juntar con el compilador tradicional? con esto entiendo que por ejemplo se emula mas rápido el chip de video o sonido de un sistema que repercute en beneficio general.

Piensas, que esto ocasionará un avalancha de nuevas versiones de emuladores o seran cosas muy puntuales?
ChepoXX escribió:Es decir parte del código es separado y optimizado para volverlo a juntar con el compilador tradicional? con esto entiendo que por ejemplo se emula mas rápido el chip de video o sonido de un sistema que repercute en beneficio general.


Exacto, el "arte" consiste en encontrar qué partes del emulador conviene optimizar, que son las que más CPU consumen. En DesmumeX y Virtual JaguarX yo lo he aplicado a todo el core del emulador. Sin embargo, en Yabause es más complicado, pues hay una alta transferencia de datos entre el core y la parte de código dependiente de Xbox, y si los separamos, puede que la cosa vaya incluso más lenta.

ChepoXX escribió:Piensas, que esto ocasionará un avalancha de nuevas versiones de emuladores o seran cosas muy puntuales?


No creo que sea una avalancha, porque la mayoría de los emuladores ya van muy bien. No tiene sentido aplicar esto a los emuladores de NES, Master System... Pero sí que puede aplicarse a los emuladores de las consolas de nuevas generaciones (las que no van al 100%) y como muy bien dices, a los emuladores de arcade.
Hombre,

Muchas gracias por la información, ya veremos como se traduce esto en mejoras en los nuevos emus.
ya me imagino aplicando esta mejora a el emulador de PSX , de N64 o al DOSXBOX. [looco]
hcf escribió:He publicado una nueva version de DesmumeX (DesmumeX v0.6), el emulador de Nintendo DS para Xbox. Esta versión es más rápida que la anterior, gracias a la idea de optimización de weinerschnitzel. El código fuente está también disponible, como un ejemplo de cómo aplicar esta optimización a un emulador. Si alguien lo quiere probar, que busque "DesmumeX v0.6".

Como siempre, recordad que las roms deben colocarse descomprimidas en el directorio "roms", y que con el botón negro se puede cambiar entre los distintos modos de visualización (pantalla 1, pantalla 2, doble pantalla).

Gracias al aumento de velocidad (alrededor de un 10%), ahora hay varios juegos 2D que ya son jugables si utilizamos la configuración adecuada (New Zealand Story, Bubble Bobble Double Shoot, Bubble Bobble Revolution...).

Recordad también que si apretamos el botón "Y" en el menú de roms justo despues de haber seleccionado un juego, el emulador guardará la configuración elegida, y la recordará las próximas veces que juguemos a ese mismo juego.

Agradecimientos especiales a los desarrolladores que ayudaron a conseguir esta idea de optimización: weinerschnitzel, Madmab, SPPV, Hyper_Eye y ldotsfan.



oiie amigo y no fuera posible que en tus versiones que están por venir pudieramos cambiar los controles de avance??por ejemplo que los personajes caminen con el (L thumnb) Y NO CON EL DPAD?? por cierto gracias por esta version de desmumex sigue así amigo esperaré con ansias la version 0.7
lightofkiller escribió:oiie amigo y no fuera posible que en tus versiones que están por venir pudieramos cambiar los controles de avance??por ejemplo que los personajes caminen con el (L thumnb) Y NO CON EL DPAD?? por cierto gracias por esta version de desmumex sigue así amigo esperaré con ansias la version 0.7


Lo de redefinir las teclas es algo que está pendiente en mis emuladores, al igual que dotarles de un interfaz de usuario mejor (menú de roms, previews, soporte de Xtras...). Sin embargo, de momento mi prioridad es intentar mejorar el core de los emuladores (es decir, que funcionen mejor) y como siempre libero el código fuente, quizá otro desarrollador pueda/quiera hacer estos trabajos algún día. Y si no, cuando ya no quede nada por mejorar en los cores, quizá lo haga yo, aunque ese día queda muy lejos para mí.

De todas formas, en el DesmumeX el mapeo de las teclas creo que es exactamente igual al que se utilizaría en una Nintendo DS real. Quiero decir, que si en un juego se camina con el dpad, es porque en la DS se hace también con el dpad...
ok, muchisimas gracias por aclararme esa duda quiza en un futuro modificaré eso de los controles, salu2
12 respuestas