Colin McRae Rally 2.0 (2000) PC


Colin McRae Rally supuso una revolución allá por el año 1998. Fue el primer juego del género, o uno de los primeros, con alma y halo de simulador, de experiencia realista y seria en torno al mundo del rally. Recibió muy buenas -y merecidas- críticas, y a la gente le gustó, aunque se echaban en falta las carreras contra otros coches de manera simultánea, es decir, el componente rallycross, seña de identidad de la inmensa mayoría de los juegos del género hasta la fecha. 
Codemasters tomó nota y, dos años más tarde, lanzó la secuela que nos ocupa, mejorado y ampliado en todos sus apartados respecto a la primera parte, y con un nuevo modo arcade en el que competían un total de 6 pilotos de manera simultánea. 


╔════════════════════════════╗
COLIN McRAE RALLY 2.0
PC
╚════════════════════════════╝

Gracias a un fix conocido como "SilentPatch", el juego funciona y se ve muy bien, salvo por un detalle que luego comentaré. En todo caso, es la forma definitiva de jugarlo en sistemas Windows modernos. Me dispongo, entonces, a reflejar con pelos y señales el proceso de "restauración" para hacerlo funcionar en sistemas modernos (Windows 11) y luzca mejor que nunca. Si te interesa el tema, como siempre digo, te recomiendo seguir los pasos en orden y no dejarte nada. Manos a la obra.


╔════════════════════════════╗
Descarga e instalación
╚════════════════════════════╝

Parezco un disco rayado, pero diría que, en la actualidad, es imposible adquirir este juego por ninguna vía que no sea la segunda mano de la versión física, tanto la primera edición retail como la versión que regalaban con la difunta Computer Hoy Juegos o el relanzamiento a cargo FX Interactive. Tengo las dos últimas versiones. Este tutorial se basa, en concreto, en la edición de FX, compañía por la que tengo especial predilección. Esta edición de FX se puede encontrar con relativa facilidad en plataformas de compraventa de segunda mano, aunque estoy seguro de que, si buscas un poco, también la puedes conseguir en archive.org.

Procedamos.

Monta la imagen ISO. Si no salta el autorun, te aconsejo ejecutar directamente el "Instalar.exe" del disco, antes que el "Autorun.exe".

Nos saltará la siguiente ventana:


Podemos hacer clic en instalación automática, pero a mí me gusta darle a Opciones - Más opciones, y asegurarmen de que me instala únicamente el juego:


Hacemos clic en "Instalar", aceptamos el mensaje de confirmación y esperamos unos segundos a que termine el proceso, momento en el que nos aparecerá la siguiente ventana:


Haremos clic en "Salir" y aceptaremos el mensaje de confirmación. Si dejamos el CD montado en la unidad virtual, podremos usar el acceso directo del escritorio, que apunta a C:\ Archivos de Programa (x86) \ MVM 2004 - Colin McRae Rally 2.0 \ CMR2Launch.exe. Si no lo tenemos montado, nos pedirá el CD, a menos que cambiemos la ruta del acceso directo del escritorio directamente al ejecutable del juego, en C:\ Archivos de Programa (x86) \ MVM 2004 - Colin McRae Rally 2.0 \ CMR2.exe.


╔════════════════════════════╗
Descarga e instalación del SilentPatch
╚════════════════════════════╝

