Autor Tema: [TUTORIAL] Ordena y estabiliza las IDs de mandos en Windows (Tur-Game Controller  (Leído 1667 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Pegafun

  • VIP
  • *
  • Mensajes: 183
  • Gracias 17
  • Ciudad: Lorca
  • Pais: España
  • Iniciales nick: PGF
Advertisement
ÍNDICE
     1.- INTRODUCCIÓN
     2.- INSTALACIÓN DE TUR-GAME CONTROLLER ORDER
     3.- PROGRAMAR EL INICIO DEL PROGRAMA COMO UNA TAREA
     4.- SCRIPT PARA CARGAR DIFERENTES PERFILES .INI POR SISTEMA/JUEGO
         4.1- DAR PERMISOS DE ADMINISTRADOR A ROCKETLAUNCHER
         4.2- INSTALACIÓN DEL SCRIPT
         4.3- CONFIGURACIÓN DE LA HERRAMIENTA (EDICIÓN Y ESTRUCTURA DEL ARCHIVO .INI)

1.- INTRODUCCIÓN


El gran problema que presentan todas las versiones de Windows con los dispositivos de entrada es que estos se ordenan de una forma caprichosa y arbitraria. Esto se hace a través de unas IDs que asigna Windows, pero cuyo orden y asignación puede cambiar por muchos motivos:
- Que se conecte o desconecte un nuevo dispositivo de juego.
- Una actualización o instalación de nuevo software.
- Que se reinicie el equipo.
- Que haya luna llena... es decir, por cualquier otro motivo completamente arbitrario.

Esto es un gran fastidio, porque muchos programas, juegos y emuladores dependen de las IDs de Windows para ordenar y utilizar los dispositivos de juego.

Existen tres APIs con las que Windows gestiona los dispositivos de entrada:
- RawInput: utilizada por teclados, ratones y otros dispositivos de posicionamiento óptico (como pistolas, punteros, etc.)
- Dinput: es la API más antigua utilizada por dispositivos de juego (mandos, volantes, palancas, joysticks, etc.). Actualmente Microsoft sigue soportando su uso en todas las versiones de Windows, aunque su intención es fomentar el uso de dispositivos con la API Xinput.
- Xinput: es la API más moderna, creada por Microsoft para sus mandos Xbox 360. Aunque el que sea más moderna que Dinput no significa que sea mejor, cada una tiene sus pros y sus contras. Es utilizada por muchos mandos, volantes, palancas y joysticks de reciente fabricación, y hoy en día conviven en el mercado tanto dispositivos de juego Dinput como Xinput.

En el Administrador de Dispositivos de Juego de Windows sólo se muestran los dispositivos Dinput y Xinput, los cuales se ordenan conjuntamente, sin diferenciar si son de un tipo o de otro. Por contra los dispositivos RawInput llevan una ordenación (IDs) diferente, independiente, y no se muestran en el Administrador de Dispositivos de Juego de Windows.

Haciendo uso de la aplicación Tur-Game Controller Order podremos ordenar eficazmente los dispositivos de juego Dinput y Xinput (todos juntos). De esta forma los juegos, emuladores y aplicaciones que dependan de las IDs de Windows se estabilizarán automáticamente. En la práctica los programas y juegos que dependen de las IDs de Windows son todos, aunque tenemos una pequeña excepción con MAME. Tur-Game Controller Order existe desde 2018 para solucionar el problema del cambio arbitrario del orden de los mandos, pero los programadores de MAME, precisamente por ser conscientes de este problema con las IDs de Windows, hace unas 60 versiones (desde la 0.16X, no recuerdo exactamente cual) idearon una función interna (llamada MapDevice) para reordenar las IDs dentro del emulador. Esto significa que, por defecto, MAME utiliza las IDs de Windows, pero también podemos ordenar internamente para dicho emulador los dispositivos de juego, al margen de la ordenación que maneje Windows:


Y ahora es cuando os preguntaréis: si puedo ordenar mis dispositivos de juego con Tur-Game Controller Order para todos mis emuladores y juegos, ¿qué sentido tiene hacerlo también dentro de MAME? Pues que la ventaja de la función MapDevice en MAME es que esta puede ordenar, no sólo los dispositivos Xinput y Dinput, sino también los RawInput. Eso significa que podremos ordenar también nuestras pistolas, Wiimotes y ratones dentro de MAME. Evidentemente si no vamos a jugar con pistolas, Wiimotes y/o ratones nos será suficiente con utilizar Tur-Game Controller Order para todo.

Una vez dicho esto, comencemos con este tutorial.

2.- INSTALACIÓN DE TUR-GAME CONTROLLER ORDER

El primer paso consiste en CONECTAR TODOS LOS DISPOSITIVOS DE JUEGO que vayamos a utilizar en nuestro PC. Una vez realizado este paso podemos comprobar el orden que les ha asignado Windows. Ya os aviso que no tiene por qué coincidir con el orden en el que los hayamos enchufado al PC. Para ello, en el buscador de Windows, escribiremos Configurar dispositivos de juego USB y presionaremos la tecla "Enter". Se nos abrirá la siguiente ventana:


En ella se mostrarán todos los dispositivos de juego y su orden, incluidos los virtuales. Ya podremos cerrar esta ventana presionando "Aceptar".

Para cambiar este orden y administrarlo vamos a descargar el programa Tur-Game Controller Order desde el post de su desarrollador (el enlace al principio de este post) ó desde  el siguiente enlace directo:


Una vez finalizada la descarga descomprimiremos el contenido del archivo en el destino de nuestra elección, ya que no precisa instalación. Yo lo tengo dentro de:

C:\HyperSpin\Utilities\Tur-Game Controller Order 1.5

Nos quedará una carpeta tal y como esta:


Ahora deberemos darle al programa permisos de administrador. Para ello clickaremos con el botón derecho del ratón sobre el archivo Tur-Game_Controller_Order.exe y en el desplegable seleccionaremos "Propiedades":


Esto nos abrirá una nueva ventana llamada Propiedades: Tur-Game_Controller_Order.exe. En ella deberemos activar la casilla "Compatibilidad > Ejecutar este programa como administrador":


Listo. Tras cerrar esta ventana ahora ya sí que podremos ejecutar el programa Tur-Game_Controller_Order.exe. El hacer doble click sobre el ejecutable se nos abrirán dos ventanas, por un lado la ventana de Dispositivos de juego, mostrándonos todos los que tengamos conectados al PC, con su nombre y orden de ID.
La segunda ventana es un mensaje de aviso del propio puritana, avisándonos de que es la primera vez que se ejecuta y de lo que va a hacer:


Al clickar sobre el botón "Aceptar" del programa la ventana desaparecerá, siendo sustituida por una ventana titulada Ready!. En ella se nos mostrarán todos los dispositivos de juego USB detectados y disponibles por el programa, con sus HID:


Al presionar "Aceptar" esta ventana desaparecerá, dando paso a una nueva ventana donde asignar manualmente el valor (entero) en el que queramos que lo ordene Windows. Tan solo hemos de asignar el valor, repitiendo este proceso en las siguientes ventanas, hasta que hayamos asignado un valor entero a todos los dispositivos de juego:





Cuando terminemos, el programa nos mostrará una nueva ventana, con el resultado de nuestras asignaciones:


Tras cerrarla, si nos vamos a la carpeta del programa, veremos que se ha generado un nuevo archivo llamado Settings.ini:


En este archivo se mantiene la asignación que acabamos de realizar (enmarcadas en color verde en la imagen), junto con un par de opciones para el programa (enmarcadas en color rojo):


Para que el programa compruebe periódicamente si ha habido cambios en los dispositivos hay que activar el modo Daemon, cambiando el valor a “DaemonMode=TRUE”. Os aviso que yo he tenido problemas con el valor de “DaemonModeDelay=10”, ya que me ocasionaba a veces, al tener tantos dispositivos conectados, que me desapareciesen dispositivos y que no volvieran a mostrarse.
La solución ha sido subir el valor hasta “DaemonModeDelay=30”. Este valor le dice al programa que compruebe las IDs cada 30 segundos, en lugar de los 10 por defecto.

Código: [Seleccionar]
[Game Ports]
Port1=VID_D209&PID_0511&MI_00
Port2=VID_D209&PID_0512&MI_00
Port3=VID_D209&PID_1601&MI_01
Port4=VID_D209&PID_1602&MI_01

[Daemon Settings]
DaemonMode=TRUE
DaemonModeDelay=30


3.- PROGRAMAR EL INICIO DEL PROGRAMA COMO UNA TAREA

Para hacer que Tur-Game Controller Order se inicie automáticamente al arrancar Windows y quede residente vamos a usar el Programador de tareas de Windows. Para ello haz click con el ratón en el buscador de Windows, escribe "programar tareas" y presiona Enter.



Ahora haz click en Acción y luego en Crear tareas básica.


Ponle un nombre a la nueva tarea básica, por ejemplo "Tur-Game Controller Order", añadde una descripción si lo deseas y pulsa "Siguiente":


En el nuevo menú "Desencadenar" elige Al iniciar sesión para que ese sea el momento en el que se inicie la tarea. Haz click en "Siguiente":


En Acción elige Iniciar un programa y presiona Siguiente.


Ahora deberás especificar la ruta del archivo ejecutable del programa que quieres que inicie con Windows. Para ello debes saber donde se instaló la aplicación, la mayoría están en Archivos de programa, pero si ese no es el caso puedes averiguar la ruta haciendo click derecho sobre el acceso directo a la aplicación y luego en Propiedades. En el menú que aparece mira la ruta donde dice Destino y copia:


Luego solo es cuestión de presionar Siguiente y Finalizar para que tu tarea quede programada:


Nos queda un último paso, pero muy importante, sin el que la tarea puede que no se ejecute al inicio de forma correcta, y es decirle que cuando lo haga sea con los privilegios más altos. Para ello, una vez creada la tarea, la buscaremos en la "Biblioteca del Programador", estará al final del listado:


Haremos doble click con el botón izquierdo del ratón y se nos abrirá la ventana de propiedades de nuestra tarea programada. En ella deberemos asegurarnos que esté marcada la opción "Ejecutar tanto si el usuario inició sesión como si no" así como la pestaña "Ejecutar con los privilegios más altos". Además, en el desplegable de abajo a la derecha, le indicaremos al programador que configure Tur-Game Controller Order para el sistema operativo que tengamos instalado en nuestro ordenador, en mi caso Windows 10:


A partir de ahora, cada vez que reiniciemos el ordenador Tur-Game Controller Order se cargará en memoria y reordenará los dispositivos, escaneando periódicamente las IDs por si se ha producido alguna modificación en el equipo:


4.- SCRIPT PARA CARGAR DIFERENTES PERFILES .INI POR SISTEMA/JUEGO

Llegados a este punto tendremos el programa Tur-Game Controller Order residente en memoria y pendiente de mantener la ordenación de los dispositivos, siempre de acuerdo a lo que tengamos especificado en el archivo Settings.ini. Pero una de las virtudes que tiene este programa es que admite la carga por línea de comandos de diferentes archivos de configuración .INI, si es que necesitamos estar conectando/desconectando diferentes dispositivos de juego que vayamos a utilizar puntualmente y/o queremos cambiar y estabilizar la ordenación de los dispositivos temporales y fijos. Ejemplos serían un Flightstick o un volante que sólo conectemos cuando estemos jugando a juegos concretos, o que tengamos un par de mandos USB de Megadrive que únicamente conectemos cuando juguemos a los juegos de dicho sistema.

Por ello comparto con vosotros un script que automatiza el proceso de carga de diferentes perfiles para cada Sistema y/o juego con Tur-Game Controller Order haciendo uso de la herramienta User Functions de RocketLauncher. Si deseáis ampliar vuestro conocimiento sobre esta función y poder cargar vuestros propios códigos al lanzar/cerrar juegos/sistemas os dejo el enlace directo a su Wiki.

Para crear este script me he basado en el que creó hace unos años el usuario ReTango, originalmente alojado en el foro HyperSpin-Fe, para automatizar la carga de perfiles de configuración del programa UltraMap para el UltraStik 360. Si estáis iteresados en dicho script y/o en conocer cómo funciona un UltraStik 360 os dejo aquí el enlace al tutorial que le dediqué hace ya un tiempo en el foro amigo InsertMoreCoins:


Dicho todo esto paso a explicaros cómo funciona y cómo configurar la herramienta que aquí os presento.

4.1- DAR PERMISOS DE ADMINISTRADOR A ROCKETLAUNCHER

Si aún no lo habíais hecho ha llegado el momento de hacerlo: debéis darle permisos de Administrador al ejecutable RocketLauncher.exe (ojo, no me estoy refiriendo a RocketLauncherUI.exe). Esta herramienta SÓLO FUNCIONA si lo hemos hecho así. Por ello antes de proceder a su instalación y configuración deberemos asegurarnos de que RocketLauncher.exe pueda hacer y deshacer a su antojo.

Deberemos dirigirnos a la ubicación del ejecutable, en la carpeta raíz de RocketLauncher, que en mi caso es "C:\HyperSpin\RocketLauncher\". Pinchamos con el botón derecho sobre el ejecutable y seleccionamos "Propiedades":


Para darle derechos completos de Administrador al programa deberemos hacerlo en dos pestañas de la ventana que se nos abrirá. Lo primero es dirigirnos a la pestaña "Compatibilidad" y activar "Ejecutar este programa como Administrador":


Después nos dirigiremos a la pestaña "Seguridad" y en ella cambiaremos los permisos de todos los usuarios pinchando en el botón "Editar...":


Una vez aquí seleccionaremos, uno a uno, todos los usuarios que aparezcan listados en el recuadro, y activaremos todas las casillas de permisos disponibles:


Como ya he dicho, para TODOS los usuarios y TODAS las casillas activadas:


Cuando terminemos y aceptemos veremos que el programa tendrá control total:


4.2- INSTALACIÓN DEL SCRIPT

* Descárgate el archivo que contiene el script, llamado Tur-Game Controller Order Loader v2.0.zip, desde el siguiente enlace:

TUR-GAME CONTROLLER ORDER LOADER v2.0

Enlace de descarga en MEGA

y descomprime su contenido.

* Copia el archivo Global.ahk a la ubicación "Rocket Launcher\Lib\User Functions". Si no existiese dicha carpeta "User Functions" dentro de "RocketLauncher\Lib", créala.
ADVERTENCIA: Si tienes otras funciones de usuario ya programadas en tu archivo Global.ahk no lo sobrescribas. En ese caso concreto y para no perder tus funciones deberás editarlo y agregar el código provisto en el archivo Global.ahk que te habrás descargado.

* Copia también los archivos Tur-Game Loader.ini y RefreshToolbar.exe a la carpeta "Rocket Launcher\Lib\User Functions". El archivo Tur-Game Loader.ini es imprescindible para que la herramienta funcione, pero el ejecutable RefreshToolbar.exe es opcional y permite al script limpiar el area de notificación de la barra de herramientas de Windows de los iconos fantasmas que se van a generar cada vez que se cargue y cierre Tur-Game_Controller_Order.exe:


* Edita el archivo Tur-Game Loader.ini para activar la herramienta dando el valor "TurGame Active=true". Si asignásemos el valor "false" la herramienta obviaría el resto del contenido de Tur-Game Loader.ini y se inactivaría:


* También podemos especificar la ubicación del ejecutable Tur-Game_Controller_Order.exe en la línea "TurGameExe", si es que no lo hubiésemos colocado en la ubicación por defecto: "C:\HyperSpin\Utilities\Tur-Game Controller Order 1.5\". NOTA IMPORTANTE: No renombrar el ejecutable, ya que dejaría de funcionar el script:


* Crea los archivos de configuración .INI en la carpeta del programa Tur-Game_Controller_Order.exe para los diferentes perfiles de ordenación de tus dispositivos de juego. Esto lo puedes hacer tanto con el propio programa como manualmente. Recuerda que el archivo .INI por defecto para el programa siempre debe llamarse Settings.ini, ya que si éste no existe y ejecutamos Tur-Game_Controller_Order.exe el programa nos pedirá crearlo:


Eso es todo. Ahora ya puedes proceder a editar el archivo de configuración de la herramienta, Tur-Game Loader.ini, para cargar automáticamente los perfiles por juego/sistema:

4.3- CONFIGURACIÓN DE LA HERRAMIENTA (EDICIÓN Y ESTRUCTURA DEL ARCHIVO .INI)

En el archivo Tur-Game Loader.ini, ubicado en la carpeta "Rocket Launcher\Lib\User Functions", está definido un archivo .INI predeterminado global (generalmente el Setings.ini). Este .INI se carga cuando no hay otro archivo .INI especificado para el Sistema o la Rom que se va a lanzar:


En la sección [PerRomSystems] debes introducir Nombre del sistema=true para los sistemas en los que desees tener diferentes archivos .INI para cada ROM. (por ejemplo, MAME=true). Si un sistema está activado en [PerRomSystem], el script buscará el archivo .INI especificado para cada Rom. Si no lo encuentra, buscará el archivo .INI predeterminado del sistema en la sección [Systems]. Y si tampoco lo encuentra, cargará el archivo .INI predeterminado global:


Si por contra el sistema no ha sido activado en la sección [PerRomSystem] el script cargará el archivo.INI predeterminado global.

El sistema "FrontEnd" es el nombre del sistema asignado a la interfaz. Este archivo .INI se cargará cada vez que salgas de una rom:


El sistema "Pause" es el nombre del sistema asignado al menú "Pause" de RocketLauncher. Este archivo .INI se cargará cada vez que entres en el menú "Pause". Al salir de "Pause" el script volverá a cargar el archivo .INI que tenía la Rom:


En la sección [Roms] introduce el nombre del archivo .INI asignado a cada Rom, para todos los [PerRomSystems] (sin comillas y sin la extensión .INI. Por ejemplo invaders=Mandos_Xbox). Si no se especifica una Rom, la secuencia de comandos utilizará el archivo .INI que se proporciona en [Systems] o el valor predeterminado global.
NOTA MUY IMPORTANTE: Si en la sección [Roms] deseásemos crear subsecciones para ordenarlas por el sistema/emulador al que pertenecen tendríamos entonces que antemponer el carácter "#" al inicio de cada una de dichas líneas para que el script no las tenga en cuenta y las ignore, ya que en esta sección el script no está programado para realizar dichas distinciones y sería sólo para nuestro propio conocimiento.

« Última modificación: Diciembre 18, 2022, 11:26:15 am por Pegafun »



Conectado empardopo

  • Admin
  • *
  • Mensajes: 21706
  • Gracias 761
  • Espero mejorar al KungFu Master!
    • Mi canal de Youtube
  • Ciudad: Norte de África
  • Pais: Escoña
  • Iniciales nick: EPP
Genial compi! Gran tutorial!!!

Desconectado Pegafun

  • VIP
  • *
  • Mensajes: 183
  • Gracias 17
  • Ciudad: Lorca
  • Pais: España
  • Iniciales nick: PGF
Una de las virtudes que tiene el programa Tur-Game Controller Order es que admite la carga por línea de comandos de diferentes archivos de configuración .INI, si es que necesitamos estar conectando/desconectando diferentes dispositivos de juego que vayamos a utilizar puntualmente y/o queremos cambiar y estabilizar la ordenación de los dispositivos temporales y fijos. Ejemplos serían un Flightstick o un volante que sólo conectemos cuando estemos jugando a juegos concretos, o que tengamos un par de mandos USB de Megadrive que únicamente conectemos cuando juguemos a los juegos de dicho sistema.

Por ello he actualizado el tutorial con un nuevo apartado 4 donde comparto con vosotros un script que automatiza el proceso de carga de diferentes perfiles para cada Sistema y/o juego con Tur-Game Controller Order haciendo uso de la herramienta User Functions de RocketLauncher.

 


* Salón Recreativo #55 (27-04-2024 / 26-05-2024)  Autor: empardopo Foro: Salón Recreativo FaseBonus 27/04/2024 (19:23)
* [Recomendacion] Series para ver  Autor: arquillos Foro: Offtopic 25/04/2024 (19:51)
* Screenshot de empardopo  Autor: empardopo Foro: Otros programas 24/04/2024 (19:42)
* Homenaje a Locomalito  Autor: empardopo Foro: Otros programas 24/04/2024 (19:37)
* Concurso Bytemaniacos 2025  Autor: empardopo Foro: Creación de juegos 23/04/2024 (21:46)
* La inteligencia artificial ha llegado a la música  Autor: empardopo Foro: Offtopic 23/04/2024 (21:43)
* Retro Portable Maker ArcadeSpain (RPMA)  Autor: empardopo Foro: Otros programas 21/04/2024 (19:16)
* Van dos y se cae el del medio - Hilo de cachondeo general  Autor: empardopo Foro: Offtopic 21/04/2024 (18:47)
* ¿A qué estáis jugando ahora mismo?  Autor: joselopez Foro: Offtopic 19/04/2024 (00:02)
* Hacer fondos de pantalla con Excel para Spectrum  Autor: empardopo Foro: Creación de juegos 18/04/2024 (19:33)
* Salón Recreativo FaseBonus - Preparativos y Sugerencias  Autor: Zael Foro: Salón Recreativo FaseBonus 17/04/2024 (00:17)
* Retropixel 2024  Autor: Zael Foro: Eventos Arcades 14/04/2024 (12:24)
* [N3DS] Red Viper - Emulando Virtual Boy como Dios manda  Autor: Zael Foro: Noticias de emuladores 14/04/2024 (12:17)
* Ofertas Amazon  Autor: empardopo Foro: Offtopic 11/04/2024 (20:29)
* Restauración Terminator 2 + LightGun Gun4IR  Autor: HeroTonma Foro: Diario de construccion de tu arcade 04/04/2024 (14:18)
* Ojo con telegram  Autor: Zael Foro: Noticias 29/03/2024 (19:30)
* Patrocinador para el foro ArcadeSpain  Autor: Zael Foro: Noticias 24/03/2024 (21:01)
* Galería de fotos en ArcadeSpain - sube las fotos a nuestro servidor -  Autor: empardopo Foro: Noticias 24/03/2024 (16:49)
* Flipando con la desinformación en el caso del emulador Yuzu  Autor: Zael Foro: Offtopic 22/03/2024 (20:13)
* Salón Recreativo FaseBonus - Recopilatorio Salones  Autor: Zael Foro: Salón Recreativo FaseBonus 22/03/2024 (12:36)
* Mirad lo que acabo de recibir para mi Powkiddy A12... Os va a molar  Autor: Zael Foro: Powkiddy A12/A13 18/03/2024 (21:02)
* Ayuda, algún app para poner imagen a un mo3  Autor: gucaza Foro: Otros programas 16/03/2024 (06:03)
* Recta final de la maquina  Autor: beaches Foro: Attract Mode 12/03/2024 (00:22)
* Saludos desde Madrid   Autor: gabibb Foro: Presentate al Foro 11/03/2024 (19:52)
* Problema con placa zero delay..   Autor: catapum Foro: Seccion C.P. 07/03/2024 (11:46)
* Música y artistas aptos para nuestra jukebox  Autor: Zael Foro: Offtopic 03/03/2024 (20:47)
* [Recomendación] Cine para los findes en casa (bueno, bonito y barato)  Autor: joselopez Foro: Offtopic 02/03/2024 (14:27)
* Volante PXN V9 - ¿Ganga... o tongo?  Autor: Zael Foro: Reviews tecnológicas 23/02/2024 (13:10)
* RetroAchievements - Noticias y Recomendaciones de Sets  Autor: Zael Foro: Emuladores 23/02/2024 (12:46)
* iojukebox Theme, un JukeBox para Attract-Mode  Autor: empardopo Foro: Themes AM 16/02/2024 (09:16)

Countdown
Buscaunchollo.click