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|

2016-10-03(Mon) 防御力アップギアをゲット

  以前から、スプラトゥーンのゲーム内のアイテムである「ヤコメッシュ」を自作したいと思っていたのだが、考えてみたらオフィシャル版のグッズもそう高いものでもなく、ちょうど近所のパルコに店が出張してきていたので、土曜日に立ち寄って買ってみた。

  画像の説明

  象徴的なオレンジと青。ガキの分とオレの分。ちなみに、ちょっとした都合で、いつもレッドハットのキャップを被って仕事をしているのだが、今日からはヤコメッシュを被って仕事。うふふ。

  そのうち、ヒト移動速度アップのサブギア缶バッジをつけて、防御力に加え、仕事の速度も向上する予定である。


2016-10-04(Tue) sdccのcharがunsignedになっててドハマり物語

  ラズベリーパイとPIC間でI2C通信を成立させたくて、PIC用にI2Cスレーブのスタックを、純ソフトウェア実装で書いていたのだが、スレーブとしてとりあえずの受信に成功したところで、ライブラリ化するため、コードを分割しようとしたところ、これがどうにも動かなくなってしまった。

  どう考えてもロジックに誤りが見つからないので、苦し紛れに、ライブラリ化の際、ついでにchar型に変更した部分をunsigned charに戻したところ、動くようになった……って、ナニそれ!?

  生成されたアセンブラコードに降りていくと、確かに符号付きとして数値比較しているらしきコードが見当たらない。すわコンパイラのバグか!?と、思って「sdcc signed char」でググってみたところ、charはunsignedとして扱われる旨の情報がある。ウッソ!? いつからッ!?

News
  June 12th, 2016: Small Device C Compiler 3.6.0 released.
    SDCC 3.6.0 Feature List:
      char type is now unsiged by default (old behaviour can be restored using --fsigned-char)

  ……って、いまさっきからなのかよッ!!

$ cat test.c 
#include <stdio.h>
 
void main() {
	char           x = -1;
	signed char   sx = -1;
	unsigned char ux = -1;
 
	printf("  %lu %x\n", sizeof(x),  (unsigned char)x);
	printf("s %lu %x\n", sizeof(sx), (unsigned char)sx);
	printf("u %lu %x\n", sizeof(sx), (unsigned char)ux);
 
	printf("  %x\n",  x > 0);
	printf("s %x\n", sx > 0);
	printf("u %x\n", ux > 0);
}
 
$ ./a.out 
  1 ff
s 1 ff
u 1 ff
  0
s 0
u 1

  当然ながら、gccならcharはsignedだ。

  「0, 1, stop condition」の3値を返す関数だったので、オシャレに負数を返すように変更したことが裏目に出た。しかし、char型がデフォルトでunsignedなんてCの仕様として許されないんじゃねーのか? と、K&Rの第2版をパラパラ……「このcharが符合付きか符合なしかは機種によるが……」なんですか、そーでしたか……私が悪うござんした。

  ちなみに、最新版のマニュアルでは以下のようなコンパイルオプションの説明がある。

--fsigned-char
By default char is unsigned.
To set the signess for characters to signed, use the option --fsigned-char.
If this option is set and no signedness keyword (unsigned/signed) is given, a char will be unsigned.
All other types are unaffected.

  以前は、ちょうど逆のコンパイルオプションがあったようだ。

--funsigned-char
The default signedness for every type is signed.
In some embedded environments the default signedness of char is unsigned.
To set the signess for characters to unsigned, use the option --funsigned-char.
If this option is set and no signedness keyword (unsigned/signed) is given, a char will be signed.
All other types are unaffected.

  単にcharと書かず、signed char, unsigned charと明示的に宣言しておけば間違いはないようだ。

  しっかし、この変更、ホントに必要だったんかなぁ。これまで書いたコードが動かなくなりそうでイヤやわ。とりあえず、自分が忘れないように、ここにしっかりとメモしておく。ほんっと、まったくもぅ、まったくもぅ、まったくもぅだよ、まったくもぅ。


