Archivo del Autor: joanillo

Adaptación de los emuladores MAME y gngeo para limitar el tiempo de partida

Tenía pendiente desde octubre conseguir esta funcionalidad. Se trata de una máquina en que la operación está controlada por el tiempo. Una moneda son 15 minutos de juego. Los emuladores MAME y gngeo (NeoGeo) tienen el botón de COIN que permite dar créditos para jugar. Ahora bien, el monedero controla el contador de tiempo, y es necesario meter monedas para dar tiempo a las partidas. La comunicación entre el front-end y los dos emuladores se hace sencillamente con un fichero de texto donde se lee y se graba el valor del contador. La funcionalidad implementada es:

  • Cuando estoy en el front-end el tiempo no corre. Si se mete una moneda, suma el tiempo establecido (15 minutos por defecto).
  • Cuando entro en el emulador (mame4all o gngeo), se lee el valor del tiempo restante, y empieza a descontar el tiempo, que está siempre visible.
  • Desde el emulador puedo poner una moneda, suma el tiempo, y se actualiza el contador correctamente.
  • Cuando salimos del emulador y volvemos al frontend, el tiempo queda bien guardado.
  • Si mientras juego se acaba el tiempo, se vuelve al front-end, esperando la inserción de una nueva moneda.

Cambios en el código y documentación:

    \t

  • http://wiki.joanillo.org/index.php/M%C3%A1quina_Arcade_amb_monedes_i_limitaci%C3%B3_de_temps._MAME_i_neogeo#Introducci.C3.B3_2

Y el video:

retroplaneta.com

Big Arcade

Big Arcade

  • Máquinas arcade y recreativas.
  • Construcción de recreativas. Personalizamos tamaño y diseño
  • A parte de máquinas arcade y marcianitos, realizamos muebles donde integramos arcade, pinball, jukebox.
  • Nuestros modelos incluyen: bartop, mini-bartop, máquina upright, arcade stick, cocktail. Visita todos los modelos en www.retroplaneta.com.
  • Visita nuestro local en Gràcia-Barcelona

www.retroplaneta.com

Máquina recreativa Big Arcade

Big Arcade

Big Arcade

Ya tengo acabada la nueva máquina de pie , que llamaré Big Arcade. El diseño viene directamente de un cliente que me hizo la petición (supongo que encontró las medidas por Internet), y realmente me gusta. En esta máquina se ha cuidado unos cuantos detalles. Concretamente, se ha puesto un monedero de Industrias Lorenzo, se ha cuidado el sonido, una TV de 21 pulgadas, vidrio protector, y se ha mejorado la colocación y los acabados de la marquesina.

En cuanto al monitor, se consiguió una TV de 21», aunque sólo tiene una resolución de 640x480px. Si bien la resolución no es ninguna maravilla, al final me gusta estos pixels un poco gordos, y es un consuelo saber que puedo montar máquinas con esta resolución. En esta ocasión el cable HDMI to VGA no me ha dado problemas, y esto es un gran avance pues tengo una pista de por qué en anteriorse ocasiones había tenido tantos problemas con este tipo de cables.

Otra mejora que se ha hecho en esta máuina es poder cambiar el volumen apretando dos botones, una solución totalmente software, tanto en el front-end como en los emuladores. Esta es una solución buena pues ya no es preciso acceder al potenciómetro del amplificador de sonido.

En definitiva, una nueva máquina en que he implementado unas cuantas mejoras en la construcción y en los acabados. Una máquina para disfrutar construyéndola y jugándola.

Y el video:

Minesweeper-pescamines-buscaminas en Javascript

El Buscaminas (Pescamines, Minesweeper) es uno de los 1001 videojuegos a que tienes que jugar antes de morir. Si tienes una cierta edad, seguro que te has hartado, porque el Buscaminas ha venido en las diferentes versiones de Windows hasta el Windows 7.

Existen diferentes versiones para jugar online. Concretamente, con los alumnos hemos cogido la versión en Javascript de Andrew D. Birrell, que ya tiene unos años, y la hemos actualizado en diferentes aspectos. Cuanto a Javascript, se ha generalizado a NxM celdas. Esto implica crear la tabla de forma dinmica (createElement), y también los eventos (addEventListener). Recordar que en el Buscaminas hemos de distinguir entre el botón izquierdo y el derecho del ratón.

