martes, 4 de octubre de 2016

MAME: una máquina recreativa en tu PC

Recuerdo en mi lejana niñez aquellas vivencias mágicas y sorprendentes en torno a las máquinas recreativas. Ahorraba con ansia algunas monedas de cinco duros (25 pesetas) para controlar aquellos monigotes de luz que surgian de la pantalla: naves, monos, hamburguesas, guerreros, soldados, coches, superhéroes... podías interpretar y controlar casi cualquier personaje y hacer cosas increíbles.

Me vienen a la cabeza títulos como Asteroids, Space Invaders, Galaga, Pacman, Moon Cresta, R-Type, Commando, Green Beret, Tetris, Golden Axe, Altered Beast, Outrun, Ghost'n'Goblins, Bomb Jack, Street Fighter, Double Dragon, Donkey Kong, Metal Slug, 1942... La lista parece interminable, y los recuerdos y experiencias afloran como un incansable manantial.

Podemos revivir todos aquellos juegos gracias al emulador de MAME (Multi Arcade Machine Emulator), el cual está disponible de forma gratuita para Windows, MacOS y Linux, en la siguiente URL: http://www.mame.net


Instalación de MAME


En este artículo explicaré cómo instalar el emulador de MAME en Linux, más concretamente para distribuciones basadas en Ubuntu.

Para ello, abriremos la consola de comandos y ejecutaremos el siguiente comando:

sudo apt-get install mame mame-extra mame-tools mess gnome-video-arcade

Recomiendo también instalar la librería SDL (Simple Directmedia Library, https://wiki.libsdl.org/FrontPage), una librería especial multiplataforma diseñado para proveer una capa para acceso a audio, teclado, joystick y hardware via OpenGL y Direct3D, y es utilizada por emuladores de juegos:

sudo apt-get install libsdl2-dev libsdl-ttf2.0-dev

La interfaz de usuario no es muy atractiva que digamos, por lo que ejecutaremos el siguiente comando:

sudo ln -s /usr/share/games/mame /usr/share/games/xmame

Otra interfaz alternativa es ejecutar directamente Gnome Video Arcade desde la consola:

gnome-video-arcade

La primera vez tardará bastante, pues creará una base de datos con todos los juegos instalados, y analizará cada uno de ellos en búsqueda de problemas.

Cuando instales nuevos juegos, puedes reconstruir la base de datos mediante el siguiente comando:

gnome-video-arcade -b



Nota: Si tienes problemas al instalar los paquetes, posiblemente necesitarás configurar previamente los repositorios:

sudo add-apt-repository ppa:c.falco/mame


Configuración previa


Antes de empezar, hemos de crear el directorio de configuración y generar el archivo de configuración mame.ini mediante estos comandos (atención al punto previo a "mame"):

mkdir $HOME/.mame
cd $HOME/.mame
mame -cc

Si editamos el fichero mame.ini veremos una línea con el parámetro rompath, el cual, por defecto, apunta a las siguientes rutas:

/usr/local/share/games/mame/roms;/usr/share/games/mame/roms

Este parámetro indica al emulador de MAME dónde se encuentran los juegos (o ROMS). Podemos dejar estas rutas, pero prefiero una ruta más fácil de recordar, por lo que la he cambiado por:

rompath        $HOME/mame/roms

Guardo los cambios realizados y creo dicha ruta con los siguientes comandos:

mkdir $HOME/mame
mkdir $HOME/mame/roms

Por último, en el directorio $HOME/.mame deben existir las siguientes carpetas (si no existen, hay que crearlas):
  • cfg
  • comments
  • diff
  • inp
  • memcard
  • nvram
  • roms
  • snap
  • sta

Configurar el joystick o el gamepad

Si vas a utilizar un joystick o un gamepad para disfrutar de tus juegos, será conveniente saber como instalar el joystick en Linux.

El comando lsusb de Linux listará los dispositivos conectados a los puertos USB, para detectar si el joystick o el gamepad está conectado y reconocido.

Con el siguiente comando:

ls -l /dev/input | grep js

Mostrará, de forma secuencial, las conexiones de joystick. Así, el primer joystick será js0, el segundo joystick será js1, y así, sucesivamente.


Si no lo detecta, necesitaremos la herramienta joystick.

En Debian/Ubuntu/Linux Mint:

sudo apt-get install joystick


En Fedora:

su -c 'yum install joystick'

Para que los juegos puedan calibrar el joystick o gamepad, será preciso que configuremos el dispositivo en el directorio correspondiete, para que tenga todos los permisos de escritura y lectura:

sudo chmod 666 /dev/input/js0
sudo chmod 666 /dev/input/js1


Instalar las BIOS de MAME

De fábrica, el emulador de MAME posee un conjunto básico de BIOS, por lo que muchos juegos no funcionarán, y aparecerá un mensaje que vuelve loco a más de uno:

The selected machine is missing one or more required ROM or CHD images. Please select a different machine

Hay que recordar que cada máquina era de un fabricante y tenía su propia BIOS. A veces, había juegos con BIOS específicas y requerían de otros sets.

Podemos conocer la lista de BIOS necesarias en la siguiente URL:

http://www.mamedb.com/category/BIOS

Name Year Manufacturer File Category Score
Acclaim PSX  1995  Acclaim  acpsxBIOS7.51
Arcadia System BIOS  1988  Arcadia Systems  ar_biosBIOS7.50
Atari PSX  1996  Atari  atpsxBIOS3.29
Atlus PSX  1996  Atlus  atluspsxBIOS4.08
Baby Phoenix/GV System  1995  Konami  konamigvBIOS8.00
Crystal System BIOS  2001  BrezzaSoft  crysbiosBIOS7.11
DECO Cassette System  1981  Data East Corporation  decocassBIOS7.00
Hyper NeoGeo 64 Bios  1997  SNK  hng64BIOS6.95
Max-A-Flex  1984  Exidy  maxaflexBIOS7.60
Mega Play BIOS  1993  Sega  megaplayBIOS6.62
Mega-Tech  1989  Sega  megatechBIOS6.57
Multi Amenity Cassette System BIOS  1995  I'Max  macsbiosBIOS8.00
Neo-Geo  1990  SNK  neogeoBIOS6.83
Nintendo Super System BIOS  1969  Nintendo  nssBIOS7.45
PGM (Polygame Master) System BIOS  1997  IGS  pgmBIOS7.57
PlayChoice-10 BIOS  1986  Nintendo of America  playch10BIOS6.50
PS Arcade 95  1997  Eighting / Raizing  psarc95BIOS7.00
ST-V Bios  1996  Sega  stvbiosBIOS7.26
Super Kaneko Nova System BIOS  1996  Kaneko  sknsBIOS7.75
System GX  1994  Konami  konamigxBIOS5.00

Name Year Manufacturer File Category Score
Taito FX1  1995  Taito  taitofx1BIOS7.36
Taito GNET  1997  Taito  taitognBIOS8.20
TPS  1997  Tecmo  tpsBIOS6.45
ZN1  1995  Capcom  cpzn1BIOS7.90
ZN2  1997  Capcom  cpzn2BIOS9.00

Y descargar las BIOS buscando entre las ROMS de Emuparadise:

http://www.emuparadise.me/M.A.M.E._-_Multiple_Arcade_Machine_Emulator_ROMs/7

También podemos buscar las BIOS necesarias y descargarlas individualmente (vienen empaquetadas y comprimidas en archivos ZIP):

http://www.emulab.it/test/index-bios.php?t=1&order=2&dir=ASC

También lo puedes encontrar aquí:

http://www.emuline.org/topic/692-all-bios-mame

Pero es recomendable buscar una BIOS pack, en el que tendrás todas las BIOS en un único archivo comprimido. En esta URL puedes descargarte la BIOS pack:

http://www.planetemu.net/roms/mame-bios-pack

Una vez descargado, hay que descomprimir el archivo. Aparecerán todas las BIOS estándar disponibles, cada una en un fichero ZIP.

El siguiente paso será copiar todos esos archivos al directorio configurado para las ROMs (en mi caso en $HOME/mame/roms).

IMPORTANTE: Para asegurar el máximo éxito en la ejecución de los juegos, asegúrate que las BIOS son las más actuales. La versión de la BIOS pack debería coincidir con la última versión (o la más aproximada) a la versión del emulador de MAME (ver en la página oficial de MAME). La última versión en Septiembre de 2016 es la v0.178).


Descargar e instalar los juegos

Ahora viene la parte interesante: los juegos.

