GameBoy Put all the different subsystems together Initialise subsystems Cart Audio processing (background thread) CPU GPU Buttons Clock Run main loop CPU.tick() GPU.tick() Buttons.tick() Clock.tick()