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.

Requirements

Hardware

  • Design working interface cartridge between Pi0 and Vectrex. Done
  • Assemble first batch of PiTrex cartridge circuit boards. 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. Done (power via Vectrex will be fine)
  • 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) hardware-wise this seems sure enough at this point
  • 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.
  • 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) Done
  • 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 Done
  • 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. Done
  • Document the above and start getting units in the hands of developers Done
  • 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. Done
  • Minimal change adaptation of existing Vectrex emulator to pass VIA operations through to the real chip so that we can run Vectrex programs Done
  • Write a front-end for selecting games/emulators (ie using the Vectrex display and the controller) Done (also now a rough version for Linux)
  • Port open-source vector games written for PC using libraries like SVGAlib and Xlib. In Progress
  • Implement auto-detection of Raspberry Pi model in pitrexio-gpio so that the correct UART configuration can be used to match the Pi0 or Pi0w. Done
  • 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. Done
  • If possible, support sound effects from emulator/PiTrex games via Vectrex speaker. In Progress
  • 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
  • Set up shared development code hosting / version management. Rsync, FTP, Git? Done (Shared FTP outlink, GitHub outlink)
  • Write user documentation. In Progress
  • 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 outlink and integration with the vecx emulator.
  • Support for analogue sound signal output directly from the PiTrex circuit board (PWM or onboard DAC chip)

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

Individuals

This is to document the what each of the PiTrex developers are working on individually at the moment, or plan to be working on in the near future:

Kevin Koster

Updated 2023-06-26

Now

  • Improving the Linux-based PiTrexCore environment.
  • Writing additional documentation.
  • Use the Raspberry Pi's GPU to assist drawing to the Vectrex display and/or detecting Linux system interrupts.
  • PiTrex cartridge case manufacture with Low-Pressure moulding. - Currently trying to get the aluminium moulds (and the moulding process) right. Proving difficult.
  • Improving Emulator display and control settings for XMAME