ほげめも(1999年02月07日)

Access counter:

1999年02月07日 日曜日

1999年02月07日 (日) 06時01分55秒 JST

うはー。たまらん。

64VRS の解析をしようと思って、Nintendo64 を Bt848 につないで 動かせるようにしようと思ってたんだが、 xawtv-2.35 についてくる bttv ドライバのオーディオ部分はばぐばぐだな。 いろいろと直した。

1999年02月07日 (日) 07時04分30秒 JST

はらへったん。

1999年02月07日 (日) 07時53分15秒 JST

そうそうそういや、 Linux 2.2.1 で NTFS や Solaris のパーティションが読めるように カーネルを作りなおしてそのカーネルでブートしてみたら、

Partition check:
 hda: hda1 hda2 hda3 <solaris: [s0] hda5 [s1] hda6 [s2] hda7 [s3] hda8 [s4] hda9 [s5] hda10 [s6] hda11 [s7] hda12 > hda4 < hda13 hda14 hda15 hda16 hda17 >
どわー、てことになってしまった。 Solaris のパーティションは論理パーティションのほうにわりあてられるとわ。 おかげで / のデバイスの番号がずれてしまい、ひどい目にあったぞ。 いままで /dev/hda5/ だったのだが、 8 ずれて /dev/hda13 になった。 カーネルによって / のデバイスが異なるというのは ちと問題がないかなー。

1999年02月07日 (日) 19時30分37秒 JST

Windows 98 が起動しなくなっちった。なぜだろう。 ログオンプロンプトをだそうとしてだせなくてそのまんま、という感じだ。 ネットワークカードのドライバを消すとちゃんと起動してくるし。

まあいろいろ試して結局わけわからなくて謎なんで、 インストールしなおすかねえ。 Samba に Windows 用プリンタドライバをしこもうと思っていたのに、 できなくなってしまったじゃないか。ぐちぐち。

1999年02月07日 (日) 21時28分54秒 JST

Samba による LBP-450 共有設定完了。 ドライバの自動インストールの設定もした。 Canon の LIPS IV のドライバはやたらファイルの量が多くてまいった。 まあともかくこれで、 ダブルクリックするだけで勝手にドライバがインストールされて 印刷ができるようになった。

.pdf とか CAD のデータとかそのへんをエラーなしに印刷できる、 まともな Windows 用プリンタがいままでひとつもなかたので、 たいへんありがたい。


1999年02月08日 月曜日

1999年02月08日 (月) 01時26分19秒 JST

WWW 掲示板にするか、NetNews にするか。 機能的には NetNews のほうがほとんどの点で優れているんだが、 やっぱりなんか敷居が高くてさびれてしまう気がするねえ。 NetNews の WWW インタフェースってないんだろうか。

1999年02月08日 (月) 05時58分19秒 JST

takuma 君がさっそく LEGO MINDSTORMS で超大作を作っていた。 ドラゴンみたいなの。 1 セットのブロックにモータ 1 つしか使ってないけど、 ちゃんと首と羽根を振り、両足を交互に前に踏みだして歩く。 はっきりいってあれはすごい。

研究室での inn の利用について、 新しく作るニュースグループなどの叩き台を作ってポストする。 果たして何人が反応してくるのかのう。

1999年02月08日 (月) 07時09分19秒 JST

ううむ、そろそろ本懐を遂げたい。

1999年02月08日 (月) 09時41分30秒 JST

おはようさくせん完了。 くったくった。

1999年02月08日 (月) 11時30分56秒 JST

研究室の WWW 掲示板は、 こちら で 公開されている NOTE/KY とかいう CGI スクリプトが評判がいいというか、 よくできているみたいなので とりあえずこれを試してみることにする。 セガ BBS でも使われているとか。

1999年02月08日 (月) 15時56分06秒 JST

何も考えずに Emacs 20.2 の Gnus で研究室の NetNews に投稿して、 自分ではちゃんと読めていたので安心していたら、 Content-Type: がついてなくて漢字コードが EUC な 記事を投稿してしまっていたらしく、 19.34 な mule じゃ読めんとか言われる。ががーん。 ちなみに Netscape や Outlook では読めてるようだ。

やっぱり NetNews は設定もなんもなしで すぐ使えるってわけにはいかないんだよなあ。 やはり敷居が高い。

