breakintoprogram / agon-vdp

Official AGON QUARK Firmware: ESP32 VDP
MIT License
76 stars 27 forks source link

PLOT 69 does not set the current position. #129

Closed paulscottrobson closed 11 months ago

paulscottrobson commented 12 months ago

PLOT 69,x,y should set the current position to X,Y ; it appears not to.

e.g. PLOT 69,100,100 : PLOT 5,200,100 doesn't draw a line* PLOT 4,100:100:PLOT 5,100,100 does

Actually it does, but it draws it from a random ? place, probably the initial uninitialised drawing position. It's not where it's supposed to be

Verified behaviour on JSBEEB

Appears to be a feature of fabGL ; calling SetPixel does ... just that and nothing else.

I think this is fixable by :

adding canvas->moveTo(p1.X, p1.Y) in plotPoint() in graphics.h ?

NB: In the documentation it says VDU 25,0,640;512; plots a point. This is incorrect ; it should be 25,69,640;512;

stevesims commented 12 months ago

verified. great spot! plotting a point should indeed set the current position. the VDP code half manages to do that, but only for its own internal point tracking, and doesn't tell the underlying graphics canvas :grin:

you're right that a call to canvas->moveTo would fix. that's probably slightly better done as just a moveTo() function call

I'll raise a PR shortly with a code fix