1

Je debute en programmation sur GBA et je recherche un peu d'aide.

Je ne comprends pas bien comment fonctionne les acces directs à la memoire (DMA)

je code en C/C++


ces quelques lignes de codes ne font rien :

#define REG_DMA3SAD *(unsigned long*)0x40000D4
#define REG_DMA3DAD *(unsigned long*)0x40000D8
#define REG_DMA3CNT *(unsigned long*)0x40000DC

...

REG_DMA3SAD=(unsigned long)SplashData;
REG_DMA3DAD=(unsigned long)VRAM;
REG_DMA3CNT=9600|DMA_32NOW;

...

alors qu'elles sont sensées afficher une image (SplashData) à l'ecran

Par contre si je modifie mon code en

...

while (1) {
REG_DMA3SAD=(unsigned long)SplashData;
REG_DMA3DAD=(unsigned long)VRAM;
REG_DMA3CNT=9600|DMA_32NOW;
}

...

c'est à dire la meme chose dans une boucle, alors l'image s'affiche...

Donc questions:
Les acces direct à la memoires sont-ils bien geres par les emulateurs? (parceque j'execute mes bin sur emul seulement)(j'ai pas de GBA)
qu'y a-t'il à faire pour que cela fonctionne?

Merci d'avance!

2

Definition des registres :


/****************** Port DMA3 ******************/
#define REG_DMA3_SRC *(u32*)0x040000D4
#define REG_DMA3_DST *(u32*)0x040000D8
#define REG_DMA3_CTR *(u32*)0x040000DC

#define ENABLE_TRANSFER 0x84000000
#define TRANSFER_SIZE_16 0x0
#define TRANSFER_SIZE_32 0x00000400

définition de la fonction de copie :

// 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;
}

petit exemple pour un background :


// Load Palette
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)
}

while(1);

}

(extrait du "tuto" d'exor http://www.multimania.com/aghnar666/exor_tuto.zip )
[edit]Edité par Aghnar le 11-01-2002 à 16:23:09[/edit]

3

dis-moi Aghnar, tu joue a Guilty Gear X ?
vador
linux rocks
NoKaMiKaZe@hotmail.com

4

nan pkoi ?? grin