Replacement CUS60, CUS63 and some CUS64

All you ever wanted to know and more about the CUS60, CUS63 and CUS64


Technical Background

A number of mid-80's namco boards featured a semi-custom micro-controller used as the main sound processor.  The processor was, at it's core, a Hitachi 6301, which is really just a souped-up 6801.  The micro-controller contains 4k of ROM and 128 bytes of internal RAM.  This controller handles the sound effects, music, coin-counters and I/O for the games which use it.

Functionally the Namco version of this controller behaves just like the standard part but with two additional op-codes not supported by a regular  6301 CPU.  

The new op-codes are  0x12 & 0x13 and their function is to add the value at the top of the stack to the X register while preserving all other registers. Both op-codes appear to do exactly the same thing..

Interestingly...  in the JAS arcade simulator these op-codes were emulated as ADX, add A accumulator to X, which worked fine in the places the MCU uses the code, but examining the instructions on original hardware showed this was wrong (!)

Revisions

There are 3 known versions of the chip 

Type Markings
CUS60 60A1
CUS63 63A1
CUS64 64A1

The 64A1 is used with Namco system 1 hardware, more on that a little later. The instruction set  of  these MCU's all appear to be the same. Running in external bus mode, with the right EPROM, they're fully interchangeable.

Interestingly the code in the 63A1 looks like a binary level patched version of the 60A1 (!?!?)  Haven't sat down to figure out exactly what the changes do or if I even really want to go to that much trouble ;-)


Replacements

So.. having come across a few surplus, already programmed, HD63701 this encouraged me to build a carrier board with the necessary  EPROM and support logic to fit the image for the controller code. This was later updated to include two different versions of the micro-controller code. 

The schematics for a 'classic' 6301/3 external ROM system are included here  [HD6301 carrier PCB  schematics],  should anyone want to do a bit of the their own prototyping.  This was the design used for the first test board. It uses a 27c512 only as I have a lot of these handy.

Expanding on this the 'deluxe' replacement added a GAL for address decoding & low-address bus latch, along with a 7400 NAND just for inverting a signal and providing the output enable for the EPROM. The other feature is a jumper to swap between 63A1, from the other version of Skykid, and the 60A1 used by the other games.

The ROM memory map, of both boards, is expanded to 8k from the original 4k, and fills the space from $E000 to $FFFF allowing for lots of extra code. Not that the patch really needs a lot of code. None of the games use this area of memory so it was safe to overlay it with extra ROM.

The main CPU on this example is a 63A701 running in external bus mode so it can read the EPROM.  HD6303 and HD6301 CPU's will also work. For reference the use the operating mode of '2', external multiplexed memory mode.

There had to be a couple of code patches to add support for the two new op-codes to the standard part. 

The Hitachi 6301/3 has the nice feature of being able to trap invalid op-codes, a big advantage compared to the motorola 6801/3.  To implement the additional functions the invalid op-code trap vector was re-directed to the extra 4k or ROM where the handling routine simulates the $12 and $13 op-codes and returns control back to the point the op-code was executed.  This allows all the games to work without patches to the game sound ROMs.  Baraduke and Metrocross both used these extended op-codes in their external sound ROMs, so just patching the micro-controller code wasn't an option. 

See the extender source code for details of the patches.


Non-exhaustive list of Games which used the 60A1 "cus60":

Pacland, Skykid, , Baraduke, Alien Sector, Dragon Buster, Metrocross
also the "system 87" hardware which included Rolling Thunder, Hopping Mappy,  Skykid DX

The only game I've found which uses the 63A1 "cus63" is the first revision of Skykid.  There is another revision of skykid with the ROMs prefixed with  "SK2" the earlier version was prefixed "SK1". The two roms which are different between the versions are "SK2-2" and  "SK2-4"

Anything I've missed here ?

Anyway..on the right are pics of the carrier board on a pacland.  So far testing has been great, it's worked on everything I can throw at it (!)

CUS64

The final(?) member of the family of controllers is the "cus64" from the Namco System 1' game hardware. Pacmania, Galaga'88, Dragon Spirit and  Splatterhouse being the most common examples of this boardset.  Now the cus64, aka 64A1, seems to be the same micro-controller as the 60 and 63 but with a different internal ROM.  My replacement board works with this board and the correct ROM file for the cus64, however (!)  Weird happenings.. with one of the 60a1, 63a1 CPU's in external memory mode all is fine,  using a replacement 63701 or 6301 the game fails the self test. 

Why ???? well... from tracing the code execution with a trusty logic analyzer there's a write to a memory location, which for some unknown reason, the value of $00 from the controller turns magically into a $A6  (?)  Haven't figured out why this happens but it does this with all the games tested. It's not the external game board or ROM as using a 60a1 in place of the 63701 the replacement board works fine (!!!)  So some feature of the 6xA1 is changing the $00 write to $A6. 

It looks to be an odd 'feature' of the original part. A patch to the voice ROMs and all works perfectly.


Extended Code Source & Patched Binaries

Click to View the Program Source

Original 60A1 Patched 60A1
Original 63A1 Patched 63A1

The patched binaries will work in a carrier board based on the schematic above. 


 

CUS60 Replacement on a Pacland


Replacement Board Close-up



Prototype for a carrier board, based on the schematic below. 
Uses TTL logics and decodes the EPROM to $E000-FFFF
The blue jumper wire was because someone forgot to route the address strobe ;)

Basic  Schematics


Click to Enlarge

Corrected from the first version to include the Address strobe.
The 'Advanced' Carrier PCB

GAL programmable logic used to replace most of the TTL's and to shrink the board size.

A13 taken to a jumper so switch between two version of the ROM, for different boards.

 

All done....


Back Home