2016-10-07(Fri) ひさびさに鈴鹿でF1を観る

  ……といっても、金曜日のフリー走行だけなんだけど。

  最近、毎年恒例のように、鈴鹿にSUPER GTの予選だけ観に行っているが、たまにはF1も観に行こうということで、仕事と学校をサボって家族で観に行った。

  思えば、高専の学生時代、F1開催時の交通渋滞の調査研究のため、91年(確か90年も?)と鈴鹿に行ったが、本戦の間は外で数取器をカチカチやるという、超絶的屈辱プレイ。最後に「セナがベルガーに譲ったらしいよ」と、友人から聞いたのが記憶に残っている。

  その後、就職して、93年, 94年には、ちゃんと本戦を観に行った。2回ともグランドスタンドの右側の辺り。ずっとアレジファンで、雨が上がったあたりで、マンセルに抜かれてしまい、ガッカリしたらペナルティの関係で抜かれてなかった、というのが記憶に残っている。

  あれから22年ぶり。毎年のSUPER GTの予選の状況を鑑み、さすがに金曜日なら、そこまでは……と、思ったら大誤算。まずは、平日なので23号の混雑っぷりがハンパない。6時前に出たのに、いつもの倍くらい要して、9時過ぎの到着。人の数もハンパない。ビビって稲生駅付近の駐車場に車を停めたので1000円で済んだが、先の方はエラい額になっていた。ちなみに、金曜日券は前売りで4200円、小学生は当日券しかなく800円。高ぇよ……。

  画像の説明

  最近、ぜんぜん観てなかったので、フェラーリ以外の車がわからないというナメっぷりだが、かなり勢力図が変わってるのね。チーム数は少ないし、マクラーレンは黒く、ウィリアムズは白く、ルノーは黄色く、上位に居ない。おまけに、スポンサーロゴのサミシいこと。しかし、F1カーが走りだすと、やはり格別の迫力だ。うむうむ。

  午前のセッションは、最終コーナ、午後のセッションは、いつものS字の辺りで観る。なんとなく、写真を撮らなければならない気がして流し撮り。一番マトモなのがこれ。

  画像の説明

  ガキは午前のセッションすらロクすっぽ見ずに、工作をしていた。んが、なかなか良いデキ。車がフェラーリなのは、やっぱりフェラーリ以外の車がわからないという理由のようだ。

  画像の説明

  やはり、予選なり、本戦なり「戦い」がないとイマイチ盛り上がらない。そのうち、改めて観に行きたいとは思うが、日本人が出ていないわ、テレビ中継をヤメてしまっているわじゃ、日本での人気がジリ貧なのもやむ無しだわねぇ。


2016-10-08(Sat) 「ブルーエアセンス フィルタ 交換 ランプ 消し方」

  ちょっとした都合で、家の中にブルーエアの空気清浄機が3台もあるのだが、今回はブルーエアセンスフィルタを交換。

  いきなりだが、届いた箱がマトリョーシカ状態であることに閉口。さすがに、一番外側の箱はいらんやろ……。

  画像の説明

  この手の空気清浄機は、稼働時間を計測していて、一定時間後にフィルタ交換ランプを点灯するのが常なのだが、ランプを消灯するには消灯操作を行わなければならない。しかし、このブルーエアセンスには、ボタンの類が一切なく、動作モードの切り替えすら、天板の上で手をソヨソヨして操作する設計。いったい、どうやったら交換ランプを消灯できるねん!?

  ブルーエアのサイトに行くも、デザインのオシャレさの反面、中途半端な情報ばかりで、目的の情報はなし。結局、アマゾンのレビュー欄に答えがあった。

  天板の赤いランプの部分にセンサがあり、そこに指を置くと、ランプが点滅を始め、それでも指を置き続けると、ランプが消える。

  んなこと、わかるかッ!!


