DOS とかで,config.sys をいじって○○を UMB にロードしたりとか,メインメモリの空きを 1バイトでも多くする事に命をかけてた事ってあったじゃん? アセンブラでも自己可変コードとか使ってクロック数単位で実行速度を上げたりとかしたよね.あ,俺だけ? はいはい,どうせあたしゃ変ですよ.
で,めでたく CFW3.30OE-A' に対応できた gpshook だが,どうもメモリがきついらしい.いや,単体だとまだ余裕ありげなんだけど,mp3prx がでかい (俺的にはこれははずせない) ので,もうぎりぎりっぽい.なので,gpshook.prx のサイズを小さくしようと,かつてのメモリ節約魂が復活したわけ.
で,いろいろ試して面白かったのは,整数/浮動少数演算が混在している箇所で,コードサイズが結構変わる.
例1)
int_a = int_val + float_val * 100;
-----
int_a = int_val + ( int )float_val * 100;
こりゃ当たり前レベルなので分かりやすい.浮動小数点演算を行う範囲が減ってるもんね.
例2)
unsigned int uint_val = float_val;
-----
unsigned int uint_val = ( int )float_val;
float_val が正数しかとらない場合,結果はどちらも同じだが,なんとこれもコードサイズが違う.
上のほうでは,なんか符号をいろいろいじるコードが余計についていた.
例3)
int int_val = int_val2 % 360;
-----
unsigned uint_val = uint_val2 % 360;
これも差がないと思ってたら,下のほうが小さかった.
とにかく,変数が signed か unsigned かだけでも 数10バイトの差が出てくる.
(あくまでも psp-gcc (MIPSコンパイラ) の場合だが)
たまには gcc が吐いたアセンブラを眺めるのもいいなぁとおもった.え,そんなことないって? はいはい,どうせあたしゃ変ですよ.
てか,gpshook.prx でちまちま削るより,mp3prx をいじったほうがザクっと削れそうだということに今氣が付いた.
2007年5月6日日曜日
コードを1byte小さくする事に命を賭ける
2007年4月29日日曜日
いまさら…

「がんばれ森川君2号」を購入.
なぜいまさらこんなゲームを?
それは今月の4月はじめ,俺が職場異動になった事に端を発する.
・
・
・
異動先に,「森河さん」という人がいたのだ.それ以来,その人を見るたびに「がんばれ森川君2号」が頭からこびりついて離れなくなったwww
ちょうど NHK で「運命の一手 渡辺竜王VS人工知能・ボナンザ」がやってた事もあって,AI にちょっと興味が出始めた事もあって,森川君探索の旅に Go!
といっても,PS1 のゲームなんか最近どこの中古ゲーム屋にも無いよなー.ましてや森川君なんてマイナーなゲーム置いてるわけがない… と出発前からあきらめていたのに,あったよ!! 一軒目に!! しかも驚きのバーゲンプライス \100wwww これは神が俺に買えといってるとしか思えない,というわけでさくっと購入.
で,2時間ほど薦めてみた感想.んーーーーーーーー,\100 だしあきらめも付くってもんよwww
ゲームの着眼点としては面白いのに,PS1 のハードの限界なのか,学習できる行動 (食べるとか投げるとか,10種類くらい?) が単調なのがゲームをつまらなくしてるなぁ.PSP とかで,もっと行動内容を増やした森川君3号でも作れば面白いのになぁ.
ドライブ2連発
それでもあまりにも天気がよかったので,幌を外して青山高原へ Go! 前回初めて行ったときは,霧だらけで意味が分からなかったのですがw 今回は雲ひとつ無い快晴で遠くまで見渡せます.で,こんなに風車があったんだなぁと初めて知りました(笑)
で今日も相変わらずいい天気なので,今日は奥琵琶湖パークウェイに Go! オープンで流す湖岸はサイコーヽ(´ー`)ノ パークウェイの入り口(東側) に着いたときに,「通行止め」の看板が.工エェェ(;゚Д゚)ェェエ工!? と思っていたら警備員らしき人が近づいてきて「一方通行なので反対から回ってきてください」と.やべぇやべぇ.無計画でドライブするもんじゃないですねw これから行く人は,西側からどうぞ~
気候的にも暑くも寒くもなく,オープンには最強の季節ですね.そーいや,エリ買った当初はオープンにする事をあんなにためらっていたのに,俺も大きくなったなぁ(゜ーÅ)ほろり
2007年4月25日水曜日
PSPデータロガー実戦投入
鈴鹿ツインサーキットでの走行会があったので,PSP データロガーを実戦投入してみた.ノート PC が持ち物から無くなったので,荷物量が減る減るw あと,ラップタイムが非常に見やすくなってかなりイイ.赤外線ラップタイマも調子がよく,今回は 1ラップも取りこぼすことが無かった.
それと,タイム計測の誤差も調べることができた.今回はコース公認の計測器も使用したので,それとの時間差を調べてみると,最大 1/100秒ほどの誤差.まぁ,パーソナルユースだからこんなもんでも十分っしょ.
だが実際に使ってみて問題点も分かった.ひとつは,カーステで音を鳴らすためのピンジャックがデータロガー本体に挿せなかったw どういうことかというと,1ラップ計測するたび,またはファステストラップが出るたびに PSP で音を鳴らして,タイム更新したかどうかを音だけで分かるようにしていたのだが,PSP シリアル通信ケーブルはリモコン端子に挿すので,当然 PSP からは音が出ない.そこで,データロガー側まで音声信号を引っ張って,データロガーにカーステのピンジャックを挿そうと思っていたのだが挿すスペースが無かったw こりゃ,データロガーのケース (\100均のタッパーウェア(笑)) を切り刻むしかないな.
もうひとつはもっと深刻で,上の動画を見てもらえば分かるように,映像とメーター描画の同期が微妙にズレている.これは,PSP がデータロガーからのデータを取りこぼしている事を示している.んー,バッファサイズは十分に取ったはずなのに… これは解析の必要ありだな.
2007年4月20日金曜日
データロガーのログから走行ラインをプロット

motec の web ページを見ていて,motec ではコース図を走行ログから作成できるらしい.GPS 付きの高価なデータロガーで走行ラインをプロットできる製品 →(DL1) は知っていたが,motec は GPS は無く(?),車速と Gセンサーだけでプロットしている?
ということは,Gセンサーを持っている我が自作データロガーでも走行ラインをプロットできるのでは? と思って,Excel であれこれとやってみた.
で,その結果がこれ.んーーーーーーー,ビミョーーーーーwww
結構いいとこまで行ってるんだが,走行ラインの研究にはちょっと使えないなぁ.Gセンサーの精度が悪いのか? motec ではどうやってあんなにきれいな走行ラインを描いているんだろう?
鈴鹿ツイン初走行!
一同集合後 2階のミーティングルームでスタッフの方に簡単な注意事項 & 昼ごはんの後,1組目の走行開始.僕は2組目なので 1組目の走行を 壁|ω・) カンサツ していたのですが,皆さん速い速い.「43秒台で走れりゃいいや~」と甘く考えていた僕に正体不明のプレッシャーがかかる(汗
で,ついに 2組めの走行開始.鈴鹿ツインサーキットは初走行なので,とりあえず飛び出さないことを第一にコースイン.んー,ストレートエンドのブレーキングポイントがようわからん(汗 けっきょくオーバーラン2回・スピン2回・ワープ1回(謎) といろいろフィーバーしてましたが,コースも広いので恐怖心も感じず楽しい!
同時走行も 5台までというマッタリとした雰囲気のなか,久々にスポーツ走行を楽しむ事ができました.
つ【動画】
2007年4月18日水曜日
PSP サスペンド/レジューム後の ファイルハンドル [解決]

gpshook.prx のログファイル破壊がやっと解決した.長かった…
結論から言うと,ちゃんと scePowerRegisterCallback は効いていたみたい.ただ,それのコールバック関数内でファイルディスクリプタを sceIoClose すると,なぜか死ぬとか,レジューム後にコールバック登録が無効になってるとか,いろいろわけの分からん現象がわんさかと_| ̄|○
この辺はドキュメントにも動作が記載されてないので,トライ & エラーで試すしかない.で,苦労しながらも一応うまくいったわけだが,これで合っている確証もないがもういじりたくないのでこれでよしとしようwww
BIOS 3.30 OE-A で動かないとかのうわさもあるが,自分は FW アップデートする気がないので別にいいや(笑) これにて gpshook.prx の開発は終了っと.
2007年4月17日火曜日
PSP サスペンド/レジューム後の ファイルハンドル
ほぼ完成したはずの gpshook.prx だが,重大な問題がある事発覚.
ログ取り中に PSP をサスペンドすると,ログファイル (の残骸) が,破損クラスタになってしまう.すなわちログが失われてしまう.これは痛い.PSP をサスペンドすると,open 中のファイルハンドルがクローズされるのは結構有名な問題らしいのだが,write モードで開かれたファイルを中途半端に close してくれやがる(;´д⊂)
いちおう,サスペンドに入ろうとするときにそれを検出する手段 (scePowerRegisterCallback) はあるのだが,プラグインでこの API を使ってみても,うんともすんとも検出してくれないです…
おそらく,MAPLUS が scePowerRegisterCallback して,gpshook.prx が scePowerRegisterCallback したのが解除されているのかな?
( ̄-  ̄ ) ンー どうしたものか.
2007年4月10日火曜日
MAPLUS オービスアラーム プラグイン公開
MAPLUS オービスアラーム プラグイン ( gpshook.prx ) 完成〜ヽ(´ー`)ノ
欲しい方はこちら→http://park.geocities.jp/maplusconv/gpshook.html
エリにはレーダーをつけていなかったので今まで心配だったのだけど,これでちったぁ気休めになるかも.しかも,オービスアラームが付いてるハンディナビって結構貴重じゃね?
最初は見にくかった MAPLUS の地図も有志の手によりだいぶん見やすくなったし,オービスアラームも付いたし,メーカー出荷時に足りない機能を後付でどんどん足していける PSP ってホントにおもろいわ.ルート案内が弱いとかいろいろ弱点もあるけど,これだけ遊べたら十分っすヽ(´ー`)ノ
2007年4月3日火曜日
MAPLUS オービスアラーム プラグイン作成中 その2
MAPLUS オービスアラーム プラグイン ( gpshook.prx ) の開発を進める.
うまく行ってなかったサウンド再生だが,なんかいいサンプル落ちてないかなーっと何気なく mp3prx のアーカイブを覗いてみたら,あったよソースが… ビバ,アメリカ人(?) ヽ(´ー`)ノ 日本のフリーソフトだとソース付きなんて皆無だが,あっちの人はやっぱりおおらかだなぁ…
でもって,その中で使われている sceAudioChReserve() と sceAudioOutputBlocking() を使ってやってみたら,うまくいった.mp3prx と共用・HOMEで終了・サスペンド後に復帰 どれも死なずに動いている.これでまた大きく一歩前進ヽ(´ー`)ノ
今週末には gpshook.prx 完成しそう.

