Videojuego en Alhambra-2 con Multimedia Shield

191 views
Skip to first unread message

Jesus Arias

unread,
Dec 18, 2025, 3:08:19 PM12/18/25
to FPGAwars: explorando el lado libre
Hola,

He portado la máquina de marcianitos "Defender" a la Alhambra-2 con la placa multimedia. Para probarlo se necesita:
- Un teclado PS2 y el jumper correspondiente conectado en "PS2"
- Ninguna tarjeta SD insertada
- Un monitor VGA, a ser posible de aspecto 4:3
- Ampli de audio conectado al jack "AOUT"

Se programa la flash: "iceprog combi.bin"

y el videojuego arranca. El sistema ejecuta las ROM originales de "Defender" y lo primero que hará será entrar en un menú de configuración. Se resetea pulsando "F12" y al segundo intento arranca el juego. (esto se debe a que una memoria supuestamente "no-volatil" ha comenzado con sus datos incorrectos)

En el teclado estas son las teclas asociadas a los controles:
F3, F2, F1 : Son los interruptores para insertar "coins"
1, 2 : para arrancar una partida de uno o dos jugadores
Q : Nave arriba
A : Nave abajo
Alt: Encender motor
Shift Derecho: Girar marcha 180 grados
Control: Disparo
B : Bomba
H: Hyperespacio

Y para moverse por los menús de diagnóstico y depuración:
U: Auto up
I: Avance (al pulsarla la máquina entra en su "setup")

F12: Reinicio

Espero que gusten estos clones tan retro ;)
Saludos
20251218_002332.jpg

combi.bin

charli va

unread,
Dec 18, 2025, 3:56:41 PM12/18/25
to fpga-wars-explora...@googlegroups.com
No tengo aquí un ps2!!! me voy a morir de ganas de probar esto hasta la semana próxima!! :)

Gracias Jesús!!

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/f6eeae97-08af-4533-b984-163d727d5b8fn%40googlegroups.com.

Democrito

unread,
Dec 19, 2025, 3:36:36 AM12/19/25
to FPGAwars: explorando el lado libre
Tampoco tengo teclado PS2, pero en cuanto lo consiga y me libere de quehaceres subo vídeo demo.

Alexander Lang

unread,
Dec 19, 2025, 4:38:37 AM12/19/25
to fpga-wars-explora...@googlegroups.com
Buenas dias a todos!

Yo encontre este device en amazon UK.  Muy facil para una USB keyboard por PS2 para jugar con una fpga :)

Que lo pase bien

Alex

---- In English, mostly mostly for me in case I made a mistake with my efforts to write in Spanish! ---

Good morning everyone,

I found this device on Amazon UK.  Its very easy to use a USB keyboard to PS2 for playing games on an FPGA :)

Have a great time

Alex 

Alexander Lang

unread,
Dec 19, 2025, 4:39:24 AM12/19/25
to fpga-wars-explora...@googlegroups.com

Democrito

unread,
Dec 20, 2025, 7:26:42 PM12/20/25
to FPGAwars: explorando el lado libre
Hola:

Explico los pasos que he realizado por si ayuda a otras personas que encuentran algún bache. Me baso en un OS Windows 11 completamente nuevo.

- El primer paso es instalar Zadig o si tienes instalado Icestudio lo puedes encontrar aquí "C:\Users\TuNombreDeUsuario\.icestudio\apio\packages\tools-drivers\tools-drivers-windows_amd64-1.3.0\bin". En este último caso ejecuta Zadig.
- El segundo paso, es que si Zadig no consigue instalar el driver (como me sucedió) es necesario tener instalado "Visual C++ Redistributable para Visual Studio 2015". Si tu PC no es recién estrenado seguramente ya lo tienes instalado.
- Dentro de Zadig hay que tener habilitada en la pestaña "Options" la opción "List All Devices", así podrás elegir dónde instalar el driver, que es para  "Alhambra II ... (Interface 0)". Es importante que sea en "Interface 0", nunca en el 1, ya que hay dos.

2.png

3.png

- Una vez instalado el driver, nos vamos a la carpeta donde se encuentra "Iceprog.exe" que en mi caso está en "C:\Users\TuNombreDeUsuario\.icestudio\apio\packages\tools-oss-cad-suite\bin" (más adelante tendrás que copiar esta ruta para luego hacer un "cd" a esa ruta)
- Lo siguiente (esto es un modo de muchos de hacerlo) copia y pega el archivo "combi.bin" en la carpeta mencionada. Ese archivo está adjunto en el primer post de este hilo
- Ahora, desde un terminal (no con Power Shell, sino con "CMD") escribes: 
   * "cd C:\Users\TuNombreDeUsuario\.icestudio\apio\packages\tools-oss-cad-suite\bin"
   * y luego escribes "iceprog combi.bin" y te subirá el circuito a tu Alhambra II.

