iPod Nano game developed with Embedded Swift for Armv4t

Summary

A fifth port of CelesteCore: a Rockbox plugin for the iPod Nano 2G, with the engine compiled as Embedded Swift for armv4t-none-none-eabi — the Nano's FPU-less ARM940T — and linked into celeste.rock by Rockbox's own build system. Verified playable on hardware at a steady 30 Hz, with sound effects.

Rockbox calls the C plugin_start() in ports/iPod/plugin/celeste.c, which owns the loop, buttons, pacing, and blitting, and calls three @_cdecl Swift entry points (celeste_init / celeste_frame / celeste_restart). The 128×128 canvas renders 1:1, centered on the 176×132 RGB565 LCD.

Final .rock is ~130 KB (text 102 KB + data 28 KB + bss 33 KB) against the 512 KB plugin buffer.

5 Likes

Very cool project. Getting Embedded Swift running on an old Armv4t device and keeping it playable at 30 Hz is impressive. I'd be interested to see more details about the toolchain and any challenges you ran into with such limited hardware.

the prebuilt armv4t-none-none-eabi Embedded Swift stdlib (swift-6.3.2+) makes this work out of the box;