Category: Tips

Corrección de resoluciones en Windows para Juegos Abandonware

Recientemente he tenido la oportunidad de empezar a trabajar con Windows 10 y de lo primero que he hecho ha sido testear software desarrollado para versiones anteriores de Windows. De las primeras que he probado, ha sido qué tal se comporta Windows 10 con Juegos Abandonware.

Hace ya un tiempo publicaba una entrada que hablaba sobre la corrección de colores en juegos abandonware en sistemas operativos de Windows más modernos. En este aspecto me ha sorprendido Windows 10, con una opción en su capa de compatibilidad para forzar a ejecutar las aplicaciones en modo 8 bits o 16 bits de color.

Propiedades-Compatibilidad_Windows10

Esta opción nos permite arreglar el problema al que dábamos solución en dicha entrada. No obstante aparece otro problema, y es que por mucho que seleccionemos en "Opciones gráficas" la opción de "Escalar a pantalla completa" mantiene el ratio de aspecto. Esto se debe a que las configuraciones que usa el sistema y con las que se lanza un juego abandonware no son heredadas. Esto quiere decir que da igual cuánto te esfuerces en revisar todas las configuraciones que no será la que luego Windows aplique para lanzar el juego. Por ejemplo, si pruebas a ejecutar un clásico como el "Age of Empires 2" verás que se generan dos franjas negras en los lateras.

Age of Empires II Expansion black-bands

Estos juego que tienen más de 10 años, suelen trabajar en resoluciones nativas con una relación de aspecto de 4:3 con unas resoluciones nativas que solían ser de 800x600 y que posteriormente se escalaba a resoluciones mayores o expandía a pantalla completa si la relación de aspecto era distinta.

En versiones anteriores a Windows 10 bastaba con cambiar la resolución a 800x600 y seleccionar en las "Opciones gráficas" la opción "Escalar a pantalla completa" . A partir de este momento podíamos volver a nuestra resolución habitual y bastaba con lanzar el juego. Este procedimiento no es válido para Windows 10 ya que no se hereda la configuración y es necesario volver a fijar la resolución en caliente.

Para cambiar la configuración de la resolución mediante mediante un atajo de teclado, usaremos Hotkey Resolution Changer (HRC) que lo podéis descargar del siguiente enlace:

HRC_-_HotKey_Resolution_Changer_v2_1.exe

Guardaremos el ejecutable en una carpeta y lo ejecutaremos con un doble click.

El programa permite definir varios atajos para cambiar la resolución al momento. A la hora de definir los atajos, intentad que sea una combinación de teclas que no se use en vuestro equipo, como puede ser CTRL+SHIFT+1CTRL+SHIFT+2.

En la primera resolución guardaremos la que usamos, mientras en la segunda buscaremos la de 800x600.

HRC_v2.1

Una vez fijadas las resoluciones con sus respectivos atajos, seleccionamos el icono de minimizar al lado del aspa roja, para que el programa se mantenga residente en la barra de tareas.  Con el HRC configurado, lanzamos el juego.

En el caso particular del "Age of Empires 2", además he creado un “Lanzador.bat“  en la carpeta del ejecutable del juego, con las siguientes líneas:

taskkill /F /IM Explorer.exe
age2_x1.exe normalmouse
start explorer.exe 

La primera línea detiene el proceso "Explorer.exe" para evitar problemas en el color. La segunda línea lanza el juego con el parámetro "normalmouse" que hace que no se cargue el icono del cursor del juego y cargue el del sistema. Esto se hace porque al poner el juego en pantalla completa con el HRC, el cursor desaparece. La tercera línea vuelve a lanzar el proceso "Explorer.exe" cerrado en la primera línea tras terminar la ejecución del juego. La primera línea sigue siendo necesaria a pesar de que se pueda seleccionar el parche de color en la pestaña de compatibilidad, porque cuando se lanza el juego desde “Lanzador.bat“ parece no aplicarse dichas configuraciones.

Lanzamos el juego mediante el lanzador y con el juego en marcha podremos poner la resolución a pantalla completa usando el atajo de teclas CTRL+SHIFT+2,  que aplica la resolución a 800x600 a pantalla completa, gracias a haber configurado para dicha resolución la opción "Escalar a pantalla completa" desde el sistema como se hacía para versiones anteriores de Windows 10.

Age of Empires II Expansion full-screen

Al salir del juego tendréis la resolución de 800x600 en el escritorio. Utilizad el atajo CTRL+SHIFT+1 para poner la resolución que originariamente teníais.

