Kodi y Mame Avanzado en ODROID-XU4 - Parte 2

Esta es la continuación de una guía para configurar Kodi con Mame, que detalla cómo instalar el joystick. En el mejor de los casos, jugar con MAME requiere de un buen joystick. Aquí tienes dos ejemplos de joystick que he creado yo mismo. Es un buen ejercicio de carpintería, pintura, diseño y electrónica y un juego divertido para la familia. Los he montado con tablas que recogí de un sitio de construcción cercano. Bueno para el medio ambiente por reciclar cosas.

Figure 1 - Custom made Joystick for Kodi with Mame
Figura 1 - Joystick hecho a medida para Kodi con Mame

Figure 2 - Custom made Joystick for Kodi with Mame
Figura 2 - Joystick hecho a medida para Kodi con Mame

1. Instala el software para soportar y calibrar el joystick. Los joysticks Arcade son fáciles de montar o se pueden comprar en Internet. Funcionan muy bien y son ideales para jugar con los juegos arcade de MAME.

$ sudo apt install joystick jstest-gtk

Calibrar el joystick

Como la mayoría de los juegos de Mame requieren un sencillo joystick con botones, la calibración será muy simple. Puedes usar jstest-gtk, pero como ya hemos instalado Kodi, simplemente realizaremos la calibración desde la línea de comandos.

Con un joystick de clic, la única calibración es asociar los botones (dentro del joystick para las direcciones y los botones de disparo/selección), con su respectiva dirección o función. La calibración estará disponible para todo el sistema y, por lo tanto, será utilizada por mame.

Si puedes conectar tu joystick a tu máquina Linux, recomiendo usar un pequeño programa llamado jstest-gtk. Es una simple GUI con la que puedes verificar la dirección correcta de tu joystick. En mi caso, uso un joystick compatible con DragonRise (el de la imagen), con 4 conectores para arriba, abajo, izquierda y derecha. Existen algunos problemas que solucionaremos con la calibración. En primer lugar, se invierte la izquierda-derecha y arriba-abajo y luego el eje arriba-abajo está al revés. Así que para abreviar: ¡arriba está a la derecha, abajo está a la izquierda, a la derecha está abajo y a la izquierda está arriba! Puedo verlo en la interfaz de jstest-gtk.

Otra opción (desde Kodi 17) es configurar tu joystick directamente desde Kodi. Tienes un tutorial disponible en https://kodi.wiki/view/HOW-TO:Configure_controllers. Como hay muchos modelos de joystick, me es imposible cubrir todas las configuraciones posibles, así que por favor contribuye y añade la tuya a esta guía.

Si quieres jugar con la configuración del joystick y asignar varios comandos a cada botón o cambiar las direcciones, debes crear un archivo de configuración. Lo llamaremos myjoyremap.cfg. En mi caso, uso el siguiente archivo, pero el tuyo puede ser muy distinto según lo que quieras conseguir y el modelo del joystick:

< ?xml version="1.0"? >
< mameconfig version="10" >
< system name="default" >
< input >
< port type="P1_JOYSTICK_UP" > < newseq type="standard" > JOYCODE_1_XAXIS_RIGHT_SWITCH < /newseq > < /port >
< port type="P1_JOYSTICK_DOWN" > < newseq type="standard" > JOYCODE_1_XAXIS_LEFT_SWITCH < /newseq > < /port >
< port type="P1_JOYSTICK_LEFT" > < newseq type="standard" > JOYCODE_1_YAXIS_UP_SWITCH < /newseq > < /port >
< port type="P1_JOYSTICK_RIGHT" > < newseq type="standard" > JOYCODE_1_YAXIS_DOWN_SWITCH < /newseq > < /port >

< port type="P1_BUTTON1" > < newseq type="standard" > JOYCODE_1_BUTTON1 < /newseq > < /port >
< port type="P1_BUTTON2" > < newseq type="standard" > JOYCODE_1_BUTTON3 < /newseq > < /port >
< port type="P1_BUTTON3" > < newseq type="standard" > JOYCODE_1_BUTTON5 < /newseq > < /port >
< port type="P1_BUTTON4" > < newseq type="standard" > JOYCODE_1_BUTTON7 < /newseq > < /port >

< port type="P1_BUTTON5" > < newseq type="standard" > JOYCODE_1_BUTTON2 < /newseq > < /port >
< port type="P1_BUTTON6" > < newseq type="standard" > JOYCODE_1_BUTTON4 < /newseq > < /port >
< port type="P1_BUTTON7" > < newseq type="standard" > JOYCODE_1_BUTTON6 < /newseq > < /port >

< port type="P1_BUTTON8" > < newseq type="standard" > NONE < /newseq > < /port >
< port type="P1_BUTTON9" > < newseq type="standard" > NONE < /newseq > < /port >
< port type="P1_BUTTON10" > < newseq type="standard" > NONE < /newseq > < /port >
< port type="P1_BUTTON11" > < newseq type="standard" > NONE < /newseq > < /port >
< port type="P1_BUTTON12" > < newseq type="standard" > NONE < /newseq > < /port >

