Project_Roadmap

Objective

This project started when Graham realised that the cartridge interface on he Vectrex included a HALT signal which would allow a smart cartridge to disable the CPU in the Vectrex and take over the bus, so that the controlling CPU could be the cartridge itself and the vectrex hardware would only be used for its I/O capabilities. He originally thought that an interface card could be made that was nothing more than just wires connecting the Vectrex bus to the GPIO pins of a Raspberry Pi Zero, but on consulting a couple of group members with more circuit building experience he found that it wasn't quite as trivial a problem as he hoped! However the underlying idea appealed to those experts and they volunteered to design a more realistic board that would behave as hoped. At this point the PiTrex team of Graham Toal, Kevin Koster and James Churchill was formed.

Our plan then became to design a low-cost cartridge for the Vectrex which would support the use of a Vectrex as a display for vector arcade emulation (e.g. Sega or Atari vector games) and for writing new games from scratch (or porting the few existing games) in a high-level language. At a later point we also realised that if we could emulate the Vectrex itself, we might be able to make our PiTrex function similarly to a multicart, at least as seen from the outside world, although the internals would be quite different!

A primary goal of this project was that we could get these facilities into the hands of as many Vectrex owners as possible, which meant being able to produce and sell the board at a price significantly lower than the $100 that has almost become the standard for expanded cartridges. We also agreed at the start that the hardware design and any software we produce would be open source. Although economy of scale means that it makes more sense to buy a cartridge from us, than build your own PCB, we are releasing the PCB design to the public so that it will be possible to fabricate your own board if you want to and so that the system lives on even if our group at some point doesn't.

We have recently welcomed Chris Salomon into the group to help with writing the low level vector drivers and we may add other experts later for help with specific tasks such as porting emulators.

Requirements

Hardware

  • Design working interface cartridge between Pi0 and Vectrex. Done
  • Design and manufacture appropriate cases to suit the physical characteristics of the PiTrex cartridge. In Progress
  • Confirm current supply capability of Vectrex 5V supply, and decide on method to recommend for powering the Pi0. TODO
  • Identify whether there are a significant number of machines out there that behave differently under PiTrex control, whether from the point of view of power (see above) or graphics software (see various discussions about different manufacturer VIA chips in the Vectrex forums) TODO
  • We need to discuss whether the final system will be Pi Zero based or use the Pi Zero W with wifi and bluetooth support. This is an issue because of the interface to loading/selecting programs and actually getting the programs onto the internal SD storage. It has also to do with the form factor and placement of the Pi Zero which to some extent precludes easy addition of USB or HDMI cables, and that factor also affects case design and cost. Using Wifi avoids those problems at the expense of an extra $10 cost. TODO
  • Software, roughly in order of priority

  • Write library for performing read/write operations to the VIA using the PiTrex interface cartridge. Done
  • Write library/API which accepts X-Y co-ordinates for drawing on the Vectrex display. This is what Chris is currently working on, as we have yet to do this reliably without odd display artifacts. Done
  • after basic single vectors, look into groups of lines as in vectrex primitives; also pattern support (dots/dashes) In Progress
  • Milestone: put a medium complex static image on the screen that does not drift, wobble, or otherwise have weird artefacts. Done
  • Milestone: animated screen of some description Done
  • raster support - at a minimum, a text print mechanism - fall back to vectors if we can't do raster for now In Progress
  • Add input functionality to library (buttons and joystick) Done
  • Milestone: digital joystick and button test program.
  • Milestone: moving an object on-screen with analog joystick. Done
  • Add raw 6809-like access to speaker
  • Document the above and start getting units in the hands of developers TODO
  • Milestone: Port at least one game from source code. Probably easiest to use one of the available C-based static binary translations of arcade games, although we do have a few C-based game sources outlink such as agendaroids outlink we could try. Done (Tailgunner)
  • Adapt emulators of vector arcade systems to use the Vectrex display and controller inputs. Possibly MAME but there are other contenders available. TODO
  • Minimal change adaptation of existing Vectrex emulator to pass VIA operations through to the real chip so that we can run Vectrex programs In Progress
  • Write a front-end for selecting games/emulators (ie using the Vectrex display and the controller) TODO
  • Design a web interface (possibly smart phone compatible) to fetch and/or load rom images into emulators TODO
  • Support for USB joysticks/controllers and other accessories connected to the Pi0. TODO
  • Design/implement (automatic?) update system for software. TODO
  • If possible, support sound effects from emulator/PiTrex games via Vectrex speaker. TODO (maybe?)
  • explore alternative ways of driving the VIA - possibly dependent on future hardware upgrades to multi-core systems in the Pi Zero format. We could take advantage of parallel processing while drawing vectors; and we might change the vector mechanism completely so that lines do not exhibit the bright dot effect at the end of vector segments which is characteristic of the Vectrex but not necessarily all the arcade games that we hope to be able to emulate.
  • Add Vide outlink support so that C games can be compiled natively for ARM as well as for 6809 with minimal changes (ifdefs)? TODO
  • Support custom game development in programming languages besides C. TODO
  • Other

  • Write development roadmap in collaborative document editing environment. Done
  • Write developer documentation. In Progress (sort of)
  • Set up shared development code hosting / version management. Rsync, FTP, Git? Done (Shared FTP outlink)
  • Write user documentation. TODO
  • Artwork (eg. logo - an attempt was made in the top left corner of the page, that's a good effort from Kevin, but none of us are graphics specialists so this is something we may throw out to the community for help with). TODO
  • What to supply with the board? Case - probably - box? overlay? paper manual? Maybe only for collectors, maybe just publish plans and let people print their own? And what about the Pi Zero itself, and an SD card with the operating system and software? TODO Note that the constraints of Aus postal charges may affect what we supply and how we package it - at least for the lowest-cost option.
  • Register domain name (pitrex.org?) and develop website / hosting server for updates. TODO

Blue Skies

After we have done what is needed to make an initial release of the PiTrex, there are some 'blue skies' projects that could be taken on as ongoing support:

  • Language support: after creating a C library interface, we could add support for other languages, such as - for example Brandy Basic outlink - a high-level Basic intepreter compatible with BBC Basic; or Scratch outlink, or Forth outlink...
  • Colourizing the Vectrex... Kevin has an idea for colourizing the Vectrex that involves an LCD overlay and integration with the vecx emulator.

Notes

Notes regarding requirements listed above can go here.

On the Pi Zero / Pi Zero W issue, my vote is with leaving this decision up to the user and officially supporting both. Kevin Koster Thu, 27 Jun 2019 07:41 UTC