I already posted some thoughts there, but obviously the project is to recreate a feature-exact FPGA replacement because blitters are now hard to find - and some people like to add them in STFs!
However to speed-up the blitter, my reasoning was that it would need enhanced features, like being able to work from two RAM sources instead of one (to speedup masking, for instance).
Of course that kind of new feature is a completely different project, since it wouldn't profit any legacy software. Hence this post opening a different thread.
Also, I must add I have no FPGA programming skill whatsoever, I'm more a software than hardware guy, so everything I say here are pure ideas that I guess won't come to fruition any time. But here they are!
First thoughts I had...
Why not making a blitter than, while being 100% backward compatible with the ST blitter (and cycle accurate), would have another mode that enables more feature, like the Amiga's:
- Two RAM sources instead of one
- Different stride for source 1 and source 2 (to be able to mask & draw sprites in 1 pass on 4 bitplanes, for instance)
- Or alternatively, indicating how many bitplanes the sprite has, but that means 4 shift registers!
- Line drawing
- Polygon fill
Okay, so far it looks pretty much like a more complex Amiga blitter. So at this point I realized it would make a potential FPGA even more complex - because of the handling of 4 bitplanes in 1 pass.
My second thoughts were: wait, but the blitter is also used to change colors, so it has access to all addresses that are available on the ST bus.
So why not adding:
- Changing of whatever color is needed through a prepared list in RAM
It starts to looks like a Copper list now.
Then I found out another project - I can't remember where though - of someone making a 68000 replacement for Amiga, from a Raspberry Pi. So far it's quite in early stage, but the Amiga seems to boot, so I guess it's possible to make a new blitter from a Raspberry Pi - I don't know how, I guess there's some interface card to make between the Raspi and the blitter socket.
In any case, it means that maybe (maybe!) we can make something even more complex.
So... maybe we could somehow make this new blitter aware of the CRT beam position? Perhaps connecting it to the video circuit that handles Vsync and Hsync could allow it to detect Vsync and from there, count lines and/or cycles. The only thing is that it couldn't detect if it's in 50/60Hz until the next Vsync - unless the CPU tells the blitter which mode is actually on.
Now that our new blitter knows where the CRT beams is, it can:
- Change automatically colors based on a list in RAM
- Change the video counter based on a list in RAM
Now we have our Copper list. Actually, it could work the exact same way.
The CPU then had to start this mode, and the blitter would interrupt the CPU only when needed - and even interrupt its own transfers in that case. A kind of autonomous mode.
The only drawback is that it wouldn't work when a DMA disk transfer is in progress - the disk DMA has priority over the blitter. It could be handled by a register asking the blitter to stop every autonomous active mode. In any case, it would be up to the programmer to take care of this.
And of course, it wouldn't work in demos that require overscan, since the CPU needs to count cycles accurately.
...unless we add:
- Automatic sending fullscreen switches to the Shifter and GLUE to open required borders (top/left/right/bottom)
And guess what, that means you can now make fullscreen demos/games even when you use an accelerated CPU (Mega STE, TF cards, you name it). Even the desktop AFAIK, but fullscreen would have to be disabled during disk access.
So why stop here. We have a Raspberry Pi up there? Okay, why not:
- Audio PCM sample channel mix
There you are, a soundtrack mix as fast as you can get since the blitter only needs to read/write samples from RAM.
And well actually, putting a powerful ARM computer on the blitter socket actually make available all the ST RAM to it... so we can reverse roles:
- Mixing soundtrack on Raspi and sending then to a short-looping audio ST-RAM buffer (2 bytes)
- Hosting the "copper"-like list in Raspi memory, making color/video counter change every 4 cycles
- Drawing virtually anything to screen
- Hard-disk driver through the blitter
- Packing/unpacking data
So everything may be possible as long as there's cycles available to access RAM. The Raspberry Pi could even act as the ST is handled as a mere display...
I also must say I'm a fan of STE - I don't have any STF - so I'm naturally inclined to think about what would be possible on the blitter socket. But of course I guess everything would be possible to make on the 68000 socket as well. It's just that STF projects usually don't work on STE because of the 68000 socket difference. And also, it may start to be complex to add accelerators *and* a new blitter on the same socket.
Well, that's it