< port type="P1_START" > < newseq type="standard" > JOYCODE_1_BUTTON9 < /newseq > < /port >
< port type="P1_SELECT" > < newseq type="standard" > JOYCODE_1_BUTTON10 < /newseq > < /port >
< port type="COIN1" > < newseq type="standard" > JOYCODE_1_BUTTON8 < /newseq > < /port >
< port type="START1" > < newseq type="standard" > KEYCODE_1 OR JOYCODE_1_BUTTON9 < /newseq > < /port >

< port type="P1_PEDAL" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq >
< /port > < port type="P1_PEDAL2" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < /port >
< port type="P1_PEDAL3" > < newseq type="increment" > NONE < /newseq > < /port >
< port type="P1_PADDLE" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P1_PADDLE_V" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P1_POSITIONAL" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P1_POSITIONAL_V" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P1_DIAL" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P1_DIAL_V" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P1_TRACKBALL_X" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P1_TRACKBALL_Y" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P1_AD_STICK_X" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P1_AD_STICK_Y" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P1_AD_STICK_Z" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P1_LIGHTGUN_X" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P1_LIGHTGUN_Y" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >

< port type="P2_JOYSTICK_UP" > < newseq type="standard" > JOYCODE_2_XAXIS_RIGHT_SWITCH < /newseq > < /port >
< port type="P2_JOYSTICK_DOWN" > < newseq type="standard" > JOYCODE_2_XAXIS_LEFT_SWITCH < /newseq > < /port >
< port type="P2_JOYSTICK_LEFT" > < newseq type="standard" > JOYCODE_2_YAXIS_UP_SWITCH < /newseq > < /port >
< port type="P2_JOYSTICK_RIGHT" > < newseq type="standard" > JOYCODE_2_YAXIS_DOWN_SWITCH < /newseq > < /port >

< port type="P2_BUTTON1" > < newseq type="standard" > JOYCODE_2_BUTTON1 < /newseq > < /port >
< port type="P2_BUTTON2" > < newseq type="standard" > JOYCODE_2_BUTTON3 < /newseq > < /port >
< port type="P2_BUTTON3" > < newseq type="standard" > JOYCODE_2_BUTTON5 < /newseq > < /port >
< port type="P2_BUTTON4" > < newseq type="standard" > JOYCODE_2_BUTTON7 < /newseq > < /port >

< port type="P2_BUTTON5" > < newseq type="standard" > JOYCODE_2_BUTTON2 < /newseq > < /port >
< port type="P2_BUTTON6" > < newseq type="standard" > JOYCODE_2_BUTTON4 < /newseq > < /port >
< port type="P2_BUTTON7" > < newseq type="standard" > JOYCODE_2_BUTTON6 < /newseq > < /port >

< port type="P2_BUTTON8" > < newseq type="standard" > NONE < /newseq > < /port >
< port type="P2_BUTTON9" > < newseq type="standard" > NONE < /newseq > < /port >
< port type="P2_BUTTON10" > < newseq type="standard" > NONE < /newseq > < /port >
< port type="P2_BUTTON11" > < newseq type="standard" > NONE < /newseq > < /port >
< port type="P2_BUTTON12" > < newseq type="standard" > NONE < /newseq > < /port >

< port type="P2_START" > < newseq type="standard" > JOYCODE_2_BUTTON9 < /newseq > < /port >
< port type="P2_SELECT" > < newseq type="standard" > JOYCODE_2_BUTTON10 < /newseq > < /port >
< port type="COIN2" > < newseq type="standard" > JOYCODE_2_BUTTON8 < /newseq > < /port >
< port type="START2" > < newseq type="standard" > KEYCODE_2 OR JOYCODE_2_BUTTON9 < /newseq > < /port >

< port type="P2_PEDAL" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq >
< /port > < port type="P2_PEDAL2" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < /port >
< port type="P2_PEDAL3" > < newseq type="increment" > NONE < /newseq > < /port >
< port type="P2_PADDLE" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P2_PADDLE_V" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P2_POSITIONAL" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P2_POSITIONAL_V" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P2_DIAL" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P2_DIAL_V" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P2_TRACKBALL_X" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P2_TRACKBALL_Y" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P2_AD_STICK_X" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P2_AD_STICK_Y" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P2_AD_STICK_Z" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P2_LIGHTGUN_X" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >
< port type="P2_LIGHTGUN_Y" > < newseq type="standard" > NONE < /newseq > < newseq type="increment" > NONE < /newseq > < newseq type="decrement" > NONE < /newseq > < /port >

< /input >
< /system >
< /mameconfig >
Después de guardar el archivo, cópialo en /media/usb/AML-asset/ctrlr/. Luego, podrás editar este archivo para adaptarlo a tu joystick. Mi joystick (que yo mismo monté, de ahí el problema que he mencionado anteriormente) tiene una configuración errónea de 90 grados. En el archivo XML hay dos partes: una para el joystick del jugador 1 y otra para el joystick del jugador 2. Cada línea con type="P1_JOYSTICK_UP" es la dirección que entiende Mame. La configuración real viene después como JOYCODE_1_XAXIS_RIGHT_SWITCH. Por lo tanto, esta línea significa que cuando mi joystick envía un código para DERECHA, mame lo interpretará como ARRIBA. Debajo de esto, configuré los botones 1 a 8 y los botones START y SELECT. Luego hago lo mismo con el joystick del jugador 2.

