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
The 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 runmake
. - Load the .tap image into a Spectrum emulator that supports +3 emulation.
Key | Action |
---|---|
1 | 1 Player Start |
2 | 2 Player Start |
3 | Insert Coin |
C | Colour Sprites |
M | Mono Sprites |
H | Hard difficulty (hold during ROM boot) |
Cursor Keys | Joystick Control |
Q/A/O/P | 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.
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.
Ensure tile2sam.py
and pasmo
are in your path, then run make.bat
(Windows)
or make
(Linux/Mac/Unix) to generate pacemuzx.tap
.
- Fixed error message corruption when required hardware not found
- Updated to use
tile2sam.py
instead ofpng2bin.pl
- Converted remove_rom.pl to Python
- 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
- Added support for diagonal control inputs from keyboard and 8-way joysticks
- 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
- 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
- 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
- Initial release
Simon Owen
https://simonowen.com/spectrum/pacemuzx/