2016-10-15(Sat) PICマイコンをつかったシンプルゲームをつくった

  ガキの小さな頃から、トヨタ産業技術記念館で開催している「週末ワークショップ」という工作教室を横目で見ていたのだが、ようやく小学校中学年くらいから参加可能なプログラムが増えてきて、今はかなりの頻度で通っているオイラとガキなのであった。

  2時間のプログラムなので、正直たわいもないものもあるが、なかなかどうして、大人でも感心するような内容のものも少なくない。オイラは楽しみの範囲の中で学ぶことこそが至高だと思っているので、ここしばらくの間、目が離せないイベントなのである。

  で、今回のプログラムは「マイコンをつかったシンプルゲームをつくろう」だ。

  画像の説明

  内容は、主にハンダ付け。かなりしっかりとレクチャしてくれた。各机に装備してあるのはハッコーのステーション型、糸ハンダはリール巻と本格的。普段、温調ハンダゴテ縦巻きのハンダを使っているオイラからすると、ちょっとうらやましいほど。

  プログラミングに関する詳しいレクチャはないが、1秒間に3百万回(※)の足し算ができるとか、起動時にオープニングメッセージに任意の内容を書き込める、という辺りで多少フォローしていた(※厳密には4MHzだと百万回のような気もするが)。

  ガキもちゃんと時間内に完成させ、ちょっとしたインベーダのようなゲームで遊んでいた。ハンダ付けも、割とキレイにできている。7x5のLEDながら、そこそこ遊べるゲームになっているのがたいへん素晴らしい。

  画像の説明

  ちなみに、使っているPICは16F88だった。帰路、ガキにダイナミック点灯について説明しつつ、家に帰ったらプログラムを覗いてやろうか、などと言っていたのだが、自作のPICライタは、16F88には対応してなかったのであった。うぅむ。


2016-10-20(Thu) 東京下町散歩

  東京に出張があったので、昔に何度か行った「亀戸餃子」で晩飯にすることにした。

  調べると本店にはピュアに餃子しかなく、閉店も早いので、支店の方に行くことにする。錦糸町か。場所のチェックがいい加減だったので、店が見つからない。ガラケーで検索してどうにか行き着く。んが、あれ? ここ? 来たことのない店構えだ……。

  画像の説明

  考えてみたら、よく行っていた支店は「両国店」だった。支店はひとつしかないと思い込んでいたので、検索してパッと出てきた「錦糸町店」だとばかり思い込んでいた。どおりで、町並みにも見覚えがないはずだ。餃子はうまかったが、味の方もすっかり記憶の彼方。んが、また来たい。

  泊まりは平井だったのだが、駅前の「駐輪場」にドギモを抜かれた。なにこれ、いったいどうなってんの? こんなゴミゴミした街なのに、未来が来ちゃってんの?

  画像の説明

  家に帰って調べたら、結構話題になっている駐輪場の形のようだ。最近、名古屋にも出来たらしい。すごいな。何と言うか、こういうCDチェンジャがあったよな。

 

  最小限のスペースで、雨にも濡れず、盗難の可能性もなく、出し入れも瞬時。考えた人の頭が良すぎて、ちょっとくやしいほどだ。


2016-10-21(Fri) ナツゲーミュージアムはいいぞぉ

  東京に出張があったので、前から行きたかった「ナツゲーミュージアム」に寄ることができた。

  画像の説明

  場所のチェックがいい加減だったので、ちょっと迷ってしまったが、「ゲームコーナー」の看板やら、ポスターがベタベタ貼ってある感じやら、ボヨボヨという低音を周囲に染み出させているやら、かなりイイ雰囲気を醸している。

  中に入るとハンパなく狭っ苦しく、そこがまた懐かしい。しかも、ラインナップがまた、絶妙。

  まずはダライアス。例によってエキストラバージョンかを確認せず始めてしまい、ABEHでレーザー化、ピラニアで爆死。フロントラインは、自分の手榴弾での爆死を挟み、戦車戦まで。なぜか最近よく見るミッドナイトレジスタンスは電気人間の上のヘリまで。ノーティボーイは1面もクリアできず。イスパイアルは途中で飽きた。

  特筆すべきはA-JAX。椅子に線が繋がっていてボディソニックありなのだ。効きの量がまた絶妙。A-JAXはゲームの内容がアレだが、音楽はイイんだよな。3面しか行かなかったが。

  それから、子供の頃に妙に難しそうに感じて手を出さなかった記憶のあるセガのサムライ。下から刺すといい、と知識を付けていき、最初のボスは倒した。まぁ、順当に面白くないが、40年ぶりにプレイできたのはうれしい。

  最近、レトロゲームはあちこちでフィーチャーされていて、あまり珍しくもなくなっているが、ずぅーっと動態保存を続けてほしいもんだなぁ。


