About me

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

26.4.13

NMK Thunder Dragon Repair Log

I have to be honest...ever since I learned, that one of my favourite games Psychic5 was made by NMK for Jaleco, I have completely fallen in love with both companies. So I try to snap up as many games from both (when I find them at a fair price) as I can. Here I'd found an original NMK Thunder Dragon with "graphical errors" on evilBay with a starting price of 2EURO + 28EURO P&P. As I was the only bidder, I got it for the 30EURO all-in-all };-P.
When first booted up, the main intro logo, text layer and sprites looked fine, but some of the background layer was pretty messed up.



So dumped all socketed ROMs (they were fine) and did visual inspection. The board was in very fine physical condition, and the only suspective thing I found, was this


But they all checked out just fine using the continuity tester.
After having eliminated ROMs and physical damage, I had a hunch, that this error was caused by a RAM issue. So I started shortening adjacent data pins on the different RAMs on the board, to see if I could somehow stir up the graphics on screen. I found that the 4 MB84256 at positions IC1-IC4 is involved in generating the different layers on the screen. I googled the data sheet for MB84256-12 (that btw is produced by The Evil F aka Fujitsu) and found that they are just the Fujitsu equivalent of the standard 62256 with 120ns access time. These are not very common (at least not at the boards in my scrap pile), but at last I managed to find 2 pieces at 70ns and 85ns respectively and they both tested good in the Top2005+ };-P. So I tried piggy backing the 4 RAMs one at the time.


I saw a change when piggy backing the one at IC4.



So I desoldered it


and tested it in the Top.


So fitted a socket and installed one of the scrap-RAMs. Now the background layer was perfect again };-P


However it was now evident, that the game also had a sprite problem. I just didn't notice that before because of the issue with the backgrounds.



They all had stripes through them! So I tried piggy backing the 3 other RAMs, and on IC3 I saw a change in the stripe-pattern. So desoldered that IC as well


and tested it in the Top.


So fitted a socket and the 2nd scrap-RAM IC


and presto! All the sprites were back to normal };-P



So the two culprits are ready for the bin


and the case is closed.
The game is very addicting, fast paced, and has a very cool soundtrack. I'm really pleased to have it in my collection };-P

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.