PiTubeDirect
PiTubeDirect copied to clipboard
Frame Buffer: Remaining work
This issue is a bit of a dumping round for finishing off the frame buffer work.
See also a more upto date list here: https://github.com/hoglet67/PiTubeDirect/wiki/Pi-VDU-Driver#known-issues
At some point, we should split these into seperate issues. Or edit this issue as things are complete.
Features
Details on many of these can be found here: http://beebwiki.mdfs.net/VDU_23
Implement cursor direction (e.g. right to left) (VDU 23,16)
- hopefully recent changes to the framebuffer.c should make this easier
Implement PLOT &D0 + n (FONT plot)
Finish off Block Move:
- Currently only copy is implemented
- add support for block move (blanking original)
- add support for block swap
- consider writing an ARM assembler version
- clip vertically (currently just the horizontal bounds are checked)
Implement VDU 14/15 (enable/disable page mode)?
Implement VDU 6/21 (enable/disable VDU drivers)?
Revisit V3D code - it would be nice to have a way to do complex 3D rendering (texture + multiple triangle), even if this is non-standard
Bugs
Draw arc doesn't currently handle screen modes with non-square pixels. Maybe switch to the ellipse version of Bresenhan. Or is a quick fix possible, as pixel aspect ratios are limited (2:1 1:2 and 1:4)
Draw arc sometimes omits final points
Fill Arc/Segment sometimes misses bits of a very thin shapes
Completed
Implement missing misc operations (VDU 23,17)
Implement fill patterns
- (this might be alot of work!)
- VDU 23, 2-5
- VDU 23, 11-15
- also VDU 23,17,6 set ECF origin
Implement dotted line patterns (VDU 23,6)
Implement flashing colours
- timer driven
- using palette changes
- VDU 23, 9-10 set mark space ratio
ReImplement VDU sprites correctly
- definition using MOVE, MOVE, VDU 23,27
- drawing using PLOT &E8+n
Implement cursor control (VDU 23,1)
- also consider switching to the framebuffer hardware cursor
- some work on this in a local branch called hwcursor
- also look at Rod's work on this
Implement subset of teletext display characteristics (VDU 23,18)
Finish off Teletext Mode:
- pick a single framebuffer size (e.g. 480x500 or 1200x1000) and clean up rendering code
- consider using 12x20 font that already has character rounding applied. I've got a version of this that's used in BeebFPGA. I think it also includes the graphics characters pre-rendered as well. This should simplfy things and improve efficiency.
- update the rendering code to allow out-of-order updates to be handled correctly
- iterate on the REPEAT VDU RND(224)+31:UNTIL FALSE test, using *PIVDU 3 on the Native ARM Co Pro to replicate the VDU stream to the Master and Pi.
Rework non-standard use of VDU 23,2-9
- see comment from JGH here
- font selection / scale could use VDU 23,26
- remove current mouse pointer code
- remove current sprite code