-
Notifications
You must be signed in to change notification settings - Fork 4
Home
β = 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
- 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.
β = 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
- 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.