Clockwork PicoCalc · Volume 10

PicoCalc Volume 10 — Use-Case Playbooks: Calculator & Games

Turning the PicoCalc into a graphing calculator and a retro-game console

Contents

SectionTopic
1About this Volume
2Use-Case Playbooks: Calculator and Games
· 2.1PicoCalc as a fully-functional graphing calculator
· · 2.1.1Path A — PicoMite + custom BASIC programs
· · 2.1.2Path B — uLisp with symbolic algebra
· · 2.1.3Path C — MicroPython + sympy port
· · 2.1.4Comparison vs. dedicated graphing calculators
· 2.2PicoCalc as a retro-game console
· · 2.2.1What’s playable
· · 2.2.2Setup steps for NES emulation
· · 2.2.3Sourcing ROMs ethically
· · 2.2.4Keyboard-to-controller mapping
· · 2.2.5Audio — making games sound tolerable

1. About this Volume

This volume covers two end-to-end use cases: the PicoCalc as a fully-functional graphing calculator, and the PicoCalc as a retro-game console.

For the calculator role, three implementation paths are walked through: PicoMite + custom BASIC programs (works on any Pico), uLisp with symbolic algebra (RP2040-only, niche), and MicroPython + a stripped-down sympy port (Pico 2 only, RAM-bound but the fullest symbolic capability). The chapter ends with a head-to-head comparison against the dedicated graphing-calculator market — TI-84 Plus CE and NumWorks N0110.

For the game-console role, the chapter covers what’s actually playable on each Pico variant (NES, GB, GBC, SMS, GG, TIC-80), where to source ROMs ethically, how to map the PicoCalc keyboard to standard game-controller inputs, and what audio mods (Volume 6, Volume 7) make the experience tolerable.

2. Use-Case Playbooks: Calculator and Games

2.1 PicoCalc as a fully-functional graphing calculator

The PicoCalc has the right shape for a graphing calculator: a screen big enough to show plots, a real keyboard, and a battery. Three implementation paths:

2.1.1 Path A — PicoMite + custom BASIC programs

PicoMite’s MMBasic dialect has built-in PLOT, LINE, CIRCLE, RECTANGLE, TEXT, plus full IEEE-754 double-precision math. Floor-effort graphing calculator in BASIC:

' Plot y = sin(x) for x in [-2*PI, 2*PI]
CLS
DRAW LINE 0, 160, 320, 160, RGB(GRAY) ' x-axis
DRAW LINE 160, 0, 160, 320, RGB(GRAY) ' y-axis
FOR x = -2*PI TO 2*PI STEP PI/160
  px = 160 + x * (160/(2*PI))
  py = 160 - SIN(x) * 100
  PIXEL px, py, RGB(BLUE)
NEXT x

This works on any Pico variant (the only bottleneck is interpreter speed — a few hundred ms per plot on Pico 1, near-instant on Pico 2).

For full graphing-calc functionality, you need:

  • Function entry parser: parse y = sin(x) + cos(2x) into evaluable form. PicoMite’s EVAL does this for free.
  • Multi-function plotting: use multiple colors.
  • Zoom/pan via keyboard: read arrow keys, redraw with new bounds.
  • Trace mode: cursor along the plotted curve, show coordinates.
  • Numerical integration / differentiation: implement Simpson’s rule and central differences in BASIC.
  • Symbolic differentiation / simplification: harder — PicoMite has no symbolic library. See path B or C.

Reference implementation: https://forum.clockworkpi.com/t/rpn-calculator-for-picocalc-v1/19917 (“RPN Calculator for PicoCalc V1”) is an HP48-inspired BASIC implementation that covers most of the above. ~800 lines of BASIC.

2.1.2 Path B — uLisp with symbolic algebra

uLisp can evaluate symbolic expressions natively (it’s a Lisp). A small symbolic-math library in Lisp covers differentiation, simplification, and limit-style transformations. Caveats: uLisp is RP2040-only as of v1.1, and symbolic stacks consume RAM fast — long expressions can OOM.

2.1.3 Path C — MicroPython + sympy port

sympy is a full-featured symbolic-math library for Python. There is no full sympy for MicroPython (too big — sympy is ~30 MB), but a stripped-down subset called mpsympy exists for educational use. Capabilities:

  • Symbolic differentiation, integration, simplification.
  • Equation solving (linear and basic quadratic).
  • Plotting via the LofiFren display module.

Memory is the binding constraint: even the stripped subset wants 200+ KB of RAM. Only viable on Pico 2 because of its 520 KB SRAM.

2.1.4 Comparison vs. dedicated graphing calculators

FeaturePicoCalc (PicoMite)PicoCalc (Path C)TI-84 Plus CENumWorks N0110
Plot speedFast on Pico 2MediumMediumFast
Display resolution320×320320×320320×240320×240
Numerical accuracyDouble precisionArbitrary precision14 digitsDouble
Symbolic mathNo (path A)Yes (limited)No (CE)Yes (KhiCAS)
Open source / programmableYesYesLimitedYes
Battery life~30 h~25 h100+ h (AAA)~30 h
Cost$75 + module$75 + Pico 2$130$100

Verdict: a PicoCalc on Path A or Path C is competitive with the TI-84 Plus CE for plotting and beats it for programmability. For symbolic math the NumWorks N0110 is the strongest dedicated alternative; PicoCalc on Path C is competitive but RAM-limited for large expressions.

2.2 PicoCalc as a retro-game console

2.2.1 What’s playable

SystemBest PicoFrame rateNotes
NESPico 160 fpspico-infonesPlus, ships in factory bundle
Game Boy (DMG)Pico 160 fps (just)Pico-GB (YouMakeTech)
Game Boy ColorPico 260 fpspeanutGB, gb-rp2350
Sega Master SystemPico 260 fpspico-sms
Game GearPico 260 fpspico-sms with 8x scaling
Game Boy AdvancenoneunplayableUse Pi Zero 2 W (Doc 3)
SNESnoneunplayableUse Pi Zero 2 W (Doc 3)
TIC-80 fantasyPico 260 fpspico2-tic80
PicoMite gamesboth60 fpsGeoff Graham’s site has 50+ games
NES emulator running on PuNES (NTSC region) — representative of the NES experience the PicoCalc + pico-infonesPlus delivers, with a 320×320 display upscaling 256×240 native NES output.
NES emulator running on PuNES (NTSC region) — representative of the NES experience the PicoCalc + pico-infonesPlus delivers, with a 320×320 display upscaling 256×240 native NES output.

Figure 2.2.2 — NES emulation reference. File:PuNES NTSC main2.png by Gameposo. License: CC BY-SA 4.0. Via Wikimedia Commons.

2.2.2 Setup steps for NES emulation

  1. Download pico-infonesPlus UF2 from https://github.com/fhoedemakers/pico-infonesPlus/releases (pick the picocalc build for the right architecture).
  2. Copy to pico1-apps/nes_emu.uf2 (or pico2-apps/nes_emu.uf2).
  3. Create pico*-apps/roms/nes/ on the SD and put .nes ROMs there. The emulator scans this folder.
  4. Boot with the bootloader hotkey held; select the NES emulator.
  5. The emulator’s own menu lets you pick which ROM to load.

2.2.3 Sourcing ROMs ethically

  • Public-domain / homebrew ROMs: https://www.nesworld.com/ has hundreds. https://itch.io/games/free/tag-game-boy for GB homebrew.
  • Dump from your own carts: a CartReader (search “open-source NES dumper” on GitHub) reads your physical cartridges into .nes files. This is the legally safest route for retail games — you own the cartridge.
  • Don’t: download “ROM packs” from random sites. Most of these are commercial games whose copyright is still active; the legal status varies by jurisdiction but is broadly not in your favor.
Game Boy Color homebrew running in an emulator. Representative of the GBC experience the PicoCalc + RP2350 delivers via peanutGB or gb-rp2350. Pico 1 cannot quite drive GBC at full speed; Pico 2 ha…
Game Boy Color homebrew running in an emulator. Representative of the GBC experience the PicoCalc + RP2350 delivers via peanutGB or gb-rp2350. Pico 1 cannot quite drive GBC at full speed; Pico 2 handles it comfortably at 60 fps.

Figure 2.2.3 — Game Boy Color emulation reference. File:Gambatte Emulator.jpg by Wikimedia Commons contributor. License: CC BY-SA 4.0. Via Wikimedia Commons.

2.2.4 Keyboard-to-controller mapping

The PicoCalc has no gamepad — its 67-key keyboard stands in. Every emulator needs a key map from the PicoCalc’s physical keys to the console’s virtual buttons. The conventions that work well:

Console buttonPicoCalc keyNotes
D-padArrow keysNative — the PicoCalc’s four-way D-pad cluster maps 1:1
AZLeft-hand home row, comfortable for long sessions
BXAdjacent to A; mirrors the NES controller layout
StartEnterIntuitive
SelectRight ShiftOut of the way, hard to hit accidentally
L / R (GBC)A / SOnly needed for GBC; mirrors WASD-adjacent placement
Turbo A / BC / VOptional; some emulators support auto-fire

Most PicoCalc emulators (pico-infonesPlus, peanutGB, pico-sms) read keys via the STM32 keyboard coprocessor’s I²C interface (same path as normal typing). The key map is typically a #define block near the top of the emulator’s source — edit, rebuild, reflash.

If you want to remap at the keyboard-coprocessor level instead (so the map persists across all firmware), see Volume 6 §6.1 for the STM32 keymap modification procedure.

2.2.5 Audio — making games sound tolerable

The PicoCalc’s stock speakers are small and tinny. For gaming this ranges from “fine for chiptune NES” to “painful for anything with sampled audio.” Three tiers of improvement:

  1. Software volume control. Most emulators expose a volume setting. Start here — turning down to ~60% eliminates the worst clipping distortion from the tiny speakers.
  2. Headphone jack. The PicoCalc has a 3.5 mm headphone jack wired to the same audio path. Plug in any decent earbuds and the experience transforms. This is the zero-effort fix.
  3. Hardware audio mods. Volume 6 §6.2 covers the speaker-grille mod (~6 dB improvement for two minutes of Dremel work). Volume 7 §10.1 covers the PCM5102A I²S DAC add-on — true 24-bit audio with its own headphone amp, which turns the PicoCalc into a genuinely good-sounding device. Overkill for NES chiptunes, but worth it if you’re also using the PicoCalc for music playback or ham-radio audio (Volume 11).