![]() |
#21 | |
Marciano
![]() |
Hola Jeroni. No las he revisado, pero las especificaciones de vídeo que vienen en el enlace que has puesto supongo que serán las mismas que éstas. Sobre lo de que la resolución horizontal sea múltiplo de ocho recuerdo que viene algo al respecto en el XFree86 Video Timings HOWTO (aquí). Copio y pego:
Quote:
La versión anterior del WinModelines la probé en el PC de sobremesa, aunque no hice mucho más que comprobar que funcionaba. Te cuento... Dispongo de dos tarjetas ATI: una Radeon X300 de marca MSI en el PC y una Radeon Mobility 7500 en el portátil (un IBM Thinkpad T30). La cuestión es que en ambos casos usando el driver OEM (el driver suministrado por el fabricante; MSI e IBM respectivamente) el WinModelines no lo reconoce y muestra el mensaje de driver no soportado. Con la X300, si uso el driver descargado de la web de ATI el WinModelines lo reconoce sin problemas. Intenté probar lo mismo con el portátil, pero ATI ya no da soporte a la Mobility 7500 y no fui capaz de encontrar el driver apropiado. Los drivers del fabricante son el mismo de ATI, supongo que con ligeras modificaciones. Dichas modificaciones no creo que afecten al tema de los modos, al menos el Soft15 me funcionó bien con ellos. Las claves del registro correspondientes a ambos son las siguientes: X300.txt y Mobility7500.txt. Te comento todo esto por si ves que sería factible hacer más genérica la detección del driver, de manera que incluya a las versiones OEM. Claro, no sé si habrá este problema con todas las OEM, a lo mejor no. Saludos. |
|
![]() |
#22 |
Marciano
|
Hola zektor
Los múltiplos de 8 me suponia eso, porque ajustando los valores la imagen se desplaza de 8 en 8 píxeles. Al grabar el modo no es necesario hacer el número múltiplo de 8 porque ya lo hace el driver cuando usa el modo, supongo que simplemente ignora los 3 bits menos significativos, pero lo que haré es forzar a que el valor mínimo sea 8 para que nunca lea 0. Lo que comentas del tamaño es correcto, cuando más alta la frecuencia, más estrecha la imagen, siempre que el aparato no tenga alguna medida correctiva. El tamaño máximo dada una frecuencia es con el Márgen inicial a cero y el Márgen final el tiempo justo para que el haz vuelva al principio. Pero en una TV pueden aparecer problemas con esta configuración porque lo normal es que midan el nivel de negro durante los márgenes que indica la norma CCIR para compensar pérdidas y si hay vídeo, tomará un nivel de negro incorrecto y se oscurecerá el resto de la línea. Lo bueno del generador de modos es que no nos tenemos que preocupar de estas cosas, porque siempre genera el modo que queremos con los tiempos correctos para el dispositivo y además todos los modos generados deberían tener los mismos, es decir se acabó eso de reajustar potenciómetros para cada modo. Y referente a la detección de drivers OEM, no los detecta porque el valor ReleaseVersion no acaba en "-ATI". Todos los drivers de ATI acaban así, pero esas versiones OEM lo han cambiado por "-MSI" y en el otro lo han quitado. Supongo que si elimino esta validación no habrá problemas, a lo peor detectará driver ATI cuando no lo es :P Saludos! Editado por Jeroni Paul en 09-mar-2008 a las 15:30. |
![]() |
#23 |
Marciano
![]() |
Muchas gracias, Jeroni. Entonces ya sé cual es la solución en mi caso concreto. Probé sustituyendo "-MSI" por "-ATI" en esa variable del registro y ¡funciona!
![]() ![]() Saludos y muchas gracias de nuevo. Edito: Ayer hice la prueba con el portátil. Añadí "-ATI" a la clave del registro y también funcionó ![]() ![]() ![]() Saludos. Editado por zektor en 10-mar-2008 a las 16:34. |
![]() |
#24 |
Marciano
![]() |
Jeroni, perdona por la tardanza, he estado haciendo multitud de pruebas, te comento lo que he podido ver:
- Efectivamente, el driver virtualiza el modo cuando el margen inicial es insuficiente. Como han de ser múltiplos de 8, la diferencia mínima para que el margen inicial exista ha de ser 8. El único valor (horizontal) que no estoy seguro si ha de ser múltiplo de 8 es el total horizontal. Sería deseable que no tuviera esta restricción, porque eso limita mucho la precisión a la hora de ajustar el refresco vertical. - Si genero el modo como comentabas (monitor arcade standard), le resto la longitud de pulso al margen inferior y le sumo 7 a los valores correctos del modeline, obtengo un modo que funciona bien, sin virtualización, pero que no cabe en la pantalla, por mucho que corrija los potenciómetros. - Para obtener un modo que quepa en la pantalla, la suma del margen inicial + longitud de pulso + margen final ha de rondar los 14 us (13,5 para arriba). Esto contradice las especificaciones del manual de Hantarex, donde habla de un blanking horizontal de 12 us. - En las especificaciones de Atari, el vertical delay es 11,9, que coincidiría con el manual de Hantarex. Esos datos de Atari chirrían un poco, porque si bien para la resolución estándar se cumple que 63,6 = 46,9 + 11,9 + 4,7, los datos para la resolución extendida no cuadran: 60,6 < 48,0 + 11,9 + 3,9. Así que yo no tengo claro si el sync pulse hay que incluirlo en el vertical delay o no. - Los datos de Atari puede que contengan algún error, y aparecen copiados una y otra vez por internet. En esta página http://kirurg.org/emame/arcadetiming/ , el autor sugiere que posiblemente vertical delay = sync pulse + margen final. Eso se correspondería con lo que he observado en las pruebas con el monitor Hantarex, en donde los modos de la ArcadeVGA (que entran en la pantalla y quedan centrados) tienen una proporción entre margen inicial - long. pulso - margen final entorno a 2,0 - 5,0 - 7,0 a 2,5 - 4,7 - 6,8. Si bien he comprobado que mientras mantengamos la suma de estos tres valores entorno a 14, podemos bajar la longitud de pulso hasta 2,5, aunque no puedo garantizar que esto funcione en otros monitores. - Nuevo jarro de agua fría: he encontrado el límite para el número de modos de vídeo personalizados que permite el driver. En la versión 4.3 (drivers ArcadeVGA) el número máximo de modos que podemos definir es de 40. En versiones posteriores del driver, dicho límite se incrementa solamente hasta 60 modos. Lo que cuenta no es el número de claves DALNonStandardModesBCD sino la suma total de modos que se definan en ellas. Esto es una gradísima putada ya que frustra en gran medida nuestro empeño por generar todos los modos y refrescos necesarios para el Mame y resto de emuladores. La única solución que se me ocurre pasa por hackear el driver. - Tal como comentáis más arriba, los drivers que traen los ordenadores Dell también modifican la clave ReleaseVersión, en este caso cambian -ATI por -Dell. Deshaciendo el cambio se consigue hacer funcionar Winmodelines. Espero que te sea útil. Saludos! Calamity |
![]() |
#25 | |
Marciano
![]() |
Quote:
Por lo que he entendido la velocidad del haz es constante, y para aumentar la frecuencia horizontal (que quepan más líneas horizontales por segundo), lo que hacemos es estrechar el recorrido horizontal que describe éste por la pantalla, de ahí que se estreche la imagen al aumentar la frecuencia ¿Estoy en lo cierto? En ese caso, el retorno del haz también sería más corto al aumentar la frecuencia. ¿No debería entonces acortarse el blanking horizontal proporcionalmente, aunque sea poco? ¿O debe mantenerse constante, por ser un valor fijo? Saludos, Calamity |
|
![]() |
#26 | |||||||||||
Marciano
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
margen final = vertical delay - sync pulse Lo correcto según dicho más arriba seria vertical delay = margen final. Quote:
Quote:
Quote:
Quote:
Quote:
Gracias! Editado por Jeroni Paul en 11-mar-2008 a las 01:17. |
|||||||||||
![]() |
#27 | ||||||||
Marciano
![]() |
Hola Jeroni, quise sintetizar el tema porque no tenía tiempo, lamento haber enredado el asunto, verás como realmente hablamos de lo mismo.
Quote:
Quote:
![]() Una posible explicación es que en efecto el pulso horizontal esté incluido en los 12 us de blanking horizontal... peeero que la electrónica de la Ati necesite generar ese margen inicial adicional de 2 us por alguna razón (como tú sugerías), Quote:
Quote:
Como desgraciadamente no disponemos de la documentación necesaria, no podemos más que basarnos en estas comprobaciones empíricas, y una buena base pueden ser los modos de la ArcadeVGA, que teóricamente deben de funcionar en multitud de monitores arcade diferentes. Quote:
Quote:
Lo que pasa es que si te excedes en el número de modos el programa devuelve el error de "modo no soportado". Hasta que descubrí el problema me volví loco pensando que se trataba de un error en la definición del modeline. Quote:
Quote:
Bueno, eso era todo, saludos! Calamity |
||||||||
![]() |
#28 |
Marciano
![]() |
Perdonad la interrupción: sois la hostia.
Ya, ahora sí podeis seguir, máquinas. |
![]() |
#29 | ||||||||
Marciano
|
Quote:
![]() Quote:
Quote:
Quote:
Quote:
Quote:
Por otro lado, una avería común en los circuitos de deflexión es por el desgaste de condensadores electrolíticos y causa que el retrazado sea más lento. En los televisores viejos no es raro ver líneas de retorno en la parte superior de la imagen, muy similares a las que tenías. Con eso no quiero decir que sea ese tu problema, pero sí poner sobre la mesa este hecho. Quote:
![]() No creo que se pueda mover ese área de memoria, pero con un poco de suerte no sea nada importante lo que hay ahí. Jupe, me estás animando a intentar desensamblar los de la Rage para ver porqué ignoran los modos que se le meten :P ... otro día... Quote:
Saludos! |
||||||||
![]() |
#30 |
Marciano
![]() |
Buff!!Estoy flipando.....Sois grandes, todo por la comunidad marciana...
Un saludo!! |