私は任天堂DS用のポンゲームに取り組んでいます。私は物事を設定するためにlibndsを使用しています、私は非常に奇妙な動作に出くわしました。これまで私はエミュレータで試してみましたが、3つの異なるものを使用しています。これらはすべてこの動作を示していますので、私は何か悪いことをしていると思います。ニンテンドーDSでのタイルグラフィックスの奇妙なストライピング
実際の問題は、タイル張りのグラフィックスに背景レイヤー1以上を使用すると、そのレイヤー全体に奇妙な縞ができてしまうことです。背景レイヤー0を使用すると問題は解決しますが、最後にレンダリングされるので、実際に別のレイヤーに描画することはできません。
マイセットアップコード:私のタイル張りのグラフィック層である私はBG0のためのレイヤ1を使用し、上記のコードでは、
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);
}
。これにより、奇妙な縞模様が現れます。
int bg0 = bgInit(0, BgType_Text8bpp, BgSize_T_256x256, 0, 1);
問題を引き起こす原因は何か、その解決策は何ですか?
Image of weird stripes http://i41.tinypic.com/1oaern.png
ストライピングのスクリーンショットを投稿できますか? –
確かに、それは若干変更されたコードからのものですが、最初のものとほぼ同じです。私のタイルはこれらの縞模様を含んでいません。 – Skurmedel