[AlhambraMedia] Space Invaders (EN/ES)

206 views
Skip to first unread message

charli va

unread,
Jan 26, 2026, 11:49:31 AM (13 days ago) Jan 26
to fpga-wars-explora...@googlegroups.com
    English below.   

Buenas! abro hilo para no contaminar el del Spectrum y el Amstrad. De momento solo os reporto pequeños avances, voy entendiendo los entresijos de la máquina y empieza la cosa a moverse.



Es muy curioso como está planteado el juego, ya os lo documentaré pero básicamente utiliza un par de interrupciones para ir generando la secuencia de juego y el pintado, ambas en paralelo asíncronamente.

Ahora mismo ya tengo solucionado la parte de pintado (Jesús una gran inspiración el linebuffer del Defender mil gracias), pero la interrupción que gestiona los marcianitos aun me está dando problemas, por eso como veis en el vídeo, la animación comienza pero se queda clavada (de echo pensaba de inicio que el juego se me había quedado congelado ya que venía depantallas congeladas tras el primer frame.

Pero... oh! sorpresa! asocié el insert coin al sw1 y resulta que no está muerta!! solo que digámoslo así , uno de los hilos, el que mueve a los malos , está  muerto.

En cualquier caso he pasado de una secuencia de frames rotos y llenos de artefactos de pixels basura congelados, a imagen limpia en la que ya empieza a moverse .

Por curiosear un poco otra cosa que me ha dado guerra y que ya está funcionando bien es el tema de la memoria. Con esta adaptación estoy testeando los nuevos módulos que he hecho de psram que son mucho más sencillos que los iniciales y están demostrando ser muy estables (los primeros me pudo la emoción y no los había depurado lo suficiente y al partir de otros códigos había construido un castillo de naipes que a la mínima se rompió).

Con este juego me está valiendo como prueba de fuego ya que otra cosa "curiosa" del Invaders es como gestiona las colisiones con los bichos, en lugar de llevar un mapa interno de memoria como sería habitual en juegos más modernos o incluso actuales, lo que hace es consultar la pantalla, ver si donde va el laser hay blanco o hay negro XD , punto que complica aun más las cosas porque tienen que competir por la psram la cpu y la vga .

Os seguiré contando la aventura.

Os recuerdo para los interesados que estoy recogiendo en un formulario a los interesados en conseguir una Shield de momento ya hay unos cuantos inscritos pero no suficientes para el batch, en cuanto termine algunas demos más empezaré a moverlo pero por si a alguien se le coló, dejo el enlace:

https://icestudio.io/buygroup-alhambramm

Hay gente que me preguntó sobre por qué pregunto por el precio. Con esto no queremos "ganar dinero", añadiremos un pequeño margen para financiar nuevas tarjetas y prototipos,  pero la idea es que podáis disfrutar de ella todos los que tengáis ganas de ello y consigamos un precio justo, ya tengo varios presupuestos con fabricación cerrada pero los precios varían muchísimo en función de la cantidad, si por ejemplo todo el mundo da un baremo X e imaginaos para conseguirlo hacen falta 100 tarjetas pues la idea es llegar alas 100 porque pidiendo menos de eso el precio se duplica. 

Era solo por aclarar que la idea y objetivo de tantearos es el poder conseguir encontrar un precio que se ajuste a lo que la gente interesada pueda pagar cómodamente si fuera posible.

Un gran abrazo!

    English      

Hi! I’m starting a separate thread so I don’t clutter the Spectrum and Amstrad one. For now I’m just reporting small progress — I’m starting to understand the ins and outs of the machine and things are beginning to move.

https://www.youtube.com/shorts/XpRSEr-jYdE

It’s really interesting how the game is set up. I’ll document it for you later, but basically it uses a couple of interrupts to generate the gameplay sequence and the drawing, both running asynchronously in parallel.

Right now I’ve already solved the rendering part (Jesús, a huge inspiration — the Defender line buffer, thank you so much), but the interrupt that manages the little aliens is still giving me problems. That’s why, as you can see in the video, the animation starts but then gets stuck (in fact, at first I thought the game had frozen, because I was getting frozen screens right after the first frame).

But… oh! surprise! I mapped “insert coin” to SW1 and it turns out it’s not dead!! It’s just that, let’s put it this way, one of the threads — the one that moves the bad guys — is dead.

In any case, I’ve gone from a broken frame sequence full of artifacts and frozen garbage pixels to a clean image where things are starting to move.

Just out of curiosity, another thing that gave me a hard time — and that’s now working properly — is memory. With this port I’m testing the new PSRAM modules I’ve made, which are much simpler than the initial ones and are proving to be very stable (with the first ones I got carried away and hadn’t debugged them enough, and by building on other code I ended up with a house of cards that fell apart at the slightest issue).

This game is serving as a real trial by fire, because another “curious” thing about Invaders is how it handles collisions with the enemies. Instead of keeping an internal memory map like would be typical in more modern games (even today), what it does is read the screen and check whether there’s white or black where the laser is going XD — which makes things even more complicated because the CPU and the VGA have to compete for the PSRAM.

I’ll keep telling you about the adventure.

And a reminder for anyone interested: I’m collecting names in a form for those who want to get a Shield. For now there are already quite a few people signed up, but not enough for a batch. As soon as I finish a few more demos I’ll start moving things forward, but in case someone missed it, here’s the link:

https://icestudio.io/buygroup-alhambramm

Some people asked me why I’m asking about the price. We don’t want to “make money” from this — we’ll add a small margin to fund new boards and prototypes — but the idea is that everyone who wants one can enjoy it and that we can get a fair price. I already have several quotes with manufacturing locked in, but prices vary a lot depending on quantity. For example, if everyone gives a target price range X and, imagine, reaching that requires 100 boards, then the idea is to reach 100 — because ordering fewer than that doubles the price.

I just wanted to clarify that the idea and goal of asking you all is to find a price point that fits what interested people can comfortably pay, if possible.

Big hug!

charli va

unread,
Jan 27, 2026, 12:34:07 PM (12 days ago) Jan 27
to fpga-wars-explora...@googlegroups.com
Progress!!! game working and sound!!!! , the sound is very bad recorded,  i don't understand why, but the phone filter the space invaders FX!! 


When I have improved I'm trying to record with a camera.


charli va

unread,
Jan 28, 2026, 4:56:28 PM (11 days ago) Jan 28
to fpga-wars-explora...@googlegroups.com
    English below.   

Hola a todos! tengo ya casi cerrado el desarrollo y la verdad que me he venido arriba, este tipo de trabajos como ya hemos comentado son un tesoro de aprendizaje, estoy muy contento con el viaje.

Lo primero y más importante el vídeo de progreso, si podéis verlo hasta el final porque va con  "EXTRAS" :)

Captura de pantalla 2026-01-28 a las 22.39.47.png


Por otro lado os dejo el space_invaders_v1.bin tiene metido el soporte PS2 pero no lo he podido probar, va virgen así que es muy probable que no funcione, pero si me confirmáis fantástico y si no para probarlo podéis usar el sw1 para insert coin y en el segundo click hará player1 de este modo entra en el juego al menos para oir el sonido.

El teclado lo he mapeado:
  • 1, 2 -> para activar 1 o 2 players
  • Enter -> Insert coin
  • Flecha izquierda y Flecha Derecha -> movimiento
  • Espacio -> Disparo

Poneros cascos para poder escuchar el sonido , solo se activa cuando  jugáis, en demo el invaders original no tiene sonido.

Si alguno de los 6 samurais que tenéis la shield lo podéis probar y me dais feedback os lo agradecería! el tema del teclado estoy en vias de solucionarlo y además de un modo que creo que os va a "molar", pero me quedan algunos días para tenerlo cerrado de momento si los que tenéis un teclado compatible me podéis confirmar que funciona os lo agradecería.

Y ahora batallitas, ya para el que le interese.

Estoy aprovechando el desarrollo para testear cosas de la placa, en concreto he mejorado y simplificado los módulos de psram, los que había hecho eran muy inestables y en cuanto les sometía a trabajo intenso, se bloqueaba, daba datos erróneos.... un desastre, por ejemplo el DOOM lo tengo aparcado por este tema y en breve lo retomaré gracias a lo que he pulido en SpaceInvaders.

Los módulos de psram los he simplificado y reducido voy a ir uno a uno puliéndolo y poniéndolos a prueba, en este caso solo se está usando el modo "word" es decir se escribe y se lee una palabra de 32bits de una vez, posiblemente usando los siguientes módulos que trabajaré en modo burst o con CDC para subirle la frecuencia a la PSRAM podremos obtener mejores rendimientos pero de momento el modulito se ha portado como un auténtico campeón.

Una vez superados los escollos de la adaptación y algún bug que casi me vuelve loco... por comentar uno muy divertido ha sido con el sonido, según arrancaba sonaba un zumbido tipo teléfono a toda pastilla todo fatal, mil cambios en el sigma delta , pruebas por doquier, nada, imposible, ni un avance.... de repente me da por iniciar una partida y.... todo se oye bien XD WTF!!!  no entendía nada, solo había sonidos horribles en el modo demo del juego, si jugabas todo perfecto..... me vuelvo loco, esto es la CPU que voy desalineado alguna condiciónd e carrera, estoy pisando datos, , ....... ya cuando no tenía opciones que explorar, me da por ir a buscar el código fuente del juego que gracias a la comunidad lo han desensamblado en varios sitios, miro el código......mierd....en modo demo no hay sonido.... la máquina tiene un registro para literalmente "apagar el altavoz" y cuando está en modo demo, se ahorra ciclos de sonido para hacer animacioncillas graciosas........ XD

En fin, aventuras para contar en la documentación, ahora bien, en el vídeo veréis varias cosas:

1) Normal - SpaceInvaders lo plantearon para literalmente girar el monitor y aprovechar el largo, así que de forma natural en nuestros monitores se verá tumbado, va super fluido, en el vídeo os he dejado un rato el modo demo para que veáis la fluidez, esto es porque no tengo teclado ps2 ahora mismo y no he podido probar en partida como se mueve, por eso veréis que en el resto de pantallas la nave está quieta (no tengo teclado ni mando ni posibilidad de botones para moverla XD).