No es una solución del todo decorosa la que se presenta en esta entrada, ya que se cambia en caliente la resolución para el juego que se está renderizando, pero no obstante funciona (que no es poco 😉). A Microsoft se le olvidó este tipo de cosas cuando definía su capa de compatibilidad para Windows 10, que por otro lado es de las más completas hasta la fecha. No es sencillo mantener una retrocompatibilidad tan alta como la que mantiene Windows, para hacer funcionar software diseñado para versiones anteriores y hasta primitivas del sistema.

Deshabilitar el uso obligatorio de controladores firmados en Windows

Las nuevas versiones de Windows  se van sucediendo y con ello la seguridad del sistema se va mejorando. Muchas veces esto implica que se nos complica un poquito más la vida a los desarrolladores. Este es el caso de la instalación de controladores  que no están firmados digitalmente en sistemas de 64 bits posteriores a Windows 7.

Los sistemas operativos Windows de Microsoft, se pueden encontrar en dos estructuras como son las versiones de 32 bits como de 64 bits. Estas opciones cuentan con ciertas diferencias. Un ejemplo claro, es que en el caso de que decidamos instalar un conjunto de controladores que no posean firmas digitales, sólo podremos realizar el proceso si nuestro sistema operativo es de 32 bits. Esto es debido a que los sistemas operativos Windows de 64 bits no aceptan de manera predeterminada la instalación de controladores no firmados digitalmente, apareciendo un error como el que se puede ver a continuación al intentar instalarlos:

win8_unsigned_inf

Para solucionarlo buscamos en “Configuración” el “Inicio Avanzado”. En Windows 8 se encuentra en “Uso general” y en Windows 10 en “Actualización y Seguridad” --> “Recuperación”.

Una vez hemos encontrado, la opción le damos a “Reiniciar ahora” y se nos reiniciará el equipo. Después le damos clic en “Solucionar problemas

windows_inicio-avanzado1

Y después en “Opciones Avanzadas

windows_inicio-avanzado2

Después hacemos clic en  “Configuración de Inicio

windows_inicio-avanzado3

Luego le damos clic en “Reiniciar

windows_inicio-avanzado4

Tras reiniciar el PC, nos aparecerán las opciones de inicio y presionamos la tecla F7.

windows_inicio-avanzado5

Ahora ya podremos  instalar el driver o controlador. Cuando nos dispongamos a realizar la instalación, ya nos aparecerá la ventana de siempre que pregunta al usuario que si se acepta la instalación de un driver no firmado digitalmente.

aceptar la instalación de controladores sin firma

Si se vuelve a reiniciar el equipo, nuevamente se habilitará el uso obligatorio de controladores firmados.

Como hemos visto, podemos seguir instalando drivers o controladores no firmados en Windows 8 y 10, pero tras deshabilitar temporalmente la obligatoriedad de que deban estar firmados. Es un mecanismo que protege al usuario final de instalar drivers de dudosa procedencia, pero que tiene el coste de tener que hacerse el procedimiento descrito en esta entrada, hasta que el driver esté firmado.

Crear una copia de seguridad de los Servicios de Google

A diario desde que apareció Google, usamos una gran variedad de sus servicios como pueden ser GMail, Drive, Calendar o Hangout, por decir alguno de los más conocidos.  También es bastante frecuente encontrarnos con empresas que contratan los Servicios de Google y así externalizan algunos servicios como el del correo electrónico, siendo acompañados casi siempre por otros como el calendario, agenda, intercambio de ficheros... que ofrece Google dentro de su gran abanico de productos.

Google-Services

El problema viene el día que quieres crear una copia de tu cuenta, la cual seguramente esté vinculada a un montón de servicios de cuyos datos quieres guardarte copia, bien sea porque quieres migrar la cuenta, quieras cerrarla o por simple precaución de contar con una copia.

Para realizar dicha tarea, Google nos proporciona una herramienta para hacerlo. La herramienta la podemos encontrar entrando en la sección "Mi Cuenta", haciendo click en la parte superior derecha donde la inicial de nuestro nombre o foto de nuestro perfil. Una vez dentro debemos ir a "Información personal y privacidad" y dentro de la sección seleccionar "Controlar tu contenido". Una vez seleccionado veremos una sección que pone "Descargar tus datos" donde deberemos dar a "CREAR ARCHIVO".

Una vez dentro encontraremos una enumeración de todos los servicios de nuestra cuenta, de los cuales podremos hacer una copia si lo deseamos.

Google_services_backup

