How mamedev/mame works
MAME is a preservation-focused emulation framework for arcade games and vintage computers, consoles, and calculators. The principal workflow is selecting and running an emulated system, whose hardware model produces observable video and audio; the sampled Pipeline driver illustrates CPU, peripheral, and rendering stages. Lua exposes machine and rendering facilities, while ATA and Apple Profile/Widget devices model storage interfaces. The excerpts are partial, so the graph focuses on evidenced components and documented product scope rather than inferring links between independently sampled subsystems.
Main entry points: pipeline.cpp Pipeline driver · luaengine.cpp Lua engine · atastorage.cpp ATA storage · luaengine_render.cpp Lua rendering
Components 11
System emulation
- Pipeline driver
src/mame/misc/pipeline.cpp - Emulated CPUs
src/mame/misc/pipeline.cpp - Board peripherals
src/mame/misc/pipeline.cpp - Video output
src/mame/misc/pipeline.cpp - Audio output
src/mame/misc/pipeline.cpp
User interfaces
- Lua engine
src/frontend/mame/luaengine.cpp - Lua rendering
src/frontend/mame/luaengine_render.cpp
Storage emulation
- ATA storage
src/devices/machine/atastorage.cpp - Hard disk image
src/devices/machine/atastorage.h - ApplePP storage
src/devices/bus/applepp/storagehle.cpp
Other components
- MAME user
Connections 8
- MAME user → Lua engine: scripts
- Lua engine → Pipeline driver: controls core
- Lua engine → Lua rendering: uses bindings
- Pipeline driver → Emulated CPUs: configures
- Pipeline driver → Board peripherals: maps I/O
- Pipeline driver → Video output: renders
- Pipeline driver → Audio output: routes sound
- ATA storage → Hard disk image: reads/writes sectors