Este es mi montaje (setup)

Vemos la conexión del cable de vídeo (RGB) y teclado usb con un adaptador. Sobre esto último hablaremos más adelante.

montaje.png

Al ponerlo todo en marcha lo primero que aparece es esto.

Random Universe.png

Varios segundos después aparece esto.

initial.jpg

Y después, esto.

end.jpg

Y ahí me quedé. Parece ser que el teclado no funciona, pero hipotetizo que se debe al adaptador USB -> PS/2. O quizás se deba a que el teclado que uso no tiene F12, sólo hasta F10 (siguiendo las instrucciones que están en el primer post de este hilo), pero tiene la opción de usar F12 si se pulsa la tecla expansiva "Fn", cosa que hice, pero sin resultado.

Así que tendré que conseguir un teclado original PS/2.

Pero lo que quiero mostrar aquí es que funciona perfectamente el circuito y a la primera. En cuanto consiga un teclado PS/2 os subiré un vídeo demo del juego.

Muchas gracias Jesús por este proyecto tan grande que hace una demostración de la potencia de las FPGA, y gracias Carlos por cederme la shield que hace posible que este tipo de demostraciones sean tan sencillas de montar en un momento.

charli va

unread,
Dec 20, 2025, 7:36:33 PM12/20/25
to fpga-wars-explora...@googlegroups.com
Gracias a ti Demócrito! se vienen muchas cositas me encanta verte animado con el test!

Yo también lo cargué y va de lujo, video fluido, sonido.... me pasa igual ando sin teclado ps2, la semana que viene creo que ya tendré uno, de todas maneras cuando Jesús libere código le podemos meter otros controles y seguir evolucionando el bicho :) y ahora parece que se viene una nueva base para la Alhambra ;) ..... se pone curioso el 2026

Un abrazo familia!



Jesus Arias

unread,
Dec 21, 2025, 1:37:44 PM12/21/25
to FPGAwars: explorando el lado libre
Hola Democrito,
Tienes que cambiar el jumper que está al lado del conector PS2 al otro lado. Según la foto ahora está en USB.
Ese jumper cambia un par de resistencias de 15kOhm de pull-up (PS2) a pull-down (USB-host) 
Saludos ;)

Jesus Arias

unread,
Dec 21, 2025, 1:49:50 PM12/21/25
to FPGAwars: explorando el lado libre
Hola de nuevo
Adjunto los fuentes, y también algo de documentación. (La parte relevante está al final del PDF)
Probablemente el código necesite de una "limpieza" en condiciones. Mis disculpas 

Saludos
AlMMDefender.tgz
defrdx.pdf

charli va

unread,
Dec 21, 2025, 2:39:40 PM12/21/25
to fpga-wars-explora...@googlegroups.com
Disculpas? Jesús por favor, esto es un regalo de Navidad ;)

Millones de gracias!

Democrito

unread,
Dec 21, 2025, 4:03:15 PM12/21/25
to FPGAwars: explorando el lado libre
Entendido Jesús. Estoy fuera unos 4 días, en cuanto llegue a casa cambio el jumper de posición y si chuta hago vídeo.

Muchas gracias!

charli va

unread,
Dec 21, 2025, 4:45:26 PM12/21/25
to fpga-wars-explora...@googlegroups.com
Jesús! chapó!!! me ha encantado !!!

El truco de usar el tristate para sacar 144 colores.... brutal! estoy haciendo una cosa nueva a ver si la acabo para mandárosla y voy a usar tu truco, no había caído en usar el estado Z como un estado más para los niveles de color.

Y el uso de BAC como  gestor interno de periféricos super interesante.

Muchas gracias por la documentación, oro puro!

Un abrazo y buenas noches!

Jesus Arias

unread,
Dec 21, 2025, 5:09:23 PM12/21/25
to FPGAwars: explorando el lado libre
Hola otra vez. Olvidé decir que para usar la interfaz PS2 también hay que quitar el jumper del pull-up para USB-device.

El domingo, 21 de diciembre de 2025 a las 19:37:44 UTC+1, Jesus Arias escribió:

charli va

unread,
Dec 21, 2025, 5:22:50 PM12/21/25
to fpga-wars-explora...@googlegroups.com
Oído a navegantes, yo ando preparando una "mini guía" de la placa para estas cosillas que  Jesús y yo tenemos claro pero que los qu eya la tenéis puede llevar a equívocos.

Por cierto el ps2 es una "cucada" la gestión de señales para el que quiera echar un vistazo a la electrónica que ha diseñado JEsús.

