Home » EMULADORES » SISTEMAS 128 BITS » Nintendo Gamecube » Dossier mejoras del emulador Dolphin desde la versión 4.0 – PARTE 4 –

Dossier mejoras del emulador Dolphin desde la versión 4.0 – PARTE 4 –

Nos falta por saber cuales son los últimos avances que se han implementado en el emulador Dolphin a finales del año pasado, por lo que vamos a tratar de explicar un poquito cuales son estas mejoras y a que juegos afectan o afectarán en próximas revisiones del emulador.

El vertex loader JIT (un sistema por el cual los gráficos de los vértices de los juegos son procesados de una manera más eficiente a la hora de pasar de la GPU [emulada] a la GPU [gráfica] de nuestro ordenador reduciendo la carga de la CPU [procesador]) funciona bastante bien, pero sin embargo seguían existiendo ciertos bugs en algunos juegos como es el caso de los juegos Pokemon (Pokemon Colosseum o Pokemon Gale of Darkness)

 

dossierdolphin41
 

Como podéis ver en la imagen superior, la presentación en pantalla del personaje carece de algunas partes (no tiene ojos y algunos colores no estan renderizados, faltando también algunas texturas propias del personaje).

Con algunos retoques en este apartado por parte de flacs se ha conseguido que ahora en estos juegos se renderizen la totalidad de elementos faltantes en los juegos.

Activo desde la revision 8084.

 

dossierdolphin42
 

Otra de las mejoras que no funcionaban bien desde hace algún tiempo en Dolphin era la posibilidad de usar el internet channel desde el emulador (aunque en realidad no es útil hay gente que le gusta probar todas las posibilidades que se les ofrecen).

En anteriores revisiones de Dolphin si que funcionaba correctamente pero desde hace algún tiempo atrás no se conseguía acceder a internet a través de ese canal. Gracias a algunos usuarios a través del canal irc donde se puede hablar sobre la programación de este emulador, mickdermack ha conseguido que el emulador vuelva a ofrecer esta opción a los usuarios denegando a dolphin que use eventos que son solo de retorno, permitiendo que el evento se ejecute de la forma correcta.

 

dossierdolphin43dossierdolphin44
 

Uno de los problemas más acusados cuando estamos emulando un juego a través de Dolphin es el stuttering (parones en mitad de un juego) ya que empobrece mucho la experiencia de juego. Estos parones los provocan varios factores dentro de la emulación pero uno de ellos lo realiza Dolphin por la manera en que se emula la carga de los juegos.

Dolphin en su estructura interna emula de una forma fiel la lectura de los DVDs por parte de la consola, emitiendo un retardo mientras que la CPU por su parte sigue procesando los datos del juego. Cuando nosotros usamos una iso para emular uno de estos juegos en Dolphin el problema radica en la velocidad de proceso de nuestro disco duro. Como sabéis los discos duros (no ssd) tienen un proceso por el cual para acceder a los datos usan un motor que localiza los sectores a utilizar teniendo primero que encontrar los sectores donde residen esos datos.

Cuando los juegos tienen una pantalla propia de LOADING este efecto no es tan acusado puesto que la emulación empieza una vez terminada esa pantalla de loading, dando menos tiempo a la CPU a ir preparando la emulación, sin embargo si el juego tiene una carga dinámica (va cargando cosas según jugamos) el impacto es muchísimo mayor.

Gracias a JosJuice, el cual ha sido capaz de ramificar un poco este sistema, creando un nuevo hilo independiente, el HDD será capaz de ir cargando durante el proceso de retardo, que si bien no eliminan por completo los problemas de stuttering, si que mejoran que estos se produzcan mas dispersos durante la emulación.

Activo desde la revision 8172

 

Uno de los juegos con menor demanda de requisitos en Dolphin es el juego Medabots infinity ya que es un juego que debió de ser pensado para N64 por las texturas que deja ver in-game y que por el motivo que sea termino saliendo en una consola mucho más potente donde pasaría desapercibido (Gamecube). Este juego presenta un bug de programación que al ser emulado en Dolphin directamente lo crashea. Este bug ocurre al disparar a un tipo especial de unidad enemiga la cual al destruirse hace que se busque una textura inexistente en el juego, por lo que dolphin no puede procesarla y automáticamente nos da error. En la consola Gamecube este error queda ignorado y por eso el juego sigue funcionando. Gracias a unos arreglos por parte de degasus si algún juego tiene alguna textura que no se encuentra (cosa que a menos que los programadores olvidasen y no testeasen, no debería de pasar) y no afecta en demasía al juego Dolphin no creasheara.

Activo desde la revision 8176

 

dossierdolphin45
 

