There are many 6502 projects out there in the wild that I used to get up to speed with a basic design for this game system. I mostly followed the guidance found here. The address layout sacrifices some address space from RAM, but allows for up to 8 I/O chips to be very easily addressed. It also uses a single NAND IC for chip select logic which should limit propagation delays which should raise the potential top end speed of the circuit. However, this doesn't really matter since I am clocking it at 1mhz for now.
The display used is a pre-assembled component from Adafruit that has a SSD1305 driver chip and a 128x64 pixel OLED. The SSD1305 has a 6800 compatible bus mode which made it fairly straight-forward to interface with. I added bus tranceivers to go from 5v down to 3.3v. I also had to add a bit more complexity with the chip select logic because the SSD1305 only has a select line. The 65XX chips all have 2 chip select lines.
Dodo supports a single voice of sound. Unfortunately, there are no longer any sound generator ICs in current production like the SID from the C64. Basic sound is created through a trick with the 6522 VIA. The shift register can be set to "free run" and can be used to output a square wave.
Dodo also supports game cartridges so that the game code is separate from the system. The system software is stored on the EEPROM, it has the boot screens, the code to read and flash the game cartridges, and a game API. The API supports sprite drawing, sound playing, button interfacing, and so on. Games on Dodo target 20FPS. An interrupt fires every 50ms to coordinate a consistent game loop.
There is also a simulator for Dodo that works in both the console and through a web interface. Game development is done in C using cc65. The system API calls are all written in assembly.