type: | 色数のタイプ(16色、256色、2048色、32768色) |
size: | ビットマップ画面のサイズ 512x256、512x512、1024x256、1024x512 |
addr: | VRAMのアドレス。0x20000バウンダリ |
もし存在すれば教えてください。
sl16MapRA関数, sl16MapRB関数ではテーブルに入っているページナンバーが VRAMの先頭から数えた通し番号になっているものとして、テーブルの0番目の 要素を0x800倍し、アドレスとして登録します。
例えば、
#define RBG0_CEL_ADR (VDP2_VRAM_A0) #define RBG0_MAP_ADR (VDP2_VRAM_B0) #define RBG0_COL_ADR (VDP2_COLRAM) #define RBG0_KTB_ADR (VDP2_VRAM_A1) #define RBG0_PRA_ADR (VDP2_VRAM_A1+ 0x1fe00)
という例のように、VRAMのB0バンクにパターンネームがある場合、
テーブルには128,132,136...といった値が設定されなければなりません。
(0,4,8...というデータをセットするケースが多いようです)
#define MAPOFFSET (RBG0_MAP_ADR-VDP_VRAM_A0)/0x800 #define DD 4+MAPOFFSET Uint8 map[16] = { 0*DD, 1*DD, 2*DD, 3*DD, 4*DD, 5*DD, 6*DD, 7*DD, 8*DD, 9*DD,10*DD,11*DD, 12*DD,13*DD,14*DD,15*DD, }; #undef DD sl16MapRA(map);
この場合、一番簡単な方法として、slVRAMMode関数(ドキュメント参考の事) で引数にDiv_B(VRAM-Bのみ分割)またはNULLを定すれば表示できると 思われます。