Los juegos para las máquinas recreativas estaban encapsulados en chips de memoria no volátil, es decir, que ya estaban grabados y eran imborrables y no reutilizables. Estos chips eran memorias de sólo acceso, o ROMs. Hay multitud de sitios en los cuales descargar juegos para la MAME. He aquí algunos de ellos:

Emuparadise: http://www.emuparadise.me/M.A.M.E._-_Multiple_Arcade_Machine_Emulator_ROMs/7
Free ROMS: http://www.freeroms.com/mame.htm
Cool ROM: http://coolrom.com/roms/mame
ROM World: http://www.rom-world.com/dl.php?name=MAME
Planet Emu: http://www.planetemu.net/roms/mame-roms

Particularmente, prefiero Emuparadise. Además de tener una colección muy completa, posee una gran información sobre cada ROM, en donde podemos conocer qué BIOS pack mínima es necesaria y qué otras BIOS o CHDs son necesarios para que el juego funcione.

Por ejemplo, si buscamos el juego Ghost'n Goblins (seleccionando la letra 'G' en la parte superior),  al bajar hasta la sección "Direct Download Links", además de tener el enlace a la ROM, debajo de éste encontraremos que necesita de una ROM "padre" (o parent ROM) llamada "Ghost'n Goblins (World? set 1)". Sin esta ROM, el juego no funcionará, con el consabido mensaje.


Archivos CHD


Los juegos arcade más modernos, a partir de los años 90, necesitaban muchos más datos para funcionar, y para ello, utilizaban unidades de disco duro, disco láser o CD ROMs. En MAME, Estos juegos necesitan estas unidades comprimidas en archivos CHD, como el Street Figher III.

Para instalar un archivo CHD y poder disfrutar de tu juego, además de la ROM zipeada e instalada en tu directorio ROMS, necesitarás el archivo CHD. Este archivo suele estar zipeado, pero tendrás de descomprimirlo y obtener así el archivo CHD. Una vez obtenido, tendrás que copiarlo en una carpeta con el mismo nombre que el juego, la cual debe estar dentro del directorio ROMS. Así, por ejemplo, en el juego de Street Fighter III, la ROM principal se llama sfiii y el archivo es sfiii.zip. Este archivo se copia a la carpeta ROMS. Este juego posee dos archivos CHD (sf3000.chd y cap-sf-3.chd). Ambos archivos se deben copiar a la carpeta sfiii dentro de la carpeta ROMS.

En Emuparadise, las ROMs de los juegos suelen incluir también los enlaces a sus archivos CHD correspondientes. No obstante, en DOPEROMS podrás encontrar los CHDs que puedas necesitar. El enlace es el siguiente: http://www.doperoms.com/roms/Mame_Chd/S.html


¿Por qué no funcionan algunas ROMS de MAME?


Tranquilo, no eres el único al que le pasa. Intentas lanzar un juego y MAME te dice que faltan algunos ficheros, que el juego no funciona al 100%, que falta alguna ROM...

Intentaré explicar por qué pasa.

Una de las razones es por el cambio de releases de MAME. Si te fijas en Emuparadise, el enlace de descarga de cada ROM viene acompañada de la release o versión de MAME a partir de la cual funciona.

Algunos juegos requieren de su propia BIOS. Esto lo encontrarás en juegos de Neo-Geo, Playchoice-10, Convertible Video System, Deco Cassette, MegaTech, MegaPlay, ST-V Titan u otros. De las BIOS ya hablamos al principio, y se instalan como si fueran ROMs de juegos.

Otra razón es que algunos juegos requieren de CHDs. Como se comentó anteriormente, un CHD es un dispositivo de almacenamiento adicional (disco duro, CDROM, Laser Disc) que necesita el juego. El contenido de este dispositivo es comprimido en un archivo especial llamado CHD, y debe incluirse en el directorio de juego correspodiente.

Algunos juegos son clones de juegos originales, o bien versiones alternativas de dichos juegos. Estos juegos se solapan y modifican propiedades tales como fechas de copyright, bootlegs, etc.  Para conocer los juegos clonados, puedes ejecutar desde la consola el comando mame -listclones

De un juego pueden aparecer multitud de versiones. Tanto las versiones como algunos juegos clonados necesitan de una ROM padre (parent ROM), la cual debe estar alojada en el directorio ROMS para que puedan funcionar.

Podemos comprobar si una ROM es correcta mediante el siguiente comando:

mame -verifyroms

Por ejemplo, para verificar el juego Combat School, utilizaremos:

mame -verifyroms combatsc

Si encontrase algún problema, informaría sobre el mismo, indicando qué archivo/s está/n generando dicho problema.


Consejos para descargar ROMs

EmuParadise es una gran base de datos que incluye ROMs de diversas máquinas, en diferentes idiomas y las diferentes versiones que éstas lanzaron. He aquí algunos consejos para no volvernos locos:

1) Evitar aquellas ROMs que no vienen acompañadas de una screenshot (pantallazo)
2) Evitar aquellas ROMs que son de máquinas lúdicas, propias de casinos o casas de apuestas. Las reconocderás rápidamente por que, además de venir sin screenshot, en el nombre, entre paréntesis, indican que máquina es. He aquí algunas de ellas: Scorpion, Bellfruit, Maygay, Ace, Empire, Mazooma. Casino, Barcrest, Mdm, Vivid. JPM, SYSTEM5, Bwb, Crystal, Impulse, EPOCH...
3) Evitar aquellas ROMs que sean de máquinas de Pinball. Se reconocen rápidamente porque en la Screenshot aparecerá el texto Pinball.
4) ROMs que funcionan en un alto porcentaje: las de NeoGeo y Deco Cassete (no olvidar tener estas BIOS instaladas), las de Taito
5) Entre varias ROMs, buscar la versión más alta o bien la ROM padre
6) Fijarse bien si necesita de otras ROMs o de CHDs. En tal caso, descargar también éstas
7) Hay muchos clones de juegos originales. Desde luego, si utilizas solamente el original, te evitarás tener varios juegos clonados, a no ser que el clon sea algo diferente del original y te guste.
8) Entre varios lenguajes, te recomiendo descargar la inglesa (US o USA) o la internacional (World)
9) Los ROMs de tipo "bootleg" son ediciones no autorizadas que se hacen pasar como originales. Por tanto, puedes ahorrarte esta descarga

jueves, 21 de enero de 2016

5 consejos para combatir el Síndrome de Infórgenes


Resulta anecdótico que el mundo que creamos con la tecnología termine adoptando símiles de la vida real o de nuestra cultura: virus, troyanos, zombies, etc.

Quisiera hablar en este artículo sobre algo que he denominado el "Síndrome de Infórgenes" (por buscar una similitud con el síndrome de Diógenes), el cual afecta a más del 75% de la sociedad y de las empresas de todo el mundo, y que se caracteriza por la acumulación constante e innecesaria de información basura.

Durante las dos últimas décadas hemos vivido una explosión descomunal de la información, gracias a internet y a una creciente y económica tecnología. ¿El resultado? Toneladas de información que se almacenan con poca o sin ninguna utilidad. Es decir, generamos, recogemos y almacenamos basura informativa.


Invito a cualquier lector a hacer una revisión de su disco duro, de sus pendrives, de su correo electrónico, de sus aplicaciones en la nube (Evernote, Pocket, Dropbox, Instagram...). Invito a cualquier empresa a revisar la información que almacena en sus servidores y en sus equipos de escritorio: ¿cuánto tiempo ha pasado desde la última vez que utilizaron dicha información? ¿Qué valor o utilidad reales tiene realmente dicha información? El hecho de que hayamos sustituido nuestros viejos archivadores físicos por pequeñas unidades de almacenamiento o invisibles repositorios en la nube, nos crea la ilusión de que apenas consumimos espacio de información. La ilusión del reducido espacio físico, unido a la ingente capacidad de estos medios de almacenamiento, nos lleva a creer que no estamos malgastando nada. Pero a la hora de buscar algo necesario, todo lo que no es necesario nos hará difícil esta labor, lo que al final se traduce en malgastar tiempo, esfuerzo y dinero. Es como vivir en una habitación en la cual vamos acumulando, día tras día, objetos y enseres que se apilan y se olvidan.  Al final, lastramos nuestra propia vida con esos objetos que no son útiles o que no son aprovechados correctamente.

La información nos puede esclavizar y perjudicar si no hacemos un uso útil y óptimo de la misma.

