正直日記



2005/12/31

_ AMDRV & AMDSP大晦日バージョン
使う機会も無く塩漬けにしたまま半年が経ってしまったので、ソース込みで
公開することにした。homebrew用途のMIDIベースなサウンドドライバは全く
無いようなので、ひょっとしたら需要があるかもしれないし。

amdrv_051231.zip

最低限のreadmeは書いたけど、もし使い方が分からなければ、この日付にで
もコメント付けてくれれば答えますですよ。改変はご自由に。
_ 新スプライトダブラ
なんか設計を見直してたら、結局XSPと同じような実装になってしまったよ。

というか、XSPと同じような実装になって初めて、XSPのソースがまともに追
えるようになった。アセンブリを追うのはダルいけど、「こーいうアルゴリ
ズムになってるはず」と分かっていればなんてことはないな。

コメントがしっかり書かれてるんだからあれくらいは読めないとマズい、と
言われそうな気がしないでもない。まぁ場数踏んでいくしかないか。

2005/12/25

_ 別件で
挿入ソートよりもバケツソートの方がいいんじゃないかと指摘され、いつも
メモリがメモリが〜と呟いてる俺としては先入観から却下、なのだったが、
ちゃんと計算してみると結果的にはバケツソートで実装した方がメモリ消費
量も(もちろん試行回数も)少ないということが分かったので、またもや目
から鱗が落ちた。くそう!やはり他人には相談してみるべきだと思った。
_ 空きバッファの管理
タスクシステムの空きブロックを管理するためにqueueを使ってたんだけど、
そもそもタスクブロック構造体はlistになってるんだから、管理側もlistに
しちゃえば良かったんだな。目から鱗が落ちたというか、鱗が落ちたことに
ビックリした!なぜこんな単純なことが思いつかなかったのか。なぜこんな
単純なことを思いつけなかったのか。悔しい!やっぱり他人のソースは読む
べきだと思った。

2005/12/17

_ タイルモードでリニアなフレームバッファを
普通、タイルを並べるときは

 12345678
 910111213141516..

という風に、横に並べがちだけど、これを

 1917
 21018
    :

という風に、縦に並べるといいのでは、と思った次第。これを90度回転して
鏡像反転するとあら不思議。何が不思議なのかはそのうち書くわ(多分書か
ない)
_ ありえない。何かの間違いだった。
遂に……遂に、とうとう、GRADIUS Vをクリアしてしまった。買ってから1年
半の間、殆どやらずに(やると必ず舌打ちするので)たまに思い出してはプ
レイして(やはり舌打ちするのだが)クレジットが10回分に増えた時点で、
ようやくクリアしてしまった(ここでまた舌打ち)。

長い道のりであった。里芋面のつまらなさに舌打ちし、壁に衝突する雑魚敵
に舌打ちし(RSじゃねえんだからさ…)、エレファントギアをすり抜ける敵
弾にも舌打ちし、飛ばせないリアルタイムムービーにも舌打ちをし、長すぎ
るプレイ時間にもこっそり舌打ちして……何度コントローラを投げつけよう
と思ったか分からないくらいイライラさせられたゲームだったが、スタッフ
ロールに載っている開発メンバーの少なさを見て「しゃあねえな」と溜飲を
下げるしかなかった。無理矢理下げさせられてしまった。「こちら、お下げ
してもよろしかったでしょうか?」と訊いてくる余地すら無かった。

2005/12/10

_ あ、だめだ
マップデータはマップデータで、16bitに二枚入るからリニアになんねえや。
やり直し。
_ タイルモードでプロポーショナルフォントとか使いたい
http://forum.gbadev.org/viewtopic.php?t=403

ここに「VCOUNT割り込みでBGキャラクタバンクとアフィンレジスタを弄れば、
120x80限定だけどmode 1/2(タイルマップ)でもリニアなビットマップが作
れるぜ?hehehe..」みたいなことが書かれてるんだけど、具体的に何をどう
するんだ?3日間考えてるけど、何も思い浮かばないぞ。

いや待て、やっぱ嘘。実は何も考えてなかったので、書きながら考えるから。

横サイズは半分になるってのが多分ヒントになるんだよなー。あと、VRAMは
16bit以上の単位でしかアクセスできない。そして16bitにつき16色で4ドット
256色で2ドット入る。で、多分256色にして、アフィン変換で横サイズを半分
に圧縮すれば、16bitで1ドットってことになるので4ドットまでならリニアと
みなせる。おお!この調子だ!

次に縦方向についてだけど、だけど……駄目だ思いつかねえや。ひらめいた
人はコメントするように。

で、それとは別にちょっと思いついたんだけど、縦横それぞれ1/8に圧縮すれ
ばマップデータで1024x1024の1/8で最大128x128のリニアなビットマップが作
れねえ?

 

こんな感じで。まあ実際には、マップは256x256で一枚とみなすタイル状に並
んでいるので(ややこしいな)完全にリニアってわけにはいかないけどさ。
_ 標準関数とか使いたい
ARMステートで書いてる関数からは標準関数が呼べないんですよね。何故かと
言うとリンク時に relocation truncated to fit : R_ARM_PC24 エラーが出
るから。じゃあどうするのかというと、bxで飛ぶようにすればいいわけで。

extern int sprintf(char *, const char *, ...) __attribute__ ((long_call));

CODE_IN_IWRAM void hoge(int num)
{
  char str[128];
  sprintf(str, "test: %d", num);
  vbalog(str);
  return;
}
このように使いたい関数に対してlong_call属性をつけてやればいいわけ。 というか、これが思いつくまで3日間悩んでたよ……。
CODE_IN_IWRAM void hoge(int num)
{
  void (*pfunc)(char *, const char*, ...);
  pfunc = sprintf;
  pfunc(str, "test: %d", num);
  vbalog(str);
}
最初こんな感じで回避出来るだろと思ってたら出来ねえしー。 なんなのよもう!でも、これでprintfデバッグが出来るようになったわよ! 女の子はいちいちデバッガなんて起動してらんないのよ!ぷんぷん!

SaTa. > DSなのにタイルモード(256色)のままlineとか書く関数とか作ってましたね。座標変換とかロングワードアクセス変換で劇遅い。  (2005/12/10 09:39:27)
> そうそう、いちいち変換してたら遅いんですよねえ。まあフォントだったらフレーム辺りの描画文字数を減らせばいいんですが。  (2005/12/10 11:48:17)
> タイルモードと言えば farbrauschのfr-018 http://www.pouet.net/prod.php?which=5235は凄いですね。タイルにトンネル描いたり、スプライトにバンプ当てたものを4枚使って箱作ったり……しかも60fps出してるし、大したもんだ。  (2005/12/10 11:55:59)
SaTa. > なんかすごいですね。メモリにBG画像生成かつDMA転送とかでがんばっているんでしょうかね。  (2005/12/15 10:31:53)

2005/12/02

_ 携帯したい!アレを!
今、俺の中でまた超連射が熱い!ってゆうか熱すぎ!熱すぎていつでもどこ
でも誰とでも超連射をやりたい衝動に駆られすぎ!そして、そんな俺が取る
べき行動は……

1. 目コピで移植する
2. 移植しない
3. XM6を移植する。GBAは明らかに無理だからPSPとかで。
4. 移植しない
5. XM6の動くハンディPCを買う。具体的にはOQOとか。いや、動くのか?
6. 買わない

すげえ!6つも選択肢があるよ。幸せだなあ。


で、結局、XSPのref/frm/xspデータをGBAで表示できるようにコンバータを
作ってしまった。そしたらなんか満足してしまったよ。
_ Firefox 1.5をキメすぎ
しつこいけど、普段から使うものだからこそ使い勝手には拘りたい!という
わけでまだFirefox1.5への言及は続くわけですが、なんつーかバグっつーか
仕様の変更というか、やっぱりバグかもしんないけど、多くね?

特に一番気になったのが、_blank以外のtarget要素が指定されているときに
新窓(タブ)を開かなかったり、Shift+クリックでも同じタブで開かれたり、
どういう挙動なんだかよく分からんけど著しく不便だ。TabMixPlusが悪さし
てんのかもしんねーけど、外して確認するのも面倒だ。(使い勝手に拘って
るんじゃなかったのかよ!)

でも直ってるバグもあるね。新規窓を開いてリンクをクリックすると戻れな
いバグが直ってたので偉い。

さて1.0.7に戻すか……。

2005/12/01

_ Firefox 1.5をキメている
画像の読み込みバグに関してpigfoot, stipe, officialを試してみたところ

pigfoot  : 画像の読み込みをOFFにしても読み込まれる
stipe    : 画像の読み込みをOFFにしても読み込まれる
official : 画像の読み込みをOFFにすれば読み込まれない

つまりunofficial buildsに発生しているバグなのか?
普通にオフィシャルリリース版を使うことにするよ……。
_ Firefox 1.5をキメた
1.0.7(pigfoot) に 1.5-(pigfoot) をプロファイルそのままで上書きしてみ
たところ、非対応の拡張とテーマが無効にされるものの、スンナリ入ってし
まったので拍子抜けしてしまった。これまでは一度プロファイルをまっ更に
して新しく入れ直す必要があったからな。

ページの戻る・進むが超速くなった。ネットサーフィン(私語)をするとき
に、新規タブを開かずに行ったり戻ったりでリンクを辿る俺的には、これは
凄い利点だ。

画像の読み込みで for the originating site only にチェックを入れても
有効になってない気がする(他所のサイトの画像だろうと開いてしまう)。
バグかなあ。バグだよなあ。pigfootだけのバグかもしれないので後で確認
する。(多分しない)

あと若干挙動が違うところがいくつか。例えば横長のページでHome/Endキー
を押したときに、

 1.0:左右のスクロール位置は左端に合わさる
 1.5:左右のスクロール位置は固定したまま上下スクロール

という違いがあった。二段・三段柱になっているページは見やすいのかな。
そういうページはPageUp/Downでスクロールしつつ見るから、これは要らない
なあ。Home/Endは生のテキストファイル、例えばCソースだったりアクセス
ログだったりを見るときにを使っているので、左に合わさってくれたほうが
便利なんだけど。
_ デフォルトスキンを変更
ぁ方面(ぁほうづらと読む)の人っぽいと言われてたのでぁ方面の人っぽく
なくしてみた。ファイヤーフォクサーの人は、View->PageStyle->Kokubanで
今までどおり黒板色に戻せます。

SaTa. > こんな日記見たことないな〜誰の日記だっけ?  (2005/12/01 20:39:47)
> オレオレ!俺の日記だよ!今すぐ千葉銀行に50万円振り込んどいて!  (2005/12/01 20:50:31)
SaTa. > それでは口座名義と口座番号をどうぞ  (2005/12/01 21:00:38)
> ぎゃふん!  (2005/12/02 05:01:47)

最新
2010 | 01 04
2009 | 01 02 03 04 05 06 07 09 10 11 12
2008 | 01 02 03 04 05 06 07 08 09 10 11 12
2007 | 02 03 04 05 06 07 08 10 11 12
2006 | 01 02 03 04 05 06 07 08 09 10 11 12
2005 | 01 02 03 04 05 06 07 08 09 10 11 12