Ich arbeite an einem Pong-Spiel für den Nintendo DS. Ich benutze libnds, um Dinge einzurichten, und ich bin auf ein sehr merkwürdiges Verhalten gestoßen. Bis jetzt habe ich es nur in Emulatoren ausprobiert, aber ich benutze drei verschiedene und alle zeigen dieses Verhalten, also vermute ich, dass ich etwas Schlechtes mache.Weird striping in Fliesen Grafiken auf Nintendo DS
Das eigentliche Problem ist, dass wenn ich Hintergrundschicht 1 oder höher für meine gekachelten Grafiken verwenden, bekomme ich seltsame Streifen über die ganze Schicht. Wenn ich die Hintergrundebene 0 verwende, geht das Problem weg, aber da das zuletzt gerendert wird, kann ich es tatsächlich nicht in einer anderen Ebene zeichnen, was ich möchte.
Mein Setup-Code:
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);
}
In dem obigen Code I-Schicht verwenden 1 für BG0, die meine geflieste Grafikschicht ist. Dies lässt die seltsamen Streifen erscheinen; wenn ich es auf 0, so zu ändern, würde es zeigen sich wie erwartet:
int bg0 = bgInit(0, BgType_Text8bpp, BgSize_T_256x256, 0, 1);
Irgendwelche Ideen, was das Problem verursacht, und was ist die Lösung?
Image of weird stripes http://i41.tinypic.com/1oaern.png
Können Sie einen Screenshot des Striping posten? –
Sicher, es ist von einem etwas veränderten Code, aber es ist mehr oder weniger dasselbe wie das, was ich beim ersten Mal bekommen habe. Meine Fliesen enthalten diese Streifen nicht. – Skurmedel