日記
この日記はフィクションです.登場する人名・団体名・地名・職業などはぜんぶ架空のものです. 写真のような画像は画像生成AIもしくは念写によるものです.
2007-07-31
家賃.駅前.映画. 平安堂.イナイ×イナイ.
NDS
ニンテンドーのサイトみたら,DSのディスプレイのスペックに,26万色と 書かれていた.あれ?そんなモードあったっけか?
無線LANが使えて,日本語が表示できたところで,キーボードでもつないでみようか.
USBとかそういうポートが付いていれば楽なんですが,DSにはそういうポートは無い. 普通の人なら,GBAスロットに挿すUSBインターフェイスを作ると思いますが, 別方向で. マイク入力端子にシリアル信号流し込んだらソフトから読み取れそうな雰囲気.
暇があったら実際に作ってみよう.
2007-07-30
研究室
とりあえず,ハンコ押してくる. 飛行機よ宿の予約もしたいけど.
クレジットカードとパスポートくらい持っとけと言われる. いや,手続きとか面倒くさそうじゃないですか. それが出来るなら,院の入学手続きであんなに苦労しません.
2007-07-28
NDS::DHCP
メールの返事で,RFCには0で初期化しなければいけないという記述は 見つからないと言われた. 確かにRFCには,アドレスの余ったスペースをどうするのか書かれていない. ということは,CoregaのルータのDHCPサーバの方が悪いのか.
まぁ,未初期化のバッファをネットワークに送信するのはいただけないので, そのうち修正してくれそうです.
2007-07-27
NDS::日本語表示
DS本体にもフォントが入っているような気がするけど,情報が無い.
とりあえず,前に書いたOpenGLでUnifontを表示するプログラムを流用して 表示してみる. これで,UTF-8が使えます.
せっかくなので,Wi-Fiを使ってこの日記にアクセスしてHTMLを 表示してみる.
2007-07-26
NDS::Wi-Fiで無線LAN
無線LANに繋がった. アクセスポイントのチャンネルの設定をいじったら普通に繋がるようになった. チャンネル1は駄目っぽい?
まだ,繋がっただけ.DHCPがうまく動かないので, 手動でIP取ろうとしたけど,それもうまくいかなくて,かなり悩んだ.
問題は,IPアドレスのバイトオーダー. って,ヘッダファイルの説明に嘘が混じってます. Wifi_SetIPの説明はバイトオーダーが逆になってるので注意.
普通に,Googleとかに繋がるのを確認.
とりあえず,簡易ブラウザでも作ってみるか.その前に日本語表示だな…. あと,DHCPのコードを見てみよう.
NDS::dswifiのDHCP
とりあえず,DHCPクライアントは動くようになった. RFCを見ながら,DHCP_REQUESTパケットを作り直してみたら,すんなり動いた.
dswifiのもとの違いといえば,yiaddrをセットしているかどうかかな ……と思ったけど,これはハズレ.
MACアドレスの後の10バイトを初期化してないのが原因だった. 「for(i=6;i<16;i++) dhcp_p->chaddr[i]=0;」とするだけで 手元の無線LANルータはIPをくれた.
とりあえず怪しげな英語で,間違ってるよ,とメール送っておこう.
2007-07-25
ICPF
いつの間にかICFPが終わってたっぽいですね. 今年も楽しそうな問題で,ちょっとやってみたかったかも.
いや,別に今からやってもいいのですが……微妙に少し暇が出来たし.
ところで,Endoさんって誰?「λ」とか言ってるみたいだけど.
作りたいもの
最近,あんまりプログラムを書いてないな…と思ったので, 書きたいものを考えてみる.
まともな自分好みなOSとプログラミング言語とテキストエディタ.
プログラムを書いている人の多くが,一度は作ろうとするものだけど,
なかなか使えるものが出来ないものでもある.
かく言う私も,3つとも作ろうとして挫折した経験がある. OS以外は,実際に動くものを作って使ってたけど,やっぱりあまり 使えないことに気づいてしまった.
他には,過去に作ったものを作り直したかったりとか.
2007-07-21
//時をかける少女
2007-07-19
STARC研究打ち合わせ
新横浜まで行って,会議.
MeshiやSafiiも別の用件で東京に来ていたので,少しだけ秋葉原に寄る. 結構時間が迫っていたので,昼食を食べて横浜へ. 赤外線で操作するチョロQのラジコン買いました.
9月のシンポジウムで発表する内容を発表. たくさん,つっこまれました.
2007-07-18
ゼミ
朝からゼミ.
今日は塩尻ではなくて,工学部で授業を受けられた.
百科事典
世界で一番メジャーな百科事典といえば,最近まではブリタニカだったけれど, 最近はWikipediaではなかろうか?
ブリタニカがオンラインで使えるようになったのは画期的だと思ったけど, もう,検索することは殆どない. 内容がGoogleで引っかかるのもWikipediaの利点.
2007-07-16
地震で目が覚めました.
報告があったので,2007-06-10のニコニコ動画を保存する ブックマークレットを修正.
NDS::Wi-Fi
DSのWi-Fiを使って無線LANに接続しようとしているのだけど,うまくいかない. 公開されているソフトもいくつか試したけど,そもそも接続に失敗するっぽい. アクセスポイントの設定が悪いのかな?
2007-07-15
今日は駅前まで.
NDS::サウンド
サウンドを鳴らしてみる.playSound()を使えば一発. 実際にサウンドを鳴らすのはARM7のCPUなので,メモリアクセスとか 気にしないといけないはずですが,何もしなくてもやってくれるようです. あと,これまた何もしなくても,多チャンネルで再生できます.
再生を中断したいときとかはどうすればいいんだろう? それらしい関数が見当たらない.
TransferSoundData snd;
snd.data=snd1_bin;
snd.len=snd1_bin_size;
snd.rate=11025;
snd.vol=127;
snd.pan=64;
snd.format=1;
playSound(&snd);
// または
//setGenericSound(11025,127,64,1);
//playGenericSound(snd1_bin, snd1_bin_size);
フォーマットは,波形データが入った単なるsigned charの配列です. Windowsのwavファイルは,0x80が振幅の中心なので注意.
NDS::devkitProのMakefile
DSの開発環境にdevkitProを使っていますが,付属のサンプルをmakeするための Makefileが便利です.
sourceディレクトリにソースを置いておくだけで良いですし, .ndsファイルの名前もMakefileがあるディレクトリの名前になります. dataディレクトリに,.binファイルを入れておけば,勝手に ヘッダファイルを作って,ファイルをオブジェクトに埋め込んでくれます.
書き換えるのは,リンクするライブラリを変えるときくらいですね.
2007-07-13
Nintendo DS開発2日目.簡単なお絵かきソフトを作る.
NDS::ファイルアクセス
昨日のプログラムをデバッグ. なんか,データ自体は読めてるっぽい. ただ画面に反映されない. 試しに,別のメモリに読み込んでからVRAMにコピーしたら普通に表示された.
……ありがち.
NDS::画面モード
DSの画面モードの仕組みが分かってきた.
- videoSetModeでモードを指定
- vramSetBankA~IでVRAMを実メモリにマップ
- BGx_CRでどのバックグラウンドにどのVRAMを使うかや重ねる順番を指定
という風な動作をしているっぽい.
videoSetModeで設定できるモードは,0~6とフレームバッファモードがある. フレームバッファはそのままなのでOK.
あとは,各モードにある,バックグラウンドというものが難関. 各モードにある4つのバックグラウンドは要するにレイヤーだった. 自由に重ね合わせたりできる.
ただ,BGx_CRで指定するVRAMが重ならないように自分で設定しないといけない. 拡張回転バックグラウンドで使うBG_GFXもずれるので,自分でずらすか, BG_BMP_RAM(base)で得られるアドレスを使わないといけない. BG_BMP_RAM(base)の定義は(((base)*0x4000) + 0x06000000)みたいになってるので, そのままポインタにキャストすればOK.
ダブルバッファリングとかはBGx_CRでVRAMのアドレスを入れ替えればいいのかな? サンプルはたくさんあるから,あとで確認しよう.
MAINは拡張回転BG+テキスト,SUBは拡張回転BGという設定ならこんな感じ.
videoSetMode(MODE_5_2D | DISPLAY_BG2_ACTIVE|DISPLAY_BG0_ACTIVE);
vramSetBankA(VRAM_A_MAIN_BG);
vramSetBankB(VRAM_B_MAIN_BG_0x06020000);
videoSetModeSub(MODE_5_2D | DISPLAY_BG2_ACTIVE);
vramSetBankC(VRAM_C_SUB_BG);
BG0_CR = BG_MAP_BASE(0) |BG_TILE_BASE(1)| BG_PRIORITY(1);
BG2_CR = BG_BMP16_256x256 |BG_BMP_BASE(2) | BG_PRIORITY(2);
SUB_BG2_CR = BG_BMP16_256x256 | BG_PRIORITY(1);
BG_PALETTE[0] = 0x0000;
BG_PALETTE[255] = RGB15(31,31,31);
consoleInitDefault((u16*)SCREEN_BASE_BLOCK(0), (u16*)CHAR_BASE_BLOCK(1), 16);
2007-07-12
それにしても microSD は小さすぎて扱いにくい.
NDS::Hello, World!
makeはdevkitProexamplesnds以下にある Makefile が便利でそのまま使えます.
前もって書いておいたHello, worldプログラムを実機で実行してみる. 普通に動きました.
試しに,拡張回転バックグラウンドというもので遊ぶ. スクロールや回転等をハードウェアでやってくれるみたいです.
NDS::ファイル入出力
マジコンには,大抵 microSD などの記録メディアが挿さります. このメディアにアクセスできるようです.
ただ,マジコンのハードごとにアクセス方法が違うので,LDLIという仕組みがある. 要はライブラリのダイナミックリンク. R4は実行時にリンクしてくれるけど,他のマジコンだと実行前に ツールを使って手動でリンクする必要があるかもしれない.
で,プログラムで使うにはFAT用のライブラリ(libfat) があるのでそれをリンクすればいい.普通にfopenとか出来る.
試してみたけど, R4のmicroSDへのアクセスがどうもうまくいかない. fopenは成功するのだけど,データを読めないことがある. 書き込みは出来るのに…….
2007-07-11
DS開発環境
ちょっと出遅れ感はあるけど,DSのソフトでも作ってみようかと思いました.
ARM7とARM9が載っているのか. タッチパネルやサウンドもライブラリが用意されているので簡単そう. Linuxも移植されているみたいだし,資料には困らなそう. 無線LANの資料は微妙に少ないような….
DSには無線LAN経由で起動する仕組みがあるっぽいけど, 自分で作ったプログラムを直接起動するのは,かなり難しそう.
とりあえず,DSのマジコンを注文してみる. microSDから起動できるっぽいので,色々できそう.
塩尻
塩尻で授業.
2007-07-08
日記を binzume.net に移動. リダイレクトするように.
2007-07-07
DSを買いました.
2007-07-06
ICPC
予選でした.難易度は去年より簡単かな. でも,微妙に苦戦.
私は,AとDを解きました. 問題Aはタイムスタンプを見る限り,開始後7分で解けてます. Dは大体30分くらい. その間に,SafiiがBを解いてました. 問題Cのデバッグに苦戦しているうちに残りの時間を使い切ってしまいました. 敗因はC++を使わないで書こうとしたあたりっぽい.
今年は極端に難しそうな問題はなかったように思います. ただ,EとFは微妙に大変かも.
帰ってからCとFをやってみる. Cはすぐ出来たけど,Fは難題.左右類似度を求めるところで1時間経過. 面倒そうな処理は大方できたけど,眠くなった.
まぁ,とりあえず,予選は通ったのですが.
2007-07-05
Firefox::LiveClick
最近のFirefoxはライブブックマークからrdfのLinkで指定された ホームページに飛べないので,不便だったのですが, LiveClickアドオンを入れて解決.
このアドオンはライブブックマークをクリックしたときの動作を設定できます. 他にもRSSを監視して通知してくれたりもするようです.
2007-07-04
そろそろ,このWebスペースも手狭になってきたので, 日記を binzume.net の方に移そうと考え中. もうデータはコピーしてみた.
気になるのは,この日記を携帯電話で呼んでいる奇特な方が, どうやらいるらしいこと. 最近の携帯電話の端末ってUTF-8とかOKなのかな? 駄目なら向こうでは変換して表示しないと….
ゼミ
朝からゼミ.
研究::ミーティング
次は月曜.発表のタイトルを決めないと.
あわせて読みたい
右側につけた「あわせて読みたい」に表示されるページも, そろそろ安定してきてますね.
2007-07-03
近代デジタルライブラリー
国会図書館の近代デジタルライブラリーで 閲覧できる本が増えましたね. 小説は青空文庫でいいのですが, やっぱり他の本も読みたい.
ただ,ユーザーインターフェイスは相変わらずとてつもなく使いにくい.
2007-07-01
グラタンを作って食べる.