このアダプターを作ったのは
なぜかと言うと、カナダでは買う事ができなかった日本のファミコンコントローラーを使うため。
私達の子供の頃は日本のコントローラは手に入らず残念だった…
では、ファミコンのコントローラを二つ示す。左:ハドソンのジョイカード、 右:ジョイボール.
配線
ファミコンと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のタイミングの問題に勝ち、そしてこのコントローラのせいでテストのゲームで負ける!
せっかくジョイボールを使えるように努力したのに、あまり報われてないな…
マイクロコントローラに入れたコードーを:
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を使った。
免責
私の知る限りにこのページーの内容は間違えが無いと思います。
しかし、こちらは何も保証致しません。このページを使って、
どんな事になっても、責任を負いかねます。