Zona Arcade. Construye, Restaura y Decora tu Máquina Arcade y Pinball.

Uso resoluciones 15khz y refrescos nativos Ati/Hypersin/driver Calamity, Ampliación tutorial Nickelo para Hyperspin y trucos

« Older   Newer »
  Share  
Cosgarion
view post Posted on 20/4/2013, 12:01 by: Cosgarion     +1   -1


Group:
Member
Posts:
469
Location:
Murcia

Status:


Buenas,

Si no tienes WindowsXP de aquí para abajo no sirve para mucho.

Enlaces de interes:

Tutorial original Calamity - descarga de drivers y vmmaker

Tutorial ZonaArcade driver Calamity generando INI´s (no optimizado Hyperspin)

Foro Groovymame (en inglés)

Hilo oficial de información de instalación y configuración de todo esto (en inglés)

Repositorio Groovymame en Googlecode

Información técnica - nivel avanzado ehh

Drivers modificados por mi para Sapphire HD4770 (Catalyst 9.3 y Windows XP32)

¿Por qué?:

Todos tenemos claro que los 15khz son necesarios para el uso de monitores arcade/TV CRT pero muchos no tienen en cuenta la importancia del refresco, de los Hz de cada juego arcade.

Un romset tiene unos 600 modelines únicos entre resoluciones y refrescos. Esta cifra excede por mucho la capacidad de cualquier driver de video. Por dicho motivo hay que reducirlos a los más importantes o usar unos modos que crean dinamicamente la resolución.

Creo que podemos clasificar a los usuarios de mame en diversos grupos según como tienen ajustado el video/refresco:

- 15khz con CRT y mame configurado todo a 640x480 entrelazado
- 15khz con CRT y soft15
- LCD con mame a lowres
- LCD con mame a 1080p (con o sin strech)
- 15 a 31khz CRT con Groovymame
- LCD con mame a 1080p + scanlines / hlsl


Esto es a grandes rasgos, hay LCD que adminten 15khz, por ejemplo. Luego los Trifecuencia o PC monitor pueden estar dentro de cualquier de estas categorías.

Esta claro que hay usuarios más o menos puristas pero no todo se basa en eso, también está la calidad. En ejecutables MAME habituales no tienes capacidad de ajustar los refrescos dinamicamente, normalmente solo estaticamente las resoluciones mediante inis. Esto hace que muchos juegos de 59 o 61hz se fuercen a 60hz. Cuando esto ocurre los scroll no son suaves. Como ejemplo 1944 donde aparece en el degradado del mar lineas raras derivadas del cambio de refresco.

Para evitar esto se suele activar el triplebuffer y ya es cuando terminamos de fastidiar el asunto entre la sincronización audio y video.

Tomemos un caso más extremo, MORTAL KOMBAT. MK necesita una resolución de 400x254 y un refresco de 54.815170. Por tanto jugándolo en sistemas 15khz o LCD a 60hz hace que el juego tenga que ser ACELERADO hasta 60hz. Eso quiere decir que el juego funciona al 110% de velocidad y no al 100% requerido. Todo estará acelerado un 10% respecto al arcade original.

La otra manera que tiene Mame de subir los 54hz hasta 60hz seria sin acelerar el juego pero repitiendo 6 fotogramas cada segundo. En esta configuración (no Throthle) el juego va a su velocidad normal pero debido a la repetición de fotogramas tenemos unos scroll a saltos y una nefasta experiencia de juego.

Por tanto se haga lo que se haga arreglamos una cosa y empeoramos otra. La única solución perfecta es correr el juego a su refresco nativo.


¿Que diferencian los drivers modificados por Calamity de los drivers originales de ATI?

Principalmente tres cosas:
1.- soportan más modelines.
2.- durante la instalación incluyen de serie modelines "base (esto último similar a soft15khz).
3.- parcheados para soportar nativamente modos de baja resolución.

¿Entonces por qué es tan bueno?
Al tener más modelines disponibles si usamos cualquier mame podemos tener más ini´s estáticos y por tanto más juegos se podrán jugar a sus resoluciones y refrescos nativos.

Se integran perfectamente con el software VMMaker + la versión Groovymame que nos permite hacer funcionar el romset con cientos de modelines reducidas a decenas de manera "mágica". Este sistema es muuuucho mejor que usar cualquier otro mame con unos pocos modelines estaticos.

Nos saltamos el bug de hyperspin de no querer funcionar si tenemos muchos modelines. Ni siquiera arranca, hyperspin no da error alguno pero no se ejecuta si encuentra demasiados modelines en el registro. Esto es así con versiones 1.0 y 1.3

¿Entonces esto solo funciona con ATI?
La respuesta fácil es decir SI.

¿Y estoy obligado a usar Groovymame?
No, pero es una tonteria no usarlo por las ventajas que da.

¿Y solo funciona con Hyperspin?
No, funciona con cualquier frontend que soporte ejecutar mame por línea de comandos. ¿Te gusta mala? Pues mala.

¿Que hardware necesito?

Hay muchas más pero voy a poner las que seguro funcionan y no dan problemas para obtener 15khz.

Ati Radeon 9000, 9100, 9200, 9250, 9500, 9550, 9600, 9700, 9800, ArcadeVGA 9200/9250, 9500, 9550, 9600, 9700, 9800, X300, X550, X600, X700SE, HD 4230, HD 4250, HD 4350, HD 4550, HD 4570, HD 4580, HD 4650, HD 4670, HD 4730, HD 4750, HD 4800, HD 4850, HD 4870, HD 4890

y luego modificando los drivers se incluyen HD 4770 y la HD 4850x2 y HD 4870 x2.

En negrita las que yo he probado y van al 100% y en rojo negrita las que son tomadas como "referencia".

¿Que software necesito?

Driver Calamity. Los tenemos para XP32 y XP64. Para HD4770 usar los que yo he modificado (ver arriba)
VMMaker 1.3C


¿Entonces no necesito el software 15khz?
No, no lo necesitas.

¿Entonces no necesito el software Winmodelines?
No, no lo necesitas.

¿Entones no necesito el software Quickres?
No, no lo necesitas.


Proceso de instalación:

Tener XP instalado.
Eliminar del menu "inicio" el software soft15khz, quickres o cualquier otro que esté relacionado con el video.
Desinstalar el driver de video actual que tengamos.
Nos pedirá reinciar. Decirle que no y apagar el ordenador.
Colocar la tarjeta en su ranura correspondiente.
Dejar solo la tarjeta de video ATI. De momento no tener dos tarjetas en el PC.
Opcional -> Si controlamos la BIOS entra en la misma y seleccionar que se arranque primero la tarjeta de video ATI (bien escoger en INIT DISPLAY FIRST: PCIe, AGP según nuestro tipo de tarjeta)
Conectamos un LCD al puerto VGA/DVI de la ATI.
Encender el ordenador.
Windows detecta la nueva tarjeta y sale el instalador de drivers. Le damos a cancelar.
Vamos a donde tengamos el driver de calamity ejecutamos el instalador.
Al terminar nos pide reiniciar. Le decimos que NO.
Apagamos el ordenador.
Quitamos el LCD, repito, quitamos el LCD.
Conectamos nuestro monitor Arcade o TV CRT via RGB a la salida VGA de la tarjeta. Si la tarjeta es de la serie HD4xxx puede no tener salida VGA y nos toca usar un adaptador DVI-VGA.
¿Si solo tengo DVI a que puerto conecto? ufff si hay dos... a uno y si no se ve al otro (es lo que hay)
Encendemos el ordenador y ya tenemos que tener 15khz con unas resoluciones tipo.

No funciona ¿y ahora que?
Siempre funciona pero a veces se puede poner tonto. Asegurate de haber realizado TODOS los pasos. Si no ves nada en el CRT conecta el LCD via DVI y verás el escritorio de windows.
Pon la resolución en 800x600.
Apaga el ordenador.
Conecta el CRT via VGA o con el adaptador DVI-VGA y enciende el ordenador.
Listo.

Que no, que no funciona ¿y ahora?
Si no ves nada en el CRT conecta el LCD via DVI y verás el escritorio de windows.
En la carpeta del driver de Calamity ejecuta ArcadeOSD.
Selecciona la resolución 640x480 y "set as desktop".
Apaga el ordenador.
Conecta el CRT via VGA o con el adaptador DVI-VGA y enciende el ordenador.
Listo.

Sigue sin funcionar ¿me tiro por un puente?
Algo has hecho mal, pregunta por aquí.

FIN DE LA PRIMERA PARTE - OBTENER 15KHZ



SEGUNDA PARTE - GROOVYMAME / VMMAKER



Ya tenemos los 15khz de una manera similar al software Soft15khz pero sin uso de dicho programa. Ya podemos jugar pero no pares aquí.... continua hacia la luz :rolleyes:

Ahora toca optimizar y sacar partido al driver modificado y nuestra ati.

¿Que es VMMaker?:
Que mejor que citar la info original

