GBATEK : DS 3D Overview ああ、最初にここを読むべきだったのだった。サラっと読み飛ばしてた。 レンダリングエンジンは、BG0の領域に描いているわけじゃなかったのだった。 48ライン分のバッファを別に持っていて、BG0レイヤの代わりにそのバッファか ら、都度ラインバッファへ流し込んでは続きを描き……みたいな感じか。 レンダリングバッファの小ささから、1面描き終えるためには必ず1フレームが 必要になるので、キャプチャして二画面3D表示するためには1フレーム待たなけ ればならない、つまりどうしても30fps以下になる、ということか。タイムのク ロウカードがどうの(それはキャプターです)。
まずはneheのサンプルでも移植してみるか……と思ったら、nds-examplesにその まま収録されてるじゃないの。さっそくmakeして、ソース眺めながら実行。 ……うひょー、neheのソースがほぼそのままの形で動いとる。これは凄い。感動 した。 そっか、glTexImage2D()云々するから、テクスチャVRAMの状態について気にする 必要は無いのか。BGキャラクタと同じように、自前で描き込まなきゃいけないの かと思っていたよ。まぁ実際はlibndsが肩代わりしてるんだろうけど……。と、 videoGL.c を見たら、やっぱり肩代わりしてた。 --- ううむ。Graphics/3D/nehe/lesson11 が videoSetMode(MODE_0_3D); vramSetBankA(VRAM_A_TEXTURE); で動いてるけど、3D面にVRAMを割り当てる必要は無いのかしら。あるいはデフォ ルトでどこかに割り当てられているのか? ↓↓のエントリは豪快に間違ってい そうだ。まぁ妄想だから間違ってるのは別にいいんだけど。
あぁつまり、これは内蔵メモリが潤沢にあるRF5C68なのだな(違います)。
なぜか今、手元にR4入りのDSLiteがあったので(借り物なので数時間で返さなけ ればならなかったりした。もう返却したので「今」なのに過去形なのです)しょー がないからGBATEKを読みながらDSの構造をモリモリ把握してみた。 GBAと通じるところは楽勝だし、3Dは殆どGLのAPIなのでこれもほぼ楽勝か。 以下、妄想なので読まなくていいよ。(検索で引っかかった人はゴメンなさい) とりあえずキモとなるのは四つの128k VRAM (ABCD)で、このうち二つをLCD二面 に割り当てて3Dなり2Dなりを描画することになるらしい。残りの二つはテクスチャ やバックバッファとして使えばいいか。3Dコアは一面しか描画できないので2画 面に3D描画を行いたい場合、1枚描いてからコピーするらしい。 LCDに割り当てたVRAMは BG0 or 3D / BG1 / BG2 / BG3 という構成になる。GBAと ほぼ一緒か。3Dを描画するときはフレームバッファ的にVRAMを使うと思うので256x192の3万色 で 96KB 消費するはず。つまり、128KB のうち残り 32KB で BG 3面分のキャラ クタ・マップを賄わなければならないことになる。GBAの場合は 64KB をキャラク タ・マップに割けたので、これはかなり狭い気がする。(追記:この部分、大嘘だったよ) BG面を横スクロールさせたい場合、BGサイズが 256x256 だと余裕が無いので、 最低でも 512x256 のサイズを用意する必要があり、ちょっと辛いような……。 3Dはメインメモリにマップすることも出来るようなので問題ないのかな。あるい はVRAMを足して 256KB で一つの領域として使えばいいのか。 テクスチャは謎だ。フォーマットはA3I5/A5I3/4色/16色/256色/3万色/4x4圧縮と 選べるようだが、混在させたい場合、ST(RQ)座標はどういうことになるんだろう。 混在させないのが常道かしら。冒頭でGLなら楽勝とか書いたけど一筋縄ではいか なそうだ。 中途半端な容量のVRAM (EFGHI)は、64k VRAM (E)を MAIN OBJ キャラクタ領域に 割り当てるとして(16色で使うと32k余るのは勿体無い気がする……)、残りの 四つはどうしようもないな。HUD的に SUB OBJ を使う分には十分か。
超連射68Kの感動的なリプレイが残ってたのでYoutubeにアップしてみた。 YouTube - Cho Ren Sha 68K (超連射68K) Loop7 Stage0 普通にショボいプレイですが7周目の動画は無いようなのでまぁいいでしょう。 対おしおきボスが見所です。 変リプの録画ついでに(というか、リプレイの録画が本来はついでなんだけど) 色々と検証用の動画を録画してホクホク。なのはいいんだけど調子にのって撮り まくったからエンコが大変だわ。細切れで4時間分くらいある……。
少しずつ積み重ねてきたものが一瞬でパーだぜ。
手元にあるゲームのバージョンが古くて、新バージョンのランキングが表示され てなかったという。現バージョンだと余裕でドベでした! ……恥ずかしーい。
exception をガッツリやっていた。 三つのモードで全一をとったよ。excessモードは実は最後までクリアしてなかっ たりするけどなワハハ。ていうか俺なんかが一位を取ってていいはずはなくて、体験版なのにネットラン キングが稼動していてリプレイのアップロードも出来ちゃうことに気づいてない 人が多いだけだと思うので、気づいた人は早急にスーパーリプレイをアップして くだサーイ。 futureモードは俺のおもしろマシンではリプレイ登録条件である Ave. 55fps を 満たすことが出来ませんでした!グラボならともかく、CPUで足切りされる同人 ゲームって初めてだわ。
盲点だったけど、COM形式は実行できないのね……。 cmd /C $(PCMCONV_DIR)pcmconv.com でも駄目だし、バッチファイルから呼び出 そうとしても command not found とかゆわれてしまうのだった。フルパス指定 しているにも関わらず。 結局、makeから呼ぶのを諦めた。なんか悔しいからpcmconv互換の32ビット実行 形式でも作るか。
http://www.liarsoft.org/diary/20070302.html で XSPアトリビュート →優先度ソート(バケツ) →ラスタ分割(バケツ) →OAMアトリビュート という順に処理していたのを XSPアトリビュート →OAMアトリビュート →優先度ソート(リストのバケツ) →ラスタ分割(配列) に変更した。OAMのattr0にはY座標情報しか入れないので、優先度情報を早めに 使ってしまえば、とっととOAMアトリビュートに変換しちゃっても構わないこと に気づいた。 あんま効果無いけどソースは多少すっきりしたかな。
5日間で0.2kg痩せているペースかな。 61.8 ÷ 0.2 × 5 ÷365 = 4.23なので、 4年後には消えてなくなってしまう計算に……。 ピッチリだったズボンが少し緩くなってきたので足痩せには成功している模様。 この調子だ。
linuxで動くEUPプレーヤを作ってた。が、なんか重い。平均で20%近くCPUを占有 してしまう。(スクリーンショットはたまたま負荷が低い状態で撮ってしまった ので7.04%になってるけど……) 同じマシンのWindows上では平均5%以下なのでなんとかしたいところ。オーディオ デバイスを開くときの作法の問題かなあ。XMMSプラグインでも作ってみるかな。 どうでもいいけど、case sensitiveっていうのかな、ファイル名の大文字小文字 を区別してくれちゃうので、音色ファイルを開くときに都合が悪い。ファイル名 そのものを小文字に統一することで対処してるけどどうしたもんだろ。
着実に痩せてきてはいるな。
インタレ 29.98fps VGA MPEG2の動画ソースをインタレ解除&ランチョスリサイズ で59.94fps QVGAにしてx264で再エンコしているのだが、ソース960MBだったのが 再エンコで870MBになった。 解像度的な情報量は1/4になってるんだし、fps2倍とは言え半分くらいのサイズに なるだろうと思っていたのだが、逆に考えてみたら1ドット辺りの情報量は4倍に なっているわけで、動画圧縮的には解像度を落としてもあんま効果ないってこと かな。 ということはフレームレートが上がった分だけ容量が増えるはずのところを、同 程度のサイズに抑えることが出来たx264は凄いということか。
を見ると「ヒジキる」と読んでしまう。 はて、ヒジキの原材料ってなんだったかな。
なんか体重書くの飽きてきた……。
HSYNC制御を停めて、1個おきに点滅させる表示にしてみたところ、チラつきすぎ てゲームにならなかった。 超連射68Kの点滅モードは割とゲームになってたような気がしたので確認してみ たところ、確かにゲームになる。スプライトが表示可能数を超えたとき、プライ オリティの低い順にチラつかせることで、ゲームに支障が出ないようにしている ようだ。って今頃きづいたのかよ。 |--- 表示可能スプライト ---| | 敵敵 | 煙煙煙煙 | 自機 | 弾弾弾弾 | |------------| ↑この範囲をチラつかせる 6面や0面ボスみたいな巨大オブジェが出てくると、結局全てのスプライトがチラ つくようになるので結構ヤバいけど……。 ちなみに、一個おきに点滅させる方式だと 12 34 ↑上のように4つのスプライトで構成されたキャラがあるとき 1□ □2 3□ □4 左右に分かれて表示されるのでイヤーな感じだ。
T/O
[GBAソフト]のページに BMP2SPR16 を置きました。 *超ハイテク凄い機能 ・範囲指定した箇所から「16x16ドット単位スプライト郡」を一括生成 ・各スプライトの HVFLIP を自動判定 ・とにかくスプライト ・スプライトに特化 ・スプライトが凄い ・スプラ ……誰も使わないだろうから説明は適当でいいか……。 要はXSPにおけるCVOBJ.XのGBA版といった感じのツールです。
一日空いてしまって三日坊主っぽいですがウォーキングは続けてます。
もはや言い訳できない。 今日は雨だったのでスクワットとエクササイズをしてみた。これだ〜。(太鼓の達人風に) 太ももエクササイズのサイトはたくさんあったのだが、絵で選んでみたよ。