1999年02月08日 (月) 17時02分14秒 JST

単にあたしが ~/.emacs の中で

(setq default-process-coding-system '(euc-japan-unix . euc-japan-unix))
というようなことを書いてあったのが、いけなかったらしい。 ひどいや。 Gnus のほうで投稿する文字コードは指定でけてしかるべきだよなあ。 なんか指定するための変数とかはないのかな。

1999年02月08日 (月) 18時48分59秒 JST

Gnus は、 記事の文字コードとか MIME とかそういったものは まったく関知しないつくりになっているらしいことがわかった。 おとなしく tm とかをインストールしたほうがいいということ。

しかし Debian の tm はなんかいろいろと変。 semi-gnus がわりといい感じなんで、 Sun の Emacs にもこれをインストールしてみるかな。

1999年02月08日 (月) 19時31分47秒 JST

Sun で Emacs 20.2 向けの semi-gnus をコンパイル中。 とってきたアーカイブは、

semi-gnus 以外は、どいつもこいつも 展開して make install ってするだけでたいがいうまくいった。 semi-gnus はただ ./configure して make するだけだと /usr/local/share/emacs/site-lispに インストールしようとするので注意。

1999年02月08日 (月) 20時41分12秒 JST

site-start.elが byte compile してないと 読みこまれないので不思議だ。 そういうもんなんかな。


1999年02月09日 火曜日

1999年02月09日 (火) 03時47分06秒 JST

むはー。ちとねた。

1999年02月09日 (火) 04時23分47秒 JST

久々に、ポットで紅茶を葉っぱからいれて飲んだ。 やはりインスタントコーヒーみたいなもんに比べるとおいしいですな。

1999年02月09日 (火) 05時54分45秒 JST

化けた記事の Message-ID の Supersedes: をつけて記事を投稿してみたら、 その記事はサーバから消え去ってしまった。 こういうもんなんだろうか。

semi-gnus 使ってるが、これの MIME edit はおもしろいな。 Mew よりもわかりやすい感じ。

1999年02月09日 (火) 07時01分55秒 JST

調子にのって某 ML から送りつけられてきたあにめ GIF を添付して投稿したら、 妙な text/plain パートが余計にくっついていってしまった。あう。

1999年02月09日 (火) 08時10分28秒 JST

Loki Entertainment Softwareが、 Linux 用 Civilization をこの春に出すんだって。へー。 Linux 用のゲームで商売をする気運がようやく高まりつつあるみたいだな。 あたしもなんかつくろっかな。

1999年02月09日 (火) 08時23分09秒 JST

ふじつうの音声合成ライブラリだが、これはすごい。 イントネーションの遷移(?)というか、 文章として見た場合の抑揚がほんとに絶妙ですねえ。 ただのイントネーション辞書だけでは、これだけのことはできん気がするよ。

笑えるのは、あまりに長い文章(数字の羅列とか)を読ませると、 息が切れてだんだん音程が低くなっていくということ。 ここまでは rsynth といっしょなんだが、rsynth と違うところは がまんできなくなるとちゃんと息継ぎをするということだ。

1999年02月09日 (火) 08時58分31秒 JST

おはようさくせん完了。


1999年02月10日 水曜日

1999年02月10日 (水) 03時21分07秒 JST

はでにくわれる。

1999年02月10日 (水) 04時51分43秒 JST

ロボ上で音声合成サーバが走りはじめる。 うひひひ。

1999年02月10日 (水) 06時04分36秒 JST

おとといあたりに届いた Aceelerated-X/OGL サーバを試す。 使ったのは昨日あたりに届いた #9 の Revolution IV である。

Linux で ideas in motion のアニメが動いているのを見たときはちょっと感動。 でも Onyx にはやっぱりまだかなわないって感じ。あたりまえか。

1999年02月10日 (水) 06時41分28秒 JST

Accelerated-X/OGL と T2R4 は Solaris for x86 2.6 でも動いた。 なかなかいいかんじ。

しかしシステムがたちあがって いきなり X に dtlogin が起動してしまうのはどうやって制御するんだろう。 Millennium G200 用のサーバが起動してしまって、 リセットボタンを押すはめになっちまったよ。 結局シングルユーザモードで起動して、 chmod -x Xaccel みたいなことをして切りぬけた。

1999年02月10日 (水) 11時14分03秒 JST

ほげほげ。 反復サーバに並行サーバってどっちがどっちだっけ。(ぉ

1999年02月10日 (水) 14時27分16秒 JST

お客さんがくるらしい。 まだかな。

1999年02月10日 (水) 15時03分38秒 JST

客が去っていった。 デモはまあつつがなく終了。 めでたい。

1999年02月10日 (水) 19時28分12秒 JST

めしくったん。
ねむいなー


1999年02月11日 木曜日

1999年02月11日 (木) 02時31分16秒 JST

わりと寝た。

1999年02月11日 (木) 03時27分32秒 JST

昨年購入して大変残念な思いをさせられた、 IO DATA GA-VDII12/PCI を借りてくる。 CH7003 を征服してやる。

1999年02月11日 (木) 06時53分44秒 JST

GA-VDII12/PCI のドライバを ndisasm で逆アセンブルして解析を進める。 fxoem2x.dllというファイルの中に、

00000A83  6A0B              push byte +0xb
00000A85  6A0E              push byte +0xe
00000A87  68EC000000        push dword 0xec
00000A8C  E81F0C0000        call 0x16b0
00000A91  6A01              push byte +0x1
00000A93  6A10              push byte +0x10
00000A95  68EC000000        push dword 0xec
00000A9A  E8110C0000        call 0x16b0
00000A9F  6A00              push byte +0x0
00000AA1  6A10              push byte +0x10
00000AA3  68EC000000        push dword 0xec
00000AA8  E8030C0000        call 0x16b0
といったようなあからさまにあやしい命令の並びを複数箇所見つけ、 たぶんここで CH7003 制御ルーチンを呼びだしているのだろうとあたりをつける。 CH7003 のデータシートによると、 こいつの I2C アドレスは0x75ないし0x76 に設定できるということであるから。 きっと0x76に設定しているんだろう。

しかし Voodoo2 の GPIO を制御する方法さえわかれば、 あとは CH7003 のデータシートどおりにやるだけなんだがなあ。 なんでこんな解析なんかせんといかんのだ。ぐちぐち。 Voodoo のデータシートよこせ。

1999年02月11日 (木) 07時13分44秒 JST

CH7003 のデータシートを参照したところ、さっきのコード列は 接続検出のシーケンスと符合することがわかったので、 たぶん予想は正しいだろう。このへんから攻めるか。

1999年02月11日 (木) 09時23分32秒 JST

かなりの謎は解けた。さて、次はどうするか。

Linux glide の作者が、 Device3Dfx なんてものを作ってるみたいなので、 それを利用するのがいい気がする。 Linux 2.0 でしか動かんとかいってるが、 まあ I/O 領域の読みかきのための ioctl くらいなら動いたりはせんかな。

1999年02月11日 (木) 10時00分35秒 JST

かと思ったらmemcpy_fromfs()とか使われてて結構面倒そう! とりあえず Linux デバイスドライバを読みつつ ごりごりと適当に書きかえているが、 果たしてうまくいくかのう。

1999年02月11日 (木) 17時54分26秒 JST

せんせとあきばいってきた。んでかえってきた。 雪が降ってきてたいへんだったにゃ。

せんせの研究費(?)でいろいろ買ってきたぞ。 Unreal とか Microsoft Sidewinder Freestyle Pro とか。 それとあと PlayStation 本体に、 ぷよぷよ SUN 決定盤にナムコヒストリー Vol. 1 も買った。 FF8 には目もくれない。ていうか売りきれ。 PlayStation 本体は LaOX で買ったんだけど、 領収書の品代は「画像生成装置として」と書いてもらったぞ。 ぜんぶ研究に使うつもりらしいよ!

ていうか、あたしの長年の夢だった 画像処理技術を駆使したゲームプレイマシン計画が ようやく実現しそうで喜ばしい限りですな。 ビデオゲームをするコンピュータというようなの。 1 フレームだけを見るんじゃ駄目な戦略性とかリアルタイム性とか、 ビジョンの研究としてもなかなか面白い題材だと思いますよ。 そのへんの複雑さの加減がいちばんちょうどよさそうなのが ぷよぷよだとあたしは思って買ってきたんだけど、 なんか他によさそうなゲームありませんかね。

まあもうあたしはこの研究室を去っていなくなっちゃうけど、 PC から Bt848 で画像をとりこんで、 PlayStation のパッド入力に戻すハードウェアを作るとこくらいまでは、 面倒をみようと思ってる。 あとは残った人たちでがんばって、 世界に誇れる最強ぷよマシンを作りあげていただきたい。


1999年02月12日 金曜日

1999年02月12日 (金) 04時25分34秒 JST

ぶへ。ねた。

1999年02月12日 (金) 05時21分35秒 JST

ねおきの Unreal はきもちがわるい。おえー。 ていうか、むづすぎ。敵のだす弾がよけられませーん。 Celeron 300A MHz に Obsidian2 X-24 でするする動いている感じだ。

1999年02月12日 (金) 08時00分47秒 JST

今度は gdb で Linux glide ライブラリを逆アセンブル中。 やっぱりシンボルがあるってのはいいねえ。 でも AT&T フォーマットはちと読みにくすぎ。 しかしただ .so とかを gdb にかけただけでは、 他のダイナミックリンクライブラリの呼び出しがさっぱりわからない。 小さなサンプルプログラムを作ってそいつに gdb するのがいいようだ。

1999年02月12日 (金) 08時32分46秒 JST

おはようさくせん完了。

1999年02月12日 (金) 08時33分53秒 JST

Glide 使ったごみプログラムを作って gdb。 逆アセンブルリストの中でも、 printf とかそのへんのシンボルがぜんぶ表示されるようになる。 おお、よめる、よめるぞTM

1999年02月12日 (金) 10時04分21秒 JST

記事のキャンセルのしかたを覚えた(ぉ。 cancel という newsgroup に、

Control: cancel <Message-ID>
という記事を投稿すればいい、ってことでいいんかな。

1999年02月12日 (金) 13時39分04秒 JST

gdb はかゆいところに手がとどかんな。むう。

1999年02月12日 (金) 17時58分46秒 JST


ばんざーい
やったー
できたー
たうとう Linux で GA-VDII12/PCI の NTSC 出力を有効にすることに成功したぞ! わーいわーい。

手探り状態のままとりあえず CH7003 の出力を ON にする I2C の命令を送るコードを試してみたらいきなり成功したみたいで、 突然 3Dfx のロゴがくるくるまわるあの画面がでてきた。 なんか同期があってなくて画面全体が激しく振動してるけど、 ここまでくればこっちのものだ。 あとは CH7003 のデータシート見ながら I2C なプログラム書くだけだもんね。

結局かなりの時間を Linux での Voodoo2 アドレス空間へのアクセス方法を探すことに費やした気がする。 おかげで glide2x.so のデバッグ情報の中に Voodoo2 の制御レジスタを現わす構造体の情報があったりとか、 いろいろ愉快なものを見つけられたけどね。

Glide はほぼ全面的に逆アセンブルしたんだけど 使えそうな関数が見つからなかったんで、 しかたなくgrSstSelect()を呼んだときに EDX レジスタに欲しい値が残ってることを利用することにして、 インラインアセンブラなコードを書いた。 うーに、我ながらひねくれてるな。 おかげさまでバージョン間互換性は限りなく低い。 まあ、いざとなりゃ自分で /dev/mem を mmap すりゃいいだけ ということがわかったのでどうでもいいけど。

1999年02月12日 (金) 22時04分54秒 JST

うちかえってまたやってきた。 ふげー。


1999年02月13日 土曜日

1999年02月13日 (土) 00時49分31秒 JST

ねむい。ねるべ。ぐぐう。

1999年02月13日 (土) 07時49分28秒 JST

よーねた。

1999年02月13日 (土) 09時57分40秒 JST

GA-VDII12/PCI をいじっている。

寝てる間にもしやと思ったことがあって試した。 PC の電源をいったん切って Linux を起動し、 CH7003 にビデオ出力を ON にするような命令を送ったら、 こんどは同期がぜんぜんあってない画面しかでてこなかった。 うーむ、やっぱり。

きのういきなりうまくいったのは、Windows ドライバがやった設定が CH7003 の中に残っていたから、ということでしょう。 リセットしただけじゃレジスタの中身は消えないからね。

まあCH7003 のデータシートを見つつ 自分で全部設定すりゃいいだけの話なんだがね。 面倒くさいので CH7003 のレジスタをダンプするプログラムをつくった。 Windows ドライバがやる設定をこれで読みだして参考にするかと。 というわけでおまけについてきた Redline Racer でひとしきり遊ぶ(ぉ。

1999年02月13日 (土) 18時05分15秒 JST

またドライバの解析をしている。 CH7003 のデータシートをいくら読んでも同期ずれの問題は解決できず、 結局 Voodoo2 のほうで CH7003 にあわせた出力をしているらしい、 という結論になったため。

Windows で Redline Racer を SSTV2_INITDEBUG_FILE=c:\debug.txt として起動したりだとか、いろいろな情報収集の結果わかったことは、 出力ドットクロック及び hSyncvSyncbackPorch なる Voodoo2 の制御レジスタの値を、 CH7003 にプログラムした動作モードにあわせてセットする必要があるということ。 これらの値は、それぞれ環境変数 SSTV2_VIDCLK2XSSTV2_HSYNCSSTV2_VSYNCSSTV2_BACKPORCH で制御できる。

出力ドットクロックは CH7003 のデータシートに書いてある値をセットすりゃいいだけの話なのだが、 制御レジスタのほうは仕様がまったくわからなくてこまる。 Windows ドライバがやってることによれば、 それぞれが 16+16=32bit なレジスタであるらしい、 ということしかわからん。 それに読んでも書いたものがでてくるわけではないようだ。 なんとかデフォルト値だけでもゲットできんかとまた逆アセンブルリストの解析に 没頭するがらちがあかず、結局また gdb の世話になることに。

先日作った Linux glide のゴミプログラムをよびだし、 あちこちに breakpoint の罠をしかけつつ何度も何度も実行。 んで、ついにつかまえたのがこれ。

(gdb) print *(sst1VideoTimingStruct *)0x4007bcc4
$3 = {hSyncOn = 96, hSyncOff = 704, vSyncOn = 2, vSyncOff = 523, 
  hBackPorch = 38, vBackPorch = 25, xDimension = 640, yDimension = 480, 
  refreshRate = 60, miscCtrl = 0, memOffset = 150, tilesInX = 20, 
  vFifoThreshold = 25, video16BPPIsOK = 1, video24BPPIsOK = 1, 
  clkFreq16bpp = 25.1749992, clkFreq24bpp = 50.3499985}
とまあなんと構造体定義つき。うひょひょ、なんてわかりやすいんだ。 しかしこれって、 3Dfx Interactive, Inc. にとっては一般に公開していい類の情報じゃないよなあ。 みなさん、配布するプログラムやライブラリのデバッグ情報は しっかりと消しましょうね。

というわけでこれをもとに、次のように環境変数をセットしてみたところ、
SSTV2_HSYNC=0x02c00060
SSTV2_VSYNC=0x020b0002
SSTV2_BACKPORCH=0x00190026
現状の出力を得ることができた。 ずれてるのは垂直同期だけだったんで、 SSTV2_VSYNC をいろいろいじくって試して最終的に、
SSTV2_VIDCLK2X=49.36
SSTV2_HSYNC=0x02c00060
SSTV2_VSYNC=0x01fe0002
SSTV2_BACKPORCH=0x00190026
としてみたところ、 同期ずれのないきれいな出力画像を得ることができましたとさ。

xawtv で見る限りでは、 この値で十分許容できる範囲だとあたしは思ってるけれど、 水平同期周波数は 60Hz からずれている可能性が大。 やっぱり Windows ドライバの設定値をなんとかゲットして使いたいものだが、 どうすればいいだろうな。

1999年02月13日 (土) 19時42分46秒 JST

↑ ついさっき水平同期周波数が 60Hz てことはなかろうという指摘をいただく。 ぐへー。

1999年02月13日 (土) 21時12分56秒 JST

ぐはー。GA-VDII12/PCI をいじるのはこれくらいにして、 回路作りたいぞ。回路。はあはあ。


takeshi@jsk.t.u-tokyo.ac.jp
Last modified: Sun Feb 14 10:52:29 1999