2006-10-01から1ヶ月間の記事一覧

combinatory logic

コンビネータ論理を色々といじった。 分かった事:コンビネータ論理をそれなりにマトモに扱うには遅延評価が必須(多分)。 やりなおしだ……。

devkitProのmalloc()怪しい→newlibのソース調査→日本語ドキュメント検索、の最中に、これを見付けてしまった。 http://nes.sourceforge.jp/index.html もしかして、古いPC等でwii互換のグリッド環境を構築する用途のos?と、思わず勘繰ってしまう(が、ただ単…

tomoeを試す

http://tomoe.sourceforge.jp/cgi-bin/ja/blog/index.rb 結論: nds上でtomoe-0.2.1を動かすのは、あまりにも動作速度が遅い。 辞書読み込み10秒は我慢できるとしても、文字候補選出に10秒かかるのはちょっと耐え難い。 エミュ上で動かした場合、この10秒が更…

もしかして、swiSoftReset()でmalloc()がおかしくなるのは、フラッシュカート(m3lite)固有の問題なんだろうか……。 なんか、そんな気がしてきた。

原因判明。しかし……

分かった。多分。 GCは無罪だった。 本当に原因がGCにあるのかどうかを切り分ける為に、GCを使わずに適当にループでmalloc()実行と、ボタンでswiSoftReset()を行うコードを用意した。 これを実機で試したところ、swiSoftReset()後にmalloc()が妙なタイミング…

sbrkのせいか?

追記: sbrk()のせいじゃなかった……。

延々とGC調査

CFLAGSから、 -mthumb -mthumb-interwork を外し、 -fno-exceptions をつけてみた。 すると、swiSoftReset()後の最初のGC実行タイミングで固まるようになった(以前はこのタイミングで教祖エラーが出ていた)。 しかし、これが何を意味するのかまでは分からな…

やっぱり直ってなかった

直ったと思い、耐久テストをやってみたところ、一見問題なく動作しているように見えるが、ソフトリセットをしてからある程度動いてから、やっぱりエラーになってしまう。 ソフトリセットをしない限りではエラーは起こらないようなのだが。 この不安定な状態…

教祖の瞑想は一応解決

結論: -DDONT_ADD_BYTE_AT_ENDを付けないようにしたら正常にソフトリセットできるようになった。 根本的な原因は、自分がGCのmake時の追加フラグの意味を勘違いしていたのが原因だろう。 しかし、どうしてこんな問題が起こったのか、-DDONT_ADD_BYTE_AT_END…

教祖の瞑想エラーその後

少しだけ調べた。 結論: まだよく分からん。今日はもう眠いから寝る。

GCは動いた。が……

とりあえずGCが機能するようになった。 http://ranekov.tir.jp/ndn?ndsdev%3alib%3agc 簡単にテストしてみたが、しっかりとGCしてくれている。 だが、試している内に、swiSoftReset()が動かなくなっている事に気付いた。 swiSoftReset()を実行すると、以下の…

とりあえず、シェルスクリプトに翻訳して誤魔化した。 できた。 別に根性はいらなかった。 パッチ化した。

色々考えた結果、やっぱりGCは必要だという結論になったので、boehmさんの奴を使う事にした。 (boehmさん以外のGCライブラリも探してみたが、見付からなかった。) Makefile見ながら必要な定義を検証中。 これが動けばかなり楽ができる。筈。 また、gaucheが…

http://mdxonline.dyndns.org/archives/2006/10/post_1783.shtml http://mdxonline.dyndns.org/archives/2006/10/memmovedma.shtml ああ、なるほど、ここのバス幅はそういう意味でしたか……。 最初読んだ時はアライメントの方しか気にしてませんでした。 バス…

疑問点

色々とVRAMをいじっていたが、どうにも謎な事が一つある。 もしかして、ndsのVRAMは、1バイト単位でのwriteは受け付けないんだろうか。 ndesmumeでは1バイト単位のwriteも2バイト/4バイト単位のwriteも普通に反映してくれる。 だが、dualisと実機では、2バイ…