Además, hemos añadido una capa de programación con PHP y MySQL. Ahora que estamos estudiando llamadas asíncronas con AJAX, hemos creado una tabla MySQL, y podemos registrar el usuario y hacer estadísticas de las mejores puntuaciones.

Puedes probar el Buscaminas en:

El video del mueble de pinball

La máquina de pinball ya no me pertenece, o sea que le he hecho un buen reportaje de fotos y el video. Ya tengo unas cuantas mejoras pensadas para cuando tenga que hacer una nueva. Me gustaría poner un plunger con muelle, con un sensor de fuerza, para disparar la bola. No es ningún invento, el Virtual Pinball ya lo tiene previsto. Y también, claro, poner un monedero.

Esta semana iré a Sant Climent de Llobregat para conseguir un monedero de Industrias Lorenzo, que he de poner en una máquina. Carísimo, a parte de que perderé media mañana para irlo a buscar. Miraré de hacer y documentar un monedero de 50 cts con frontal de hierro, negro, y botón iluminado. Creo que puede quedar bien.

Aquí va el video, y el enlace a Retroplaneta::

Máquina de Virtual Pinball acabada!

Ya tenemos aquí la virtual pinball coffee table. Han pasado 11 meses desde que inicié este proyecto (con muchas cosas por el medio). Al final se ha utilizado PinballX como frontend y Visual Pinball 9 como emulador de mesas pinball en formato FS (fullscreen). Estos programas corren bajo Windows, no utilizaba Windows desde hacía mucho tiempo… Se han incorporado 200 mesas que se han testeado, intentando que fuesen lo más representativas de las diferentes épocas y fabricantes.

En muchos casos se ha tenido que tocar los scripts asociados a las mesas para que la mesa arranque bien y que salga el score de forma correcta. Las mesas que han llevado más faena son las más antiguas (EM, electromecánicas), donde se ha tenido que reposicionar los reels de los scores.

Los high scores de casi todas las mesas son muy difíciles de batir. Se ha hecho el trabajo de rebajar los high scores tocando en el fichero nvram los valores hexadecimales asociados al high score. En la mayoría de los casos se ha conseguido. De esta manera es fácil batir el récord de puntos y poder poner las iniciales al acabar la partida (JQC en mi caso). Es un buen ejemplo y un buen ejercicio de hacking de ficheros binarios.

Después de pasarme tiempo jugando y probantdo estas mesas, puedo decir que las que más me han gustado son las mesas electromecánicas de los años 60 y 70. Valoro de ellas la simplicidad del juego y limpieza del diseño. Mejor que las mesas luminosas y estresantes de los modelos de estado sólido (SS).

Es imposible jugar y conocer en profundidad todas estas mesas. En general las reglas son bastante difíciles de entender y digerir, y yo soy ese tipo de jugador que me basta con que la bola no me caiga entre los flippers. La idea es coger 4 o 5 mesas preferidas y jugar con éstas, conociéndolas más a fondo e intentando batir el récord una y otra vez.

Hay mesas que son muy rápidas y estresantes. Pero hay otras que son más tranquilas y donde la bola no va tan rápida. Es importante tener en mente estas mesas pensando que los niños o gente mayor también se lo puedan pasar bien haciendo unas partiditas.

El hardware que se ha utilizado finalmente:

    \t

  • HP Elite 8000 Dual Core 3,2GHz SFF (Small Form Factor), 4GB de RAM y 250GB de Disco Duro
  • \t

  • Gráfica: ATI 5770 DDR5
  • \t

  • 2 fuentes de alimentación (la placa base era SFF)
  • \t

  • I-PAC, 8 botones
  • \t

  • TV 32 pulgadas

Presupuesto final: 500 euros.

Se han utilizado 8 botones. En el frontal 4 botones iluminados: Coin, Start, Exit, Plunger. En los laterales botones para los flippers y botones para subir y bajar el sonido. Además, los botones tienen doble función dependiendo de si estamos en el front-end o en el emulador.

