Regresar   Foro de marcianitos.org > Emuladores y programas de todo tipo > Emuladores > MAME

 
 
Old 20-jul-2008, 23:09   #1
master higgins
Usuario registrado
Llave Mejor configuración de timings para refresco vertical

Hola, he averiguado en esta página algunos trucos de como eliminar efectos no deseados en la emulación, como el efecto tearing (raya de retraso, se ve sobre todo en juegos con scroll horizontal como el wonder boy) y retrasos molestos en la emulación (frames repetidos y esas cosas). Por lo que pude deducir, esos consejos están basados para usuarios que utilicen monitores de PC, pero no para los que utilizan monitores arcade o TV's.

Resulta que tengo una TV de 29" que pesa como sus muertos (más de 40kg) y lo ideal es que los juegos verticales los jugara con la pantalla girada, pero no tengo ni la fuerza suficiente ni un mueble adecuado para dejarla girada. Al jugar con la pantalla girada, juegos como el gun smoke que usan modos de 224x256 a 60Hz utilizarían el modo 256x224 a 60Hz pero con la opción -rol o -ror de mame, teniendo el mismo refresco que el monitor para evitar esos efectos molestos de timings.

Dado lo anterior, al estar la tele muy difícil (y peligroso pues me la puedo cargar si se me cae) girarla, estoy obligado a correr ese tipo de juegos con un modo que me de el mayor número de lineas visibles en progresivo (en este caso, <algo>x256@55Hz, ejemplo: 256x256@55Hz). Justamente el problema es que al contrario de lo que ocurre con monitores de PC, es que en las TV's y monitores arcade los refrescos verticales más altos soportados rondan los 64 a 66Hz. Usar la técnica de la página de elegir un modo con alto refresco vertical (85Hz sugieren ellos) para usar la técnica "both timers" (es decir, mantener la velocidad original del juego) haría que se repitan frames, pero al ser tantos repetidos por sugundo, es mucho menos notorio que si se repitiera uno solo cada segundo. Llevar a cabo esa técnica me es imposible, ya sea porque un modo de 85Hz o cercano no lo soporta mi TV, o bien generar un modo de 256x256@60Hz llevaría al límite las capacidades de la tele (256x256@60Hz implica un refresco horizontal de 16,67 Khz más o menos) pudiendo quedar fuera de sincronismo.

Agréguenle a esto lo MÄS MOLESTOSO DE TODO: Cuando la velocidad del juego no es cercana a 100% (muy bajo o muy alto) el sonido queda muy desfasado, produciendose unas pausas terribles o bien eschandose como disco rayado, repitiendose sonidos o trozos de la música de fondo

¿Como lo puedo hacer para correr juegos de 224x256@60Hz (gunsmoke, 1942, circus charlie, entre otros) con un modo como 256x256@55Hz fluido y sin problemas en la sincronizacion del sonido?. ¿Estaré obligado a crear un modo lo más cercano posible poniendo al límite a lo que pueda sincronizar mi tv (16,67Khz refresco horizontal teóricos, que venga, todavia no lo he probado)? ¿O hay alguna técnica para que el sonido quede sincronizado sin sufrir el efecto tearing?

Saludos!
Gracias por vuestra ayuda!
   
Old 21-jul-2008, 21:58   #2
Radaxian
Marciano
 
Avatar de Radaxian
Hola Master Higgins

Lo primero agradecerte la página,que está muy interesante,voy a ir repasandola cuando tenga un rato

Como tu sabes de estos temas muchísimo más que yo,con la mayor humildad te comento mi punto de vista y mis experiencias con este asunto