日本語表示

普通にtext型背景レイヤに漢字をタイルとして登録しておいて表示する方法で、日本語表示機能を実装していたが、改めて計算すると、どうにもVRAMの無駄が多い事に、やっと気付いてしまった。 て言うか作る前に計算しておけ、それぐらい。 半角全角合わせて、…

エンディアンとビットオーダーは別物

どうにもVRAMの操作が上手く行かないと思ったら、思いっきり勘違いしていた。 あとでndnの方に書いておく事。

mingwがリソースリークしている

どうもmingwの各プロセスが、終了する際にwindowsの何かのリソースを握ったまま終了してしまい、少しずつリソースをリークしてしまっているようだ。 具体的にはメモリ使用量が減らない(そのメモリの中味が何なのかまでは調べてないが)。 ここ最近で派手に./c…

libiconvを試す

ndsはutf16と親和性が高い、と思う。 (text型背景レイヤの文字種が16bitなので、事前にunicodeフォント(タイル?)をVRAMに設定しておけば(但し、サイズは8x8。美咲フォントぐらいじゃないと無理だ)、utf16は直接表示できる。ただ、この方法だとVRAMを大量に…

dpg動画の音声が良くなった

http://mdxonline.dyndns.org/archives/2006/10/post_1777.shtml 早速試してみた。 音声バッチリ。やった。 どうもありがとうございます。 レッツ変換祭り。

http://d.tir.jp/pw?ndsdev%3agraphic_modes に、背景レイヤ操作例と、その説明を書いた。 なんか無駄に時間を使ってしまった。

dpg調査は面倒になってきたので中断。 何か分かるまでは音声劣化状態で使う事にする。

ffmpegの構築

例によって、先に結論。 ffmpegを最新にした。 音質に変化は無かった。 mencoder.exeも最新っぽいのに変えてみた。 遅延は直らなかった。

更に調べた。 「ffmpeg.exeを使って音声を取得」は効果無しだった。 extractwave.exe関連のオプションは、選んでエンコードしようとしたらエラーになったり強制終了した。 「常にffmpegで前準備してから変換する(特殊ファイル用)(低速)」を有効にすれば、タ…

dpg調査続き。 とりあえず、オプションをいじったdpgファイルを各種用意し、遅延する動画ファイルを変換してみた。 12fpsで変換(デフォルトは18fps) ずれは解決せず。 ffmpegを使って変換(映像/音声両方) タイミングはバッチリ。しかし明らかに音声が劣化。 …

帰ってきた。 ひたすら寝た。 起きた。 dpg動画が0.3秒ぐらい遅延する問題を更に調べた。 どうも、遅延するdpgファイルと、遅延していないdpgファイルに分かれているようだ。 この前まとめて変換した分は全部遅延しているが、前から持っていたファイルは調べ…

昨日のイベント開始待ち用に、dpgに変換した動画をndsに入れておいた。 そして、イベント開始まで延々と見ていたが、その時に、どうも、どの動画も0.3秒ぐらい、最初から最後までコンスタントに、音声よりも動画の動きが遅れているような気がする事に気付い…

昨日のラフォーレでの某イベントはなかなか満足だった。 映像を見る限りでは、よみうりランドは行っておかないと損だったようだ。

とりあえず、VRAMの使い方は分かった。 どの背景レイヤをVRAMのどのアドレスから置くかについては、そこそこ自由にできる(アライメントっぽいものはあるが)。 上記の各レイヤ毎のオフセットは、BGn_CRの特定ビットで指定する。以前翻訳した文書には、この部…

今日は、windowsで使えるtelnetd/sshdを片っぱしから調べまわった。 結論: どれも微妙だった。 また、どれを使ってもgvimを上手く起動できない(起動自体は出来るが、プロセスだけ走ってウィンドウが表示されない)。 どうも、サービス化してしまうと駄目っぽ…