コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

pcb01
中古のアーケードゲーム基板でギャラクシアンを入手した。
残念ながらオリジナルではなくてコピー基板。オリジナルだと今や5万円くらいの値段がついているところなのだけれども、コピー品なので1.5万円というそこそこのお値段。それでも高めではあるのだけれども、そこはそれ、もう30年近く昔のものなので十分にビンテージな一品でありある意味完動であるだけでもすげえといったところもあるので。
日本で流通していた一枚基板モノだと、プログラムROMは3つ載っていたらしい。32kbit が2つに、16kbit が1つ。バイトで表現すると10kBほど。
pcb02
これの 32k のところを 7F, 7J、16k のところを 7L と表記しておく。

dsc06426dsc06427
ところがこのコピー基板ではプログラムROM部分がドーター基板になっていて 16kbit のROMを5個使う形になっていた。

これら複数のプログラムROMを手元の 256kbit(128kbitでも良いけど) UV-EPROM に焼き込んで、一本にまとめてみようというのが今回のチャレンジ。

dsc064151
まずはバックアップも兼ねてプログラムROMの読み取り。
このROMはi2716互換ではなくTMS2716互換らしい。

TMS2716
 A7  1     24 Vcc
 A6  2     23 A8
 A5  3     22 A9
 A4  4     21 Vbb
 A3  5     20 /CS
 A2  6     19 Vdd
 A1  7     18 A10
 A0  8     17 D7
 D0  9     16 D6
 D1 10     15 D5
 D2 11     14 D4
Vss 12     13 D3

基板側の 7L は上記ROMと同じ信号配置なので良いとして、32k側の信号をドーターボードのパターンから追って解析する。
調べてみると、7F と 7J は全結線で同じ信号が届いていることがわかり「?」となる。一応、ドーターボードから信号を書き起こすと以下の様になる。

GALAXIAN 32k
A7 1 24 Vcc
A6 2 23 A8
A5 3 22 A9
A4 4 21 A12
A3 5 20 /CS
A2 6 19 A10
A1 7 18 A11
A0 8 17 D7
D0 9 16 D6
D1 10 15 D5
D2 11 14 D4
Gnd 12 13 D3

どうも、21pin A12 の挙動が OE, /OE 相当で挙動の異なる2種類の 32kbit ROM が使われていたっぽい。汎用の EPROM で済ませたかったコピー基板ではその辺を避け安い 16kbit でなんとかしたくてドーターボードを追加したんだろうなあ。

dsc06383.JPG
さて、手元に秋月で買った 256kbit のUV-EPROMがある。
こいつにプログラムを書き込むのは良いが、信号もROM1本にまとめないとならない。
ちなみに、27C256 の端子は以下の通り。

Vpp 1 28 Vcc
A12 2 27 A14
A7 3 26 A13
A6 4 25 A8
A5 5 24 A9
A4 6 23 A11
A3 7 22 /G
A2 8 21 A10
A1 9 20 /E
A0 10 19 D7
D0 11 18 D6
D1 12 17 D5
D2 13 16 D4
Vss 14 15 D3

ギャラクシアン基板のプログラム領域は16kByte となっているので、128kbit でよく、256kbit だと上位半分が無駄となる。なので A14 は Gnd に配線して未使用。
ほとんどの信号は 7F か 7J のコネクタから取れるけれども A13 と /CS だけは 7L の信号も関係するので何とかしないといけない。
世の中には同じ様な事を考える人が居るもので Galaxian PCB Modifications というサイトでは実際に128kbit や 256kbit のROMを使用する方法が書いてある。だが、ここの手法では必要な信号を基板上のアドレスエンコーダ以前から引っ張ってくるという手法をとっている。できるだけ、基板に手を入れずに改造したいものだ。(そもそも海外版の基板で手順なのでそのまま適用できなかったり)
そこで、7F の全PINの他に 7L の /CS を使ってアドレスデコードする事にした。

dsc06424dsc06425
作成したのが、この変換基板。
真ん中にあるのは XILINX の CPLD でアドレスデコーダの役割。
実は必要なのはたった 2ゲートなんだけれども、そのために 74ロジックIC を2本載せるのもばからしいというか、必要な基本ロジックのストックがなかったので CPLD で代用した次第。飽きたら使い回しができる汎用部品として使用。お手軽。
ise_sch_adr
わざわざ HDL を使うこともないので、ISE の Schematic mode で書いてみた。見ての通り簡単なもの。

dsc06429
できあがったものを基板に装着。
galaxian1
バッチリ動いたよ!

やっていることはたいしたことないものだけれども、メモリデバイスを扱うことに憧れていたのでうまくいくと嬉しい。
ちょこっとロジックが欲しいときに CPLD を使って適当にこなすというのはやっぱり便利かも。

Leave a Reply