# Peripheral Contract

Status: `Draft`

## Purpose

Group the console-completeness devices that are neither CPU cores nor the main
graphics/audio engines.

## In scope

- CDVD
- SIO2
- memory cards
- controller-facing console semantics
- DEV9
- USB
- FireWire

## Owns

- register-visible behavior for these devices,
- media/card/controller presence semantics,
- protocol translation where the retroDE platform provides host assistance.

## Questions to lock

- Which peripherals are required for the first three milestones?
- Which peripherals will be HPS-assisted versus locally modeled?
- Is controller input presented first through a simplified abstraction or
  through SIO2-faithful transactions?

## Allowed early stubs

- device-present/device-absent reporting only,
- fixed media status responses,
- controller event injection through simplified paths,
- memory card placeholder presence with no persistence.

## Likely implementation order

1. SIO2/controller minimum
2. memory card minimum
3. CDVD minimum
4. DEV9/USB/FireWire as later completeness work
