-->

2017年4月4日火曜日

NES Classic Editionのコントローラの通信内容解析④

では、実際の通信内容を見ていきます。まずはI2Cのパラメータについて。
  • SDA&SCLは3.3Vでプルアップ
  • 本体側がマスタ、コントローラ側がスレーブ
  • コントローラのスレーブアドレスは"0x52"
  • 通信速度は400kHz
また、DeviceDetectはHighで接続されているとみなされるようです。
起動時の通信内容をロジアナでプローブしたものが以下です。※"A2"がDeviceDetect、以下の画像はリセット時のものなのでHighのままです

通信内容を文字に起こしたものが以下です。
  1. DeviceDetectが"Low"から"High"に変化
  2. ライト(マスター → スレーブ)
    0xA4 0xF0 0x55
  3. ライト(マスター → スレーブ)
    0xA4 0xFB 0x00
  4. ライト(マスター → スレーブ)
    0xA4 0xFE 0x03
  5. ライト(マスター → スレーブ)
    0xA4 0xFA
  6. リード(スレーブ → マスター)
    0xA5 0x01 0x00 0xA4 0x20 0x03 0x01
  7. ライト(マスター → スレーブ)
    0xA4 0x00
  8. リード(スレーブ → マスター)
    0xA5 0x83 0x85 0x85 0x86 0x00 0x00 0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  9. 4.6ms程度待機
  10. ライト(マスター → スレーブ)
    0xA4 0x00
  11. リード(スレーブ → マスター)
    0xA5 0x83 0x85 0x85 0x86 0x00 0x00 0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  12. 4.8ms程度待機
  13. ライト(マスター → スレーブ)
    0xA4 0x00
  14. リード(スレーブ → マスター)
    0xA5 0x83 0x85 0x85 0x86 0x00 0x00 0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  15. 4.8ms程度待機
  16. …(以下ループ)
あれ?暗号化されてなくね?どういうこと?

次 → NES Classic Editionのコントローラの通信内容解析⑤