Arkanoid Vaus Paddle
This page was last modified 15:29, 17 December 2017 by Mars2000you. Based on work by Sd snatcher and Rderooy and others.

Contents

Description

The Arkanoid Vaus Paddle is a controller made by Taito, that connects to the MSX Joystick port. The name Vaus is derived from the name of the little ship that is controlled at the bottom of the screen, i.e. the paddle, which escaped from the mothership, called Arkanoid.

This controller was included with the games Arkanoid (in black color) and Arkanoid II - Revenge of Doh (in red color). It differs from the Arcade version as it's only able to rotate 180 degrees, and it isn't compatible with the standard MSX Paddle specification. The circuit is exactly the same as the Famicom/NES version, and was poorly hacked to connect to the MSX.

This paddle has a long internal processing delay that must be respected with the pin-8/reset being kept HIGH for all that time, but this logic level conflicts with the MSX-BIOS own interrupt handler as it will set this bit to LOW for its own processing. The workaround for this problem is described in the notes section below.

Pinout

  • pin-1/output: data line for the serial transmission
  • pin-2/output: button status. 0=pressed. Independent of the serial transmission.
  • pin-6/input: clock line for the serial transmission
  • pin-8/input: reset the internal 9bit counter and starts a new counting cycle

Programming info

The paddle contains an internal 9bit counter that is feed up by a 96.2KHz clock. This means that, once a new count cycle is triggered, this slow paddle takes up to 3.212ms (roughly 11498 Z80A cycles) to finish its internal processing. The algorithm goes like this:

  1. Read a serial bit from the PSG R#14 bit0
  2. Copy it to the lower bit of your reception shift-register
  3. Shift your reception shift-register left
  4. Pulse the clock low, then high on pin-6 of the joystick port, using the respective bit on PSG R#15. The bit-8 of the joystick port must be HIGH for the 1st pulse of the pin-6, and LOW for the remaining pulses.
  5. Repeat the steps 1~4 nine times to read the entire 9bit value.
  6. If you read the PSG R#14 at this point, the bit0 will be 1 if the paddle was disconnected, and 0 if the paddle is still present
  7. Set the pin-8 (Output) to HIGH using the respective bit on PSG R#14.
  8. Wait for at least 3.212ms before another trying to read the paddle again. (Taito games wait for an entire frame). The pin-8 of the joystick port must be kept HIGH all the time until the step-4 of the next reading block.

Notes:

  • The first 9bit value read this way will be garbage
  • To have the disconnection status bit on step-6, the pin-8 of the joystick port must kept HIGH for the 1st pin-6 pulse, and LOW for all subsequent pulses
  • You must make sure that the pin-8 of the joystick port will be kept HIGH if you decide to wait for the next frame as a delay. The problem is that the default MSX interrupt handler sets this pin LOW on every interrupt. There are many ways to disable the MSX BIOS interrupt processing, you should pick the one that is the best for your program, but keep in mind that the keyboard won't be automatically updated anymore
  • This paddle range goes roughly from 55 to 236, but Taito games consider the far left value as 164, center as 236 and 309 as the far right

Gallery

Taito Arkanoid Paddle Controller
Taito Arkanoid II Paddle Controller
Taito Arkanoid II Paddle diagram (made by Jipe)

Links