2011年11月27日日曜日

MD Sweet Rammy ver.0.03 高速版公開!

先日までスーファミで試したいことがあったけど、その後はやりたい事が無く(やる事はあるw)ボケ~っとしてました。

今週末はダラダラ終わるかぁ~、と思っていた時、Sweet Rammyの高速版が公開されました~\(^-^)/

avrrammy4

バージョンは0.03で、今回のバージョンではAVR(ATMEGA88)仕様ケーブル(以下高速ケーブル)限定になります。

これにより、v0.02+高速ケーブルでは使えません

v0.03+低速ケーブルも不可です。

【追記:20111205/22.00】

大事な事なので最初に追記しておきます。

低速(v0.02)ではターミナルの設定でフロー制御は「オフ」でしたが、v0.03では「ハードウェア」にしてください。

そうすると、ROMデータの読み込み、セーブデータの読み書きは問題なくできます。

少し前までオシレータが14MHzだと不安定・・・と書いてましたが、これは私の設定間違いでしたので訂正しますm(_ _)m

詳しくはv0.03アーカイブ内のReadme.txtを読んでね。

と、人に示す前に自分もちゃんと読みましょう・・・反省orz

セーブデータの読み書きだけであれば、今まで通りv0.02+低速ケーブルでもストレス無く使える(?)かと。

今後はもしかすると低速&高速コンパチになる可能性があります。

主な製作(回路)はSweet Rammyのページを参考にしてもらうとして・・・高速ケーブルでは2コン側D-SUB9pinコネクタの配線に9本全て使用するので、パチファミコントローラは流用できませんw

メガドラや3DO、ATARI仕様コントローラから取ると良いでしょう。

で、早々に作ってみました。

PICT6704

思ってたより場所使いましたね(^-^;

当初はブレッドボードを使う予定だったんだけど、ウチにあるのは小さいのしかなく、配置が困難だったので基板で作っちゃう事に(笑

まぁ、部品の在庫はあるので、上の基板で変更が困難な場合はまた作ればいいや、って事でw

今回はATMEGA88-20を使うので、最初にRammyAVRのプログラムを書き込む必要がある。

PICT6701

私はAVRが認識するかケーブル付ける前に確認して序に書き込んだのですが、当然ケーブル付いてても問題ないです。

上写真の書き込み機は電源供給タイプなのでISPコネクタに付けるだけ。

avrrammy1 avrrammy2

AVR Studio4で書き込む場合、Fuseの設定は16進数なので、左上のようにする。

問題なく無事書き込めた(^-^)

因みに、Sweet Rammyのページで紹介されてるChaNさんのAVRライター(or互換物)でやる場合は、

PICT6703

・・・こんな感じで・・・電源だけ別途供給してあるけど(笑

もちろん、ケーブルまで完成させておけばメガドライブの2コンから電源が取れるのでご安心をw

avrrammy0

ちゃんとCOMポートに繋がっていれば問題なく書き込めます。

注意する事は、この書き込みツールはXPなどで使う場合はGIVEIO.SYSが必要になります。

PICT6700neo1 neo3

高速ケーブルの製作ができたらいよいよ動作確認ですが、今回は久々にNEOのFlashカートリッジ出して使ってみましたw

・・・いや、別にどれでもいいんだけどね・・・

PICT6710

で、ジャンパは上の感じで、って、これは私の覚え書きw

とりあえず、使ったオシレータは11.0592MHzだから2箇所ともジャンパで、通信速度はそれぞれテストしてみた。

PICT6716 ←128KByteのブロックアウト

時間的に簡単にテストできるのでサイズは小さめなもので。

速度をアバウトに計った結果、

・低速ケーブル

4800bps---256KB--600sec(10min)
----予想---2048KB-4800sec(80min)
----予想---4096KB-9600sec(160min=2h40min)
・高速ケーブル
19200bps---256KB-97sec(1min37sec)
57600bps---256KB-87sec(1min27sec)
115200bps--256KB-87sec(1min27sec)

上のような結果に。

(サイズはHEXで、BINにするとサイズは半分になる)

【訂正】

上の結果で19200bpsの時間ですが、出来上がったデータが落ちてました(^-^;

オシレータを14MHzに変更したり、ロジックを変えても同じ現象でした。

PC本体や接続の環境に依存するのか、57600bps以降は速度変わってない感じですね。

PCマザボ直付けのCOMポートでもUSB-シリアルでも同じような結果だった。

速度的にはYoGirlさんのテスト結果とほぼ一致していることから、多分、製作はあっている・・・と思う(^-^;

低速と比べると格段に速度がアップしているのが一目瞭然です。

速度が速くなったのがわかったところで、次はデータ転送の信頼性をテストします。

いくら早くなってもデータ落ちしてたらダメですからねw

PICT6717

テストで使うゲームは勿論(?)コレ、SUPER STREET FIGHTER2 The New Challengers(相変わらず長w)です。

avrrammy3

これは前に全サイズを読み込めるマクロを作ってある(アップ済みなので必要な人は左のファイル置き場からどうぞ)ので、いざ!セットしてGo!

avrrammy6

上の画像はもう少しで全部読み込めるぞ~な瞬間(笑

マクロは問題なく動いててくれたようですw

avrrammy5

でもって出来上がったHEXデータをBINへ変換してハッシュを見てみると上の感じ。

サイズはHEXで10MByteありますが、読み込み時間にして1時間弱ぐらいでした。

・・・低速だったら今日は絶対にアップできてないね(笑

で、肝心のデータ転送の信頼性は・・・多分、大丈夫でしょう(ぇ?

SSF2NCはもともとがチェックサムあってないので、エミュで確認したところで合わないからわかんないのよね(^-^;

あ、もちろんエミュでの動作は問題ない。

一応、この他にもソニックとランドストーカーも同じオシレータ&速度で試しましたが、データは完全一致なので、おそらく現状の設定では問題ないかな。

今日はここまでだけど、次はオシレータを14.7456MHzに変えて試してみたりしますかね。

とりあえず、速度は6倍以上、データ落ちは無い、といったところで、とっても満足な結果でした(^-^)

YoGirlさん、とりあえずここまでの開発お疲れ様でしたm(_ _)m

【追記:20111128/21.15】

もう少し動作の詳細を試したので、ここに追記しておく。

test:Blockout
14-hc04-19200-bad
14-hc04-57600-ok
14-hc04-115200-ok
14-ac04-19200-bad
14-ac04-57600-ok
14-ac04-115200-ok
14-hc14-19200-bad
14-hc14-57600-ok
14-hc14-115200-ok

-

11-hc04-19200-bad
11-hc04-57600-ok
11-hc04-115200-ok
11-ac04-19200-bad
11-ac04-57600-ok
11-ac04-115200-ok

結果は上の通り、14.7456MHzでも問題ないみたい。

テストしたカセットはブロックアウトで、オシレータとロジック変更して各データの読み込み精度を見たところ、どうも19200bpsの時のみ確定でデータ落ちするようです。(←これはRammyのページにも書いてある、あくまでv0.03でね)

ヘッダ表示程度なら問題ないんですけどね。

ってことで、v0.03ではSW1をCENTER(オープン)かRIGHTで使えば問題は無いってことで。

序に、そういえば今まで書いてなかったけど、ケーブルの製作&通信設定がちゃんとできてるか簡易的に判断する方法を。

1.MDとPCにケーブルを接続

2.PCでターミナルを立ち上げる(設定もしておく)

3.MDでSweetRammyを起動

という順番でやると、

avrrammy7 ←正常ならOKと表示される

avrrammy8 ←失敗すると文字化けする

上のように表示される。

失敗した時は文字化けの他に、バグった文字列がスクロールしたり、プロンプトだけだったりします。

文字化けはターミナルの設定違ってもなるので、ケーブルの前に設定見直すのが先かな。

因みにMDを先に立ち上げてからターミナルを起動すると、正常ならプロンプトだけです。

これはVer.0.02でも共通なので、ケーブル作ったらまず確認を。

正常な場合でも何らかの原因でバッファにゴミが残ってた場合、OK表示の前に何か不確定文字が表示されたりすることがあります。

10 件のコメント:

YoGirl さんのコメント...

早速どうもです。
ちなみにオシレーターを14.7MHzに交換しても、メガドライブ側が11MHzの前提でウェイトを取ってる関係で、転送速度自体は今の所速くならないです。
将来のバージョンでオシレーターに合わせてウェイトを取る様にする予定です。

ぽんRev さんのコメント...

やっぱりオシレータだけでは変わりませんか(^-^;
現状は今の速度が最高って事ですね。

4800の画面スクロールを見慣れてたので高速画面見た時はおもわず、おぉ~!ってなっちゃいました(笑

とりあえず、設定を変えたりして遊んでみます(^-^)

ぽんRev さんのコメント...

そういえば高速でセーブの読み書き試してなかったのでやってみたところ、SRAM&FRAMの書き込みが終了できないようです(^-^;
EEPROMは問題なく読み書きできました。
0.02の時と同じっぽい症状かなぁ?
11MHzでも14MHzでも、速度変えても同じでした。
数バイト指定して書き込みはOKなんですけどね。

YoGirl さんのコメント...

おや。 SRAMカートリッジでコラムス全部書き込み出来て、起動も出来たから完璧だと思っていたのだけど、そんなオチがあったのですね・・・。って、昨日調べようとしたけど、調べる前に寝てしまいました。

そして動作確認の為に4800bpsケーブルとAVRケーブルをちょくちょく交換するのが面倒だと言う事に気付いたので、ウチもブレッドーボードから基板実装に変えて見ようと思ってます。

YoGirl さんのコメント...

どうも自分の環境だと、普通にSRAM書き込みが完了してしまいますね。
多分可能性としてはPCが送信したデータを取りこぼしていて、メガドライブ側は永久に「データ受信待機中」かな。
もしそうなら、取りこぼしが数バイト程度なら、適当にゼロを何個か送信してみると、急に書き込みカウントが始まるハズ。

ぽんRev さんのコメント...

ふぅ・・ちょっと風邪気味で寝込んでましたw

YoGirlさんの推測通り、どうもデータを取りこぼしてるみたいですね・・・数Byteじゃなくて3KByteほど(汗
で、今何気に19200bpsに落として試したところ、11MHz、14MHzでもAC04、HC04でも正常に書き込めてしまったり(^-^;
57600bps - ReadOK - WriteBAD
19200bps - ReadBAD - WriteOK
な結果に。
19200でのWriteは32Kを10回連続で試したけど問題なく安定してますね。

う~む・・・製作が可笑しい可能性もありえるので見直してみて、MD1でも試してみます。

ぽんRev さんのコメント...

ってことで、早々見直しをしてみたんですが、トレース+テスターでのチェックOK、MD1でも同じ症状確認しました。
で、考える事数分、ターミナルのフロー制御をハードウェアにしたら57600bpsと115200bpsで問題なく読み書きできました(笑
(19200bpsでは相変わらず読み込みだけがデータ落ちするけど)
序にマスターオブモンスターズのROMデータを14MHzの115200bpsで読んでみたけどコッチもOKでした。
低速ではフローOFFだったけど、高速では入れといたほうがいいのかな?

とりあえずセーブデータの読み書きが問題ないことが確認できたので一安心です(^-^)
けど、もう少しいろいろテストしてみて安定するか確認してみますね。

ぽんRev さんのコメント...

今日はフロー制御をハードウェア(実際にはOSだそうで)でず~っとやってたけど、読み書き共に安定していて何の問題も無かったり。
結果としては良いのだけど、原因が分からない(^-^;
ネットでフロー制御検索すると、高速通信ではPCの環境にも依存するようなので、PC変えるとオフでも大丈夫なのかなぁ。
明日(もう今日か)VAIOのVistaでも試してみよう。

YoGirl さんのコメント...

あ。重要な割りにReadMe.txtにしか書いてなかったけど、フロー制御を使わないと基本的に動かないです。
そんでもってフロー制御にバグがあって、19.2kbpsみたいな低速状態だとほぼ確実にデータ落ちしてしまいます。
Version 0.04は多分そのバグ対処がメインになりそうです。

ぽんRev さんのコメント...

あぁぁ~~!・・・ホントだ、readmeにちゃんと書いてある(滝汗
基本Rammyのページしか見ないので全く気が付きませんでした(ぉぃ!
偶然にも設定合わせて問題無くなってたわけですね。
今VAIOでやっても同じ結果で考えてたんですが、おかげさまで謎が解けました(^-^;

この事はこの記事の先頭に追記しておきますかね。