#author("2023-05-25T18:19:57+09:00","","")
#author("2023-05-26T19:10:11+09:00","","")
* ビットマップモード4 [#udb7a212]
mode5です。画面のサイズが小さく160*128と32768色表示。パレットは使わず、mode3のように2バイトを色データとして使います。画面が小さいのはフレームバッファを2つもっているからです。あまり使われることはないのでサンプルコードを軽くのせるだけにします。

| サイズ           | 160*128 |
| フレームバッファ | 2       |
| 色/パレット     | 32768色 |
| 伸縮回転         | 可能    |

** mode5の画像を表示 [#cfc8eca7]
 #include "lib/gba.h"
 #include "res.h"
 
 //---------------------------------------------------------------------------
 void WaitForVsync(void)
 {
 	while(*(vu16*)0x4000006 >= 160) {};
 	while(*(vu16*)0x4000006 <  160) {};
 }
 //---------------------------------------------------------------------------
 void Mode5SetFrame(u8* img, u32 f)
 {
 	u8* fr;
 
 	if(f == 1)
 	{
 		fr = (u8*)0x6000000;
 	}
 	else
 	{
 		fr = (u8*)0x600A000;
 	}
 
 	u32 x, y;
 
 	for(y=0; y<160; y++)
 	{
 		for(x=0; x<240; x++)
 		{
 			fr[y*240+x] = img[y*240+x];
 		}
 	}
 }
 //---------------------------------------------------------------------------
 int main(void)
 {
 	// モード設定。フレーム2を指定
 	SetMode(MODE_5 | BG2_ENABLE | BACKBUFFER);
 
 	// 画像の読み込み
 	Mode5SetFrame((u8*)&frame1Bitmap, 1);
 	Mode5SetFrame((u8*)&frame2Bitmap, 2);
 
 
 	for(;;)
 	{
 	    WaitForVsync();
 	}
 }

***動作画面 [#i3920c44]
#ref(1.png,nolink)
#ref(2.png,nolink)

** まとめ [#ca04b78e]
今までのまとめです。mode4, mode5はチップ容量が高価でカードリッジ容量が8MBまでなど、製造コストにハードルのあった時代で使われていたモードだと思います。現在プログラミングをするならば、個人的にmode3でいいんじゃないかなあと。フレームバッファはVRAMに用意しなくても別領域で十分ですし、DMA使えば一瞬で転送できますし。なお2020年代では衛星写真(たとえば7000x7000ピクセル、4波長、1画素8bit)は1枚あたり約1GBです。ちょっと桁おかしいのではないかと思いそうですけれど、時代の流れとしてはこのようになっています。話を戻しますがGBAでは最大32MBまで使えます。気にせず一番解像度の高いmode3を選択しましょう。
今までのまとめです。mode4, mode5はチップ容量が高価で、製造コストにハードルのあった時代で使われていたモードだと思います。現在プログラミングをするならば、個人的にmode3でいいんじゃないかなあと。フレームバッファはVRAMに用意しなくても別領域で十分ですし、DMA使えば一瞬で転送できますし。なお2020年代では衛星写真(たとえば7000x7000ピクセル、4波長、1画素8bit)は1枚あたり約1GBです。ちょっと桁おかしいのではないかと思いそうですけれど、時代の流れとしてはこのようになっています。話を戻しますがGBAでは最大32MBまで使えます。気にせず一番解像度の高いmode3を選択しましょう。

| モード           | mode3   | mode4           | mode5   |
| サイズ           | 240*160 | 240*160         | 160*128 |
| フレームバッファ | 1       | 2               | 2       |
| 色/パレット     | 32768色 | 256色/1パレット | 32768色 |
| 伸縮回転         | 可能    | 可能            | 可能    |

** 履歴 [#ja129eaa]
- 2023/04/22
- 2014/12/21

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS