~angelwood/uxn-pebble

Varvara Ordinator, written in C for the Pebble family of watches
experiment conlcuded, 0xedf is max for aplite
on tap show the pretty neralie animation, then return back to low power mode
remove letters from the banner.png, didnt like how it looks on the storefront

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~angelwood/uxn-pebble
read/write
git@git.sr.ht:~angelwood/uxn-pebble

You can also use your local clone with git send-email.

#UXN Pebble

An experimental implimentation of the UXN Virtual Machine for Pebble OS.

Due to memory limitations and wanting to keep this watchface avaliable on older generations of watches, this implimentation is not 100% complient with the UXN spec. Some notiable differences include:

  • Screen layers are non-functional as keeping a traditional framebuffer would be to expensive.
  • System memory is limited to 4096 bytes, later generations might able to handle 8192 bytes, this is configurable in config.h
  • Uxn roms must be directly compiled into the binary, you can use xxd -i to create header files
  • Most varvara devices will not work for obvious reasons (watchfaces cannot take input, theres no controller, etc...)
  • No colours will be rendered, colours will be rendered as defined in Varvara theme spec
    • They can be bodged in by changing the a in config.h

A custom interface is implimented allowing you to access pebble-only infromation. the spec is on my personal wiki

#Device Compatiability

  • [M] Aplite
    • Most ROMS will not work, however ones that are smaller then 1kb should run just fine
  • [Y] Basalt
  • [Y] Chalk
  • [Y] Diorite
  • [Y] Emery

#Why is my program asking me to check the README?

The "oopsies" screen with the beet being cut in half happens when the rom you tried to embed was so large. One trick that often works if to remove metadata and all non-assential assets, it should help squeeze the extra bits out

#How to compile

Firstly Install Dependency's. Mainly uv, qemu, and Node JS

sudo xbps-install uv nodejs qemu
sudo pacman -S uv qemu-full nodejs
sudo apk add uv qemu nodejs
# most package managers should have whats needed. you can figure it out :33

Secondly, we need to install the pebble toolchain

uv tool install pebble-tool

Finally, we can build the app and install it (either in an emulator or on a connected device)

pebble build
pebble install --emulator basalt # install on emulator, colour
pebble install --emulator diorite # install on emulator, b&w
pebble install # install on device

QEMU control's are as follows:

UP: W
SELECT: S
DOWN: X
BACK: Q

#Misc

#Resources I used as a reference on the code / documentation for subsystems

#What need to be done

  • Fix Janky screen code, and impliment:
    • Pixel fill mode
  • Maybe add gyroscope, heart rate, compass, battery, vibration, bluetooth status to expansion port
    • Maybe audio port could be used to create vibrations?