2008年12月27日土曜日

stone を DD-WRT で動かす

 Linux サーバ (11b 無線 LAN で繋がっているので遅い) で動かしていた ssh サーバ + http プロキシサーバ を DD-WRT にやらせてみる計画発動.
 ssh はすでに動いているので,問題は proxy サーバ.すでにコンパイル済みの tiny proxy なるものがあるらしいが,色々と考えて DD-WRT で stone を動かしてみたくなった.

 というわけで,クロスコンパイル環境の構築から入る.最初は DD-WRT のクロスコンパイル環境を構築しようと思ったが,情報があまりないので断念.やりたいのは stone のクロスコンパイルだけだから,OpenWRT のクロスコンパイル環境でもいいのでは? ということで,楽なほうの OpenWRT の環境を構築.

http://downloads.openwrt.org/docs/buildroot-documentation.html
http://blog.gcd.org/archives/50849644.html
ここらへんの情報を元に Vine Linux 4.2 でやってみたら,make が古いだの autoconf の build に失敗しただの,わけがわからんので,CentOS の最新版を VMWare 上にインストールしてやっと構築できた.

 環境ができたところで stone のコンパイル.stone の Makefile にはすでに fon のコンパイルの設定があるので,それを参考に WNDR3300 用の make ターゲットを追加.

mipsel:
$(MAKE) CC="mipsel-linux-uclibc-gcc" FLAGS="-O -Wall -DPTHREAD -DUNIX_DAEMON -DPRCTL $(FLAGS) -I/home/hoge/openwrt/staging_dir/mipsel/usr/include/" LIBS="-lpthread $(LIBS)" stone
mipsel-linux-uclibc-strip stone

mipsel-pop:
$(MAKE) CC="mipsel-linux-uclibc-gcc" TARGET=mipsel pop_stone

