











d'où ça vien cte saloperie????
g utilisé le bckg dans le tuto d'exor, avec les mêmes routines, et ça donne cette merde!!!
alors ke les sprites marchent très bien!!
fuck!

ça peut venir d'où à votre avis?
si je mets le fichier contenant le sprite avant l'include du background, ça foire le sprite ET le background, si je le mets après, le sprite passe bien, mais pas le background

bon, je mets ma source, comme ça o moins...
vaaala:
#include "c:devkitadvincludegba.h" #include "c:devkitadvincludegbaIO.h" #include "c:devkitadvdatabkg.h" #include "c:devkitadvdatabulle03_00.h" // 64x32pixels #include "c:devkitadvdatabulle02_00.h" // 32x32pixels #include "c:devkitadvdatabulle01_00.h" // 16x16pixels #include "c:devkitadvdatabulle00_00.h" // 8x8pixels #include "c:devkitadvdataOAM_Pal.h" // 256 couleurs #include "c:devkitadvdatabkg_pal.h" OAMstruct OAM_Buffer[128]; typedef struct _BALLSstruct { s16 x; s16 y; s16 xadd; s16 yadd; u16 weightcoeff; } BALLSstruct; BALLSstruct BALLS[3]; u16 SPRITE_INDEX[256]; u16 counter; u16 size; u32 offset; void vsync(void) { asm(" ldr r0,=0x04000006 scanline_wait: ldrh r1,[r0] cmp r1,#160 bne scanline_wait ") } // Copy cnt Data to scr from dst (by DMA3 method) void DMA3_Copy(u32 src, u32 dst, u32 cnt) { REG_DM3SAD = src; REG_DM3DAD = dst; REG_DM3CNT = cnt; } // Copy OAM_Buffer dans les vrai OAM. void OAM_Copy(void) { int i; for(i=0; i<128; i++) { OAM[i].A0 = OAM_Buffer[i].A0; OAM[i].A1 = OAM_Buffer[i].A1; OAM[i].A2 = OAM_Buffer[i].A2; OAM[i].A3 = OAM_Buffer[i].A3; } } void Initialisation(void) { counter = 1; size = 0; offset = 8*8; SPRITE_INDEX[0] = 1; } //Point d'entré... int main(void) { int x,y,gravity,i; x=0; y=0; gravity=1; REG_DISPCNT = MODE_1 | OBJ_ENABLE | OBJ_MAP_1D | BG0_ENABLE; BKG0CNT = BKG_COLOR_MODE_256 | BKG_CHR_BLOCK_1; // Load Palette Initialisation(); // Load Palette DMA3_Copy((u32)&OAM_Pal, (u32)OBJPAL, ENABLE_TRANSFER | TRANSFER_SIZE_16 | 256/2); // On peut pas envoyer des 32bits (surement a cause du bus qui doit etre en 16bit) // Load bulle03_00 size = 64*32; DMA3_Copy((u32)&bulle03_00, (u32)OBJCHR + offset, ENABLE_TRANSFER | TRANSFER_SIZE_32 | (size/4)); offset += size; SPRITE_INDEX[counter] = SPRITE_INDEX[counter - 1] + size/64; counter++; // Load bulle02_00 size = 32*32; DMA3_Copy((u32)&bulle02_00, (u32)OBJCHR + offset, ENABLE_TRANSFER | TRANSFER_SIZE_32 | (size/4)); offset += size; SPRITE_INDEX[counter] = SPRITE_INDEX[counter - 1] + size/64; counter++; // Load bulle01_00 size = 16*16; DMA3_Copy((u32)&bulle01_00, (u32)OBJCHR + offset, ENABLE_TRANSFER | TRANSFER_SIZE_32 | (size/4)); offset += size; SPRITE_INDEX[counter] = SPRITE_INDEX[counter - 1] + size/64; counter++; // Load bulle00_00 size = 8*8; DMA3_Copy((u32)&bulle00_00, (u32)OBJCHR + offset, ENABLE_TRANSFER | TRANSFER_SIZE_32 | (size/4)); offset += size; SPRITE_INDEX[counter] = SPRITE_INDEX[counter - 1] + size/64; counter++; // Initialise le sprite pour que le HW le reconnaisse et l'affiche // boule 64x32 OAM_Buffer[0].A0 = S_01 | COLOR_DEPTH_256 | (0 & Y_MASK); // Y OAM_Buffer[0].A1 = S_11 | (0 & X_MASK); // X OAM_Buffer[0].A2 = SPRITE_INDEX[0] << 1; // Tiles de depart OAM_Buffer[0].A3 = 0; // Rot/Scaling BALLS[0].x=0; BALLS[0].y=0; BALLS[0].xadd=4<<4; BALLS[0].yadd=0; BALLS[0].weightcoeff=4; // boule 32x32 OAM_Buffer[1].A0 = S_00 | COLOR_DEPTH_256 | (0 & Y_MASK); // Y OAM_Buffer[1].A1 = S_10 | (0 & X_MASK); // X OAM_Buffer[1].A2 = SPRITE_INDEX[1] << 1; // Tiles de depart OAM_Buffer[1].A3 = 0; // Rot/Scaling BALLS[1].x=0; BALLS[1].y=0; BALLS[1].xadd=3<<4; BALLS[1].yadd=0; BALLS[1].weightcoeff=3; // boule 16x16 OAM_Buffer[2].A0 = S_00 | COLOR_DEPTH_256 | (0 & Y_MASK); // Y OAM_Buffer[2].A1 = S_01 | (0 & X_MASK); // X OAM_Buffer[2].A2 = SPRITE_INDEX[2] << 1; // Tiles de depart OAM_Buffer[2].A3 = 0; // Rot/Scaling BALLS[2].x=0; BALLS[2].y=0; BALLS[2].xadd=5<<4; BALLS[2].yadd=0; BALLS[2].weightcoeff=2; // boule 8x8 OAM_Buffer[3].A0 = S_00 | COLOR_DEPTH_256 | (0 & Y_MASK); // Y OAM_Buffer[3].A1 = S_00 | (0 & X_MASK); // X OAM_Buffer[3].A2 = SPRITE_INDEX[3] << 1; // Tiles de depart OAM_Buffer[3].A3 = 0; // Rot/Scaling BALLS[3].x=0; BALLS[3].y=0; BALLS[3].xadd=6<<4; BALLS[3].yadd=0; BALLS[3].weightcoeff=1; DMA3_Copy( (u32)&background_pal, (u32)BKGPAL, ENABLE_TRANSFER | TRANSFER_SIZE_16 | 256/2); //Load data DMA3_Copy( (u32)&background, (u32)BKGCHR, ENABLE_TRANSFER | TRANSFER_SIZE_32 | (240*160/4)); // On reordonne les tiles 30*8 = 240 et 20*8 = 160 (Taille ecran) for(y=0; y<20; y++) for(x=0; x<30; x++) { BKGTILES[y*32+x] = y * 30 + x; // on saute a chaque fois les 16pixels invisible (la GBA resonne avec un ecran de 256x256) } x=0; y=0; while(1) { vsync(); OAM_Copy(); OAM_Buffer[0].A0 = S_01 | COLOR_DEPTH_256 | (BALLS[0].y & Y_MASK); // Y OAM_Buffer[0].A1 = S_11 | (BALLS[0].x & X_MASK); // X OAM_Buffer[0].A2 = SPRITE_INDEX[0] << 1; // Tiles de depart OAM_Buffer[0].A3 = 0; OAM_Buffer[1].A0 = S_00 | COLOR_DEPTH_256 | (BALLS[1].y & Y_MASK); // Y OAM_Buffer[1].A1 = S_10 | (BALLS[1].x & X_MASK); // X OAM_Buffer[1].A2 = SPRITE_INDEX[1] << 1; // Tiles de depart OAM_Buffer[1].A3 = 0; OAM_Buffer[2].A0 = S_00 | COLOR_DEPTH_256 | (BALLS[2].y & Y_MASK); // Y OAM_Buffer[2].A1 = S_01 | (BALLS[2].x & X_MASK); // X OAM_Buffer[2].A2 = SPRITE_INDEX[2] << 1; // Tiles de depart OAM_Buffer[2].A3 = 0; OAM_Buffer[3].A0 = S_00 | COLOR_DEPTH_256 | (BALLS[3].y & Y_MASK); // Y OAM_Buffer[3].A1 = S_00 | (BALLS[3].x & X_MASK); // X OAM_Buffer[3].A2 = SPRITE_INDEX[3] << 1; // Tiles de depart OAM_Buffer[3].A3 = 0; for(i=0;i<4;i++) { BALLS[i].yadd+=gravity; BALLS[i].x+=BALLS[i].xadd>>4; BALLS[i].y+=BALLS[i].yadd; if(BALLS[i].x>240-32+i*8+4-i) { BALLS[i].x=240-32+i*8+4-i; BALLS[i].xadd=-BALLS[i].xadd; } else if(BALLS[i].x<0) { BALLS[i].x=0; BALLS[i].xadd=-BALLS[i].xadd; } if(BALLS[i].y>160-32+i*8+4-i) { BALLS[i].y=160-32+i*8+4-i; BALLS[i].yadd=-BALLS[i].yadd; BALLS[i].yadd=BALLS[i].yadd+BALLS[i].weightcoeff; if(BALLS[i].xadd<0){ BALLS[i].xadd+=1; } else if(BALLS[i].xadd>0) { BALLS[i].xadd-=1; } } else if(BALLS[i].y<0){ BALLS[i].y=0; BALLS[i].yadd=-BALLS[i].yadd; } } } }
[edit]Edité par sBibi le 22-12-2001 à 15:00:57[/edit]
[edit]Edité par sBibi le 22-12-2001 à 15:07:15[/edit]