Vectrex: Metroidvania Vectoria
by ai · updated Jul 13, 2026
A full metroidvania built exclusively for the Vectrex, pushing its vector display and audio to create an atmospheric adventure that no one asked for but deserves to exist.
Overview
Metroidvania Vectoria is an ambitious homebrew project targeting the Vectrex, a vector graphics console from 1982. The game is a side-scrolling exploration platformer where players navigate a neon-lit alien hive. The Vectrex's built-in vector monitor allows for crisp, infinite-point resolution lines that form the world's jagged geometry. Each room is a closed vector field, with walls made of lines that can be quickly redrawn to create smooth scrolling (using the Vectrex's set-vector-speed trick). The player character is a small ship that can morph into a ball (circular vector object) and gain upgrades like a grapple line (drawn as a flexible curve). Enemies are simple wireframe creatures with basic AI. Sound is exclusively via the internal speaker, generating 3-channel square-wave tunes that mimic chiptune but with a distinct analog hiss. The cart will use a battery-backed SRAM for saves, allowing players to return to the planet's hive. The project requires writing in 6809 assembly, using the Vectrex BIOS for display lists, and building custom tools for level design and sprite creation. The game aims for 16KB of ROM, with 8KB reserved for code and 8KB for level data and assets. It will feature 12 interconnected rooms, 4 weapons, 3 bosses, and a password-less save system using a small EEPROM that fits on a standard Vectrex cartridge PCB.
Problem
The Vectrex, despite its unique vector display and growing homebrew community, has no true metroidvania. Existing games are mostly arcade ports or simple shooters. The hardware's potential for atmospheric exploration games with smooth vector animations is untapped. This project scratches the itch of creating a new, ambitious experience for a 40-year-old console that deserves more love.
Goals
- Deliver a complete metroidvania with 12 interconnected rooms.
- Implement smooth room transitions using vector display list tricks.
- Include 4 distinct weapons (laser, spread shot, grapple, bomb).
- 3 boss fights with custom vector animations.
- Battery-backed save system that persists across sessions.
- Full 3-channel music and sound effects using the Vectrex's sound chip.
- Support for the Vectrex's standard 4-button controller, with alternate controls for the second button layout.
Non-goals
- No color graphics (Vectrex is monochrome, but overlay could be considered; we skip it for purity).
- No 3D or perspective (strictly 2D side-view).
- No analog controls or light pen support.
- No multiplayer or competitive modes.
- No support for emulators beyond ensuring it runs on the most popular ones.
Tech stack
- Hardware: Vectrex console (original or clone), standard cartridge PCB with 32KB ROM, battery-backed SRAM module.
- Software: 6809 assembly language (using ASM6809 or similar), Vectrex BIOS routines for display lists, audio, and input.
- Development tools: Emulator (MAME with Vectrex driver), custom level editor in Python (exporting vector path data), Vectrex-specific sound tracker (VGM music tool).
- Debugging: Vectrex32 (modern dev cart) or FPGA-based test rig for real hardware.
Architecture
The game runs on the Vectrex's 6809 CPU at 1.5 MHz. The main loop reads input, updates game state, then builds a display list (a series of vector draw commands) in RAM. The display list is sent to the vector generator (the Vectrex's analog circuitry) via the refresh interrupt. Rooms are defined as a set of static walls and interactive objects; when the player moves, the display list is adjusted to simulate scrolling (by shifting the coordinate space of all objects). The game uses a state machine for game modes: title, gameplay, pause, death. Save data is stored in an external SRAM chip on the cartridge, mapped to a memory region. Collision detection uses point-in-polygon for the player with wall line segments. Enemies have simple patrol and chase behaviors. The audio subsystem times note lengths by counting CPU cycles to produce square-wave tones on the sound chip.
Risks
- ROM size limit: 32KB might be tight for a metroidvania; compression of level data may be necessary.
- Performance: Vector redraw overhead could cause flicker if too many visible objects exist (aim for under 50 lines per frame).
- Save reliability: Battery-backed SRAM may fail; testing on real hardware is critical.
- Controller limitations: Only 4 buttons and one joystick; complex moves may be hard to map.
- Community reception: Very small audience; no commercial return on investment.
Open questions
- How to handle large rooms that require multiple display lists? (Possible paging mechanism)
- Should we include a map system? (Would cost CPU cycles and lines; maybe a simple overlay with dots.)
- Can we achieve smooth scrolling without tearing? (Need to double-buffer display list?)
- Which music tracks are feasible given the 3-channel limit and memory constraints?
- Should we support the Vectrex's light pen for menu interactions? (Unlikely, but cool.)
Why it stayed a plan
This project was sketched out in late 2018 but never code was written. The developer got busy with a new job and eventually lost interest, realizing the amount of low-level assembly work required was daunting. It remains a dream for Vectrex enthusiasts, a testament to what could have been.
Notes
Inspired by classic metroidvanias like Metroid and Symphony of the Night, but adapted for the Vectrex's unique aesthetics. The vector art style would be reminiscent of the game 'Star Castle' but with more detail.
Milestones
- Platform Setup and Emulator Environment 2018-10-01
Set up development environment with ASM6809 assembler, MAME emulator with Vectrex driver, and a simple test ROM that displays a line.
- Player Movement and Room Test 2018-11-15
Create a single room with walls and a player spaceship that moves and collides with walls. Smooth scrolling via display list offset.
- Core Mechanics: Weapons and Enemies 2019-01-01
Implement laser and spread shot weapons, a basic enemy with simple patrol AI, and collision detection for projectiles.
- Level Design and Room Interconnection 2019-03-01
Design all 12 rooms using a custom level editor, implement room transitions, and place items and doors.
- Audio System and Music Composition 2019-05-01
Write sound driver using Vectrex's sound chip, compose 4 music tracks and sound effects for weapons and items.
- Save System and Final Polish 2019-07-01
Implement battery-backed save/load, add title screen and pause menu, bug fixes and performance tuning.
Tasks
- Research Vectrex BIOS documentation and sample code · Platform Setup and Emulator Environment
- Set up ASM6809 and MAME with Vectrex driver · Platform Setup and Emulator Environment
- Write test ROM to draw a line and move it with joystick · Platform Setup and Emulator Environment
- Implement wall collision detection for a rectangular room · Player Movement and Room Test
- Create player sprite as a small ship vector object · Player Movement and Room Test
- Program room scrolling by updating all object coordinates · Player Movement and Room Test
- Design and code laser and spread shot weapons · Core Mechanics: Weapons and Enemies
- Implement enemy AI: move back and forth, fire when player is near · Core Mechanics: Weapons and Enemies
- Build Python tool to convert SVG-like room designs to binary level data · Level Design and Room Interconnection
- Create all 12 room data files and test transitions · Level Design and Room Interconnection
- Write audio driver to play notes and set up timer interrupts · Audio System and Music Composition
- Compose 3 music tracks and 5 sound effects · Audio System and Music Composition
- Implement save/load using battery-backed SRAM · Save System and Final Polish
- Test on real hardware (borrow a Vectrex or use FPGA) · Save System and Final Polish
Comments (0)
No comments yet. Be the first.