honeylab's blog

各種ハードウェアの改造、主にファミコンミニなどをやってます(ました)

(新作)スーファミミニ用マルチタップできた

前回のボンバーマンマルチタップ活用型コントローラがいまいち受けが悪かったので、

honeylab.hatenablog.jp


要望もいくつかあった現代的なマルチタップを実現してみました。

I have succeeded to work multitap working with Arduino and connectors without Old Multitap.

 

f:id:honeylab:20171104103631j:plain

構成としてはこんな感じ。

f:id:honeylab:20171104095102p:plain

2ndPadの信号(i2c)の配線に乗っかって3rd以降のリクエストを本体から出し、
それに従ってArduinoがコントローラ信号を返す形です。
Arduino receive and send i2c signal splitted from 2nd pad connector.


Arudinoと3rd-5thのパッドの間はi2cで、i2cがそんなにいっぱいあるマイコンなんか無いよ、と困っていたのですが、SoftwareI2Cを使うことでどうにかなりました。

Arduino and 3rd-5th Pad are communitate with SortwareI2C


このタイプだと、普通のArduino

https://www.amazon.co.jp/dp/B06XFR63YR/

この程度の延長ケーブルがあればとりあえず動作させることができます。
ドライバとファームにまだちょっと不安があるので、その辺が出来たら
誰でも作れるように情報をまとめておこうと思います。

 

You can this NEW Multitap are made with one Arduino and some cables.
I will open resouces when drivers and firmware will stable.

Why I use HUDSON's multitap

This contens are wrong.

I will make wii-type splitter with arduino.

 

Some people ask me , why you have not make Wii-connector-type multitap ?

This is schematic of wii-connector type multitap for NES/SNESC but I have not make.

f:id:honeylab:20171102090551p:plain

f:id:honeylab:20171102090956p:plain

Core parts is LTC4316

www.linear.com

It make convert i2c communication device address without microprocessor.

but this project have some problem.

  • I must make pcb for wii connector mounting.
  • It is little difficult to buy core parts LTC4316
  • and LTC4316 is too small to hand soldering for average people.

    f:id:honeylab:20171102092603p:plain

    f:id:honeylab:20171102092720p:plain
    package is 3mm x 3mm in above picture

If I will make this product in machine production,I select this type.
But I am retro-parts-geek and no money for production , I have used Multitap.

HUDSON's Multitap have connectors already mounted and cased and I can buy oldtype SNES pad in HARD-OFF 100 YEN.

 

SEIKENDENSETSU 2 (Secret of Mana) works with multitap 3players playing on canoe

My game skill is too poor , and I had not cought party member ,death and death...

 

 

But my wife has good skill to catch members !!!! Thanks !!!

 

This picture shows Player1 (MAN) and 2,3 are computer member.

 f:id:honeylab:20171031232052p:plain

 

with 2p,3p START Pressed ...

f:id:honeylab:20171031232028p:plain

2 and 3 indicator appeared and can control with them by pad.

 

This content explain multitap playing with RetroArch emulator.

 

honeylab.hatenablog.jp

But now, I confirmed stock canoe emulator can handle multap controller !!!!

SuperMultitap Convet to SNESC adapter development progress - work fine!

スーファミミニにマルチタップをつないで動作させることが出来ました!

f:id:honeylab:20171101215835j:plain

f:id:honeylab:20171101215847j:plain


とはいえ当然そのまま動作させることはできません。
何種類か発売されているWii(スーファミミニ)と旧来スーファミコントローラを変換するアダプタでは、マルチタップを動作させるために必要な配線が足りていません。

 

Hyperkinアダプタの分解と解析

Hyperkin SNES TO SNES CLASSIC ADAPTER can't use SuperMultitap - honeylab's blog

 

マルチタップの読み込み方

Mechanism of SFC MultiTap

普通のゲームパッドの端子はコネクタに全部接続されてるわけではないんですね。

HyperkinアダプタがATMEGA8なのでこれに追加配線をすることで改造できそうな気もしますが、まずは専用コンバータを作ることにします。

その前に、ドライバが動かなければどうにもならないので、こちらを作ることから始めます。
スーファミミニのほうがどうやってコントローラを認識しているかですが、

honeylab.hatenablog.jp

 上記の記事のようになっています。
具体的には、clovercon というi2c-joypad ドライバがその役割を果たしているため
そこを改造することになります。

