QuadTari

The world's first 4-player adapter for the Atari 2600

The QuadTari is currently in-production, and will hopefully be completed by the end of 2020. It allows for 4-player support for new games, or can be used (with supported games) to allow 2 joysticks to connect to the first port, freeing the 2nd port for an AtariVox or SaveKey.

Pre-orders are available, but there are no guarantees for the release timeline. Full refunds will be available if production takes more than 6 months from the time of your order.

QuadTari can also be purchased as a kit that you assemble yourself, see notes below.

Shipping is $5 above the price the QuadTari ordered

The following games have QuadTari support for using 4 joysticks:

The following games have other QuadTari support: (ie 2 joysticks plus an AtariVox, or other configurations)

The QuadTari kit comes with all the components that you will need to assemble the QuadTari yourself:
  • Plastic Enclosure
  • PCB(s)
  • Resistor, Capacitors, and ICs to solder onto the PCB
  • Connectors and cables
Assembling the QuadTari requires basic soldering skills, and the following items (not included):
  • Solder
  • Small Phillips Screwdriver
  • Small hex-head screwdriver
Detailed assembly insructions to be provided.
Development guide download: devGuide.md

QuadTari Development Guide

Overview

The QuadTari adapter lets you multiplex between 2 controllers/devices on the same physical port. Although the entire device maps 4 ports to 2 physical ports, each half of the QuadTari functions completely separately, and can be used independently.

Player 1 and 3 share the first Atari port (QuadTari output A) Player 2 and 4 share the second Atari port (QuadTari output B)

This allows for various configurations of controllers (ie 2 players on the first port, using QuadTari output A, and an AtariVox on the 2nd port, not using the QuadTari)

When using the QuadTari, you generally read the joysticks as usual, but you can select which input joystick to use (1 & 2 or 3 & 4) by setting or clearing bit 7 of VBLANK (ie register $01. By setting bit 7, it drags INPT0-3 to ground). Changing this bit will toggle the inputs for both halves of the QuadTari.

After changing bit 7, the QuadTari will need some time to stabilize with the new input. It is safest to wait at least one scanline (76 cycles) before reading the new joystick ports.

Example:

  ; to acivate ports 1 and 2:
  lda #$00|$02     ;0 for bit 7, 2 to continue blanking. (ie DISABLE_TIA)
  sta VBLANK
  sta WSYNC        ;wait a scanline to stabilize (you could do other things here instead)

  ; to activate ports 3 and 4
  lda #%10000000|$02 ;set bit 7, continue blanking
  sta VBLANK
  sta WSYNC        ;wait a scanline

Detecting Quadtari

Your game can detect the presence of the QuadTari at startup by checking bit 7 of INPT0-INPT3 You can test each port (A and B) separately:

     port A
       INPT0           INPT1
           0               0       regular joystick connected
           0               1       multi-tap connected to port A
           1               0       Genesis pad in joystick mode
           1               1       Genesis pad (or paddles) connected
     port B
       INPT2           INPT3
           0               0       regular joystick connected
           0               1       multi-tap connected
           1               0       Genesis pad in joystick mode
           1               1       Genesis pad (or paddles) connected

Batari Basic

For Batari Basic users, by default, controllers 1 & 2 will automatically be selected after calling drawscreen. Developers can manually toggle to reading controllers 3 & 4 with something like the following:

    asm
    lda #$80|%10
    sta VBLANK
    sta WSYNC
end

Examples

See multitap_source.zip for an example program that detects and displays the inputs.

Compatibility

The QuadTari has been tested with standard joysticks, Genesis pads, and the driving controller. Other controllers are untested, but should be compatible if they don't use pins 5 or 9.

Testing & Developer Promotion

The newest versions of Stella have support for the QuadTari, and are recommended for initial development.

We also have a limited number of QuadTari devices reserved to give away to homebrew developers who are developing high-quality compatible games. To apply for this program, please email nathan@bitethechili.com and include details about the game you are making.

Notes/Suggestions

Because a significant delay is required before toggling controllers, there are a few options available for handling multiple players and multiple joysticks.

One option is to read one half of the controllers at the end of vblank, and the other half at the beginning of overscan, and save their values. Then player updates can happen during vblank as usual. This works well for a 2-player game that can optionally use the QuadTari to allow for 2 joysticks plus an AtariVox.

For a 4-player game, an option is to have each player effectively run at 30fps, and only update 2 players per frame. Run one frame with one half of the QuadTari, and update 2 players. Then on the next frame, select the other half of the QuadTari, and run the logic for the other 2 players. This method might be slightly unfair in some action games (a missile might hit one player a frame earlier even if both are players are in the exact same spot), but most players will never notice.

A limited number of QuadTari devices have been reserved for developers for free or reduced prices. If you are developing a reasonable-quality game that supports the QuadTari, you can apply for this program by emailing nathan@bitethechili.com and providing details about your game. Preference will be given to developers with a proven track record of quality games, although anyone is welcome to apply.