読者です 読者をやめる 読者になる 読者になる

Arduboy 実験8

今日やったことまとめ。

・画像コンバータを複数ファイルに対応しました。
1つのファイルに1ヘッダは大変です。


・画像形式は二種類あった方が便利みたいです。
oled形式(ディスプレイ仕様)
タイトルの1枚絵や、フォント用。

→ビットマップ形式
8x8, 16x16などの小さいキャラクタで、
画面の端に移動させても部分表示できる境界有利の構造。
GBAでいうスプライト。


・画面右のLEDが点灯していると音が歪む。
起動後すぐには演奏しないようがいいです。


arduino libraryの音ライブラリ部分はバグがあるっぽい。
サンプル演奏のやや後半あたりが怪しい。
自分のはなぜか問題なし(汗。


・ループの変数は8bit、16bitどちらを使うべきか。
というか悩むまでもない話ですけど念のためです。

//	volatile unsigned int  i, j;
	volatile unsigned char i, j;

	volatile unsigned long m1, m2, m3, m4;

	m1 = millis();
	for(i=0; i<200; i++){ for(j=0; j<200; j++) {} } m2 = millis();
	for(i=0; i<200; i++){ for(j=0; j<200; j++) {} } m3 = millis();
	for(i=0; i<200; i++){ for(j=0; j<200; j++) {} } m4 = millis();

	OledDrawStr(0, 2, "%l", m1);
	OledDrawStr(0, 3, "%l", m2);
	OledDrawStr(0, 4, "%l", m3);
	OledDrawStr(0, 5, "%l", m4);
	OledDrawStr(0, 6, "%l", m4 - m1);

・結果

char	int

0x0c	0x0c
0x27	0x3c
0x44	0x6c
0x60	0x9c

0x54	0x90(10進数で84、144)

12万回ループで大雑把に1.7倍ぐらい。


・豆知識1

avr-size test.elf -x
   text    data     bss     dec     hex filename
 0x265e    0x38   0x4a0   11062    2b36 test.elf

・豆知識2

avr-objdump -S hello.cpp.o >test.txt
avr-objdump -D test.elf > test2.txt