The previously-alluded quirks: 1. Once you build the rbf, you have to "reverse" it. The bits of every byte must be reversed in order https://www.analogue.co/developer/docs/packaging-a-core#creating-a-reversed-rbf It expects a .rbf_r file, not a .rbf. 2. The rbf must be accompanied by a number of *very specific* application-specific JSON files. They should not be auto generated, although in many programs they will be equal to defaults. So either these json files have to be provided as an input when building amaranth somehow, or the json files have to be somehow generated within python, like TopLevel(Elaborate) has to supply dictionaries that become the json files. These cover everything from "what screen resolution do I expect?" to "do I use sound?" to pure metadata. Along with the jsons there's an optional binary file containing an icon and an optional text file containing a description. Just lots of extras, and somehow these have to get specified. 3. In addition to the application-specific JSON files, there are some *other* files, which are the same every time and can be autogenerated. 4. The application-specific files, and the "generic" files, all must be deposited around the file system of the Pocket's SD card in a specific directory structure. This means that when generating a "build", you probably want your build output to be a directory or a .zip of a directory, in a particular standardized layout that the community has adopted and that there are various existing tools like Pocket Sync that know how to take that standard .zip and install it onto a device. 5. That's if you're building for distribution. If you want to build for *local install*, there are *two* options for what you might want to do. Option one is to put the device in "USB mode", which means if you plug it in to a PC it mounts its SD card as a drive. Then you can install your files in their various desirable places (mimicking Pocket Sync). (Option 1.5 is to just pop out the SD card and mount it normally, I guess, but this look the same). Option two is to use JTAG. Unfortunately, *under many circumstances you'll prefer option one*, because unless you're lucky enough to have a dev unit (not me) using JTAG requires unscrewing the back of the device.