[Alhambra2media] VECTREX

74 views
Skip to first unread message

Carlos Venegas

unread,
Jun 19, 2026, 4:02:34 AM (8 days ago) Jun 19
to fpga-wars-explora...@googlegroups.com
Hola a todos!, Lo primero vídeo, VECTREX en Alhambra-II + Multimedia shield de Jesús Arias:
Hello everyone! First up, a video: VECTREX in Alhambra-II + Multimedia shield by Jesús Arias:



ENGLISH BELOW/// 

Hace algo más de un año, me llegó la noticia de que lanzaban un crowdfunding para fabricar una versión nueva de la Vectrex manteniendo su "espíritu". 

Nunca he tenido en mis manos esta máquina pero siempre me resultó curiosa, cuando he visto vídeos sobre ella así que me plantee invesigarla un poco y cuando empecé a ver como estaba diseñada la verdad que me pareció todo muy interesante. Así que me plantee recreerla ¿por qué no?

Como siempre  "la Alhambra nos tiene atrapados" XD, y es totalmente cierto, muchos de los trabajos que hacemos en FPGAs más grandes no es que estuvieran chupados , pero serían mucho más sencillos.

Lo bonito/divertido/interesante de usar una FPGA pequeña como la ice40hx4k es que te obliga a exprimir los recursos y se aprende muchísimo. Gran parte de cosas que aprendo en este tipo de desarrollos los traslado al mundo profesional con gran efectividad o simplemente te ayudan a entender qué ocurre dentro del silicio, cosa que te permite afrontar otros retos con una buena perspectiva.

Miré código de emuladores y a nivel software la recreación es muy artificial, al final simplemente hacen un traductor de los comandos del chip vectorial a un pintado tradicional en un framebuffer y con shaders des las tarjetas gráficas le dan aspecto de glow y demás, no digo que no esté bien sino que no tiene nada que ver con la máquina real y su física, para mi eso pierde bastante interés.

Lo más original que tiene es el modo de pintado, no usa framebuffer, esta pieza de echo puede ser interesante para usar para pequeños proyectos en los que puedas querer pintar cosas en pantalla a modo vectorial y no tengas memoria externa para un framebuffer grande.

El límite aquí es  el número de vectores que puedas pintar en la temporización de un frame, básicamente es un bresenham + bsp tree reducido para hardware, y que juega con la persistencia de la imagen (veréis que vibra un poco, aunque esto le da sensación más analógica), sorprendentemente el concepto funciona bastante bien (no me esperaba que funcionara así si os digo la verdad, esto ha sido un trabajo literalmente guiado por la intuición y una curiosidad casi infantil).

Así que bueno, poco a poco ha sido un proyecto que he ido llevando  a modo diversión, lo he tenido atascado varios meses prácticamente sin tocarlo y estas últimas semanas con las cosas que ando haciendo con Jesús (nada que ver con esto aparentemente), han dado fruto. Hemos hecho unos módulos verilog que aunque orientados a otras cosas, eran justo las piezas que me faltaban.

Llevaba varios días rumiando que esto podía encajar y he echado unas horas esta mañana, integrando las piezas de cache para el código de los cartuchos, aprovechando meter también la recreación del AY y nada, en relativo poco tiempo, booom!!! me llené de emoción.

Os mando un bitstream por si queréis probarlo, está muy "verde" o debería decir "azul" nunca mejor dicho porque como os digo era más una prueba de concepto que otra cosa y tras meses pensando que realmente no podría caber en nuestra querida alhambra (solo la cpu que uso del proyecto de cavnex, ocupa más de la mitad) aquí está,.... gracias a la Multimedia Shield de Jesús y al trabajo en comunidad, aquí tenemos otra recreación :) en este caso no hay mucho espacio para "virguerías" la FPGA va prácticamente al 99.9999% no sé ni como llega a rutar XD 

El audio no es 100% fiel porque para que entrara he tenido que fijar cables de las envolventes del chip a constantes y básicamente es "tone only", si evoluciono el diseño y optimizo área de algún modo que ahora mismo ni se me ocurre, podremos tener la réplica íntegra (posiblemente buscando otro core del 68k más óptimo en área aunque este es el único cycle accuracy que he encontrado en verilog), si alguien se anima pronto os paso código y a lo mejor se le ocurre como ganarnos esos 100-200 LCs que nos hacen falta para ir a tope XD

Ahora mismo el cartucho va fijo, si consiguiera optimizar área podríamos plantear un cargador y poder cambiar de cartucho fácilmente, he dejado un mítico cargado.

Este proyecto para mi ha sido bastante especial porque la idea tonta del simulador del raster analógico de vídeo, ha sido el típico reto motivante y verlo funcionar aunque por la pantalla digital no tenga "glow" me ha parecido muy curioso (pensaba encontrarme una imagen con mucho parpadeo y discontinuidad).

