Graphics functions on Lisp Badge


#1

If possible, I would like to have the graphics functions from http://www.ulisp.com/show?23QU on the Lisp Badge.


#2

Unfortunately I don’t think it’s possible to implement functions to plot a point or draw a line, because in the display used on the Lisp Badge two pixels are stored in each byte of display memory, and the display driver doesn’t offer a function to allow you to read the display memory. If you drew two lines crossing each other the second line would erase a pixel from the first line.

The only solution would be to keep a copy of the display in RAM, a heavy price to pay!

The plotting routines I’ve provided in the Lisp Badge get around this problem by plotting in a sequence that makes it possible to plot two pixels at a time.


#3

Actually, you could do it if you defined each pixel for plotting as two adjacent screen pixels horizontally, giving a screen resolution of 128 x 64. It would be a bit odd because the plotting pixels would be rectangular.

I could give you some uLisp functions that demonstrate it.


#4

Yes, I had been thinking about that idea, with a view toward running games on the Lisp Badge.

With that approach, the Lisp Badge’s resolution would match the Arduboy’s, even though everything would look wider. The Arduboy is monochrome too, so I think even a monochrome mode that keeps a 1 KiB copy of the screen contents might be worthwhile if it would speed up drawing operations and allow for collision detection. I wonder what the maximum speed of graphics operations could be, given the display’s serial interface. I haven’t had a chance to try anything yet, so demo uLisp functions would be useful.