2) He activado la partida aunque la nave esté quieta para que oyerais el sonido pero ha sido en vano porque como los sonidos se generan con ondas cuadradas muy secas, los móviles de hoy en día lo filtran como si fuera ruido XD, en cuanto pueda haré un pequeño amplificador con un buzzer a ver si así si que lo puedo mandar. En cualquier caso el sonido no estoy especialmente orgulloso, me ha motivado mucho mejorarlo a medio plazo, ando con temas de generación de sonido entre manos y cuando avance eso por otro lado puede que lo intente aplicar aquí, me ha motivado mucho replicar el chip de sonido original de esta máquina, es muy curioso y educativo, ya os contaré.  Por el momento aunque muy sucio "suena".

3) Podréis utilizar sw1 y sw2 (los botones de la Alhambra) con sw1 la primera pulsación mete moneda y la segunda comienza la partida (Esto si no tenéis ps2). con SW2 cambiais el modo de vídeo.

4) Los modos de vídeo, motivado por la propuesta de Jesús de ponerlo en horizontal, me he venido arriba y he querido exprimir la PSRAM en modo word a ver donde daba de si, y de un modo me ha ido llevando a otro cada vez intentando conseguir un poquito más. Como he hecho en otros trabajos como la conversión de Jesús de Mandelbrot intento no tocar las cosas originales. Por ejemplo hay emuladores software que tocan cosas del core de space invaders para ponerlo en horizontal, igual que el sonido, me costó mucho encontrar un vídeo con sonido original. Al final a mi tunear las cosas para que parezcan "mejores" no me interesa mucho si no hay detrás un interés por algo concreto. Si space invaderes sonaba a lata, pues tiene que sonar a lata XD

5) En los modos de vídeo podréis ver:

      - Modo horizontal, lo que hacemos es rotar el framebuffer original a otro framebuffer (los dos en psram, manejar esto te sientes...wow...) porque claro pensad que al estar tumbado  y la vga llevar su ritmo no podemos convertir al vuelo, hay que tener "una copia rotada", el problema... que la psram es muy lenta y tenemos ahora tres elementos compitiendo por ella, el 8080 que quiere su trozo para poner sus marcinitos( escribe y lee porque mira los estados de los disparos de los propios pixels) , nuestro rotador que necesita los pixels para rotarlos (lee de un buffer y escribe en otro) y luego tenemos un line buffer basado en la idea de defender de Jesús que coge del rotado y lo pinta en la vga... todo un precioso baile :)

En este modo un detalle es que el escalado se hace por Bresenham, esto ya ha sido por rizar el rizo, de cara a la documentación todo esto es un gran ejemplo de lo que una FPGA puede hacer, multitarea real, el Space Invaders no cabe en 480 de alto le faltan unas pocas líneas pero no cabe, soluciones sencillas habría sido literalmente quitar alguna o subir de resolución. Subir de resolución me rompía los esquemas de timming porque la PSRAM ya va muy justa y eso sería más ancho de banda, a parte de que la resolución ya no encaja tan bien. La opción de quitar lineas me daba pena, nos habríamos quedado o sin scores o sin la linea de créditos y vidas... con Bresenham lo que hago es interpolar por lo que ya da igual que no se múltiplo la resolución, veréis la imagen un poco más achatada pero muy razonable.

-  Modo horizontal con fondo procedural, básicamente he querido testear el meter un proceso hardware que calcula el fondo y hace overlay con el juego, esto si os mola hacemos concurso de fondos en cuanto os pase el código xD, si os digo la verdad la motivación de esto ha sido probar el modo de 144 colores de Jesús.. buaaah todo un éxito, he flipado, con un DAC de 6 bits me ha parecido increíble la riqueza de color. Esto en el video no sale pero he implementado un par de fondos más, está divertido.

- Modo imagen, es el que veréis super soso, con tres bandas de color, banda roja, banda azul en el área de juego y banda verde en el lateral derecho.El fondo (las bandas) es una imagen, este modo va más lento, veréis que el juego le pesa, esto es porque ya rizamos el rizo y la psram dice ... ya no puedo mas (y en burst por cáculos teóricos tampoco daría), esto será una prueba cuando tenga cerrado el módulo con CDC. y podamos probar si nos dan los relojes la memoria a más velocidad, será una buena prueba. El tema es que en este caso añadimos un buffer más en la competición, el de la imagen.

en este modo tenemos el buffer del juego, el buffer rotado, el buffer de la imagen y el buffer de mezcla (rotado+imagen) que pinta el line-buffer a pantalla. En cuulquier caso, es casi jugable y permite validar que la psram es más que valiosa y efectiva y como os digo si conseguimos que funcione bien el modo de más velocidad y el diseño lo permite ahí podríamos exprimirla aún más. 

En cualquier caso como os digo super contento con el resultado, tengo que mejorar algunas cosas , como el tema de la imagen que  tengo algunos problemas en la carga, además de dejaros algo más bonito que tres bandas de color y el sonido que no sé si me le daré una pequeña vuelta, el tema es que como esto me volvió medio tarumba lo preferí dejar aparcado ya con los resultados obtenidos.

Y por otro lado ando pensando en una posible adaptación para la Alhambra sin la shield, más reducido con menos cosas pero funcional y de cara a aprendizaje muy útil o eso me lo parece a mi, la idea es tener una versión Icestudio en breve, en este punto si os interesa decídmelo para tener en mente o dejarlo aparcado más o menos en el punto que lo tengo.

¡Buenas noches!


    English  

Hi everyone! I’ve almost wrapped up the development and, honestly, I got a bit carried away. This kind of work, as we’ve already discussed, is a treasure trove for learning — I’m really happy with the journey.

First and most important: the progress video. If you can, please watch it all the way to the end because it comes with “EXTRAS” :)

Screenshot 2026-01-28 at 22.39.47.png

https://www.youtube.com/shorts/pXO2FJ8BNLw

On the other hand, I’m leaving you space_invaders_v1.bin. It includes PS/2 support but I haven’t been able to test it — it’s “untouched,” so there’s a good chance it won’t work. But if you can confirm it does, that’d be awesome. If it doesn’t, you can still test it using SW1: the first press inserts a coin, and the second press starts Player 1. That way you can at least get into the game to hear the sound.

I mapped the keyboard like this:

  • 1, 2 -> enable 1 or 2 players

  • Enter -> Insert coin

  • Left Arrow / Right Arrow -> movement

  • Space -> Fire

Put on headphones so you can hear the audio — it only activates when you’re actually playing; in demo mode the original Invaders has no sound.

If any of the 6 samurais who have the shield can try it and give me feedback, I’d really appreciate it! I’m working on fixing the keyboard situation, and in a way I think you’re going to really like, but I still need a few days to have it fully closed. For now, if those of you with a compatible keyboard can confirm it works, I’d be grateful.

And now, some war stories — for whoever’s interested.

I’m using this development to test board-related things. Specifically, I improved and simplified the PSRAM modules. The ones I’d done before were very unstable and as soon as I put them under heavy load they’d lock up, return wrong data… a disaster. For example, I put DOOM on hold because of this, and I’ll pick it back up soon thanks to what I’ve refined in Space Invaders.

I simplified and reduced the PSRAM modules and I’m going to polish and stress-test them one by one. In this case we’re only using “word” mode, meaning we write and read one 32-bit word at a time. Possibly, using the next modules I’ll work on — in burst mode or with CDC to raise the PSRAM frequency — we’ll be able to get better performance, but for now this little module has behaved like an absolute champion.

Once I got past the adaptation hurdles and a few bugs that almost drove me insane… I’ll mention one really funny one: the sound. As soon as it booted there was a super loud phone-like buzzing — everything was awful. A thousand changes to the sigma-delta, tests everywhere, nothing, impossible, not a single improvement… and suddenly I decided to start a game and… everything sounded fine XD WTF!!! I couldn’t understand it: only horrible sounds in demo mode, but if you played everything was perfect… I’m losing my mind: “this has to be the CPU, I’m misaligned, some race condition, I’m overwriting data…” and when I had nothing left to explore, I went to look for the game source code (the community has disassembled it in several places). I check the code… damn… in demo mode there is no sound… the machine has a register to literally “turn off the speaker,” and when it’s in demo it saves sound cycles to do funny little animations… XD