Mis consejos para lidiar, en términos generales, con el Síndrome de Infórgenes son los siguientes:
  1. Antes de guardar información, evaluar si esa información será útil en el futuro.  Esta sencilla decisión evitará acumular mucha información innecesariamente. Hay que discernir entre lo que es interesante de lo que es importante, entre lo que es posible de lo que es realmente.
  2. Clasificar y organizar bien toda la información. Esto facilitará encontrar rápida y eficientemente la información que queremos y evitará el estrés de bucear perdidos en un mar de información. 
  3. Compartir información en un repositorio común. En el caso de una organización, comunidad o empresa, nos permite tener un punto único para la información. Compartimos información, accedemos a información de otros y además, nos ayuda a identificar la redundancia de información, evitando repetir el trabajo innecesariamente.
  4. Revisión y limpieza periódicas de la información. Si hay información que no has usado durante mucho tiempo, y que es poco probable que vuelvas a necesitar, elimínala. Si hay información que no tiene utilidad real para ti o para los demás, elimínala. Si no quieres deshacerte de ella, muévela a un repositorio de respaldo (backup), pero quítala de tus sistemas habituales. Si guardas documentos de hace más de uno o dos años, es muy posible que en ese momento te fueron útiles, pero desde entonces no los has necesitado, pero tienes la duda de si en el futuro podrían ser necesarios. Cópialos en un NAS, en un servidor de almacenamiento, en un disco duro externo, en un repositorio en la nube... pero en tu sistema de trabajo quítalos para trabajar día a dia con lo que realmente necesitas en cada momento. No vivas con la preocupación constante de que no los quieres perder. Los tendrás siempre disponibles en caso de que sean necesarios, pero tu espacio de trabajo, en el día a día, estará liberado de información poco útil en ese momento, a favor de la información que realmente necesitas ahora.
  5. En el caso de una empresa, recomiendo un tener plan y un sistema para hacer resúmenes o registrar estados de la información importante a partir del detalle de la información. Un buen ejemplo es generar informes diarios, semanales, mensuales, trimestrales y anuales a partir de toda la información de la empresa. Esta información resumida es la realmente importante para tomar decisiones operativas, estructurales, organizativas y estratégicas. Ocupa muy poco y contiene la esencia de la acividad y el estado de la empresa en el mismo momento en que se genera (foto), contemplando también la evolución y la tendencia usando un histórico. El detalle de la información sobre la que se ha construido, se puede mover a un repositorio para consultas puntuales, y así liberar los sistemas de trabajo del día a día. Para llevar a cabo esta propuesta, es muy útil un sistema de Business Intelligence, el cual, aunque pueda parecer un gasto importante, con el tiempo es una inversión muy amortizable y beneficiosa, no sólo en dinero, si no también en esfuerzo, tiempo y recursos.
Imagen: WikiCommons: https://commons.wikimedia.org/wiki/File:Monta%C3%B1a_de_basura_junto_al_lago_Managua.jpg
Montaña de Basura junto al lago Managua

jueves, 22 de enero de 2015

Copias de Seguridad en OpenLDAP

En este artículo os voy a mostrar como exportar e importar datos. De esta manera nos aseguramos de tener un backup o copia de seguridad de nuestro directorio activo.

EXPORTAR LDAP

Asumiendo una sesión de terminal Linux, como usuario root, introduciremos el siguiente comando:

slapcat -l ruta/archivo_backup.ldif

Si deseamos exportar también la configuración de la base de datos de LDAP, utilizaremos la siguiente sintaxis:

slapcat -l ruta/archivo_backup.ldif -f ruta/archivo_config.conf

IMPORTAR LDAP

La importación de los datos es un poco más compleja, ya que requiere que se elimine la base de datos para añadir todos los datos del fichero ldif que se exportaron en el paso anterior.

Para ello, desde la terminal Linux, y como usuario root, Seguiremos los siguientes pasos:

1) Detenemos el servicio de LDAP:

/etc/init.d/slapd stop

2) Eliminamos los ficheros de la base de datos de LDAP:

rm -Rf /var/lib/ldap/*

3) Importamos los datos del backup de LDAP:

slapadd -v -c -l ruta/archivo_backup.ldif

Si deseamos recuperar también el fichero de configuración de LDAP:

slapadd -v -c -l ruta/archivo_backup.ldif -f /etc/ldap/slapd.conf

4) Reconstruimos los índices de la base de datos de LDAP:

slapindex -v

5) Otorgamos los ficheros de base de datos al usuario LDAP:

chown -Rf openldap.openldap /var/lib/ldap/*

6) Arrancamos el servicio de LDAP:

/etc/init.d/slapd start