Otro de los aspectos que faltaba por pulir era la emulacion del rumble del mando (sobre todo en los juegos de Gamecube) el cual se quedaba en un loop infinito cuando nos saliamos del emulador ya que no se le daban las instrucciones precisas para dejar de utilizarlo. Gracias a mathieui el cual ahora ha dado una instruccion a Dolphin para que cuando ocurra una instancia tal como salir del emulador o pausar el juego, este error quedara subsanado en gran medida. Aclarar que de momento solo esta aplicado a la rama Gamecube, pero será portada a las demás ramas en poco tiempo.

Activo desde la revision 8185

 

Uno de los clásicos de Nintendo (Mario Kart) siempre ha sido un reclamo para los jugadores estas consolas y lamentablemente en Dolphin todavía siguen existiendo fallos de emulación en estos títulos tanto en Gamecube como en Wii. No siempre las correcciones de bugs en los emuladores son simples ya que cuando se cambia el código fuente para arreglar ciertos efectos o problemas en juegos, existe la posibilidad de que otros se emulen de forma incorrecta, ya sea porque el juego usa otro sistema distinto que no se ha concebido antes o bien por que la forma de trabajar no es la misma en todos los juegos. En este caso concreto el juego Mario Kart no era capaz de mostrar correctamente la imagen cuando el destello de la luz incidía en la pantalla, todo a raíz de cambiar como se procesan las copias EFB en la RAM y en la ruta de las texturas (esto lo hemos visto en otros dossiers). Tras investigar este error se llegó a la conclusión de que se estaban procesando copias en un formato distinto al que deberían, dando errores tales como mala iluminación o que el mapa de los personajes en el circuito se volatilizase. Phire (un habitual en Dolphin) ha corregido este error.

Activo desde la revision 8258.

 

dossierdolphin410dossierdolphin411
 

Otro de los cambios más interesantes que se ha añadido en Dolphin el mes pasado es el de poder usar los Wiimotes modelos RVL-CNT-01-TR, que sin duda, lo convierten en un fantástico agregado al emulador y a todas las personas que tengan instalados Windows 8 y windows 10 (los usuarios de Windows 7 no podrán utilizarlo). Para el que no sepa nada de porque es tan importante vamos a explicar un poquito todo lo relacionado con ello.

La emulación del Wiimote por parte de Dolphin se empezó a desarrollar hace muchos años (incluso no existía por aquel entonces Windows 7,8 o 10) por lo que RealWiiMote fue la solución que todos estábamos buscando para implementar nuestro mando de Wii en nuestro sistema operativo Windows y utilizarlo como un periférico más en nuestro catálogo. Gracias al MS bluetooth stack de Microsoft el proceso de implementar el mando es muy sencillo, y solo necesitamos de un conector bluethoot interno o externo para poder conectarlo. El problema vino a raíz de que Nintendo dejase de fabricar el modelo de mando para pasar a otra versión del mando de la consola, la que conocemos como RVL-CNT-01-TR (Wii Remote Plus) el cual si que se conectaba perfectamente en sistemas operativos Linux y OS pero que no era capaz de hacerlo con sisteas operativos Windows, teniendo que usar para ello el Toshiba Stack o la barra de dolphin directamente

Los programadores dieron por sentado que era imposible hacer funcionar este tipo de mando con el software de microsoft por lo que se fue dejando de lado.

Gracias a un nuevo colaborador llamado jloehr desde la revision 8325 todo esto ha sufrido un vuelco de tuerca importante, ya que ha sido capaz de reescribir un código usado en modelo de tesis que ha demostrado que las nuevas versiones de Windows (windows 8 y Windows 10) son capaces de detectar el Wiimote de la forma tradicional usando el software incluido por Microsoft. Gracias a sus esfuerzos ahora es posible conectar este tipo de mando en Dolphin a traves de adaptadores bluethoot estandard en windows 8 y windows 10, pero no solo eso, sino que se ha mejorado la emulacion del sonido del wiimote gracias a degasus y los métodos que manejan la iluminación del mando.

De todas formas para aclarar todo y deciros en el punto en que esta esto a día de hoy, decir que siguen exisitiendo bugs como por ejemplo que si un juego tiene caidas de frames el sonido del wiimote no se emule correctamente y que los wiimotes antiguos estan exentos de todas estas mejoras, al igual que los que los usen en sistemas operativos Linux y OS, puesto que su reprogramación en Dolphin ha sido exclusivamente para el software de S.O. Windows.

En windows 7 esta característica no ha sido posible de implementar porque con esta tesis se ha demostrado que existe un bug en esta versión de windows que impide la conexión de este tipo de mando en el sistema operativo.

 