Anyway, adventures to tell in the documentation. Now, in the video you’ll see several things:

  1. Normal — Space Invaders was designed so you’d literally rotate the monitor and take advantage of the vertical length, so naturally on our monitors it will appear sideways. It runs super smoothly; in the video I left demo mode running for a while so you can see how fluid it is. This is because I don’t have a PS/2 keyboard right now and I haven’t been able to test movement in-game; that’s why in the other screens you’ll see the ship staying still (I have no keyboard, controller, or button option to move it XD).

  2. I enabled gameplay even though the ship stays still so you could hear the sound, but it was useless because the sounds are generated with very harsh square waves, and modern phones filter them as if they were noise XD. As soon as I can, I’ll make a small amplifier with a buzzer and see if that can be recorded properly. In any case, I’m not especially proud of the sound — it’s motivated me to improve it in the mid-term. I’m working on sound generation stuff, and when that advances elsewhere I might try to apply it here. I’m very motivated to replicate the original sound chip of this machine; it’s really curious and educational. I’ll tell you about it later. For now, even if it’s very dirty, it “sounds.”

  3. You can use SW1 and SW2 (the Alhambra buttons): with SW1, the first press inserts a coin and the second starts the game (if you don’t have PS/2). With SW2 you change video mode.

  4. Video modes — motivated by Jesús’s suggestion to run it horizontally, I got carried away and wanted to squeeze PSRAM in word mode to see how far it could go, and one mode led me into another, each time trying to get a little more. As I’ve done in other works like Jesús’s Mandelbrot conversion, I try not to touch the original things. For example, there are software emulators that modify the Space Invaders core to make it horizontal, and the same with sound — it was hard to find a video with original sound. In the end, tuning things so they look “better” doesn’t interest me much unless there’s a concrete reason behind it. If Space Invaders sounded tinny, then it has to sound tinny XD

  5. In the video modes you’ll see:

  • Horizontal mode: what we do is rotate the original framebuffer into another framebuffer (both in PSRAM — managing this makes you feel like… wow…) because if it’s sideways and VGA runs at its own pace, we can’t convert on the fly; we need “a rotated copy.” The problem… PSRAM is very slow and now we have three things competing for it: the 8080, which wants its chunk to draw the little aliens (it writes and reads because it checks shot states from the pixel states), our rotator that needs pixels to rotate them (reads one buffer and writes another), and then a line buffer (based on Jesús’s “defender” idea) that takes from the rotated buffer and paints it to VGA… a beautiful dance :)

    In this mode, one detail is that scaling is done with Bresenham — that’s me going the extra mile. Documentation-wise it’s a great example of what an FPGA can do: real multitasking. Space Invaders doesn’t fit into 480 lines of height — it’s missing a few lines — but it doesn’t fit. Simple solutions would be to literally remove some lines or increase resolution. Increasing resolution would break my timing assumptions because PSRAM is already very tight and that would require more bandwidth, plus the resolution wouldn’t fit as nicely. Removing lines felt bad — we would have ended up either without scores or without the credits/lives line… With Bresenham, I interpolate, so it doesn’t matter if the resolution isn’t a clean multiple. You’ll see the image a bit more squashed, but it’s very reasonable.

  • Horizontal mode with procedural background: basically I wanted to test adding a hardware process that computes the background and overlays it with the game. If you like it, we can run a “background contest” once I share the code xD. Honestly the motivation was to try Jesús’s 144-color mode… wow, total success — I was blown away. With a 6-bit DAC, the color richness is incredible. This doesn’t show up in the video, but I implemented a couple more backgrounds too; it’s fun.

  • Image mode: this is the super bland one you’ll see, with three color bands: red band, blue band in the play area, and green band on the right side. The background (the bands) is an image. This mode is slower — you’ll see the game struggling — because we’re really pushing it and PSRAM is like… I can’t anymore (and in burst mode, by theoretical calculations, it wouldn’t be enough either). This will be a test once I finish the CDC module and we can try whether higher memory clocks are possible — it’ll be a good benchmark. The key is that here we add one more competing buffer: the image buffer.

    In this mode we have the game buffer, the rotated buffer, the image buffer, and the mixing buffer (rotated + image) that the line-buffer draws to the screen. In any case it’s almost playable and it helps validate that PSRAM is more than valuable and effective. And like I said, if we manage to get the higher-speed mode working and the design allows it, we could squeeze it even more.

Anyway, as I said, I’m super happy with the result. I still have to improve a few things — like the image loading (I have some issues there and I want to leave you something nicer than three color bands) — and I’m not sure if I’ll revisit the sound a bit. The thing is, since this already made me half-crazy, I preferred to park it for now with the results already achieved.


And on the other hand, I’ve been thinking about a possible adaptation for the Alhambra without the shield — a more compact version with fewer features, but functional and, from a learning perspective, very useful (or at least that’s how it seems to me). The idea is to have an Icestudio version soon. At this point, if you’re interested, let me know so I can keep it in mind; otherwise I can leave it more or less parked around the point I currently have it.


Good night!!

space_invaders_v1.bin

Democrito

unread,
Jan 28, 2026, 7:14:54 PM (11 days ago) Jan 28
to FPGAwars: explorando el lado libre
Hola Carlos!

Muy bueno! te dejo tres muestras y la última es psicodélica! jejeje




El teclado no me ha respondido, pero dando a SW2 de las Alhambra II FPGA he podido ver las demos.

Un abrazo!

Democrito

unread,
Jan 28, 2026, 7:24:06 PM (11 days ago) Jan 28
to FPGAwars: explorando el lado libre
Se me olvidó poner el primero de todos. Y como electrónicos e informáticos contamos desde 0, este es el que viene por defecto al arrancar. Luego apretando SW2 salen los demás.

Space Invaders 0

charli va

unread,
Jan 28, 2026, 7:25:01 PM (11 days ago) Jan 28
to fpga-wars-explora...@googlegroups.com
Mil gracias por probarlo! si puedes mañana pásame una captura rn modo normal.

Me ha llamado la atención las lineas verticales, eso es un efecto por desalineación  de la psram y el linebuffer me dio por saco en el procedural pero no m ehabían aparecido en el rotado normal, mañana jugaré con mi contraste para afinarlo. porque no me ha parecido verlo y a ti se te ven claramente y también me he fijado que te salen en el resto y luego he visto que el sonido no te va coordinado, ¡que curioso!  mañana investigo que hoy ya iba a plegar.

Infinitas gracias por las pruebas!


--
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/5ff621d7-b786-4e13-9dd2-8e8c906383d6n%40googlegroups.com.

Democrito

unread,
Jan 28, 2026, 7:44:48 PM (11 days ago) Jan 28
to FPGAwars: explorando el lado libre
Modo normal (es lo mismo, sólo que grabado otra vez)

no se oye nada (el fondo sí, quizás mi respiración porque es de madrugada), el teclado no responde en ningún modo.

El monitor es una TV normal y corriente de marca LG.

charli va

unread,
Jan 29, 2026, 2:51:09 AM (10 days ago) Jan 29
to fpga-wars-explora...@googlegroups.com
Muchísimas gracias Demócrito! y perdona que te escribí y no vi tu segundo mensaje. Gracias como siempre por todo.

De echo tus pruebas son muy interesantes en mi pantalla he tenido que forzar contrastes y brillos pra ver las lineas verticales en el área de juego en las versiones rotadas, voy a investigarlo e fondo.

Sobre el PS2 imaginé que no funcionaría sin probarlo cualquier tontería, hoy creo que le pondré remedio finalmente y ya os lo mando testeado.

Muchas gracias!

Jesus Arias

unread,
Jan 29, 2026, 3:45:35 AM (10 days ago) Jan 29
to FPGAwars: explorando el lado libre
Hola Carlos,
Impresionantes los "extras", sobre todo la rotación con escalado.
Por lo demás:
- Yo no he visto esas líneas verticales que tienen los videos de Demócrito. Parece que salen cada 8 píxeles y podrían ser glitches combinacionales que las pantallas más viejas filtran y las nuevas no (A mi me pasó algo parecido con el Defender de la Simretro y al final lo arreglé poniendo un registro en la salida de video) Además en la versión sin rotar no aparecen.
- El sonido está mal. Se oye muy bajo y parece que además sale entrecortado y demasiado lento. ¿Estás usando archivos con  muestras o reconstruyendo la analógica de la máquina?
- Y el teclado no funciona, aunque no pudiendo probarlo lo raro sería que saliese bien a la primera.
En cualquier caso lo que nos presentas ya es un logro, que en realidad lo que nos gusta no es exterminar los marcianitos sino fisgar cómo están echos por dentro ;) 
Que tengas un buen día!

charli va

unread,
Jan 29, 2026, 9:22:02 AM (10 days ago) Jan 29
to fpga-wars-explora...@googlegroups.com
Gracias Jesús por los comentarios!, para mi todo un placer compartir esto con vosotros y totalmente de acuerdo contigo la pasión por esto es mirar al pasado para aprender y avanzar hacia el futuro.

Al tener pocos recursos son máquinas llenas de ingenio, ya os documentaré en los próximos días todo lo que he aprendido, hay cosas graciosas como que tiene un puerto para detectar si le "pegaban un golpe a la máquina" y en ese caso pararla solicitando mantenimiento o bloquearla,a un no lo he activado pero me imagino que igual entra en modo halt o reset, tampoco creo que nada especial pero me ha hecho gracia que tuvieran esto en cuenta. (recuerdo en mis tiempos mozos en los recreativos siempre había alguien que se sabía algún truco de dar un golpe aquí o ahí y se activaba partida gratis en alguna máquina)

Lo del sonido como os decía es lo que menos orgulloso estoy, de echo no quería meterme con ello pero ya me he levantado con ideas y a lo mejor le pego una vuelta.  Estuve mirando emuladores y en general lo que hacen es tener samples pregrabados bonitos y ya está, yo he intentado  replicar los sonidos por síntesis , pero no me ha salido lo bien que me hubiera gustado (he intentado utilizar cosas demasiado básicas y todo con mucha onda cuadrada, además como tuve el problema del sonido en modo demo eso me desvirtuó el proceso y llené todo de filtros pensando que eran problemas de la generación de sonido y el DAC....) hoy igual liquido la parte del sonido y la intento remontar, me parecería bonito poder replicar el chip original que es muy curioso para la época me parece una locura.

Aquí teneis un artículo muy bonito sobre el chip https://www.righto.com/2017/04/reverse-engineering-76477-space.html

Entre hoy y mañana intento dejaroslo enviado para que podáis "jugar" con el código.

¡Un abrazo!

charli va

unread,
Jan 29, 2026, 9:59:18 AM (10 days ago) Jan 29
to fpga-wars-explora...@googlegroups.com
Jesús te debo unas cervezas y unas bravas por lo menos, me iba a liar la manta a la cabeza porque estaba convencido que era desalineación con psaram en el último bit de cada linea del sprite (8bits)y resulta que con solo meter  los registros a la salida se me ha estabilizado la imagen perfecta y sin lineas, finalmente ¡era un glitch!. La pantalla de Demócrito es prueba de fuego, voy a ver si puedo solucionar lo del PS2 que tengo un plan que llevo haciendo estos días y si lo termino hoy os lo mando también y vemos si se ha solucionado.

Un gran abrazo!

charli va

unread,
Jan 29, 2026, 6:05:08 PM (10 days ago) Jan 29
to fpga-wars-explora...@googlegroups.com
Buenas! os mando actualización por si me podéis confirmar como va, os mando dos .bin, los tenéis que grabar así:

iceprog  si_v09.bin
iceprog -o 0x100000 si_background.bin

Teóricamente Demócrito dejas de ver lineas los demás veréis imagen mucho más estable, si sigues viendo líneas si me mandas un vídeo o foto te lo agradecería!

Ya tenéis PS2,  me he conseguido ya apañar y he podido probarlo, lo único os he remapeado :

-izquierda Z
-derecha X
-disparo Space
-coin Enter
-Start Player 1 , 1


