Habi Hablóg
Declaro:
XML válidoXHTML válido800x600 +
RSS válidoCSS válidoNavegador digno
  Blog   Archivo   Contacto   Administración  

Acerca de

Matemático, informático, aficionado a la electrónica, friki... y otras cosas que no vienen a cuento ni pasan los filtros de palabras.

¿Queríais un blog? Ahí va.

Red antisocial

¡Me van a volver loca! 2.0
La Fragata Portuguesa

Z
¡Me van a volver loca!

Últimos posts

El expediente X que nadie pidió
eNigma
La cuadratura del píxel
Portando desde Spectrum
Inexorable

Últimos comentarios

Habi
NoSupoResolverLaFuncion
Edu
Habi
EnriqueGG

Calendario

No hay fechas.

Categorías

Chorradas
Paranoias
Posts lúcidos
Tecnoesoterismo
Yuyus

Cenas de Abj

Abj debe 7 cenas.

Frase célebre

Abjurador dice: Pero vamos, una comida puede valer.

Resoluciones

Habi - 22/04/2008 14:08:02 - Tecnoesoterismo

Hace poco me ha dado otro de mis yuyus. Me he vuelto a instalar el Dungeon Keeper, el primero, el original, el único e inimitable.

Funciona perfectamente en vista, al contrario que XP. Sólo tenía un pequeño detalle: no se veían los videos, el monitor se salía de rango.

Así que nada, me hago un programilla para comprobar los modos de video, y veo que desde 320x200 hasta 400x300 no funcionan, para cualquier frecuencia vertical.

"Ya estamos", pensé. Me bajé drivers nuevos y pasé de la 163.leches a la 169.mierdas.

Pongo el DK… ¡y no funciona! Trozo de pantalla negra (la ventana de fondo, para DX, bajo un thread dedicado que tarda en cerrarse) y adiós.

Lanzo de nuevo el programita, y esos modos han desaparecido. Entonces lo entiendo todo: no están duplicando scanlines, luego claro está, es imposible lograr 320x200 en cualquier monitor de EGA para arriba, modo que utiliza el juego para los videos, que por cierto, son smacker.

"¿Pero qué dices? Yo he jugado juegos 320x200 en mi ordenador", dirán algunos. En efecto, pero el monitor NO lo soporta, es la tarjeta gráfica la que lo arregla.

Un cálculo rápido nos dice que 320x200 requiere una frecuencia horizontal de unos 15Khz; mira el manual de tu monitor, como cota inferior tendrá 30Khz o así.

En los tiempos de la CGA, el monitor tenía las frecuencias de una televisión NTSC, de ahí los 60hz y los 15KHz. Pero era una frecuencia fija.

Para evolucionar y permitir más modos hay que usar una frecuencia variable. Y eso implica estar entre ciertos valores. Para hacer los modos de poca resolución, la BIOS hace que la tarjeta gráfica duplique scans: el modo 320x200 es realmente 320x400, sólo que cada scanline se envía dos veces: doble pixel clock, misma frecuencia  vertical -> doble frecuencia horizontal, y pasamos de 15 a 30Khz, valor permitido por casi cualquier monitor.

Volviendo al problema con los drivers, esto rompe la compatibilidad con muchas aplicaciones antiguas (vale, juegos retro). Mi primera solución fue añadir a mano los modos de video en el registro, pasando de tocar el .inf del driver y reinstalar. Reinicio y funciona, volvemos al caso de las 163.leches. Funciona, pero fuera de rango.

Finalmente, miro las versiones beta y me bajo la 174.pollas. ¡Aleluya! Han vuelto a poner la opción de añadir modos de video a mano. Pongo los valores físicos para el hard del modo 640x480x75hz pero los lógicos del de 320x200... No sólo funciona, sino que estira el trozo de pantalla para que ocupe todo. Qué detalle, permiten spanning negativo automático. De nuevo ese DK de moda y videos a pantalla completa.

Y todo esto porque no me dan la opción de doblar scanlines en el secuenciador (puerto 3C4h; índice 1, bit 3). De paso añadí 320x240, 640x400, etc. basados en 640x480 y 400x300 y tal basados en 800x600.



Post cerrado