Jesus Arias

unread,
Dec 22, 2025, 6:53:50 AM12/22/25
to FPGAwars: explorando el lado libre
Hola,
También he estado preparando esta "chuleta" para los jumpers:
JumpersAlMM.png

charli va

unread,
Dec 22, 2025, 7:24:41 AM12/22/25
to fpga-wars-explora...@googlegroups.com

Jo mo

unread,
Dec 22, 2025, 11:12:24 AM12/22/25
to FPGAwars: explorando el lado libre
Unbelievable work Jesus, but coming from you, now we  are getting used to ;-)
There are so many information in the 21 pages of your doc, that it need a deep reading for a full understanding of the subject !

It will be fun to be able to run other custom programs/roms for this 6809 processor (maybe with fixed roms for the two co-processors, 6800 for sound and  BAC uC for peripherals).
Maybe  using an assembler like asm6809.
Or even better having a BASIC for this processor+peripherals system. Maybe something like  BASIC-To-6809

Big thanks for this crazy contribution, you rule !

Jesus Arias

unread,
Dec 23, 2025, 1:28:56 PM12/23/25
to FPGAwars: explorando el lado libre
Hola a todos y ¡Feliz Navidad!
He dejado los fuentes con algunos pequeños cambios y más comentarios en la web:
Buenas noches

charli va

unread,
Dec 23, 2025, 1:35:41 PM12/23/25
to fpga-wars-explora...@googlegroups.com
Muchísimas gracias Jesús!! todo un regalazo!! 

voy a abrir un nuevo hilo con un "monstruito" que ha surgido  de este proyecto pero creo que puede tener interés de por sí y por eso en vez de continuarlo aquí os lo pasaré a parte en un rato, pero la motivación y el vídeo de ejemplo es gracias al DEFENDER.

Un abrazo y ¡Feliz Navidad!



Democrito

unread,
Dec 29, 2025, 6:24:49 PM (13 days ago) 12/29/25
to FPGAwars: explorando el lado libre
Hola Jesús:

He probado a poner en marcha el juego AlMMDefender, esta vez con los jumpers en la posición correcta (o eso espero). Pero el problema que tengo persiste porque mi teclado no tiene "F12", sólo llega hasta "F10" y para conseguir "F11" y "F12" hay que pulsar una tecla llamada "Fn". Creo que ese es el problema, "que hay que mantener pulsada otra tecla para acceder a la elegida".

Teclado usado (porque no tengo otro, es a través de un conversor USB->PS/2 )

KeyBoard.png

Configuración de los jumpers en la shield:

Shield_jumpers.png

He estado mirando el archivo "Keyb.v" dentro del proyecto "AlMMDefender.tgz" para cambiar esa opción a alguna tecla más accesible y que no fuese usada. Pero no tengo idea de cómo "compilar" el proyecto completo.