De los .bin, Uno es el core y el otro una imagen en raw a 320x240 (si usamos fondo a 640x480 el juego en ese modo se vuelve muy lento, así aunque lento más o menos jugable) ya enseñaré a quien no sepa como generar imágenes, no me he complicado la vida, la veréis pixelada porque monté una imagen rápido con los laterales de una tienda de arcades a demasiada resolución XD pero bueno lo importante es comprobar que la imagen es estable y podemos mezclar tres buffers dede psram de forma bastante decente., lo de bajar la resolución a 320x240 es por darle algo de aire a la psram, pero a 640x480 funciona igual de bien solo que so la sensación del jeugo es lenta. En este modo que va más apretado tiene algún glitch e vez en cuanto (alguna zona que vibra) y en la parte superior derecha  se me cuela alguna lectura del framebuffer del prefech de la primera linea. Me gustaría arreglarlo pero eso os lo voy pasando así.

Por curiosidad estoy muy contento con esto, intermamente he usado BAC como hace Jesús en Defender en parte para la PSRAM lo uso ahoramismo solo para inicializarla pero me ha sido muy útil en el debug y de echo por eso lo he dejado de cara a futuras psrams tener un elemnto flexible de fácil configuración.

Y ahora también hemetido BAC para cargar la imagen desde la flash a PSRAM, esto del código de Defender de la Flash casi integro con alguna mejora pero vamos inspiracional total.

Y esto me pone aún más contento por al final BAC nació aquí y le veo un recorrido brutal para estas pequeñas "escaramuzas".

En cuanto al sonido, fuí muy alegre XD miré varios códigos, (mister, mame....) y como usan punto fijo o flotante o se apoyan en micros.... leí por encima la arquitectura y ....me equivoqué.

Pensé que se basaba todo en el sn76477 y resulta que eso solo esw para el sonido del ovni (esto me ha parecido super japonés, podrían haber puesto cualquier "mierda" pero no, se buscaron un chip que generaba sonidos chulos solo para el ovni, la estrella del juego XD). El resto de sonidos son todo componentes discretos, ya os pasaré referencias pero me ha parecido muy divertido y super educativo incluso montar alguno de ellos físicamente y poder compararlo. De momento hoy solo he podido investigar y al menos tener las cosas claras y como me gustan mucho los temas musicales voy a intentar implementarlos de forma discreta y a ver que sale, aunque me temo que tendré que optar por una síntesis "recortada", andaba preparando para larva una demo de síntesis musical y ando recortándola porque no da de si, un tema muy pesado, pero tengo más o menos claro como voy a hacerlo y con una versión reduccionista se pueden creo que scar sonidos bastante decentes y que se aproximen a los reales.

mañana me lio con ello y ya con eso creo que estaría todo para pasaros una primera versión de código.

¡Un abrazo!
si_v09.bin
si_background.bin

Jesus Arias

unread,
Jan 30, 2026, 3:33:10 AM (9 days ago) Jan 30
to FPGAwars: explorando el lado libre
Hola, muy adecuado en nuevo fondo.
Ahora funciona el teclado y se puede jugar perfectamente. Respecto al sonido ese chip no hace sino generar una onda cuadrada con su frecuencia modulada por una onda triangular lenta. Vamos, lo que sería una simple sirena.
Otros circuitos usan el 555 y también van a generar ondas rectangulares (aunque con filtrado pasa-bajos).
Hay un generador de ruido que es un LFSR con un reloj de unos 8 kHz, y apostaría que con 15 bits en el registro de desplazamiento.
Y luego está el lío de los operacionales Norton. Adjunto una simulación de un trocito del esquemático donde vemos que también hay otra sirena, pero esta con una onda triangular en la salida.

Muy buenos días
Invaders_SIM1_sch.pdf

Democrito

unread,
Jan 30, 2026, 4:14:50 AM (9 days ago) Jan 30
to FPGAwars: explorando el lado libre
Carlos, funciona todo como has descrito en tu correo. Todo va bien, teclado, pantalla y sonido.

Si ves una línea verde de arriba a abajo de ancho de un píxel casi tocando a la izquierda, ese fallo es de la TV, que ya lo tiene desde hace mucho tiempo (me refiero a los vídeos de abajo). 

Dejo muestras de las cuatro pantallas.




Saludos!

charli va

unread,
Jan 30, 2026, 10:36:57 AM (9 days ago) Jan 30
to fpga-wars-explora...@googlegroups.com
Muchísimas gracias a los dos!

Jesús el análisis como siempre fantástico y me has dado una pista que me ha llevado a la madriguera del conejo:


Esta persona, en plan épico, se ha recopilado la electrónica de cada uno de los sonidos con sus esquemáticos un trabajazo de agradecer. Viéndolos una vez más me maravilla la simpleza sofisticada de aquellos años.

Llevo ya un rato con ello y creo que va a salir algo chulo, llevo tiempo avanzando un sintetizador a ratos y en parte tengo hecho bastantes cosas que voy a poder usar para replicar relativamente fiel (hablando de forma discreta) estos esquemáticos. El chip de la sirena intentaré simular un sonido similar y más o menos inventármelo pero que suene a sirena marciana, porque solo para esto no tiene sentido complicarse la vida, el resto los he visto bastante asequibles,  te cojo el cable e intentaré hacer algunas simulaciones para enfocar el tiro.

La gracia también va a ser que quede pequeño, en el sintetizador que ando haciendo la lógica se dispara entre multiplicaciones y demás y no cabría con el juego , la falta de dsps se echa de menos  para estas cosas y creo que simulaciones muy realistas van a ser métodos numéricos demasiado pesados para nuestra pequeña ice40, pero yo creo que se puede hacer con técnicas más simplistas pero efectivas.

Ya tengo cosas andando , el tema del sonido os lo voy a mandar en un rato proque creo que lo voy a avanzar bien y de eso tengo hecha hasta documentación que ya fui avanzando para el sinte así le podéis echar un ojo e incluso trastearlos por si se pueden mejorar.

Y Demócrito mil gracias por las pruebas, se que llevan tiempo y te agradezco mucho el feedback, gracias a tus pruebas se ha resuelto el tema de las bandas que nos va a valer para muchos otros desarrollos.

El sonido actual es una patata creo que el nuevo va a ir genial. 

Os cuento en un rato y la parte el sonido os la mando esta tarde, el invaders quería darle una pulida al código y una mínima docu y os lo mando a muy tardar mañana.

Un abrazo amigos!



charli va

unread,
Jan 30, 2026, 2:13:13 PM (9 days ago) Jan 30
to fpga-wars-explora...@googlegroups.com
¡Buenas! está llendo muy bien el tema del sonido va a haber un salto cualitativo.

Antes estaba haciendo todo generadores de onda cuadrado lo que hacía que todo quedara demasiado áspero y ruidoso, con las réplicas de electrónica que ha preparado Jesús y alguna consulta con la página que os he pasado  y algo de oído para afinar por intuición está quedando creo que algo "bastante potable".

Lo que está dando la maquinita de sí, esta parte no me la esperaba XD pero bueno ahora mismo el reto que tengo es que quepa, con la síntesis de sonido se me han ido al carajo el consumo de LCs pero lo tengo ya más o menos encarrilado, no va a quedar lo bien que pudiera sonar si tuviéramos una fpga más grande pero me motiva más que funcione aquí y tengamos un equilibrio de calidad y que quepa, en cuanto me consiga liquidar unos multiplicadores que me han desmadrado el tema creo que lo tendré.

Os cuento luego, pero os escribía por daros las gracias por los aportes, vitales!

charli va

unread,
Jan 30, 2026, 3:31:30 PM (9 days ago) Jan 30
to fpga-wars-explora...@googlegroups.com
Lo primero disculpad la metedura la pata, por el "yendo" al leer el mail me han sangrado las retinas XD cosa de la emoción.

Segundo, os paso test de sonido, si lo flasheais, el bin si_audio_test.bin podréis escuchar todos los sonidos del juego, que son (van pasando en secuencia, es como una demo del catálogo XD): 

LED

Efecto

Duración

Pausa

0

Trigger (láser)

2 seg

2 seg

1

Invader Hit

0.5 seg

2 seg

2

UFO Hit

0.6 seg

2 seg

3

UFO (sirena)

3 seg

2 seg

4

Flash (explosión)

2 seg

2 seg

5

Extended Play

1.5 seg

2 seg

6

Step 1→2→3→4

2 seg

2 seg

7

(marcador loop)

1 seg

2 seg


Creo que han quedado decentes, los nombres son los que ponía en la página que os pasé que en algún documento técnico y circuito  de la placa aparecen así nombrados.

Y por otro lado os paso el juego ya con los sonidos metidos, creo que ha quedado relativamente fiel y la parte de "emular" la parte analógica me ha parecido muy interesante sobre todo con pocos recursos, que ha sido un reto porque con el sintetizador software que tengo hecho en seguida cuadré sonidos pero claro con multiplicaciones de 32bits, flotantes,etc,etc. y hacerlo hardware me ha gustado mucho y me ha parecido todo un reto a mejorar y explorar.

Ahora mismo en síntesis  estamos con la FPGA llena:


Captura de pantalla 2026-01-30 a las 21.14.33.png


Pero la verdad que aunque estoy seguro que se podrá rascar y optimizar, porque tengo aun que limpiar código y habrá cosas poco optimizadas o sobradas (por ejemplo tengo dos bacs metidos, ya os contaré por qué, el tema del BAC nos va a dar para largo pero el meterlo como una micro CPU dentro de nuestros diseños es una gran idea de Jesús en su Defender y que le vamos a sacar jugo).

También van los 4 modos de vídeo que como veis en las demos no suponen reset sino que cambian en tiempo real, solo se bifurca el flujo, realmente están todos funcionando en paralelo XD, está el DAC sigma delta, toda la parte de debug que aun no he limpiado y tengo por ahí un montón de señales, leds etc , teclado ps2, la vga, el motor de síntesis de audio, el core del 8080 con su coprocesador para shiftear....

En un momento dado si se quisiera meter algo más, se podrían quitar cosas, y habría espacio de sobra (con quitar modos de vídeo ya baja drásticamente).

Los relojes también me ha costado mantenerlos en orden pero lo he conseguido:

Info: Max frequency for clock 'sys0.kcclk_$glb_clk': 144.76 MHz (PASS at 8.00 MHz)
Info: Max frequency for clock        'clk_$glb_clk': 35.64 MHz (PASS at 8.00 MHz)

