正直日記



2008/05/08

_ 微動だにしない画面をなくす
タイトルやコンフィグなど、殆ど動きが無い画面で寂しかったので、カーソルや
背景等がなるべくアニメーションするよう、細かい部分に手を入れる。

リソースを作る作業は問題ないけど、それをプログラムに反映させる作業がしん
どい。スプライトアニメーションに比べてBGアニメーションの面倒さと言ったら
無いわよ。
_ swi 0 で IO レジスタがリセットされない
swi 0 でリセットされるのはスタック領域とCPUの状態だけなので、bss や data
セクションはそのままの状態になる。まぁこれは crt0.s でリセットしてくれて
いるので問題ないとして、I/O レジスタもリセット前の状態が引き継がれるのは
盲点だった……。

ブート時の I/O 初期化はガッツリとやっとかないと駄目ね。

void 
init_all_io(void)
{
  volatile u32 *io = 0x4000000;
  for (int i = 0; i <= 0x208; i += 4) { // REG_IME までを初期化
    *io++ = 0;
  }
}
こんな感じか。ガッツリとか言いつつ手抜きですね!

名無しさん > mov r0, #0xFC; swi (0x01 << 16); swi (0x00 << 16); @ で良いのでは?  (2008/05/14 16:05:23)
> swi 1 は見落としてました。そっか、そっちを使った方が楽だし確実ですね。(日記の例だとVRAMとか考慮して無かった……)  (2008/05/14 16:57:58)

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