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

 
 
Old 26-abr-2008, 18:57   #1
TheManuel
Usuario registrado
Pregunta sobre winmodelines

Hola.

Con suerte agarraré a Jeroni o alguen más que sepa y me pueda ayudar.
Estoy tratando de añadir resoluciones al registro en XP y tengo una tarjeta ATI Radeon 7500.
Me interesa especialmente añadir moodos de baja resolución similares a los que traen la mayoría de las tarjetas de video como 320x240. Cuando MAME usa estos modos, el video se genera en esa resolución pero la tarjeta luego los dobla a 640x480. La ventaja de esto es que en una computadora tan vieja como la mía, el procesador pasa mucho menos trabajo generando ese modo de 320x240 que si escogiera 640x480 directamente.

Ahora bien, estoy tratando de generar mis propios modos para que la imagen ocupe la pantalla entera (o la mayoría) de mi TV a través de la conección S-video de la tarjeta pero sin tener que utilizar "hardware stretch" el cual suaviza la imagen y hace que se vea un tanto borrosa.

Anoche utilizé Winmodelines para añadir la siguiente resolución:
modeline "384x224@60" 15.1051 384 392 448 480 224 229 230 245 -hsync -vsync doublescan
La resolución se registró y la puedo seleccionar con MAME. Sin embargo, noté que cuando reviso el estado del video utilizando lo controles del monitor de la computadora, sale que el modo está corriendo a 120Hz.
De hecho, en el registro en la llave DALNonStandardModesBCD donde se añaden los modos (en el caso de tarjetas ATI), se puede ver que el modo fue espcificado a 120Hz.
Eso contrasta con las resoluciones bajas incluídas con el driver de la tarjeta como 320x240. Cuando uso esta, el monitor indica que está corriendo a 640x480 a 60Hz.

¿Acaso los dos modos de doblar la resolución son diferentes?
¿Hay alguna diferencia entre simplemente añadir el modo a 120Hz versus usar el modeline que mencioné arriba?

Muchas Gracias.
   
Old 27-abr-2008, 01:27   #2
Jeroni Paul
Marciano
Hola

Entiendo que el modo se te ve bien ¿no?

Lo que ocurre es que el modo que pusiste (ignorando lo de doublescan) es de 128Hz de vertical y la idea es que la tarjeta haga doublescan. Al doblar las lineas por hardware, la frecuencia de refresco bajará a la mitad (64Hz) que creo ya es lo que te ocurre y es lo deseado. Winmodelines cuando calcula la frecuencia de refresco no tiene en cuenta lo de doublescan (entre otras cosas porque no tenía muy claro como funcionaba y nadie se ha quejado) y como no le indicas otra cosa lo inserta como de 128Hz.
Si te va bien el modo lo puedes déjar así, pero si quieres que te salga como si fuera de 60Hz pónselo entre paréntesis al final de la descripción:

modeline "384x224@60 (60Hz)" 15.1051 384 392 448 480 224 229 230 245 -hsync -vsync doublescan

Seguramente se deba corregir este cálculo en Winmodelines.
   
Old 27-abr-2008, 04:09   #3
TheManuel
Usuario registrado
Gracias por tu respuesta, Jeroni.

Sí esta funcionando bien el modo en el monitor de PC pero no he tenido oportunidad de probarlo a través del TV-out ya que no he estado en casa todo el día.

Voy a probar tu sugerencia ahora y me comunico luego (imagino que estarás durmiendo mientras escribo esto ya que estás en España).

Parece que estoy un tanto bruto con esto de las modelines ya que pensé que 15,105Hz dividido por 224 me daba 67Hz y esa sería la tasa de refresco en vez de 128. Voy a tener que leer un poco más sobre lo que cada número representa.

Gracias.
   
Old 27-abr-2008, 18:39   #4
Jeroni Paul
Marciano
Hola

Se calcula así: los 15,105 MHz son el número de píxeles que emite la gráfica en un segundo, es decir 15105000 píxeles/seg.
Una línea entera, incluído el tiempo de pulso y de retorno toma 480 píxeles, y por lo tanto tarda 480 px / 15105000 px/s = 0,00003177 segundos.
Su inversa es la frecuencia: 31468,75 Hz.

Ahora que sabemos el tiempo que toma una línea, podemos calcular el tiempo de cuadro sabiendo que cada cuadro tiene 245 líneas. El tiempo de cuadro es 245 * 0,00003177 = 0,00779, y por lo tanto la frecuencia es de 128,4 Hz.

Pero al especificar doublescan, la gráfica pondrá dos líneas donde había una, por lo tanto el tiempo de cuadro será el doble, y la frecuencia la mitad.

Saludos
   
Old 28-abr-2008, 16:36   #5
TheManuel
Usuario registrado
Gracias Jeroni.

Durante el fin de semana pude entender mejor como funcionaba todo. Sin embargo, no creo que lo de "doublescan" esté funcionando como lo describes. El modo que mencioné anteriormente corre a 128Hz en vez de la mitad aún cuando lo genero de la forma descrita.

Cuando dije que el modeline que mencioné me estaba funcionando en el monitor de la PC, estaba equivocado. El que me había funcionado era uno de 288 líneas verticales. Mi monitor de computadora tiene un límite aproximado de 120Hz y cualquier modo mas rápido cae fuera de "range". Ahora bien, mi propósito final es usar el S-video y para esto aún los modos CGA son procesados y convertidos por el sistema de "TV-out" y se ven en el TV a pesar de que no se vean en el monitor de la PC.

El problema que sigo teniendo es que cuando trato de usar modos con tasas de refresco altas (incluyendo 411x240@120), la señal de S-video me corta la imagen un poco alrededor de los bordes. Sin embargo cuando usos los modos integrados del driver como el de 400x300, la imagen se ve completa. Es por eso que tengo esperanza de que si genero los modos doublescan (presumiendo que así funcionan los modos integrados), podré tener la imagen completa y tendré mejor control de como se llena la pantalla del TV.

Alguna sugerencia sobre qué puedo intentar para lograr esos modos "doublescan"?

Gracias.
   
Old 28-abr-2008, 22:45   #6
Jeroni Paul
Marciano
Hola

A mi nunca me ha funcionado lo de doublescan, el parámetro activa un bit de un valor del registro que supuestamente hace esto según el ATI mode maker, pero no lo he visto funcionar nunca. El driver ignora ese parámetro y hace doublescan automáticamente para algunas resoluciones, 320 de horizontal y no sé si alguna más. Pero lo hace mal ya que sigue los tiempos que se le indican y a la vez dobla las líneas o sea que en la salida VGA solo se ve la mitad superior. Así pues como mucho puedes probar eso y ver si la salida de TV es como quieres. A parte de eso creo que para usar otras resoluciones no queda otra cosa que el doblado por software, que si se hace entero debería gastar poca CPU.

De todas formas no sé si la conversión que realiza en su salida de TV te puede dar señal progresiva y sin escalado para que se vea nítida.

Editado por Jeroni Paul en 28-abr-2008 a las 22:48.
   
Old 28-abr-2008, 23:21   #7
TheManuel
Usuario registrado
Quizás será por la computadora tan vieja que tengo para incorporar en la máquina de arcade que estoy construyendo (PIII-800MHz) pero si trato de jugar, por ejemplo, ssf2t en 800x600 en vez de 400x300, paso de 150% a 100% en la pantalla donde se añaden los crédito. Por supuesto, una vez paso esta pantalla, el desempeño es aún peor. Éste es el doblado por software al que te refieres, ¿correcto?

Según tu experiencia parece el driver no hace doublescan de resoluciones aparte de las integradas:
320x200
320x240
400x300
Esto mataría mi plan.

Todavía seguiré tratando un poco más a ver que resuelvo pero se me están agotando las opciones. En última instancia, me tendré que conformar con "hardware stretch", aspect incorrecto o desistir del uso del TV.

Te agracezco toda la ayuda que me has brindado.
   
Old 29-abr-2008, 01:29   #8
Jeroni Paul
Marciano
Hola

A mi me extraña que sea tan lento escalando a esas resoluciones, ya que el escalado lo hace la gráfica (si el programa usa DirectX). Nunca he tenido problemas en este sentido, incluso en PCs viejos.

La otra cosa sería descubrir qué hay que ponerle en el registro para que funcione ese doublescan, no sé, quizá hay que doblar artificialmente la resolución manteniendo el número de líneas. Mañana lo probaré a ver si funciona.
   
Old 29-abr-2008, 05:41   #9
TheManuel
Usuario registrado
Quote:
A mi me extraña que sea tan lento escalando a esas resoluciones, ya que el escalado lo hace la gráfica (si el programa usa DirectX). Nunca he tenido problemas en este sentido, incluso en PCs viejos.
Pues a mi también se me hacía extraño. Cuando uso el parámetro -verbose en MAME, se muestra el tamaño del "blitting surface" utilizado (lo que sea que signifique), y si uso 320x240 pue ese es el tamaño mostrado y funciona mucho más rápido.[/quote]

Quote:
La otra cosa sería descubrir qué hay que ponerle en el registro para que funcione ese doublescan, no sé, quizá hay que doblar artificialmente la resolución manteniendo el número de líneas. Mañana lo probaré a ver si funciona.
Algo que probé hoy fue utilizar soft15kHz y logré añadir 384x224 con doublescan pero no fue una panacea. Con sólo el monitor conectado, se lograba el modo y el monitor mostraba 64Hz. Sin embargo, la imagen salió como habías descrito, con la mitad inferior de la pantalla en negro. Para añadir a mi miseria, cuando añado el TV, así sea como clon o sin el monitor, MAME no quiere usar el modo y busca uno que le guste automáticamente.

Todo parece en mi contra y lo único que me motiva a seguir intentando es los modos de baja resolución integrados de la tarjeta. Si tan sólo hubiera una forma de recrearlos y modificarlos a las resoluciones que necesito...
Quizás esto es una función "hard-coded" en la tarjeta y no hay forma de reproducirlo externamente.

Gracias.
   
Old 29-abr-2008, 19:52   #10
TheManuel
Usuario registrado
Aparentemente, si uso ddraw estoy destinado a reducir el desempeño del sistema:
http://www.mameworld.info/ubbthreads...ew=#Post150530

Voy a jugar un poco con d3d pero en el pasado no me ha dado buenos resultados en términos de la calidad de la imagen.