SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|

2004-06-20(Sun) 秋葉に買い物

  思い切って、前回構想した車載PCの部品を買出しに行ってしまう。

  まず、秋月でディスプレイとなる「LCDパネルキット」を購入。映りはソコソコであろうが、たった4,200円である。安い。ついでに18ピンと8ピンのICソケットを10個づつ買っておく。

  で、本体。マザーはファンレスのEDEN系と決めていたのだが、あまり置いてない。扱いのメインはゴツいマザーばっか。こんなすばらしいコンセプトの製品なのだから、もっと置いてもよいと思うのだが。みんな、そんなパワーが必要ですかね? 結局、秋月の隣の店に置いてあるのを確認し、値段比較のために秋葉を一回りして、どこにも置いてなくて、元の店で購入。

  元祖EDENでもよかったのだが、置いてなかったのでEPIA-ME6000というヤツにする。初めて買うDDRメモリ対応マザーなので、256Mのメモリも買う。ケースは小型で黒いACアダプタ対応のものにした。結局、一軒の店で全部買っちゃったぃ。まぁ、いいけど。

  帰宅して、カミさんの両親と父の日の食事会。初のSVXでの4人乗車である。しかし、やっぱり乗り降りは体制がキツいよね。

  晩は、手持ちの20Gの3.5HDDを合わせて組み立てる。CDはメインマシンのメビウスに引っ付いているヤツをバラして、インストール時だけ借りることにする。とりあえずWin2kをインストール。で、すかさず、マイクロソフトからもらったパッチCDもインストール……しようとしたら、画面モードを800x600にしろって? テレビだとツラいんだよね。たいして必要もないのに画面モードを固定するなっつーの。字が細かくてなんだかよくわかんないけど、ボタンが2つあったので両方押してインストール。たぶん、SP4となんかのパッチだろ。ぷん。

  ……とかやってたら、F1が始まった。ここ数戦、琢磨が調子いいのでチェックしてたんだけど、キチンと琢磨3位!! ひさびさに燃えてきたねーF1。

本日のデータ
走行+87.2km51,249km
備考イタリアンレストランの前だと
SVXはイタリア車のようでもあった

2005-06-20(Mon) 試験に落ちれど心は錦

  そういえば、先日受験した情報処理試験のDBスペシャリストの結果が発表になっている頃だ。ダメだったワカってはいるのだが、点数くらいは確認したい。しかしアレだ。ちょっと前は、試験を受けても合否しかわからず、試験問題の解答も採点結果の点数も確認できなかったが、ココ数年はネットからサクッと確認できるようになった。さすが情報処理試験の運営元であると手放しで褒めたい。

  結果は午前が655/800、午後Iが585/800、午後IIは午後Iが600未満だったので採点されず。うぉ!! 午後Iは意外と惜しかったんだッ!! くぅ〜、悔しい。問題が素晴らしかっただけに、なんの言い訳もできず、純粋に悔しい。技術士補の情報工学部門の試験を受けた時には、一般教科で軽く門前払いを受け、なんだよこのヘンな問題はッ!! と悪態をついてヤル気をなくしたが、そーゆー意味でも、情報処理試験は素晴らしい。来年こそ受かってやるゼ、とヤル気が出る。来年に受かれば会社から報奨金も出るしな。今回、受からなくて、むしろ儲かったってモンよッ!!(←チト負け惜しみ)。

  来年のリベンジを誓いつつ「イエローちゃん」にとりかかる。昨日、拍子抜けながらハード的な懸案が取り除かれたので、今日はPICに搭載するファームウェアの開発である。今回製作する「オナラ検知器」の仕事は大きく3つ。1)センサのヒータに8ms/250msの時間だけ1.6Vを作用する。2)センサ抵抗に5ms/250msの時間だけ3Vを作用し、電圧をA/D変換して取り込む。3)PWM制御によりアナログメータを稼動する。……である。

  なんでも電圧を連続的に作用するとセンサは壊れるらしいので、1ms間隔のタイマ割り込みを設定し、ヒータとセンサへの電圧作用タイミングを制御しつつ、メインルーチンでは主にアナログメータの制御を行っていればいいだろう。早速、以前に製作した「SHAKENS YOU UP」のタイマ割り込みルーチンを引用するため、マイCVSからチェックアウト。サクッとコピペする。とりあえず、割り込みルーチンでLEDをピカピカして、割り込み機能が動くことを確認するトコロから始めるのである。

  ……が、動かん。とりあえず130ms間隔で点滅を繰り返させているつもりなので、ピカピカしているコトくらいは目で確認できそうなものだが……どう見ても点灯しっぱなしなのである。えーい、オシロじゃ!! 出でよ、オシロッ!!

  画像の説明

  スパッと波形が出た。ちゃんと点滅しているようだ……というコトは、タイマ割り込みの設定はうまくいっているというコトだ。問題はその割り込みの間隔……30us。ちょいと早すぎ。つーか、1インストラクションサイクルが1usで、タイマカウンタが8bitなんだから、プリスケーラの設定に失敗してたって、割り込み間隔は256us以上になるハズなのに、30usって……なんで? プリスケーラの設定を変えて再度試してみたが、やっぱり割り込み間隔は30us……。

  ……おぉっと!! ここでオイラにOyasumiカウンタのオーバフロー割り込み発生だ。残念なことに、これはノンマスカブルなんだよな。ちゅーワケで、おやすみである。


2007-06-20(Wed) キーボード日和

  とりあえず

  先日、SlashdotJapanに「 キーボードの掃除は皿洗い機におまかせ」なんてトピックが立って、なんとなく気分がキーボード付いてしまった。

  画像の説明

  愛用のFKB8579<かきかけ>

  画像の説明

  画像の説明

  画像の説明

  画像の説明

  画像の説明

  画像の説明

  画像の説明 画像の説明


2009-06-20(Sat) ジャンク狙い打ち

  つーわけで、週末なので大須にジャンク漁りに行った。「イッペイもいくー」というので、イッペイも連れて行く。

  画像の説明

  まずは運よく、オモワクどおりUSBボールマウスが100円で入手できた。一方で、プレイステーションのコントローラも200円と激安。上下ボタンの反応が悪いという「好条件」付き。店員から「部品取り用ですが」と確認されたので「部品取り用ですよ」と答えて買ってきた。ほくほく。

  あとは、ケース用の座金付きLED。200円くらいはすると思っていたら、黄色ばかりながら、見切り品で50円だったので、6個も買ってきた。一方で、くやしいのは、サンワのゲームボタン。前回、買った店のすぐ脇で、こちらも見切り品ながらφ30が150円、φ24が90円。そのくらいで買えていたならば、6ボタンにはしないまでも、また、違った構成にしていただろうに。

  リード線は大量に使用したので補給用。580円。ツマミは今回のパドル用に大きめのヤツを買ってみた。240円。逆作用ピンセットは、最近読んだWeb上の工作記事でやたら便利そうだったので安いヤツを買ってみた。622円。

  帰り際、オモチャ屋でイッペイにバスを買わされた。うまいこと千円くらいのヤツで収めようとアレコレ持ちかけたが、ガンとして2千円弱の都バスを離さない。コノヤロ無駄に目が高いな。今回の買い物額の半分近くがバスかよ。まぁ、仕方ねぇなぁ、ボーナスだ。

  画像の説明

  帰って、早速マウスを分解し、作戦を練る……うむ、どうにか行けそうな気配。ボールの当たるローラの部分をチョン切って、ヤスって、ギアをハナクソボンド接着する。

  画像の説明 画像の説明

  とッ!! ここで中年力を発揮してみる……いやなに、単にハナクソボンドが乾くまで待つだけのことなのだが……昔は、ここで待てずに失敗したもんだ……

  「坊やだったからさ」

  画像の説明

  ……さて、今晩はグラIIでもやって寝よう……とッ!! ようやくクラブを抜け、ゴーファーへ。いやはや、結構、長い戦いだった。やはり、PCエンジン版グラIIのカバードコアのミサイルの判定は自機の後ろに大きすぎだ。今回、完全に回避を確信しつつ当たってしまい、思わず奇声を上げてしまった。ここに「PCエンジン版グラIIのビッグバイパーの後方排気炎には機体構造が含まれているから敵弾回避には気をつけろ」という遺言を残しておく……では。


2025-06-20(Fri) PCD(パブリック・サーキット・データ)フォーマットを策定

  開発中のゲーム「TopDrivin'」は、さかのぼれば「見せてもらおうかッ! WebAssemblyの性能とやらをッ!」から始まったプロジェクトだ。最近では「F1観戦に先立ってサーキットを体験したい」が目的になっているが。

  その点において「TopDrivin'」の圧倒的な利点は「ほぼコースデータを作る必要がない」という点である。空撮画像の上を走らせる、という都合からくる制限は少なくないものの、究極的には「スターティンググリッドの緯度経度情報」だけでレースゲームができてしまうのだ。ゲームシステムのプログラミングは好きだが、レベルデザインにまるで興味のない自分には、うってつけのプロジェクトである。

  そしてその開発中にもF1のカレンダは進んでいく。来週末はオーストリアGPだ。サーキットはレッドブル・リンク、と……コースデータもだいぶ増えてきたなぁ……このままmainに追記し続けるのもなぁ……Courseクラスに出すべきだよな……いや、そもそもデータは外から与えられるようにすべきでは……んをッ!? ならばJSON形式にして、ウェブ上に置く形にするのがよいのでは!?

{
    "name": "レッドブル・リンク",
    "grid": {
        "lat":  47.220048,  "lng":  14.765464,  "dir": 245
    }
}

  こうだ。これをウェブサーバに置いて、こんな感じにURIで指定してやると、ゲームが始まるようにする。

http://localhost/~user/topdrivin/?stage=http://localhost/~user/topdrivin/stages/red_bull_ring.json

  画像の説明

  コースの定義ファイルは、Courseクラスの初期化時に読み込まれる。面倒くさいことに読み込みは非同期処理なので、mainではCourse.data_complete()がtrueになるのを待ってからメインループを開始するようにしてある。

class Course extends BgRotnscl(Obj)
 
    query = new URLSearchParams(window.location.search)
    (it = query.get('stage')) and fetch(it)
        .then (response) =>
            response.json()
        .then (data) =>
            @data = data
        .catch (err) =>
            console.error('json parse error.', err)
 
    @data_complete: ->
        @data
      :
      :

  これの長所は、誰でもサーキットのコースデータを勝手に作って遊べるし、それを公開することもできる、というところだ。まさにオープンフォーマット、オープンデータである。昔、電脳倶楽部で提唱されたPDD(パブリック・ドメイン・データ)にちなんで、PCD(パブリック・サーキット・データ)と名付けよう。

  PCDフォーマットには、セクタ情報も含めることができる。向かって左から右にコースを横断する線分を定義することで、各セクタタイムを計測することができるわけだ。こんな感じに定義する。

{
    "name": "レッドブル・リンク",
    "grid": {
        "lat":  47.220048,  "lng":  14.765464,  "dir": 245
    },
    "sectors": [
        {   "l": [ 47.219976,  14.765222],  "r": [ 47.220080,  14.765181],  "name": "=Finish"       },
        {   "l": [ 47.225082,  14.755456],  "r": [ 47.225163,  14.755574],  "name": "-Sector 1"     },
        {   "l": [ 47.222460,  14.759733],  "r": [ 47.222409,  14.759600],  "name": "-Sector 2"     },
        {   "l": [ 47.222973,  14.769995],  "r": [ 47.222919,  14.769862],  "name": " dummy 25"     }
    ]
}

  しかし「『スターティンググリッドの緯度経度情報』だけでレースゲームができてしまう」という利点も維持されるべきだろう。なので、スターティンググリッドを中心とする18mの円から「出る」タイミングでタイムを計測するという機能も付ける。それにより「スターティンググリッドの緯度経度情報」の定義のみでも、ラップタイムは計測して競うことができるという寸法である。

  なんだかどんどん楽しくなってくるなぁ。