Pico Computer 3 v0.9 (test)
Firmware and manual for the Pico Computer 3 (RP2350B).
New in v0.9
- 3D engine —
draw3d— MMBasic's DRAW3D ported as a module: quaternion-rotated polyhedra with backface culling, painter depth-sorting, per-face colours/fills/flags/lighting, and hidden-line rendering (depthmode=2, the z-buffer wireframe mode — the Elite look). Demos:tests/football.py(Peter's bouncing truncated icosahedron),tests/elite.pyandtests/cobra.py(hidden-line wireframe ships). hdmi.RGB640_4— 640×480 in 16 colours, the fast game mode: the 150 KB framebuffer is half the video SRAM, sohdmi.create()'s off-screen F buffer takes the other half. Double-buffered 3D now runs faster than MMBasic on the same hardware.- RGB320 fast double-buffering —
hdmi.create()called beforehdmi.layer()claims the second half of video SRAM for the F buffer (first come, first served;layer()then errors untilclose("F"); calllayer()first and both coexist as before). - Turtle pattern fills —
t.fillpattern(0..31)(fp), MMBasic's 32 8×8 fill patterns, plus a fix for the speckled border artefact on filled shapes;hdmi.polyfill()exposes the scanline pattern fill to everything else. pcmath.AHRS— Mahony and Madgwick sensor fusion (MMBasicMATHverbatim) for IMU work: feed gyro/accel (/mag), get quaternion or Euler angles.- Overclock flash fix —
screen(..., 315)/screen(..., 378)no longer hard-hangs: the post-write XIP re-entry now respects the flash's limits at every supported CPU clock (PICO_FLASH_SPI_CLKDIV=4, MMBasic's setting). - 4-bpp modes corrected — all C drawing paths now share framebuf's GS4_HMSB nibble order; RGB1024 text and graphics render with columns the right way round.
- Console robustness — Ctrl-C during a dupterm write no longer kills the screen console;
run()always restores drawing (and the console) to the visible display when a program ends, however it ends — no more "dead REPL" after interrupting a double-buffered program. - Performance — the 3D engine and drawing core use single-precision hardware FPU arithmetic and horizontal-span fills throughout (MMBasic parity).
pyeeditor sizing — the editor takes its screen size from the active console, fixing the bottom line in RGB320.run()arguments —run("prog.py", "in.wav", 10)hands the program its command line insys.argv, exactly as desktop Python (and MMBasic'sRUN "prog", cmdline/MM.CMDLINE$); arguments arrive as strings,argv[0]is the program path.- Manual and development notes updated throughout.
Flashing
USB HUB switch to DISABLE → connect the Prog port to a PC → hold BOOT, click RESET → drag firmware.uf2 onto the drive that appears → switch back to ENABLE. Your files and settings survive.
The PC emulator
New with this release: pc3emu-linux-x64.tar.gz — the Pico Computer 3 as a PC program. The same interpreter, drawing code, keyboard decoding, audio and Python toolkit as the firmware, with the hardware provided by SDL2: it boots to the banner and >>> in a window and runs the book's programs unmodified (the SD card comes pre-seeded with them). Runs on Linux, and on Windows via WSL2 — INSTALL-WINDOWS.md (also inside the tarball) walks a machine that has never seen WSL all the way to the running emulator, no Linux experience or compiler required. The release assets were refreshed on 18 July: firmware and emulator now build from the same tree, which also brings pico-sdk 2.3.0 and an upstream MicroPython sync (including a fix for pin interrupts on GPIOs above 30).
Compatibility: the prebuilt emulator binary needs glibc 2.43 or newer — Ubuntu 26.04+ (on older releases it stops with version `GLIBC_2.43' not found). On Windows/WSL, install the right version by name: wsl --install -d Ubuntu-26.04 (details in INSTALL-WINDOWS.md). On an older Linux, build from source instead — it works on any distro and takes a few minutes. Clone with git; GitHub's source ZIP/tarball won't build (it lacks the submodules):
sudo apt install -y git build-essential libsdl2-dev python3
git clone --branch pico-computer-3 https://github.com/UKTailwind/micropython
cd micropython
make -C mpy-cross -j$(nproc)
make -C ports/unix VARIANT=pc3 submodules
make -C ports/unix VARIANT=pc3 -j$(nproc)
chmod +x ports/rp2/boards/PICO_COMPUTER_3/emulator/pc3emu
ports/rp2/boards/PICO_COMPUTER_3/emulator/pc3emu