2016-10-22(Sat) 再び、あそぶ!ゲーム展であそぶ!

  昨日に引き続き、東京に出張があったので「あそぶ!ゲーム展 ステージ2」を観に行ってきた。

  正直、前回に比べると、展示ゲームは「当時に親しみすぎた&割と今もプレイ可能な」ラインナップなので、モチベーションはかなり低かったのだが、行っておかなければ後悔しそうだ、ということで今回も開場の9時30分と同時に入場。

  <かきかけ>

  画像の説明

  画像の説明

  画像の説明

  画像の説明

  画像の説明

  画像の説明

  画像の説明

  画像の説明

  画像の説明

  画像の説明


2016-10-29(Sat) 秋月の彼岸花、芽が出てた

  8月の後半、秋月で部品の通販をする際、ついでに購入し、花壇に植えておいた彼岸花の球根だが、気がつくと2株とも芽が出ていた。

  画像の説明

  しばらく動きがなかったので、初期不良か、接地が不十分だったのか、と思い、ややガッカリしていたのだが、改めてデータシートをよく読むと、冬から春にかけて葉を出し、夏にいったん枯れ、秋に花を咲かせるのだとか。今回、球根はチャージ量が十分でなく、花を咲かせるのを見送ったということらしい。なるほど。

  この調子だと、少なくとも大きい方は、来年には花を咲かせてくれるんじゃないかと思う。