Por cierto aunque he integrado el PS2, clonando el código que utilicé para space invaders, no lo he probado porque no tengo a mano estos días ninguno, si alguien lo prueba y me confirma que funciona o no lo agradecería así lo intento ajustar aunque no lo tenga disponible.

Las teclas son:

 Flechas     -> joystick P1
  Z               -> botón 1
  X               -> botón 2
  C               -> botón 3
  V               -> botón 4

Se nos va apilando un montón de proyectos interesantes, ya iremos hablando de ellos,  liberando código y documentación, tenemos otra recreación brutal de otro ordenador de la época que aún no os hemos soltado porque va con muchas piezas que queremos documentar y contaros pero ya llegará.... estamos organizando todo.

Si alguno que tenga la shield quiere probarlo y ver si lo reproduce estaría genial por tener feedback.

Os he dejado aquí, el bitstream, bios y cartucho de juego para probar (no he probado otros juegos , si lo probáis me decís, en caso de otro juego solo tendríais que flahsearlo en la dirección del cartucho.

Los comandos a ejecutar son:

iceprog vectrex_fpga_top.bin
iceprog -o 0x080000 vectrex_bios.bin


Con esto arranca la bios y el juego que llevaba de serie (Mine Storm), teóricamente si grabáramos una rom en 0x082000 el sistema debería ejecutarla ( y para que vuelva al mine storm habría que rellenar con 0xFF a partir de esa dirección. Esto aún no lo he probado, tengo que buscar roms y demás pero bueno si alguien se anima el experimento es fácil, lo único habría que combinar bios y cartucho y no flashear alegremente a 0x082000 porque como iceprog flashea en blosuqe ds 64KB podría pisar la bios por alineación. 

Esto lo iré preparando con calma , pero bueno os o dejo por si acaso y lo dicho ya iremos liberando todas estas cosas.

Y os recuerdo que el que esté interesado en la shield puede inscribirse aquí https://icestudio.io/buygroup-alhambramm/ no os he comentado nada , no por tener abandonado esto sino porque estamos aun cerrando pruebas/demos básicamente validando que todo funcione perfectamente y generando material para que sea toda una plataforma de aprendizaje. 

Ya estamos moviendo como fabricarla en volumen y los que os vayáis apuntando nos vale para ver el interés y así estimar volúmen y poder ajustar el precio mejor posible.

Muchas gracias a todos espero que lo disfrutéis.

ENGLISH

A little over a year ago, I heard the news that they were launching a crowdfunding campaign to build a new version of the Vectrex while keeping its "spirit."

I've never actually had this machine in my hands, but it always struck me as curious whenever I saw videos about it, so I decided to look into it a bit, and when I started seeing how it was designed, the truth is I found it all very interesting. So I thought about recreating it — why not?

As always, "the Alhambra has us hooked" XD, and it's totally true. A lot of the work we do on bigger FPGAs isn't exactly a piece of cake, but it would be much simpler.

The nice/fun/interesting thing about using a small FPGA like the ice40hx4k is that it forces you to squeeze the resources, and you learn a ton. A lot of what I learn in this kind of development I carry over into the professional world very effectively, or it simply helps you understand what's going on inside the silicon - which lets you tackle other challenges with a good perspective.

I looked at emulator code, and at the software level the recreation is very artificial. In the end they just make a translator from the vector chip's commands into traditional rendering in a framebuffer, and with GPU shaders they give it a glow effect and so on. I'm not saying it isn't well done, but it has nothing to do with the real machine and its physics - for me that loses a lot of the appeal.

The most original thing it has is its rendering mode: it doesn't use a framebuffer. This part could actually be interesting to use for small projects where you might want to draw things on screen in a vector style and don't have external memory for a large framebuffer.

The limit here is the number of vectors you can draw within the timing of a frame. Basically it's a Bresenham + reduced BSP tree for hardware, playing with the image's persistence (you'll see it vibrates a bit, though this gives it a more analog feel). Surprisingly, the concept works pretty well (I honestly didn't expect it to work like this — this was literally a job guided by intuition and an almost childlike curiosity).

So anyway, little by little it's been a project I've been carrying along for fun. I had it stuck for several months barely touching it, and these last few weeks, with the stuff I've been doing with Jesús (apparently nothing to do with this), things have borne fruit. We made some Verilog modules that, although aimed at other things, were exactly the pieces I was missing.

I'd been mulling over for several days that this might fit, and I put in a few hours this morning, integrating the cache pieces for the cartridge code, taking the opportunity to also drop in the AY recreation, and boom!!! — in relatively little time I was filled with excitement.

I'm sending you a bitstream in case you want to try it. It's very "green," or I should say "blue," never more fittingly, because as I said it was more a proof of concept than anything else. And after months thinking it really wouldn't fit in our beloved Alhambra (just the CPU I use from cavnex's project takes up more than half), here it is.... thanks to Jesús's Multimedia Shield and to community work, here we have another recreation :) In this case there isn't much room for "fancy tricks" -  the FPGA runs at practically 99.9999%, I don't even know how it manages to route XD

The audio isn't 100% faithful because, to make it fit, I had to tie the chip's envelope wires to constants, so it's basically "tone only." If I evolve the design and optimize the area somehow - which right now I can't even think how — we could have the full replica (possibly by looking for another 68k core that's more area-optimal, although this is the only cycle-accurate one I've found in Verilog). If anyone feels like jumping in, I'll pass you the code soon, and maybe they'll figure out how to win us those 100-200 LCs we need to go full out XD

Right now the cartridge is fixed. If I managed to optimize area, we could consider a loader and be able to switch cartridges easily — I've left a classic one loaded.

This project has been pretty special for me because the silly idea of the analog video raster simulator was the classic motivating challenge, and seeing it work, even if the digital screen doesn't give it "glow", struck me as really curious (I expected to find an image with a lot of flicker and discontinuity).

By the way, although I integrated the PS2, cloning the code I used for Space Invaders, I haven't tested it because I don't have one on hand these days. If anyone tests it and confirms whether or not it works, I'd appreciate it, so I can try to adjust it even without having it available.

The keys are:

Arrow keys  -> joystick P1

  Z               -> button 1
  X               -> button 2
  C               -> button 3
  V               -> button 4

We've got a whole pile of interesting projects stacking up — we'll talk about them in due course, releasing code and documentation. We have another brutal recreation of another computer from that era that we haven't dropped on you yet because it comes with a lot of pieces we want to document and tell you about, but it'll come.... we're organizing everything.

If anyone who has the shield wants to try it and see whether it reproduces, that would be great for getting feedback.

I've left here the bitstream, BIOS, and game cartridge to try (I haven't tested other games — if you test them, let me know; for another game you'd just have to flash it at the cartridge address).

The commands to run are:

iceprog vectrex_fpga_top.bin iceprog -o 0x080000 vectrex_bios.bin

https://drive.google.com/drive/folders/1tHTScGHUzQxorPQxLCQJuX1Oo8tG0ma-?usp=drive_link

With this, the BIOS boots along with the game it shipped with (Mine Storm). In theory, if we burned a ROM at 0x082000, the system should run it (and to get back to Mine Storm you'd have to fill with 0xFF from that address onward). I haven't tested this yet — I need to track down ROMs and so on — but anyway, if anyone feels like it, the experiment is easy. The only thing is you'd have to combine BIOS and cartridge and not flash blithely at 0x082000, because since iceprog flashes in 64KB blocks, it could clobber the BIOS due to alignment.

I'll be preparing this calmly, but anyway I'm leaving it for you just in case, and as I said, we'll keep releasing all these things.

And a reminder that anyone interested in the shield can sign up here: https://icestudio.io/buygroup-alhambramm/ — I haven't said anything about it, not because I've abandoned it, but because we're still wrapping up tests/demos, basically validating that everything works perfectly and generating material so it becomes a full learning platform.

We're already working on how to manufacture it in volume, and those of you who sign up help us gauge interest and thus estimate volume and adjust the price as best as possible.

Thank you all so much — I hope you enjoy it.

Jesus Arias

unread,
Jun 19, 2026, 5:04:00 AM (8 days ago) Jun 19
to FPGAwars: explorando el lado libre
¡Impresionantes los gráficos vectoriales sin framebuffer! Por descontado que tengo que probar este juguete (aunque la consola original no la conocía)
Y lo malo es que acabas de abrir la puerta a unos pocos clones más, como  Asteroids, Battlezone, o el videojuego más arcaico de todos:  Spacewar (PDP-1)

Carlos Venegas

unread,
Jun 19, 2026, 6:03:13 AM (8 days ago) Jun 19
to fpga-wars-explora...@googlegroups.com
A por ellos!!! organizo un poco el código y os lo paso, menuda lista de máquinas a recrear vamos a aprender un montón :)

El tema del display vectorial me tiene "flipado" os digo en serio no pensaba que el concepto iba a funcionar así de bien, cuando hay mucha densidad(las pantallas con texto) "le pesa" y se ve algo más de refresco pero aún así va relativamente bien.

Para que os hagais una idea lo típico que siempre faltan BRAMS para este tipo de recreaciones aquí nos sobren, este último bitstream creo que usa 26 si no recuerdo mal. lo que sí la lógica va fatal, he tenido que rascar lcs quitando leds, fijando señales de audio XD

La clave sería encontrar un core de 68K que vaya muy bien (el canvex va fenomenal) pero que ocupe menos.

En fin ya me diréis si probáis.

--
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/9fe1078d-8556-45f1-ad00-4a0b4c23b4e5n%40googlegroups.com.

Obijuan

unread,
Jun 19, 2026, 11:41:56 AM (8 days ago) Jun 19
to FPGAwars: explorando el lado libre
Impresionante... muy impresionante 😱😱😱

Democrito

unread,
Jun 19, 2026, 4:29:57 PM (8 days ago) Jun 19
to FPGAwars: explorando el lado libre
Carlos, lo he probado y no aparece imagen ni sonido. Se enciende el led6.

Saludos.

Carlos Venegas

unread,
Jun 19, 2026, 4:33:07 PM (8 days ago) Jun 19
to fpga-wars-explora...@googlegroups.com
Gracias Demócrito! no tengo la placa hasta mañana, espero no haberla liado y haber subido el bitstream bueno, mañana lo pruebo con estos bitsreams por si la hubiera liado, mil gracias!

El vie, 19 jun 2026 a las 22:29, Democrito (<spo...@gmail.com>) escribió:
Carlos, lo he probado y no aparece imagen ni sonido. Se enciende el led6.

Saludos.

--
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.

Carlos Venegas

unread,
Jun 19, 2026, 4:33:46 PM (8 days ago) Jun 19
to fpga-wars-explora...@googlegroups.com
has ejecutado los dos comandos verdad?

iceprog vectrex_fpga_top.bin
iceprog -o 0x080000 vectrex_bios.bin


Democrito

unread,
Jun 19, 2026, 4:50:17 PM (8 days ago) Jun 19
to FPGAwars: explorando el lado libre
Claro, uno detrás del otro y en el orden que lo pusiste.

Carlos Venegas

unread,
Jun 19, 2026, 5:12:36 PM (8 days ago) Jun 19
to fpga-wars-explora...@googlegroups.com
Los he subido en zip por si el drive los hubiera "tocado" si puedes probar te lo agradecería , si no mañna los pruebo yo en la placa

Carlos Venegas

unread,
Jun 19, 2026, 6:14:12 PM (8 days ago) Jun 19
to fpga-wars-explora...@googlegroups.com
He pensado que si te sigue sin ir prueba a desconectar el ps2 a ver si se ve algo en la pantalla, que como no lo he probado a ver si la he liado y se quedara bloqueado o algo.

Democrito

unread,
Jun 19, 2026, 6:40:33 PM (8 days ago) Jun 19
to FPGAwars: explorando el lado libre
Ha funcionado! He tomado el zip en el que sale una carpeta típica para saber que es un Mac, porque crea una subcarpeta con sus historias. Adjunto vídeo y mis felicitaciones!
SpaceX.mp4

Carlos Venegas

unread,
Jun 20, 2026, 1:02:17 AM (7 days ago) Jun 20
to fpga-wars-explora...@googlegroups.com
Muchas gracias! ¿al conectar el ps2 falla?

El sáb, 20 jun 2026 a las 0:40, Democrito (<spo...@gmail.com>) escribió:
Ha funcionado! He tomado el zip en el que sale una carpeta típica para saber que es un Mac, porque crea una subcarpeta con sus historias. Adjunto vídeo y mis felicitaciones!

--
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.

Democrito

unread,
Jun 20, 2026, 2:48:52 AM (7 days ago) Jun 20
to FPGAwars: explorando el lado libre
No, el teclado siempre está enchufado. Y sobre esto la única tecla que responde es la tecla 'A', que hace girar la nave sobre sí misma en sentido contrario mientras es pulsada esa tecla, y al soltar vuelve a girar en el otro sentido.

En la versión que funciona se enciende los led 6 y 7.

Carlos Venegas

unread,
Jun 20, 2026, 3:57:06 AM (7 days ago) Jun 20
to fpga-wars-explora...@googlegroups.com
Guay! debí subir mal el bitstream o igual drive,hoy o mañana ya lo podré probar con ps2 lo depuro que alguna cagada habrá porque para que me cupiera tuve que recortar el ps2 y creo que me pasé y sin probar demasiado que funciona la A XD

Mil gracias , al menos que se reproduzca ya es bastante, esta semana os pongo al día fuentes para el que quiera jugar con ello.

Tengo pensado sacar el motor vectorial a Icestudio, como un módulo independiente, no necesita nada de la shield y solo unas pocas brams (las que necesites para almacenar el número de vectores máximos que quieras gestionar en pantalla), y puede ser divertido hacer algunos ejemplos puro hardware con vectores, incluso alimentarlo con un adc y ver por ejemplo si podemos mostrar unas curvas de lissajous, ya veremos a ver.

Lo dicho muuuuchas gracias como siempre por probarlo.

Reply all
Reply to author
Forward
0 new messages