Para finalizar, puedes agregarlo al archivo de configuración mame.ini usando el siguiente comando:

$ echo "ctrlr myjoyremap" | sudo tee -a /etc/mame/mame.ini

Eliminar software no utilizado

Esta sección no es obligatoria, pero puede resultarle útil para hacer que tu ODROID-XU4 sea más rápido y responda mejor. El XU4 tiene 2 GB de memoria, que actualmente está muy bien para un ordenador de placa reducida. La mayoría suelen tener de 0.5 a 1 GB, aunque veo que últimamente están entrando en el mercado los de 2 a 4 GB. Así que la memoria es un recurso muy valioso, así como los ciclos de CPU. No quieras que tu máquina se ralentice mientras ves una película o juegas a un juego.

En su momento seleccioné algunos servicios que creo que no son necesarios para la instalación de Kodi/Mame. Aquí tienes la forma de detenerlos y deshabilitarlos. Sin embargo, no lo desinstalaremos para que puedas volver a habilitarlo, en el caso de que tus necesidades cambien en el futuro.

1. CUPS es un servidor de impresión, y como no necesitas imprimir desde Kodi o Mame, es seguro suprimir el servidor de impresión (denominado CUPS):

$ sudo systemctl stop cups
$ sudo systemctl stop cups-browsed
$ sudo systemctl disable cups
$ sudo systemctl disable cups-browsed
Para reactivarlo:
$ sudo systemctl enable cups
$ sudo systemctl start cups
2. UPower controla la fuente de alimentación y es muy útil para un teléfono inteligente, un ordenador portátil o un sistema integrado. Sin embargo, en el caso de un sistema de entretenimiento Kodi/Mame de un salón, la única fuente de alimentación es el enchufe de la pared y se supone que tu ODROID-XU4 está conectado todo el tiempo. Así que puedes desactivar también este componente con total seguridad:
$ sudo systemctl stop upower
$ sudo systemctl disable upower
3. Whoopsie es el demonio de informe de errores para Ubuntu, utilizado principalmente por el entorno de escritorio cuando algo falla. Como solo estamos usando Kodi, no lo necesitamos:
$ sudo systemctl stop whoopsie
$ sudo systemctl disable whoopsie
4. ModemManager es un demonio que controla dispositivos y conexiones de banda ancha móvil (2G / 3G / 4G). El ODROID-XU4 está conectado a una red Ethernet (o wifi si la tienes) y no necesita una conexión modem.
$ sudo systemctl stop ModemManager
$ sudo systemctl disable ModemManager
5. unattended-upgrades es un demonio para actualizar automáticamente el sistema. Me gusta cuando un ordenador trabaja solo para mí, pero en este caso específico, evitaremos realizar actualizaciones automáticas. La razón es que queremos un sistema de entretenimiento estable para toda la familia, que está disponible en cualquier momento. No queremos tener que hacer mantenimiento, justo antes de lanzar la película familiar, porque una actualización no se haya cargado correctamente:
$ sudo systemctl stop unattended-upgrades
$ sudo systemctl disable unattended-upgrades
Si deseas actualizar su ODROID-XU4, puede hacerlo manualmente ejecutando primero una actualización de la base de datos de los paquetes:
$ sudo apt update
$ sudo apt upgrade
Personalmente, soy un gran fanático de un software llamado Synaptic, que es una GUI para sistemas basados en apt como Ubutun y Debian. Lo recomiendo:
$ sudo apt install synaptic

Configurar el reloj

Puede sincronizar el reloj con un servidor de hora en la red y siempre tener tu ODROID configurado con la hora más precisa. Además, querrás tener ajustado el reloj con tu zona horaria.

Primero, instalamos un cliente de Protocolo de tiempo de red (NTP) que se conectará con el servidor de hora para obtener una hora precisa:

$ sudo apt install chrony
Luego, buscamos la zona horaria. Será algo como Europa/Zurich o Pacific/Auckland. Para encontrar la tuya, usa el siguiente comando:
$ timedatectl list-timezones
Busca y anota tu propia zona horaria. Supongamos que vives cerca del Polo Norte en Longyearbyen, encontrarás la zona horaria en la lista que figura más arriba como Artic/Longyearbyen. Luego, reajusta tu ODROID-XU4:
$ sudo timedatectl set-timezone Arctic/Longyearbyen
Para comentarios, preguntas y sugerencias, visita el hilo original del Foro ODROID en https://forum.odroid.com/viewtopic.php?f=52&t=34760, o el repositorio de GitHub en https://github.com/yimyom/odroid-xu4-setup.

Be the first to comment

Leave a Reply