Joseph’s Status Report for 2/20/21

This past week I was tasked with doing research on retro-console audio. We specifically wanted to know:

    1. How is audio typically generated on retro consoles?
    2. What should our audio requirements be?

Firstly, I had gathered some great resources on retro console architecture, featuring several of Nintendo’s consoles. The sound specifications (along with some graphics and CPU specs) can also be found from these links:
https://www.copetti.org/writings/consoles/nes/
https://www.copetti.org/writings/consoles/game-boy-advance/

I had also found a good resource for the Game Boy sound interface from the software perspective:
https://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware

In short, the audio can be synthesized digitally using counters and a digital mixer implemented using adders. An implementation similar to the Game Boy Advance (GBA) seems feasible. To summarize the specifications for the GBA’s audio, there are 6 channels for digital sound synthesis:

  • 2 square wave generators with programmable frequency.
  • A noise channel.
  • An arbitrary waveform generator (which outputs a pre-programmed sequence of 4-bit samples).
  • 2 8-bit PCM channels.

After bringing these findings to the team meetings mid-week, we decided on requiring a single 8-bit PCM channel. This is the most feasible option given the heavier requirements of the graphics PPU.

I spent Friday night and Saturday morning setting up and customizing the project website.

I am currently on schedule. However, I still have to plan on the individual deliverables to complete next week.

Team Status Report for 2/20/21

Hello and welcome to our first team post!

This past week, we worked on nailing down our design requirements and scaling back our design to something which can be met within our time limit. The main changes in this area are to the Pixel Processing Unit (PPU) and Audio Processing Unit (APU).

For the APU, we now intend to implement something very similar to that of the Game Boy Advance (GBA), which merely offers buffered 8-bit samples to two DACs. We currently intend to provide mono output for this sound. This is simpler than designing several wave generators and an interface to manage them, while also giving our users more freedom in the sounds they can create using our console.

For the PPU, we decided that instead of implementing a subset of what the GBA offers we will instead design something new from the ground up. This gives us the freedom to meet our requirements in a way which is efficient for our time, and ensures that we can adjust the design to meet the requirements of the rest of our system. For example, we may require increased sprite size capabilities, compared to the GBA, as our display is larger.

Our requirements document (updated 2/20/21) can be found here:
http://course.ece.cmu.edu/~ece500/projects/s21-teamc1/wp-content/uploads/sites/133/2021/02/FP-GAme-Requirements-2-20-21.pdf