Regresar   Foro de marcianitos.org > Construcción y restauración de máquinas recreativas > El vídeo

 
 
Old 14-oct-2008, 10:56   #1
francisquino
Usuario registrado
1942 no se ve bien

Hola. Estoy acoplando todos los elementos de la maca, el S.O., el sonido, video ...

Estoy usando AdvMenu y AdvMame, estoy probando la versión DOS y la XP. En el fichero .rc he metido los diversos modos gráficos para el monitor arcade.

El juego 1942 no se veía. Vi que la resolución gráfica (224x256) no aparece en la lista de modos que he copiado en el fichero .rc. Así que con el winmodelines obtuve los datos para crear una nueva entrada.

Al ejecutarlo se veía, pero mal. No tengo fotos así que intentaré explicarlo: La imagen aparece como dividida en dos conjuntos de líneas. Hay una especie de desplazamiento horizontal de las pares respecto a las impares. Parece como una especie de cremallera.

Imagino que falta algo, o algún dato está mal en la linea que he insertado.

Editado por francisquino en 14-oct-2008 a las 12:29.
   
Old 14-oct-2008, 20:55   #2
Radaxian
Marciano
 
Avatar de Radaxian
Buenas,el problema puede venir porque el juego tiene un formato vertical en vez de horizontal y utiliza esa resolución de 224x256,como es un tema que todavia no manejo,me tomo la libertad de citar al marciano Master Higgins que se trabajo un útil tutorial que pienso te puede ser útil,detesto citar pero no me queda más remedio,porque en el hilo original posteo y por mi desconocimiento me voy por donde no es y ese post te va despistar

dejo por si las moscas el tutorial marciano sobre Winmodelines,cortesía de Jeroni Paul

http://www.marcianitos.org/tutoriale...nes-manual-uso

------------------------------------------------------------------------

Quote:
Originalmente publicado por master higgins Ver post
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.

Editado por Radaxian en 14-oct-2008 a las 20:58.
   
Old 15-oct-2008, 09:18   #3
francisquino
Usuario registrado
Muchas gracias por la respuesta.

Ayer puse el R-Type y pasaba lo mismo, y es un juego horizontal.

Probaré todo lo que has citado.

Un saludo.