Cabe decir que yo no conocía demasiado el mundo Pinball antes de este proyecto. De pequeño había jugado alguna vez, pero muy poco, la verdad. Me ha gustado mucho adentrarme en este mundo, ahora ya soy un fan. En resumen, una máquina que promete muchas horas de diversión, en formato coffee table. Fantástica para competir por parejas y pasar un buen rato. Fantástica para revivir el mundo de los pinballs (o petacos, máquinas del millón). De todas formas, es bueno de vez en cuando poder hacer una partida en un pinball de verdad, como el que hay en la Plaça Joanich (Bar De Copas).

El Mundo del Spectrum, libro

Acabado de leer el libro El Mundo del Spectrum, de los autores del podcast y de la web del mismo nombre: Manuel J. Rico Borrego, Jesús Martínez del Vas, Alejandro Ibáñez Muñoz, Javier Ortiz Carrasco y Juan F. Torres Chica. Un libro entretenido y con una edición muy cuidada y colorida. Mientras lo iba leyendo he anotado la referencia de los juegos que salen, y a continuación lo pongo por si es de interés de alguien.

Mientras tanto, tengo pendiente de configurar el emulador ZEsarux en la Raspberry Pi 3 y clasificar unos cuantos juegos. Y también sacar el polvo del Spectrum + que compré de segunda mano hace un par de año. Pero lo que sería bueno para el 2017 sería pillarme para trastear el ZX-UNO, que es una FPGA clavada del Spectrum, que aunque no paricipé en el crowfunding del proyecto, veo que aún se puede conseguir. Bueno, tranquilo, voy a empezar el 2017 con calma… Y Buen Año! para los que lo lean.

Mientras, estos son los juegos que salen en el libro:

3D Space Wars\tpág 174
Abu Simbel Profanation\tpág 3, 105
Aeroporto\tpág 93
After the War\tpág 98
Albatrossity\tpág 217
Alchemist\tpág 207
Amazonia\tpág 94
Android One\tpág 76, 194
Android 2\tpág 194
Ángel Nieto\tpág 151
Arc of Yesod\tpág 196
Arkanoid\tpág 166
Arkos\tpág 146
Army Moves\tpág 98, 109
Aspar\tpág 86, 110
Asteroids\tpág 102
Astro Marine Corps (AMC)\tpág 98, 113
Astrologia\tpág 94
Atic Atac\tpág 158, 159
Attack of the Mutant Zombie Flesh Eating Chickens from Mars\tpág 192
Automania\tpág 186
Avalon\tpág 174, 176
Babaliba\tpág 105
Back to Skool\tpág 200
Barbarian\tpág 203
Batman\tpág 160, 166, 167
Batman the Movie\tpág 170
Beyond\tpág 125
Bobby Bearing\tpág 198
Brian Bloodaxe\tpág 198
Bruce Lee\tpág 182
Brunilda, King's Valley\tpág 216
Bubbler\tpág 160
Bugaboo: the Flea\tpág 71
Buggy Ranger\tpág 95
Camelot Warriors\tpág 109
Cannon Bubble\tpág 216
Capitán Trueno\tpág 146
Carlos Sainz\tpág 146
Castlevania\tpág 99
Castlevania Spectral Interlude\tpág 96
Chequered Flag\tpág 64
Chichen Itza\tpág 118
Chuckie Egg\tpág 31
Cobra\tpág 166
Columns\tpág 216
Comando Quatro\tpág 146
Combat Lynx\tpág 178
Comercio Cosmico\tpág 93
Commando\tpág 128
Contact Sam Cruise\tpág 200
Cookie\tpág 159
Cop-Out\tpág 186
Copa do Mundo\tpág 94
Corsarios\tpág 150
Cortocircuito\tpág 166
Cosmos\tpág 194
Cozumel\tpág 118
Cray5\tpág 216
Creador Musical II\tpág 93
Critical Mass\tpág 178
Curro Jiménez\tpág 146
Cybernoid\tpág 176
Cyberun\tpág 160
Cyclone\tpág 194, 195
Dangerous Kiss\tpág 95
Dariust\tpág 198
Deathchase\tpág 74
Decathlon\tpág 6, 127, 165
Deflektor\tpág 194
Digital Graffiti\tpág 186
Dizzy Y-Return to Russia\tpág 98
Dragontorc\tpág 175
Dustin\tpág 109
El Escalador Loco\tpág 73
El Jugador de Ajedrez\tpág 63
El Lingote\tpág 6, 128
El Poder Oscuro\tpág 146
El Quijote\tpág 118
El Zorro\tpág 184
Elite\tpág 98
Emilio Butragueño\tpág 130
Emilio Sánchez Vicario\tpág 146
Enduro Racer\tpág 88
Equinox\tpág 186, 188
Escuela de Ladrones\tpág 93
Esquiador\tpág 93
Everyone's a Wally\tpág 94, 186
Exolon\tpág 176
Fairlight\tpág 198
Fairlight II\tpág 198
Fernando Martín\tpág 110
Final Fight\tpág 184
Fist II\tpág 203
Flight Simulator\tpág 93
Forgotter Worlds\tpág 184
Fortune\tpág 15
Frankie Goes to Hollywood\tpág 166
Fred\tpág 72, 141
Freddy Hardest\tpág 98, 112
Freddy Hardest en Manhattan Sur\tpág 95, 210
Full Throttle\tpág 74
Game Over!\tpág 98, 107, 110
Garfield\tpág 198
Gauntlet\tpág 184
Génesis\tpág 216
Ghouls'n'Ghosts\tpág 184
Gift from the Gods\tpág 166
Goody\tpág 151
Green Beret\tpág 166
Gremlins 2\tpág 146
Guild of Thieves\tpág 116
Gunfright\tpág 160
Hammer Head\tpág 146
Harrier Attack\tpág 178
Head Over Heels\tpág 160, 166, 169
Heartland\tpág 196
Herbert's Dummy Run\tpág 186
Highway Encounter\tpág 194
Hostile All Terrain Encounter\tpág 194
Hulk\tpág 119
Humprey\tpág 144
Hunchback\tpág 165
Hypersports\tpág 166
Invasion of the Zombie Monsters\tpág 216
Jai Alay\tpág 151
Javato\tpág 118
Jet Pac\tpág 61, 74, 158
Jet Set Willy\tpág 61, 74, 190, 193
Jogos Basicos 1\tpág 93
Jogos Basicos 2\tpág 93
Joust\tpág 198
Ke Rulen Los Petas\tpág 118
Knight Lore\tpág 158, 159, 162
Knights & Demons\tpág 94
Kong\tpág 165
Kung-Fu Master\tpág 6
La Abadía del Crimen\tpág 72, 144, 150, 152
La Aventura Espacial\tpág 118
La Aventura Original\tpág 117, 118
La Corona Encantada\tpág 216
La Diosa de Cozumel\tpág 116
La Guerra de las Vajillas\tpág 118
La Historia Interminable\tpág 166
La Pulga\tpág 71
Legionairo\tpág 93
Level 9\tpág 116
Livingstone, I Presume\tpág 149
Livingstone, Supongo\tpág 149
Lorna\tpág 138
Los Inmortales\tpág 167
Los Intocables\tpág 167
Los Ladrones del Tiempo\tpág 72
Los Templos Sagrados\tpág 118
Luigi en Circusland\tpág 129
Lunar Attack\tpág 174
Lunar Jetman\tpág 159
Mad Mix Game\tpág 6, 124
Manic Miner\tpág 16, 61, 74, 164, 190, 191
Map Game\tpág 129
Mapsnatch\tpág 108
Martianoids\tpág 160
Match Day\tpág 165, 166
Match Day II\tpág 166
Metro Cross\tpág 184
Michel\tpág 110
Microbot\tpág 198
Mikie\tpág 166
Misterio del Nilo\tpág 144
Mithos\tpág 150
Moon Patrol\tpág 109
Mot\tpág 151
Mystery of the Nile\tpág 144
Narco Police\tpág 95, 111, 210
Navy Moves\tpág 109
Nebulus\tpág 176
Night Shift\tpág 185
Nightshade\tpág 160
Ninjajar\tpág 216
Noche Agitada\tpág 95
Nodes of Yesod\tpág 196
Nonamed\tpág 109
Olé Toro\tpág 110
Out Run\tpág 88
Paradroid\tpág 176
Paris-Dakar\tpág 144
Pentagram\tpág 160
Perico Delgado\tpág 86, 146
Petrovic\tpág 130
Phantis\tpág 98
Phantomas\tpág 108
Phantomas Saga Infinity\tpág 216
Phantomasa 1\tpág 216
Phantomasa 2\tpág 216
Ping Pong\tpág 166
Platoon\tpág 166
Pogaboo\tpág 151
Policarpo Díaz\tpág 151
Ponte A.\tpág 93
Presidente\tpág 94
Prince of Persia\tpág 59, 106, 143
Profanation\tpág 141
Pssst\tpág 8, 159
Psytron\tpág 119
Pyjamarama\tpág 186, 187
Quazatron\tpág 176
Rainbow Islands\tpág 173
Rambo\tpág 166
Renegade III\tpág 206
Revolution\tpág 194
Risky Woods\tpág 111
Robin of the Wood\tpág 196
Robocop\tpág 167, 170
Rocky\tpág 109
Saboteur I\tpág 178
Saboteur II\tpág 178
Sabre Wulf\tpág 119, 159
Sabrina\tpág 88
Saimazoom\tpág 104, 135
Scuba Dive\tpág 178
Seiddab Attack\tpág 174
Serra Pelada\tpág 94
Sgrizam\tpág 109
Shadow of the Unicorn\tpág 125, 186
Shadow Skimmer\tpág 198
Shao Lin's Road\tpág 198
Sir Ababol\tpág 216
Sir Fred\tpág 142, 143
Sito Pons\tpág 146
Skool Daze\tpág 200, 201
Snoopy\tpág 198
Softtime\tpág 198
Sokoban\tpág 216
Spectral Invaders\tpág 15, 16
Spectrum Micro Chess\tpág 71
Spirits\tpág 121
Spy Hunter\tpág 183
Stainless Steel\tpág 186
Star Trek\tpág 186
Starblitz\tpág 198
Stormlord\tpág 176
Street Fighter\tpág 184
Street Hawk\tpág 166
Strider\tpág 184
Strike Force SAS\tpág 186
Strooper\tpág 146
Styx\tpág 190
Summer Games\tpág 184
Super Scrylis\tpág 129
Survivor\tpág 123
Tapper\tpág 184
Taxman\tpág 192
Tetris\tpág 6
Thanatos\tpág 178, 180
The Artist\tpág 198
The Artist II\tpág 198
The Great Escape\tpág 166, 167
The Hobbit\tpág 202, 205
The Pawn\tpág 116
The Untouchables\tpág 170
The Way of the Exploding Fist\tpág 202, 203
The Way of the Exploding Fist +\tpág 203
Three Weeks in Paradise\tpág 186, 189
Top Gun\tpág 166
Tornado Low Level (TLL)\tpág 194
Transformers\tpág 166
Tranz-Am\tpág 159
Trapper\tpág 181
Turbo Esprit\tpág 178
Turbo Girl\tpág 146
Ulises\tpág 150
Underwurlde\tpág 159
Uridium\tpág 176
Uwol\tpág 216
Vaqueiro\tpág 93
Viaje al Centro de la Tierra\tpág 131, 138
Victory Road\tpág 206
Videolimpics\tpág 110
West Bank\tpág 98
Willy Great Adventure\tpág 192
Willy Meets\tpág 192
Winter Games\tpág 184
World Cup Football\tpág 94, 181
Wreckage\tpág 76
Yenght\tpág 102
Zombie Calavera\tpág 216
Zona 0\tpág 132
Zork\tpág 116
ZX Columns\tpág 216
ZX Mines\tpág 216
Zynaps\tpág 176