QUOTE
VideoModeMaker (VMMaker.exe), es una utilidad de configuración que nos permitirá personalizar la lista de modos de vídeo disponibles (modelines) de acuerdo con nuestras necesidades, así como configurar correctamente el emulador MAME (cualquier versión que soporte XML) para asignar los modos de vídeo particulares de cada juego / sistema de forma automática. El configurador no trabaja con modelines precalculados, sino que los genera para cada situación, en función de parámetros editables por el usuario.

Actualizar VMMaker:
Buscamos la carpeta donde descomprimimos el driver de calamity y pegamos encima la actualización de VMMaker 1.3C(ver software necesario). Este punto es importante. Si lo hemos hecho bien nos dirá que vamos a reemplazar algunos ficheros. OK.

Entender VMMaker:
Hay varios métodos, cito la info original

QUOTE
[Tabla estática vs tabla dinámica vs tabla mágica]

VideoModeMaker soporta tres modos de funcionamiento, según queramos generar una tabla de modos de vídeo estática, dinámica o mágica. Esta función se controla desde la variables "ModeTableMethod_XML" y "ModeTableMethod_custom", que se aplican a los modos de vídeo obtenidos de MAME.xml y ReslList.txt, respectivamente.

La tabla de modos dinámica está pensada para usarse con GroovyMAME.
La tabla de modos mágica está pensada para usarse con GroovyMAME + Hyperspin.
Para cualquier otra versión de Mame, usaremos la tabla estática.

La tabla de modos estática respeta la resolución y el refresco original de cada modo de vídeo. La desventaja es que esto genera cientos de modos de vídeo diferentes por lo que hay que reducir la lista para que no se supere la capacidad del driver de vídeo.

La tabla de modos dinámica respeta la resolución pero ignora el refresco, asignándole el más cercano posible a 60 Hz. Luego GroovyMAME recalcula cada modo de vídeo con el refresco correcto para el juego seleccionado, en tiempo de ejecución. Esto reduce drásticamente la tabla de modos de vídeo requerida eliminando duplicidades.

La tabla de modos mágica ignora la resolución horizontal y el refresco, y sólo conserva la resolución vertical, produciendo de este modo resoluciones "comodín" del tipo 1234x. Luego GroovyMAME genera el modeline correcto en tiempo de ejecución, siendo el resultado indistinguible del método anterior, con la ventaja de que redicimos increíblemente la cantidad de modos de vídeo necesarios. Mediante este método podemos generar todas las resoluciones y refrescos necesarios para emular correctamente la totalidad de los juegos de MAME a partir de unas pocas decenas de modos de vídeo (los necesarios para definir correctamente la resolución vertical). Este método es de carácter experimental, por lo que puede fallar en determinados sistemas.

Por tanto si no se quiere usar Hyperspin basta con leerse el tutorial que esta en Zona Arcade usando INI´s estáticos (ver links de interés). Esto nos permite usar cualquier versión de ejecutable mame pero ¿y si queremos usar Hyperspin?

Hasta que no llegue HS 2.0 vamos a estar con el bug del número de modelines. Hyperspin no arranca si detecta más de 70 u 80 modos de vídeo distintos. La solución es fácil.... reducir el número de modos pero recordemos:

- El romset tiene casi 600 modos de video distintos
- Los drivers ati modificados nos permiten usar bien 200 o bien 120 modos (según versión escogida).
- Ya estamos descartando y reduciendo la lista de 600 a 120
- Si hyperspin nos obliga a tener unos 80 modos hay que descartar otros 40 modos.
- En total habremos descartado 540 modos de video distintos.
- Mame deberá usar modos cercanos, refrescos cercanos, modos entrelazados, etc.... para todos los juegos donde no dispongamos de modos y refrescos nativos. Volvemos a generar problemas y perder la extrema suavidad de los modos/refrescos nativos.

Para solucionar esto tenemos dos posibilidades con VMMaker junto al uso de la version Groovymame:

Tabla dinámica: En mi caso con romset 148u2 puedo tener todos los modos con unos 120 o 130 modelines.

Tabla mágica: En mi caso con romset 148u2 puedo tener todos los modos desde 27 a 42 modelines, según configure.

Vemos que la tabla dinámica es excepcional al agrupar 600 en 130 pero no es suficiente: hay que usar la tabla mágica.

Nos pasamos a Groovymame:

Lo primero es ir a nuestra carpeta de HYPERSPIN\emulators\mame\ y hacer una copia de seguridad de nuestro mame.exe y nuestro mame.ini. Una vez los tengamos guardados en lugar seguro procedemos a borrarlos de la carpeta emulators\mame.

