slotware のすべての投稿

Visual Studio 2005の「最近使ったプロジェクト」一覧から不要な項目を削除するツールを公開しました。


 ご存じの通り、Visual Studio 2005のスタートページには「最近使ったプロジェクト」という一覧が表示されていまして、読んで字の如く最近使ったプロジェクトを素早く開くことが出来るのですが、時としてもう使わないような古いプロジェクトや既にディスクから消えてしまったり別の場所に移動してしまったプロジェクトなども延々と居座り続けて不愉快極まりない事があります。

 存在しないプロジェクトに関しては、一覧からそのプロジェクトをクリックすることにより削除しても良いかどうかの確認が表示され、消すことができるのですが、これが大量にあると実に面倒くさい。

 わたしもこの問題に常日頃悩まされ続けていまして、そういう不便を一発で解消するツールは無いものかと探していたのですが、無かったので作っちゃいました。

 さらに、海外でも同様の問題にアタマを抱えている人がたくさんいることを知りましたので、同時に英語版ページもこしらえました。

VS2005 MRU Cleaner

VS2005 MRU Cleaner (English Page)

というか・・・・このエントリを書いてて気づきました。
「無かったので作っちゃいました。」なんて書きましたが、既にもっと出来の良い物を作って公開していらっしゃる方を発見!

あーあ。
車輪の再発明しちゃった・・・。

ネオジオのスプライトデータを覗いたり編集したりするツールを開発中


お久しぶりです。

ここ数日はプログラミングに勤しんでおりました。
といっても、パチスロのシミュレーションツールではなく、別なツールです。

その名も

「ネオジオのスプライトデータを覗いたり編集したりするツール」(仮名)

NeoSpriteDecoder.png