Otro de los bugs que más se han comentado últimamente es uno que afecta al sonido de los juegos a través del emulador, ya que al parecer tras unos 90 minutos de juego se empiezan a producir errores en el sistema de sonido. Todo esto es relativo a la sincronía del audio que al parecer tras un tiempo prolongado empieza a producir bugs y latencia inusual que incluso puede hacer que el emulador deje de funcionar repentinamente.

Debido a esto se ha implementado a partir de la revision 8327 una opción oculta que permite modificar estos parámetros. Para los usuarios normales no es una cosa que podamos notar tan fácil, pero para los que estén jugando a juegos musicales o a otros donde se requiera precisión esta opción puede ser útil (creo que esta en el .ini de Dolphin)

 

Dolphin desde hace bastantes revisiones tiene desactivado el XFB (visto también en una entrada anterior) por el bien del emulador, ya que no son muchos los juegos que lo necesitan para ser correctamente emulados. Sin embargo hay otra serie de juegos que necesitan activarlo para mostrar una buena puesta en escena. La posibilidad de activarlo viene a través del .ini (si lo activásemos para todo en Dolphin la velocidad de emulacion sería seriamente menor, y si activásemos el progressive scan junto al XFB no tendríamos más de 30 frames en muchos juegos).  Esta introducción aunque no tiene nada que ver con lo que vamos a describir la veo necesaria para entender el porque de desactivar esa opción y la posibilidad de poder activarla a través del .ini

Dolphin al igual que otros muchos emuladores recurre a hacks para ejecutar algunos juegos (mame y algunas versiones derivadas también los usan), aunque desde hace un tiempo se ha primado la fidelidad de la emulación al uso de estos hacks, por lo que algunos juegos tienen que buscar formas distintas para conseguir emularse correctamente. El juego Sonic Megacollection que está emulado en otros sistemas producía un flickering (es una especie parpadeo molesto) en Dolphin y se emulaba usando uno de estos hacks de programación, pero gracias a todo lo explicado anteriormente y a algunos cambios hechos por booto el juego es perfectamente jugable desde la revision 8340

Con las correciones del juego anterior se había implementado un nuevo bug que afectaba a los juegos cargados con extension WAD, ya que estos hacían un uso de un hack para ver que región tenía el juego. Sin embargo la región del juego viene implícita en el wad por lo que no es necesario usar un hack sino hallar la forma de identificar la región sin hacer uso de el. Este fallo viene derivado de la programación primitiva de Dolphin (en principio fue diseñado solo para Gamecube) ya que se usaban o bien isos o bien archivos .dol (ejecutables de Dolphin) y estos últimos no llevaban la información de la región en el archivo.

Otro problema relativo al sonido es el de los ficheros ADPCM los cuales no suenan como deberian ya que en algunos casos se vuelve al inicio de la reproduccion antes de terminar la pista de audio. Una versión anterior de Dolphin (la 4.0.2) no tenía esta serie de problemas de forma tan acusada pero con los continuos cambios que se han ido introduciendo se han visto nuevos bugs que skidau y hk.konpie se han apresurado a corregir, aunque es posible que aun queden bugs en determinados juegos puesto que no se ha comprobado con la totalidad de títulos en dolphin.

Por último y aunque no menos importante se ha añadido la capacidad de Dolphin para usar fuentes de texto iguales que las originales (el tema de las fuentes es algo complicado puesto que no se puede distribuir el emulador con fuentes que tienen copyright, así que la posibilidad de incluirlas dentro del programa no es una opción valida)

Si las fuentes van dentro del juego y son propias no existe el problema, pero las fuentes del sistema de Wii o Gamecube si que lo serían. En el caso de Dolphin, se ha optado por usar Droid Sans pero no cogen el formato adecuado cuando se ven en pantalla.

Sin embargo el usuario Jhonn, ha dado con la tecla extacta para paliar este problema en el uso de fuentes. Como bien dijo, si alguien es capaz de dumpear la IPL de Gamecube (la IPL es el initial program loader, el cargador de inicio de programa que pone en funcionamiento la Gamecube, es decir, su BIOS) la cual contiene toda la información de las fuentes de la consola. Por lo cual si se implementan las fuentes sin hacer uso de la bios, dolphin podría cargar las fuentes sin ninguno de los problemas anteriores.

 

dossierdolphin48dossierdolphin49
 

Activo desde la revision 8488

Mira también

iNES 5.1

Nueva release de este emulador creado por Marat Fayzullin (desarrollador que ya hemos comentado en …

Snes9x 1.55

Nueva versión de este mítico emulador de Super Nintendo, que os recuerdo que llego a …

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *