Je travaille sur un jeu de pong pour la Nintendo DS. J'utilise libnds pour mettre les choses en place et j'ai rencontré un comportement très étrange. Jusqu'à présent, je ne l'ai essayé que dans des émulateurs, mais j'en utilise trois différents et ils montrent tous ce comportement, donc je pense que je fais quelque chose de mal. Le problème réel est que lorsque j'utilise le calque de fond 1 ou supérieur pour mes graphiques en mosaïque, j'obtiens des rayures étranges partout sur ce calque. Si j'utilise le calque d'arrière-plan 0, le problème disparaît, mais puisque cela est rendu en dernier, je ne peux pas le dessiner dans un autre calque, ce que je veux.Bizarre striping dans les graphiques de carrelage sur Nintendo DS
Mon code d'installation:
void pong::setup_engine()
{
// Setup DS graphics engine.
// -------------------------
videoSetMode(MODE_5_2D | DISPLAY_BG0_ACTIVE | DISPLAY_BG1_ACTIVE | DISPLAY_BG2_ACTIVE);
vramSetBankA(VRAM_A_MAIN_BG_0x06000000);
vramSetBankB(VRAM_B_MAIN_BG_0x06020000);
u8 *tileMemory = reinterpret_cast<u8 *>(BG_TILE_RAM(1));
u16 *mapMemory = reinterpret_cast<u16 *>(BG_MAP_RAM(0));
int bg0 = bgInit(1, BgType_Text8bpp, BgSize_T_256x256, 0, 1);
int bg1 = bgInit(2, BgType_Bmp16, BgSize_B16_256x256, 0, 0);
//bgScroll(bg0, 256, 256);
u16 *ptr = bgGetGfxPtr(bg1);
for (int y = 10; y < 128*60; y++)
{
ptr[y] = 0xFFFF;
}
BG_PALETTE[1] = grey0;
BG_PALETTE[2] = grey1;
BG_PALETTE[3] = grey2;
BG_PALETTE[4] = grey3;
BG_PALETTE[5] = grey4;
BG_PALETTE[6] = grey5;
BG_PALETTE[7] = grey6;
// 32 here is not 32 bytes but 32 half-words, which is 64 bytes.
swiCopy(CORNER_TILE, tileMemory, 32);
swiCopy(TOP_TILE, tileMemory + 64, 32);
swiCopy(SIDE_TILE, tileMemory + (64 * 2), 32);
swiCopy(MAIN_TILE, tileMemory + (64 * 3), 32);
swiCopy(MAP, mapMemory, 32*24);
}
Dans le code ci-dessus j'utilise la couche 1 pour bg0, qui est ma couche graphique en mosaïque. Cela fait apparaître les bandes étranges; si je devais changer à 0 comme ça, il apparaîtrait comme prévu:
int bg0 = bgInit(0, BgType_Text8bpp, BgSize_T_256x256, 0, 1);
Toutes les idées que la cause du problème, et quelle est la solution?
Image of weird stripes http://i41.tinypic.com/1oaern.png
Pouvez-vous poster une capture d'écran de la rayure? –
Bien sûr, il s'agit d'un code légèrement modifié, mais c'est plus ou moins la même chose que ce que j'ai obtenu la première fois. Mes carreaux ne contiennent pas ces rayures. – Skurmedel