En primer lugar, haremos una copia de seguridad del ejecutable del juego, "CMR2.exe". A continuación, descargaremos SilentPatch de aquí (última versión disponible a día de hoy: "Build 1 (Aug 8 2015)" y copiaremos el contenido del zip a la carpeta del juego. Nos pedirá, por supuesto, sustituir el ejecutable. Además del ejecutable, se copiará un archivo dll, un readme.txt y un archivo de configuración con extensión .ini. Si abrimos este último, vemos que podemos cambiar algunas cosas, como pasar el modo ventana a modo a pantalla completa (más sobre esto, luego), o cambiar el FOV: por defecto viene a un valor de 70, e incluye un texto informando de los valores mínimo y máximo, además de advertir que la vista interior puede presentar fallos o problemas con un FOV elevado. En mi caso, he subido el FOV de 70.0 a 75.0:

FOV de 70.0º

FOV de 75.0º

Dicho lo cual, ¡no arranques el juego todavía!


╔════════════════════════════╗
Descarga, instalación 
y configuración de dgVoodoo
╚════════════════════════════╝

dgVoodoo traducirá el arcaico DirectX 7 de este juego a un más actual DirectX 11 y nos permitirá ejecutarlo a la resolución que queramos (con filtrado anisotrópico de hasta 16x y Multisampling Anti-Aliasing de hasta 8x), nos ayudará a corregir algunos problemillas de Z-Fighting aumentando la precisión del depth buffer y también nos allanará el camino para poder usar ReShade.

Para empezar, descargaremos la última versión de dgVoodoo de su web oficial. La última versión disponible ahora mismo es la 2.81.1. Una vez descargado, extraeremos del zip los siguientes archivos a la carpeta del juego:

dgVoodoo.conf
dgVoodooCpl.exe
MS\x86\D3DImm.dll
MS\x86\DDraw.dll.

Una vez hecho, ejecutaremos dgVoodooCpl.exe como administrador. Una vez abierta la interfaz de dgVoodoo, haremos clic con el botón derecho sobre alguna zona libre de la ventana y nos saldrá un menú contextual, del que seleccionaremos "Show all sections of the configuration". Nos aparecerán, entonces, varias pestañas nuevas. Nos aseguraremos de que las opciones de las dos pestañas generales y las dos de DirectX quedan como en las capturas que se muestran a continuación:





En la resolución de pantalla de la segunda captura tendrás que poner, lógicamente, la resolución a la que quieres que se renderice el juego. En mi caso, 3840x2160, pero en tu caso puede ser distinta, según la resolución nativa de tu monitor.

Como puedes ver en la última captura, en esta ocasión dejaremos el buffer de profundidad gestionado por el propio juego o, como mucho, lo aumentaremos a 24bit. Nunca a 32, pues provocará fallos graficos como que nuestro vehículo se dibuje siempre por encima de la estela de polvo o de nieve que levantemos a nuestro paso, auque ésta esté situada entre la cámara y el coche. Esto se aprecia muy bien en las repeticiones.

Con el filtrado anisotrópico x16 y al MSAA x8 forzados desde dgVoodoo, obtendremos una imagen tremendamente sólida y nítida, salvo en los contornos de las texturas/sprites con transparencia. Para solucionarlo y conseguir un acabado sin nada de shimmering ni aliasing, activaremos el anti-aliasing de transparencia desde el panel de control de la gráfica. En el caso de Nvidia, crearemos un perfil para este juego y dejaremos todo por defecto salvo el anti-aliasing de transparencia, que pondremos a x8:


Con esto los gráficos se verán más sólidos que nunca. Únicamente he de mencionar un problema gráfico que he observado en Windows 11 (no he probado en sistemas anteriores). Si recuerdas, la versión de PC fue alabada en su momento por su calidad gráfica. En especial, por la fidelidad de los reflejos en la carrocería de los coches, llamados "mapa del entorno" en los ajustes gráficos avanzados del juego. Concretamente, de uno de los tres tipos que se pueden escoger en dichos ajustes: el mapa de entorno "cúbico". Este efecto gráfico refleja en tiempo real el escenario en la carrocería del coche. Recuerdo que, en su momento, activar esta opción penalizaba muy duramente el rendimiento. Sería de esperar que en un PC actual no hubiera problemas de rendimiento con esta opción activada...

Y es aquí donde nos encontramos con el problema:
  • Los reflejos avanzados (mapa del entorno "cúbico") no me funcionan. Si lo activo no veo ningún tipo de reflejo en la carrocería del coche. He visto casi todos los vídeos que hay en YouTube sobre este juego con el SilentPatch, y a algunos les ocurre, mientras que a otros, no.
  • En todo caso, tener activado el mapa del entorno "cúbico" se sigue comiendo bastante rendimiento, incluso en equipos actuales, Debe de ser un efecto que tira mucho de CPU. Pero lo mejor es que se come el rendimiento aunque no esté funcionando, como me ocurre a mí. Muy curioso.
Los efectos de reflejos intermedios o "bache" (traducción cutre del inglés "bump") se ven un poco feos: añaden bastante aliasing a los marcos de las ventillas y lunas del coche, junto con una especie de berretes o regueros como de condensación en el capó. Es un bump mapping muy guarro, de muy baja resolución, y eso renderizado a 4K se ve feo y desentona con el resto de la imagen:


Por esa razón he optado por escoger la opción de environment mapping más sencilla, la primera de las tres. En el resto de ajustes gráficos todo está al máximo, como veremos enseguida.


╔════════════════════════════╗
Descarga e instalación mod 
"CMR 2.0 HQ Cars"
╚════════════════════════════╝

Antes de ejecutar el juego vamos a mejorar los modelos poligonales de los coches. Este juego, como muchos otros, incluso en los ajustes de calidad máxima, tiene dos calidades de modelos para los coches dependiendo de la categoría en la que estemos compitiendo. Así, por ejemplo, nuestro coche se verá con una muy buena calidad en las pruebas o etapas normales de rally contra el crono, pero con una calidad muy inferior en pruebas como las superespeciales 1 contra 1 en circuito, el modo arcade, el multiplayer, etc. Esto se nota especialmente en las repeticiones. Este mod aplica los modelos de máxima calidad en todo momento. Se llama "CMR 2.0 HQ Cars", ha sido creado por un tal Nutsat, y lo puedes descargar haciendo clic en el botón rojo donde dice "DOWNLOAD NOW!" o desde este mirror.

Una vez descargado el zip, copiaremos las dos carpetas al directorio principal de nuestro juego, sustituyendo cuando nos lo indique. Con esto habremos conseguido el propósito del mod, pero hay un pequeño y bienvenido efecto colateral:

La versión 1.0 del juego originalmente traía los distintivos (me niego a llamarlos "liveries") clásicos del Subaru Impreza que todo el mundo conoce:


Con el parche de actualización 1.1, Codemasters cambió estos distintivos por esta cosa tan lamentable llamada "Spike":


Pues bien, resulta que el mod de coches en alta calidad también restablece los distintivos del Impreza de la versión 1.0. Olé por su creador, el cual ha pensado en todo, incluso en la gente que quiera jugar con su mod sin renunciar al distintivo horrendo del Spike, pues ha sacado un "fix" para su mod que lo único que hace es restablecer el distintivo Spike de la v1.1 para el Subaru HQ. Se llama "Subaru Impreza Spike Livery", y lo puedes descargar desde aquí o desde este mirror, pero no te recomiendo hacerlo, a menos que no tengas gusto.



╔════════════════════════════╗
Secuencias FMV reescaladas a 1080p 60fps
╚════════════════════════════╝

Esta vez sí, he reescalado e interpolado las secuencias FMV del juego. A 1080p en vez de a 4K, pues no tiene mucho sentido en vídeos con una resolución de partida tan baja. Puedes descargarlas desde este enlace. Copia las dos carpetas tal cual al directorio del juego y sustituye cuando te lo pida. Si quieres conocer todo el proceso seguido, te recomiendo echar un vistazo a los apéndices.



╔════════════════════════════╗
Ejecución del juego, algunas aclaraciones 
y ajustes gráficos in-game
╚════════════════════════════╝

IMPORTANTE: Ejecutaremos el juego SIEMPRE COMO ADMINISTRADOR. Para ello, haremos clic con el botón derecho sobre el ejecutable (CMR2.exe) - Propiedades - Pestaña "Compatibilidad" y, en las opciones de la mitad inferior de la ventana, marcaremos la que dice "Ejecutar este programa como administrador".

Una de las ventajas principales de ejecutarlo como administrador es que nos guardará todos los archivos de ajustes / configuración / mandos, partidas guardadas y pilotos en la misma carpeta de juego: concretamente en las subcarpetas "Configuration", "gamesave" y "pps" respectivamente. De no ejecutar el juego como administrador, todo eso se guardará en un lugar muy lejano conocido como VirtualStore. Dado que el juego lo tengo instalado en C:\ Archivos de Prograna (x86) \ MVM 2004 - Colin McRae Rally 2.0, la ruta del VirtualStore, en mi caso, sería la siguiente:
C:\Users\[MI USUARIO]\AppData\Local\VirtualStore\Program Files (x86)\MVM 2004 - Colin McRae Rally 2.0

En esa ruta estarían los archivos y carpetas mencionados. Si ejecutamos el juego siempre como administrador, no habrá ni rastro de lo mencionado en el almacén VirtualStore.

Pero antes de eso, y ya que estamos en los ajustes de compatibilidad, vamos a asegurarnos de cambiar la configuración de DPI y dejarla como se muestra en la siguiente captura:


¿Por qué hacemos esto? Muy sencillo: a resoluciones de escritorio muy altas como, por ejemplo, 4K, es muy común aumentar la escala de la interfaz de Windows para que se vea a un tamaño legible. Por ejemplo, en mi caso Windows aplica un "zoom" a la interfaz general del sistema y la muestra al 150% de su tamaño. De este modo se pueden leer bien los textos. De lo contrario, serían demasiado pequeños:


Pues bien, resulta que este ajuste afecta no sólo al explorador de Windows, a toda la interfaz y menús del sistema, sino, también, a todas las aplicaciones que no se ejecutan a pantalla completa... ¡como este juego! ¿Cómo es posible? Te lo explico un par de párrafos más abajo. Y, ¿qué ocurre si, como yo, tienes la interfaz de Windows a un tamaño superior al 100% y no has marcado la opción que te he comentado? En tal caso pordrás comprobar que, tanto la interfaz del juego como los propios gráficos 3D durante una carrera se ven recortados, es decir, todo aumentado como si hubieras hecho un zoom a la imagen. De hecho, en la ventana principal del juego deberías ver, en la esquina inferior izquierda, una pequeña leyenda con la versión del Silent Patch instalada, como puedes apreciar en este recorte ampliado:


Si, una vez llegues al final del presente apartado, no lo ves, repásalo de nuevo y asegúrate de haber dejado todo como en las capturas. Ten esto en cuenta para lo que viene a continuación...

Si hemos hecho bien todo lo anterior, al hacer doble clic en CMR2.exe aparecerá una ventanita de advertencia diciendo que se han restablecido los ajustes por defecto (hasta aquí, va bien la cosa), y el juego se ejecutará en una pequeña ventana sin marcos en el centro de la pantalla, tanto más pequeña cuanto mayor sea la resolución de nuestro monitor, y con el logo de dgVoodoo en la esquina inferior derecha. Una ventana, sí, porque el juego se está ejecutando en modo ventana, forzado por el SilentPatch. Podríamos hacer que se ejecutase a pantalla completa y no en ventana editando el archivo SPCMR2.ini (cambiando la línea Window=1 por Window=0), pero no lo vamos a hacer: ejecutar el juego en modo ventana sin marcos soluciona un bug de DirectDraw que se dio a partir de Windows 8 y siguientes, y que afecta negativamente al rendimiento. Por lo tanto, sí, ejecutar el juego a pantalla completa deteriora el rendimiento: incluso con un equipo potente es más que probable que notes algunos bajones de frames o también frame pacing o stuttering. Además, en este modo las secuencias FMV no se ven, sólo se oyen.

Por otro lado, jugarlo en modo ventana no va a suponer ningún problema ni vas a tener que ver el juego en una venta todo el rato, porque lo vas a ver a pantalla completa aunque en realidad sea una ventana sin marcos ajustada al 100% del tamaño de nuestra pantalla. Es decir, a nuestros ojos no va a existir ninguna diferencia entre jugarlo así o en un modo a pantalla completa real, con la ventaja añadida de que podremos hacer ALT+TAB en cualquier momento sin dar ningún problema ni error. Simplemente, el juego se pausará automáticamente cuando la ventana del mismo pierda el foco. Cuando volvamos a ella, se reanudará sin ningún problema de rendimiento, ni fallo gráfico, ni nada de nada.

Para ello, iremos a los ajustes de resolución del juego y escogeremos la máxima disponible, que será la nativa de nuestro monitor. En mi caso, 3840 x 2160 x 32bit. Lo menciono porque SilentPatch, que no se actualiza desde hace varios años, no funciona por sí solo a 4K y necesita de dgVoodoo a la fuerza. En cuanto confirmemos dicha resolución, estaremos viendo ya la interfaz del juego a "pantalla completa".

Lo malo de seleccionar una resolución tan alta en los ajustes del propio juego es... Lo has adivinado: toda la interfaz, texto de menús, HUD, etc. se dibujará a un tamaño más pequeño. Aunque sigue siendo un tamaño más que suficiente y todo resulta perfectamente legible, no dejo de reconocer que habría preferido que fuese un poco más grande, la verdad. De cara a un futuro no muy lejano, ejecutar este juego a algo como 8K puede suponer un problema a la hora de leer la interfaz. Este problema no lo tenemos en el modo a pantalla completa, donde podemos ir a los ajustes del juego y escoger una resolución inferior como 1920x1080x32 para que la interfaz se vea más grande, al tiempo que los gráficos 3D se estarán renderizando a lo que mande dgVoodoo, es decir, a 3840x2160. Pero, lamentablemente, debemos descartar este modo a pantalla completa por los motivos antes mencionados.

Es posible que te estés preguntando: si dgVoodoo es quien fuerza la resolución de renderizado, ¿no podía haber hecho lo mismo en el modo ventana, es decir, haber elegido 1920x1080x32 en los ajustes del juego para que la interfaz no se vea tan pequeña, y 3840x2160 en dgVoodoo? La respuesta es no, porque el tamaño de la ventana en el modo ventana no depende de dgVoodoo sino de los ajustes de resolución del propio juego. Si no escogemos en éstos la máxima resolución disponible, nuestro modo ventana jamás ocupará toda la pantalla y, por lo tanto, no parecerá un modo a pantalla completa.

Aprovechando que estamos en el menú gráfico, dejaremos todas las opciones como ves a continuación:


En "Modo de pantalla" (resolución), tendrás que poner la de tu monitor, eligiendo siempre una profundida de color de 32 bit.


Si quieres, echa una partidilla rápida en el modo arcade para ver si funciona. Antes de configurar los controles, si vas a usar mando, sal del juego y echa un ojo al siguiente apartado: Vibración.


╔════════════════════════════╗
Vibración:
Masahiko Morii   VS   Xidi
╚════════════════════════════╝

No esperaba que llegase el día en el que tuviera que volver a echar mano del "Force Feedback Driver for XInput" de Masahiko Morii (enlace de descarga al final de este apartado) pero me temo que, en este juego, es necesario: con Xidi la vibración no funciona. Bueno, para ser más exacto, nada más cargar una carrera, el mando empezará a vibrar con la máxima intensidad (independientemente de lo que le hayamos indicado en el menú de ajustes del juego), y dejará de vibrar en cuanto los coches arrancan. Vamos, que no funciona. He abierto una incidencia en el GitHub de Xidi exponiendo el problema. A ver si el creador me puede dar una solución.

Sin embargo, ha sido instalar el driver de Masahiko Morii y oye, a la primera: la vibración funciona perfectamente, tal como debería funcionar, con sus intensidades y matices. Justo al contrario de lo que ocurría en Star Wars - Episode I: Racer o en Need for Speed III. La única limitación que nos encontraremos con el driver es la imposibilidad de usar los gatillos a modo de botones digitales para, por ejemplo, subir/bajar marcha. En eso Xidi sigue por delante. Pero yo, que no uso los gatillos para nada en este tipo de juegos, doy más importancia al tema de la vibración. Y, de todos modos, podemos fácilmente usar los gatillos de manera digital mapeándolos a dos teclas cualesquiera del teclado con joy2key o, en mi caso, con DS4Windows. Pero para usarlos de manera analógica con el driver de Masahiko, no necesitas nada más. La única limitación que tendrías sería la de no poder usar ambos gatillos al mismo tiempo, por ser reconocidos por el juego como un mismo eje. Si quieres que el juego los reconozca como dos ejes independientes deberás usar Xidi, tal y como explico en las entradas anteriores de este blog, y en el siguiente apartado, aunque ya te adelanto que no funciona correctamente.

Otro problema del driver de Masahiko Morii es que, al depender de un listado interno de IDs de hardware de distintos fabricantes y modelos de mandos, sólo funcionarán aquellos cuya ID de hardware esté incluida en el driver. Y esto deja fuera mi 8BitDo Ultimate C Wired USB, por ejemplo, y eso que es un mando XInput. Lo mismo pasa con los mandos de Xbox One / Series conectados  por Bluetooth: este caso específico requiere la combinación de una versión mejorada del driver de Masahiko Morii y el software conocido como reWASD. Si quieres más info de este caso en particular, está toda detallada en mi entrada sobre Star Wars - Episode I: Racer

En cuanto los mandos XInput más comunes:
  • El original de Xbox 360, One, One S o Series (conectados por cable), un clónico cutre de Aliexpress o de marca.
  • Un Dualshock 4 o DualSense (por cable o bluetooth, indistintamente) mapeado a un mando virtual de 360 mediante una aplicación como DS4Windows.
  • Cualquier mando XInput que en las propiedades del mando en el menú de Dispositivos e impresoras se muestre como "XBOX 360 For Windows" o "Xbox One For Windows"
En este caso usaremos el mencionado driver de Masahiko Morii, específicamente una modificación del mismo por parte de un tal NUK3 TH3 WHAL35 para soportar mandos de Xbox One (USB). Lo tienes disponible aquí, concretamente en el enlace a OneDrive que allí aparece. Si ese enlace está caído, he creado un mirror aquí. No tienes más que ejecutar el instalador y seguir las instrucciones. Se instala a nivel de sistema, no juego por juego como Xidi. Se desinstala usando el mismo instalador. Después de hacer una serie de pruebas he visto que con este driver modificado funciona la vibración tanto en el mando de 360 como en el de One. Con el driver de Masahiko original, efectivamente, sólo funciona en el de 360.


════════════════════════════╗
Controles
╚════════════════════════════

Como ya comenté en las dos entradas anteriores, correspondientes a los juegos Ford Racing 2 y 3, mi esquema de control preferido para este tipo de juegos es el clásico de juegos de PSX hasta el año 97-98, aproximadamente:


Aunque veas un mando de PS4, el esquema vale exactamente igual para un mando de Xbox y, por extensión, para cualquier mando XInput. De esta imagen, por cierto, hay que hacer varias puntualizaciones:
  • He intentado ajustar el esquema de control lo máximo posible a la configuración clásica de PSX para juegos de conducción/arcade.
  • He asignado L3 a la captura de pantalla (tecla "Impr Pant" o "PrtSc") y R3 a la tecla que, perosnalmente, tengo asignada al toggle on/off de ReShade (tecla asterisco, sobre el teclado numérico). Con DS4Windows es muy sencillo asignar cualquier botón del mando a dicha tecla. Si no usas un mando de PS4/PS5, tu mejor apuesta es joy2key. En este caso, mapear el botón L3 a la tecla de "Impr Pant" es un pelín engorroso ya que el programa no registra la pulsación de dicha tecla a la hora de asignarla, sino que hay que desplegar el menú contextual sobre la casilla de registro y elegir PRINT SCREEN.
  • También he asignado los botones SHARE y R1 a las teclas F1 y F2, respectivamente. Esto lo he hecho para tener control de las cámaras en las repeticiones. Si usase Xidi en modo StandardGamepad, no necesitaría mapear ninguna de las dos acciones: estarían asignadas a SHARE y a OPTIONS por defecto, es decir, los botones 9 y 10 del esquema StandardGamepad. En el esquema XInput Native (que es el que usa el driver de Masahiko), los botones 9 y 10 del mando corresponden a los botones LS y RS, pero como ya los tengo mapeados a dos teclas, el juego no los reconoce como botones y no puedo usarlos para controlar los replays. De ahí que haya hecho directamente el mapeo de dos botones que me quedaban libres, a las teclas F1 y F2, que son las que controlan dichas repeticiones desde el teclado. Espero que se haya entendido.
  • Como he mencionado en el apartado anterior relativo a la vibración, no he asignado el acelerador y freno a los gatillos analógicos del mando: mi intención es conseguir un esquema de control lo más parecido al típico juego de coches de PSX, al menos hasta el año 97-98. 
  • Si la vibración no te importa y necesitas poder usar los gatillos para acelerar/frenar de manera analógica en dos ejes independientes, tendrías que usar Xidi con un ajuste específico en su archivo Xidi.ini, si no fuera porque, al igual que ocurre en Ford Racing 3, este ajuste NO FUNCIONA BIEN: el coche frena todo el rato, los gatillos no hacen lo que se supone que deben hacer, por mucho que todo esté correcto en el menú de ajustes de ejes. Para colmo, los botones arriba y abajo de la cruceta dejan de funcionar, por lo que la navegación por los menús se vuelve más engorrosa, al tener que depender del teclado. Dejo lo que viene a continuación únicamente como referencia para futuras consultas. Te recomiendo que te saltes todo lo relativo a Xidi que viene a continuación y saltes al "Recapitulando" de más abajo. Dicho esto, prosigo: si no existe el archivo Xidi.ini, crea dicho archivo en la carpeta del juego con la siguiente estructura (lo tienes también aquí):
  • [Mapper]
    Type                                = StandardGamepad
    Type.1                              = StandardGamepad
    Type.2                              = StandardGamepad
    Type.3                              = StandardGamepad
    Type.4                              = StandardGamepad
    
    [Properties]
    MouseSpeedScalingFactorPercent      = 100
    UseBuiltInProperties                = yes
    DeadzonePercentStickLeft            = 0
    DeadzonePercentStickRight           = 0
    DeadzonePercentTriggerLT            = 0
    DeadzonePercentTriggerRT            = 0
    SaturationPercentStickLeft          = 100
    SaturationPercentStickRight         = 100
    SaturationPercentTriggerLT          = 100
    SaturationPercentTriggerRT          = 100
    
    [Log]
    Enabled                             = no
    Level                               = 1
    
    [Import]
    dinput.dll                          = C:\Windows\system32\dinput.dll
    dinput8.dll                         = C:\Windows\system32\dinput8.dll
    winmm.dll                           = C:\Windows\system32\winmm.dll
    
    [CustomMapper]
    ; This section does not exist by default.
    
    [Workarounds]
    ; This section does not exist by default.

    En este caso, si sólo vas a usar un mando, puedes cambiar, en la línea que comienza por "Type.1", el valor "StandardGamepad" a "ExtendedGamepad", quedando tal que así:
    [Mapper]
    Type = StandardGamepad
    Type.1 = ExtendedGamepad
    Type.2 = StandardGamepad
    Type.3 = StandardGamepad
    Type.4 = StandardGamepad

    Si vas a usar más mandos, repite el proceso para cada uno. Si no haces este cambio el mando funcionará igualmente, pero si tenías guardado previamente algún esquema de control dentro del juego, verás que ya no te sirve porque los botones están cambiados:


    Aparte del cambio de numeración en algunos botones, éste es, a modo de resumen, el resultado que obtendremos según el valor que pongamos:

    • StandargGamepad → El juego reconocerá los gatillos de nuestro mando como botones digitales.  Es la configuración que yo uso normalmente, ya que no utilizo los gatillos para acelerar y frenar.
    • XInput Native → El juego reconocerá los gatillos de nuestro mando como un único eje analógico. Esto no tiene por qué ser un problema, ya que podrás acelerar con un gatillo y frenar con el otro, todo de manera analógica. El único inconveniente es que no podrás usar ambos gatillos simultáneamente para ciertas técnicas avanzadas como el punta-tacón. Ni que decir tiene que en este juego no vas a necesitar eso para nada. A menos que tengas algún tipo de TOC extraño, esta configuración te debería bastar.
    • ExtendedGamepad → El juego debería reconocer los gatillos de nuestro mando como dos ejes analógicos independientes. Esta solución puede ser la más adecuada para tu TOC pero, repito: en este juego NO FUNCIONA BIEN. Opción descartada.
Recapitulando, entonces:
  • La vibración y el uso de gatillos analógicos como dos ejes separados con Xidi, no funcionan. Lo de los gatillos no debería ser un problema, a menos que seas un fucker del punta-tacón o tengas un serio problema de TOC.
  • Para tener vibración en un mando XInput deberemos usar el "Force Feedback Driver for XInput" de Masahiko Morii.
  • Si tienes un mando (con capacidad de vibración) XInput de 360, One/Series o clon conectados por cable, o bien Dualshock 4, Dualsense conectados por cable o bluetooth a través de DS4Windows, que en las propiedades del mando en el menú de Dispositivos e impresoras se muestre como "XBOX 360 For Windows" o "Xbox One For Windows", estás de suerte porque la vibración funcionará perfectamente gracias al "Force Feedback Driver for XInput" de Masahiko Morii, específicamente una modificación del mismo por parte de un tal NUK3 TH3 WHAL35 para soportar mandos de Xbox One (USB). Lo tienes disponible aquí, concretamente en el enlace a OneDrive que allí aparece. Si ese enlace está caído, he creado un mirror aquí. El uso de este driver equivaldría a usar Xidi con el perfil "XInput Native (el juego reconocerá los gatillos de nuestro mando como un único eje analógico). No podremos asignar los gatillos a las acciones de subir y bajar marcha, a menos que los mapeemos a dos teclas cualasquiera del teclado con joy2key o con DS4Windows si usas un Dualshock 4 o un DualSense.
  • Si tienes un mando (con capacidad de vibración) XInput original de One/Series conectado por bluetooth, puedes usar reWASD para mapearlo a un mando de 360/One que el driver de Masahiko Morii reconocerá, y la vibración funcionará.
  • Si tienes un mando XInput sin capacidad de vibración, o con capacidad de vibración pero que no entre en ninguna de las categorías anteriores, como es el caso del 8BitDo Ultimate C Wired USB, date por jodido, porque la vibración no va a funcionar, a menos que el creador de Xidi lo arregle. Es mucho más probable eso antes de que alguien actualice el driver de Masahiko con la ID de hardware de tu mando XInput. En tal caso, tienes dos opciones: dejar instalado el driver de Masahiko y ya está, en cuyo caso la única limitación que tendrías sería la de no poder asignar los gatillos a las acciones de subir/bajar marcha (cosa que se soluciona mapeando previamente los gatillos a dos teclas cualesquiera del teclado con joy2key), o bien puedes deshacerte del driver de Masahiko, usar Xidi (es decir, copiar a la carpeta del juego el archivo "dinput.dll" que se encuentra en la carpeta Win32 del zip), con lo cual lo que conseguirías sería que el juego reconociese los gatillos como botones digitales normales directamente, sin necesidad de joy2key, ya que, por defecto, Xidi utiliza el perfil StandargGamepad definido en su documentación, y que he explicado más arriba. Esta opción es mi recomendación si tu mando cumple las características descritas.
Si tienes un Dualshock 4 o un DualSense y te convence mi esquema de control, puedes descargar mi perfil de DS4Windows desde aquí (pegar en la carpeta "Profiles" de DS4Windows). Si tienes un mando de Xbox, te recomiendo encarecidamente joy2key para mapear el mando a las teclas del teclado de la imagen anterior, siguiendo el procedimiento descrito.

En cuanto a los ajustes del mando dentro del propio juego, aquí está mi configuración al detalle, que iré comentando a continuación:


Si estamos usando el driver de Masahiko Morii, el mando que aparecerá será "XBOX 360 For Windows". Si, por alguna razón, has decidido esta vez usar Xidi, pondrá "Xidi Virtual Controller". Como vemos, el Force Feedback está habilitado. Por último, una opción interesante a activar es la llamada "Efecto de conducción". Activar esta opción hará que los giros de las ruedas sean mucho más progresivos. De lo contrario, la dirección/volante del vehículo girará a la misma velocidad a la que giremos el stick. En la práctica, los movimientos que uno hace con el stick suelen ser muy rápidos. Esto se trasladará tanto a nivel de control como a nivel visual, y el coche será más complicado de controlar, además de ver las ruedas girando casi instantáneamente de un tope de dirección al otro, lo cual le resta mucho realismo al acabado visual. El único caso en el que necesitaremos dejar esa opción deshabilitada será cuando usemos un volante de verdad.

En cuanto a la calibración analógica, podremos ajustar la zona muerta y el tope del recorrido, pero no la linealidad, hasta donde yo sé. Este es el aspecto del eje horizontal del stick izquierdo de mi mando (Eje 0 en la imagen):


Como se puede ver, he ampliado la zona muerta, ya que me parecía que el vehículo empezaba a girar a tope demasiado pronto, es decir, con un ángulo de giro del stick demasiado pequeño aún. Esto lo mejora bastante, en mi opinión.

Por último, estos son los ajustes específicos de vibración:


Recomiendo subir los valores de vibración al 100% como se ve en la captura, ya que la vibración en este juego no es excesivamente potente, al menos utilizando las soluciones actuales para mandos XInput. En cuanto a la opción "Actualización Force Feedback", si no la activo no tengo vibración. No entiendo la razón de ser de esta opción, cuando ya existe un ajuste específico para activar o desactivar la vibración. Quizás se trate de algo diferente que no ha sido correctamente trasladado al mando XInput, o algo específico de volantes, o vaya usted a saber. El caso es que este ajuste, al menos en mi experiencia, tiene que estar activado.


╔════════════════════════════╗
ReShade (opcional)
╚════════════════════════════╝

Reshade es un inyector de efectos por post-procesado -tales como oclusión ambiental, profundidad de campo, aberración cromática, grano/ruido, correcciones de color, etc.- desarrollado por Crosire, que podemos aplicar a nuestro juego para cambiar y mejorar su aspecto gráfico. ReShade funciona con juegos en DirectX 9, 10, 11, 12, OpenGL y Vulkan.

Nota: las siguientes capturas relativas a la instalación y configuración de ReShade pertenecen al tutorial del Star Wars: Racer, por lo que las rutas de los ejecutables, etc., son distintas.

Primero, descargaremos ReShade desde su web oficial. En el momento de escribir esto, la última versión disponible sigue siendo la 5.9.1. Al ejecutar el archivo nos pedirá que localicemos el ejecutable del juego donde queremos inyectar ReShade (por defecto, la versión de FX Interactive se instala en C:\ Archivos de Programa (x86) \ MVM 2004 - Colin McRae Rally 2.0 \ CMR2.exe):


A continuación, tenemos que decirle a ReShade qué API gráfica está usando nuestro juego. El juego corre bajo DirectX 7, pero ya sabemos que, dgVoodoo mediante, el juego está siendo convertido a DirectX11 "al vuelo", por lo que marcaremos la segunda opción:


En el siguiente paso, podemos pasar y crear nosotros nuestro propio preset jugando con los distintos shaders y configuraciones, o importar uno ya hecho:


El que yo he creado, aparte de ser bastante liviano en cuanto a recursos, es sutil y da a la imagen un aspecto más cálido y agradable, con una iluminación, sobre todo de los cielos, algo más realista. Aquí imágenes del antes y el después (en estas capturas la calidad del "mapa de entorno" estaba en "bump", por lo que el coche tiene ese acabado serreteado feo):



Si te gusta mi perfil de ReShade, puedes descargarlo de aquí.

Una vez descargado, coloca el archivo en la carpeta principal del juego. Entonces, desde la ventana de instalación de ReShade que aún tienes abierta, busca el archivo y selecciónalo. Si lo has hecho así, en el siguiente paso habrá ya unos cuantos packs de shaders seleccionados:


En teoría, dejándolos tal cual vienen debería funcionar mi preset sin ningún problema, pero muchas veces no se instalan todos los que deberían. Por ello, te recomiendo que marques todos e instales todo (haciendo clic en "Unckeck all" y luego en "Check all").

Una vez hecho, empezará a descargar los shaders de algún lugar de internet (algún repositorio de GitHub, imagino). Cuando haya terminado, si todo ha ido bien, saldrá esta ventana:


Hacemos clic en Finish y ya estaría. Ahora, cada vez que iniciemos el juego, nos saldrá un pequeño banner semitransparente en la parte superior de la pantalla anunciando que ReShade está cargando los shaders de nuestro preset. Una de las ventajas de las últimas versiones es que detecta cuando estamos viendo una secuencia FMV y no se aplica ahí, o eso parece ocurrir en Ford Racing 2 (aunque no en Ford Racing 3).

En cuanto a cómo se usa ReShade, cómo modificar el preset o crear uno nuevo, cómo alterar individualmente los parámetros de cada shader, hacer capturas de pantalla con el antes y el después, activar o desactivar efectos individualmente o en conjunto, medir el impacto en milisegundos de cada shader en el pipeline global, y un largo etcétera, hay muchos tutoriales y vídeos a lo largo y ancho de la red, pero aquí tienes el tip más básico con el que empezar a toquetear: con la tecla "Inicio" o "Home" del teclado nos aparecerá, en una ventana flotante encima del propio juego, la interfaz gráfica de ReShade. A partir de ahí, el mundo es tuyo.

Otro pequeño consejo es que, si quieres utilizar shaders que necesitan acceder al buffer de profundidad (depth buffer), como por ejemplo los que alteran la profundidad de campo, etc., deberás tener desactivado el MSAA desde los ajustes de dgVoodoo, en este caso, o desde los ajustes del propio juego o del panel de control de la gráfica, en general. En el caso de mi preset, ninguno de los shaders que utiliza necesitan acceder a dicho buffer, por lo que no necesitas desactivar el anti-aliasing y todo se verá mucho más sólido.

Por cierto: el único archivo dll que introduce ReShade en la carpeta de instalación del juego es "dxgi.dll". Y, en cuanto a problemas o fallos, a diferencia de FR2, la instalación de ReShade no repercute negativamente en el juego ni se cuelga al salir.


╔════════════════════════════╗
Multiplayer
╚════════════════════════════╝

Tenemos varias opciones de multijugador (aparecen en inglés aunque tengamos el juego en español):

  • Partida en red IPX → Admite de 2 a 8 jugadores. Requiere un CD del juego como mínimo y dos o más ordenadores conectados a una red activa compatible con el protocolo IPX.
  • Partida en red a través de MÓDEM → Admite 2 jugadores. Requiere un CD del juego como mínimo y dos ordenadores, cada uno dotado de un módem de 56 kbps o superior.
  • Partida en red TCP/IP → Admite de 2 a 8 jugadores. Requiere un CD del juego como mínimo y dos o más ordenadores conectados a una red activa compatible con el protocolo TCP/IP.
  • Partida en red en SERIE → Admite 2 jugadores. Requiere un CD del juego como mínimo y dos ordenadores conectados a través de sus puertos en serie mediante un cable de módem nulo.
De las cuatro opciones, las únicas en las que el juego me permite entrar son las dos últimas. Entiendo que no habrá problema para hacer funcionar siguiendo el mismo tutorial de mi anterior entrada de este blog dedicada a Ford racing 3. Te dejo, a continuación, un vídeo donde creo que explica todo bastante bien. Se basa en Hamachi. He leído que esta aplicación limita el número del lobby de jugadores simultáneos a 5, además de otros problemas y complicaciones que ahora no recuerdo. En definitiva, te recomiendo seguir el videotutorial que te pongo a continuación, pero usando una alternativa a Hamachi llamada Radmin VPN:


¿Dónde puedes encontrar gente para jugar online o charlar sobre éste y otros juegos de carreras? Pues en Discord, claro. En el servidor Retro Racing Point. No hay un canal como tal dedicado a Colin McRae 2.0, pero seguro que hay gente allí dispuesta a echar unas carreras.


_____________



)-------------------------------------------------(
APÉNDICES, INFORMACIÓN
ADICIONAL Y
OTRAS CUESTIONES
)-------------------------------------------------(

 

_____________


╔════════════════════════════╗
Restauración de secuencias FMV
(descripción detallada para futuras consultas)
╚════════════════════════════╝

Sabía que se me podía complicar la cosa en este punto, y no me equivocaba. Menuda odisea. Pero vayamos por partes (tocho inside).

Este juego tiene varias secuencias FMV:
  • Logo de Codemasters, nada más ejecutar el juego (archivo "cm.bik" en carpeta "FrontEnd").
  • Intro del juego, a continuación del logo de Codemasters (archivo "intro.bik" en carpeta "FrontEnd").
  • Vídeos introductorios de los distintos rallies (en carpeta "CountrySpecific \ Europe"):
    • Australia → Aus.bik
    • Finlandia → Fin.bik
    • Francia → Fra.bik
    • Grecia → Gre.bik
    • Italia → Ita.bik
    • Kenia → Ken.bik
    • Suecia → Swe.bik
    • Reino Unido → UK.bik
Todas ellas están en formato Bink video a 640x480 y a 30fps (el logo de Codemasters, a 25fps). Aquí detallo el proceso que he seguido, en orden cronológico. Esto es lo que he hecho:

 Reescalar los vídeos en Topaz Video AI. Este programa permite importar los archivos .bik y trabajar con ellos con total facilidad, ya que se traga el formato sin problemas. Todos los vídeos menos el del logo de Codemasters tienen márgenes negros superior e inferior que pertenecen al propio vídeo. En un monitor 16:9 estos vídeos se ven completamente estirados, aunque marquemos en las opciones de reescalado del panel de control de Nvidia que el reescalado lo haga la gráfica y que mantenga la relación de aspecto:


Sospecho que estas opciones no afectan al juego al ejecutarse en modo ventana, pero podría estar equivocado. Lo único cierto es que se ven estirados y, aunque no lo estuvieran, entre los márgenes laterales que surgirían con el pillarboxing, y los márgenes superior e inferior que ya traen los propios vídeos, éstos se verían enmarcados, lo cual también es una mierda. Por eso he tomado la decisión de reescalar a 1080p incluyendo márgenes negros laterales del pillarboxing en el propio vídeo para que, en un monitor 16:9, se vea siempre con la proporción correcta pase lo que pase. En el caso del logo de Codemasters, no habría que hacer nada más, pues no tiene márgenes negros superior e inferior. Pero para el resto de secuencias FMV he tenido que aplicarles un recorte de dichos márgenes para quedarme sólo con la parte del fotograma que contiene información, y reescalar esa parte a 1080p. En este caso da la casualidad de que la imagen en sí no dista tanto de ser 16:9 (sería 1.67:1, a caballo entre 16:9 y 16:10), por lo que, una vez recortada y reescalada, los márgenes laterales del pillarbox serán bastante pequeños. Pero todo esto se explica mejor con imágenes.

En esta primera imagen vemos el fotograma en su proporción original, tal como se vería en una pantalla 4:3. Los márgenes superior e inferior pertenecen al mismo. Entiendo que los pusieron para que la imagen no se estirase verticalmente en su momento (o quizá, simplemente, para hacerlo más "cinematográfico"):


A continuación vemos cómo se vería el fotograma original en una pantalla 16:9 si fuera posible no estirarlo. En ese caso hipotético (que no dudo que se pueda, pero yo no lo he conseguido), los márgenes laterales no pertenecerían al fotograma, mientras que los márgenes superior e inferior, sí, viéndose la imagen como "enmarcada":


Pero, en la práctica, cuando ejecutamos el juego en un monitor 16:9, lo que tenemos es un fotograma estirado en el eje horizontal, pero manteniendo lógicamente los márgenes superior e inferior, porque son parte del vídeo, están en el fotograma:


Lo que he hecho ha sido recortar la parte visible del fotograma original y reescalarlo a 1920x1080 pillarboxeado, es decir, rellenando de negro los laterales hasta completar el marco 16:9 pues, como he mencionado antes, la imagen está entre 16:9 y 16:10 (16:9.56 o 1.67:1, para ser exactos):


Con eso tenemos el fotograma original completo, sin pérdida de información visual y sin estirar. Podría haber recortado un poco más por arriba y por abajo, eliminando parte de la imagen, en una proporción 16:9 para que se viera a pantalla completa, pero eso habría supuesto la pérdida de información en la imagen. En este caso no queda mal, pero no me gusta mutilar la imagen original, por poco que sea:


Topaz Video AI nos permite realizar tanto el reescalado como el recorte de una sola vez. También el interpolado de frames, pero considero que otras herramientas lo hacen mejor, como enseguida señalaré. Estos han sido los ajustes que he utilizado para reescalar todas las secuencias FMV en Topaz Video AI v3.3.2:


Me gusta exportar siempre en ProRes 422 LT con extensión .mov, ya que es el formato que más calidad proporciona, asegurándonos la máxima calidad de partida para el resto de procesos. Como ves, la pista de audio original de archivo .bik no es compatible con el formato. Las opciones que nos da son recodificar o eliminarla. No tiene sentido recodificar y mantenerla porque, en última instancia, vamos a usar la pista de audio original, así que la eliminaremos.

 Una vez tengamos todos los archivos .bik reescalados a 1080p y convertidos a ProRes, es momento de duplicar el framerate mediante interpolación por IA. Para ello nos serviremos del modelo Rife, utilizando la interfaz gráfica conocida como FlowFrames, creada por un tal n00mkrad. Puedes descargar la versión gratuita desde este enlace, donde está disponible la versión 1.36.0, que contiene el modelo Rife en su versión 4.0. La que yo tengo es la versión 1.40.0, que utiliza la versión 4.6 de Rife, y que sólo está disponible en su Patreon.

Muy importante: ejecutaremos FlowFrames como administrador. Estos son los ajustes que he utilizado:



 Los archivos H.264 (.mp4) resultantes pesarán bastante menos que los archivos ProRes (.mov), y serán compatibles con el siguiente programa a utilizar: The Rad Video Tools, de Bink Video, que podemos descargar aquí en su versión 2023.08. Una vez instalado, lo abriremos, seleccionaremos el archivo o archivos a codificar y haremos clic en el botón "Bink it!":


En la siguiente ventana dejaremos todo por defecto y haremos clic en el botón "Bink". En caso de ser más de un archivo, nos avisará de que podemos procesarlos en lote mediante el botón "Batch".


Una vez terminado el proceso, que se puede demorar unos cuantos minutos en función del número de archivos y su duración, cerraremos la ventana:


Al final tendremos un puñado de archivos con extensión .bik pero sin sonido. El último paso será añadirles el audio. En el caso del logo de Codemasters y de la Intro, será coser y cantar, y lo vamos a ver enseguida. En el caso del resto de archivos, la cosa se complica bastante, al contener varias pistas de audio, obligándonos a utilizar Linux. Luego explicaré el motivo y el procedimiento pero, de momento, vamos a añadir el audio a uno cualquiera de los dos mencionados, que tomaremos como ejemplo: el logo de Codemasters. Así se haría:

Desde la ventana principal de RAD Video Tools, seleccionaremos nuestro archivo .bik sin sonido y haremos clic en el botón de la parte inferior de la ventana llamado "Mix in sound":


En la nueva ventana, haremos clic en "Browse" para buscar el archivo del que queremos transplantar la pista de audio:


En la siguiente ventana tendremos que desplegar la lista inferior para que nos muestre los archivos .bik. De lo contrario, no podremos localizar nuestro archivo:


Una vez seleccionado, haremos clic en "Open". Nos devolverá a la ventana anterior, donde únicamente tendremos que cambiar un parámetro: en el apartado "Mixing info", cambiaremos el nivel de compresión del sonido a 100 y haremos clic en "Mix":


La explicación: si bien no hay problema en reescalar el vídeo, interpolarlo a un mayor framerate, etc., pues el compresor de Rad Video Tools creará un archivo compatible con la versión de Bink que utiliza el juego y se verá correctamente, no ocurre lo mismo con el audio: si dejamos la casilla de "Sound compression level" en blanco o ponemos un valor entre 0 y 99, creará una pista de audio en formato Bink Audio DCT, y el resultado en el juego será que las secuencias FMV tendrán imagen pero no sonido. La única manera de que el sonido funcione es creando una pista Bink Audio RDFT, y para ello podemos descargar una versión antigua de Rad Video Tools, o bien usar la versión que tenemos y recurrir al "truco" de escribir el valor "100" en la casilla. Arcaico, ortopédico, engorroso y contraintuitivo. Rad Video Tools lo tiene todo. Menos mal que encontré este hilo de reddit...

Una vez finalice el proceso, haremos clic en "Done" y habremos terminado.


 Por desgracia, Rad Video Tools no permite, repito, NO PERMITE crear archivos .bik con varias pistas de audio. Si intentamos el proceso del punto 3 con uno de los archivos de presentación de los rallies, insertará en nuestro archivo únicamente la primera de las cinco pistas de audio. Incluso si extraemos las pistas de audio por separado con una herramienta como VGMToolbox siguiendo este tutorial, el Bink Audio Mixer de Rad Video Tools no nos permitirá seleccionar más de un archivo de audio al mismo tiempo y, si vamos una por una, cada vez que hagamos el mix se cargará la pista que ya teníamos incrustada en nuestro archivo. Vamos, una pérdida de tiempo total y un callejón sin salida. Es decir, Bink reconoce archivos con múltiples pistas de audio pero no permite crearlos... Estúpido Bink Video, estúpido Rad Video Tools y estúpida compañía Rad Game Tools, ahora perteneciente a Epic Games. Y, claro, la posibilidad de crear un archivo de vídeo por cada pista de audio ni la contemplo, no ya por lo engorroso del asunto, sino porque el juego busca la pista de audio en el archivo .bik según el idioma que hayamos escogido en los ajustes principales. Si no encuentra la pista en el orden esperado, lo más seguro es que aparezca un mensaje de error y el juego se cierre. Además, aunque no fuera así, me parece una solución muy poco elegante. Para eso es preferible no reescalar esas secuencias FMV y hacerlo sólo con el logo de Codemasters y la Intro.

Por suerte, no siempre las cosas se quedan a medias. Esta vez he podido encontrar la manera definitiva de solucionarlo en un lugar muy remoto de internet. En este hilo de este foro un español con el nickname Fl0ppy ha creado una pequeña herramienta que sólo funciona en Linux (empezamos bien) y que permite, precisamente, extraer y empaquetar pistas de audio de/a archivos .bik y b2k. En teoría, esta utilidad nos debería permitir coger los archivos de vídeo originales, sacarles las pistas de audio y metérselas en los nuevos archivos reescalados e interpolados.

Éste ha sido, paso a paso, el proceso seguido para conseguirlo:

Lo primero, vamos a instalar una distro de Linux en una máquina virtual, ya que me parece la forma más sencilla y menos engorrosa de tener un Linux funcionando con internet, posibilidad de documetnar el proceso con capturas de pantalla, etc. De entre las máquinas virtuales más conocidas, como son VirtualBox y VMWare, sólo tengo experiencia de manejo con la primera. Entonces, iremos a la web de descarga de VirtualBox y haremos clic donde pone "Windows hosts". Comenzará a descargar la última versión para Windows que haya en ese momento. Una vez descargada, la instalación es muy sencilla: doble clic y seguir los pasos. No tiene pérdida.

A continuación, buscaremos la distribución de Linux. Tengo especial predilección por Mint o, en su defecto, por Ubuntu. Creo que son de las más sencillas de utilizar. Lo que está claro es que no vamos a instalar Linux de cero en la máquina virtual, sino que vamos a descargar directamente una imagen de VirtualBox ya preinstalada y preconfigurada. Hay una buena selección de ellas en la web de Linux VM Images. En ella, haremos scroll hasta el apartado de Linux Mint y descargaremos la última imagen disponible para VirtualBox. En este caso, llevaría Linux Mint v21. Haremos clic en el botón de "VirtualBox Image (2.1 GB)":


Una vez descargado, descomprimimos el archivo 7z a una carpeta. Dicha carpeta contendrá un archivo con extensión .vbox y otro con extensión .vdi. Ahora, abriremos VirtualBox, que tendrá este aspecto:


Haremos clic en la cruz verde y cargaremos nuestro archivo con extensión .vbox. Con eso ya tendremos Linux Mint 21 listo para ser usado:


Ahora simplemente haremos clic en la flecha verde de Start y esperaremos la que se inicie la máquina virtual. Una vez cargada, vemos que Linux Mint nos pide una contraseña. Por defecto es "linuxmint", sin las comillas. Una vez introducida y pulsado Intro, cargará la interfaz Cinnamon y nos aparecerá una ventana de bienvenida, desde la que podremos configurar algunas cosas. De momento, vamo a cerrarla. Si nos salta alguna ventana de actualización del sistema o de las aplicaciones en algún momento, aceptaremos. Nos pedirá la contraseña que ya conocemos. De hecho, la pide para muchas cosas. En cuanto a la red, no tenemos que hacer nada: todo viene preconfigurado y con internet funcionando sin problemas. Como navegador, usaremos el que viene por defecto (Firefox).

Los pasos que vienen ahora podrían ser más sencillos, pero no he sido capaz de encontrar la forma de copiar y pegar archivos entre el sistema host y la máquina virtual, por lo que he hecho todo a través de internet. En la ventana de la máquina virtual corriendo Mint, tenemos el menú superior. Si hacemos clic en Dispositivos - Portapapeles compartido - Bidireccional, podremos copiar y pegar URLs (algo es algo). Arrastrar y soltar también lo tengo como Bidireccional, pero parece ser que no funciona. También es cierto que no soy ningún experto en máquinas virtuales... Tal es así que creo que en Dispositivos - Carpetas compartidas podría estar la clave para intercambiar archivos entre el host y la máquina virtual, pero no lo he investigado, la verdad. Lo que he hecho ha sido subir previamente los archivos .bik multipista originales que traía el juego (carpeta "CountrySpecific \ Europe"), sin ningún tipo de edición ni modificación, a un servicio de alojamiento en la nube y los he descargado desde Mint. Lo mismo con el "Automated tool to extract and mux bik audio files" del tipo español que he mencionado antes.

A estas alturas deberías tener, en una misma carpeta en el escritorio de Mint, los siguientes elementos:

- Los 8 archivos .bik.
- Los archivos de la herramienta en cuestión.


A continuación, daremos permisos a los archivos con extensión .sh. Podemos usar un comando de consola, pero lo más sencillo es hacer clic con el botón derecho en cada archivo - Propiedades - Permisos y marcar la casilla "Permitir ejecutar archivo como un programa":


Y así con los 4 archivos .sh

Ahora, dentro de la carpeta donde tenemos todos los archivos, haremos clic con el botón derecho sobre una zona en blanco y escogeremos "Open in terminal". Cuando se abra la ventana de la terminal, escribiremos el comando:
./extractmassive.sh
y pulsaremos Intro.

Nos saldrá un mensaje de error en letras rojas:
ERROR: ffmpeg is missing install with

sudo apt-get install ffmpeg
En el propio mensaje de error está la solución (gracias, Fl0ppy). Escribiremos, pues, el comando:
sudo apt-get install ffmpeg
y pulsaremos Intro. Esperaremos a que se instale ffmpeg y volveremos a intentar el comando anterior:
./extractmassive.sh
Si lo hemos hecho bien, una vez terminado el proceso nos habrá creado 5 archivos de audio por cada archivo bik. En total, nuestra carpeta contendrá ahora un total de 72 archivos.

Ahora necesitamos traer a la máquina virtual los 8 archivos .bik que previamente hemos reescalado e interpolado. De nuevo, los he subido a una web de alojamiento en la nube para descargarlos desde Linux Mint. Asegúrate de que se llaman exactamente igual que los originales, ya que en el proceso de reescalado, interpolado y compresión a bik habrán cambiado de nombre, con total seguridad. Si es el caso, los renombraremos. Una vez hecho, los pegaremos en nuestra carpeta de trabajo, reemplazando los archivos originales por los nuevos:


Antes de ejecutar el script de reempaquetado (que está en el archivo "massive_injection.sh"), me voy a adelantar al siguiente problema: tenemos que saber qué valores de compresión va a aplicar a los audios a la hora de empaquetarlos en el bik. con el vídeo. Recordemos: necesitamos que las pistas de Bink audio sean RDFT y no DCT. Para que eso sea así, tenemos que escribir "100" como valor de compresión. Pero, ¿dónde y cómo? Vamos a verlo.

Volvamos por un momento a Windows, desde donde, ejecutaremos el archivo "binkmix.exe" que viene con la utilidad que estamos manejando. Cuando lo hagamos, veremos esto:


Fíjate en el comando resaltado en amarillo: el símbolo de almohadilla deberá ser sustituido por un valor numérico en algún sitio, y es en ese sitio donde deberemos poner "/L100". Nos falta saber dónde.

De vuelta a Linux Mint, vamos a abrir el archivo "massive_injection.sh" para ver qué contiene. Para ello, haremos doble clic y elegiremos la opción "Display" o "Mostrar":


Y al abrirlo, veremos esto:


El script no hace más que repetir en bucle otro script mientras se cumpla la condición demandada. Y ese otro script está en el archivo "bikaudioinjector.sh". Si abrimos ese archivo, veremos lo siguiente:


Ha habido suerte. Ya sabes lo que hay que hacer: cambiar ese "/L4" por "/L100" y guardar los cambios.

Aparte de eso, si te fijas en el resto del script, hay un detallito más que sale a relucir: el script funciona con wine porque, como puedes ver, el script prevé escribir por pantalla un mensaje de error si detecta que no está instalado, incluyendo el comando para instalarlo, por gentileza de Fl0ppy. Como no lo tenemos instalado, será lo primero que hagamos, por lo que volveremos a la ventana de la consola de comandos, introduciremos lo siguiente y pulsaremos Intro:
sudo apt-get install wine
Nos saldrá un mensaje que nos pedirá confirmar con la tecla "Y". Confirmaremos y esperaremos a que termine la instalación. Le puede costar unos minutos. Cuando termine, ya sólo nos quedará ejecutar el script de compresión y empaquetado:
./massive_injection.sh
Al pulsar Intro saldrá una pequeña ventana de actualización de wine. No hace falta tocar nada. Podemos ver todo el proceso de actualización de wine en la consola de comandos. También aparece un mensaje diciendo que no se ha encontrado "Gecko" y que no utilizará html. Olvídate de ese mensaje. Tan pronto como se haya actualizado, verás al script empezando a funcionar. Cuando termine, ya tendremos los archivos bik reescalados, interpolados, y con sus pistas de audio intactas y aptas para ser utilizadas por el juego.

Tengo que precisar que al final del proceso me da un mensaje de error que no me da con el valor "/L4":
0098:err:rpc:I_RpcReceive we got fault packet with status 0x1c010003
Creo que es cosa de wine, pero no veo que haya afectado en lo más mínimo al resultado: los archivos están bien, están correctos y funcionan. Para sacar los archivos de la máquina virtual, puesto que ya he comentado que me falta más conocimiento del funcionamiento de VirtualVox, he optado por meterlas en un zip y subirlas a file.io, el servicio de alojamiento de archivos en la nube más directo y sencillo que encontré.


╔═══════════════════╗
NOTAS FINALES
╚═══════════════════╝

Otro juego rescatado del ostracismo que, gracias a los parches y fixes de la comunidad, y a una buena dosis de investigación y dedicación personal para reunir y combinar todos los fixes, junto con una cantidad importante de pruebas, quebraderos de cabeza y mucho ensayo-error, luce y se mueve mejor que nunca. MEJOR-QUE-NUNCA.

Junto a la satisfacción personal del reto superado está el continuo aprendizaje derivado de todo el proceso, el cual intento dejar reseñado en este blog con el máximo detalle posible (o sea, "para tontos") para que ese conocimiento no se pierda en el éter.

Hasta el próximo juego.

Comentarios