QuadTari

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

The QuadTari is currently available. 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.

A ROM of QuadGames is available to play with your Quadtari.

Shipping is $5 above the price the QuadTari ordered

ORDER QUADTARI

QuadTari FAQ

(contributed by ChampGames)

Q: What is a QuadTari?

A: The QuadTari is a hardware device that allows you to hook up to 4 compatible controllers to an Atari 2600. The QuadTari has 4 input ports for the controllers and 2 outputs that plug into the 2 controller ports on the Atari.

Q: What systems support the QuadTari?

A: The QuadTari was designed for the Atari 2600 and any systems that are hardware compatible, such as the Coleco Gemini and Atari 7800. It should also work with the 5200 and Colecovision adapters, though this has not been tested.

  • Retron77: A physical QuadTari does not work when connected to the front ports of the R77 nor when connected via a USB OTG cable through a 2600-dapter or Stella-dapter. However, virtual QuadTari support has been added to Stella. This allows you to configure up to 4 controllers; 2 can be connected to the Retron77 front ports and 2 can be connected via an USB OTG splitter and a Stella-dapter or 2600-dapter.
  • Collectorvision Phoenix: not tested, but in theory it should work. The issue with the Phoenix is that right now there is no way to play current QuadTari games that require the ARM like WoW or Galagon (this would require a compatible cartridge port, not just a 'ROM dumper' like the one used on the RetroN77). EDIT: I was able to test the QT on the Phoenix and unfortunately it does not work. :( The joysticks don't work at all. My guess is that the Phoenix may be detecting the QT as a paddle and disabling joystick navigation.
  • Atari 7800: The QuadTari works on a 7800 running in 2600 mode. So, you can play 2600 compatible QuadTari games on your 7800. Furthermore, you should be able to write a 7800 game with QuadTari support as long as the 7800 game uses 1 button mode. (Warning: 2-button mode is incompatible with the QuadTari and will cause undesired behavior that can last until the console has been powered off)
  • Atari Flashback 2: The QuadTari should work on a modified FB2 (one that has been modded to include a cartridge port). The QuadTari will not work with other versions of the Flashback (including the portable) since these aren't hardware compatible with the original Atari.
  • Atari 8-bit systems: Although there is no 8-bit software that supports the QuadTari, it should in theory be possible since the 8-bit and 2600 systems have similar controller interfaces (joystick and paddles).

Q: What controllers are compatible with the QuadTari?

A: A rule of thumb is this: if the controller doesn't use the paddle lines (pins 5 and 9), it should be 100% compatible when connected through the QuadTari. Otherwise, it may not work at all or only have some features enabled.

  • Standard joysticks (up, down, left, right and 1 button) are 100% compatible. Other joysticks tested in joystick mode are the Hyperkin Ranger, Colecovision controllers, and Coleco Gemini sticks. The Booster Grip (used for Omega race) does not work.
  • 7800 joysticks work but only 1 button is supported, which is the same restriction when playing 2600 games on a 7800. As mentioned above, it should be possible to develop a 7800 game that supports the QuadTari, as long as the game runs in 2600 controller mode (1 button only).
  • Driving controllers: 100% compatible. You can use 4 driving controllers hooked up to a QuadTari. Now we just need someone to program Super Sprint or Demolition Derby. ;)
  • Sega Genesis gamepads and arcade sticks: All functions work (up/down/left/right and button B) except for the 2nd button since this pin is the one used to switch the QuadTari controller.
  • Paddles: Only the buttons work for paddles since the pins that read the paddle lines are used by the QT to enable/disable the extra controllers. So, you should be able to write a game that supports 4 sets of paddles (8 in total) as long as the game only uses the paddle button (think 8 player Flappy Bird or 4 player pinball :P ).
  • Keyboard controllers: since the pins for the paddle lines are used to select the row of buttons that are being pressed, keyboard controllers (including the Star Raider and Kid's Controller) are not supported.
  • AtariVox/Savekey: 100% compatible*. You can plug in an AtariVox or Savekey into one of the QuadTari ports and it should work, but the software needs to have specific support. So, if you have the Savekey/Atarivox hooked up to port 4, the supporting software needs to do all it's interaction with the Savekey/Atarivox through the right Atari port AND have DUMPPORTS enabled (which enables port 4). For port 3, all interaction needs to be done with DUMPPORTS off, etc. With this, you should be able to write a game that supports 3 joysticks/driving controllers/etc. and the AtariVox/Savekey. NOTE: QT supported games like Galagon and Wizard of Wor Arcade do not support an AtariVox/Savekey hooked up to the QuadTari; you must hook it up directly to the Atari. The problem is that the detection is done with DUMPORTS disabled but the other interaction is done with DUMPORTS enabled, so it detects for a Savekey/Avox on port 2 but reads/writes to it on port 4. 😕 (I should have thought this through when testing but for some reason it never occurred to me to connect a Savekey/Avox to a QT until TJ mentioned it when adding QT support to Stella). I did test hooking up the SaveKey/Avox to port 2 during startup, and then switching it to port 4 and it works fine, but I strongly do not recommend doing this since there is power going to the Avox/Savekey and this could damage your Atari, AtariVox and/or QuadTari. This isn't a big deal though since they don't support 3 simultaneous players anyway. :thumbsup:

Q: Do I have to have both Atari ports hooked up to the QuadTari?

A: No; the QuadTari is actually 2 independent "duoTaris" that support 2 joysticks for each port. So, if you hook up the QuadTari to the left port, you will have support for 2 joysticks only, but the right Atari port will be open for a Savekey/AtariVox for high score saving/voice. This is the setup supported by Wizard of Wor Arcade, Galagon and Zoo Keeper.

Q: Can I hook a QuadTari up to another QuadTari for 8 player madness?

A: No. :) The switching only works on the first QuadTari connected; any 'daisy chained' QuadTaris will only read the first joystick port, so they would act as controller extenders, not switchers.

