Menu

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.

Voir les contributions Menu

Messages - EvilTroopa

#1
Voila ce qu'il y a dans ma boucle principale :

while(1) {

scanPads();
pad0 = padsCurrent(0);

move = 0;

if(pad0 & KEY_RIGHT){
++scrollX;
move = 1;
dir = 1;
}
if(pad0 & KEY_LEFT){
--scrollX;
move = 1;
dir = 3;
}

if(pad0 & KEY_UP){
--scrollY;
move = 1;
dir = 0;
}
if(pad0 & KEY_DOWN){
++scrollY;
move = 1;
dir = 2;
}

if(move == 1){
++animFrame;
animFrame &= 31;
}else{
animFrame = 0;
}

flipX = 0;
if(dir == 3) flipX = 1;

oamSet(0, posX, posY, 2, flipX, 0, animFrames[dir * 4 + (animFrame >> 3)], 0);

keepScrollInRange();

bgSetScroll(1, scrollX, scrollY);

consoleDrawText(0, 1, "%04u - %05u, %05u", pad0, scrollX, scrollY);


WaitForVBlank();
++iFrame;

}


Pour info, si retire tout sauf le VBL de ma boucle, j'ai quand m?me le probl?me.

J'ai testé de faire un autre projet avec un fond plus petit (256x256) j'ai toujours le m?me probl?me. Je l'ai mis en PJ de ce post.
Ha ben non... "Impossible d'accéder au chemin des fichiers joints !"

Je viens de lancer bsnes mais il ne semble pas marcher sur mon pc portable "Failed to initialise video driver". Je testerai sur mon PC de bureau plus tard.
#2
C'est le moment d'inaugurer ce forum :D

J'ai créé une map :


Voila ce que ça donne sur émulateur :


Comme on peut le voir, en haut j'ai une bande noire qui apparait. Je ne vois pas d'o? ça peut venir...
De m?me pour le bas de l'écran j'ai 2 pixels noirs constamment en bas sur ZNES et un peu plus sur NO$SNS (apparemment l'écran est plus haut sur cet émulateur).
Voila le code qui initialise mon BG :

// Initialize SNES
consoleInit();

// Initialize text console with our font
consoleInitText(0, 1, &font);

// Now Put in 16 color mode and disable Bgs except current
setMode(BG_MODE1, 0);  bgSetDisable(2);

// Copy tiles to VRAM
bgInitTileSet(1, &bg1, &bg1pal, 0, (&bg1_end - &bg1), 16*2, BG_16COLORS, 0x5000);

// Init Map to address 0x1000 and Copy Map to VRAM
bgSetMapPtr(1, 0x1000, SC_64x64);
for(i = 0; i < 64; i++){
u8 *ptrMap  = &bg1map + 64*i*2; // 64 = map size x *2 because each entry is 16bits length
//if (i >= 16) ptrMap  = &bg1map + 32*5*2; // Init anything else with white line <= WTF ?
u16 ptrVRAM = 0x1000 + i * 64; // screen begin at 0x1000
dmaCopyVram(ptrMap, ptrVRAM, 64*2); // copy row to VRAM
dmaCopyVram((ptrMap+64*2), (ptrVRAM+64*64), 64*2); // copy row to VRAM
}

J'ai repris le code de l'exemple mariolike, mais je n'ai pas bien saisi la ligne commentée (d'o? le "WTF").

Le débug affiche pad0 et le scroll X et Y.

Une idée ?

Edit : je note d'ailleurs que par rapport ? l'image le scroll est décalé... Je suppose que ça confirme qu'il y a un probl?me dans l'initialisation du BG...