Pac-Man Emulator for Sinclair Spectrum v1.6
This program emulates the Pac-Man hardware environment, allowing the arcade Pac-Man ROMs to run (almost) unmodified on the Sinclair Spectrum. The Z80 code is executed natively, but the sprite and tile display hardware is emulated. The sound and input are mapped to the closest Spectrum equivalents.
- Spectrum +2A/+2B/+3
- Arcade Pac-Man ROM images
The emulator requires the special paging mode of the Spectrum +2A/+2B/+3, and will not work on earlier 48/128/+2 models. Only the combined use of both normal and special paging modes provides the flexibility needed to access everything needed at runtime. Using a peripheral to provide RAM at address 0 is not enough to satisfy this requirement. The current DivIDE support is purely to disable its hardware traps from triggering when executing code in the lower 16K.
The Pac-Man ROMs cannot be supplied with this program, so you must supply your own copies of the following files (from the Midway ROM set):
pacman.6e pacman.6f pacman.6h pacman.6j
pacemuzx.tap tape image is created by combining the supplied tape file
fragments with the Pac-Man ROM images:
- Copy the Pac-Man ROM images (detailed above) to the pacemuzx directory.
- Windows users: run
make.bat. Linux/Mac/Unix users run
- Load the .tap image into a Spectrum emulator that supports +3 emulation.
|1||1 Player Start|
|2||2 Player Start|
|H||Hard difficulty (hold during ROM boot)|
|Cursor Keys||Joystick Control|
|Kempston Joystick||Joystick Control|
|Sinclair 2 Joystick||Joystick Control|
|Symbol-1 to 7||Maze Colour (Sym-1 for blue)|
To check the difficulty setting, watch the cyan ghost at the start of the game. On Hard it exits the ghost box immediately, on Normal it waits around 6 seconds.
Build From Source
You may also build the emulator from source code, which requires a few extra tools.
- The pacemuzx source code.
- The arcade Pac-Man ROM images detailed above.
- tile2sam.py to create sprite data.
- Pasmo assembler to build the Z80 code.
pasmo are in your path, then run
make (Linux/Mac/Unix) to generate
Version 1.6 (2020/03/30)
- Fixed error message corruption when required hardware not found
- Updated to use
- Converted remove_rom.pl to Python
Version 1.5 (2016/11/19)
- Fixed code overflow crash on mono/colour toggle (thanks Matthew Logue)
- Changed maze colours to be bright by default, with Shift to dim
- Changed green ghost to non-bright yellow, to be closer to orange original
Version 1.4 (2014/03/01)
- Added support for diagonal control inputs from keyboard and 8-way joysticks
Version 1.3 (2012/01/08)
- Added run-time colour/mono sprite selection
- Added boot-time selection of Hard difficulty
- Restored traditional blue/white maze flash when using blue/white colours
- Restored sprite trimming at maze edges in colour version
- Added loading message to show version number
Version 1.2 (2011/12/06)
- Added colour sprites
- Added Spectranet support, to prompt for trap disable
- Added key combos to change maze colour
- Maze flash now toggles current bright instead of blue
- Various minor fixes and speed-ups
Version 1.1 (2011/11/09)
- Added DivIDE support, using pages 3+0 for ROM if present
- Improved control handling, favouring newest direction pressed
- Holding a key after loading delays the emulation starting until released
- Moved Blinky's downward-facing mouth down a pixel
Version 1.0 (2011/11/08)
- Initial release