Q: Can I use a joystick/controller connected through the QuadTari for non-Quadtari games?

A: Yes, most of the time. In this case, the QT acts as a joystick extender, so you can hook up a joysticks to port 1 and port 2 on the QuadTari and play most non-QT compatible joystick games with no issues. I've seen issues with a few games (Defender being one of them) that do weird things with the switching mechanism or paddle pins even though they are joystick games.

Also, since the QT does not support paddles or keyboard controllers, paddles and keyboard controllers do not work through the QuadTari with paddle/keyboard games. However, Indy 500 does work with driving controllers hooked up to the QT since driving controllers are supported. :thumbsup:

Harmony support: You can use a joystick connected to a QuadTari to navigate the Harmony menu with one caveat; you must use a joystick hooked up to port 3. Once the game starts, you can then use the joystick hooked up to port 1 as normal. The reason is that the Harmony software supports both joysticks and paddles to navigate; it would appear that the reading of the joystick port is being done while DUMPPORTS is enabled (reading the paddles) so the QT activates joystick ports 3 and 4. Perhaps the Harmony team will modify the BIOS at some point to read the joystick ports with DUMPPORTS low which would fix the issue; until then there is a workaround. :thumbsup:

The following games have QuadTari support for 4 (or more) players:

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

Upcoming games with planned QuadTari support

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
The following video provides a tutorial for how to assemble the parts:
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)
  sta WSYNC        ;make sure it's a full scanline of wait time

  ; to activate ports 3 and 4
  lda #%10000000|$02 ;set bit 7, continue blanking
  sta VBLANK
  sta WSYNC        ;
  sta WSYNC        ;wait a full 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.
Thanks to Champ Games, ChildOfCV, and Danjovic for hardware design and testing.
Thanks to Thomas Jentzsch for adding QuadTari support to the Stella emulator.
And thanks to everyone who contributed ideas, feedback, and suggestions on AtariAge.