セガサターンのキーボードをPCにつなぐ(2) ~キーを押したらどうなるか分かったの巻~

はじめに
前回は信号の取り出しができた。ついでに信号の読み方も分かった。

megatsar.hatenablog.com


実はこれで全行程の5割は終わったといっても良い。
今回はキーを押したらどうなるか調べる。

 

前回のおさらい

f:id:MegaTsar:20190622204325p:plain

f:id:MegaTsar:20190622214637p:plain

わかりますね?必要なのはD0-D7とMake,Brakeだけよ。

やったこと
(1)Zを押す→Zを離す
(2)Zを押す→Xを押す→Xを離す→Zを離す
なんとこれだけで大体の振る舞いがわかっちまうんだ!!!

(1)Zを押す→Zを離す

f:id:MegaTsar:20190623144806p:plain
Zを押した瞬間。Make = 1になっているのが分かる。
この時D7-D0はキーコードを示している。
B00011010 = 0x1Aとなる(おまけ1へ)。
ATRGが0なのはパッドとしても使えるようにするため。(おまけ2へ)

 

f:id:MegaTsar:20190623144832p:plain

Zを押した1周期後の信号。まだZは押しっぱなし。
ATRGは0のままだ。ただしMake = 0となっている。
D7-D0はZのキーコードを示している。

 

f:id:MegaTsar:20190623144855p:plain
Zを離した瞬間の信号。Brake = 1となっているのが分かる。
A TRGが1に戻っている。
D7-D0はZのキーコードを示している。

 

f:id:MegaTsar:20190623144947p:plainZを離した1周期後の信号。どのキーも押していない状態。
D7-D0はZのキーコードを示している。

わかったこと。
・ キーを押した/離した瞬間のみMake/Brakeが1となる。
・ D7-D0はキーを離してもそのまま残る。

 

(2)Zを押す→Xを押す→Xを離す→Zを離す

f:id:MegaTsar:20190623145420p:plain
今Zを押しっぱなしにしていますね。

 

f:id:MegaTsar:20190623145501p:plain

Xを押した瞬間。Make = 1となりB TRGが0になります。
またキーコードがB00100010 = 0x22となります。
ZとXの同時押し状態です。

 

f:id:MegaTsar:20190623145827p:plain
Zを離した瞬間。Brake = 1となりキーコードはZのものとなります。
押しているキーはXのみとなります。

 

f:id:MegaTsar:20190623150042p:plain
Xを離した瞬間。Brake = 0となりキーコードはXのものとなります。
どのキーも押していない状態です。

わかったこと。
・ D7-D0はキーを押した/離した瞬間に対応するキーコードになる。

 

まとめ 
キーコード部(D7-D0)が変わるのはmake/brakeが1になったときのみ。
単純だね。
次はArduinoにキーボードをつなぐよ。

 

おまけ1(キーコード)
SEGA公式文書にはUS仕様のキーボードしか書いてない[1]。
SEGA of Americaの資料だからしかたないね。
日本語キーボード用のキーコードはこちら。

  0 1 2 3 4 5 6 7 8 9 A B C D E F
00   F9 F5 F3 F1 F2 F12   F10 F8 F6 F4   Tab hankaku  
10   L_Alt L_Shit katakana L_Ctrl Q 1 R_Alt R_Ctrl   Z S A W 2  
20   C X D E 4 3     space V F T R 5  
30   N B H G Y 6       M J U 7 8  
40   < K I O 0 9     > ? L ; P -  
50   _ :   @ ^     CapsL R_Shift Enter [   ]    
60         henkan   BackSp muhenkan     BackSlash          
70             ESC   F11           ScrLock  
80   Insert Pause F7 PrintSc Delete Home End PageUp PageDown    

e.g.) F9を押したり離したりするとD7-D0 = 0x01になる。SならD7-D0 = 0x1Bになる。
エクセルかなんかに貼り付けると見やすくなるよ。

おまけ2(パッドとの対応)
ESC = Start,
Q = R TRG,                    E = L TRG
A = X TRG, S = Y TRG, D = Z TRG, 
Z = A TRG, X = B TRG, C = C TRG,
矢印キーはそのままキーボードに対応する。
ただし手持ちのゲームではパッドとして使えなかった。

 

参考

[1] http://antime.kapsi.fi/sega/files/ST-TECH-45.pdf