Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Frame Buffer: Remaining work #113

Open
hoglet67 opened this issue Feb 5, 2021 · 0 comments
Open

Frame Buffer: Remaining work #113

hoglet67 opened this issue Feb 5, 2021 · 0 comments

Comments

@hoglet67
Copy link
Owner

hoglet67 commented Feb 5, 2021

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant