Skip to content

DaiGuard/N64Controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

N64 Controller for ESP32

Nintendo64コントローラをESP32で読み取るのためのパッケージ

N64は250kHzボーレートで通信使、1は1µs LOW, 3µs HIGH、0は3µs LOW, 1µs HIGHで表現されます。 そのままの通信プロトコルが存在しないので1250kHzのUARTを利用して通信を行う

N64 2ビット分をUART 8ビットで下記表に合わせて表現する

N64 UART
0b00 0x08
0b01 0xe8
0b10 0x0f
0b11 0xEF

image

接続方法

N64コントローラは1線式半二重シリアルプロトコルを使用しています。 それに対応するため、画像のようにTXにダイオードを挟んでRXと合わせて接続する

image

image

ESP32-DevkitにはUARTで使用できるシリアルが3つ存在するが、SerialはUSBシリアルと共用しているため、USBを使用する場合は使用することができない

RX TX
Serial 3 1
Serial1 9 10
Serial2 16 17

## 使い方

初期設定

n64_protocol.cpp上の#define N64Serialに使用するシリアルアダプタを設定する

// デフォルト
#define N64Serial Serial2

// 変更例
// シリアル0を使用する場合
#define N64Serial Serial
// シリアル1を使用する場合
#define N64Serial Serial1
// シリアル2を使用する場合
#define N64Serial Serial2

準備コマンド

  • *** ステータス(0x00) ***
/**
 * @brief ステータスコマンド送信
 * 
 * @param data レスポンスデータ格納バッファ(必要3バイト)
 * @return size_t 
 */
size_t N64_readStatus(uint8_t* data);
  • *** ポール(0x01) ***
/**
 * @brief ポーリングコマンド送信
 * 
 * @param data レスポンスデータ格納バッファ(必要3バイト)
 * @return size_t 
 */
size_t N64_readPoll(uint8_t* data);
  • *** 読み取り(x02) ***

  • *** 書き込み(0x03) ***

  • *** リセット(0xFF) ***

参考リンク

N64 Controller

About

Nintendo64 Controller Communication for ESP32

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors