David's ST Graphics Card v0.2
Posted: 04 Oct 2023 12:04
Morning.
Last year I threw together a little graphics card project based on a cartridge which, when paired with DSTB1 and some flyleads fufiled its sole purpose which was to output a fixed palette (3R-3G-2B bits) 8 bit chunky VGA (640x480) display.
Unfortunately I couldn't make a true colour 8 bit VDI driver work so instead I halved the display width and used the Falcon's TC 16-bit VDI and ended up with what you see in this video:
Something was a little off in my read timings, but it did kind of prove the concept.
Because of assumption I made about having a paletteless display and the speed rating of my 8-bit SRAM chip I could only really do mono or 16 bit displays with the VDIs available and 640 was the max X resolution.
Design-wise, it was a simple framebuffer (no HW acceleration) and it relied on the DSTB1 to decode 0xC00000 to 0xC7FFFF and long extension cables were provided off the 68k slot for RW and three extra address lines to allow the 512k memory to be accessed. It made no attempt to provide accelerated memory performance, running at the ST's stock 4MB/s.
Follwing a bit of a kick around over in this thread viewtopic.php?p=106414#p106414
with @mrbombermillzy and others, I'm tempted to buld a v0.2, just to play with again.
So what should we try in this one?
The cartridge port was nice as it gets the VGA port on the outside of the machine, can be easily probed and provides a lot of the lines required, but it doesn't have the RW line, it can't issue a DTACK and it only natively has 64k of address space (ie. A1-A15). This means it needs a companion board anyway (in the first case it was DSTB1) to handle the address decoding and it needs to pick up extra lines from somewhere.
An alternative is to plonk the whole thing on the 68k port and let the user worry about a) fitting it and b) routing out the VGA line.
In most STs, that suffers from the normal problem of relocating the 68k socket to make anything fit, but that's kind of a standard anyway. I could do an STE-only board, of course. Sockets are there already. Perhaps I'd end up in the unusual situation of needing an ST to STE adapter, for a change!
What do we think?
Then the next question is what would we like it to do. To me the obvious now is to have a palletised chunky 256-colour mode. There exist chunky drivers for this in NVDI, I'm told (not tried). Or would a 16 colour planar mode, but in VGA resolution be the target? What about a widescreen mode?
To be honest, this ties in a little bit with a Falcon project I had in mind: there is just over half a meg of expansion memory available on the Falcon in the ST-RAM address space (ie. it's blitterable). What's the best resolution to target to fit in 512 of framebuffer with 16 bit graphics? 640x400 True colour mode on VGA becomes possible on a non-accelerated Falcon. Would that be good on the ST? What about 704x368x16 bit?
Anyway, I'm idly chucking things around for a possible future project. What do you reckon?
BW
Last year I threw together a little graphics card project based on a cartridge which, when paired with DSTB1 and some flyleads fufiled its sole purpose which was to output a fixed palette (3R-3G-2B bits) 8 bit chunky VGA (640x480) display.
Unfortunately I couldn't make a true colour 8 bit VDI driver work so instead I halved the display width and used the Falcon's TC 16-bit VDI and ended up with what you see in this video:
Something was a little off in my read timings, but it did kind of prove the concept.
Because of assumption I made about having a paletteless display and the speed rating of my 8-bit SRAM chip I could only really do mono or 16 bit displays with the VDIs available and 640 was the max X resolution.
Design-wise, it was a simple framebuffer (no HW acceleration) and it relied on the DSTB1 to decode 0xC00000 to 0xC7FFFF and long extension cables were provided off the 68k slot for RW and three extra address lines to allow the 512k memory to be accessed. It made no attempt to provide accelerated memory performance, running at the ST's stock 4MB/s.
Follwing a bit of a kick around over in this thread viewtopic.php?p=106414#p106414
with @mrbombermillzy and others, I'm tempted to buld a v0.2, just to play with again.
So what should we try in this one?
The cartridge port was nice as it gets the VGA port on the outside of the machine, can be easily probed and provides a lot of the lines required, but it doesn't have the RW line, it can't issue a DTACK and it only natively has 64k of address space (ie. A1-A15). This means it needs a companion board anyway (in the first case it was DSTB1) to handle the address decoding and it needs to pick up extra lines from somewhere.
An alternative is to plonk the whole thing on the 68k port and let the user worry about a) fitting it and b) routing out the VGA line.
In most STs, that suffers from the normal problem of relocating the 68k socket to make anything fit, but that's kind of a standard anyway. I could do an STE-only board, of course. Sockets are there already. Perhaps I'd end up in the unusual situation of needing an ST to STE adapter, for a change!
What do we think?
Then the next question is what would we like it to do. To me the obvious now is to have a palletised chunky 256-colour mode. There exist chunky drivers for this in NVDI, I'm told (not tried). Or would a 16 colour planar mode, but in VGA resolution be the target? What about a widescreen mode?
To be honest, this ties in a little bit with a Falcon project I had in mind: there is just over half a meg of expansion memory available on the Falcon in the ST-RAM address space (ie. it's blitterable). What's the best resolution to target to fit in 512 of framebuffer with 16 bit graphics? 640x400 True colour mode on VGA becomes possible on a non-accelerated Falcon. Would that be good on the ST? What about 704x368x16 bit?
Anyway, I'm idly chucking things around for a possible future project. What do you reckon?
BW