Ahora hay que borrar todos los archivos ini que se hayan generado en la carpeta INI (uno para rom), asi nos quitamos problemas.

Luego bajamos al repositorio de Groovymame/Groovyarcade que está disponible en Googlecode (ver arriba links interés) y nos bajamos el groovymame windows correspondiente a nuestra versión de romset. Si no existiera tenemos la opción de compilarlo nosotros mismos o de actualizar nuestro romset, a gusto del consumidor.

Una vez bajado el archivo lo descomprimimos y copiamos el exe en la carpeta hyperspin/emulators/mame.
Para evitar complicaciones lo renombramos a mame.exe.

Creamos mame.ini nuevo:
Este mame tiene opciones propias por lo que no podemos usar nuestro archivo mame.ini antiguo (de hecho si has seguido los pasos ya lo has borrado de la carpeta... borralo si no lo has hecho)

clic INICIO --> EJECUTAR --> escribimos CMD y damos enter.

nos abre la "ventana dos" del sistema.
Ahora hay que ir a la carpeta donde tenemos mame.exe
Si teneís el pack Hyperspin de Arda escribis
QUOTE
cd c:\hyperspin1.0\emulators\mame

y enter.
una vez en dicha carpeta ejecutamos
QUOTE
mame -cc

Esto nos crea un archivo mame.ini nuevo y optimizado para Groovymame.
Listo. Ya podemos cerrar la ventana dos y verificamos en el explorador de archivos que tenemos un nuevo mame.ini en la carpeta.

Configurar VMMaker para Hyperspin:
En la carpeta donde descomprimimos vmmaker editamos con el bloc de notas el archivo vmmaker.ini

Lo primero es decirle donde está el ejecutable del mame, lo configuramos con nuestros datos:
QUOTE
; Path for Mame executable, in case we want to extract xml information from it.

MameExe = "C:\Hyperspin1.0\emulators\mame\mame.exe"

Mame options lo dejamos sin tocar:
QUOTE
; Mame options.

ListFromXML = 1 ; Processes Mame XML and get video mode list from it
GenerateXML = 1 ; Extracts XML from Mame (only needed once)
OnlyListMain = 0 ; Only list resolutions for games contained in MameMain.txt
GenerateInis = 0 ; Creates an ini file for each Mame game, in the IniPath folder
SDLMame = 0 ; Use SDLMame specific options

En MONITOR ORIENTATION lo normal es dejarlo sin tocar a no ser que tengamos monitor vertical:
QUOTE
; Monitor orientation

MonitorHorizontal = 1 ; 0 = Rotating monitor: horizontal and vertical games at their native resolution
; Suitable for users that physically rotate their CRTs
; 1 = Horizontal monitor: horizontal games run at their native resolution and
; vertical games are rotated to fit in horizontal monitor

RotatingDesktop = 0 ; Specifies if both desktop and monitor are rotated

; Aspect ratio for vertical games on horizontal monitor
; 4:3 (keeps original aspect ratio)
; 3:3 (stretches to square format)
; 3:4 (stretches to full screen)
; h:v (custom aspect ratio)

VerticalAspect = "4:3"

En punto MONITOR inicialmente no vamos a tocar nada, eso irá para el próximo mensaje. Debe estar puesto en CUSTOM

En MODELINE GENERATOR buscamos las dos líneas siguientes y las dejamos así:

QUOTE
ModeTableMethod_Custom = 0
ModeTableMethod_XML = 2

Cerramos y guardamos vmmaker.ini
Ejecutamos vmmaker.exe y escaneará nuestra version de mame para averiguar todos los modos y refrescos de video del romset. Genera los modelines mágicos. Y nos hace un resumen al final.

Todo el proceso lleva unos 30 segundos.

Pide reiniciar. Le hacemos caso.

-----

Abrimos el explorador de archivos y nos vamos otra vez a la carpeta Hyperspin\Emulators\mame y editamos con el bloc de notas el archivo mame.ini que hemos generado antes, que está virgen.

No hay que tocar mucho ya que viene muy optimizado. Lo más importante seria dejarlo de esta manera:

QUOTE
#
# CORE SWITCHRES OPTIONS
#
modeline 1
monitor custom
orientation horizontal
connector auto
interlace 1
doublescan 0
cleanstretch 0
changeres 1
powerstrip 0
lock_system_modes 1
lock_unsupported_modes 1
refresh_dont_care 0
dotclock_min 0
sync_refresh_tolerance 2.0
frame_delay 0
lcd_range auto
crt_range0 15625-16200, 49.50-61.00, 2.000, 4.700, 8.000, 0.064, 0.160, 1.056, 0, 0, 192, 288, 448, 576
crt_range1 auto
crt_range2 auto
crt_range3 auto
crt_range4 auto
crt_range5 auto
crt_range6 auto
crt_range7 auto
crt_range8 auto
crt_range9 auto

Nota Pro: ¿Por qué varios CRT Range? Pues porque podemos tener monitores multifrecuencia o incluso TV normales que sean problematicos en frecuencias entre NTSC y PAL. Por eso, y tomando un ejemplo de Calamity, podemos dividir nuestro CRT Range en varios trozos. De esta manera podemos ajustar la geometria especifica de algún refresco problemático o incluso anular refrescos que no queramos que se usen.

monitor_specs0 15625-16200, 49.50-54.90, 2.000, 4.700, 8.000, 0.064, 0.160, 1.056, 0, 0, 288, 448
monitor_specs1 15625-16200, 54.90-56.00, 2.000, 4.700, 8.000, 0.064, 0.160, 0.896, 0, 0, 288, 448
monitor_specs2 15625-16200, 56.00-65.00, 2.000, 4.700, 8.000, 0.064, 0.160, 1.056, 0, 0, 288, 448


QUOTE
#
# WINDOWS PERFORMANCE OPTIONS
#
priority 0
multithreading 1
numprocessors auto
profile 0
bench 0

QUOTE
#
# WINDOWS VIDEO OPTIONS
#
video d3d
numscreens 1
window 0
maximize 1
keepaspect 0
prescale 1
waitvsync 0
menu 0

#
# DIRECTDRAW-SPECIFIC OPTIONS
#
hwstretch 0

#
# DIRECT3D-SPECIFIC OPTIONS
#
d3dversion 9
filter 0

QUOTE
#
# FULL SCREEN OPTIONS
#
triplebuffer 0
switchres 1
full_screen_brightness 1.0
full_screen_contrast 1.0
full_screen_gamma 1.0

Y para las mentes inquietas las opciones explicadas:

QUOTE
#
# CORE SWITCHRES OPTIONS
#
-modeline Generate modelines for arcade monitors
-monitor Monitor type, e.g.: generic_15, arcade_15, lcd, custom, etc.
-orientation Monitor orientation (horizontal|vertical|rotate)
-connector [Linux] video card output (VGA-0|VGA-1|DVI-0|DVI-1)
-interlace Enable interlaced scanning when necessary
-doublescan Enable double scanning when necessary (unsupported under Windows)
-cleanstretch Force integer scaling, 0 means automatic selection
-changeres Enable dynamic in-game video mode switching
-powerstrip Use Powerstrip API for dynamic setting of custom video timings
-lock_system_modes Lock system (non-custom) video modes, only use modes created by us
-lock_unsupported_modes Lock video modes reported as unsupported by your monitor's EDID
-refresh_dont_care Ignore video mode's refresh reported by OS when checking ranges
-dotclock_min Lowest pixel clock supported by video card, in MHz, default is 0
-sync_refresh_tolerance Maximum refresh difference, in Hz, allowed in order to synchronize
-frame_delay Delays the start of each frame to minimize input lag (0-9)
-lcd_range Add custom LCD range, VfreqMin-VfreqMax, in Hz, e.g.: 55.50-61.00
-crt_range0 Add custom CRT range, see documentation for details.
-crt_range1 Add custom CRT range
-crt_range2 Add custom CRT range
-crt_range3 Add custom CRT range
-crt_range4 Add custom CRT range
-crt_range5 Add custom CRT range
-crt_range6 Add custom CRT range
-crt_range7 Add custom CRT range
-crt_range8 Add custom CRT range
-crt_range9 Add custom CRT range

Grabamos los cambios y listo. Hemos terminado (es mentira :P )

que siiii....... que ya podemos jugar :D

pero no hemos terminado.

Llegados hasta aquí lo mejor es jugar un rato a diversos juegos que al final de esto se trata ¿no?

Cada vez que arranquemos un juego en mame nos va a mostrar en la ventana azul de información la resolución y refresco originales del juego y la resolución y refresco escogidos por groovymame.

FIN DE LA INSTALACION Y CONFIGURACION



Edited by Cosgarion - 21/4/2013, 12:53
 
Top
184 replies since 20/4/2013, 12:01   33486 views
  Share