Skip to content

About

Zaxxon family for the Analogue Pocket

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zaxxon — Analogue Pocket

An Analogue Pocket port of Sega's Zaxxon arcade hardware, built on the openFPGA framework. One core, three games selectable from the Pocket library:

  • Zaxxon — Sega, 1982
  • Super Zaxxon — Sega, 1982
  • Future Spy — Sega, 1984

All run from a single bitstream; a variant byte in each ROM image selects the game (Super Zaxxon and Future Spy use encrypted CPU ROMs, decrypted in the core).

The Game

Zaxxon is Sega's landmark 1982 scrolling shooter and the first arcade game to use an axonometric (isometric) viewpoint — the diagonal 3-D perspective that gives the game its name. You pilot a fighter over a fortress, skimming walls, threading force fields and fuel gauges, and dogfighting the boss ship Zaxxon at the end of each run.

Its defining twist is altitude: the ship moves freely in the air, and a shadow on the ground shows your height. Clearing walls and gun emplacements means constantly judging how high you are — making Zaxxon as much a game of 3-D spatial reasoning as of reflexes.

Hardware

Part Role
Zilog Z80 @ 3 MHz Main CPU (Sega 315-5013 encrypted program ROM)
Digitized PCM samples Sound (no synth chip — all effects are recorded waveforms)
Display Vertical raster CRT, ~15 kHz, RGB 3-3-2, 256×224

The Port

Built on the MiSTer Arcade-Zaxxon core:

  • MiSTer port: Dar (darfpga — darfpga.blogspot.fr / sourceforge/darfpga)
  • FPGA arcade hardware implementation: Dar (darfpga); Z80 soft core (T80) by Daniel Wallner

This Analogue Pocket build adapts that RTL to the openFPGA / APF framework, running at 256×224 rotated to the Pocket's portrait screen (4:3). Zaxxon's ~782 KB of digitized sound samples are streamed from the Pocket's SDRAM — this is the first HarpMudd core to use Pocket SDRAM. Many thanks to the authors above.

Controls

Pocket Zaxxon / Super Zaxxon Future Spy
D-Pad ↑ / ↓ Dive / Climb (aircraft-style — see Notes) Move up / down
D-Pad ← / → Steer left / right Move left / right
A Fire Fire
B — Fire (2nd button)
Start 1P Start 1P Start
Select Insert coin Insert coin

Notes & Caveats

  • Altitude controls are aircraft-style (Zaxxon / Super Zaxxon): push up to dive and pull down to climb, exactly like the original cabinet's joystick. This feels inverted at first but is authentic to the arcade. Future Spy is a straight vertical shooter, so its D-Pad is normal (up = up); it also uses A and B for its two fire buttons.
  • Sound is sample-based. Every effect (engine, laser, explosions) is a digitized recording streamed from Pocket SDRAM rather than generated by a sound chip.

ROMs

ROMs and samples are not included — nothing in this repo contains copyrighted data. Supply your own MAME romsets (zaxxon, szaxxon, futspy) and build the per-game .rom either way:

  • .mra recipe (one per game in dist/Assets/zaxxon/common/): run it through the standard mra tool, e.g. mra zaxxon.mra. Produces zaxxon.rom / szaxxon.rom / futspy.rom.
  • pack_rom.py: drop the romset zips next to pack_rom.py and run python pack_rom.py all. Same byte-identical .rom images (matched by CRC32), plus the sound samples (below).

Both produce identical .rom files. Each game in the library is a small instance JSON in dist/Assets/zaxxon/HarpMudd.Zaxxon/ that points at its .rom (and its optional _samples.bin).

Sound (samples are optional)

Zaxxon has no sound chip — all audio is digitized samples. These are copyrighted and live inline in the MiSTer Arcade-Zaxxon .mra (<rom index="2">); they are not in the MAME romset and are never distributed here. They are optional: without them the core runs perfectly but silent (the audio is muted when no samples are loaded). To get sound:

The samples load into SDRAM at runtime and are never committed — you build them locally.

Credits

  • Original arcade games: Sega (Zaxxon & Super Zaxxon 1982, Future Spy 1984)
  • MiSTer port: Dar (darfpga)
  • FPGA arcade core: Dar (darfpga)
  • Z80 CPU core (T80):
    • Daniel Wallner — original author (2001–2002, OpenCores)
    • Mike Johnson / MikeJ (FPGAArcade) — DJNZ M1_n fix, clock enable, IM 2 fix and interrupt-ack fix (v0232–0240); project tidy-up, March 2005 (Ver 300)
    • Sean Riddle — parity flag for 8080 vs Z80 (Ver 301)
    • TobiFlex — undocumented DDCB / FDCB opcodes (Ver 303, 20 April 2010)
    • Alexey Melnikov (Sorgelig) — timing accuracy and ZEXDOC / ZEXALL / Z80Full / Z80memptr verification (Ver 350, 2018), and the T80pa pseudo-asynchronous top level
  • Analogue Pocket port: HarpMudd
  • SDRAM controller, data loader, I2S audio, sync FIFO: Adam Gastineau (agg23)
  • openFPGA framework (APF), bridge command handler, reference core_top: Analogue
  • PLL and other megafunctions: Intel/Altera (Quartus-generated)

About / Support

I'm into retro games and the Analogue Pocket, always cooking up something new. I love being part of a community built on sharing and the love of games — so if any of my projects bring you joy, chip in below; it fuels the next thing.

💛 Support this project via PayPal

About

Zaxxon family for the Analogue Pocket

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages