ワンダーウィッチ作業室


 ワンダーウィッチは、バンダイの携帯用ゲーム機「ワンダースワン」上で走るプログラムを作成するための開発キットです。
 このページはワンダーウィッチ関係のアレコレを載せていきたいと思います。
■ ワンダーウィッチ専用掲示板 ■
■ 掲示板 ■

秋月のRS232Cラインモニタキットを
ワンダースワンに接続
PS/2キーボードをワンダースワンに接続NEW

■ 拡張ストレージ実験 ■
  

 秋葉原の普段は行かないパーツ屋を覗いてみたら、スマートメディア用のコネクタが売られていました。スマートメディアは3.3Vで動作するので、AVR経由でワンダースワンと接続というお得意の手段で読み書きが可能ではないか?と思い、パーツを購入して実験することにしました。
 うまい具合にSSFDCフォーラムからスマートメディアインタフェースの資料が公開されているので、このへんを参考にしながらやってみるつもりです。


■ 小型キー入力デバイス計画 ■
 

 PS/2キーボード接続計画に続く、ワンダースワン用入力デバイス計画の第二弾としてこんなものを作ってみました。
 小型のタクトスイッチ16個と、AVRワンチップマイコン、それとスワン用対戦ケーブルを解体して取り出したコネクタを組み合わせたものです。タクトスイッチを右手で、スワンの8個のキーを左手で操作することで、簡単な文章なら打ち込めるという奴を考えています。

12/1追加


基板の表と裏

 AVRワンチップマイコン側のプログラムは完成しました。今回はスワンから電源を取るという設計で、うまく動作するか不安だったのですが、ちゃんと動いてくれたので一安心。
 でも最初AVRが電源電圧によって動作周波数が変化するという事に気付かず、1MHz動作のつもりでプログラムを組んでいたら、実際は500kHzでしか動かないという衝撃の事実が(笑)。
 プログラム修正で動くようになりましたが、スワン側の電圧が変動した時に問題が出そうな気がするので、最終的にはやはり外部クロックで動作させるつもりです。

 AVR側のプログラムは単純で、キーが押されるまでひたすらスキャンを繰り返し、押されたらそのコードをスワン側へシリアル送信するというだけです。キーが押されると以下のコードを返します。
 

 
0xB0
 
0xB1 0xB2 0xB3
 
0xB4
 
0xB5 0xB7 0xB7
 
0xB8
 
0xB9 0xBA 0xBB
 
0xBC
 
0xBD 0xBE 0xBF

 このままでは単なるテンキーにしかならないので、↓のような配列として使用する事を考えています。
 

 
U
 
I A 拡張1
 
E
 
KGC SZF TDJ
 
O
 
NLQ HBP MUV
 
拡張2
 
YX R W

 キー配列はまだ試案の段階で、これから変化する可能性大です。

12/7追加
 秋月に行ってみたらコンデンサ内蔵タイプのセラロックは4MHz以上しか無かったため、なるべく回路は手抜きしたいので4MHz動作にしてしまいました(笑)。
 消費電力がちょっと気になりますが、必要な時だけスワンに挿して使うという使い方ならたぶん大丈夫でしょう(根拠はないですが)。
 動作クロックが上がったついでに、ジャンパを一個付けてシリアル通信のボーレートを9600/38400bpsに切り替えできるようにしてみました。将来的に他のキー入力デバイス、たとえばPalm用キーボードなんかと併用する時に、ボーレート切り替えができるほうがたぶん便利でしょう。
 キー入力デバイスのハードウェア側はこれでほぼ完成として、あとはスワン側のプログラムに取りかかる予定です。


■ 汎用拡張ボード計画 ■
 小型キー入力デバイスの基板を作ってる最中に「この回路はワンダースワン用の汎用拡張ボードとして使用できるのでは?」というアイデアが浮かびました。
 スワンコネクタを直付けした小型基板に、ワンチップマイコンを乗せてシリアル通信させることで、仮想的なスワンのI/Oポートとして使えないか?というのが基本的な構想です。機能的には↓のようなものを考えています。
・秋月のCタイプ基板サイズ(72x51mm)
・基板にスワンコネクタ直付け
・AVRワンチップマイコン(AT90S1200/AT90S2313)搭載
・スワンからの電力供給と外部電力供給の切り替えが可能
・スワンからのコマンド発行でAVRのI/Oポートを制御できる
 という感じ。
 最後のコマンド発行というのは、AVRワンチップマイコンのプログラムを組まなくても、スワンからシリアル経由でコマンドを発行することで、I/Oポートを制御できるという意味です。
 実現すれば恐らくこんな感じ↓の基板になると思います。

 ピンヘッダ部分にはAVRの全I/Oポートと、Vcc、GND、それにスワンのPWM出力が出るようになっています。
 空きエリア部分に適当なデバイスを載せれば、ゼロから作るよりは遙かに少ない手間でワンダースワンに外部機器を接続することができるわけです。

 もっともこれを自作するのではあまり意味が無く、基板がパターン化されて全てのパーツが揃ったキットか、あるいは完成品でないとお手軽に拡張というわけにはいきません。スワンコネクタをパーツだけで入手するのが不可能という現状もあるので、ここから先をどうするかは全く未定です。
 近い内に試作基板は作ってみようと思っています。