mipsel-ssl:
$(MAKE) CC="mipsel-linux-uclibc-gcc" SSL_LIBS="-lssl -lcrypto -L/home/hoge/openwrt/staging_dir/mipsel/usr/lib" TARGET=mipsel ssl_stone

 基本的に s/fon/mipsel/g s/mips-/mipsel-/g しただけ.-I とか -L オプションはもっとスマートなやり方があるはずだが,よくわかんないので安易な方法で逃げた (^^; この状態で,

[mirage ~/stone]# set path = ( $path /home/hoge/openwrt/staging_dir/toolchain-mipsel_gcc3.4.6/bin/ )
[mirage ~/stone]# make mipsel
make CC="mipsel-linux-uclibc-gcc" FLAGS="-O -Wall -DPTHREAD -DUNIX_DAEMON -DPRCTL -I/home/hoge/openwrt/staging_dir/mipsel/usr/include/" LIBS="-lpthread " stone
make[1]: Entering directory `/home/hoge/stone'
mipsel-linux-uclibc-gcc -O -Wall -DPTHREAD -DUNIX_DAEMON -DPRCTL -I/home/hoge/openwrt/staging_dir/mipsel/usr/include/ -o stone stone.c -lpthread
make[1]: Leaving directory `/home/hoge/stone'
mipsel-linux-uclibc-strip stone
[mirage ~/stone]#

 (文字にすると) あっさりとコンパイル完了.
 出来上がったバイナリを /jffs/ にほり込んでやると,WNDR3300 で無事動作したヽ(´ー`)ノ

2008年12月15日月曜日

気分はジョン・ランボー

 マーセナリーズ2,発売日に買ってきてもう 2回くらいクリアしたw ので軽く感想などを…


●よくなった点・よい点
・さすがに最新ゲーム機用だけあって,破壊モーションが半端なくすごい.特に海上油田基地や橋などの破壊描写は感動ものw
・ある勢力の兵士を殺害しても,即座に友好度が下がらなくなった.本部に連絡されるまで 8秒ほど猶予があるので,その間に連絡者を殺せば OK.つまり,友好度を気にせず殲滅できるようになったw
・ヘリをハイジャックしやすくなった.
・最強ヘリが買えるようになった.もっとも,これはこれでゲームの難易度が著しく落ちてしまうのだが…

●悪くなった点・悪い点
・乗り物から「自分だけ降りる」「同乗者だけ降りる」コマンドがなくなった.そこらへんの兵士を満載した装甲車をヘリで敵地のど真ん中に投入するのがおもろかったのに…w
・エース捕獲専用 MAP がなくなった
・プレイヤーキャラが,ぶっちゃけ誰使っても同じ.
・クリア後,なにもやる事がない.金・武器そのままで 2周目とかできたらいいのに…
・少し距離をとっただけで人物・オブジェクトが消えてしまうので狙撃しにくい.対物ライフルでの超ロングレンジ狙撃とかしたかった.
・主にビーコン系の支援爆撃が,ビーコン投げる→爆弾投下 まで早すぎるっす.車にビーコン貼り付けて特攻とか,むずい.


 最後に,ネットで見つけたおもろいプレイ方法をいくつか.
・燃料タンク爆撃.ヘリで燃料タンクを吊ってターゲットの上に置く→機関砲で点火→逃走 で,きわめて安全かつ安価に建物を破壊できるw たまに置いてあるタンクローリー車のタンクなら落とすだけで大爆発するので,まさに燃料気化爆弾w
・例えば,ゲリラの拠点制圧依頼を受けてから,HVT (標的は UP 等) のところに行ってゲリラの増援をスモークで呼びまくる.まさに共闘気分が味わえるw またそのときにアナコンダを置いておくと勝手に乗り込んで敵を殲滅してくれるので,ハインド飛び交う戦場で戦う様はランボーそのものw

こんないろんな遊び方が出来るのもマーセナリーズの魅力だねぇ.

2008年12月7日日曜日

本気でゴミを作ってしまった

 GA-MA78G-DS3H はどのように省電力設定しても,USB に常に電源が入る.例えば電源を切っていても光学マウスの LED が光りっぱなし.で,PCI スロット用 USB2.0 カードがあったのでこれにキーボードとか挿してみたら,BIOS でキーがきかねぇ…_| ̄|○


 なので,マザボ上の USB ピンヘッダをリアの PCI ブラケットに引き出すパーツを上の PCI カードを破壊して(笑) 作ってみた.ただし電源部分は残して PCI バスからとるので,PC 電源 OFF 時は USB 電源も落ちるのがミソ.

 で,早速使ってみたら,キーボートとかマウスとか接続がプチプチ切れる…_| ̄|○ やっぱノイズとかまったく考慮してないからかなぁ…

 久々にゴミを作ってしまった.しかも USB PCI カードを破壊してまで_| ̄|○

USB シリアルポート番号を増やさないようにする

 USB シリアル変換ケーブルは,以前に挿した USB ポートと違うところに挿すと,以前と違う COM 番号が割り当てられるので,ほっとくと COM 番号がだんだん増えていってしかも元に戻せない.デバイスマネージャの左図の設定でCOM ポート番号自体は変えられるのだが,以前のポート番号は「使用中」になっていて選べない.

 なんだかなぁと思って久々に WWatch を引っ張ってきて,COM ポートが増えてしまったときの差分を調べてみたら,以下のキーが見つかった.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter の
ComDB で,32バイトのバイナリ値で構成されていて,1バイト目が COM1~8 の使用状況を示しており,例えば COM1,3,4,5,6 が使用中なら,1バイト目の値は 0x3D になる.

 で,使用したい COM 番号の bit を 0 に落とすことで,上のダイアログボックスで COM ポート番号を元に戻すことができた.

2008年12月1日月曜日

PDF にタダで文字・図形を記入できるソフト

 最近よく,申込用紙なんかが PDF で配られてたりするけど,Adobe Acrobat (リーダぢゃないやつ) 持ってないと編集できないから,名前とか住所とかは印刷した後手書きなのよね.

 俺は字が汚いからあんまり手書きしたくない.という事で,PDF を編集できなくても,記入欄にテキストボックスを貼り付けるくらいのソフトならあるんじゃないの? と思って探してみたら,フリーソフトではないが評価版として↓が見つかった.
Foxit Reader 2.3

最新版は 3.0 だが,以下の理由により 2.3 がおすすめ.

 評価版の制限は,編集した PDF を保存すると「これは評価版です」みたいな英語のメッセージが PDF についてしまう事.だが保存前に印刷してしまえは問題なし.もっともバイナリエディタで .exe の「これは評価版です」メッセージを 0 に塗りつぶしたら PDF にもメッセージ付かなくなったけどねwww
 ここまでしなくても,評価版メッセージの上に白塗りの長方形を重ねてしまえば実質問題なくなるし.

 こりゃいいソフトだわヽ(´ー`)ノ

2008年11月9日日曜日

PS3 購入ヽ(´ー`)ノ

PS3 購入.GT5 プロローグ同梱版を買ったんだが,インストールに 15分くらい待たされた.ワクテカ状態でおあずけ食らうのって結構きついんだよ(笑) てかインストール中に Web ブラウザとか他の事をさせてくれよ… で GT5 のネット対戦で遊んだが,結構楽しい(笑) ただ対戦待ちちで毎回 3分くらい待たされるのもなんだかなぁ…


 で Web ブラウザの文字入力で PAD 使うのがだるくなってきたので,USB 切り替え器 Arvel ACSU22D を買ってきた.PS3 で動くか賭けだったが,何の問題もなく使えている模様.
 キーバインド設定の「設定1」と「設定2」って何かと思ったら,おそらく日本語変換 (PC でいうところの IME) のキーバインドっぽい.設定1 が MS-IME で,設定2 が ATOK.

2008年11月3日月曜日

DD-WRT v24 SP1 インストールと復活劇

 最近 YahooBB から eo 光に乗り換えて,La Fonera ( 以下 FON ) では光の帯域を生かせないので,再び部屋間の LAN ケーブルを復活させることにした.11n MIMO がもうちょっと安くなったらまたそのときに無線 LAN 化するかな.

 で,FON が遊んでしまったので,壊れてもいいやということで DD-WRT v24 SP1 にアップデートしてみた.やり方はここが詳しい.
 で,インストール自体はうまくいった.でいろいろ設定をいじっていると,再起動してもリセットしても FON と通信できない事態に.幸い REDBOOT とはつながるので再インストールしてみたけど,やはりだめ.

 ググってみると,こういうときは,nvram 領域 ( DD-WRT の設定がおさめられている? ) を REDBOOT で初期化するおまじない

fis erase -f 0xA83D0000 -l 0x00010000

すればいいらしいのだが,これは以前の DD-WRT のバージョンの話で,fis list で見たときの nvram 領域を erase しているのだが,v24 SP1 で fis list してみても

RedBoot> fis list
Name FLASH addr Mem addr Length Entry point
RedBoot 0xA8000000 0xA8000000 0x00030000 0x00000000
linux 0xA8030000 0x80041000 0x00644000 0x80041000
FIS directory 0xA87E0000 0xA87E0000 0x0000F000 0x00000000
RedBoot config 0xA87EF000 0xA87EF000 0x00001000 0x00000000

そんな領域はねぇ(゜ーÅ)ほろり

そこで,ダメもとで 0xA8030000~0xA87E0000 を 以下のコマンドで

fis erase -f 0xA8030000 -l 0x007B0000

erase してから v24 SP1 をインストールしてみたら,ビンゴ!! 無事 DD-WRT の管理画面に行き着いたよ.
-----
で,このときに問題になっていた,有線 WAN ポートと LAN ポートのネットワーク分離も実装されたみたい.( vlan0/1 が出来ていたので) でももうブロードバンドルータとして使うことはないんだけどね…
-----
ちなみに eo 光は,混んでそうな時間帯でも 35Mbps 出てちょっとらっきぃ.Y!BB の 600Kbps とはえらい違いだw

2008年10月19日日曜日

DELL DIMENSION WOL 化計画(2)

DIMENSION の WOL ということで,パワー SW や WOL 信号の特性を探ってみた.

 まずパワー SW だが,ケースからのフラットケーブルを接続するコネクタの 6, 8番 pin をショートさせると,電源が入る.もっと具体的にいうと,#6 が 3.3V にプルアップしてあって,これを GND とショートさせると電源が入る.


LAN カードの WOL コネクタのほうは,たぶん真ん中が GND,残りが +5V と WOL 信号で,WOL 信号は定常状態で 0V,マジックパケットを受け取ると,3.3V になった.

しかし,ここで問題があることが発覚.WOL 信号は Windows が起動して LAN カードに何らかの設定がされるまで 3.3V のまま.一方,パワー SW 端子のほうは,ショートさせっぱなしだと (マザボに通電自体はするものの) ブートシーケンスが開始されない.つまり,単純に WOL 信号の極性を反転させてパワー SW 端子に接続したとしても,マジックパケットを受け取った時に通電はするが Windows は起動しない.

この LAN カードを使って WOL を実現するにはここのようにタイマー回路を組んで一定時間後に WOL 信号を 0V に落とさないとだめだけど,俺にそんな知識ありませんから!! 残念!!

ほかの LAN カードで試してみるかなぁ(゜ーÅ)ほろり

-----
ちょっと話題は変わって,今回 DELL を分解してみて,いろいろと合理化されていてびっくり.
一つはマザボの固定方法で,ネジ 1本でうまいこと固定している.(説明がめんどくさいのでここ見てくれw)

もう一つはケース排気ファンが CPU 冷却ファンを兼ねていること.これはコストを下げるのはもちろんのこと,ファンの数を減らして静音化につながったり,CPU の廃熱を確実にケース外に排出する優れた機構だと思う.そういや BTX は吸気ファンと CPU 冷却ファンが兼用でちょっとうれしかったが,もう BTX は終わった感じだしねぇ.
DELL は合理化を進めるあまりパーツが特殊になって,自分では買いたくないがw (この DELL をオクで買ったのは異様に安かったから),こういう機構は積極的に規格化して自作界にも取り入れてほしいところだ.

TSM (高雄サンデーミーティング)

10/19 に開催された高雄サンデーミーティング (アルピーヌ特集?) を見に行ってきました.
会場を埋め尽くすほどのアルピーヌがいましたが,一番話題をかっさらっていたのは…

ランチア・ストラトス! しかもなんと 2台も!!
どちらもレプリカではないオリジナルの車体に見えました.

そしてこれよこれ! このスーパーカー開き!! (とたった今命名)

ジネッタ G12! G4 じゃなくてミッドシップの G12!!

そして G12 もスーパーカー開き(笑)

メッサーシュメットかと思ったら,BMW もこんな車作ってたんですねぇ.

なんかターボエンジンの仕組みがよくわかりそうなむき出しのタービン(笑)
なんとロータリーターボエンジン搭載で,400ps ってシールが貼ってありましたが…
((((;゚д゚))))ガクガクブルブル

いつながら,この手のイベントには度肝抜かれる車が集まりますね.

2008年10月18日土曜日

DELL DIMENSION XPS 4100 WOL 化計画

 昔,ヤフオクで落とした DELL DIMENSION XPS 4100 を WOL ( Wake On LAN ) 化してみようと思い立った.DIMENSION の BIOS には WOL/PME の項目があるのだが,マザボ上に WOL コネクタはない.たぶん,コストダウンでそこらへんの回路は省略されてるんだろうな… PME の項目があるということは,WOL ケーブルをつながなくても PCI スロットを通してパワー ON イベントが送られるのではなかろうか? と期待したが,どうもそれも NG のようだ.
 幸い,BIOS のこれらの項目を ON にしておけば,Windows シャットダウン後にも LAN カードの電源は落ちないようで,要は LAN カードは WOL パケット (マジックパケット) を受け取って WOL コネクタに信号を出すことができる.すなわち,電源 SW とこの WOL コネクタの信号をうまいことつなげば,WOL が実現できるはず.

 というわけで,いろいろググってみたら,同じようなことを試みている人は結構いるようだ↓
http://www.geocities.co.jp/SiliconValley-PaloAlto/6025/WakeOnLan.html
http://www5.atwiki.jp/kuro-bsd/pages/128.html

これらを参考に,DIMENSION WOL 化計画を進めていくつもり.

2008年10月11日土曜日

根本的スパム対策

 今まで本命メアドと捨てメアドを使い分けて,本命メアドは信用できるところにしか公開していなかったのでスパムメールとは無縁だったのだが,ついに本命メアドがスパムメール業者に渡ってしまったらしい.出会い系とか「10万円当たりました!」とか大量に届くようになった.これを機に,根本的なスパムメール対策システムを考えてみようと思う.

 一つ思いつくのは,メアドを知らせたい相手一人一人に違うメアドを教えておく,というもの.一般的にはテンポラリメールアドレスと呼ばれる仕組みだが,例えば

Aさん: hoge-a@domain.jp
Bさん: hoge-b@domain.jp
通販業者C: hoge-shop_c@domain.jp

 などのように,一人一人に違うアドレスを教えておく.例えば業者 C がメアドをスパム業者に売ったとしても,あて先メアドから誰が犯人であるか明白であるから晒し上げる事もできるだろうし,そもそも通販のやり取りが終わった時点で hoge-shop_c@domain.jp を破棄すればよい.
 また A さんが事故で hoge-a@domain.jp を外部に漏らしてしまった場合でも,A さん用メアドを新たに割り当てなおして,メアド変更の連絡は A さんだけで済む事から被害を最小限に抑えられる.

 幸い,今使っているメールサーバーの qmail にはこれに適した仕組みが用意されている.具体的には dot-qmail という仕組みで,hoge-*@domain.jp の * があらかじめ設定したものと一致すれば,hoge@domain.jp 宛てへのメールとして届けられる.

 これにより受信側は解決だが,問題は送信側.From アドレスは普通メーラーで設定するから,メール送信ごとにメーラーの From 設定を変えるのはめんどくさい.現実的な案として,To 欄を参照して自動的に From 欄を書き換えるメールゲートウェイを設置する事だが…

 てか,こんなサービス,どこかで既にやってそうな気がしてきた.

2008年10月5日日曜日

緊急用ブータブル CD

 New マシンのケースには FDD 用ドライブベイがなかったので,FDD をつけていない.最近では CD ブートや USB ブートが当たり前になってきたのでこれでも問題ないや,と思っていたのだが,MBM (SystemCommander みたいなブートマネージャ) のインストールには MS-DOS が必須…
# 最初は USB HDD ブートでいけるかと思ったが,それやると USB HDD が仮想的な C: になってしまい,さらに MBM は C: にしかインストールできない仕様なのでダメだった

 それでも FD イメージさえあれば,CD-R に焼いて FD エミュレーションで MS-DOS が起動できるが,CD-R の容量のうち 1.44MB しか使わないのはもったいない.と思っていろいろ探してみたら,CD-R に収められた複数の FD イメージ・ISO イメージから選択して起動できるブータブル CD 用ブートマネージャがあった.
ここの解説が大変詳しい.

 というわけで,MS-DOS やら NT Loader やら MemTest86 やらいろいろ詰め込んだ緊急 CD 完成ヽ(´ー`)ノ

2008年10月3日金曜日

ソーラーバッテリーチャージャー防水加工

バッテリー上がり対策第二段.

車内用ソーラーバッテリーチャージャーを \100均で買ってきたアクリル書類ケースに入れて,ホットボンドでシーリングして全天候仕様にグレードアップ(汗

車は車庫内なので,このソーラーバッテリーチャージャーだけ外に出して使えるようになりました.

2008年9月21日日曜日

PC 新調


5年ぶりに PC を全更新.
PC でゲームとかしないし,今の AthlonXP 2700+ でもぜんぜん問題なかったのだが,経年劣化のためか電源がヘタってきたらしく,PC 使用中に突然リブートしたりする.
最近は PC パーツ事情にもすっかり疎くなって,「メモリーどれ買えばいいんだ?」などとド素人レベルに戸惑いつつ,2日ほどで悩んだ結果が下のとおり.

CPUAthlon64X2 5000+ Black Edition\7,580
マザボGIGABYTE GA-MA78G-DS3H \10,580
メモリPC2-6400(DDR2 800) 1GBx2 \4,560
CPUクーラーNINJA 弐(SCNJ-2000) \4,280
HDDHITACHI HDP725050GLA360 \6,500
ケースAntec ThreeHundred \9,750
電源玄人志向 KRPW-V400W \4,650
合計\47,900
ああ,3代続いて AMD だ(笑) ミドルレンジ CPU だとやはり AMD のほうがコストパフォーマンスが高いので.
で,Athlon = 熱い = ファンがうるさい,と思い込んでいたので,ケースとクーラーには金かけてみたが,つめた!!Σ( ̄□ ̄; アイドル時は気温 +2℃? これなら大げさな冷却しなくてもよかったな…orz
CPU はクロック倍率フリーというところに惹かれて Athlon64X2 5000+ Black Edition をチョイス.が,ちょっとした問題が.3GHz でも普通に回る (ノーマルは 2.6GHz) ことは確認できたが,マザボでクロック倍率をマニュアル設定すると Cool'n Quiet が効かねぇ.そういうもんなのか?
コストダウン対策として,光学ドライブは使いまわしで,ビデオもオンボードw
まぁ 5万以内で組めたので,いいかなと.

と思ったら,あああ,シリアルポートがついてない(;´д⊂) 組み込みプログラマの端くれとして,これは痛いな.USB シリアル変換ケーブルでも買ってくるか.

2008年9月20日土曜日

旧メインマシン復活

 調子が悪くなった先代 AthlonXP マシン,電源を変えたら調子がよくなったっぽいので,電源が原因かと思いこんでいたのだが,OS 再インスト中にバンバン落ちる~(;´д⊂)

 よくよくマザボを見てみると,半分ぐらいのコンデンサが膨らんでるし(;´д⊂) こりゃ逝ったのはマザボかな? そういやこのマシンは無理やり静音化してエアフロー最悪だったので,夏場はマザボの温度センサーが 50℃とか過酷な環境で使ってたしなぁ…

 でも AthlonXP 2700+ (正確には 180MHz * 12 のオーバークロック) をお蔵入りさせるのはもったいないので,中古 SocketA マザボ (KM2M Combo) を \500 で購入w でもって早速組んでみたけど,クロック倍率もコア電圧も BIOS でいじれないジャン…_| ̄|○
 幸い,CrystalCPUID での倍率変更は受け付けたので,133MHz * 15 で運用.

 でも旧マザボの EP-8K3A は気に入ってるんだよねー.コンデンサだけ張り替えればよかったかもしれない.

2008年9月14日日曜日

Cool'n Quiet (じゃないけど) 設定


倍率を BIOS で 3GHz ( = 200 * 15倍 ) 設定に設定すると,Cool'n Quiet が効かなくなっていたが,どうやらそういうもんらしい.Cool'n Quiet が使えなくなるのはいやだし,かといって定格で使うのは Black Editon 買った意味がなくて負けた気がするし.

というわけで,先代マシンでも使っていた Crystal CPUID を使うことに.Crystal CPUID だと VCore も変更できるので,低クロック時にどれだけ VCore 下げられるかも調べてみた.
周波数VCoreコメント
1.0GHz0.800V で安定これが設定できる最低値
2.0GHz0.950V で死亡
3.0GHz1.375V で安定定格1.325V では不安定
3.1GHz1.375V で不安定
3.2GHz1.450V でも死亡
オーバークロック耐性としては,どうもハズレの個体らしい…_| ̄|○
1.0GHz だと定格の 1.10V よりもえらい下げられるんだなぁ.

というわけで,画像のとおりの 3段階で Crystal CPUID の運用を行うことにけってー.

大昔 (Windows95 時代w) に作ったクロック周波数表示プログラムが思わぬところで活躍.(→ダウンロード) 負荷で周波数がダイナミックに変わるのは見てて楽しいw

2008年8月22日金曜日

不明 バッテリーカットオフスイッチ

二度目のバッテリー上がりに遭遇し,やっとこさバッテリーカットオフスイッチをつけるという学習をするにいたりました(汗

緑のダイヤル (ねじ) を締めこめば ON,緩めれば OFF という単純なもので,\500 という値段を考えれば可もなく不可もなくといったところです.
関連情報URL : http://www.google.co.jp/search?hl=ja&q=%22%E3%83%90%E3%83%83%E3%83%86%E3%83%AA%E3%83%BC%E3%82%AB%E3%83%83%E3%83%88%E3%82%AA%E3%83%95%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%22&lr=lang_ja
購入価格500 円

2008年8月2日土曜日

Gyao 動画を携帯で見る(3)

==================================
前回までのあらすじ
・携帯動画変換君+avisynth+Automate UnDRM で .asf を .mp4 に変換できた
・SoftBank 810P は動画の指定時間へのジャンプがないので,早送りで進めるのは時間がかかる
・Yamb で分割→失敗 (途中で再生が終わる)
・MP4Box でチャプターを打つ→810P はチャプターを認識せず
・_| ̄|○←いまここ
==================================

 と言うわけで,最終手段である,ffmpeg の範囲指定エンコーディングで細切れエンコーディングを行う,というバッチファイルを作った.ffmpeg のオプションで -ss <開始時間> -t <エンコード時間> と言うのがあるのでこれを試してみたら,開始時間までのシーク? にえらい時間がかかる.この分割エンコードでは何度も ffmpeg を起動するわけだから,このシーク時間は無視できない.

 なので,avisynth の方でやってみた.携帯動画変換君付属の ffmpeg は,avisynth 経由で動画をオープン (入力動画ファイル指定に .avs を指定する) することができるので,avisynth の Trim( <開始>, <終了> ) で範囲指定できる.具体的には,バッチファイルで「Trim() の数値を順に増やしながら .avs ファイルを作成し,それを ffmpeg に読み込ませる」を何度か繰り返せば,分割エンコーディングが実現できる.

 次の問題は,動画の総フレーム数をバッチファイルは知らないので,いつ分割作業をやめればいいのか,の判断がバッチファイルには分からない.一方,avisynth は動画の総フレーム数を知ることができるので,「エンコード開始フレーム位置が総フレーム数を超えていたら,わざとエラーを起こしてエンコードを失敗させる」ことにした.こうすれば,バッチファイルは,ffmpeg を起動したのに .mp4 が作成されていないので,分割処理終了を判断することができる.

このときの .avs はこんなかんじ

DirectShowSource("video.avi")
( FrameCount() > 開始フレーム ) ? Trim( 開始フレーム, 終了フレーム ) : 0/0

開始フレーム・終了フレームは,バッチファイルで値を変えながら何度か ffmpeg が実行される.で,キモは 2行目の 0/0 で,開始フレームが総フレームを上回ったら,division by 0 を発生させて ffmpeg を終了させることで,.mp4 は作成されない.

-----
追記:
810P の連続再生はファイル名の逆順で再生,と思ってたら,違ってたみたい.どうやらファイル作成日時 (またはファイル更新日時) の逆順みたいだ.

2008年7月28日月曜日

MicroSD 2GB 送料込み \698

 MicroSD 2GB を送料込み \698 で購入.


 MicroSD は機器との相性問題が結構きついということを身を持って体験済みなので,相性保証が無い MicroSD を買うのはちょっと気が引けたが,まぁ失敗しても \698 だし痛くないや.てか,去年の 2月に \5,000 出して買ったのがアホみたいや…

 今回買ったのは,Transcend の TSDN2GTF というやつで,SoftBank 810P・MicroSD→メモステ変換 + PSP でも何の問題もなく動いたヽ(´ー`)ノ
 結局 MicroSD は SunDisk,PQI,Transcend の 3枚手元にあるわけだが,PQI 以外は 810P でも MicroSD→メモステ変換 + PSP でも何の問題もない.もーぜってー PQI は買ってやんねーwww
# ちなみに,MicroSD→メモステ変換 は KingMax 製のやつと,PhotoFast CR-5200 どっちでも無問題.

 というわけで,MicroSD の数に余裕が出てきたので,1枚は MAPLUS2 専用にして,MAPLUS2 の ISO イメージを無圧縮で格納.MAPLUS2 がサクサク動くようになって快適ヽ(´ー`)ノ

2008年7月19日土曜日

簡易ラップタイム計測機能追加


VSD for サーキットの友」に,簡易ラップタイム計測機能をつけてみた.

原理としては,動画でスタートラインを通過した瞬間に手動で目印をつけることで,目印~目印間の時間計測をして表示すると.なので原理的に動画の fps を超える精度の時間計測はできない (例えば動画が 30fps ならば,タイム計測の精度は 1/30 = 0.033秒) が,ラップタイマー持ってない人にとってはこれだけでも十分うれしいのではないかと.

ラップタイム表示のコード自体は,もともとの自作データロガー用 VSD が持っているので,問題は AviUtl の GUI でどうやってスタートラインの位置を入力するか.幸い,「マーク」という機能があって,任意のフレームにマークをつけることができるので,それでスタートライン通過フレームの指定をすることにした.

てなわけで,チャッチャと実装完了.

2008年7月13日日曜日

車載動画スーパーインポーズフィルタをサーキットの友に対応


自分はデータロガー環境を独自に構築しているが,これを他の人に広めようとしても,一番のネックになるのは車両からの情報を収集する方法.自分では H8 マイコンを用いているが,少なくともハンダ付けが必要なので他の人に展開するのはほぼ不可能だろう.

しかし世の中にはうまいことを考える人もいるようで,簡単なケーブルを自作するだけで,ノーパソが車両からの情報を収集できる機械になってしまうというものがあった↓
サーキットの友
原理としては,ライン (マイク) 入力に車両からの信号を突っ込んで,サウンドカードを AD 変換器代わりに使用して,CPU パワーでその波形をリアルタイムに解析すると.ステレオ入力だと最大 2ch (スピード・タコ) が解析できるから,簡易的なデータロガーになる.そういや同じような考えで,ライン入力をオシロスコープ代わりに使用するソフトもあったっけ.

もっと早くこれを知っていたら,自作データロガーとかわざわざ作らなかったかもw

で,サーキットの友 で車両のログを取ることはできるが,車載動画と合成する機能まではないので,自分の作った車載動画スーパーインポーズフィルタをサーキットの友対応にしてみた.

欲しい人はこちら

2008年6月22日日曜日

ゴミ SD カード活用

-------- initialize --------
CMD0:1 CMD1:7 CMD1:7 CMD1:3 CMD1:3 CMD1:3 CMD1:3 CMD1:3 CMD1:3 CMD1:3 CMD1:3
-------- CSD --------
CMD9:0,FE
0000:CSD structure
0000:System specification version
002D:Data read access-time 1
0000:Data read access-time 2 in CLK cycles
0032:Max. bus clock frequency
0135:Card command classes
0009:Max. read data block length
0001:Partial blocks for read allowed
0000:Write block misalignment
0000:Read block misalignment
0000:DSR implemented
019E:Device Size
0006:Max. read current @ VDD min
0006:Max. read current @ VDD max
0006:Max. write current @ VDD min
0006:Max. write current @ VDD max
0003:Device size multiplier
0013:Erase group size
001F:Erase group size multiplier
001F:Write protect group size
0000:Write protect group enable
0000:Manufacturer default ECC
0005:Write speed factor
0009:Max. write data block length
0000:Partial blocks for write allowed
0000:Content protection application
0000:File format group
0000:Copy flag (OTP)
0000:Permanent write protection
0000:Temporary write protection
0000:File Format
0000:ECC code
0074:CRC
f_mount:0
CMD17:0,FE CMD17:0,FE CMD17:0,FE
f_open:0
CMD17:0,FE
f_read:0: read=512
f_close:0
-------- dump --------
0000:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0010:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0020:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

01F0:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

MassStrage.dfu で 8MB のゴミ SD カードのアクセスが失敗していたので,どこでコケているのか調べてみた.
最初は初期化シーケンスが正しくないのかと思ったが,SD の仕様書と見比べてもそんなにおかしなところはない.お次は AC タイミング的なエラーを疑ってみたが,こればっかりはオシロスコープ持ってないのでわかんね.ただほとんどのコマンド (CMD0 とか 9 とかはぜんぜん正常であることが分かってきた.てことは AC タイミング的な問題ではない?

唯一おかしいのは CMD1.こいつのレスポンスが 0x7 とか 0x3 とかしか返ってこないので,MassStrage.dfu では MSD_GoIdleState() で死んでいたようだ.でもレスポンスが 0x7 とか 0x3 とかって,ここ見る限りそもそもなんかおかしいんですが… (illegal command とかありえねー) もしかして SPI の 8bit アライメントがずれてんのか?
本来
11111111 00000001 11111111
と受け取りたいところを,2bit ずれて
11111100 00000111 111111?
と受け取ってしまってるとか.これならばレスポンスが 7→3 に変化してるのも筋が通るが,何でズレてんのかまではわかんね.ああ,こういうときオシロとかロジアナとかほしいなぁ…

で本来 CMD1 のレスポンスが 0 になるまで wait するのだが,レスポンスがおかしいまま次に進んでも CMD17 (セクタリード) とかは全然正常 (これのレスポンスとかリードデータが bit ズレ起こさないのも,上の仮定と違ってて謎).というわけでゴミ 8MB SD カードが無事活用できるようになった(?)

他の使えなかった SD カード (2GB) の解析はやってないけど,たぶんセクタサイズが 512B 以外になっててその設定 (CMD16) をやってないからじゃなかろうか?

-----
追記:
 CMD1 が Illegal Command になっていた件,どうやら SD カードの厳密な仕様的には CMD1 は受け付けなくて,CMD41 で初期化しなければならないらしい.CMD41 で初期化すると,ゴミ 8MB カードも無事使用できた.
 MMC と SD は SPI 通信を使う限り,完全互換性があるという思い込みをしてしまっていた.

2008年6月20日金曜日

FLASH 上のルーチンにリンク成功

デザインウェーブマガジン付録 ARM ボードをいぢくる続き.

FLASH に焼かれたルーチンを SRAM 実行プログラムから呼び出す方法を確立してみた.
SRAM は 20KB しかないので,printf 等の大き目のルーチンを SRAM 実行プログラムにリンクしてしまうと,当然残りの SRAM 容量が減ってしまうので開発に支障が出る.そこで FLASH 上にある printf ルーチンをリンクしてしまおうというのが今回の趣旨.

まず,FLASH 上の printf のアドレスを知るためには,
メニューの Project → Options...
Linker → List タブ → Generate linker map file
で FLASH 実行プログラムの .map ファイルを生成すればよい.たとえば printf のアドレスが 0x080063ed だったとすると,SRAM プログラムのソースで

#define printf (*( int (*)( const char *fmt, ... ))0x080063ed)

と書けば OK.

だが,これだと printf を使ってる全ファイルの修正が必要だし,いちいちプロトタイプ宣言を調べて #define を書き並べるのが面倒なので,別の方法を考えてみる.

rom_entry.s なるファイルを以下の内容

    RSEG ROM_CODE:CODE(2)
EXPORT printf
printf = 0x080063ed
END

で作成し SRAM プログラムのプロジェクトに追加してコンパイル・リンクすることで,FLASH 上の printf にリンクできた.この方法だと .c の修正はいらないし,.map ファイルから perl スクリプトなんかで機械的に rom_entry.s を生成できるので楽.

いろいろ FLASH 上のルーチンにリンクしたら,もともと 18KB のプログラムが 5.5KB になったよ(笑)

2008年6月18日水曜日

SD カード FAT アクセス成功

デザインウェーブマガジン付録 ARM ボードをいぢくる続き.


昨日と今日にかけて,フリーの FAT ファイルシステムドライバであるFatFsを組み込んで,SD カードのファイルを読み出せるようにしてみた.

具体的には,ff.c を組み込んで,diskio.c をインプリしていくのだが,disk_read/write() はほとんど SD カードセクタリード・ライトそのまんまだが,disk_ioctl() は何書いていいのか分からん… 幸いここにサンプルがあった.

デバッグ用にシリアル出力を大量にしているとなぜかリードデータが化ける問題があってちょっとハマッたが,最終的に無事ファイルリード完了ヽ(´ー`)ノ

あと,putchar() 関数を定義して,こいつでシリアル出力するようにしておくと,printf() で普通にシリアルにメッセージが出せるので便利ヽ(´ー`)ノ

以下,ToDo リスト
・FLASH のルーチンを SRAM プログラムからコールする仕組みを確立
・SRAM ルーチンを割込みハンドラに設定
・割り込みを使用したシリアル入出力
・ここら辺が FIX したら FLASH に焼いて,「SD カード上のファームを SRAM にロード」を運用開始

2008年6月16日月曜日

SD カードセクタダンプ成功(?)

データロガー 2号機計画を ゆっくり と進行中.


今回は,MassStrage を参考に,SD カードの 1セクタをリードしてシリアル (USB を介した仮想 com ポート) 出力にダンプさせてみた.まぁ MassStrage の msd.c あたりをそのまま組み込んだだけだが.コンパイル通すのに多少苦労しつつ,とりあえずダンプできるまでこぎつけた.

が,シリアル出力が明らかにおかしい.シリアル出力はカエルがぴょんのやつを参考にしていて,USB の送信データバッファ(?) に送信したい文字列を直接コピーしているのだが,おそらく前のやつが送信されきらないうちに次の文字列を上書きしているのだろう.

普通は,アプリ側でリングバッファを用意して,送信したいデータはリングバッファに書く→USB 送信データバッファに空きができたら割込み発生→割込みルーチンで,リングバッファから送信データバッファにコピー,なんて流れになると思うのだが…
もうちっと Cortex の割り込みを勉強せにゃならんね.とにかくシリアル出力をまともにしないと,まともなデバッグができねぇ.

とりあえず,断片的に見えているダンプデータを見る限り,SD カードセクタリードはできているようだ.

----
6/16追記:
とりあえず割り込みを使用しないでお茶を濁しモード.送信データをバッファにカキコ前に

while( GetEPTxStatus( ENDP1 ) == EP_TX_VALID );

で前回のデータが送信されきるまで待つことで,シリアル出力は正常になったヽ(´ー`)ノ

2008年6月9日月曜日

シリアル経由 FW ローダ完成

前回の記事どおり,SD カードの FW を SRAM にロードする仕組みを作っていくが,その前に,シリアル経由で FW を SRAM にロードする仕組みを作る.いくら既存のライブラリが充実しているからって,一発で SD カードアクセスプログラムが動くわけが無いのでw


というわけで,
1. 起動されたらデータを 0x4800 バイト分,シリアル (USB経由) から読み込んで 0x20000000~ へ書き込む
2. 0x20000004 に格納されているエントリポイントにジャンプ
という恐ろしく単純なプログラムを FLASH に焼きこんだ.これすらも,デザインウェーブマガジンに載っていたカエルがぴょんプログラムをちょこっと書き換えただけ.

ちなみに,マガジン付属 CD に入っていたサンプルプログラムの多くは,IAR Embedded Workbench でコンパイルしようとすると「__program_start」シンボルが無い,などと怒られてしまうが,その対処法はここに載っているようだ.

そしてマガジンに載っていた LED を点滅させるプログラムを SRAM 実行用に書き換え→.s19 を 0x20000000 からのバイナリイメージに変換するプログラムを作って変換→TeraTerm の send file で基盤に送信,で無事 LED が点滅したヽ(´ー`)ノ

これで内蔵 FLASH を書き換えることなく開発・デバッグができる.しかし,早いことベース基盤を作らないと,リセットボタンすらないのでやりにくぅ.

ちなみにメモリマップは前回からさらに変わっている↓

20000000ベクタテーブル
200000ECSRAM プログラム用 .text
・・・SRAM プログラム用 .data .bss 等
・・・空き
・・・スタック
(SRAM後端)FLASH プログラム用 .data .bss 等
20005000

SRAM 実行用プログラムのコード・ベクタテーブルを SRAM の前端で固定したかったので,FLASH 実行用 SRAM 領域を SRAM の最後尾にやって,そこからスタック領域とした.

2008年6月8日日曜日

データロガー2号計画発動

デザインウェーブの Cortex-M (AAM ARM) 基盤を使ったデータロガー 2号機作成をぼちぼち開始.

とりあえずの目標としては,SD カード上のファームウェアを SRAM 上にロードする仕組みを作る.で開発途上は SD カードにファームを書き込むことで Cortex 内部 FLASH の書き込み回数を減らす.これだとコード + データが 20KB 以内しか作れないが,デバッグの終わったルーチンをまとめて内部 FLASH に追い出して,SRAM 上のプログラムから FLASH 上のルーチンを呼び出す.なんてことを H8 の時はしてた.(H8 は SD カードアクセスはできなかったので,シリアル経由の .mot ロードだったが)

で,SD カードアクセスのライブラリは MassStrage デモのライブラリがそのまま使えそうだ.FAT アクセスライブラリも使われてるかと思ったら,FAT の管理をやってるのは Windows 側なのね.なのでフリーの FAT ライブラリを探してみたら,ここのが使えそうだ.

で,いろいろ make してると,メモリマップがちょとヘンなことが発覚.常識的には SP の初期値は RAM 領域最後尾の 0x20005000 だと思うのだが,標準だと 0x20000000 + プログラムで使う分 + 0x200 くらい.RAM あまりまくってるのにもったいない.

これは gcc でいうところのリンカスクリプトがおかしいのだろうと思っていろいろいじってみた.俺がインストしたのは「IAR Embedded Workbench」なので,リンカスクリプトに相当するのは「STM32F10x_FLASH.icf」になる.で以下のように書き換えた.

/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x08003000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x080030ec;
define symbol __ICFEDIT_region_ROM_end__ = 0x0801FFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__ = 0x20004FFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x0;
define symbol __ICFEDIT_size_heap__ = 0x200;
/**** End of ICF editor section. ###ICF###*/


define memory mem with size = 4G;
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];

define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
place at address mem:( __ICFEDIT_region_RAM_end__ + 1 ) { block CSTACK };

define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };

initialize by copy { readwrite };
do not initialize { section .noinit };

place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };

define block RAM_Block with fixed order { rw, block HEAP };

place in ROM_region { readonly };
place in RAM_region { block RAM_Block };

要は,もともとの .icf ではデータ・ヒープ・スタックを連続領域にとっていたのだが,STACK を独立させて 0x20005000 から サイズ 0 で(笑) 固定的に取っただけ.
てか,gcc のリンカスクリプトはドキュメントが充実してるし高機能だし楽なんだけど,ツール独自のリンカスクリプトはわけが分からん…

2008年5月31日土曜日

Gyao 動画を携帯で見る(2)

 810P で動画を見る事にこだわってみるテスト.PSP だとポケットに入れていくわけにはいかないし,重いし見るとき手が疲れるし.

 というわけで安直な方法で,.MP4 を 10分単位でファイル分割してみる事に.810P にはファイル連続再生機能があるので,これでもまぁ支障はないだろう.
 で,Yamb というフリーソフトを見つけてきて分割してみたが,分割された動画の再生が途中で終わってしまうので,うまく分割できていないようだ.それよりも驚愕の事実発覚.分割されたファイルには 001, 002, … という風に連番がつくのだが,810P の連続再生では,その番号の大きいほうから小さいほうへ再生する事しかできない.なんじゃこの仕様は.まともなプレーヤー実装する気あんのか佐江戸のやつらは (- -メ むか

 この事実を知った時点でファイル分割は萎え萎えになったので,別の案を探してみると,.MP4 にはチャプターを打てる仕様があることがわかり,しかも Yamb でチャプターを打てることが分かった.でも Yamb ではうまくいかなかったので,MP4Box のコマンドラインオプションで直接やってみた (Yamb は MP4Box の 単なる GUI ラッパーなので).が,PC のプレイヤーではチャプターを認識できたのだが,810P では認識できなかった_| ̄|○

 あー,残された手段は,ffmpeg の範囲指定エンコードで,細切れにエンコードしていくバッチファイルとか作るしかないか(゜ーÅ)ほろり

伊勢志摩パールロードツーリング

dadabota さん主催の伊勢志摩パールロードツーリングに参加してきました.
9:30 出発のところを 8:40 に集合場所に着いてしまって「早すぎた~」と思ったら,自分は最後から 2番目でしたw

パールロードに向かって前進~

展望台に到着.

海の水平線まで見える快晴で,最高の見晴らしでした.

と,最高の景色そっちのけで車談義に花を咲かせる人々w

昼食の写真は取り忘れたのですっ飛ばして,最後は赤福餅の総本山に行ってまいりました.
赤福氷 (赤福餅内蔵抹茶カキ氷) はなかなかうまかったです.

今回のツーリング軌跡.
今回は高速の割合が多かったので,距離の割りに楽でした.

2008年5月26日月曜日

Gyao 動画を携帯で見る

 Gyao では SuperGT がノーカットで放送されているので,毎回ありがたく見させてもらってるのだが,昔は低 bit レートの配信もやってくれてたのに今じゃ bit レートが一種類しかないので,ウチの非力回線では動画がカクカクでとても見れたもんじゃない.

 仕方が無いので,GetASFStream でファイルに落としてから見てるんだが,「わざわざファイルに落としてるんだから,PC の前にへばりついて見ることもあるまい?」と思った.ちょっと前までは,PC で録画した .avi を PSP 用に変換して見てたんだが,今回初めて 810P での視聴に挑戦してみることに.

 で,とりあえず何も考えずに「携帯動画変換君」に .asf を突っ込んでみたら,何事も起こらなかった(笑) その他の「asf MP4 変換」でググって見つかったツールでも試してみたけど,ことごとくダメ.それもそのはず,この辺のツールはほとんど ffmpeg.exe を内部で使用していて,ほぼ GUI の違いでしかないのね (たぶん).
 
 んー,と思って,readme.txt 見てみたら,「AviSynth 入れれば変換できるかもしれない」みたいなことが書いていたので,入れてみたらビンゴ! 無事変換できるようになった.
 あ,ただ,自分の環境には,DirectShow 経由でいろんなフォーマットが扱えるようにいろんなもん入れてるから,単純に AviSynth 入れるだけでいけるかどうかは不明.あと,.asf は Automate UnDRM で DRM 解除してから変換したが,DRM 解除なしだと当然変換できなかった.

 これで,PSP 持ち歩かなくても携帯で動画が見れるようになったヽ(´ー`)ノ

-----
 …と思ったけど,重大な欠陥発覚.
 途中まで見た続きから再生する機能も,指定の時間までジャンプする機能もない.すなわち,途中から見るには早送り (約 5倍速) を使うしかない.これでは時間がかかりすぎて使い物にならねー┐('~`;)┌
 動画を 10分毎に分割するとかすれば多少マシになりそうだが,そんなめんどくさいことするよか,素直に PSP で見ます… .MP4 が再変換なしで PSP でも見れたことが唯一の救いか.
 再生ハードとしては 810P でも何の不満も無かっただけに,惜しい… ソフトの Ver.UP なんて期待できねぇしなぁ.

2008年5月24日土曜日

ARM 基盤に SD カードスロット装着

デザインウェーブマガジン 5月号の ARM 基盤用追加部品が届いたので,ハンダ付けしてみた.追加部品は,マガジンに載っていた販売サービスではなく,ツクモロボット王国で買った.こっちのほうが送料が安かったので.


で,チャッチャとハンダ付けして,ハンダ付けがうまく行ってるかどうか確認するために MassStorage.dfu を焼きこもうとして,DfuSe Demo に MassStorage.dfu をロードしたら,

「This file doesn't have a correct format...」

工エェェ(;゚Д゚)ェェエ工!?


まさか編集者も収録ファイル間違えるなんてことはしないだろうし,そんなことしたら web 上で祭りになってるはずだし,メッセージをググって見てもそれらしい人は皆無.何で俺だけ…(゜ーÅ)ほろり

で,ふと思いついて,CD-ROM 上のイメージファイルを HDD にコピーして,それをロードしてみたら OK.なんと,CD-ROM 上のファイルを直接焼きこもうとすると NG だった.こんなこともあるんやねぇ…

てなわけで手持ちの SD カードを試してみたら,3枚中 1枚しか正常アクセスできなかった.認識率ひくぅ!!Σ( ̄□ ̄; せっかく 8MB のゴミ SD カードを活用できるかと思ったが,こいつは使えなかった…

まぁ,一通り動くことは確認できたので,お次は SD カード上に置いた FW を SRAM にロードする仕組みを作らないとな.何回も chip 上のフラッシュを書き換えるわけには行かないので.

2008年5月19日月曜日

MAPLUS2 起動時間短縮計画

2chの下のカキコを見て,自分も title.pmf の置き換えやってみた.

836 名前:名無しさん@お腹いっぱい。 投稿日:2008/05/16(金) 04:58:04 nXzh70j2
ま、そうなんだよな
PSP側がGPSユニットを認識した時点で、捕捉開始するような仕様なら
意味があるのだろうが、どう考えてもデメリットの方がでかい。
ちなみに、title置き換えしただけで「○ボタン押せ」って警告画面までぶっ飛ぶから、
15秒近くの短縮にはなる。
けど、逆にいうと、GPSの捕捉完了にかかる時間が、
それくらいは必要だとEDIA側が考えてるって事だと思うんだよね。

上のカキコのとおり,起動時間早くしたところで GPS 捕捉時間が早くなるわけではないし,maplug 使ってるならどのみち放置するだけなので,別にやらなくてもいいのは分かってるのだが,EDIA が意地でもタイトル画面見せたいのなら,こっちは意地でも消し去ってやるってな感じ?w

で,上のカキコの「デメリット」とは ISO の再構築の手間がかかることをさしていると思うのだが,プラグインで sceIoOpen() を hook して,title.pmf が open されようとするときに別ファイルを open してやれば,プラグイン導入だけでファイルの置き換えができるので,手軽だろうと.
で,やってみた.

1. 0バイトの title.pmf
→最初の警告画面まで吹っ飛ぶが,その後のロード中 (右下に赤と白のバーがピロピロするやつ) が永遠続く
結果: 失敗

2. title.pmf を 64x64・12フレーム・無音・真っ黒 の dummy.pmf に置き換える
→dummy.pmf の再生は一瞬で終わり,その後 title2.pmf (犬とかが走り回ってる動画) が再生され,それの再生が 8秒間ほど終わらないと START が押せない
結果: 置き換え自体は成功だが,時間短縮になってない

3. title.pmf と title2.pmf を dummy.pmf に置き換える
→dummy.pmf が永遠に再生され,START が効かない
結果: 失敗

完敗っす(゜ーÅ)ほろり


気になるのは 2. の挙動で,title.pmf の再生時間が大体 8秒なのだが,2. では title2.pmf の再生が始まってるにもかかわらず START が 8秒後にしか効かないということは,.「pmf の再生」と「8秒待ってから START ボタンを認識する」が別スレッドになってるのかもしれない.

-----
ふと思ったが,例の追加ナビ音声をばらして MS に入れておいて,あるナビ音声を sceIoOpen されるのを hook して MS のナビ音声にすげ替えれば,面白い事態になるんじゃ…?

2008年5月11日日曜日

ntp.conf の罠

最近,録画 (TV キャプチャボードを使った PC での録画) の冒頭が切れるようになった.

ちょうど,グラフィックボードの交換と発症時期が重なっていたので,これが原因かと思って録画時間を早めに開始する措置をとっていたのだが,ふと時計を見ると,1分遅れてるやん…なんで?(;´д⊂)

自宅 LAN 環境では,Linux サーバに ntpd を立てて WinXP と同期させているので,時刻ずれとは無縁のはずだったのだが… 改めて Linux のログを確認すると,1ヶ月以上前から Linux サーバが参照している上位 ntp サーバとの同期に失敗している.しかも ntp.conf の設定が前設定したのとえらい違うぞ? しかもしかも,前設定した内容が ntp.conf.sv なんてファイルに勝手にバックアップされてるぞ?

と思って調べてみたら,引っかかったのがここ.DHCP 使ってると勝手に ntp.conf が書き換えられてしまうのね.
そういや,ntp.conf の作成日時が前回リブートした日時と一致してるわ.

2008年5月10日土曜日

LuaPlayer バージョンアップ計画(2)

今日試してみて分かったこと

・System.loadPrx() は,ただ単に prx をロードして実行するだけ.prx 内のコードを Lua 側から呼び出したりできるわけではない.(何に使うんだ?)
・v0.20 では loadlib() が使えて,これがやりたいことそのものなんだけど,HM6.5 ではまだ使えないみたい.

というわけで,今のとこ GPS 機能を prx 化して LuaPlayerHM で使うことはできなさそう(゜ーÅ)ほろり

2008年5月8日木曜日

LuaPlayer バージョンアップ計画

 LuaPlayer が v0.20 からなかなかバージョンアップされないなー,と思ってたら,別のチーム? が作った LuaPlayerHM って言うほうに主流が移行していたのね.知らんかった.

 で,LuaPlayerHM だとFW3.x 系でも動く.ということは,usbgps.prx も同時に動かせるはず.でも今のところ,LuaPlayerHM のソースコードは公開されていないので,LuaPlayer に直接 GPS 関係のコードを埋め込むわけには行かない.System.loadPrx() で GPS モジュールをロードできるようにしたほうがいいだろうな.その方が他の人も使えてうれしいだろうし.

 てなわけで早速 LuaPlayerHM を導入して,(GPS のコードを殺した) データロガープログラムを実行させてみたら,「System.sioInit() は FW2.0 以下でないと動かないよ」と出て死んだ… 別に 3.x で sio が使えない理由は無いと思うのだが (実際やってるし).
まぁ,これもシリアル受信割込みを使用した prx 作って System.loadPrx() できるようにしたほうがいいだろう.
 余談だけど,Lua って組み込み済み function もユーザ定義 function でオーバーライドできるんだねぇ.例えば,

System.sioRead = function ()
…独自コード…
end

とか.ユーザ定義 function 内で,loadPrx() したほうの sio 処理を呼び出すようにしとけば,今までの Lua コードはほとんど変更しなくて済むから便利.

とか考えつつ,GPS と シリアル通信関係を prx 化できるかどうか,検討中.
いつまでも CFW3.30 にしがみついてるわけにもいかないしね.

2008年5月6日火曜日

これは酷いwww

 美浜サーキットでの走行会があったので,再び GPS ログを撮ってみたのだが…


 これはヒドイwww

メインストレートとバックストレートが完全に重なってるし.
各コーナーも,ライン取り見るとかそんなレベルじゃないな.

やっぱ GPS のデータだけでは精度に問題があるか.

2008年5月1日木曜日

人生初赤旗中断

三十爺さん主催の美浜サーキットの走行会に ozzinger さんと参加してきました.

 当日は残念ながら雨予報だったので,屋根つき駐車スペースを get するため無理言って 30分早く行くことに.その甲斐あって無事屋根スペース get! 気温も高くなく,参加台数も少なめだったのでタイム更新には好都合!

 と気合入れたら,開始 2周目で刺さる勢いでブレーキロックさせて,「今日の(´・ω・`)ショボーン ネタはこれで決まり!」なんて思ってたら,3本目にやっちまいました赤旗中断w
 深い草地に突っ込んだらタイヤが滑って脱出できなくなりました.何回かもがいているうちに幸い自力で脱出できましたが,PIT での皆の視線が痛い…
 ああ,そんな目で僕を見ないで(;´д⊂)

 その後は小雨がぱらつく雨模様でしたが,ギリギリ路面はドライを保ってくれたようで.
 それと,前回と今回,ozzinger さんの隣に乗せてもらって感じた「後ろを滑らし気味に走る」を自分なりにまねてみたら,速いかどうかはともかくなんかめっちゃ楽しい(笑) そのおかげか,前回なしえなかった 50秒切りを無事達成ヽ(´ー`)ノ
 ozzinger さんも○○○一位を Get されたようで(笑)

 15分x7本も走ってへとへとになったあとは,湾岸長島 PA の足湯で疲れを癒しました.

 ozzinger さん,ご一緒していただきありがとうございました~

【一部始終】
お口お目直し】

2008年4月28日月曜日

大台ケ原~下北山ツーリング

鈴スカスレの大台ケ原~下北山ツーリングに参加してきました.

これは針TRS での集合の様子.
ノロケンさんは前回の走行会がよほどお気に入りなのか,ゼッケンをつけたまま登場ですw

途中の道の駅で何人かの方と合流.
ここら辺は吉野杉と,水がきれいなことで有名らしいです.

大台ケ原に到着.雲ひとつ無い晴天で,空気も澄んでいてめちゃめちゃ気持ちよかった!

前回の美山と同じ構図ですが,パチリとな.

昔お見かけした,ガルウィングドアのセヴン.
今回はバッチリカウルオープンの状態を撮れました.

お次は下北山で昼食.

おなかいっぱいになった後は,結構なクルージングスピード(笑) で解散場所の針TRS を目指します.

今回のツーリング軌跡.
370km 走りました(笑)

めっちゃ疲れた~

2008年4月19日土曜日

Phun で遊んでみる


Phun なる 2次元物理シミュレーションソフトソフトがある事をニコニコ動画で発見したので,遊んでみた.

物理 sim といっても実際はそんなに気難しいものではなく,現に作者は子供の教育用に開発したらしい.しかしその sim 性はなかなか奥が深く,凝ったものではピタゴラ装置や,実際にトリガーを引いて弾を発射できる拳銃のモデルまで作った人も!

というわけで自分も作ってみた.記念すべき第 1作目は,日本が誇るピタゴラ装置「ししおどし」(笑) この程度の物でもやはり奥が深く,ししおどし本体の支点の位置などを細かく調整しないと,うまく動作しない.一番苦労したのはウォーターポンプかな.最初は水車で水を持ち上げていたのだけれど,これでは水が大量に必要 (水の量が多いと sim が極端に重くなる) なので,なるべく少ない水で動作する機構を何度も作り直したりした.

こうして苦労してうまく動くようになったときは,感動っすよヽ(´ー`)ノ これはハマるわ(笑)

2008年4月16日水曜日

ETCカード 2枚目ゲット

ETC カード 2枚目 Get ヽ(´ー`)ノ

何のためかって言うと,通勤割引の適用条件は
・一回あたりの走行距離が 100km 以下
・6~9時で 1回,17~20時で 1回まで
となってるんですが,この 1回というのは車載器ではなくカードで管理しているので,100km 以下でいったん降りて,ETC カードを差し替えて再び乗れば,割引距離を 100km 以上に伸ばせるらしいです(笑)

何枚も作れば,400km 位まで伸ばせるかも? (んなやついねーw)

# でも高速代半額は大きいっすよ…

2008年4月15日火曜日

HUNDAI W240D 購入

HYUNDAI W240D が届いたので,感想なぞを.HYUNDAI の液晶なんて聞いたこと無いのでどうなんよ? と思っていたが,価格.com での評判では「コストパフォーマンスは高い」との事だったので,買ってみた.


まず画面が広すぎるぜwww 今までの画面 (1280x1024) 分のスペースのさらに横に TV キャプチャのウィンドウが置けるので,作業が快適! なれないうちは,気がつけば画面の左 2/3 しか使ってなかったりw 貧乏人がいきなり豪邸に引っ越して,そのスペースの広さを使いあぐねている感じ?
あと,アスペクト比表示モードが一通りはそろってるので,変なアスペクト比表示を強制させられることもなさそう.
スピーカーは使ってないけど,たぶんショボショボなんだろう.

まぁよかったのはこれくらいで,悪い点は,
・画面上端の液晶の色調が変
画面から 40cm 位の距離で使ってると,画面上端は視点から (俺感覚で) 15度くらい見上げる感じになるのだが,それだけの角度がつくと液晶の色が少しおかしくなる.離れて見れば問題ないのだが,今までの iiyama の液晶ではその角度ではなんとも無かったので,やはり LCD パネルが安物ということだろう.
・タッチパネル使いにくい
調整ボタンがタッチセンサーになっていて,デザイン的にこっちのほうがいけてると思ってる人もいるのかもしれないが,黒の前面パネルではどこ押せばいいのか見難くて使いにくい~
・中途半端に黒
このモニター,筐体全体が黒かと思ったら,前面パネルとスタンドだけが黒で,横とか裏から見ると白が目立つ(笑) 改めてカタログ写真見たら,前面パネルの横端に白い筐体樹脂が見えてるし.なんでこんな中途半端な… こんなんだったら白モデル出してよ.そっち買うから.
・アスペクト比切り替えは,ワンボタンで切り替えるようになってるとうれしかったな.ボタン余ってるんだし.
・入力切替の反応が悪い
「ピッ」と音はすれど,切り替わっていない場合が多々.HDMI→DVI に切り替えるときは 3回切り替えないといけないのだけど,ストレスがたまる~(--#

まぁ値段から考えたらおおむね満足っすかね~ LCD 変色の問題だけは失敗したけど,事前に知っていたとしてもこの値段なら買ってたと思うし.人によっては我慢できないレベルだと思うので,気になる人は実物見て判断したほうがいいかも.

2008年4月11日金曜日

今月の DesignWave マガジン

今月の DesignWave マガジンの付録,ARM が乗ったマイコンボードで,加速度センサがついていて,USB ケーブルで Flush 書き込みができそう(?) で,SD カードスロットを別途つければ,SD カードアクセスもできそうで,んーーーーこれは欲しい!

でもこれ知ったの今日だし,売り切れの中いろんな書店を探すのも面倒くさいので,HUNDAI W240D とともに Amazon でポチットな,してしまった.久々の衝動買いw

しかしこの ARM ボード,今使ってる H8 マイコンよりも高機能なので,いろいろできそうだな.っていっても,ネタ的にはデータロガー 2号機くらいしかないのだがw SD カードスロット足せば,これだけで G センサーのデータロガーができるし,A/D コンバータが 16ch もあるので,水温とか油温度とかアクセル開度とかいろいろロギングできたらいいな.

スポーツカート阪奈

 大将さん主催のカート公開コソ練会に参加してきました.

 今回はいつもの舞洲インフィニティサーキットではなく,その姉妹店で新しくオープンしたスポーツカート阪奈.初めて行く場所なので,ナビ (MAPLUS2) の案内するままに走ったら,えらい山道走らされてw 軽く30分ほど遅刻しゃった.てへ♪ (ホントスミマセン…)

 で,3回ほどフリー走行を行いました (まだレースパックは行われていなかったので).このコースでは誰もが初めて走るコースなので,完全にイコールコンディションということで,すなわち参加者のカート乗りとしてのセンスがはっきりします.そんな中注目の 1回目のトップタイムは…かっぱさんが 5周券の 7周目でたたき出しました!!(笑)
# その他の結果はどうでもいいですね.これ言いたかっただけだしw

 コースのほうは高低差がすごく,きつい下りのストレートエンドのコーナーなどでは根性が試されます.舞洲よりもコース幅が広く,抜きどころが多そうなのでレースパックでは楽しめそうかも.

# 帰り道でようやく 10,000km 達成!
# これもネットでお知り合いになれた方々と遊んでもらったおかげですヽ(´ー`)ノ

2008年3月26日水曜日

810P 用に ubiqun の設定変更(4)

 ubiqun を UTF-8 用に改造して,これで完璧! と思ったら,たまにメールが「続きを読む」になってしまう.しかも本文は明らかに短いメールでもそうなってしまうことがある.なんでだ~? と思ったら,なんと subject が 40bytes を超えるメールが「続きを読む」になってしまう事が分かったw Subject 全部を読みたいがために「続きを読む」するやつはおらんだろ~www
 
 と言ってもいられないので,再び ubiqun を改造して,MACRO_CUT() を UTF-8 対応に改造.ubiqun_lib.pl に当てるパッチを作ったので,欲しい人はどうぞ
バージョンは ubiqun_20030913 ベースで作ってます.

これと,user_phone.dat の [PHONE1] セクションとかで

phone_type = jsky_longmail_free

mail_optimize_zenhan = no
mail_jcode_3g = yes
macro_header_from_1 = &MACRO_CUT( $header{'FROM'}, 60, $setting{'mail_jcode_subject'} )
macro_header_from_2 = &MACRO_CUT( $header{'FROM'}, 60, $setting{'mail_jcode_subject'} )
macro_body_header_1 = $header{'X-UBIQUN-FILENAME'}
macro_byte_header = 100
macro_header_subject_1 = &MACRO_CUT( $header{'SUBJECT'}, 40, $setting{'mail_jcode_subject'} )
macro_header_subject_2 = &MACRO_CUT( $setting{'mail_split_now'} . '/' . $setting{'mail_split'} . ']' . $header{'SUBJECT'}, 40, $setting{'mail_jcode_subject'} )

に設定するのと,ubiqun_phonetype.dat の [JSKY_LONGMAIL_FREE] セクションに

mail_jcode_3g = no

を追加すれば,うまくいくはず.

ポイントは,
・macro_header_subject_* で,&MACRO_CUT( ..., 40, ... ) することで,subject を UTF-8 で 40bytes 以内にする
・macro_header_from_* も念のため 60bytes 以内にする
で,残りの macro_* 設定はお好みで.

2008年3月20日木曜日

データロガー + GPS 実戦投入


鈴鹿ツインサーキットでの走行会があったので,データロガー + GPS を実戦投入.GPS の捕捉も 1分ほどで終わり,GPS ウォームスタートの設定は有効なようだ.

で,車載映像と重ねてみたのが上の動画.やはり GPS の精度が不足気味で,走行ラインがぶれているようにみえる.実際はこんなにいろんなラインは走っていないのだが.やはり走行ラインの研究には使えないな.あと,(早送り動画だとわかりにくいけど) メータの描画と GPS の位置が 1秒ほどずれている模様.これは画像合成フィルタに時間あわせ設定を追加せねばなるまい.

かけた時間の割には,あまりうれしくないなこの機能_| ̄|○

2008年3月16日日曜日

Coppa di Kyoto - 車編

高雄パークウェイで開かれた Coppa di Kyoto というクラシックカーのイベントに行ってきました.

会場はスタッフの処理能力を超える車が集まったようで(笑)
見てるこっちは楽しかったですけど.

後ろの車 (何???) のミニカー.
おもちゃかと思ったら,燃料タンクらしきものがついていたので,ちゃんと自走するみたいです.

Type47.ヨーロッパベースのレーシングカーだそうで,直管マフラーとか(笑) エンジンキルスイッチとかついていて,さすがはレーシングカー.

リトラを固定ライトに改造したエラン.最初何の車かわかりませんでした(汗 走りも軽快に走ってましたよ.

フェラーリ DINO.
古臭さを感じない,きれいなデザインですね.

トヨタ 2000GT.

メッサーシュメット.めっちゃちっさい!!
タンデムに 2人乗車している様子は,まさにレシプロ戦闘機ですね.

新旧チンクチェント.
新型チンクは初めて見ました.