<<
always @(posedge clk)
if (newsc) begin
if (scancode==8'h3C) swra[0]<=~rel; // (U) Auto Up
if (scancode==8'h43) swra[1]<=~rel; // (I) Advance
if (scancode==8'h04) swra[2]<=~rel; // (F3) Coin R
if (scancode==8'h2d) swra[3]<=~rel; // (R) Reset Hi-score
if (scancode==8'h06) swra[4]<=~rel; // (F2) Coin Center
if (scancode==8'h05) swra[5]<=~rel; // (F1) Coin L

if (scancode==8'h14) swia[0]<=~rel; // (ctrl) Fire
if (scancode==8'h11) swia[1]<=~rel; // (Alt) Thrust
if (scancode==8'h32) swia[2]<=~rel; // (B) Bomb
if (scancode==8'h33) swia[3]<=~rel; // (H) Hypers
if (scancode==8'h1e) swia[4]<=~rel; // (2) Two players
if (scancode==8'h16) swia[5]<=~rel; // (1) One player
if (scancode==8'h59) swia[6]<=~rel; // (shiftR) Reverse
if (scancode==8'h1c) swia[7]<=~rel; // (A) Down

if (scancode==8'h15) swib   <=~rel; // (Q) Up

if (scancode==8'h07) kreset <=~rel; // (F12) System reset
end

endmodule
>>

Entonces mi pregunta es si sería posible cambiar la tecla "F12" para comenzar el juego por otra tecla más accesible, como por ejemplo la tecla "escape" (Esc) y volverlo a "compilar". Mi problema es no saber sintetizar todo esto para sacar el ".bin", hasta ahora sólo he manejado Icestudio.

Saludos.

charli va

unread,
Dec 30, 2025, 3:57:56 AM (13 days ago) 12/30/25
to fpga-wars-explora...@googlegroups.com
Buenas! yo no tengo teclado ps2, ni usb compatible con ps2, he probado varios que tengo pero como otras veces ninguno me ha funcionado, deben ser "demasiado modernos" aunque sean básicos y no funcionan a lowspeed ni llevan el protocolo ps2 en su firmware.

Así que te paso el bitstream para que lo puedas probar, te he metido la tecla F10 duplicada con la F12 por no perder la funcionalidad original.

Aviso a navegantes de OSX, la toolchain de yosys en estos diseños complejos que estamos trabajando está "fallando" he descubierto un bug que voy a reportar al proyecto de yosys en cuanto lo depure un poco más pero en OSX los bitstreams tanto de de defender como de larva pueden estar corruptos, solo por si alguien se pone a construirlo en osx y se le queda la pantalla en negro no es problema del proyecto sino de la toolchain, al algoritmo ABC se rompe en un momento dado y deja el bitstreams sin cosas por conectar debido a optimizaciones que ha hecho el compilador de arm del osx en yosys (llevo varios días atascado con varias cosas por este motivo y gracias a la tecla de Demócrito he encontrado el problema y ha sido un alivio que no fuera del código verilog porque estaba empezando a creer en los fantasmas!! )

También os adjunto el verilog del teclado con la tecla F10 añadida.

¡A disfrutar!


--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
keyb.v
combi.bin

Democrito

unread,
Dec 30, 2025, 8:54:41 AM (12 days ago) 12/30/25
to FPGAwars: explorando el lado libre
Muchas gracias Carlos!

Ha funcionado perfectamente! Hay que meter monedas con F3, F2, F1 y luego pulsar la tecla '1' para un jugador ó '2' para dos jugadores, y se pone en marcha.
QA para subir y bajar, Ctrl para disparar, Alt para avanzar, etc. Todo va muy bien.

Os dejo con un vídeo demo: https://www.youtube.com/watch?v=YOE385xb8u4

Saludos y gracias a Jesús por esta demo para nuestras shield y Carlos por el empuje para que fuese posible!

charli va

unread,
Dec 30, 2025, 9:16:24 AM (12 days ago) 12/30/25
to fpga-wars-explora...@googlegroups.com
Muy buena Demócrito!! os voy mandar una cosita en breve que con las fiestas no pude acabar de ponerle el lazo para pasárosla relacionado con esto.

Un gran abrazo y gracias por el vídeo!!!

Jo mo

unread,
Dec 30, 2025, 10:35:42 AM (12 days ago) 12/30/25
to FPGAwars: explorando el lado libre
The video looks really nice Democrito! a little taste of the 80's :-)
Thanks to Carlos and Jesus for this nice arcade game on the alhambra !  

charli va

unread,
Dec 30, 2025, 10:38:56 AM (12 days ago) 12/30/25
to fpga-wars-explora...@googlegroups.com
All the credit goes to Jesus; I've only contributed a tiny bit to this. It's a fantastic adaptation.

Jesus Arias

unread,
Jan 7, 2026, 5:57:23 PM (4 days ago) Jan 7
to FPGAwars: explorando el lado libre
Hola de nuevo y feliz 2026!!!
He descubierto que aunque los triestados en los pines de vídeo se simulaban como correctos Yosys los ha sintetizado mal y sólo tenemos 4 niveles de color en lugar de los 6 previstos.
Así que he tenido que cambiar un poco el código para que siendo más explicito con los triestados se sinteticen bien. 
He dejado la nueva versión aquí:

Los cambios están al final del archivo "video.v", y el binario para pruebas rápidas va adjunto.
Lo cierto es que sí que se notan los cambios, sobre todo en las animaciones de "paleta" del juego, ahora que realmente tenemos los 144 colores
(También hay otro cambio en el micro BAC que ahora sólo tiene 16 bytes de RAM de datos, y aunque ocupe un poco más nos ahorra una BRAM)

Buenas noches
combi.bin

charli va

unread,
Jan 8, 2026, 12:43:46 PM (3 days ago) Jan 8
to fpga-wars-explora...@googlegroups.com
Está fantástico Jesús!  el tema de los triestados me ha sorprendido estos últimos proyectos que estamos simulando, he andado investigando y parece ser que desde hace varios yosys el algoritmo ABC optimiza mucho mejor en general pero los triestados "se rompen" ya iremos encontrando formas de hacer las cosas bien y sabiendo que no fallan ,yo ahora ya siempre que uso triestados reviso el log de la síntesis para segurarme de que están sintetizados.

En cualquier caso la recreación es estupenda y el poder sacar 144 colores una pasada.

Gracias!

Reply all
Reply to author
Forward
0 new messages