ページ

2010年6月24日木曜日

[CRT] Re:一歩ずつ (CRT エミュレーション)

前の記事に続いて、Jitta さんの 「一歩ずつ」 の出題 7 の CRT のにじみについて。
(またまた回答とかじゃありません)
そういや、以前に見かけたなぁ、と思って検索してみた。

A Television Simulator
Atari 2600 VCS エミュレーターの話なんですが、CRT エミュレーションをするにはどういったことをすればいいかといったことが書かれているようです。
すごくいい加減な訳ですが、どうやら

  • Texture … 格子を抜けてきた電子ビームによって蛍光物質が光ってるとかそういった構造上の理由から CRT はドットとドットの間にわずかに隙間がある。
  • Afterimage … 蛍光物質がわずかな間焼きつくのと、LCD に比べると人の網膜に残像が残りやすい。結果、画像が動いたり変化したりしたあとすぐに消えずに残存したりする。
  • Color Bleed … LCD のように輪郭がくっきりせず CRT では周囲ににじみ出すし、色が混じりあったりする。
  • Noise … 伝送に RF を使っているのでノイズがそれなりに乗る。普通のテレビと違ってビデオゲームの広くフラットに塗りつぶしたようなところでは、それがわずかなバイブレーションとして見える。

といったところみたいです。

で、2009年春に Stella という Atari 2600 VCS エミュレーターに上記の内容を実装してみたと。
結果は “ファンタスティック” だったそうです。
こちら の June 9, 2009 のところに CRT エミュレーションが追加されたとあります。
Open GL 2.0 以上で GLSL が必要とのことです。

残像とかは以前のフレームの状態とかがわからないとダメそうなので難しいかもだけど、ドット間の隙間やにじみなんかは Silverlight の PixcelShader でもなんとかなるかな?(いや、私は作りませんが。つか、HLSL とかあまりよく知らないし)


[Small Basic] Re:一歩ずつ (Small Basic でやってみた)

Jitta さんの 「一歩ずつ」 を読んで、ふと、Small Basic でやってみました。
(出題に対する回答ではなく、そのまんま Small Basic でやってみたというだけです)

実は Small Basic を使ってみるのは今回が初めてです。存在を知ってただけで、インストールもしたことがありませんでした。
なので、まずは http://smallbasic.com/ から msi をダウンロードしてセットアップ。
ダウンロードサイズも 5Mバイトちょっととすごくコンパクトなんですね。
セットアップ中に聞かれる Custom Setup のところの “Main Files” を展開して English と Japanese を “Will be installed on local hard drive” にしておきました。
そうすると、ちゃんとスタートメニューに Microsoft Small Basic (English) と (Japanese) が追加されました。(English は別にいらなかったかも)

さっそく Small Basic を起動して以下のコードを入力。
Small Basic の文法もほとんど知りませんでしたが、インテリセンスもよくできてるし、すぐに完成。

GraphicsWindow.Width = 800
GraphicsWindow.Height = 600

For x = 0 to GraphicsWindow.Width Step 5
GraphicsWindow.PenColor = "Blue"
  GraphicsWindow.DrawLine(0, 0, x, GraphicsWindow.Height)
EndFor

For y = 0 To GraphicsWindow.Width step 5 GraphicsWindow.PenColor = "Blue" GraphicsWindow.DrawLine(0, 0, GraphicsWindow.Width, y) EndFor

実行してみたらちゃんと青い線が描けました。

Small Basic のおもしろいところは、書いたコードをすぐに公開できるところです。
やり方は簡単でツールバーの 「発行」 ボタンを押すだけ。
ユーザー登録とかそういったとも何にも無しにボタンを押すだけでコードが Web で公開されます。
そうやって公開したのがこちら
http://smallbasic.com/program/?ZWL954

Web 上では Silverlight で動いてるんですね。
リンクするだけでなく、<object> タグで自分のブログなんかに貼り付けることもできます。(右側に表示されている “Embed this in your website” のタグ)
なかなかおもしろいなぁ。
リファレンスマニュアルも日本語化されてました。 http://smallbasic.com/doc.aspx?l=ja

あと、Jitta さんの記事の出題 7 の CRT のにじみについてですが、これについては別記事にて。