A core for Analogue Pocket that is an early work-in-progress FPGA implementation of Varvara / Uxn by Hundred Rabbits.
Unzip the latest core from the Releases section, and copy + merge the Assets, Cores, and Platforms folders to your Analogue Pocket SD Card.
- Display: 320x288 at 60Hz
- CPU: 44.411586 MHz
- Main RAM: 64 KB
- Stack RAM: 2x 256 bytes
- Device RAM: 256 bytes
If you see a black screen after loading a ROM, the ROM is likely actually still running. Sometimes you need to open Core Settings -> Display Mode, and re-select a display mode, to see video output. This was a bug on Analogue's end. Upgrading to AnalogueOS 2.1 or above fixes this issue.
ROMs may need to be padded with additional empty bytes (0x00) to be an even multiple of 4 bytes. Updating to Analogue OS 2.2 fixes this issue.
Many Varvara device features aren't implemented:
- audio
- keyboard
- file system
- console
ROMs larger than 65280 bytes probably won't work, because only the first 64KB is loaded into RAM, and there is no expansion memory support.
I added some test ROMs into the dist/assets folder. Some of these are slightly modified examples from the Uxn Chibicc fork example code:
bounce.rom- bouncing square demofill_test.rom- draws a pattern of fills from bottom-right and then top-leftmandelbrot.rom- draws a Mandelbrot, vertical line-by-linecube3d.rom- draws a spinning 3D wireframe cube
Quartus Lite App:
Use Quartus Lite Edition to open the project at src/fpga/ap_core.qpf and build.
Command line (example):
~/altera_lite/24.1std/quartus/bin/quartus_sh --flow compile src/fpga/ap_core.qpf
Use a Docker Quartus image to build:
Clean (example command using a Docker Quartus Image):
docker run --platform linux/amd64 -t --rm -v $(pwd):/build didiermalenfant/quartus:22.1-apple-silicon quartus_sh --clean ap_core.qpf
Build (example command using a Docker Quartus Image):
docker run --platform linux/amd64 -t --rm -v $(pwd):/build didiermalenfant/quartus:22.1-apple-silicon quartus_sh --flow compile ap_core.qpf
The resulting bitstream at output_files/ap_core.rbf will need to be reversed into a bitstream.rbf_r file, before running on a Pocket.
See Creating a reversed RBF for more details.



