正直日記



2005/01/31

_ VRAM管理
色々な手法を考えてるけど、これだ!と思う管理方法がなかなか出てこない。
今のところは仮想OAMに転送元キャラクタアドレスを格納しておいて、
OAM更新と併せて、先頭から詰めて盲目的にDMAコピーする方法を採っている。

垂直帰線期間は83,776cycleあるから、r/w=4/2の計6cycleで8ドット(4bit/dot)
転送出来て最大111,701ピクセルかな(嘘かもしれない。CowBiteSpecによると
4cycleで、Managing Sprite Cel VRAMによると6cycleになってる。後で検証し
ようと思ったまま放置中)。32x32のスプライトに換算すると109キャラクタ分に
相当するグラフィックが転送できるってことになるけど、実際にはリンクリスト
を追ったりOAMを更新したりでもっと少なくなる。あと更新する必要が無いキャラ
クタもコピーしてたりして無駄が多い。というのが、表面化して無いけど今の所
の問題点。

んで、今日mallocを弄っていた時に「これを流用すればいいんじゃん」と思いつ
いた。そこまでは良かったけど、具体的にどう流用するのかはまだ何も考えてない。

適当に続く。

2005/01/27

_ 無題
Compiler Optimization (Radium Software)

GBAの場合は殆どのコードをROM上で直接実行するため、コードサイズが問題になる
ことは殆ど無いけど、IWRAMにコードを転送する場合は多少気になることもある。

例えば以下のようにmakefileを記述しておいて、IWRAMで実行するコードは
ARM State / サイズ優先でコンパイルし、ROMで実行するコードはThumb State /
速度優先でコンパイルするとか、そういうソリューションも有りかもしれんね。
最も、ARM Stateのコードはアセンブリ言語で書くだろうから、あんまり意味無い
かもしれない。

OPTIMIZE_SPEED	= -O2
OPTIMIZE_SIZE	= -O1
CFLAGS_THUMB	= $(CFLAGS) -mthumb
CFLAGS_ARM	= $(CFLAGS) -marm

%_arm.o: %_arm.c
	@echo compiling $<
	@$(PREFIX)gcc -MMD $(CFLAGS_ARM) $(OPTIMIZE_SIZE) -c $< -o $@

%.o: %.c
	@echo compiling $<
	@$(PREFIX)gcc -MMD $(CFLAGS_THUMB) $(OPTIMIZE_SPEED) -c $< -o $@

>
(追記)あれれ?-O2の方が縮んだよ?それどころか-O3は更に縮むよ?
pdrv.o
-O1 : 6.29 KB (6,448 bytes)
-O2 : 5.82 KB (5,960 bytes)
-O3 : 5.81 KB (5,956 bytes)

この日記を書いた日にした実験では-O1の方が縮むという結果が
残っているので、ケースバイケースなのかもしれない。
 (2005/02/20 10:27:46)

2005/01/26

_ 日進月歩
DSで自作デモを動かす人が出てきた。
http://auia.net/ds/
http://www.thepernproject.com/ds/
下のURLはムービーが用意されている。上画面がパーティクルで下画面がfireだね。
後ろで子供が泣いているのと、それをあやしている声がするのが興味深い。
面白くなってきたなー。

2005/01/25

_ リバースコンパイラ
HDDを整理してたらPPZ対応前のPMDFMで作られたデータが出てきた。
PPCだかPPSだかのパートを使ってるため現行のPMDFMプレイヤーではPCMが
鳴らないので、PMDRCを使ってPPZ対応にしてやったぜ。PMDRCマンセー。

2005/01/24

_ だまされた
激闘!カーバトラーGO!! 試聴

3年くらい前に試聴してGBAすげえ!と思っていたのだが、実物を聴く機会が無かった
ので他のGBAゲームはしょっぺぇサウンドだよなぁと思っていたのだが、今日聴けた。
割と音がしょぼかった(^_^;)

試聴サンプルの方は16bitでレンダリングしてる上に、サンプルも贅沢に使ってるんだ
なぁ。そうだよなぁ実機は8bitだし、ROM容量も限られてるもんなぁ。量子化ノイズが
乗ってない時点で気付くべきだったんだ。
_ 短期は損気
怒ったタイミングが悪かった。
もっと自制できる様にしないとなぁ。

2005/01/23

_ また音源ドライバ
SMFコンバータと併せての平行開発が進んでいる。
それ以外、特に書くことが無いのでgbadevから音ネタ2題。

How do you insert a MIDI on a Compiled GBA File?
コンパイル済みのROMにMKS4AGBを使って音楽を足すにはどうすればいい?って質問を
した人が、無知でダウソな低脳野郎だと罵倒されてる。ちょっと言いすぎなんじゃな
いの(笑)足すのは無理だけど、アドレステーブルを弄って差し替えるのは可能だと
思うな。最初から純正ドライバを使ってなかったらどうしようもないけど。

Music format for Gameboy advance - commercial games
MusyXなんてドライバがあるなんて知らなかった。これはMIDI系なのかな。

あと任天堂のドライバってSappyって呼ばれてるんだな。ポケモン大好きっ子がサファ
イアからもじって勝手につけた名前が広まってるのは、なんだか違和感があるなぁ。

2005/01/22

_ 性懲りも無く音源ドライバを作り直し
三度目の正直だ。
ぶっちゃけると音周りの仕様を考えるのが一番楽しい。
別にGBAじゃなくてもいいような気がしてきた。

2005/01/21

_ 続々スプライトダブラ
あんまり出しても見づらいだけだな。
_ 続スプライトダブラ
当たり判定を処理しない状態で384個はいける。頑張れば500くらいいけるかも。

2005/01/15

_ PDROMSコンペ始まる!!ぬ
http://www.pdroms.de/news.php?nid=1648
特賞はNDSだって。奮って参加すべし。例によって俺も口だけ頑張ってみる。
ルールを簡単に翻訳するよ。間違ってるかもしれないので信用しないこと。
ルール:
  • 締め切り:2005年4月10日 23時59分
  • 提出物は完全オリジナルで未発表のもの。続編は可。
  • 他人の著作物(コード,音楽,絵,ブランド,名前など)は使っちゃ駄目。
  • 提出物は起動後、最初に"www.consolefever.com"の文字列を表示すること。 (※注:Consolefeverはコンペのスポンサー)
  • サイズ制限は無し
  • シンプルなゲームはコンペから除外されるし賞にも入らない。 (※注:pongとかそういう奴)
  • 移植は駄目。なぜなら移植はスクラッチから作るより簡単だからだ。
  • アダルトや政治的、宗教的なものは駄目。線引きが難しいようなら Kojote まで メールするか EFNET #pdromsで彼を捕まえること。
  • FENIXは使っちゃ駄目。もしFENIXについて知らない場合は、特に問題は無い。
  • 提出物には明確な名前とバージョン、readme.txtをつけること。
  • 提出物はエミュレータで動作するようなフォーマットにすること。 DCの場合は.CDIか.SBI、GP32の場合は.FXEか.FPKであること。 (※注:GBAの場合は.gba/.bin/.mb.binなど)
  • GP32はオーバークロック無し(最大133MHzまで)
  • アーケード・ハードの場合は Nebula で動くこと。
  • グループで参加する場合は何らかの方法で賞品を分けなきゃ駄目。
  • ルールは今後(より明確になるように)変わるかもしれない。
  • 提出された作品は自動的にフリーウェア/カードウェア/PDSもしくはそれに類推するもの になるので留意すること。
  • ソースコードはつけてもいいし、つけなくてもいい。
  • 複数の作品提出は可。でも参加賞は一つだけ。
  • 作品は submissions at pdroms dot de まで送ること。 住所を書くのを忘れないように。Tシャツが届かなくなるよ。
  • コンペの結果が出るまでバイナリーは配布しないこと。スクリーンショットは可。
カテゴリ:
  1. GB, GBC, Intellivision, NGP, NGPC, Odessey2, WS, WSC, GG, NES, SMS, PokemonMini
  2. GBA, MD, GP32, PCE, SFC, DC, AC(NeoGeo, NeoGeoCD, CPS1)
賞品:
  • カテゴリ1:
    • #1 NDS(北米版)とゲーム一個
    • #2 GBA SP(北米版)とゲーム一個
    • #3 NGPCとゲーム五個(箱無し・説明書無し)
  • カテゴリ2:
    • #1 NDS(北米版)とゲーム一個
    • #2 GBA SP(北米版)とゲーム一個
    • #3 NGPCとゲーム五個(箱無し・説明書無し)
  • 賞漏れ(参加賞):
    • Consolefeverのロゴ入りTシャツ
    • Consolefeverで使える5$分の商品券

2005/01/13

_ さくらインターネットを借りる
仕事用のスペースとして300MBのライトプランを借りた。申し込んだ直後に、変なところで
ケチんないでスタンダードにすれば良かったかも、とちょっと思った。ちょっとだけな。
ドメインはどうするかのう。
_ 動物占ってみる
https://noracom.net/fortune/color_cheki1.php

確実に当たっているところを赤字にするよ。

★レッドのクロヒョウのあなたは、外見のスマートさとは違い、ゆっくりとした話し方をし
ます。人当たりも柔らかく、明るく開放的な人柄です。しかし、人見知りが激しく、初対面
の人と話し合うことが苦手なタイプです。
★また、外見からは想像できないほどのパワーを秘めています。時代を先取りして、成功を
つかむために、全力を尽くして頑張るタイプです。
★線が細く、現実感のなさが時々あらわれます。それが外見と同調すると、情緒性と芸術的
な感受性、シャープなセンスとなって現れます。しかし、何がなんでもやり通すという根性
や信念が弱く、粘り強さに欠けるので、やりかけた仕事も途中で投げ出すこともあるかもし
れません。
★表面上はスマートで迷うことを知らない風ですが、実生活では意外と気の迷いも多く、自
分で自信を持って決断したり行動できないところがあるようです。
★しかし、自分の内面を見て欠点をふりかえる反省心は十分にあります。この真面目でひた
むきな姿勢が、周囲の共感や信望を得ます。
★絶えず希望を持って、向上していこうと心がけます。意外と気分に左右されるところもあ
るので、成果にもムラがないように注意しましょう。

おい、なんだこの占いわ(;´Д`)失礼だな

> レッドで黒ヒョウという時点でもう破綻してると思った。  (2005/01/14 22:19:49)
> 年明けにスタンダード申込したよ。100MBも使ってないが、まあライトより軽いって聞いたし  (2005/01/15 09:05:15)
> 確かに破綻してる!僕はもう駄目だ(;´Д`)  (2005/01/15 09:49:38)
> /homeまで遡ると他ユーザのディレクトリが丸見えだけど、数えたら350人くらい収容されてたよ<さくらライト まぁCGIは多少重くてもいいや  (2005/01/15 09:56:29)
> 参考までにスタンダードでは100人ちょいみたい  (2005/01/15 22:24:37)
> つまり三倍軽いのか!値段も三倍で容量も三倍!ライトとは違うのだよライトとは!  (2005/01/16 01:03:52)

2005/01/12

_ 今日も揺れてた
工事でも揺れたが(これをP波とする)
今日は、特に風に煽られて強く揺れた(これをS波とする)
私が死んでも代わりはいるもの(これを綾波とする)

2005/01/11

_ 揺れた!(俺の心が)
朝から近所で工事をしてて頻繁に揺れてる。
地震かと勘違いして「揺れたら揺れたと書く」べきところに、そう書きに行って
しまうところだった。いや、揺れてるのは事実だが。

strange > 俺の心が燃えたときにも書いてください  (2005/01/12 01:58:22)
> つまり情熱的なオナニーをしたときは報告しろと  (2005/01/13 06:22:10)

2005/01/03

_ defineのrefine
GBATEK等を参考にしてgba.hを書き直してるけど、これってクリーンルーム方式かも
と思った。NyLib.zipに完全なものが全て入っているのは知ってるけど、これを使う
のはちょっと危ないと思う。

2005/01/02

_ 日帰り帰省
行ってすぐ帰ってきた。
坂道のアイスバーンに嵌まった車を押したり、ワレズカートで自作GBAゲームを披露
したりなどの突発イベントがあって、ちょっと疲れたけどまぁ充実した一日であった。

2005/01/01

_ 元旦からゲーム
明日から帰省するので、移動時間の暇つぶしにやる用のゲームでも作ってみるかと思い
立ち、作り始めたが早速詰まってしまった。スプライト画像データの作り方と持ち方に
ついて。



こういう風に256x256で作ってしまうと(アニメーションさせたり等で)キャラ毎にVRAM
へ転送したいときの指定が面倒くさいので、OAMのMAPPING_TYPEを1Dにするんだけど



すると今度はドットエディタでの編集がしづらくなる。
じゃあどうするかっていうと、パターン毎にファイルを別けるんだけど

    

えーと…
どこで詰まっていたか忘れてしまった。続きはまた今度。
_ そうか、もう年末なんだな。(´ω`)
いい初夢が見られたので今年はかなり期待できそう。幸先いいぞ。

最新
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