PiTubeDirect icon indicating copy to clipboard operation
PiTubeDirect copied to clipboard

Frame Buffer: Remaining work

Open hoglet67 opened this issue 4 years ago • 0 comments

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

hoglet67 avatar Feb 05 '21 12:02 hoglet67