honeylab's blog

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

SuperMultitap Convet to SNESC adapter development progress (1)

I got SUPER MULTITAP 2!

 

f:id:honeylab:20171027231257p:plain

inside.

f:id:honeylab:20171027231242p:plain

analyze protocol .. but I have not arrived protocol perfectry.
Does anyone have protocol detail for SUPER MULTITAP and SNES communication?

 

Driver progress.

I have patched to clovercon.c and handle i2c device address 0x53-0x58.
(original SNES(wii) gamepad uses address 0x52)

I will make SuperMultitap/Wii i2c converter.
It will make able to using 3 more gamepad on SNESC

スーファミミニの3本目のコントローラを刺す場所 / 3rd controller connector on SNESC / NESC

ここです(どやぁ

 

f:id:honeylab:20171026001827j:plain

 

R16のi2c0がHDMIのi2c通信用に出てるので
そこを分岐してやります。

 

f:id:honeylab:20171026001935p:plain

 

ちゃんとコントローラのプロトコル出てますね

f:id:honeylab:20171026001441p:plain

 

f:id:honeylab:20171026001734j:plain

Wii controller compatible arduino test board.


とりあえずArduinoで作った互換コントローラもどきはLinuxから認識することは確認しましたが、
エミュレータからちゃんと見えるかどうか、とかは全然確認してません。

定期的にHDMI用の通信が割り込むのでそこで通信が落ちたりしないといいのですが…

その辺も確認してないです。

 

バイスとして挙がってます。

 f:id:honeylab:20171026001205p:plain

 

あと、この状態では特にclovercon.cにはパッチ当ててません。
(VERBOSITY レベルを上げてるけど)

modprobeで渡すパラメータの引数解析でi2cの番号を指定されてるので、
hakchi2のhmodで渡すスクリプトをちょっと変えてます。

f:id:honeylab:20171026002255p:plain

これだけで、3番目のコントローラをi2c0に探しに行ってくれます。

 

まだ少し不安定なので、コネクタ化してから再度調査しますかね。

 

スーパーファミコンミニにソフト追加

できましたっと。

 

youtu.be

 

で、今回は既存の(アップデート中の)外国産ツール

github.com

を使ってるので、技術的な労力にはほぼゼロです…
とりあえず一番好きなゲームも入ったのでデバッグ要員としてもあんまり役に立たないしね…

で、上のソフト、今配布されてるバイナリはスーファミミニには対応しておらず、
最新版のツリーからコンパイルしても結構動作が不安定なので、
何かあった時にUARTで何かできるレベルの人以外はぶっちゃけ触らないほうがいいです。

rc4が出てるので少しは安定してきてるんじゃないでしょうか(試してない

日本から人柱が対応しないとスーファミミニ(JP)の対応が遅れるので
勇気のある人はやってみるといいんじゃないでしょうか。
うちのは嫁がマリオRPGを快調に進めているのでうっかり文鎮化すると家庭内問題が発生しますので…(もう一個買えばいいんだけど…)

 

SNESC / NESC u-boot script.fex (hardware setting script) difference

There are hardware setting script NESC and SNESC

https://bitbucket.org/snippets/bakueikozo/jMAKen#file-NESC_script.fex

https://bitbucket.org/snippets/bakueikozo/jMAKen#file-SNESC_script.fex

 

They are nealy equal but some parameter changed.

 

f:id:honeylab:20171003144925p:plain

DRAM Parameters

 

 

f:id:honeylab:20171003145021p:plain

Display parameters

 

f:id:honeylab:20171003145047p:plain

USB Controller (usbc1) has Enabled 

 

I don't know what caused by them now.

SNES OSS code opened!

www.nintendo.co.jp

 

I compare u-boot code with NES u-boot,
some file are differenced but they are fix to compile error for new compiler.

but only 1 file has clearly changed.

 

f:id:honeylab:20171003124101p:plain

 

f:id:honeylab:20171003124207p:plain

 

This is axp power IC setting.

BOOT_POWER22_DCDC_FREQSET value is below.

 

f:id:honeylab:20171003125004p:plain

default value is 0x08 ,but clear lower 4bit and set to 0x00
I don't know why change setting now.

 

BOOT_POWER22_DCDC_MODESET value is below.

f:id:honeylab:20171003124723p:plain

default value is 0x80 and change to 0x86.
It means DCDC1,DCDC2,DCDC3 to fixed PWM mode.

I don't know why setting just now.

 

ファミコンミニ/スーファミミニにマルチタップを繋げることはできませんか?

っていう質問がわりと頻繁に出てるのでちょっと考えてみる。

 

もともと、このシリーズのコントローラはWiiコントローラ互換(アドレス固定のi2c)スレーブデバイスとして作られているので、
コントローラを増やそうとすると、別々のi2cバスが必要になる。
ファミコンミニは、そのために2系統のi2cバスを準備している。

もしそれ以上増やそうとすると、コントローラのi2cアドレスを変更するか、
CPU側のi2cバスを増やすしかない。
で、ファミコンミニのほうはすでにCPUから出ているすべてのi2cを使い切っているので、
コントローラのアドレスを変更するしかない。
とはいえ、コントローラのアドレスは専用マイコンが使われているため変更できない。
なので、i2cのプロトコル内でアドレスを変更してやればいい。

 

但し、デフォルトのコントローラドライバは、各i2c上の0x51のみを探してコントローラデバイスを生成するようになっているので、
これを改造して新しいドライバを入れてやる必要がある。

これを図にすると以下のようになる。

 

 

で、ほんとに何人がマルチタップを使いたいんですのん?

f:id:honeylab:20171002164010j:plain