12/15追加

 こんなものを作ってみましたが。とりあえずやってみただけなので実際に基板を作るところまで行くかどうかは不明。
 プリント基板作製は未経験なので、もう少し経験値を上げてからでないと無謀な気が(笑)。


■ ライフゲーム ■
 なにはともあれ作ってみないと始まらない。ということでワンダーウィッチの記念すべき一発目として「コンウェイのライフゲーム」を作ってみました。
 説明しなくても誰でも知っていると思ったら、結構知らない人がいてびっくり。何それ?という人はインターネットの検索エンジンで調べてみましょう。
 英語のページですが、↓のページにライフゲームの面白いパターンが紹介されています。Javaアプレットで実行もできるので、ぜひ見てみて下さい。
http://www.math.com/students/wonders/life/life.html
実行ファイルのダウンロード
ソースファイルのダウンロード
 実行するとランダムにセルを配置して、あとは自動的にセルの生成と死滅を計算し続けます。何かキーを押すと実行を終了します(長めに押して下さい)。
 画面周りの構造がまだ把握し切れていないので、かなりダメダメなプログラムですが大目にみてやって下さい。ご意見ご希望ご感想などありましたら、掲示板のほうへどうぞ。
8/17追加
 画面の初期化が足りなかったらしく、電源投入直後に走らせると何も画面に出ないという情けないバグがあったので修正しました。これで大丈夫...かなぁ(弱気)。
8/25追加
 ささおさんのJunk Boxで公開されたシリアルマウスドライバを使わせていただき、マウス対応バージョンに作り直しました。↓のシリアルマウスエミュレータでも動作します。
 セル配置画面ではカーソルキーまたはマウスでポインタを動かし、Aボタン(左マウスボタン)でセルを置き、Bボタン(右マウスボタン)でセルを消します。STARTキーまたは画面の左上隅クリックでセル配置画面を抜け、ライフ画面に移ります。
 ライフ画面でSTARTキーを押すとシェルに戻ります。
 STARTキー以外のキーを押すか、または左右いずれかのマウスボタンをクリックすると、セル配置画面へ移ります。


■ シリアルマウスエミュレータ ■
 ワンダーウィッチにシリアルマウスを接続する実験は既に成功されている方がいらっしゃいますが、そのためにはPICを使用したボーレイト変換回路を自作する必要があります。回路自体は簡単だし、PICに書き込むのも秋月のキットを買ってくればそれほど難しくないのですが、そうは言ってもハードの経験が無い人には敷居が高いと思います。
 そこでマウスを使用したプログラムの開発用に、シリアルマウスのエミュレータというのを作成してみました。PCのマウス入力をワンダースワンのボーレートに合わせてシリアルポートに出力するというプログラムで、思いついてから完成まで1時間という超手抜きプログラムですが、とりあえずココのテストプログラムは動作しました。
 Win98SEとWin98でしか動作確認は行っておりません。不具合がありましたらご連絡下さい。
実行ファイルのダウンロード
8/21追加
 マウスの移動範囲を制限すると使いにくい気がしたので、ウィンドウ範囲を超えると反対側へマウスポインタがワープするように修正してみました。
8/25追加
 ワンダーウィッチ初のマウス専用ゲームをkakiさんが作成されました。午後の魔女で公開されています。


■ 56桁表示実験 ■
 フォントを横1/2に圧縮して表示桁数を増やすという実験をやってみました。ワンダーウィッチは8x8ドットで漢字も表示するという職人芸なフォントを使用しているので、そのまま横圧縮すると潰れて読めなくなるのが目に見えています。
 フォントを4x8ドットに圧縮する代わりに、階調表示を付け加えてなんとか読める状態にならないか?という目的でプログラムを組んでみた結果が↓です。

 半角フォントならコントラストを調整すればかろうじて読めますが、やはり漢字は無理ですね。ひらがなとカタカナは結構行けそうな気がします。
 いらないと思うけど↑と同じ画面を表示するだけのテストプログラムを載せておきます。

実行ファイルのダウンロード



mailto:[tokoya][at][mars.dti.ne.jp]