:: PlayerAdvance.org ::  

Précédent   :: PlayerAdvance.org :: > :: Développement Amateur :: > Aide au développement

Publicité

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 06/05/2006, 18h30   #1
omg
Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Mad Monster Mansion
Messages: 3 754
Par défaut Ham - Dé-initialiser une Map

Bonjour,
je bosse actuellement sur plusieurs levels pour mon jeu.
j'initialise mon niveau de telle manière :
Citation:
ham_Init();
ham_SetBgMode(0);
//=======================
speed = 4;
// --- Load Map Principale --- Hel[1] ---
LEVEL2POWER=8;
//en fait faut mettre LEVEL2POWER=n ou 2^n = longueur map
// Mise en place de la Map de Collision
BG=&port_v4_part01_col;

// Initialisation de la palette
ham_LoadBGPal256((void*)port_v4_part01_palette);

ham_bg[0].ti = ham_InitTileSet((void*)port_v4_part01_tiles,SIZEOF _16BIT(port_v4_part01_tiles),1,1);
Map0 = hel_MapInit(0, 256 , 64 , FALSE, &port_v4_part01_map); //longueur map,largeur
ham_InitBg(0, TRUE, 2, FALSE);

ham_bg[1].ti = ham_bg[0].ti;
Map1 = hel_MapInit(1, 192 , 48 , FALSE, &port_v4_part01_map_fond); //longueur map,largeur
ham_InitBg(1, TRUE, 3, FALSE);

ham_bg[2].ti = ham_bg[0].ti;
Map2 = hel_MapInit(2, 256 , 64 , FALSE, &port_v4_part01_map_front); //longueur map,largeur
ham_InitBg(2, TRUE, 0, FALSE);
Malheureusement pour moi je voudrais introduire un nouveau niveau mais je n'arrive pas à "dé-initialiser celui-ci"
J'ai essayer avec les commandes " ham_DeInitBG" et aussi "ham_DeInitTileSet " et "ham_DeInitMapSet" mais ça plante...
Quelqu'un aurait une idée?
__________________

News GBA/DS:
Portable DEV
Colorer un jeu GB? Débutant - Avancé - Expert
Projets : Banjo Advance - The Last Quest - Klungo's Brain School
Site des jeux : BanjoKazooie.Free.Fr Web Site

FAN FOREVER
"La Vie n'est pas aussi simple qu'un Jeu Vidéo..."
omg est déconnecté   Réponse avec citation

Publicité

Vieux 06/05/2006, 18h54   #2
Kyros
Membre
 
Date d'inscription: 10/11/2005
Localisation: Grenoble
Messages: 38
Par défaut

Code:
void ham_ResetBg ();
Au moins c'est radical .

J'utilise ça dans mon jeu, car avec les fonctions que tu avais citées j'avais eu des problèmes aussi ... donc à chaque nouveau "niveau" j'efface tout ce que j'ai en map/BG/tiles courant , puis je recharge le contenu du prochain niveau ...

Je regarderais toutefois pourquoi ca marchait pas ces autres fonctions ...

PS : Juste avant de poster , j'me suis dis que ca venait peut etre du fait que tu utilise HEL et que tu peux pas dé-initialiser les maps crées avec HEL par des fonctions de HAM ... regarde si y'a pas une fonction de HEL pour dé-initisaliser ses propres map ... auquel cas tu vires les tiles avec la fonction de HAM et tu vires les maps avec la fonction de HEL ...
Juste une supposition , j'ai pas la spé de HEL sous la main .
Kyros est déconnecté   Réponse avec citation
Vieux 06/05/2006, 19h12   #3
omg
Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Mad Monster Mansion
Messages: 3 754
Par défaut

Oui en effet, ça ne marche pas non plus...
Je vais tester avec l'initialisation entierement avec HAM.
__________________

News GBA/DS:
Portable DEV
Colorer un jeu GB? Débutant - Avancé - Expert
Projets : Banjo Advance - The Last Quest - Klungo's Brain School
Site des jeux : BanjoKazooie.Free.Fr Web Site

FAN FOREVER
"La Vie n'est pas aussi simple qu'un Jeu Vidéo..."
omg est déconnecté   Réponse avec citation
Vieux 06/05/2006, 19h17   #4
Kyros
Membre
 
Date d'inscription: 10/11/2005
Localisation: Grenoble
Messages: 38
Par défaut

J'ai regarder la spé' de HEL :
Code:
void hel_MapDelete (u32 BgNo);
Ca marche pas non plus ?
Kyros est déconnecté   Réponse avec citation
Vieux 06/05/2006, 19h46   #5
Yodajr
Administrateur
 
Date d'inscription: 09/11/2005
Messages: 3 750
Par défaut

Code:
ham_DeInitTileSet(ham_bg[0].ti);
ham_ResetBg();
Ca ca devrai marcher, je l'utilise avec succès avec HEL
Yodajr est déconnecté   Réponse avec citation
Vieux 06/05/2006, 22h30   #6
omg
Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Mad Monster Mansion
Messages: 3 754
Par défaut

Je vous dis ça demain les gars!
Merci de votre aide!
__________________

News GBA/DS:
Portable DEV
Colorer un jeu GB? Débutant - Avancé - Expert
Projets : Banjo Advance - The Last Quest - Klungo's Brain School
Site des jeux : BanjoKazooie.Free.Fr Web Site

FAN FOREVER
"La Vie n'est pas aussi simple qu'un Jeu Vidéo..."
omg est déconnecté   Réponse avec citation
Vieux 07/05/2006, 16h43   #7
omg
Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Mad Monster Mansion
Messages: 3 754
Par défaut

Hier j'avais merdé avec un ";" que j'avais omis...
ça marche bien a part que j'ai un leger décalage d'un tile sur la droite sur ma deuxieme map.
J'ai décidé de passer sur "Hel Lib 2"...
Vais essayer le transfert car pas mal de choses change , les scroll de map par exemple... Tout à l'air d'avoir été simplifié!

A bientot et encore merci à vous deux!

Bientot une nouvelle démo!

Edit (quelques temps plus tard ) : Apres moulte reflexion, je crois que je vais essayer de chercher pourquoi j'ai ce décalage de 1 Tile surement du au map scrollby de Hel sur mes background 0 et 2. Une fois tous mes problemes réglés je regarderai de plus pres Hel lib 2...
__________________

News GBA/DS:
Portable DEV
Colorer un jeu GB? Débutant - Avancé - Expert
Projets : Banjo Advance - The Last Quest - Klungo's Brain School
Site des jeux : BanjoKazooie.Free.Fr Web Site

FAN FOREVER
"La Vie n'est pas aussi simple qu'un Jeu Vidéo..."

Dernière modification par omg ; 07/05/2006 à 16h58.
omg est déconnecté   Réponse avec citation
Vieux 14/05/2006, 17h47   #8
omg
Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Mad Monster Mansion
Messages: 3 754
Par défaut Je rame, encore et toujours...

Apres une semaine, je tombe sur un nouveau probleme toujours en rapport avec le sujet.
Je commence le jeu tranquillou au bord de la mer... 3 background (un "front" qui passe devant lles personages, un normal ou les personnages marchent, et un fond : la mer)
Citation:
int main(void){
ham_Init();
//=======================
// Setup the background mode
ham_SetBgMode(0);
level=0;
//création des sprites banjo et Trilby qui est censé être une fée
createTrilby(1,20,312);
createBanjo(0,20,20);
//chargement de la map 1
changeMap(level,96,200);
ham_StartIntHandler(INT_TYPE_VBL,(void*)&vbl_func) ;
while(TRUE){}
return 0;
anim_eau =0;
}

void vbl_func(){
ham_CopyObjToOAM();
input();
Ptx = hel_MapGetPositionInPixel(&Map0); // update des coord de la map en pixel


focusCam(Banjo);
if((sprite[Banjo].x >= 1990) && (level == 0))
{
level = 1;
changeMap(level,20,220);
}

if((sprite[Banjo].x<= 15) && (level == 1))
{
level = 0;
changeMap(level,96,200);
//changeMap(level,1999,200); petit probleme quand je met un nombre > 256 pb u8-u16???
}
isInTheScreen(Trilby);
isInTheScreen(Banjo);
follow(Trilby,Banjo); /pour que Trilby suive Banjo
jump(Banjo);
gravity(Banjo);
}
La focntion ChangeMap:
Citation:
void changeMap(u8 level,u16 new_x,u16 new_y)
{ ham_ResetBg();
ham_SetBgMode(0);
//=======================
speed = 4;
// --- Load Map Principale --- Hel[1] ---
LEVEL2POWER=8; //en fait faut mettre LEVEL2POWER=n ou 2^n = longueur map
switch (level)
{ case 0 :
{
// Mise en place de la Map de Collision
BG=&port_v4_part01_col;
// Initialize the palettes
ham_LoadBGPal256((void*)port_v4_part01_palette);
// Setup the tileset for our image
ham_bg[0].ti = ham_InitTileSet((void*)port_v4_part01_tiles,SIZEOF _16BIT(port_v4_part01_tiles),1,1);
// Setup the map for our image
Map0 = hel_MapInit(0, 256 , 64 , FALSE, &port_v4_part01_map); //longueur map,largeur
ham_InitBg(0, TRUE, 2, FALSE);
// Setup the tileset for our image
ham_bg[1].ti = ham_bg[0].ti;
// Setup the map for our image
Map1 = hel_MapInit(1, 192 , 48 , FALSE, &port_v4_part01_map_fond); //longueur map,largeur
ham_InitBg(1, TRUE, 3, FALSE);
// Setup the tileset for our image
ham_bg[2].ti = ham_bg[0].ti;
// Setup the map for our image
Map2 = hel_MapInit(2, 256 , 64 , FALSE, &port_v4_part01_map_front); //longueur map,largeur
ham_InitBg(2, TRUE, 0, FALSE);
//placement des personnages
sprite[Banjo].y = new_y;
sprite[Banjo].x = new_x;
sprite[Trilby].y = new_y - 20;
sprite[Trilby].x = new_x - 20;
break;
}

case 1 :
{
// Mise en place de la Map de Collision
BG=&port_v4_part02_col;
// Initialize the palettes
ham_LoadBGPal256((void*)port_v4_part02_palette);
// Setup the tileset for our image
ham_bg[0].ti = ham_InitTileSet((void*)port_v4_part02_tiles,SIZEOF _16BIT(port_v4_part02_tiles),1,1);
// Setup the map for our image
Map0 = hel_MapInit(0, 256 , 64 , FALSE, &port_v4_part02_map); //longueur map,largeur
ham_InitBg(0, TRUE, 2, FALSE);
// Setup the tileset for our image
ham_bg[1].ti = ham_bg[0].ti;
// Setup the map for our image
Map1 = hel_MapInit(1, 192 , 48 , FALSE, &port_v4_part02_map_fond); //longueur map,largeur
ham_InitBg(1, TRUE, 3, FALSE);
// Setup the tileset for our image
ham_bg[2].ti = ham_bg[0].ti;
// Setup the map for our image
Map2 = hel_MapInit(2, 256 , 64 , FALSE, &port_v4_part02_map_front); //longueur map,largeur
ham_InitBg(2, TRUE, 0, FALSE);
//placement des personnages
sprite[Banjo].y = new_y;
sprite[Banjo].x = new_x;
sprite[Trilby].y = new_y - 20;
sprite[Trilby].x = new_x - 20;
break;
}

default :
{ break; }
}
}
la fonction focuscam qui fixe la camera sur le heros :
Citation:
void focusCam(u8 s){
if(sprite[s].y-Ptx.Y>60){ hel_MapScrollBy(&Map0,0,4); hel_MapScrollBy(&Map2,0,4); hel_MapScrollBy(&Map1,0,2); }
else if(sprite[s].y-Ptx.Y<20){ hel_MapScrollBy(&Map0,0,-4);hel_MapScrollBy(&Map2,0,-4); hel_MapScrollBy(&Map1,0,-2); }

if(sprite[s].x-Ptx.X>100){ hel_MapScrollBy(&Map0,4,0);hel_MapScrollBy(&Map2,4 ,0); hel_MapScrollBy(&Map1,3,0); }
else if(sprite[s].x-Ptx.X<40){ hel_MapScrollBy(&Map0,-4,0); hel_MapScrollBy(&Map2,-4,0);hel_MapScrollBy(&Map1,-3,0); }
} // [ Recadre la "caméra" sur le sprite s ] .
Bref, quand je passe du niveau 0 au 1 ma map front est décalé vers le bas...
Quand je repasse de la 1 a la 0 j'ai une erreur de mapsrollby... ARG!
Les Screens :
level 0...........................level 1......................retour au 0

la rom
Si quelqu'un a déjà eu ce genre de probleme...
Merci!!!
PS : Désolé pour la mise en page...
__________________

News GBA/DS:
Portable DEV
Colorer un jeu GB? Débutant - Avancé - Expert
Projets : Banjo Advance - The Last Quest - Klungo's Brain School
Site des jeux : BanjoKazooie.Free.Fr Web Site

FAN FOREVER
"La Vie n'est pas aussi simple qu'un Jeu Vidéo..."

Dernière modification par omg ; 14/05/2006 à 18h01.
omg est déconnecté   Réponse avec citation
Vieux 14/05/2006, 20h10   #9
Dr.Vince
Administrateur
 
Date d'inscription: 10/11/2005
Messages: 4 963
Voir les codes amis Nintendo DS Voir les codes amis Wii
Par défaut

hum, me semble que la réponse à ta question se trouve dans le dernier screen.....
__________________
Projets Abandonnés: [Arcomage Advance] [Puzznic] [PA Card Games] [Blob Runner]
Projet en cours: [Ne plus abandonner de projet...]
Dr.Vince est déconnecté   Réponse avec citation
Vieux 14/05/2006, 21h43   #10
omg
Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Mad Monster Mansion
Messages: 3 754
Par défaut

Oui mais je n'ai pas réussi a savoir pourquoi il me dit ça... Mes coordonnées sont pourtant bonne...
__________________

News GBA/DS:
Portable DEV
Colorer un jeu GB? Débutant - Avancé - Expert
Projets : Banjo Advance - The Last Quest - Klungo's Brain School
Site des jeux : BanjoKazooie.Free.Fr Web Site

FAN FOREVER
"La Vie n'est pas aussi simple qu'un Jeu Vidéo..."
omg est déconnecté   Réponse avec citation
Vieux 14/05/2006, 22h39   #11
Dr.Vince
Administrateur
 
Date d'inscription: 10/11/2005
Messages: 4 963
Voir les codes amis Nintendo DS Voir les codes amis Wii
Par défaut

alors déjà pour la question qui se trouve dans ton code :
Code:
256 pb u8-u16???
oui, u8 = 0 à 255

sinon pour ton problème, si j'ai bien compris quand banjo arrive à une certaine distance tu changes les fonds, est-ce que tu remet à zéro la valeur de ton scroll ??

sinon tu sais que tu peux utiliser une fonction bien pratique de VHAM pour débugger :
Code:
ham_VBAText();
genre :
Code:
ham_VBAText("Valeur = %d\n",mavaleur);
ça écrit dans la log de VBA, il te suffit ensuite lors de l'exécution dans VBA d'afficher la log et de regarder tes traces, comme ça tu pourras détecter exactement où se situe le problème et les valeurs qui posent problème
__________________
Projets Abandonnés: [Arcomage Advance] [Puzznic] [PA Card Games] [Blob Runner]
Projet en cours: [Ne plus abandonner de projet...]
Dr.Vince est déconnecté   Réponse avec citation
Vieux 15/05/2006, 08h44   #12
omg
Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Mad Monster Mansion
Messages: 3 754
Par défaut

Je vais essayer ça demain Dr Vince!
__________________

News GBA/DS:
Portable DEV
Colorer un jeu GB? Débutant - Avancé - Expert
Projets : Banjo Advance - The Last Quest - Klungo's Brain School
Site des jeux : BanjoKazooie.Free.Fr Web Site

FAN FOREVER
"La Vie n'est pas aussi simple qu'un Jeu Vidéo..."
omg est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Publicité



Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h13.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Tous droits réservés.
Version française #16 par l'association vBulletin francophone
Design par Ass-Itch, DJP et Dr.Vince