Superamos los 25Mhz que necesitamos para tener estabilidad con la vga en todo el circuito.

El background es el del otro día y como lo grabamos a partir del primer mega si lo habéis probado ayer estará ahí seguro sin pisar a no ser que hayáis usado la flash para algo gordo.

Pensé que hoy no me daría tiempo a integrar el audio en el juego pero en su momento plantee un  módulo para el sonido bien empaquetado y aunque he cambiado la lógica he mantenido la misma interfaz así que ha sido sustituir y listo.

Lo dicho espero que lo disfrutéis, en el finde os intento mandar sin falta el código y la documentación, al menos algo mínimo para que lo podáis exprimir.

Un gran abrazo!

si_audio_test.bin
space_invaders_v1_0.bin

Democrito

unread,
Jan 30, 2026, 5:19:29 PM (9 days ago) Jan 30
to FPGAwars: explorando el lado libre
Carlos, he probado ambos .bin y funcionan perfecto. El sonido en vivo es espectacular, se nota la profundidad de los bajos y lo cristalino de las frecuencias altas.


Un saludo!

Message has been deleted

charli va

unread,
Jan 30, 2026, 5:26:19 PM (9 days ago) Jan 30
to fpga-wars-explora...@googlegroups.com
¡Que grande Demócrito! muchas gracias por las pruebas!

Jesus Arias

unread,
Jan 30, 2026, 5:29:05 PM (9 days ago) Jan 30
to FPGAwars: explorando el lado libre
Hola Carlos,
Ahora suena bastante mejor, sobre todo el ovni. Pero otros efectos todavía no parece que estén bien del todo, como el "paso", que parece que sólo tiene un nivel de DC. O como el Invaders Hit, que era el circuito que estaba simulando.
Aprovecho para adjuntar otra simulación del "Invaders Hit" más completa, ahora incluyendo también los operacionales que generan la envolvente. Además he convertido los datos a un archivo WAV para oir cómo suena y comparar.

Buenas noches

Invaders_SIM1_sch.pdf
out.wav
out.zip

charli va

unread,
Jan 30, 2026, 5:45:48 PM (9 days ago) Jan 30
to fpga-wars-explora...@googlegroups.com
Esto va a ser oro puro para clavarlo!, el problema es a ver si consigo replicarlo sin operaciones complejas, me acerqué bastante pero se me iban en LCs, si veo que consigo algo chulo, veo como recortar en el código, XD pero está genial, vamos a dejar esta réplica clavada


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

Jesus Arias

unread,
Jan 30, 2026, 5:47:37 PM (9 days ago) Jan 30
to FPGAwars: explorando el lado libre
Hola otra vez, olvidé comentar algo:
Un aspecto de la generación de la envolvente que quería destacar en este circuito es que realmente no se "multiplican" envolvente y onda. Aquí simplemente se suman (o más bien se resta), y cuando la amplitud excede las alimentaciones se recorta la onda de la salida. Por supuesto que esto genera mucha distorsión cuando se apaga el sonido, pero para unos marcianitos qué importaba.
Haciendo algo similar en el dominio digital seguramente se eliminarían los multiplicadores...

charli va

unread,
Jan 30, 2026, 6:02:31 PM (9 days ago) Jan 30
to fpga-wars-explora...@googlegroups.com
Ahí ando ha sido un poco la estrategia que he seguido para que cupiera , cargarme multiplicadores por doquier, el único que los mantiene es la sirena del UFO.

Tu .dat brutal, ya ando en ello, creo que con un poco de suerte vale prácticamente lo que hay salvo ajustar parámetros, os pasaré estos scripts si tenéis curiosidad que he estado usando estos días para con simulaciones no tan buenas como la tuya ir aproximándome a lo que sonaba, aquí tu .dat destripado, ya tengo los datos que necesito XD :

Captura de pantalla 2026-01-31 a las 0.00.11.png


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

Jesus Arias

unread,
Jan 30, 2026, 6:24:31 PM (9 days ago) Jan 30
to FPGAwars: explorando el lado libre
Hola otra vez.
He visto algún video de la máquina jugando y el sonido "Invaders Hit" se parece pero la modulación FM es claramente más rápida. Estoy empezando a pensar que el esquemático que estoy siguiendo va a tener alguna errata en los valores de resistencias o condensadores. Y no sería raro porque alguna otra ya he detectado, (como 4006 en lugar de 4016 en un chip de interruptores CMOS)

Jesus Arias

unread,
Jan 30, 2026, 6:36:13 PM (9 days ago) Jan 30
to FPGAwars: explorando el lado libre
Ya he visto la errata. Ese circuito no es el "invaders hit" sino el "UFO hit", de acuerdo con los circuitos de: https://www.walkofmind.com/programming/side/soundboard.htm Mi esquemático tiene mal puestas las etiquetas :( Además tampoco coincide al 100% con lo que nos presentan en esa web, tal vez por ser de máquinas Midway en lugar de Taito)

charli va

unread,
Jan 30, 2026, 6:41:27 PM (9 days ago) Jan 30
to fpga-wars-explora...@googlegroups.com
Yo con el sonido me he vuelto loco por no tener referencias, tampoco me fío de que los videos de youtube sean buenos.  A ver si localizo alguna peli o documental que salga la máquina y la podemos escuchar XD

le daré una vuelta de todas formas estoy a ver si cuadro parámetros con lo que has pasdo y si no ya mañana le daré otra vuelta.

Te paso los que yo tego por si te sirven de ayuda , son el mismo uno "limpiado" y el otro por curiosidad parece foto del original.
Os los paso por enlace que ocupan mucho y no los puedo mandar a la lista:


charli va

unread,
Jan 30, 2026, 6:55:51 PM (9 days ago) Jan 30
to fpga-wars-explora...@googlegroups.com
Acabo de subiros a la carpeta además de los esquemáticos un par de manuales que me parecieron interesantes.

Un abrazo y buenas noches!

charli va

unread,
Jan 31, 2026, 3:54:51 AM (8 days ago) Jan 31
to fpga-wars-explora...@googlegroups.com
Jesús ahora me cuadra todo mejor, de primeras dije no sé si es el sueño pero me he desviado completamente XD

Mando wav generado por la simulación verilog (os pasaré un testbench para poder generar el wav desde el verilog y así en simulación poder ajustar mejor las cosas) sin operaciones estrambóticas así se va ajustando, no es exactamente igual pero muy aproximado.

Esto se está poniendo super interesante XD voy a preparar un algoritmo que intente cuadrar solo o ajustar el error entre la muestra de la simulación spice y la de verilog, creo que puede salir algo que nos sea útil para otras cosas.

Os adjunto ufo_spice.wav que es audio de Jesús resultante de la simulación física y ufo_verilog.wav que es el audio resultante e nuestra emulación analógica en verilog, y aquí las gráficas comparativas:
overlay_comparison.png
ufo_verilog.wav
ufo_spice.wav
Message has been deleted

Democrito

unread,
Jan 31, 2026, 4:16:08 AM (8 days ago) Jan 31
to FPGAwars: explorando el lado libre
Al escuchar los WAVs me vino a la mente el anuncio de Scatrón, mi segundo regalo de Reyes Magos más importante de mi vida, Y antes estuvo el Tente (es como un Lego). Y finalmente mi primer ordenador personal, un Sord M5 (era una especie de MSX con teclado Spectrum).

Jesus Arias

unread,
Jan 31, 2026, 8:36:54 AM (8 days ago) Jan 31
to FPGAwars: explorando el lado libre
Hola
Yo también he hecho una aproximación digital para este circuito. Va adjuntada.
Ocupa unas 85 LCs. Claro, que las aproximaciones son del tipo vaca = esfera ;)
Se puede probar grabando main.bin y pulsando el primer botón.
Saludos

sim1.png
El sábado, 31 de enero de 2026 a las 9:54:51 UTC+1, charliva escribió:
sound.v
main.bin
system.v

charli va

unread,
Jan 31, 2026, 9:44:00 AM (8 days ago) Jan 31
to fpga-wars-explora...@googlegroups.com
Buenas Jesús! con el .bin me suena un pitido constante, luego lo sintetizo y lo pruebo a ver si sale igual.

Yo ando avanzando y creo que me queda poco para ajustarlo bien aunque como tu dices, tampoco podemos querer con pocos recursos que quede "clavado", aunque hay que intentar acercarnos lo máximo, desde. luego tener un modelo teórico bueno como el que has hecho ya me parece una pasada.

El problema es que estamos usando modulación lineal de período, pero el spice usa modulación no lineal (probablemente lineal en frecuencia o exponencial),y claro si no queremos usar divisiones ni multiplicaciones en lo posible.... XD estoy intentando una solución por lookup table para no dividir pero a ver.....

Por otro lado tenía tambíen un bug en la síntesis de sonido que he descubierto gracias a esto, tenía un acumulador de 8 bits y realmente necesitaba 9.

Si esto no encaja no se me ocurre como aproximarlo menos con pocos recursos a ver que sale y os paso el motor de audio por si lo queréis probar y trastear mientras termino de adecentaros el resto.

Por cierto, yo era de TENTE a muerte XD  y el Scatrón joder... fue el regalo de Reyes que nunca llegó XD



Democrito

unread,
Jan 31, 2026, 12:35:12 PM (8 days ago) Jan 31
to FPGAwars: explorando el lado libre
Adjunto el audio de main.bin. Cada vez que se apreta SW1 emite ese sonido. Le apreté varias veces, y hacia el final muchas veces.
sonido de marcianitos.m4a

charli va

unread,
Jan 31, 2026, 1:01:14 PM (8 days ago) Jan 31
to fpga-wars-explora...@googlegroups.com
Es curioso en mi alhambra suena pero con un tono constante encima de todo, igual tengo algún problema en mi hardware.

En cualquier caso está super clavado Jesús, tu vaca parece más círculo que el mío, yo voy así (os adjunto wav)
 
Si no saco al mejor meteré tu sirena ;)

estoy mejorando algo más el laser y las explosiones de los aliens

output.wav

charli va