2016-10-30(Sun) WiiUゲームパッドの左スティック修理が超絶難度だった件について

  今年の1月中旬から、本格的にスプラトゥーンにハマり、もう1年近くも遊んでいる。プレイ時間は500時間に近づいており、これまでの人生で遊んだゲームの中でダントツのプレイ時間であることに間違いなく、まだしばらくはこの調子で順調に人生を無駄にしていく見込みである。

  しかし、恥ずかしながら、いまだウデマエはSの維持が微妙といったところ。得物がハイドラントカスタムなので、味方の強さの影響を受けやすいが、明らかな戦犯をやらかす、という回数は減りつつある気がしている。まぁ、既におっさんなので、反射的な対応スキルは絶望的であり、こんなもんだろう。

  と、そんな戦いを続ける毎日なのだが、今月の頭くらいから左スティックの動きが怪しくなってきた。最初に気づいたのはイカボールのプレイ中。左への動きが大きくなり、スッと止まらず、ボールのトスに失敗するのだ。

  どうも、WiiUにおいては、スティックがおかしくなるのは珍しい症状ではなく、ネット上に自分で修理する方法についてのノウハウが溢れている。一応、工作のスキルについてはやや自信のあるところなので、とりあえず、完全にイカれる前に、先行して部品だけでも買っておこうとアマゾンで「WiiU スティック」を検索してみた。

  すると、交換用部品がずらずらと出てくるのだが、どれも異様に安い。安いが、レビュー欄が荒れている。どうも、ニセモノが溢れかえっているらしく、中には「スティックの押し込みができない」などという笑えないレビューもある。どうやら「あすか修繕堂」というところから買えば鉄板のようなのだが、そのワードで検索しても、胡散クサい業者の商品が出てきてしまい識別が困難なのだ。

  結局「あすか修繕堂」では、基板付きの左スティックは在庫を切らしており、左スティック部品のみのタイプならば購入できることがわかった。送料込み480円。まぁ、いいか。基板へのハンダ付けなんて、オイラにかかればチョチョイのチョイだろう。Y型ドライバも持っているしな。あまり深く考えずにポチり、届いたのは今月の12日。

  画像の説明

  部品が届いたので、シゲシゲと眺めてみた。ALPSの刻印がある。なるほどXY方向に可変抵抗器が取り付けてあり、上下左右のアナログ量を読み取る仕組みだ。光学ロータリエンコーダなら劣化はないが、単なる可変抵抗器なら、そりゃ劣化が避けられんのは道理だ。消耗品という考えなのだろう。一方で、スティックの押し込みは、タクトスイッチによる検出。ごく一般的なタクトスイッチが埋め込まれた形になっている。なるほどね。

  その後、左スティックの動きの怪しさは順調にその程度を増してくるが、カミさんもスプラトゥーンに熱中している最中なので、修理の遅延や失敗が許されない。んが、昨晩、高台の端から意図せず落ちたり、右移動が緩慢で撃ち抜かれたり、ヤグラから勝手に降りてしまったりするようになったことを受け、今日、修理に踏み切ることにした。

  WiiUパッドの分解は簡単だ。左スティックの基板の取り外しも簡単だ。ところが、左スティックの基板から、左スティック部品が取り外せない。なぜって、既存のハンダが溶けないのだ。左スティック部品の本体は大きな金属フレームで覆われており、ハンダゴテの熱がどんどん逃げてしまうのが原因っぽい。

  愛用の温調ハンダゴテだが、初めて450℃フルパワーに調節するも、容易には溶けない。結局、左スティックの再利用はあきらめ、金属フレームの足を表側からニッパーで切り飛ばし、可変抵抗を引きちぎり、部品を破壊しながら、無理矢理に左スティック部品を取り外した。

  ところが、左スティック部品を取り外してなお、基板のスルーホール中のハンダが除去できない。見た目、アニュラリングにはサーマルパターンが施してあるのだが、基板が触れられないくらい高熱になってもハンダが十分に溶けない。オイラははんだ吸い取り線派なのだが、爪楊枝戦法を繰り出すばかりか、安物のはんだ吸い取り器まで動員してもダメ。一瞬、心が折れかけ、修理を断念する直前まで行ったが、結局、ホールの中をドリルで削るという最終手段を講じて、ようやく新しい左スティック部品を取り付けられる状態に持ってこれた。はぁはぁ。

  取り外しができたら、次は取り付け。その熱の逃げっぷりのいい構造から、ハンダ付けにも苦労するかと思ったが、意外にも取り付ける作業は一瞬で終了した。実に部品の再取り付けに要した時間は1時間半。ちょっとタイトルは釣りクサいが、くれぐれも「スティック部品のみのタイプ」を購入する場合は注意したほうがいい。結論から言うと今回の部品の14点のハンダは、取り外すことは想定外のようだ。大出力のハンダゴテ、かつ、かなりのハンダ付けスキルがない限り「基板付きのスティックタイプ」を購入したほうが無難だ。次回があるなら、自分も絶対にそうする。

  画像の説明

  ゲームパッドの再組み立ての前に、コネクタ部分にテスターを当て、スティックの動きに応じて抵抗値がキチンと変化すること、押し込みが検出されることを確認。ゲームパッドを再組み立てして、スプラトゥーンをテストプレイ。ナワバリのネギトロ炭鉱、シオノメ油田とも、キーマンを務めた上での連勝。よっしゃよっしゃ。完全復活じゃ!

  と、今日の工作はまだ続く。最近、またもやマウスのセンタクリックが「渾身の力」を込めないと反応しなくなってしまったので、昨日、ストックしてあった色違いのグレーのものと、下部を丸ごと入れ替える対応を行っていた。というのも、手持ちのタクトスイッチにサイズの合うものがなかったから、修理ができなかったのだ。

  画像の説明

  んが、今回、ゲームパッドから破壊しつつ取り外した左スティック部品に埋め込まれた形になっているタクトスイッチが6x6x4.3mmとドンピシャだったのだ。今回、部品の取り外しに異様に苦労したので、マウスから壊れたタクトスイッチを取り外す際に恐怖感を覚えるほどだったが、何のことはない。あっさり取り外すことができ、あっさり取り付けられ、あっさりと治せてしまった。

  画像の説明

  ちなみに、スティックの修理を任天堂に依頼した場合は4000円強かかるらしい。今回、送料込み部品代480円、タクトスイッチの再利用で-10円ということで、計470円で修理できたことになるが、左スティック部品のみの交換は手間の点で決して得をしない。再度言うが、くれぐれも「基板付きのスティックタイプ」を購入したほうが無難である。