Very nice project. Playing with FPGAs can be difficult, but also a lot of fun.

Must say the code was nicely organized and easy to follow. My own code is a bit of a mess in comparison.

Did you try out plain Verilog before going with System Verilog? My plan was to move on to generators like nMigen, now called Amaranth[1], and they spit out Verilog IIRC so decided to learn that for debugging.

Then life happened and got sidetracked, but been wanting to pick it up again.

How was it to program for the Analogue Pocket? I was recently looking at it as just a portable retro gaming device, but if it's easy to double as a fun FPGA platform then that would be great.

[1]: https://github.com/amaranth-lang/amaranth

I wrote my first project in VHDL (https://github.com/agg23/openfpga-pong) due to the type safety, then learned that the US (and Analogue team) primarily use Verilog, so I switched. I don't use many System Verilog features, but I saw no need to use older versions unnecessarily.

I've talked to the Amaranth people. I'm not incredibly interested in using real programming languages to write HDL, but I think I like keeping programming and hardware separate in some ways.

The Analogue Pocket is fantastic for getting started with FPGAs because everything you need is built into the device and it's not "too" expensive. You do lack Pmods. There is the fully open source Game Bub (https://www.crowdsupply.com/second-bedroom/game-bub) as a cool new platform to target, but it will have orders of magnitude fewer users than the Pocket. NOTE: I am extremely biased about the Pocket; I have a working relationship with Analogue and own the main platform ports to the Pocket (for example NES, SNES, and many more).