Francamente no sé ninguna tecnica o paso concreto para que no ocurra ese problema,en mi caso hace varios años,me pasó algo muy parecido con los juegos verticales a la hora de jugar en la televisión (sobre todo con "Mad Gear",que es una de mis pasiones) en ese momento utilizaba una Voodoo 3,su salida de TV es competente,más tarde instale una TNT2 y utilizando "TV Tool" quede muy satisfecho,como yo lo veia en ese momento y lo sigo viendo a día de hoy, más allá de resoluciones y refrescos, (sin quitarle su importancia) el verdadero dilema viene cuando te das cuenta de que,si descartas "voltear" el monitor para que los juegos se vean en su formáto original,en principio únicamente nos quedan dos opciones,o disfrutamos del juego con unas franjas negras enormes a ambos lados o bien lo "deformamos" apaisandolo para que la imagen aproveche toda la pantalla,aunque no haga falta me explico;

Como es lógico si no se "toca" nada veremos nuestro juego así



¿que hacía para cambiar la situación alguien con tan pocos conocimientos en video como yo? intentar cambiar el formáto desde Mame,accedi a las opciones por defecto de video y desmarque la casilla "Enforce Aspect Ratio"



ajustandolo a 640x400/32 Bit/60Hz y poniendo tambien el escritorío a 60 Hz (dolor de ojos garantizado ) siendo este el resultado



Está claro que no es la mejor forma de jugar y menos a un juego de coches como este,ya que pierdes el radio de acción de los movimientos,creando un nada deseable efecto "borrachera" ,porque te sientes deshubicado controlando el bólido,en juegos como "Commando" o 1943 (de hecho con los "Capcom Generations" ocurría esto mismo,pero claro,era configurable) y de disparos o acción en general,sí es más factible jugar con este pantalla deformada,pero con el resto no del todo. Es un tanto incómodo,pero quizá este método te sea útil para algunos juegos.

La verdad es que finalmente opte por dejarlo con su aspecto largado y con una resolución de 320x240 y refresco 60Hz y bueno tuve puntualmente algunos problemas de descoordinación de sonido,pero ocurría por el escaso procesador del PC (creo) por supuesto tambien tuve (por si todo esto no fuera poco) un desagradable "flirteo" con el maldito efecto "Tearing" que se dejaba ver patentemente sobre todo en juegos como "Dragonninja" y "Superman" (las fases de vuelo eran un suplicio) opte por poner el refresco y resolución más bajos que pude,pero ni así siquiera,por eso me interesa mucho la página que nos has facilitado

(Nota:Curiosamente jugar en cualquier TFT es una delicia,el scroll suele ir tan perfecto,que parece que lo que tienes delante es la placa.... será por el escaso refresco y resolución?? )

Yo no sé practicamente nada de Winmodelines,no creo que te sirvan para que no se desincronice el audio,pero a lo mejor si te ayudan a perder menos frames,tambien se me ocurre que haciendo un poco de "overclocking" al Mame podrías ganar sincronización,por si no lo conoces para ajustarlo,una vez dentro del juego pulsamos la tecla ª º / (esta justo encima del Tabulador) ya en el menu,bien con el gamepad o las crucetas de dirección buscamos "Overclock CPU" y tanto el "CPU0" como el "CPU1" los ponemos a tope



En principio los juegos tendrían que ir un poco más fluidos,yo lo he hecho en el ordenador más antiguo que tengo (un Duron a 600 Mhz con 320 Megas) y en títulos complejos como "Outrunners" se nota cierta mejoría

Otras opciones para lograr la sincronización,pueden seguir pasando por configurar aspectos de Mame en los campos "Display" y "Advanced" lamentablemente no conozco a fondo estos apartados y no puedo dar una opinión totalmente válida,de veras que siento no poder aportar más.

Un Saludo

Editado por Radaxian en 21-jul-2008 a las 22:28.
   
Old 22-jul-2008, 00:25   #3
pimiento
Marciano
Hola radixan mira he intentado hacer lo de forzar la CPU en la opcion la tecla que dices tu la que esta encima del tabulador pero no me sale esa opcion me sale para dar mas sonido el contraste y el brillo me lo puedes explicar mejor que raro tengo diferente versiones del mame pero esa opcion de forzar la cpu no sale
Gracias
   
