Lab 2: Screen Coordinates on a Round Display
The coordinate system itself hasn't changed from the OLED kit: (0, 0) is the upper-left corner, x grows right, y grows down. What changes is what happens at the edges. The GC9A01 addresses a 240x240 square of pixels, but the glass in front of it is the circle inscribed in that square — so a pixel at, say, (5, 5) is a real, legal, drawable pixel that a person looking at the watch will never see.
Sample Program Code
This lab draws the same corner-and-center markers a rectangular display lesson would, so you can see exactly how many of them survive:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | |
Here's what actually reaches the glass:

Count What Survived
Four corner squares went in. Look at the image: how many corner labels can you actually read? A corner of the 240x240 square sits roughly 170 pixels from the center — well outside the SAFE_RADIUS of 112 that config.py defines as the practical edge of the visible glass. Every one of them is gone, and nothing in the driver ever complained about drawing them.
That silence is the lesson. On a rectangular display, a coordinate either fits on screen or it doesn't, and "off screen" behaves the same in every direction. Here, whether an x is usable depends on the y it's paired with — the two are no longer independent. config.inside_circle(x, y) does that arithmetic so you don't have to reason about it by hand every time you place something near the rim.