Skip to content
Ian Scott edited this page Aug 10, 2022 · 15 revisions

Raspberry Pi Pico status:

Rough plan of experimentation/implementation:

βœ… = done, πŸ“ = work in progress, πŸ’­ = still to be done

βœ… Design prototype PCB
βœ… Source parts & build prototype PCB
βœ… Create ISA bus interface code in PIO βœ… Copy over GUS emulation code from sw/ directory and adapt to PIO programming model βœ… Implement port-only emulation of GUS βœ… Optimize GUS emulation to achieve 14 channels at 44.1KHz audio output
βœ… Speed up PSRAM access to be fast enough for GUS sample playback
πŸ“ Implement IRQs
πŸ’­ Implement sample upload via DMA
πŸ’­ Investigate integrating RP2040 microcontroller directly to be able to use more GPIOs
πŸ’­ Implement MIDI out on Pico UART
πŸ’­ Design release candidate PCB

Known issues

  • UART output is not possible when all peripherals (I2S DAC, PSRAM) are being used. USB stdio is too interrupt-intensive and semihosting stdio is extremely slow from what I've been able to get working. I have a potential hardware design to get back the BUSOE signal (which is conveniently on a GPIO with UART TX alternative function) by triggering the bus interface with a latch circuit.

"Big" Raspberry Pi status:

Rough plan of experimentation/implementation:

βœ… = done, πŸ“ = work in progress, πŸ’­ = still to be done

βœ… Design prototype PCB, with level shifters and lines for IRQ and DMA
βœ… Source parts & build prototype PCB
βœ… Run RPiISA code on Linux on prototype PCB, validating level shifters, changing design/bodging as needed
βœ… Port RPiISA code to Circle, using PWM audio out
βœ… Extract GUS emulation code from DOSBox
βœ… Implement port-only emulation
βœ… Implement IRQs
πŸ“ Implement sample upload via DMA
πŸ’­ Investigate moving GPIOs to free up I2S pins for better audio output quality via external DAC
πŸ’­ Design release candidate PCB

Known issues

  • DOSBox's GUS emulation faithfully reproduces sample rate drop when going above 14 channels. I've implemented a resampler using Speex's resampling code, but it's not working well
  • The GPIO header does not give enough clearance for the Raspberry Pi when plugged directly in via straight headers. A ribbon cable must be used instead, or a pair of right-angle headers
  • There might not be enough GPIO pins to handle proper DMA
  • The I2S GPIO pins are in the middle of the address lines, preventing the use of a high quality external DAC and preventing use of CM4 or Zero 2 modules.
Clone this wiki locally