正直日記



2005/06/01

_ Wait Stateの謎 (3)
壊れたcpu_countをBGで表示する際に、桁溢れしてタイルマップ→PCGの順に
破壊してたという。しょーもな。(;´Д`)

ただ、何故cpu_countが壊れるのかはまだ謎だ。でも多分これもしょうもない
所でポカやってるんだろうなぁ。自信がなくなってきた。
_ Wait Stateの謎 (2)
PCG にキャラを転送した瞬間から負荷をかけ続けると壊れないようだ。ルー
プ内のベンチ用カウンタも壊れていたので、思い切ってベンチを外し代わり
に VBlankIntrWait() を入れてみたところ、負荷を掛けなくてもPCG は壊れ
なくなった。

unsigned int cpu_count;

int main(void)
{
	REG_WAITCNT = WS_FASTER;
	cpu_count = 0;
	scene = Start;

	GameInit(spr, task, scene);
	IRQ_RegistFunc(Int_VBLANK, (u32*)&VBlankFunc);
	IRQ_Start();

	while (1)
	{
		cpu_count++; // ←壊れる
//		VBlankIntrWait();
	}
	return 0;
}
なんなんだ。(;´Д`) 実機でデバッガ使いたいなぁ……。
_ Wait Stateの謎
エミュだと速いのに実機のベンチが遅いのでREG_WAITCNT を弄ってみた所、
エミュの1.2倍程度の速さで動くようになった。しかし何故かPCG の内容が
若干壊れる。

#define WS_FASTEST  (WS_SRAM_2WAIT \
                    | WS_ROM0_1ST_2WAIT | WS_ROM0_2ND_1WAIT \
                    | WS_ROM1_1ST_2WAIT | WS_ROM1_2ND_1WAIT \
                    | WS_ROM2_1ST_2WAIT | WS_ROM2_2ND_1WAIT \
                    | WS_MODE_AGB | WS_PREFETCH_ENABLE)

#define WS_FASTER   (WS_SRAM_3WAIT \
                    | WS_ROM0_1ST_3WAIT | WS_ROM0_2ND_1WAIT \
                    | WS_ROM1_1ST_3WAIT | WS_ROM1_2ND_1WAIT \
                    | WS_ROM2_1ST_3WAIT | WS_ROM2_2ND_1WAIT \
                    | WS_MODE_AGB | WS_PREFETCH_ENABLE)

#define WS_NORMAL   (WS_SRAM_8WAIT \
                    | WS_ROM0_1ST_3WAIT | WS_ROM0_2ND_1WAIT \
                    | WS_ROM1_1ST_3WAIT | WS_ROM1_2ND_1WAIT \
                    | WS_ROM2_1ST_3WAIT | WS_ROM2_2ND_1WAIT \
                    | WS_MODE_AGB)

という設定でそれぞれ試してみた。Flash2Advance 256MではWS_FASTESTだと
動かなかった。WS_FASTERは動いて、これが大体1.2倍。だけどPCG が壊れる。
WS_NORMALだとエミュと同程度の速度になる。PCG の内容は壊れない。

ってーことはプリフェッチの有無が影響してんのか。でも市販ゲームはプリ
フェッチを有効にしてもPCG は壊れてないわけで。具体的に何が起こってる
んだろう?
_ ドット絵描いてます
だりぃ。

斜め上から見た機体をツールの回転機能で自動回転させてみたら、やっぱり
変だ!ということでZ軸も考慮した回転を手動で描いていますがめげそうだ。
諦めるかも。
_ そうか、もう月末なんだな。(・ω・)
(゚ω゚)ゲツマツー

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