unread,
Feb 1, 2026, 4:21:35 AM (7 days ago) Feb 1
to fpga-wars-explora...@googlegroups.com
Hola amigos! os paso el código del motor de audio en el que he integrado el UFO de Jesús que ha conseguido un carácter prácticamente igual al original (yo me había obcecado en imitarlo con un VCO y la clave estaba en tu DSS, para no pegarme con sampleo, lo he dejado a tus 32Khz el resto yo los tengo a 44Khz pero no pasa nada he hecho los ajustes para que se integre en la mezcla y en principio creo que se ha quedado igual).

Os adjunto el código , solo tenéis que hacer make o quemar el .bin,  el fichero si_audio.v se copia literalmente en el juego , lo digo por si alguien juega y ajusta algo mejor los sonidos si directamente lo integra ahí luego es solo sustituir. El top de ejemplo es el que hace la demo en secuencia.

Me suele gustar crear así módulos separados que se pueden trabajar de forma independiente del proyecto general, luego es fácil crear un bloque de icestudio a partir de ahí solo con esa funcionalidad.

Lo ideal sería poder hacer la reconstrucción que ha hecho Jesús sonido a sonido, si nos animamos entre todos poco a poco podemos hacer una recreación casi perfecta, teniendo el modelo teórico es mucho más sencillo afinar como ha hecho Jesús con el UFO (que no es sencillo pero al menos hay un "mapa del tesoro") y de echo es lo que más interesante me parece de esta parte de sonido, pero bueno como os digo a ratos si a alguien le interesa lo vamos haciendo, para mi es el camino a seguir (gracias Jesús!)

De momento os lo dejo ya pasado por si queréis jugar, esta tarde os pasaré el juego que solo me queda terminar de documentar un poco y aunque el código no está lo modularizado que me gustaría me apetece ya pasároslo que seguro que lo disfrutáis y aquí como quien dice se podría alargar el trabajo aun por tiempo ya se irá todo mejorando, esta tarde os lo mando.

Un fuerte abrazo
si_audio_v1.tgz

Jesus Arias

unread,
Feb 1, 2026, 5:24:58 AM (7 days ago) Feb 1
to FPGAwars: explorando el lado libre
Hola Carlos, luego lo pruebo que ahora estoy un poco liado.
Pero aprovecho para adjuntar el análisis de otro efecto, esta ves sí en Invader Hit.
SIM2.PNG

En el circuito hay nada menos que 7 operacionales, y el que hay a mayores respecto del UFO es tan sólo un monoestable que se dispara con los flancos de subida de la señal de control. Las ondas resultantes las tenemos en la figura.
La onda triangular ahora es en diente de sierra descendente
La envolvente sube casi de inmediato, se mantiene unos 50ms, y decae linealmente durante 500ms.

En cuanto a la frecuencia de muestreo de 31kHz. La había elegido porque coincide con el puso de sincronismo horizontal de la VGA, y porque en las DDS, con 15 bits, un valor de 1 en la frecuencia corresponde aproximadamente a 1 Hz. Pero esto se puede cambiar .

Buen día
outInvHit.wav
outInvHit.zip

charli va

unread,
Feb 1, 2026, 7:32:54 AM (7 days ago) Feb 1
to fpga-wars-explora...@googlegroups.com
Faltaría más Jesús, ¡no hay prisa! la que le queramos dar nosotros :)

Y está increible, voy a jugar con los datos que mandas a ver si lo consigo aproximar.

Sobre la frecuencia de muestreo sin problemas, estos trucos de sincronismo que sueles usar en tus diseños de aprovechar las señales de la VGA para otras, cosas, ningún problema con ello al revés le daré una vuelta para ver si puedo acomodar el diseño a ello que seguro que optimiza lógica.



--
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,
Feb 1, 2026, 7:45:38 AM (7 days ago) Feb 1
to FPGAwars: explorando el lado libre
Carlos, "si_audio_test.bin" suena como lo que he adjuntado.
si_audio_test.m4a

charli va

unread,
Feb 1, 2026, 9:46:32 AM (7 days ago) Feb 1
to fpga-wars-explora...@googlegroups.com
Gracias Demócrito! suena muy bien! la calidad la teneos conseguida, la sirena es la de Jesús que está muy bien ajustada, ahora el resto de sonidos es ir ajustando según tengamos modelos.

Como siempre mil gracias por las pruebas!

charli va

unread,
Feb 1, 2026, 3:23:05 PM (7 days ago) Feb 1
to fpga-wars-explora...@googlegroups.com
Se me ha complicado el día con la familia, si no es hoy, mañana os pongo ya al día el código.

Jesus Arias

unread,
Feb 1, 2026, 5:39:50 PM (7 days ago) Feb 1
to FPGAwars: explorando el lado libre
Hola
Envío de nuevo el código, ahora también con el sonido de "Invader Hit", que tiene una generación muy parecida al anterior.
Buenas noches
sound.v

charli va

unread,
Feb 2, 2026, 2:38:30 AM (6 days ago) Feb 2
to fpga-wars-explora...@googlegroups.com
Jesús está increíble! la mañana la tendré liada pero por la tarde lo meto y a ver si ya os paso el juego por si queréis ir echando un vistazo.

Va a quedar una recreación super interesante!

¡Buen día!

Devta Singh Khalsa

unread,
Feb 2, 2026, 3:44:54 AM (6 days ago) Feb 2
to fpga-wars-explora...@googlegroups.com
Querido Obi Juan.
Gracias por el esfuerzo de mantener vivo este proyecto y comunicar los avances que vas logrando. Los marcianitos era un juego que me alucinaba cuando tenía 12 o 13 años porque no comprendía como podían hacer que se movieran los sprites (no sabía que eran sprites) me imaginaba una cadena ancha, moviéndose hacia abajo en la que iban montados los marcianos, en una especie de carril que les permitía moverse en horizontal hacia los lados.

Y más tarde llegó el ZX Spectrum y el commodore 64, pero éramos pobres (no me quejo pero con 5 hijos no había para caprichos) al final tras el año de la mili 1988, un amstrad pc 1640 me permitió entrar en la informática, y aunque no soy un hacker ni un experto administrador, era el típico vecino y primo que instalaba el windows o los programas cuando daban lata.

Cuando vi lo de la Alhambra aluciné y compre la Alhambra-II, y aunque no estoy metido en los FPGa celebro mucho su existencia y la de este foro y toda la documentación que se genera (directa o indirectamente).
La idea de hacer una máquina diseñada virtualmente en un chip o placa real y que se pueda compartir como distintas cosas de forma aparentemente nativa es un regalo para la mente y para las posibilidades.

Te mando mucho ánimo.

Si llegas hasta aquí, aquí está lo relevante.

He respondido a la encuesta y puede que tengas 5 o 6 entradas mías, de un tal devta singh khalsa antonio maiques paredes, que son mis dos presencias en el mundo.
Porque al principio me salía un mensaje que decía que no había indicado cuantas iba a comprar, no se si lo cambiaste en ese momento, luego me indicó que ya estaba realizada la operación, pero no cambie datos ni cantidades.
Captura de pantalla 2026-02-02 a las 9.26.32.png

Yo compraría uno o 2 o quizá más si resulta ser estable y funcional (tendría que hacerme con más Alhambra-II pero todo llegará...)


Yo si compraría un shield para la alhambra-II y quizá sea interesante el tema de los cables (depende de cuales sean) y un libro de proyectos. 
Aunque si este existe le daría también una existencia o una presencia virtual, en la red, una especie de repositorio o una web dedicada.
A mi me gusta github lo uso a la fuerza, pero como repositorio no tiene igual, sin embargo es propietario y hay que tener cuidado con eso.
Creo que se puede tener una web con los proyectos y configuraciones casos de éxitos y comentarios.
Al fin y al cabo eso es lo que es importante, el aporte de la comunidad.

Devta Singh Khalsa
http://devta.wordpress.com/ 
http://circulodesanacion.com
http://medicosdelcielo.org

Cantarranas,2
19413 Villaviciosa de Tajuña
Guadalajara / Spain


El lun, 26 ene 2026 a las 17:49, charli va (<char...@gmail.com>) escribió:
    English below.   

Buenas! abro hilo para no contaminar el del Spectrum y el Amstrad. De momento solo os reporto pequeños avances, voy entendiendo los entresijos de la máquina y empieza la cosa a moverse.



Es muy curioso como está planteado el juego, ya os lo documentaré pero básicamente utiliza un par de interrupciones para ir generando la secuencia de juego y el pintado, ambas en paralelo asíncronamente.

