Wednesday, 18 November 2015

JammaCon

This is a project I started a long time ago and just recently go around to completing the majority of it. It basically is an interface to lets you easily hook up a game console to a Jamma compatible cabinet.

Consists of two pieces:
  1. JammaCon board
  2. Console specific daughter boards
The main JammaCon board which hooks up to the cabinet and the consoles SCART output, this handles the audio/video amplification and getting the controls connected up. The video is processed using a TLS1233n preamp and LM1881 sync stripper, the audio amp is a simple LM384 amplifier.
The controls for both players -  joystick/coin/start and buttons 1-4 are picked up at the Jamma edge, buttons 4-6 can also be hooked up to the terminal blocks if needed. To make life a bit easier I put together a simple CPS1/CPS2 kickharness adapter to avoid having to splice looms.


The second piece are the interchangeable daughter boards,which simulate the controllers for the various consoles. These are built using (where possible) the same logic as the original controllers for maximum compatibility.

Picking which consoles to make daughter boards for was a no-brainer for the 8 bit & 16 bit generations - all of them if possible !! Most of the controllers of that era used simple serialisers or muxes and are easy to simulate, so any console capable of RGB output should be supported.

Of the 32 bit era, the Sega Saturn has native RGB out and a decent selection of games available which would work well in an arcade cabinet. The Amiga CD32 is also a good candidate as it can be RGB modded relatively easily. But will be while before the 3DO or CDi ever gets an adapter made I imagine !!

Later console generations that largely depend on analogue controls are a poor fit when it comes to mapping them to a single 8 way digital joystick. Exception to this would be the Playstation(s) owing to the decent amount of games available that don't require the analogue controls.

So far I've got daughter boards completed for:
  • SNES & NES
  • Megadrive & Master System
  • PC-Engine
  • Sega Saturn
  • Playstation & Playstation 2
Have working prototypes for Amiga CD32.

Also plan on a simple board to fan out the controls to terminal blocks for anyone looking to build 'padhacks' for consoles I'm not developing daughter boards for.


JammaCon without controller adapter fitted


Full selection of boards available so far


Video of the boards in action..


Monday, 19 October 2015

Supergun Updates

Received new batch of the latest Superguns. Only a minor update to the PCB and a few firmware tweaks this time round.
Probably the last batch of these that I'm going to making as well, time to move onto other stuff I think.

Lots of soldering to be done...

Monday, 5 October 2015

NegCon & JogCon Supergun support

Recently picked up a Namco Jogcon and a Namco Negcon controller for the Playstation. Both are somewhat unique in that they're designed for driving/racing games only, more details on both of them in the Wiki links.

The Negcon is pretty good to use, the twist mechanism works well as do the long travel analogue buttons. The Jogcon is a different matter, the jog wheel while being intuitive to use is in practice horrible due to the force feedback in play.
  
Anyhows, I decided to the add support for these to my supergun firmware, figuring they'd make an interesting control scheme for the various overhead arcade racers like Trash Rally, Neo Drift Out etc. 

I already have support for regular Playstation controllers so hoping adding these would be simple enough.

Negcon


So taking a few traces of the controller in action show us the info we need. The relevant details for this controller are:
  • Byte 1 - The controller device ID in this case 0x23 
  • Byte 6 - Holds the value of the 'twist', ranges from 0x00 to 0xFF with 0x7F being the neutral resting point. A forward twist increases this value and conversely a backward twist reduces it. 
  • Byte 7 - Analogue button 'I', ranges from 0x00 to 0xFF with 0x00 being the released value and 0xFF being fully pressed.
  • Byte 8 - Analogue button 'II', ranges from 0x00 to 0xFF
  • Byte 9 - Analogue shoulder button 'L', ranges from 0x00 to 0xFF 
All the other buttons & D-Pad report back their status in the same bytes as a regular controller.

Given that the Supergun Jamma controls are digital only and we're dealing with analogue inputs here I'm just triggering the output based on hitting a defined threshold above and below the neutral point.

0x20 seems to work ok as a decent threshold value, it gives us a sufficient dead zone that a definite twist is required without have to twist the controller the full way.

