В режиме 5 DS имеет 3 фоновых слоя, а вызов bgInit
с 2 возвращает ссылку на другой слой на том же экране.Если вы хотите использовать слой на подэкране, используйте bgInitSub
.
Также есть 2 палитры;один на главном экране и другой на подэкране.Палитра подэкрана имеет значение BG_PALETTE_SUB
.
. Надеемся, этот код покажет изображение на втором экране (изменения помечены /* ! */
):
int main(void)
{
videoSetMode(MODE_5_2D);
vramSetBankA(VRAM_A_MAIN_BG_0x06000000);
videoSetModeSub(MODE_5_2D);
vramSetBankC(VRAM_C_SUB_BG_0x06200000);
int bg3 = bgInit(3, BgType_Bmp8, BgSize_B8_256x256, 0,0);
dmaCopy(hey_typBitmap, bgGetGfxPtr(bg3), 256*256);
dmaCopy(hey_typPal, BG_PALETTE, 256*2);
int bg3sub = bgInitSub(3, BgType_Bmp8, BgSize_B8_256x256, 0,0); /* ! */
dmaCopy(drunkenlogoBitmap, bgGetGfxPtr(bg3sub), 256*256); /* ! */
dmaCopy(drunkenlogoPal, BG_PALETTE_SUB, 256*2); /* ! */
while(1)swiWaitForVBlank();
return 0;
}