Ahora mismo ya tengo solucionado la parte de pintado (Jesús una gran inspiración el linebuffer del Defender mil gracias), pero la interrupción que gestiona los marcianitos aun me está dando problemas, por eso como veis en el vídeo, la animación comienza pero se queda clavada (de echo pensaba de inicio que el juego se me había quedado congelado ya que venía depantallas congeladas tras el primer frame.

Pero... oh! sorpresa! asocié el insert coin al sw1 y resulta que no está muerta!! solo que digámoslo así , uno de los hilos, el que mueve a los malos , está  muerto.

En cualquier caso he pasado de una secuencia de frames rotos y llenos de artefactos de pixels basura congelados, a imagen limpia en la que ya empieza a moverse .

Por curiosear un poco otra cosa que me ha dado guerra y que ya está funcionando bien es el tema de la memoria. Con esta adaptación estoy testeando los nuevos módulos que he hecho de psram que son mucho más sencillos que los iniciales y están demostrando ser muy estables (los primeros me pudo la emoción y no los había depurado lo suficiente y al partir de otros códigos había construido un castillo de naipes que a la mínima se rompió).

Con este juego me está valiendo como prueba de fuego ya que otra cosa "curiosa" del Invaders es como gestiona las colisiones con los bichos, en lugar de llevar un mapa interno de memoria como sería habitual en juegos más modernos o incluso actuales, lo que hace es consultar la pantalla, ver si donde va el laser hay blanco o hay negro XD , punto que complica aun más las cosas porque tienen que competir por la psram la cpu y la vga .

Os seguiré contando la aventura.

Os recuerdo para los interesados que estoy recogiendo en un formulario a los interesados en conseguir una Shield de momento ya hay unos cuantos inscritos pero no suficientes para el batch, en cuanto termine algunas demos más empezaré a moverlo pero por si a alguien se le coló, dejo el enlace:

https://icestudio.io/buygroup-alhambramm

Hay gente que me preguntó sobre por qué pregunto por el precio. Con esto no queremos "ganar dinero", añadiremos un pequeño margen para financiar nuevas tarjetas y prototipos,  pero la idea es que podáis disfrutar de ella todos los que tengáis ganas de ello y consigamos un precio justo, ya tengo varios presupuestos con fabricación cerrada pero los precios varían muchísimo en función de la cantidad, si por ejemplo todo el mundo da un baremo X e imaginaos para conseguirlo hacen falta 100 tarjetas pues la idea es llegar alas 100 porque pidiendo menos de eso el precio se duplica. 

Era solo por aclarar que la idea y objetivo de tantearos es el poder conseguir encontrar un precio que se ajuste a lo que la gente interesada pueda pagar cómodamente si fuera posible.

Un gran abrazo!

    English      

Hi! I’m starting a separate thread so I don’t clutter the Spectrum and Amstrad one. For now I’m just reporting small progress — I’m starting to understand the ins and outs of the machine and things are beginning to move.

https://www.youtube.com/shorts/XpRSEr-jYdE

It’s really interesting how the game is set up. I’ll document it for you later, but basically it uses a couple of interrupts to generate the gameplay sequence and the drawing, both running asynchronously in parallel.

Right now I’ve already solved the rendering part (Jesús, a huge inspiration — the Defender line buffer, thank you so much), but the interrupt that manages the little aliens is still giving me problems. That’s why, as you can see in the video, the animation starts but then gets stuck (in fact, at first I thought the game had frozen, because I was getting frozen screens right after the first frame).

But… oh! surprise! I mapped “insert coin” to SW1 and it turns out it’s not dead!! It’s just that, let’s put it this way, one of the threads — the one that moves the bad guys — is dead.

In any case, I’ve gone from a broken frame sequence full of artifacts and frozen garbage pixels to a clean image where things are starting to move.

Just out of curiosity, another thing that gave me a hard time — and that’s now working properly — is memory. With this port I’m testing the new PSRAM modules I’ve made, which are much simpler than the initial ones and are proving to be very stable (with the first ones I got carried away and hadn’t debugged them enough, and by building on other code I ended up with a house of cards that fell apart at the slightest issue).

This game is serving as a real trial by fire, because another “curious” thing about Invaders is how it handles collisions with the enemies. Instead of keeping an internal memory map like would be typical in more modern games (even today), what it does is read the screen and check whether there’s white or black where the laser is going XD — which makes things even more complicated because the CPU and the VGA have to compete for the PSRAM.

I’ll keep telling you about the adventure.

And a reminder for anyone interested: I’m collecting names in a form for those who want to get a Shield. For now there are already quite a few people signed up, but not enough for a batch. As soon as I finish a few more demos I’ll start moving things forward, but in case someone missed it, here’s the link:

https://icestudio.io/buygroup-alhambramm

Some people asked me why I’m asking about the price. We don’t want to “make money” from this — we’ll add a small margin to fund new boards and prototypes — but the idea is that everyone who wants one can enjoy it and that we can get a fair price. I already have several quotes with manufacturing locked in, but prices vary a lot depending on quantity. For example, if everyone gives a target price range X and, imagine, reaching that requires 100 boards, then the idea is to reach 100 — because ordering fewer than that doubles the price.

I just wanted to clarify that the idea and goal of asking you all is to find a price point that fits what interested people can comfortably pay, if possible.

Big hug!

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

Jo mo

unread,
Feb 2, 2026, 4:08:50 AM (6 days ago) Feb 2
to FPGAwars: explorando el lado libre
Ola Devta,

Just a little correction, Obijuan is our great Jedi master, but the Jedis who worked lately on the "marcianitos" are Charliva/Carlos, Jesus and Democrito ;-)
Big hug my friends!

Juan Gonzalez Gomez

unread,
Feb 2, 2026, 6:20:05 AM (6 days ago) Feb 2
to fpga-wars-explora...@googlegroups.com
Hola Devta!

Muchas gracias! Tanto la placa Multimedia Shield para la Alhambra-II, como el zx-spectrum, el Amstrad y el space-invaders  los han creado Jesús y Carlos, con ayuda de Demócrito. Yo sólo los he probado como un usuario más
Para mí son los mejores proyectos que se han creado dentro de esta comunidad. Simplemente espectaculares

Saludos, Obijuan


Democrito

unread,
Feb 2, 2026, 9:15:19 AM (6 days ago) Feb 2
to FPGAwars: explorando el lado libre
Aclarar que yo no he hecho nada, sólo testeo para confirmar y mostrar cómo se ve desde fuera de los que están desarrollando esto (Jesús-Carlos).

charli va

unread,
Feb 2, 2026, 9:49:42 AM (6 days ago) Feb 2
to fpga-wars-explora...@googlegroups.com
Hola a todos! lo primero  gracias por las palabras , agradecimientos, etc!  por mi parte os agradezco mucho el calor humano aunque sea digital en este caso XD pero siempre sienta bien sentir que el trabajo realizado es útil algún lugar o para alguien.

Sobre la shield le estamos echando mucha ilusión y ganas de hacer cosas, ahora estamos arrancando a explorar nuevos caminos y como somos pocos los que la tenemos, la idea de hacer una segunda tirada, quizá incluso con alguna mejora,  es que nos lo podamos pasar todos muy bien y aprender mucho.

Mientras vamos recabando encuestas para ver los interesados y con eso organizar costes y logística estamos avanzando en explorar las posibilidades , con todas estas cosas que estamos haciendo a parte de aprender mucho (por ejemplo la parte actual de sonido del Invaders me está encantando, literalmente del circuito analógico a la "recreación" hardware digital) la idea es ir teniendo demos, módulos, bloques de icestudio (que llegarán pronto)... para que cuando podamos lanzar el nuevo batch ya haya una base sobre la que sea más fácil para todos arrancar y aprender.

Y Demócrito, invertir tiempo en probar , testear y dar feedback es muy valioso, nunca lo subestimes, siempre te lo he dicho, sueles siempre encontrar los bugs y dar con el dardo en el centro de la diana, es un gran superpoder!

@Devta, no te preocupes por el número de registros, una vez tengamos un mínimo de interesados os escribiremos ya más en detalle , el formulario no tiene ningún tipo de compromiso y sobre el error lo miraré por si es algún tipo de bug. Sobre web y demás, se va a ir avanzando, poco a poco.

Muchas gracias de nuevo a todos, espero que aunque muchos no tenéis la shield estéis disfrutando del proceso y pronto los interesados podáis participar.

¡ seguimos avanzando !


charli va

unread,
Feb 2, 2026, 2:11:13 PM (6 days ago) Feb 2
to fpga-wars-explora...@googlegroups.com
Aquí vamos, versión 1.1 del motor de sonido con el UFO Siren y el Invader HIT originales.... esto va cogiendo forma!!!



si_audio_v1_1.tgz

Democrito

unread,
Feb 2, 2026, 2:39:02 PM (6 days ago) Feb 2
to FPGAwars: explorando el lado libre
Adjunto la muestra de audio. Creo que le di demasiado volumen, quizás os suene un poco saturado.

Por cierto, no me había percatado que con cada sonido se encendía un led distinto.

Saludos!

AUDIO-2026-02-02-20-32-32.m4a

charli va

unread,
Feb 2, 2026, 3:00:16 PM (6 days ago) Feb 2
to fpga-wars-explora...@googlegroups.com
XD si, cada sonido tiene un led , jaja , menos el último porque solo hay 7 sonidos. en el top del código fuente tenéis el orden:

// Effect order:
//   LED 0: Trigger (laser shot) - 2 seconds
//   LED 1: Invader Hit          - 0.5 seconds
//   LED 2: UFO Hit              - 0.6 seconds
//   LED 3: UFO (siren)          - 3 seconds
//   LED 4: Flash (explosion)    - 2 seconds
//   LED 5: Extended Play        - 1.5 seconds
//   LED 6: Step 1-2-3-4         - 2 seconds
//   LED 7: (pause before loop)

Lo que veo que está muy descompensado en volumen los steps, lo miraré a mi se me oyen más equilibrados todos los sonidos, así que mil gracias, le daré algunos dbs más.

Muchas gracias de nuevo!

Jesus Arias

unread,
Feb 2, 2026, 5:39:19 PM (6 days ago) Feb 2
to FPGAwars: explorando el lado libre
Hola, esto es lo que he observado:
2 - UFO hit: suena raro.
4 - explosion: no se oye
6 - Step 1234: se oye muy bajo, como si el filtrado pasa-bajo fuese mucho más de lo que debía.

Y ahora estaba mirando circuito con el sonido del disparo. Y es una pequeña pesadilla. Para empezar la señal del generador de ruido se suma a un nodo interno de un oscilador de 1.6 kHz (sí, es un oscilador. Hay una errata en los esquemáticos: un opamp con las entradas intercambiadas), lo que provoca una modulación FM con ruido en el entorno de 1.6kHz. La salida es una onda cuadrada a la que se le aplica una envolvente lineal, lo que no tiene mucho sentido a no ser que la onda no sea realmente cuadrada sino trapezoidal a causa del slew-rate limitado de los operacionales. Entonces esta envolvente podría cambiar el "timbre" del sonido al estrechar los pulsos, pero no afectaría mucho al volumen. Para el volumen hay una segunda envolvente, esta exponencial (descarga de condensador)
Adjunto una primera aproximación con sólo la segunda envolvente. No he generado un .WAV a partir de las simulaciones de Spice porque mi modelo para el LM3900 es muy pedrestre y no me parece que los resultados estén muy bien. La versión Verilog suena parecido al original, aunque se echa de menos el cambio del timbre antes del final. Voy a tener que añadir la envolvente y buscar alguna manera de estrechar los pulsos...
(Nota: la IA de Google me dice que el slew-rate del LM3900 es de 0.5V/s, sólo se ha equivocado en un factor de un millón ;)

Buenas noches
si-laser.bin

charli va

unread,
Feb 2, 2026, 5:46:31 PM (6 days ago) Feb 2
to fpga-wars-explora...@googlegroups.com

Jesús, si mañana puedes mándame los audios que consideres versión final en wav para tenerlos de referencia y ver donde puede estar el error, no sé si será por la parte de la mezcla o algúnos filtros DC que tengo aplicados en la salida de la mezcla o un centrado de valores (no descarto que sea esto último y que haga algo de clipping sin haberlo querido).

