About me

My photo
Vanløse, Copenhagen, Denmark
Mathematician. Working programmer/system developer. Nerd. Married. Father of 3.

8.4.13

TAD Cabal Trackball To Joystick Conversion

I bought this original TAD Cabal along with another defective (Rezon, that actually plays perfectly) over a year ago. When powered on, it booted, but with no sprites. During visual inspection, however, I quickly stumbled across this


The two ribbons were not properly connected! I pushed them firmly into the sockets, and now the game booted normally with sprites present on screen };-P Coined it up and pushed start. But all I was able to do, was shoot bullets and throw grenades. When I wiggled the joystick, the cross hair moved just a tiny bit from side to side and up and down. Hmmm, a sneaking suspicion began to creep up on me...


And after having dumped all the ROMs, MAME was able to confirm, that this was in fact the trackball version of the game. As I don't own a trackball, I started to search the net to see if it might be possible to convert it into the joystick version. First thing I found, was this comment in the MAME source for the Cabal driver:
/* The joystick version has a PCB marked "Joystick sub" containing a 74ls245. It plugs in the sockets of the two D4701AC */
as well as this on KLOV:
When converting from track ball version, please change IC D4701AC (2pcs) at location C D 1 2, on bottom board with socket plug in adaptor.

Further googling, and I soon found this repair log on porchy's site JAMMARCADE.NET containing two photos of the "JOYSTIC SUB" (no, the missing 'K' is not an error };-P).  So made colour prints of both.


From that, I could see, that it only contained one single component, namely a 74244 (and not 74245, as stated in the MAME source).

Now in order to have any hopes of getting this to work, I would need to do a ROM-swap of the trackball-specific ROMs first, labled 6, 7, 8, and 9 on my board. I decided on trying the "World, Joystick Version" first, as this is the only joystick-set ROM #5 on my board, is in. So programmed 4 27512 EPROMs and installed them on the board, and removed the two D4701ACs from their sockets as well.


The game booted up just fine with these ROMs, but when I tried to start a game, the controls were acting up. However that was not surprising, as the inputs with the D4701ACs removed from the board, were now floating.
Next I started scrutinizing the data sheets for the D4701AC and the 74244 and the photos of the JOYSTIC SUB PCB. Now as the 244 is just an octal line driver, it was obvious, that the sub PCB just routed the 4 inputs from 1P and 4 inputs from 2P through the 244 to the 8 outputs of the D4701AC-socket for 2P. The rest is apperently implemented in software (the ROMs). Initially I thought, that the 244 was only there for protection against overcurrent caused by static shock and that the 244 should be left open all the time, but more on that later.
First I had to figure out how the 4 different direction were mapped from the edge connector to the 2 sockets. As there are pull-ups on the controller inputs, I could use my scope for that task.


So by exercising the joysticks and proping the socket, I found that
pin1@C1 (1P UP)
pin2@C1 (1P DOWN)
pin4@C1 (1P LEFT)
pin5@C1 (1P RIGHT)
pin1@C2 (2P UP)
pin2@C2 (2P DOWN)
pin4@C2 (2P LEFT)
pin5@C2 (2P RIGHT)
where C1 is the socket nearest the edge connector and C2 is the socket just beside it.
Next I needed to figure out which controller inputs the software expected on the different pins in the C2 socket. In order to pull-up the inputs, I installed a resistor array I desoldered from a scrap board,


and then used a grounded probe to poke the 8 socket-pins while the game was playing.


I've summed up the combined results here:
pin1@C1 (1P UP)    -> pin16@C2 (former D0 on the NEC D4701AC @C2)
pin2@C1 (1P DOWN)  -> pin17@C2 (former D1 on the NEC D4701AC @C2)
pin4@C1 (1P LEFT)  -> pin18@C2 (former D2 on the NEC D4701AC @C2)
pin5@C1 (1P RIGHT) -> pin19@C2 (former D3 on the NEC D4701AC @C2)
pin1@C2 (2P UP)    -> pin20@C2 (former D4 on the NEC D4701AC @C2)
pin2@C2 (2P DOWN)  -> pin21@C2 (former D5 on the NEC D4701AC @C2)
pin4@C2 (2P LEFT)  -> pin22@C2 (former D6 on the NEC D4701AC @C2)
pin5@C2 (2P RIGHT) -> pin23@C2 (former D7 on the NEC D4701AC @C2)
(these connection should be made through the 74244).
Now it was time to start the construction of the actual JOYSTIC SUB. I haven't got equipment to produce real PCBs myself, so given the simpleness of the circuit, I decided on just using a piece of strip board and kynar wires. It ended up looking like this:

(the lonely pin in the corner is not connected and is only added to make the PCB more stable in the sockets)

And here it's installed in the sockets:


At first, I had just hooked the two enable-pins on the 244 (pins 1 and 19) up to GND leaving it enable all the time. However this resulted in some very strange lock-ups when trying to move the controllers and sometimes the game wouldn't even coin up. Hmmm, tried removing my PCB again and make the connections for 1P with just 4 wires in the socket. That worked just fine. But when hooking up the connections for 2P as well, I had the same result as with my PCB. Strange! This made me wonder if some kind of multiplexing might be going on. So I had a close look at the picture of the JOYSTIC SUB from porchys site again. It wasn't easy to see, but it wasn't obvious that the enable-pins should be grounded. So cut the connection to GND, and attached a wire. I tried to start the game poking this wire against some of the other pins in the C2-socket. And when connected to pin 15 (chip-enable on the D4701AC), there were suddenly no lock-ups, and both 1P and 2P controls worked perfectly };-P

SWEET!  };-P
So I made a proper connection with a piece of kynar, and my homemade JOYSTIC SUB was done.
Now the last thing missing was the roll-feature. In the trackball version this is done by rolling the ball fast to either side. But when using a digital control, you'll need a button to make the roll. As the game was not originally designed for joysticks, the 3th button is not connected on the edge connector. However TAD cleverly solved this by letting the TEST- and SERVICE-buttons act as roll for 1P and 2P respectively. So adding hook-ups between the 3th button and these two like this


makes the board act like it's having a standard JAMMA-pinout.

All the above information has already (through porchy) been passed on the MAMEDEV TEAM and they will correct the comment in the source code and also make a how-to making the JOYSTIC SUB.

ADDENDUM: tirino73 has made the above rep log into a complete conversion guide over at citylan.it.

8 comments:

  1. I've been looking for a Joystick board for quite some time. Is there any chance you can sell a conversion kit so that I can convert a trackball board to joystick? johnnietam@gmail.com thanks!

    ReplyDelete
    Replies
    1. Hi Armadillo
      Just sent you an email.
      Cheers
      };-P

      Delete
  2. Hej !
    kan du sende et kit til Sverige ?
    Mvh
    Thomas

    ReplyDelete
    Replies
    1. Hi Thomas
      I've txt'ed you at G+
      Love };-P Elgen

      Delete
  3. Just dug the same PCB out my loft for repair, and it has the joystick board on. Hopefully I can fix it

    ReplyDelete
    Replies
    1. Cool! It's a great game IMO. Good luck with the repairs };-P

      Delete
  4. I was wondering if i could have some help i have a board i bought for inly 20 bux but i was un aware of the joystick trackball diffrence.

    ReplyDelete
    Replies
    1. Hi m8
      Following this post and multiple requests from fans with the same problem, I did actually make and sell a conversion kit with a real printed PCB, ROMs, instructions, and all needed for installation. I'm pretty I still have parts to cook up a conversion set. Shoot me an email using the contact form, and we can take it from there.
      <3 Elgen };-P

      Delete