what_to_do_with_your_pitrex_dev


Here are some ideas for what to do with your PiTrex at the time of the Developer_Release.

Ported software

There is a variety of software already available for the PiTrex. Mostly emulators of arcade games, as well as the VecX Vectrex emulator and a few open-source games that have been ported to the PiTrex.

Some of these are a little rough around the edges. In particular the controller button mapping isn't ideal for many of the arcade games, and there are some display issues with the VecX Vectrex emulation (the current focus is on the vecx.direct variant). Sound is also lacking on most games - here one has the choice of either playing sounds via the Vectrex (limited), or a Bluetooth/USB speaker connected to the Pi0 (Linux only).

Porting Software

There are a lot of open source vector games that would suit display on the Vectrex. Work is in progress to create a display library that allows Xlib-based games to be ported with minimal modification to their original code, but direct ports by modifying the game code to use the Vectrex Interface library drawing routines directly are also welcome. Especially for the games using SDL, for which no other method of porting is possible.

We're currently working on getting MAME fully working on the PiTrex. Help with creating vector menus to replace the existing raster interface, and getting MAME to use the Vectrex controller, would be welcome.

Writing New Games

Of course the PiTrex allows powerful new games to be developed for the Vectrex, and also allows developers to use the many established development tools available for Linux, running right on the Pi itself. See the documentation here for the Vectrex Interface library, and the "hello_world" example programs in the Git repo, for the basics of writing new PiTrex software.

Linux Support

Many aspects of Linux support are still in early stages of development, since glitch-free operation in Linux was only demonstrated in a later stage.

Support for the Linux controller system was removed from much of the ported software while the focus was on the Bare-Metal environment, and adding this again would permit using Bluetooth or USB controllers as well as the Vectrex controller. Ideally the Vectrex controller would itself have a Linux kernel driver that identifies it as a controller device in Linux.

Currently the software uses a hack to disable Linux system interrupts during time-critical parts of the vector drawing code. This code should be split out of the games themselves and into a Linux kernel driver. If possible, this driver should not disable system interrupts, but use the FIQ interrupt or the Linux kernel high-resolution timer system to achieve real-time performance while not excessively disrupting regular operating system processes. Some unfinished kernel driver code can be viewed outlink.

All the software will need to be provided in installable binary packages at some point. This could just be tarballs that place files in the /opt/pitrex hierachy, but ideally the Debian package system would be used (possibly with a dedicated PiTrex package repo). Packages for the PiCore distro, which is much faster to boot, may also be worth consideration.

Other Stuff

  • Documentation
  • Internet multiplayer support
  • Web interface for managing/loading games from a smart phone
  • Real-time vectorisation of video based on the code from OpenLase.
  • Connecting a modified LCD display to the Pi0's Composite video output for use as an electric overlay outlink
  • Support for Raspberry Pi models other than the Pi Zeros. Or Raspberry Pi competitors such as the Banana Pi Zero.
  • Support for driving the PiTrex from vintage computers to alow displaying on the Vectrex from eg. a Commodore 64.
  • Driving the Pitrex from a PC parallel port (pitrexio-lpt - used for initial testing)
  • 3D graphics library - scopescreen outlink
  • Display sampled analogue audio streams on the Vectrex like an X-Y oscilloscope by converting to 8bit data and feeding straight into the Vectrex DAC. For doing things like this outlink.
  • Display ILDA animations designed for laser projectors, maybe by modifying the LaserBoy outlink viewer program?
  • Support for writing PiTrex software in programming languages besides C (or compatible).