Hello,
I just stumbled on this thread. I am the designer of the Xosera retro video project (along with Roscopeco who designed the Xosera hardware board and the copper co-processor - and the main computer I am using with it).
? For me, a good retro computer has to have "fun" retro graphics and an FPGA is the closest thing to making a custom ASIC "video chip" for that right now. VERA seems a
very nice design, but it wasn't clear it would be open originally which is why I started on Xosera (besides wanting an excuse to
really learn Verilog). Xosera was started before I was even sure what FPGA the X16/VERA was going to use. Xosera is trying to extend the rosco_m68k system to be "kind of similar" to Amiga or Atari ST era computers for graphics (with a some SNES and other tiled systems mixed in due to VRAM limits).
? I have been a game developer for a fair number of decades (for 6502, 68K and many other systems) and I basically tried to cram in as many "video chip" features in as possible that would make sense to use to "make a game" (or demoscene demo etc.) with 128KB of VRAM and a retro CPU. The 128KB of "VRAM" (SPRAM) seemed just enough for a reasonable video design (with some clever retro tricks - not for brute force true-color bitmaps [boring]).
The design has pretty much exceeded my expectations, but I am currently running up on some resource limits of the FPGA now when I enable every option. The 4 channel Amiga-like audio was a bit more "expensive" than I was hoping. Currently it seems I can fit 2-channels of audio with most of the other important features (dual playfields, blitter, copper), but I really want four channels (for good MOD audio sources).
? I had certainly intended to include sprites (or at least one for an "easy" mouse cursor), but this resource limit is making me having to rethink things a bit. I will mention the included blitter can draw a large number of blitter-objects so it is not totally clear to me that sprites are required (in my initial testing I can erase and re-draw ~10 32x16 16-bpp objects in the VBLANK interval - so quite a large number should be possible with double buffering). A few sprites would be very handy though...
As far as DMA bandwidth, Wavicle is correct that *if* you use full horizontal resolution (640 or 848 for 16:9) on both play-fields with both showing 8-bpp, there is indeed no more memory bandwidth during the pixel scan out time. However this isn't generally realistic, because of VRAM limits so as a practical matter you probably are going to either be horizontally pixel doubling or using 4-bpp - or both (I will mention Xosera does also have 10KB of "tile" memory that can be accessed in parallel with VRAM, so sprites
could live there).
Given all that, still sprite bandwidth is "not really a big problem" (vs the FPGA being "full") because there are a quite a lot of off-screen cycles where the sprite DMA could occur (~275 of them on each line before the first pixel, this is also where the audio DMA currently occurs). So using this DMA time, the sprite "line buffers" could be filled before scan-out (and then overlaid on top of play-field at the appropriate horizontal pixel).
I still hope to optimize and trim to get pretty much everything fitting, I am making slow progress (it is close - but the routing gets problematic). For sure I plan to make some sprites available an option in the design (even if you can't enable *all* the options at once using this small FPGA). Xosera has already been ported to other larger FPGAs (ECP5) as well as hooked up to a 6502 system
https://zeromips.org/posts/2022-03-20-xosera/ (with a nice demo ported over too, linked below). Even though Xosera was designed for use with 68K, since it is using an 8-bit parallel bus interface, pretty easy to use with any 8-bit CPU (main issue is level conversion or running at 3.3v - like I did with AVR). So lots of "retro" possibilities.
I am still working on the SystemVerilog design, but I look forward to writing some 68K (and 6502) code to do some fun things on Xosera eventually. I love all the older systems and programming them (and FPGAs to make new modern-retro designs).
Take it easy,
Xark
https://hackaday.io/Xark