Are analog built-in (factory) watch faces written in Monkey C?

Former Member
Former Member

Hi there.
I'm just trying to develop analog watch face for Fenix 5s Plus which is similar to built-in Garmin's analog watch face with hour/min/sec hands and three circles indicating steps, battery state, alt,... (you know this watch face from the Fenix 5 plus series box photos). The reason is to add some indicators missing in the built-in face, but preserve the design which I like. I have no problem with display buffering, 1 Hz hand update and so on, but with the graphics. When I draw the text, hands, and circles, only the text is anti-aliased (system font). But the built-in face has anti-aliased hands (even second hand) and circles/lines (I checked it by print-screen analysis and by magnifying glass).
The question is: Are the built-in faces running in virtual machine environment like a custom watch faces or are they written in C or even in Cortex-M4 assembly language with proprietary anti-aliasing graphic routines to save the battery as much as possible? Or did I miss anything - some anti-aliasing switch in Connect IQ 3.x ...?

Thanks for answer.

  • If I’m not missing anything...  you need to handle the anti-aliasing yourself.  Start here: forums.garmin.com/.../49315

  • Some built-in widgets and watch-apps are built using MonkeyC, but I don't believe that there is any native watch face that is.

  • I firmly believe they are NOT written in Monkey C. While the antialiasing technique using font tiles can achieve something very close to the stock watch face look, and honestly is a brilliant technique, but there are a lot of restrictions and shortcomings. For example if you want all the elements to be antialiased such as in your screenshot, and still maintain the power budget, you would need a full size bitmap buffer, but then you are SEVERELY restricted in memory to construct reasonable size tiles or tile groups. Even if you do manage to squeeze in the tiles, the constant loading and unloading of resources and you end up with huge battery drain even if you only do it once every minute.

    On the other hand, if you dont use a full size bitmap buffer and draw antialiased elements directly to the screen, then maintaining the power budget becomes very taxing, even if you are very careful about your bounding regions.

    It would be great if they offered a lower level access that would allow us to create watch faces like that of the stock ones, especially being able to relax the memory constraints.