Podremos seleccionar todos los servicios o sólo algunos para incluirlos dentro de nuestra copia de seguridad. Algunos servicios permiten decidir en qué formato exportar los datos, o si queremos crear sólo copia de un conjunto reducido del servicio. Por ejemplo, el servicio Drive te permite elegir en qué formato exportar los documentos de Google y GMail te permite decidir si quieres hacer una copia completa o solo algún subconjunto de emails.

Una vez tengamos decidido los servicios que vamos a incluir en nuestra copia de seguridad, tendremos que indicar en qué formato de compresión queremos guardar toda la información, y si queremos que la copia se nos mande por un email cuando esté lista o se guarde en el servicio Drive.

Google_services_backup_2

Dependiendo la cantidad de datos que tengamos en los servicios que vamos a incluir en la copia, la operación de la generación de la copia puede llegar a tardar varias horas. En cualquier caso seremos notificados cuando esté lista. La copia de seguridad generada será particionada en varios partes con el objetivo de ser más fácil su descarga y cada una de las partes no superará los 2 GB de tamaño.

Debo puntualizar que Google se toma muy en serio la propiedad de los datos y en el caso de servicios como Google Drive, sólo incluirá en la copia aquellos archivos de los cuales estés marcado como propietario. Por lo tanto, si tienes archivos compartidos, de los cuales no eres propietario, te aconsejo que hagas una descarga manual por carpetas desde el Google  Drive. Puedes hacerlo usando la opción "Descargar" del menú accesible mediante click con el botón secundario del ratón, ya sea encima de la carpeta o archivo que quieras descargar.

Espero que con toda esta información ahora tengáis más claro cómo realizar copias de seguridad de los distintos Servicios de Google.

Lanzar procesos en la consola de comandos de Windows

Si sueles realizar scripts .BAT para el intérprete de la consola de comandos de Windows, te habrás encontrado seguramente en la necesidad de lanzar procesos. Dependiendo de las necesidades que tengamos a la hora de lanzar esos procesos, diferenciaremos entre la necesidad de mantener orden de ejecución secuencial o que sea en paralelo. Léase también que cuando hablamos de un proceso podemos referirnos tanto a un ejecutable como a otro script.

Los dos comandos más habituales para lanzar procesos, son el comando CALL y el comando START. El comando START puede que sea mas flexible que el CALL cuando hablamos de  lanzar procesos, ya que puede sustituirlo en la mayoría de los casos.

El comando CALL se usa para llamar a un proceso, saltando la ejecución al proceso que se llama y ejecutándolo hasta el final. Mientras se ejecuta el proceso invocado con el CALL, la ejecución principal desde donde se invoca al proceso, queda bloqueada y sólo es reanuda cuando se termina la ejecución del proceso invocado.

Por otro lado, el comando START llama a un proceso y lo lanza en una ventana nueva (como comportamiento por defecto). Desde el momento que se invoca el proceso, éste se ejecuta en paralelo con la ejecución principal. A efectos prácticos conseguimos ejecutar en paralelo la ejecución principal con la del proceso.

Para que quede un poco más claro, puedes probar la diferencia entre ambos con el siguiente código en el que primero se ejecuta un CALL al comando ping, luego se hace lo mismo usando START sin lanzar nueva ventana y por último usando START creando nueva ventana y esperando a que termine su ejecución.

@ECHO OFF

ECHO Execution using CALL
ECHO -------------------------------------------
ECHO Main execution running...
ECHO Calling to ping...

call ping google.es
ECHO.
ECHO Continue main execution
TIMEOUT 5 > NUL
ECHO Main execution finished!
PAUSE

cls

ECHO Execution using START
ECHO -------------------------------------------
ECHO Main execution running...
ECHO Calling to ping...

start /b ping google.es
ECHO.
ECHO Continue main execution
TIMEOUT 5 > NUL
ECHO Main execution finished!
PAUSE

cls

ECHO Execution using START with waiting
ECHO -------------------------------------------
ECHO Main execution running...
ECHO Calling to ping...

start /w ping google.es
ECHO.
ECHO Continue main execution
TIMEOUT 5 > NUL
ECHO Main execution finished!
PAUSE

El primer y el tercer ejemplo son ejecuciones secuenciales, mientras que en el segundo cuando se lanza el proceso, éste se ejecuta en paralelo con la ejecución principal.

Como esto lo mejor es probarlo para poder verlo, os animo a copiarlo en un archivo de texto y renombrar la extensión a .BAT para poder ejecutarlo con doble click. Así lo podréis ejecutar tantas veces como os haga falta.

También tenéis disponible el script en Github:

test_call-VS-start.bat