type: | Type of number of colors (16 colors, 256 colors, 2048 colors, 32768 colors) |
size: | bitmap screen size 512x256, 512x512, 1024x256, 1024x512 |
addr: | VRAM address. 0x20000 boundary |
Please let me know if it exists.
The sl16MapRA and sl16MapRB functions assume that the page numbers in the table are serial numbers counted from the beginning of VRAM, and multiply the 0th element of the table by 0x800 and register it as an address.
for example,
#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)
For example, if the pattern name is in bank B0 of VRAM, the table must be populated with values such as 128,132,136...
(There seem to be many cases where data such as 0,4,8... is set)
#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);
In this case, the easiest way is to display it by using the slVRAMMode function (see documentation) and setting Div_B (divides only VRAM-B) or NULL as the argument.