最近は”NeoDev”というツールキットがあるようで、(https://arcadedev.emuvibes.com/参照)、C言語を使ってネオジオのソフトを自作できるらしいのです。これには私もものすごく興味があるのですが、残念ながらグラフィックツールやサウンドツールが無い。コンバーターの類は発見できたのですが、直接編集できるツールがまだ無いっぽいのです。

そこで、自作することを決意しました。

ネオジオのROMカセットには、用途別にP-ROM、C-ROM、V-ROM、S-ROM、M-ROMが搭載されています。このうちP-ROMには68000CPUで実行されるゲームのプログラム、C-ROMにはゲームで利用されるスプライトデータが格納されています。

このツールはC-ROMに格納されているスプライトデータをのぞき見ることができます。
編集機能はまだ搭載していませんが、データの仕様はわかったのでいずれは編集機能もつけたいところであります。

しかしながら、スプライトデータの解析に丸一日かかってしまいました。
というのも、そのへんに転がっている資料を探せば見つかるだろう、と甘く見ていたのですが、どこにもC-ROMに関する資料がない! 
しょうがなく、わかっている情報から手探りで解析することに……。

ネオジオのスプライトは、スプライト一つにつき16色が使えますので、4BPPであります。つまり、1バイトに2ピクセル分の情報が格納されていることになります。
そして、ネオジオのスプライトひとつの基本サイズは16×16ピクセル。
すなわち、スプライト一つにつき128バイト、ということになります。

チャン・コーハンやアースクェイクのような巨大なキャラクターも、複数のスプライトを組み合わせて表現されています。それどころか、ゲームの背景画もスプライトです。

つまり、ゲーム中は大量のスプライトが画面で動き回っていることになります。
それでも、たくさんのスプライトを管理するとなるとプログラムが複雑になったり、処理落ちが発生するかもしれません。

しかしながらここがネオジオのすごいところで、ネオジオのVDPには「複数のスプライトを合体させてあたかも一つの巨大なスプライトとして扱う」機能が付いています。このおかげで格闘ゲームなどの開発がやりやすかったのでしょう。

さて、話をスプライトデータにもどしましょう。スプライトは4bppで表現されていることから、データはMSXのSCREEN 5みたいな形式で格納されているのだろう、と読んでいたのですが、甘かった。 

解析してみてわかったのですが、ネオジオのスプライトはものすごくひねくれた形式で格納されています。4bppなのは間違いないのですが、本当にヒネクレてます。MSXのSCREEN 5、というよりは、SCREEN 2が4層重なったような形式になっています。

そして、基本的に一つのスプライトは二つのROMにまたがって格納されています。

なぜこんな仕様なのかはわかりませんが、おそらく当時のVDPで巨大なスプライトを大量に動かすにはメモリインターリーブのようなことをせざるを得なかったのでは? と予想しています。

この辺で得たノウハウは、後々資料として公開しようかと。

それで、この数日間でとりあえずなんとか中身を覗くところまでできました。
しかもC#で書いたのにもかかわらずとても軽快に動作します。

あとはやっぱり編集機能を付けたいですね。

しっかし・・・プログラミングはそれほどではなかったけれども、解析はものすごく疲れた(汗

C#からWebBrowserコントロールを使ってみる


さて今日はプログラミングな話です。C#でIEコントロールをいじくってみます。

詳細はまだ明かせないのですが、現在C#で簡単なチャットプログラムを作成しておりまして、会話のログ表示部分にIEコンポーネント(WebBrowserコントロール)を使ってみようということにしました。私の確認する限りでは米国版のYahooメッセンジャーもこの方式が使われていて、会話ログの中にYouTubeの動画を埋め込むことができたりと、かなり強力です。

そこで今日はチャットプログラムでIEコンポーネントを効率よく使う方法についていろいろと自習をしていました。

続きを読む C#からWebBrowserコントロールを使ってみる

ビデオカードのコンデンサを交換


前回のエントリで、壊れた2枚のビデオカードのうち部屋に眠っていた1枚のビデオカードのコンデンサを暫定的にオーディオ製品用の電解コンデンサに交換する記事を書きましたが、同時に「この手の回路には低ESR品を使う事が鉄則」とも書きました。

そこで、改めて三栄電波から超低ESRコンデンサと個体電解コンデンサを注文し、ビデオカードの本番修理に臨みました。

注文したコンデンサ。左側のは固体電解コンデンサ。低いESRと高い信頼性が特徴。そして「固体」の字通り、電解質に液体を用いていないのが特徴。右側のはコンピュータ用超低ESR電解コンデンサ。主にデジタル回路の電源の平滑とノイズ除去に用いる。
左側の固体電解コンデンサは、もう一枚のビデオカードの修理に用いる予定だったが、リード線の太さが太すぎて基板に入らないというアクシデントが発生したため、修理をあきらめた(汗) これ高かったんだぞ(汗)
capacitors.jpg

それで、もう一枚の方のビデオカードですが、こちらは無事本修理が終わりました。
videcard_fixed.jpg

さて、本修理を終えた感想ですが、元々故障したビデオカードが直って良かったのは勿論ですが、安物ビデオカードに見られる微妙なノイズがまるっきり減りました。そして、文字や画像がクッキリしました。

sharp.jpg

こうも効果がはっきりと見てとれると、部屋中の家電のコンデンサを片っ端から高級なものに交換したい衝動にかられます。
私が思うに、電解コンデンサは有寿命であると同時にその品質が製品全体のクオリティを左右する点において、自動車のエンジンオイルとよく似ていると思います。

 ちなみに当サイトでは、コンデンサが破裂して動かなくなってしまったビデオカードやマザーボードのコンデンサを高品質な日本製品に取り替えるサービスを行っております。
費用は部品代+手数料2000円+送料のみです。 部品代は大量のコンデンサを使用してる製品でないかぎり500~1500円の範囲内に収まるはずです。

 興味のある方は、マザーボード、ビデオカードの電解コンデンサの交換サービスのページをご覧ください。

今度はビデオカードのコンデンサが死亡


今回のエントリは、「Tube MPのコンデンサがとうとう寿命を迎えたらしい。」に引き続き、またまたコンデンサ絡みの話題です。

事の発端

昨夜のことになるのですが、いつものように寝転がりながらWikipediaをダラダラと読みつつ、いつ披露するかもわからない雑学を蓄えてた時の事です。画面突然が真っ暗になったかと思うとしばらくしてから復活するという現象が繰り返し発生しました。イメージ的にはビデオカードが勝手に再起動を繰り返す感じでした。しばらくすると、今度はマウスカーソルを動かすたびに非常にサイケデリックな画面が表示されるようになり、最終的に画面が写らなくなりました。

私は思いました。「またコンデンサか……」と。
そうです。コンデンサが死亡したときの典型的な症状の一つです。

そこでコンピュータの電源を落としビデオカードを取り外してみたところ……

DSCF3044.jpg

6個あるうち、5個のコンデンサが見事に吹いてます(汗)
防爆弁を突き破って茶色い毛のようなものがモジャモジャと……
電子回路において、「ひでぶ!」とか「あべし!」という言葉がまさに似合う光景。

いつこうなったかはわかりませんが、それでもこの状態で今まで普通に動いていたのだから恐ろしい。(画面にゆらゆら揺れるようなノイズが走るなどの兆候はあったのですが)

できるだけ早い復旧を望んだ

さらに、このコンピュータは私の開発環境一式がインストールされている開発用マシンでもあり、当然Jugglampその他の開発にも使われているマシンであり、slotwareをホスティングしているサーバーでもあります。つまり、サーバーとして働いてもらっている以上、よほどのことが無い限り電源を落とすわけにはいかないのです。

しかしながら、コンデンサの破損を確認したのが午後10時、PCパーツショップは当然閉店ですから、新しいビデオカードを買いに走るということはできません。交換用のコンデンサを注文したとしても届くのは2,3日後。とはいえ、サーバーマシンですからできるだけ早く復旧させたいところ。

とりあえず、部屋にある物はなんでも使ってみる

と、その時です。以前にもコンデンサが膨らんで壊れたビデオカードがあって、それがまだ部屋のどこかに保管されていることを思い出しました。たしかそのビデオカードの壊れたコンデンサは2個。なんとかなりそうだ・・・と考えていたところ、「TUBE-MPから取り外した3個のコンデンサのうち、頭が膨らんでいない2個をとりあえず使ってみる作戦」に出ることを決行。

近くにチョークコイルやレギュレータがあるので電源平滑用のコンデンサと見て間違いないはず。つまりある程度容量が大きければなんとか動くだろう、と仮定し取り付けてみた。

実際の修理

まずは古いビデオカードから膨らんだ2個のコンデンサを取り外し、TUBE MPから取り外したコンデンサのうち一つを付けてみた。一番大きいのが無理矢理取り付けたブツ。

DSCF3055.jpg

一個目のコンデンサが大きすぎるため、この時点で基板に2個目のコンデンサを取り付けるスペースが無くなったため、2個目は裏に無理矢理付けた(汗) 多層基板だからできた裏技。

DSCF3057.jpg

で、最終的に上記の方法で無理矢理修理したビデオカードをコンピュータに取り付けてみたところ。

DSCF3048.jpg

もしこれがうまく行けば、電源を入れれば画面が正常に表示されるはず。
そうなることを願いながら、電源を入れてみると……
写りました!
そして、以前から気になっていたユラユラと揺れるようなノイズもまったく無く、至って順調に動いています。(何よりいまこの記事を書けているのがその証拠です)
注意すべき点は……
しかし、注意すべき点があります。
まず、この対処は一時凌ぎに過ぎないということです。なぜかと申しますと、ビデオカードやCPUの電源周りに使われるコンデンサは低ESR品を使う事が鉄則であり、さもなくば最悪の場合、許容リップル電流をオーバーした場合に、再び破裂する可能性もなきにしもあらず、なわけです。
オーディオ機器から取り外したコンデンサがかろうじて使えているとはいえ、実際には想定外の負荷がかかっているかもしれません。
とりあえず画面が安定して表示されるようになったことは大きな前進ですので、近日中に再び三栄電波にて低ESR品のコンデンサを注文し、新旧両方のビデオカードを修理する予定です。
私はMOTTAINAI精神を大切にしています。

近代の日本人に失われつつあるMOTTAINAI精神。
壊れたら新しい物に買い換える。それが現代の主流になってしまいましたが、壊れた物を修理し、それが再び動き出したときの感動はすばらしいものです。
私はこの精神を今後も大切にしていこうと思います。

TUBE MPの修理は無事完了しました。


Tube MPのコンデンサがとうとう寿命を迎えたらしい。のエントリでお伝えしたとおり、電解コンデンサが真空管の発熱によって死亡してしまったTUBE MPですが、本日注文したコンデンサが届きましたので、早速交換を実施しました。

届いたコンデンサ。送料込みでたったの590円。決して高級品ではないが日本製なので信頼性は高いはず。
DSCF2980.jpg

早速TUBE MPの基板から古いコンデンサを取り外す。どうやらスルーホール基板のようである。
DSCF2981.jpg

新しいコンデンサを半田付けしたところ。古いコンデンサと同規格品ではあるが、若干サイズが大きい・・・
DSCF2999.jpg

TUBE MPに入っている真空管。これが熱に弱いコンデンサのすぐ隣にあるのである(汗)
DSCF3004.jpg

修理が完了し、再び命を吹き返したTUBE MP。驚いたことに、交換したコンデンサは決して高級品ではないにもかかわらず、ノイズがさらに低減していた!
なによりも、たった590円の出費で以前よりもボーカルが明瞭に録音されるようになったのがうれしい。
DSCF3009.jpg

となると、今度は真空管をより高級な物へと交換したい欲が出てきてしまった・・・

2009年11月16日追記:

コンデンサ交換前と交換後の音質比較記事を書きました。
→TUBE MPの音質はコンデンサの交換を行ったことでどう変化したか

Tube MPのコンデンサがとうとう寿命を迎えたらしい。


今日は久々にボーカル録音を行おうと思い、マイクからDigital Performerに信号を送ろうとしたその時だった。

マイクに向かって歌った信号はDigital Performerに記録されたものの、再生してみると聴くに堪えない雑音が混入しており、波形を確認すると通常の音声信号ではまずあり得ない信号が記録されていた。

これがその時の波形である。
信号のプラス側(上側)には信号が行っているものの、マイナス側にはほとんど行っておらず、さらに鋭い立ち上がりを見せたかと思うと急激に減衰する、ということを繰り返している。これは通常人間の声をマイクで録音した場合には起こりえない。

signal_bad.png

ちなみに、正しい人間の声の信号は次の図のようになる。

signal_good.png

そこで、一番疑わしいTube MP(真空管マイクプリアンプ)の分解を決行してみたところ、案の定電解コンデンサが死亡していた。

tubemp_capacitors.jpg

画像を見て頂くとわかるとおり、一番左のコンデンサの頭頂部が膨らんでおり、さらにその周辺のコンデンサには吹き出した電解液と見られる茶色い液体が付着している。

さらに、Tube MPは両手に収まるほどのサイズのケースに真空管とこれらの電子回路が収められており、実際にこれらのコンデンサの上部のスペースには実際には真空管が収まるのだ。そして真空管は内部のフィラメントに通電し電極を加熱することによって初めて真空管として働く。すなわち真空管は使用に際して高熱を発することを避けられない宿命にある部品なのである。そんなものが熱に弱いコンデンサのすぐ側に配置されているのだから、コンデンサが死んでしまってもおかしくはない。

Tube MPは決して高い製品ではなく、今なら新品で一万円もせずに買えるのだが、そんなことをしては、少年時代の愛読雑誌が「子供の科学」と「ラジオの製作」であった元ラジオ少年としてのプライドが許さない(笑)

そこで早速コンデンサを注文した。

注文したのは三栄電波というサイト。ここで2200μF/16Vの電解コンデンサ2本と、1000μF/35Vの電解コンデンサ1本を注文した。

かかった経費は送料込みでたったの590円。これで直ればしめた物である。

ちなみに、電解コンデンサはピンからキリまであり、高い物ほど特性に優れ、また高熱にも耐えることができる。通常これらの高いコンデンサは高級オーディオなどに使用されており、オーディオマニアによると、使用されているコンデンサの違いも音質の善し悪しを決める要因になり得るのだという。

さらに私がどこかの雑誌で読んだ話では、スーパーファミコンの映像出力回路のコンデンサを高級な物と交換し、画質の改善に成功したゲームマニアも居るらしいのでたかが電解コンデンサといって侮ることはできない。

TUBE MPの名誉の為に言っておくと、TUBE MPは初期状態ではノイズが多い製品ではあるが、真空管を交換することによりまるで別の製品になったかのように音質が改善される。さらに「マイクプリアンプ」と称しているが実際にはエレキギターやエレキベースなどにも接続することができ、真空管独自の特性で、音が「ボワッ!」と図太くなるのである。

最後に、手前味噌で申し訳ないのだが、北斗の拳のバトルボーナスのBGMを弾いてみたMP3でも録音時にギターとベースにTUBE MPを通してあるので、興味のある方は是非聴いて頂ければ光栄である。

Visual Studio 2005で作成したはずのユーザーコントロールがツールボックスから消失した際の対処法


Visual Studio 2005で、ユーザーコントロールを作成しビルドするとツールボックス内に自動的に追加されますが、何かの拍子にツールボックスから消えてしまうことがあります。
私も開発中に何度か経験して非常に困りましたのでメモ的に書き残しておきます。

  1. ソリューションエクスプローラから消えてしまったユーザーコントロールを含むプロジェクトを一度削除します。
  2. 再びソリューションエクスプローラから該当プロジェクトを追加します。(この時点でツールボックスにユーザーコントロールが復活するはずです)
  3. ソリューションからプロジェクトを削除すると、他のプロジェクトの参照設定から削除したプロジェクトが自動的に外されるので、それらを手動で設定しなおします。(プロジェクトが多数あるとこれがめんどくさい)