$ show vpinball/pinmame
PinMAME is a specialized fork of MAME 0.76 that emulates the hardware found in solid-state pinball machines. It supports over 2700 ROM sets from Williams, Bally, Stern, Gottlieb, Data East, and other manufacturers. The emulator is delivered in multiple forms: a standalone command-line executable (Unix/Windows), a Windows GUI (PinMAME32), a COM DLL (VPinMAME) for integration with Visual Pinball and other simulators, a lightweight library (libpinmame) for embedding in other applications, and hardware control interfaces (LISY, P-ROC) for driving real pinball machines. The codebase includes CPU emulators (Z80, 6809, 6502, i86, TMS9900, ARM7, etc.), sound chip emulators (YM2151, YM3812, SAA1099, TMS5220, etc.), and pinball-specific subsystems (WPC, System 11, Pinball 2000). It also features a remote debugger with an embedded HTTP server and SSE event streaming, an alternative sound system (altsound) for custom audio, and a cheat engine. The architecture is monolithic with platform-specific frontends, heavily reliant on the MAME core framework. While functional and actively maintained, the codebase shows its age with legacy platform drivers, vendored external libraries, and tight coupling between components.
The LLM identified 2 files worth highlighting for reuse:
Minimal HTTP/1.1 server with Server-Sent Events support, designed for remote debugging of emulation. Parses HTTP requests, serves static files, and pushes real-time events (breakpoints, memory changes) to a web dashboard. Written in C with no external dependencies beyond standard libraries and pthreads. Could be extracted and reused in any embedded project needing a lightweight web interface for debugging or monitoring.
Robust CSV parser for alternative sound configuration files. Handles quoted fields, whitespace trimming, line continuation, and error reporting with detailed messages. Uses standard C++ streams and is self-contained except for logging macros. Could be extracted and reused in any project requiring CSV parsing with validation, such as game asset lists or data import tools.