PlayStation: The SPU, Part 1 - ADPCM

The PlayStation’s SPU (Sound Processing Unit) is definitely not the most logical next thing to work on after implementing a basic triangle rasterizer, but it’s what I feel like discussing next. With my own projects, I don’t feel like an emulator is really online until it supports audio, so here we go!

PlayStation: The Diamond

While the GPU tests I mentioned at the end of my last post are very helpful for validating a lot of GPU rasterization functionality, a new emulator might want the early satisfaction of getting the splash screen’s diamond to render mostly correctly. This post will overview what’s required to make that happen.

PlayStation: A Bare Minimum GPU

This post will overview what is required for a PS1 emulator to get any graphical output from test programs. PS1 test programs are typically designed such that they don’t use most (if any) of the GPU’s rasterization capabilities - they’ll either render their output pixel-by-pixel, or they’ll just copy the frame directly into VRAM using the CPU.

PlayStation: EXE Sideloading and the TTY

Two of the most useful things for a new PlayStation emulator to implement are EXE sideloading and TTY support. Supporting EXE sideloading makes it possible to load programs before any CD-ROM functionality is implemented, and supporting TTY output makes it possible to see debug output from the BIOS and from test programs.

PlayStation: The CPU

I recently (ish) started to work on a PlayStation emulator. Compared to the previous systems I’ve worked on, it’s very different! It definitely feels like jumping forward a generation compared to the Genesis and the SNES. I’ll start off by covering the core of the system, the CPU.

SNES Coprocessors: Super FX

The Super FX chip is easily the most well-known SNES coprocessor, primarily because of Star Fox which renders real-time 3D graphics on the SNES with the help of the Super FX. Yoshi’s Island also uses the Super FX, though mainly for sprite scaling/rotation and various graphical effects rather than 3D rendering.

SNES Coprocessors: SPC7110

SPC7110 is a data decompression chip very similar to S-DD1, but it also has a number of other features that games make use of, with one of the three SPC7110 games even including a real-time clock chip on the cartridge. This chip was used in 3 games, all Japan-only games by Hudson: Tengai Makyou Zero, Momotarou Dentetsu Happy, and Super Power League 4.

SNES Coprocessors: S-DD1

There are two SNES coprocessors that contain hardware data decompression chips: S-DD1 and SPC7110 (no relation to the SPC700 CPU as far as I know). These chips allow the SNES CPU to read compressed data from ROM without the CPU needing to do any decompression work - the hardware decompresses the data on-the-fly while the CPU is reading it.

SNES Coprocessors: SA-1

The SA-1 coprocessor, or Super Accelerator 1, is a somewhat fascinating chip in that it has quite a lot of hardware that almost no games ever used. Its primary attraction is an additional 65816 CPU clocked at 3x the speed of the SNES CPU, and most of the SA-1 games only used it for that.

SNES Coprocessors: Cx4

The Cx4, or Capcom Consumer Custom Chip, is a coprocessor that Capcom used in Mega Man X2 and Mega Man X3. It’s most well-known as the coprocessor that enables those games’ 3D wireframe models, but they also use it for sprite scaling/rotation effects and to help out with managing the sprite table.