Este es el circuito que estás  trabajando?
Captura de pantalla 2026-02-02 a las 23.43.01.png

Jesus Arias

unread,
Feb 2, 2026, 5:52:36 PM (6 days ago) Feb 2
to FPGAwars: explorando el lado libre
Sí, ese es el bueno (La errata estaba en este esquemático: https://www.walkofmind.com/programming/side/soundboard/sound_trigger.htm)

Jesus Arias

unread,
Feb 2, 2026, 5:57:38 PM (6 days ago) Feb 2
to FPGAwars: explorando el lado libre
Respecto de los WAV, sólo tengo los del Invaders-Hit y Ufo-hit. Te los adjunto de nuevo. Están generados a partir de simulaciones de Spice (en Proteus)

El lunes, 2 de febrero de 2026 a las 23:46:31 UTC+1, charliva escribió:
outInvHit.wav
outUFOHit.wav

charli va

unread,
Feb 2, 2026, 6:02:55 PM (6 days ago) Feb 2
to fpga-wars-explora...@googlegroups.com
Genial Jesús! tenía el del ufo pero el del invader hit se me había colado si lo enviaste, mil gracias!.

charli va

unread,
Feb 2, 2026, 6:14:13 PM (6 days ago) Feb 2
to fpga-wars-explora...@googlegroups.com
Tu comentario sobre la consulta a nuestras nuevas amigas me ha recordado este chiste XD :

Captura de pantalla 2026-02-03 a las 0.13.17.png

Democrito

unread,
Feb 2, 2026, 6:17:27 PM (6 days ago) Feb 2
to FPGAwars: explorando el lado libre
Del último .bin de Jesús, adjunto audio. Con Sw1 sale un sonido y con Sw2 el otro.
gigggboing.m4a

Democrito

unread,
Feb 2, 2026, 6:19:27 PM (6 days ago) Feb 2
to FPGAwars: explorando el lado libre
Por si sirve de algo, desde esta web se puede descargar los sonidos.

https://classicgaming.cc/classics/space-invaders/sounds

charli va

unread,
Feb 2, 2026, 6:37:08 PM (6 days ago) Feb 2
to fpga-wars-explora...@googlegroups.com
Gracias por los audios Demócrito! creo que esa web los sonidos no son "reales" no lo tengo claro pero difieren de los nuestros y la reconstrucción analógica de Jesús es muy fiel.


Jesus Arias

unread,
Feb 3, 2026, 5:16:37 AM (5 days ago) Feb 3
to FPGAwars: explorando el lado libre
Hola,
Pues no era tan fiel! tenía un error estúpido en el divisor del reloj y la frecuencia de muestreo estaba mal. Con el error corregido ahora los efectos suenan más graves.
Adjunto el efecto del disparo ya más elaborado, y también la explosión (flash)
Por supuesto que sigo con la aproximación de la vaca esférica y con tal de usar potencias de 2 para multiplicar no me ha importado cambiar las constantes de tiempos de los filtros ;)
Saludos
sound.v
si-laser.bin

charli va

unread,
Feb 3, 2026, 6:04:56 AM (5 days ago) Feb 3
to fpga-wars-explora...@googlegroups.com
Después de comer lo meto al motor!, el error del muestreo afecta a todos Jesús? es por ajustar, estoy manteniendo lo más fiel posible tu implementación y por saber exactamente el problema para ajustar los otros sonidos si fuera necesario.

Buen día!

Jesus Arias

unread,
Feb 3, 2026, 6:46:14 AM (5 days ago) Feb 3
to FPGAwars: explorando el lado libre
Hola,
Los fuentes estaban supuestamente bien, pero los .BIN mal, no habría que cambiar nada, simplemente los sonidos que generaban los .BIN eran un poco más agudos de lo que debían.
Adjunto también el sonido del paso, y aquí hay algo que no me cuadra nada: Con los valores del filtro RC-RC de los esquemáticos (2x100ohm, 4.7uF, y 10uF) se atenúa tanto el audio que no se oye nada. Algo tiene que estar forzosamente mal. En el código estoy usando un ancho de banda 5 veces mayor y aún así se oye un poco bajo. Seguramente esto también pasaba con tu versión del Paso...
sound.v

charli va

unread,
Feb 3, 2026, 7:25:40 AM (5 days ago) Feb 3
to fpga-wars-explora...@googlegroups.com
Fíjate que justo lo comentamos, yo hice unas aproximaciones a ojo de buen cubero basándome más o menos en el esquema pero según hemos ido metiendo tus diseños bien ajustados se ha hecho latente, a ver si encontramos el motivo y así termináis de entender bien todo el kit de sonidos.


charli va

unread,
Feb 3, 2026, 2:22:27 PM (5 days ago) Feb 3
to fpga-wars-explora...@googlegroups.com
Como estas cosas me gustan he estado investigando y he encontrado un software libre con el que poder simular tipo Proteus (mucho más cutre y torpe de manejo pero se puede trabajar), se llama Qucs-S (https://ra3xdh.github.io/)  y por debajo usa ngspice, la verdad que de rebote me va a venir bien para otros temas que tengo entre manos voy a ver si le pillo el truco, como acabo de conocerlo confío en tu vaca Jesús XD, pero os contaré que tal va el invento este por si alguno le pueda interesar.

De momento he localizado un componente spice del LM3900 , he hecho un circuito típico y... ha ido perfecto!, la exportación a .dat y de ahí a .wav parece trivial aunque luego modelizarlo a verilog será otro cantar.

Captura de pantalla 2026-02-03 a las 19.31.00.png

Por otro lado os mando el "inventario de sonido" actualizado :)

Ya me va quedando menos para cerrar la docu mínima que os quiero pasar para mandaros el código fuente,ando aprovechando a hacer algunos ajustes como separar los sonidos en módulos para tenerlos independientes que me ha parecido buena idea.

¡Buena tarde!

si_audio_test.bin

charli va

unread,
Feb 3, 2026, 3:24:48 PM (5 days ago) Feb 3
to fpga-wars-explora...@googlegroups.com
Os actualizo el código del audio, he unificado todo a 32Khz para aprovechar el hsync como planteó Jesús, en sus réplicas suele usar las señales de vídeo para muestrear cosas lentas como audio o controles....realmente es una gran idea en ahorro de recursos y simplificar los relojes del sistema.

Además no vamos a notar un "gran salto" a 44Khz para esto y se ahorra mucha lógica, hemos bajado de casi 2000LCs(era mi límite) a 1300 :) por otro lado he modularizado todos los sonidos y ha quedado mucho más legible y muy ideal para portarlo a icestudio (va a estar chupado).

Tenéis el código y  el .bin dentro del tgz

si_audio_v1_2.tgz

charli va

unread,
Feb 3, 2026, 3:58:36 PM (5 days ago) Feb 3
to fpga-wars-explora...@googlegroups.com
Os adjunto una nueva versión, esta vez con el "Extended play" que es la vida extra. El circuito es este:

Captura de pantalla 2026-02-03 a las 21.32.31.png

Lo he implementado con cálculos porque parece bastante sencillo, realmente es un beep-beep a 480Hz repartido al 75% del tiempo (es seleccionable con un jumper en la placa entre 480 y 960 pero el estándar por lo que he podido ver era el 480, al menos en la máquina de Taito). y con el cálculo de resistencias, la frecuencia del beep si no he echado mal al cuenta con el 556 y su red RC (100k, 47k, 1uF) de 7.42 Hz  y como al contrario que los otros sonidos que son analógicos este es digital, la conversión a verilog es casi directa.

También he alineado la gananacia y demás y creo que ahora todos se escuchan relativamente bien, ya me diréis si lo probáis.

En el .bin del catálogo lo podréis escuchar.

Creo que el último sonido que nos queda es el UFO hit.

¡Buenas noches!
si_audio_v1_3.tgz

Jesus Arias

unread,
Feb 3, 2026, 5:55:48 PM (5 days ago) Feb 3
to FPGAwars: explorando el lado libre
Hola Carlos,
El sonido UFO-Hit era el primero de todos los que he simulado (por entonces pensaba que era el Invaders-Hit). Lo tienes  al principio de sound.v
En cuanto a las pruebas de oído:
1 - Disparo. Parece que suena muy corto, se apaga enseguida.
3 - Ufo hit. Por cambiar...
6 - Paso. Suena muy saturado, tal vez a causa de algún desbordamiento al mezclar muestras

Y es un detalle que ese simulador incluya el modelo del LM3900. Proteus no lo tiene y he tenido que hacerle un equivalente a base de transistores discretos, lo que más o menos funciona pero que no es muy preciso en lo tocante a ancho de banda o slew-rate.

Buenas noches

Democrito

unread,
Feb 3, 2026, 6:43:34 PM (5 days ago) Feb 3
to FPGAwars: explorando el lado libre
Por si sirve de algo (o quizás no) :

charli va

unread,
Feb 4, 2026, 1:40:32 AM (4 days ago) Feb 4
to fpga-wars-explora...@googlegroups.com
Hola Jesús!, voy a repasar los correos, porque creo que me he liado/solapado, el UFO hit (cuando e mata al ovni grande) se me ha colado o pensé que en un momento dado se había cruzado con el UFO-Siren....jaja menudo lio.

Ajustaré el motor y lo meteré en el juego en el test estoy simulando el tiempo y puedo no estar siendo fiel al código del juego y haciendo el trigger demasiado corto.  Como he movido todo a 32Khz puede que tenga algún lio de desbordamiento no lo descarto, lo reviso y os digo.

Sobre el LM3900 no lo traía , lo he importado como modelo spice , os adjunto esta recopilación que es oro puro, es una recopilación de modelos de Jim Hagerman, que es un activo de la comunidad en temas de síntesis y hay componentes interesantes y super bien simulados. sólo hay que extraer el componente que te interese y guardarlo en un fichero aparte, luego importarlo como simulación spice (al menos en qucs-s) yo esto lo he usado con ngspice a pelo otras veces y me encantó que se pudiera importar como bloques.

Buen día!
spicemodels.txt
Reply all
Reply to author
Forward
0 new messages