Old 22-jul-2008, 00:46   #4
Radaxian
Marciano
 
Avatar de Radaxian
Buenas amigo. Es sencillo,como ya has hecho,con la tecla en cuestión sacamos este menu rectangular (una vez dentro del juego)y seguidamente pulsamos hacia arriba o abajo para ir elijiendo el apartado que deseemos e izquierda y derecha para aumentar/disminuir el valor, voy a intentar grabar un micro-video para que lo veamos mejor



Es importante no intentar jugar mientras se muestra este menu,ya que controlaremos ambas cosas a la vez,juego/menu y puede ser un verdadero lio,basicamente este ajuste es muy útil en máquinas modestas o en juegos muy complejos de emular.


Un Saludo

Editado por Radaxian en 22-jul-2008 a las 02:06.
   
Old 22-jul-2008, 04:40   #5
master higgins
Usuario registrado
Llave Encontre una solución (aunque pueden haber mejores)

Hola, he optado por esta opción:

Para el siguiente modo:

Code:
Modeline "256x256@54,9Hz 15,7KHz (60Hz)" 5.280 256 285 310 336 256 266 269 286  -hsync -vsync
configuré el juego para que este se ajustara al refresco del monitor, de la siguiente manera, accediendo con la tecla "ª" (para algunos es la "º" o la "\", en fin, la tecla justo debajo de la tecla "esc")



con las opciones -waitvsync y -syncrefresh activadas

El resultado es un juego perfectamente sincronizado con el sonido, sin efecto tearing ni nada molestoso. Pero como nada es gratis en este mundo, el precio es que el juego no correrá a la velocidad original. En este caso, el vulgus corre a 60Hz y lo estamos haciendo correr a 55Hz, lo cual es un 90% de la velocidad original, pero el beneficio de correrlo fluido, sin tearing y con sonido perfectamente sincronizado es impagable .

Esta técnica es casi exclusiva para juegos verticales de 256 líneas de alto, es decir, resoluciones de <ancho>x256. He visto muchísimos de 224x256 que caen en esta categoría. Lamentablemente para juegos verticales de un alto mayor (como el exerion a 224x320@61,42Hz) habrá que jugarlos o entrelazados o girando la pantalla.

Los juegos verticales con 240 pixeles de alto como el ladybug, mrdo, etc no habría que hacer muchas modificaciones, ya que con este modo:

Code:
Modeline "240x240@60,0Hz 15,7KHz (60Hz)" 5.030 240 268 291 320 240 243 246 262  -hsync -vsync
Está muy cercano al refresco original del juego (el ladybug y mrdo corren a 60Hz), por lo que no habría que modificar el parámetro "screen refresh rate". Bastaría con dejar las opciones -waitvsync y -syncrefresh activadas.

Ahp, y se me olvidaba que estos tios del mame no implementaron guardar la configuracion del "screen refresh", es decir, si cambias el refresco digamos de 60Hz a 55Hz y te sales del juego, al iniciarlo nuevamente parte con los 60>Hz en vez de los 55Hz guardados. Para esto agregue las siguientes líneas en "video.c" en la carpeta src\emu del mame:

En la línea 25 o cercana a los "includes"
Code:
#include "config.h"
Al final del método "video_init" (línea 388 o cercana, despues de video_movie_begin_recording(machine, 0, filename); y antes de la llave }

Code:
	
config_register("video", video_load, video_save);
y todo este código (dos métodos) al final del archivo, pero ANTES de la parte que pone:


/********************************************************************** *****
SOFTWARE RENDERING
********************************************************************** *****/

Code:
/*-------------------------------------------------
    video_save - save data to the configuration
    file
-------------------------------------------------*/
static void video_save(int config_type, xml_data_node *parentnode)
{
	video_private *viddata = Machine->video_data;
	internal_screen_info *info = &viddata->scrinfo[0];
	float refresh = ATTOSECONDS_TO_HZ(info->state->refresh);
	/* we only care about game files */
	if (config_type != CONFIG_TYPE_GAME)
		return;
	/* iterate over mixer channels */
	if (parentnode != NULL) {
		xml_data_node *refreshnode = xml_add_child(parentnode, "refresh", NULL);
		if (refreshnode != NULL)
		{
			xml_set_attribute_float(refreshnode, "value", refresh);
		}
	}
}
/*-------------------------------------------------
    sound_load - read and apply data from the
    configuration file
-------------------------------------------------*/
static void video_load(int config_type, xml_data_node *parentnode)
{
	xml_data_node *refreshnode;
	float refresh;
	video_private *viddata = Machine->video_data;
	internal_screen_info *info = &viddata->scrinfo[0];
	/* we only care about game files */
	if (config_type != CONFIG_TYPE_GAME)
		return;
	/* might not have any data */
	if (parentnode == NULL)
		return;
  refreshnode = xml_get_sibling(parentnode->child, "refresh");
  refresh = xml_get_attribute_float(refreshnode, "value", 60.0);
	info->state->refresh = HZ_TO_ATTOSECONDS((double)refresh);
}
Bueno, ese es mi granito de arena. Espero les ayude a jugar más cómodamente.
   
Old 22-jul-2008, 15:26   #6
pimiento
Marciano
Radaxian pues chico a mi me sale todos los menus menos lo de la cpu0 y cpu1
y tengo cuatro versiones del mame la 088 tambien tengo Mameplus
que version tienes tu
   
Old 22-jul-2008, 21:07   #7
Radaxian
Marciano
 
Avatar de Radaxian
Magnífico como siempre Master,muchas gracias por la aportación (ya mismo le doy caña a la tele como en los viejos tiempos,voy a ir trasteando )

Que tal Pimiento,pues si amigo,se me ha vuelto a pasar otro detalle por alto y es que resulta que esta opción solamente la tienen algunas (o eso deduzco despues de investigar) versiones "Plus" de Mame y no las "oficiales" disculpa tio sin embargo la 0.124 Plus tampoco trae esa opción de overclock a las malas tendrás que conseguir algunas versiones más antiguas,voy a mirarlo porque me doy cuenta de que no lo tengo nada claro,normalmente suelo utilizar la versión 0.82 Plus o la 0.81 "a secas" (que no es Plus vaya) una de mis últimas adquisiciones a sido la alucinante versión 0.125u4 Plus,modalidad "EXtended" que significa que ademas de los arcades (casi 8000) puedes jugar a un montón de consolas,como la Master,Super,Game Boy Advance,Turbo Grafx y varias más,es muy muy recomendable (aunque no tiene opción de "Over" )

Un Saludo Señores

PD:Si no encuentras versiones más antiguas,puedo subir mi Mame a megaUpload ((aclaro que sin Roms/fotos ni nada)) y solucionado,en tal caso lo podemos hablar por privado si no tienes inconveniente
   
Old 22-jul-2008, 22:07   #8
pimiento
Marciano
Radixian pues si me haces el favor te lo agradeceria queme pasaras la version del mame que me dices te doy la gracias de antemano
   
Old 24-jul-2008, 02:32   #9
tony_montana
Marciano
 
Avatar de tony_montana
Quote:
Originalmente publicado por pimiento Ver post
Radaxian pues chico a mi me sale todos los menus menos lo de la cpu0 y cpu1
y tengo cuatro versiones del mame la 088 tambien tengo Mameplus
que version tienes tu
Este...yo en mi version de mame (la 71) no puedo acceder a esa opcion sin tener el archivo cheat.dat...Si no tengo ese archivo me es imposible... no hay manera...,pero teniendo ese archivo (cheat.dat) entro sin problemas a esa opcion...
Intenta hacer eso por si las moscas.