もともと、Wiiタイプのコントローラは0x52をi2cアドレスとして固定しているため、
同じi2cバス上には二つ以上接続することはできません。
そのため、アドレスを変更しただけのWiiコントローラプロトコルを実装し、
複数のi2cアドレス要求に対して応答できるように改造します。


具体的な改造箇所は以下の通りです。

https://bitbucket.org/bakueikozo/clovercon-mod/diff/clovercon.c?diff2=0f4327db5c33&at=default

また、何らかの理由でi2cアドレスを変更できるよう、
もともとのcloverconのパラメータを流用して値を設定できるようにしてあります。
本当は別のパラメータを準備するべきなんでしょうが…

パラメータは以下のように設定します。

module_params=1,-1,2,-1,83,-1,84,-1,85,-1

(1,-1 ) :1st pad on i2c1 , with no GPIO 

(2,-1) : 2nd pad on i2c2 with no GPIO

It is my extention :

(84,-1) : 3rd pad on i2c2 (fixed) with no GPIO with I2C ID is 83 = 0x53
(85,-1) : 4th pad on i2c2 (fixed) with no GPIO with I2C ID is 84 = 0x54
(86,-1) : 4th pad on i2c2 (fixed) with no GPIO with I2C ID is 85 = 0x55

ソースコードを見るとわかりますが、最大8個のコントローラを認識できるようにしてあります。
しかし、同じi2cバス上でこのような頻度でコントローラに問い合わせをしたときに
何らかの弊害が起きる可能性があります。
但し、ボンバーマンを4pでプレイしている限り、普通に動いているように見えました。

 

上記のパラメータでドライバをロードすると、以下のように認識されます。

あ、言い忘れてましたが、この改造のためには上記で改造したcloverconをミニスーファミにインストールする必要があります。

 そのためにもまず、hakchi2のインストールは必須になります。
その中で、hakchi2に含まれるclovercon.hmodを入れ替えることになります。

 

f:id:honeylab:20171030225831p:plain

 

きちんと認識されたようです。

 

さて、コンバータのほうはArduinoを使います。
配線はこのようになります。

f:id:honeylab:20171031174745p:plain

Hyperkinのアダプタは、Select と 4 or 5 の配線がありません。

この辺の詳細な配線はそのうちきれいに作ったらまとめますが、
スケッチの肝としてはこの辺を参考にしています。

nuneno.cocolog-nifty.com

 

i2c応答部分はこの時のスケッチを流用しました。

honeylab.hatenablog.jp

f:id:honeylab:20171031090758j:plain f:id:honeylab:20171031091455j:plain

このように作ることで、複数のi2c機器のようにふるまうことができます。

 

さて、実際に使用するにあたって、トラブル特定のしやすいRetroArchを使用します。
hakchi2のモジュールとしてインストールします。
インストール方法はこちら

Releases · ClusterM/retroarch-clover · GitHub

 

インストール出来たら --retroarch オプションを付加し、マルチタップ対応のROMを転送します。

retroarchでゲームを起動出来たら、1pコンのSelect+StartでINPUTメニューを開き、バインドを設定します。

ここでの肝は、USER2のDeviceTypeをMultitapにすることです。
たぶんなんですが、この設定によりエミュレータ(およびソフト)のほうに
Multitapから信号を読むような切り替えがされるんだと思います。

f:id:honeylab:20171031091453j:plain

Input3以降、Controller3 以降を使ってボタンを設定していきます。 

f:id:honeylab:20171031091450j:plain

 

すると…

 

 

ボンバーマンが4人でプレイ可能になりました!!!

が、残念ながら4人も人が集められなかったので一人で動作確認です!寂しい!!

 

Hyperkin SNES TO SNES CLASSIC ADAPTER can't use SuperMultitap

Someone says Hyperkin Adapter will not recognize SuperMultitap 3rd connector.
So I bought and opened it.

f:id:honeylab:20171028125154j:plain

 

This picture is pcb and parts.

Look at connector pins in red circle.
f:id:honeylab:20171028125658j:plain

This two pins are used to communication to Multitap but not normal pad.
They has not connected to any pins.

There are enough pads for rewrite software!(RST,SCK,MISO,MOSI) and
ATMEGA8 is famous programable processor.


but, It is IMPOSSIBLE to use Multitap with this adapter only software hack.

But if you can connect them and software moddding will support Multitap (but I will not do.)