OpenCV y C++

Un proyecto para el 2017 será una recreativa de dardos. La idea no es original. Se trata de utilizar una diana de dardos real, de corcho, y los correspondientes dardos de punta metálica, y con un sistema de visión artificial ser capaz de saber a qué sector le hemos dado.

La solución pasa por tener dos webcams conectadas a la Raspberry Pi, pues con una sola webcam no se puede conseguir suficiente precisión. Se tendría que hacer bastantes pruebas para conseguir fiabilidad en la determinación de la posición del dardo. En principio cuento en que dos webcams baratas y compatibles con la RPi (por ejemplo la Logitech Quickcam Express) conectadas a una sola Raspberry Pi sean suficientes, ya veremos si será posible.

Mientras hemos instalado OpenCV en una Raspberry Pi 3 y estoy haciendo las primeras pruebas con OpenCV: capturar un frame de la webcam; diferencia entre dos imágenes; convertir una imagen a gris; convertir una imagen a binario a partir de un umbral; detección de un color; detección de una forma; detección de los contornos y centro de masas,… Todo con C++. Realmente es divertido esto del OpenCV.

En edx.org hay un curso de OpenCV.

Esperemos que todo funcione sin demasiados contratiempos. El siguiente paso sería hacer la interficie de usuario que nos permitirá jugar a los juegos más populares de dardos: 301, 501, Cricket,… y construir un mueble. Me imagino una madera grande con la diana a la derecha, una pantalla de 15» (protegida per un vidrio) a la izquierda, y una marquesina retroiluminada donde están escondidas las dos webcams dirigidas a la diana. Ya veremos, todo esá por hacer.

Ir rápido clasificando insectos

Todavía tengo por clasificar fotos de insectos de este verano y del anterior. Con el tiempo he aprendido a ir más rápido clasificando insectos, y a no perder tiempo y ofuscarme cuando no encuentro la identificación correcta. A medida de ir haciéndolo he establecido un protocolo bastante claro para proceder. Básicamente necesito un editor de texto con 4 ó 5 documentos; tres ventanas del terminal, una de las cuales es el mysql en modo comando; tres carpetas del explorador de archivos (Nautilus); y tres o cuatro ventanas del Firefox.

Hasta ahora lo hacía una por una. Ahora se trata de ponerlo todo en un script y así ganar un poco de tiempo y comodidad. Además, no es necesario poner el password del mysql, que queda ofuscado. El script queda de la siguiente manera:

#!/bin/bash

MY=$(echo "7878Mx33xicdg444aaiJ5888aba" | tr -d "78" | tr -s "4" | tr -d "cd" | tr -d "b" | tr -s "a" | tr -d "x3" | tr -d "58" | tr -s "8")

#nautilus
/usr/bin/nautilus /home/joan/arthropoda/fotosarthropoda/fotos_que_falten
/usr/bin/nautilus /home/joan/arthropoda/fotosarthropoda/fotos_prov
/usr/bin/nautilus /home/joan/arthropoda/fotosarthropoda/fotos_prov2

#firefox
/usr/bin/firefox http://localhost/arthropoda/ www.flickr.com http://www.biodiversidadvirtual.org/insectarium/ www.google.es &

#gedit
/usr/bin/gedit /home/joan/arthropoda/script_mysql.txt
/usr/bin/gedit /home/joan/arthropoda/per_classificar.txt
/usr/bin/gedit /home/joan/arthropoda/pixtuffarthro/inserts.sql
/usr/bin/gedit /home/joan/arthropoda/pixtuffarthro/updates.sql

#gnome-terminal:
/usr/bin/gnome-terminal --working-directory=/home/joan/arthropoda/scripts
/usr/bin/gnome-terminal --working-directory=/home/joan/arthropoda/pixtuffarthro
mysql -u root -p$MY arthropoda

done

Por cierto, esta semana he abierto una nueva familia de escarabajos: Dasytidae. El bicho me lo han clasificado en IV-biodiversidadvirtual.org, aunque no me han dicho ni el género. Ha sido un poco de lío, pues parece ser que Dasytidae es sinónimo de Melyridae. A veces la ciencia de la taxonomía puede ser muy complicada… Suerte que no me dedico a ello… Yo sencillamente hago fotos de bichos y miro de aprender y maravillarme de lo que nos ofrece la naturaleza.

Mi colección de insectos online: