PDA

Voir la version complète : [GBA][Aide] Grosse matrice et Iwram...


DJP
10/03/2006, 21h42
> "make"
template.c
linking cartridge
c:\devkitpro\devkitarm\bin\..\lib\gcc\arm-elf\4.0.2\..\..\..\..\arm-elf\bin\ld.exe: address 0x300800c of c:/devkitPro/examples/gba/test/test.elf section .data is not within region iwram
c:\devkitpro\devkitarm\bin\..\lib\gcc\arm-elf\4.0.2\..\..\..\..\arm-elf\bin\ld.exe: address 0x300800c of c:/devkitPro/examples/gba/test/test.elf section .iwram0 is not within region iwram
c:\devkitpro\devkitarm\bin\..\lib\gcc\arm-elf\4.0.2\..\..\..\..\arm-elf\bin\ld.exe: address 0x300800c of c:/devkitPro/examples/gba/test/test.elf section .iwram1 is not within region iwram
c:\devkitpro\devkitarm\bin\..\lib\gcc\arm-elf\4.0.2\..\..\..\..\arm-elf\bin\ld.exe: address 0x300800c of c:/devkitPro/examples/gba/test/test.elf section .iwram2 is not within region iwram
c:\devkitpro\devkitarm\bin\..\lib\gcc\arm-elf\4.0.2\..\..\..\..\arm-elf\bin\ld.exe: address 0x300800c of c:/devkitPro/examples/gba/test/test.elf section .iwram3 is not within region iwram
c:\devkitpro\devkitarm\bin\..\lib\gcc\arm-elf\4.0.2\..\..\..\..\arm-elf\bin\ld.exe: address 0x300800c of c:/devkitPro/examples/gba/test/test.elf section .iwram4 is not within region iwram
c:\devkitpro\devkitarm\bin\..\lib\gcc\arm-elf\4.0.2\..\..\..\..\arm-elf\bin\ld.exe: address 0x300800c of c:/devkitPro/examples/gba/test/test.elf section .iwram5 is not within region iwram
c:\devkitpro\devkitarm\bin\..\lib\gcc\arm-elf\4.0.2\..\..\..\..\arm-elf\bin\ld.exe: address 0x300800c of c:/devkitPro/examples/gba/test/test.elf section .iwram6 is not within region iwram
c:\devkitpro\devkitarm\bin\..\lib\gcc\arm-elf\4.0.2\..\..\..\..\arm-elf\bin\ld.exe: address 0x300800c of c:/devkitPro/examples/gba/test/test.elf section .iwram7 is not within region iwram
c:\devkitpro\devkitarm\bin\..\lib\gcc\arm-elf\4.0.2\..\..\..\..\arm-elf\bin\ld.exe: address 0x300800c of c:/devkitPro/examples/gba/test/test.elf section .iwram8 is not within region iwram
c:\devkitpro\devkitarm\bin\..\lib\gcc\arm-elf\4.0.2\..\..\..\..\arm-elf\bin\ld.exe: address 0x300800c of c:/devkitPro/examples/gba/test/test.elf section .iwram9 is not within region iwram
make[1]: *** [/c/devkitPro/examples/gba/test/test.elf] Error 1
"make": *** [build] Error 2

> Process Exit Code: 2
> Time Taken: 00:05

Voila, on commence direct par le problème :p
Donc ceci est causé par l'utilisation d'une grosse matrice (100+ * 100+) donc je voudrais savoir s'il y a un moyen de regler se probleme. Je ne suis pas encore très au point sur les différentes mémoires de la GBA donc ... :(

(ce n'est pas pour un jeu, même si ça pourrais améliorer sudoku micro, c'est pour porter un truc pour le fun)

thoduv
10/03/2006, 21h50
Faire une alloc dynamique de la matrice devrait régler le problème. Essaie de dis nous si ca crashe ou pas ... :)

Japi
10/03/2006, 22h11
faut plus de precision...

100*100 de quel type?

Si c'est des octets par exmple, ça fait que 100*100 = 10 000 = moins de 10Ko (9.76 et des brouettes) et les memoires comme l'IWRAM ou l'EWRAM font quand même 32k si je me trompe pas.

DJP
10/03/2006, 22h35
faut plus de precision...

100*100 de quel type?

Si c'est des octets par exmple, ça fait que 100*100 = 10 000 = moins de 10Ko (9.76 et des brouettes) et les memoires comme l'IWRAM ou l'EWRAM font quand même 32k si je me trompe pas.
typedef struct s_terrain{ //definition de la structure s_terrain
float pheromone_v; //quantite de pheromone verte/recherche sur case
float pheromone_b; //quantite de pheromone bleu/retour sur case
int nourriture; //presence de nourriture
int fourmiliere; //presence de fourmiliere
int obstacle; //presence d'un obstacle
} terrains; //creation du type terrain

terrains terrain[240][160];

thoduv
10/03/2006, 22h38
T'as essayé de remplacer cet horrible fourmis fourmi[240][160]; par :


fourmis *fourmi;
void init_fourmi()
{
fourmi = malloc(sizeof(fourmis) * 240 * 160);
}

DJP
10/03/2006, 22h41
j'ai même fait ça :

terrains ** new_zone(int taille_x,int taille_y){
int i,j;
terrains **t;
t=(terrains **)malloc(sizeof(terrains*)*taille_x);
for (i=0;i<taille_x;i++){
t[i]=(terrains *)malloc(sizeof(terrains)*taille_y);
for (j=0;j<taille_y;j++){
t[i][j].pheromone_v=0;
t[i][j].pheromone_b=0;
t[i][j].nourriture=0;
t[i][j].fourmiliere=0;
t[i][j].obstacle=0;
}
}
return t;
}

Mollusk
10/03/2006, 22h43
et pourquoi ne 'compresser' un peu tout ca ? Genre utiliser une seule variable de type u8 pour nourriture/obstacle/fourmiliere, peut-etre une seule variable aussi pour la quantité de phéromones (prend un u32, tu donnes 16bit à chaque et tu fais ca en fixed point de 8bit)

Japi
10/03/2006, 22h43
typedef struct s_terrain{ //definition de la structure s_terrain
float pheromone_v; //quantite de pheromone verte/recherche sur case
float pheromone_b; //quantite de pheromone bleu/retour sur case
int nourriture; //presence de nourriture
int fourmiliere; //presence de fourmiliere
int obstacle; //presence d'un obstacle
} terrains; //creation du type terrain

terrains terrain[240][160];


t'as des float pour les phéromones??? tu peux pas regler le niveau sur un u8?
c'est pour de l'IA collective?
J'ai codé ça dejà, marrant ^^ Recherche de chemin par travail collaboratif multiagent

si on part sur du u8 au lieu de float, ça doit donner un truc comme :
240*160*(1+1+2+2+2)=307200 octets = 300ko alors evidemment ça rentre pas.

Japi
10/03/2006, 22h47
comme le dit Mollusk, faut concatener mais même sans ça, faut mettre le type le plus petit possible pour stocker une valeur qui a pas grande amplitude.
Presence fourmiliere, c'est un bouleen, alors met un u8 et pas un u16, pareil pour obstacle.

DJP
10/03/2006, 22h48
bon, laissez tomber :p c'était juste un trip de toute façon, mes version linux / windows fonctionnent, c'est le plus important :D

thoduv
10/03/2006, 23h08
bon, laissez tomber :p c'était juste un trip de toute façon, mes version linux / windows fonctionnent, c'est le plus important :D
On peut voir ? :whst:

Japi
10/03/2006, 23h10
c'etait ton projet de cours? avec la sdl?

DJP
10/03/2006, 23h15
On peut voir ? :whst:
Télécharge et installes les runtimes GTK :
http://gtk.alkia.org/index.php (dans download)

et ensuite ... (double cliquer sur "Lancement" et regler la vitesse à 1 ou plus)

Dr.Vince
11/03/2006, 14h01
j'ai installé le runtime mais quand je lance l'appli il me dit qu'il manque la DDL :
libgdk-win32-2.0-0.dll ??

quelqu'un a le mêm problème ??

thoduv
11/03/2006, 14h02
Moi je suis sous Linux donc je peux pas tester sans les sources :-'

DJP
11/03/2006, 14h29
j'ai installé le runtime mais quand je lance l'appli il me dit qu'il manque la DDL :
libgdk-win32-2.0-0.dll ??

quelqu'un a le mêm problème ??

reboot ;)

Pour la version nunux ça sera pour un peu plus tard :p

Yodajr
11/03/2006, 14h56
Interessant (quoique flippant quand tout grouille :p )
Par contre, fait gaffe, les fourmis restent coincées dans ce secteur, même après plusieurs minutes :
http://hothmoon.free.fr/fourmis.png
Quoique t'as du t'en apercevoir et c'est peut etre pas important ^^

DJP
11/03/2006, 15h03
oui, c'est du aux angles trop aigus, j'ai d'autre maps (et un editeur en cours de création), et puis ce n'est pas la derniere version ;)

Nesgba
11/03/2006, 15h06
typedef struct s_terrain{ //definition de la structure s_terrain
float pheromone_v; //quantite de pheromone verte/recherche sur case
float pheromone_b; //quantite de pheromone bleu/retour sur case
int nourriture; //presence de nourriture
int fourmiliere; //presence de fourmiliere
int obstacle; //presence d'un obstacle
} terrains; //creation du type terrain

terrains terrain[240][160];

mmh.. (5*4octets) * 240*160 = 768 ko
ca fait un peu beaucoup quand meme

ps: oh my god, j'ai vu des float Oo
pss:
iwram : 32 ko mais ca plante bien avant de les atteindre
ewram: 256 ko
rom: 32000 ko

[edit]
essaye de stocker plusieurs bool dans un u8, tu as pas besoin de 32 bits pour ca alors qu'un seul suffit

struct s_structure{
u8 variable:1 ;
} structure ;

ca marche pas un truc comme ca en c il me semble alors qu'en c++ c'est fesable tu va devoir faire mass de decalages :p

Brunni
11/03/2006, 15h12
Tu peux utiliser le mode 5 et zoomer l'écran en 2X, comme ça 120x80 terrains suffiront ;)

DJP
11/03/2006, 15h15
mmh.. (5*4octets) * 240*160 = 768 ko
ca fait un peu beaucoup quand meme

ps: oh my god, j'ai vu des float Oo
pss:
iwram : 32 ko mais ca plante bien avant de les atteindre
ewram: 256 ko
rom: 32000 ko

essaye de stocker plusieurs bool dans un u8, tu as pas besoin de 32 bits pour ca alors q'un seul suffit

non, mais c'est un soft PC donc je ne vais pas l'optimiser a droite et a gauche, c'est une simulation dont les données doivent être clairement lisibles pour tout le monde et "facilement" portable. Biensur que cela pourrait être optimiser, je pourrais même ne pas utiliser de tableau et deduire tout de la lecture de l'écran, mais ce n'est pas le but :p

Dr.Vince
12/03/2006, 01h26
2-3 remarques Phantom :
- quand on clique sur le menu configuration, impossible de le fermer
- truc que je pense qui est inversé : le chemin de recherche est vert et le chemin de retour est bleu, alors qu'il me semble que ça doit être l'inverse nan ??

Sinon ça me rappel un petit projet GBA que j'ai fait sur des "fourmis" également.
Je remet la main dessus et je poste dès que je peux

DJP
12/03/2006, 01h45
2-3 remarques Phantom :
- quand on clique sur le menu configuration, impossible de le fermer
- truc que je pense qui est inversé : le chemin de recherche est vert et le chemin de retour est bleu, alors qu'il me semble que ça doit être l'inverse nan ??

Sinon ça me rappel un petit projet GBA que j'ai fait sur des "fourmis" également.
Je remet la main dessus et je poste dès que je peux
non c'est bien ça, elle lache du bleu au depart pour retrouver la fourmiliere et du vert pour retrouver la bouffe (ce n'est pas parceque les fourmis qui rentrent à la fourmilière sont sur les pheromones vertes qu'elle ne suivent pas les bleues :p)

Et pour le bug du configuration je sais c'est un truc avec GTK que je n'ai pas encore compris, ça va venir :p

Dr.Vince
13/03/2006, 11h50
merde tu m'embrouille encore plus là :blink:

le point d'où toutes les fourmis partent, celui du centre, c'est la fourmillière ou la bouffe ??

DJP
13/03/2006, 21h50
merde tu m'embrouille encore plus là :blink:

le point d'où toutes les fourmis partent, celui du centre, c'est la fourmillière ou la bouffe ??

La fourmiliere :D (donc elles lachent du bleu pour la retrouver)

Dr.Vince
14/03/2006, 02h05
bon bah je comprend mieux alors :D