Similarly with the analogue buttons, anything above 0x20 is considered a positive press.

Overall this controller works very well with those style of arcade racers and the D-Pad is always there as a fallback if needed.


NegCon Controller at rest

NegCon Controller with a little forward twist


JogCon



The JogCon device ID s 0xE3 and only has a single analogue input - the jog wheel, this value is returned in Byte 5 and all the rest of the (digital) inputs are as per a regular Playstation controller.

Took a few traces with the jog wheel at different wall clock positions:
  • 12 O'Clock  Byte 5 = 0x7F
  • 3 O'Clock    Byte 5 = 0xFF
  • 6 O'Clock    Byte 5 = 0x00
  • 9 O'Clock    Byte 5 = 0x3F
So basically any reading between 0x00 and 0x7F would be Left turn and 0x7F to 0xFF would be Right turn, again with a sufficient dead zone.

Feedback is disabled as there is no way of tying it into the Jamma game inany logical fashion, I guess I could have implemented it in such a way to resist the turning motion of the wheel but since I'm not supplying power for the feedback motor from the Supergun its a moot point :)







It has been an interesting experiment but pretty useless given that the standard Dual Shock is a better all-round controller to use.
The NegCon is definitely something I'll use again but the JogCon is unlikely to see much action ever again.


Thursday, 27 August 2015

Super Pang (Jamma) Repair

Received a dead Super Pang jamma board sometime ago along with a heap of other faulty boards. Had played the game on Mame a lot so was keen to try and get the board working again.

This board was one of Capcom's earlier attempts of a "Suicide board",  basically all or part of the ROM set was encrypted and the encryption keys stored on battery backed volatile memory so when the battery died you lost the encryption keys.
Thankfully much work has been done to bypass this, The Dead Battery Society has full details on the modifications needed to board as well as the decrypted ROMs needed.

Following their instructions I was able to get the board up and running again. However there were problems with the background colours, which got worse over time as the board heated up.


Not pretty but works

Background saturated with 'Red'

Was unable to find any schematics for this board but did find another repair log for a similar fault. Sure enough the same RAM at 8C was the problem as in the other repair. Swapped out the chip for another one resolved the problems with the colours.

New RAM at 8C fitted



Proper colour restored




Colecovision Repair

Got a Colecovision for repair which had not worked in a few years. Had never seen or worked on a Colecovision before so had to do a bit of research on the typical failure modes. 

Top of the list were a faulty power switch and the video RAM as possible suspects. The power switch had already been changed and the VRAM replaced on the unit, the older 4116 RAM chips upgraded to single supply 4164 devices.

Measured the 5V rail across various chips at ~200mV, so something obviously pulling it down. VDP TMS9929A at fault here, replace the VDP and signs of life at last. 

Where's the Kong ?


Unfortunately a bit of garbled mess still. Ran a continuity test on the VRAM address & data lines turned up a couple of broken tracks. 
The 4164 RAM was soldered to the board when the previous upgrade was carried out, decided to remove all the RAM to check out the tracks properly and refit the RAM in sockets. On inspection the board was quite burned under of the RAM chips, the original 4116 IC must have badly overheated at some point.

Repaired the broken tracks,fitted the RAM in sockets, replaced the RF output with AV output and the Colecvision lives to fight for another day :)


Ah there he is..


Wednesday, 5 August 2015

Double Dragon (Jamma) Repair

Picked up this faulty Double Dragon board, no audio was the fault description. Sure enough game played through to the end in perfect silence.

Quick visual inspection highlighted a couple of missing caps and the rest of electrolytic's looking a bit tired. So after the board was cleaned up the capacitors were replaced, still no audio so time to poke about further.

Once I read or heard somewhere that you should use all your senses when debugging electronics, so with that in mind I set off.

Touching the audio amp produces an audible hiss, good sign the amp is working then and the problem is upstream. Further poking about and noticed the 68A09 was running pretty hot, check on the schematics showed this as the audio CPU so good chance this is the culprit. Verified the CPU as knackered with a scope.

Desoldered the old part and fitted a new CPU along with a DIP socket. Result. We've got audio again :)

Played through the game again just to verify, but still not near the 1CC level yet !!


New 68A09 installed