ファミコンコントローラー→NESアダプター

このアダプターを作ったのは

なぜかと言うと、カナダでは買う事ができなかった日本のファミコンコントローラーを使うため。 私達の子供の頃は日本のコントローラは手に入らず残念だった…

では、ファミコンのコントローラを二つ示す。左:ハドソンのジョイカード、 右:ジョイボール.






配線

ファミコンとNESはだいたい同じ機械であるので、アダプターの作り複雑な事ではない。DE-15コネクタに NESのコントローラのケーブルを配線する事だけである。注意:下記の線の色は、純正コントローラの色 で、サードパーティ製のケーブルの線色は、違う事があります。

DE-15のピンNES線色信号名前
1 GND
12 Latch
13 Data
14 Clock
15 +5 volt


配線

配線

配線

配線

配線

配線

出来上がり

出来上がり



このアダプターは、ハドソンのジョイカードと良く対応で、他の対応するコントローラ多は多いでしょう。

しかし、ジョイボールは対応していない。 この次に細かく説明されいてる。



ジョイボールの問題

簡単に言うと、「A」と「右」が動いてるだけだった。それは、最初と最後の送信されてるビットであって、面白い と思った。そうだ、送信順番は「A,B,Select,Start,上,下,左,右」である。

オシロスコープで信号を見て、DATA線は変な振る舞いしてた事を発見した。例えば,「A」押しながら 「B」を押すと、どうか「B」は普通に動き始める。そして「A」と「B」一緒に押しながら、「SELECT」を押すと、 今度は「SELECT」も一時的に直るらしい。

クロック信号と関係ある問題だろうと思った。タイミング違反かな…ジョイボールの中にある基板を見て、 集積回路が一つだけあったが、いつもの4021ではなかった。多分、TURBO機能搭載の特別なICである。何しろ このICについて(M60001-0103p)何も情報を見つけられなかったので、タイミングの確認を行う事できなかった。

ファミコンを持ってないので、NESのタイミングと比べる事もできなかった。だから代わりに、実験をする事にした。 マイクロコントローラを使って、NESからのクロックプルスの長さを0.5μsから2μsに延長するソフトを書いた。 それで、クロック信号をそのを通すように配線した。(NES→マイクロコントローラ→ジョイボール)

できた! NESの電源を点けて、やっとジョイボールが完璧に動いてた。ま、実は違う。なぜなら,日本人に言われた言葉をすぐ思い出した: 「あのコントローラって、悪かったよ。昔、持ってた子供は、友達にバカにされたほど…」と言っていた。良くわかった。 まず、ジョイボールとNESのタイミングの問題に勝ち、そしてこのコントローラのせいでテストのゲームで負ける! せっかくジョイボールを使えるように努力したのに、あまり報われてないな…

上:NESからクロック信号。<br>下:マイクロコントローラからクロック信号。

上:NESからクロック信号。
下:マイクロコントローラからクロック信号。

テスト中

テスト中



マイクロコントローラに入れたコードーを:
1 #include 
2 #include 
3 
4 int main(void)
5 {
6     // In: PORTB5
7     // PORTB all pullup
8     DDRB = 0x00;
9     PORTB = 0xFF;
10 
11     // Out: PORTC, ANY
12     DDRC = 0xFF;
13     PORTC = 0x00;
14 
15     // PORTD unused, input + pull
16     PORTD = 0xFF;
17     DDRD = 0x00;
18 
19     while(1)
20     {
21         // Wait for falling edge
22         while (PINB & (1<<PINB5));
23 
24         PORTC = 0x00;
25         _delay_us(2);
26         PORTC = 0xff;
27     }
28 }
AtmelのAtmega8を使った。



参考文献




免責

私の知る限りにこのページーの内容は間違えが無いと思います。 しかし、こちらは何も保証致しません。このページを使って、 どんな事になっても、責任を負いかねます。