Identifiant:
Mot de passe:
Accueil
Devblogs
Voir tous les devblogs
Obtenir un devblog
Fiches Homebrews
Chat (IRC)
NoPaste
Lexique
Wikis
NDS/GBA
PSP
Wii
Forum
Accéder au forum
Messages non lus
Réponses non lues
Au secours !!!
Options
Rechercher
Se Connecter
Inscrivez-vous
Développement Amateur Francophone
|
Nintendo DS/GBA
|
Aide au développement
|
Problème AS lib + EFS
Pages: [
1
]
Bas de page
Imprimer
Auteur
Fil de discussion: Problème AS lib + EFS (Lu 1351 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Happy
Full Member
Messages: 105
Problème AS lib + EFS
« 15 Décembre 2010, 20:42:58 »
Bonjour tout le monde, j'ai testé l'exemple AS lib + EFS avec ma version actuelle de PAlib.
J'ai remplacé ce qu'il y avait par int main() car ça ne compilait pas...
Alors j'ai voulu tester un MP3(une chanson de pokémon jaune) de 2,53 MO, mais quand je lance la rom, rien, pas de son, alors qu'avec le son d'origine, tout fonctionne bien...
Dans l'exemple, l'AS lib est initialisée comme ça :
Code:
// variables
int i, rate = 0, newrate = 0;
bool mp3_mode = true, autopan = false;
u8 lastsfx = 0, usage = 0, pan = 0, fx_mode = AS_SURROUND;
// PALib Initialization
PA_Init();
PA_LoadDefaultText(0, 0);
// Initialize EFS
if (!EFS_Init(EFS_AND_FAT | EFS_DEFAULT_DEVICE, NULL)) {
PA_OutputText(0, 1, 1, "EFS init error !!!");
return 1;
}
// Check if test.mp3 is there, regardless if libfat or EFS_Lib is used
MP3FILE* file = FILE_OPEN("test.mp3");
if (!file) {
PA_OutputText(0, 1, 1, "test.mp3 not found !!!");
return 1;
}
FILE_CLOSE(file);
// Init AS_Lib for mp3
PA_VBLFunctionInit(AS_SoundVBL);
AS_Init(AS_MODE_MP3 | AS_MODE_SURROUND | AS_MODE_16CH);
AS_SetDefaultSettings(AS_PCM_8BIT, 11025, AS_SURROUND);
J'aimerai savoir si les variables sont indispensables?
Je ne comprend pas pourquoi je n'ai pas de son... et ma chanson dans EFSroot s'appelle bien test.MP3...
De plus, ICON n'est plus présent dans le makefile alors j'aimerai savoir s'il est toujours possible de changer d'icone de jeu?
Merci D'Avance.
Au Revoir.
«
Dernière édition: 15 Décembre 2010, 22:49:56 par Happy
»
Journalisée
Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
Cid2Mizard
Super Mega Member
Messages: 4064
Disciple Kukulcanien
Re : Problème AS lib + EFS
«
Réponse #1 :
16 Décembre 2010, 00:37:05 »
Pour le logo, il te suffit d'ajouter la ligne suivante dans ton makefile :
Code:
ICON := -b $(CURDIR)/../logo.bmp
en dessous de :
Code:
TEXT1 := PAlib Project
TEXT2 := Change this text
TEXT3 := for your project!
et de placer ton
logo.bmp
dans le répertoire de ton projet comme dans les anciennes version.
Pour le mp3, peux tu me dire ce que t'affiche
MP3 Status :
lorsque tu lances le binaire compilé avec ton mp3 ?
Les variables sont utiles dans l'exemple Palib puisqu'elles permettent de démontrer toutes les capacités de AS Lib mais dans ton projet si tu ne cherches qu'à lire et stopper ton mp3, tu n'en auras pas besoin.
Journalisée
Mon Blog
Happy
Full Member
Messages: 105
Re : Problème AS lib + EFS
«
Réponse #2 :
16 Décembre 2010, 02:37:42 »
Ok j'ai rajouté le ligne dans le makefile, je vais devoirs créer une icone.
Sinon, lorsque je joue mon MP3, j'ai :
Sample rate : 0 et pan : 64
MP3 Status : playing
Je ne comprend pas
, normalement ça devrai fonctionner avec n'importe quel MP3 non?
Journalisée
Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
Synthesis
Global Moderator
Messages: 176
Membre n° 341
Re : Problème AS lib + EFS
«
Réponse #3 :
16 Décembre 2010, 09:15:40 »
Code: (C)
AS_MP3StreamPlay("test.mp3");
Ça m'étonne que t'aies une fréquence de 0 Hz
Edit:
T'es sûr que tu as bien cette ligne :
Code:
AS_SoundVBL();
à côté du
PA_WaitForVBL();
de ta boucle principale ?
«
Dernière édition: 16 Décembre 2010, 09:25:41 par Synthesis
»
Journalisée
The
Turrican DS
Project
NitroTracker
songs
Scape
Original Soundtrack
(Includes 3 leftovers)
Happy
Full Member
Messages: 105
Re : Problème AS lib + EFS
«
Réponse #4 :
16 Décembre 2010, 11:12:43 »
Pareil, le sample rate reste à zéro....
Journalisée
Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
Copper
Mega Member
Messages: 1296
Re : Problème AS lib + EFS
«
Réponse #5 :
16 Décembre 2010, 12:00:37 »
L'ASLib ne fonctionne pas avec tous les mp3 :
Citation
up to 44Khz/stereo/96Kbps, though I recommend using 32Khz/stereo/80Kbps max, which is enough for the DS and works great with up to +25%/-100% pitching
Journalisée
Happy
Full Member
Messages: 105
Re : Problème AS lib + EFS
«
Réponse #6 :
16 Décembre 2010, 21:18:49 »
Alors je ne peux donc pas lire mon MP3? Il n'y a-t-il rien à faire?
Journalisée
Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
Synthesis
Global Moderator
Messages: 176
Membre n° 341
Re : Problème AS lib + EFS
«
Réponse #7 :
16 Décembre 2010, 21:24:18 »
Ben tu peux le reconvertir avec un bitrate plus faible, dans la limite de ce que t'a dit Copper.
Journalisée
The
Turrican DS
Project
NitroTracker
songs
Scape
Original Soundtrack
(Includes 3 leftovers)
Happy
Full Member
Messages: 105
Re : Problème AS lib + EFS
«
Réponse #8 :
16 Décembre 2010, 22:00:23 »
C'est quoi un bitrate? Comment le faire?
La qualité de la chanson sera-t-elle conservée?
Merci D'Avance.
Au Revoir.
Journalisée
Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
EvilTroopa
Administrateur
Messages: 648
1010011010 the Number of the Beast
Re : Problème AS lib + EFS
«
Réponse #9 :
16 Décembre 2010, 22:05:28 »
Il faut que tu convertisses ton mp3 avec un soft.
Je te conseille d'utiliser Switch :
http://www.01net.com/telecharger/windows/Multimedia/encodeurs_et_decodeurs/fiches/32122.html
En gros, un mp3 se définit en qualité par son bitrate, plus c'est haut, meilleure est la définition du son.
Seulement, si c'est plus gros, ça demande aussi plus de ressources, il faut donc donner à la DS un format qu'elle arrivera à digérer. Ici passe sur du 96 kb/s maximum.
«
Dernière édition: 16 Décembre 2010, 22:07:58 par EvilTroopa
»
Journalisée
A mushroom a day, keeps the koopas away.
Copper
Mega Member
Messages: 1296
Re : Problème AS lib + EFS
«
Réponse #10 :
16 Décembre 2010, 22:14:26 »
Eventuellement tu peux aussi utiliser la dernière version gratuite de dbPowerAmp r10 :
http://www.321download.com/LastFreeware/page11.html
Par contre la qualité de la chanson ne sera pas préservé (mais il est fort possible qu'on n'entende pas la différence sur DS)
«
Dernière édition: 16 Décembre 2010, 22:16:27 par Copper
»
Journalisée
Happy
Full Member
Messages: 105
Re : Problème AS lib + EFS
«
Réponse #11 :
16 Décembre 2010, 22:30:43 »
J'essaye avec Switch avant, alors j'add mon MP3, je vais dans Encoder Options et je met ça :
Constante Bitrate : 96(comme on me l'a conseillé non?) et je laisse coché high quality encoding et j'ai stéréo dans la partie Other.
Mais je ne test sur la DS, rien du tout, j'essaye avec d'autres bitrate pour voir...
Edit : Avec dbPowerAmp r10, je met les options citées par Copper, c'est-à-dire : 32Khz/stereo/80Kbps max, et quand je lance mon projet, je n'ai que 1 seconde de son, je met mon code ici :
Code:
//Includes
#include <PA9.h>
#include"EFS_Lib.h"
#include"KT_Lib.h"
#include"PA_FatLoad.h"
#include"SpriteLoad.h"
#include "all_gfx.h" //Juste pour les polices...
#include "Babye.h" //Quand on ferme le couvercle(check lid)
#include "HereWeGo.h" //Quand on ouvre le couvercle(check lid)
#include <stdio.h> //Pour des fonctions comme sprintf
#include <stdlib.h>
//Défines
#define ECRAN_DU_HAUT 1
#define ECRAN_TACTILE 0
#define _256COULEURS 1
#define _16COULEURS 0
#define ARRIERE_PLAN_IMAGES 1
#define ARRIERE_PLAN_TEXTE 0 //Plus la valeur est petite, plus elle s'affiche devans les autres éléments
#define DIR_HAUT DIRECTION_HAUT
#define DIR_BAS DIRECTION_BAS
#define DIR_GAUCHE DIRECTION_GAUCHE
#define DIR_DROITE DIRECTION_DROITE
#define DIRECTION_PERSONNAGE_AU_DEPART 2
typedef enum Direction Direction;
enum Direction
{
DIRECTION_HAUT, DIRECTION_BAS, DIRECTION_GAUCHE, DIRECTION_DROITE
};
//enum {DIRECTION_HAUT, DIRECTION_BAS, DIRECTION_GAUCHE, DIRECTION_DROITE};
//Fonction main
int main()
{
//Variables
int x = 120;
int y = 64;
//Initialisation
PA_Init();
PA_LoadDefaultText(ECRAN_DU_HAUT, //sur l'écran du haut
ARRIERE_PLAN_TEXTE); //Arrière plan numéro 4(le dernier)
PA_SetAutoCheckLid(0); //On initialise la détection de l'ouverture/fermeture du coucercle
// Load a custom text font
PA_LoadText(ECRAN_DU_HAUT, //Ecran du haut
ARRIERE_PLAN_TEXTE, //numéro arrière plan
&Police_Arial); //nom de la police
EFS_Init(EFS_AND_FAT | EFS_DEFAULT_DEVICE, NULL);
//On charge la chanson en mémoire !
MP3FILE* file = FILE_OPEN("test.mp3"); //Dans le dossier EFS
if (!file) {
PA_OutputText(0, 1, 1, "test.mp3 not found !!!");
return 1;
}
FILE_CLOSE(file);
//On initialise le son
//PA_VBLFunctionInit(AS_SoundVBL);
AS_Init(AS_MODE_MP3 | AS_MODE_SURROUND | AS_MODE_16CH);
AS_SetDefaultSettings(AS_PCM_8BIT, 11025, AS_SURROUND);
//On joue la chanson
if (AS_GetMP3Status() & MP3ST_PAUSED) {
AS_MP3Unpause();
} else {
AS_MP3StreamPlay("test.mp3");
AS_SetMP3Loop(true);
}
KT_ShowBG(ECRAN_DU_HAUT, ARRIERE_PLAN_IMAGES,"Arrière plan/Fond_blanc"); //On affiche une image sur l'écran du haut
KT_ShowBG(ECRAN_TACTILE, ARRIERE_PLAN_IMAGES,"Arrière plan/Fond_etoiles"); //On affiche une image sur l'écran du bas
PA_EasyFatLoadSprite(ECRAN_TACTILE, 0,"Sprites/Personnage", OBJ_SIZE_16X32, _256COULEURS, 0, x, y);
//PA_SetSpriteAnim(ECRAN_TACTILE, 0, 8); //On fait le sprite regarder vers le bas
//Pour qu'il soit automatiquement orienté vers le bas, il faut que la première frame(du haut vers le bas) : 0
//représente le personnage regardant vers le bas
//On oriente le sprite :
Direction Direction_Personnage = DIR_BAS;
switch(Direction_Personnage)
{
case DIRECTION_HAUT:
PA_SetSpriteAnim(ECRAN_TACTILE, 0, 0);
break;
case DIRECTION_BAS:
PA_SetSpriteAnim(ECRAN_TACTILE, 0, 8);
break;
case DIRECTION_GAUCHE:
PA_SetSpriteAnim(ECRAN_TACTILE, 0, 4);
PA_SetSpriteHflip(0, 0, 1); //On fait une rotatation car le direction
//gauche n'est pas présente sur la feuille de sprite
break;
case DIRECTION_DROITE:
PA_SetSpriteAnim(ECRAN_TACTILE, 0, 4); //On ne fait pas de rotation ici
break;
}
/*PA_OutputText(ECRAN_DU_HAUT,
1, //Position x du texte
1, //Position y du texte
"Bonjour.\nTest effectué par\nABOSO Aymerik."
"\n\nDéplcez le cube avec les touches\n"
"directionnelles !!!"); //Texte qu'on affiche*/
//On affiche les texte dans la boite
int nombreLettres = 0; //Nombre de lettre à afficher
int lettres = 0; //Nombre de lettres affichées actuellement
int i = 0;
//Affichage simple sans variables
while (lettres == nombreLettres) //Tant que toutes les lettres n'ont pas été affichées
{
//Affichage du texte
++nombreLettres; //On incrémente le nombre de lettre affichées de 1
lettres = PA_BoxText(1, 1, 1, 30, 22, "Bonjour.\nTest effectué par\nABOSO Aymerik."
"\n\nDéplcez le personnage avec les touches"
" directionnelles.\n\nCeci est un teste afin de déplacer des sprite et de"
" les animer !!!\n\n\nAppuyez sur A.\n\n\nCrée par ABOSO Aymerik.", nombreLettres);
for(i = 0; i < 6; i ++)
{
PA_WaitForVBL();
}
}
//On reset les variables
nombreLettres = 0;
lettres = 0;
i = 0;
PA_WaitFor(Pad.Held.A); //On attend que le joueur appuie sur A
PA_ClearTextBg(ECRAN_DU_HAUT);
char chaine[1000]; //Caractère à compter
int age = 145214;
sprintf(chaine, "Bonjour tout le monde, j'ai %d ans !!!", age);
//Affichage complexe : avec des variabes
//On prépare d'abord notre phrase
while (lettres == nombreLettres) //Tant que toutes les lettres n'ont pas été affichées
{
//Affichage du texte
++nombreLettres; //On incrémente le nombre de lettre affichées de 1
lettres = PA_BoxText(1, 1, 1, 30, 22, chaine, nombreLettres);
for(i = 0; i < 6; i ++)
{
PA_WaitForVBL();
}
}
//On reset les variables
nombreLettres = 0;
lettres = 0;
i = 0;
PA_WaitFor(Pad.Held.A); //On attend que le joueur appuie sur A
PA_ClearTextBg(ECRAN_DU_HAUT);
//Boucle infinie
while(true)
{
//On commence par changer de frame pour le sprite
if(Pad.Newpress.Up)
{
PA_StartSpriteAnim(0, 0, 0, 3, 6);
Direction_Personnage = DIRECTION_HAUT; //On actualise la position du sprite
}
if(Pad.Newpress.Down)
{
PA_StartSpriteAnim(0, 0, 8, 11, 6);
Direction_Personnage = DIRECTION_BAS;
}
if(Pad.Newpress.Right)
{
PA_StartSpriteAnim(0, 0, 4, 7, 6);
PA_SetSpriteHflip(0, 0, 0);
Direction_Personnage = DIRECTION_DROITE;
}
if(Pad.Newpress.Left)
{
PA_StartSpriteAnim(0, 0, 4, 7, 6);
PA_SetSpriteHflip(0, 0, 1);
Direction_Personnage = DIRECTION_GAUCHE;
}
//-------------------------------
//On arrête le sprite dans la bonne direction
if(!((Pad.Held.Left)||(Pad.Held.Up)||(Pad.Held.Down)||(Pad.Held.Right))) //Si on n'appuis sur
//aucune touche directionnelles
{
switch(Direction_Personnage)
{
case DIRECTION_HAUT:
PA_SetSpriteAnim(ECRAN_TACTILE, 0, 0);
PA_SpriteAnimPause(0, 0, 1);
break;
case DIRECTION_BAS:
PA_SetSpriteAnim(ECRAN_TACTILE, 0, 8);
PA_SpriteAnimPause(0, 0, 1);
break;
case DIRECTION_GAUCHE:
PA_SetSpriteAnim(ECRAN_TACTILE, 0, 4);
PA_SetSpriteHflip(0, 0, 1); //On fait une rotatation car le direction
//gauche n'est pas présente sur la feuille de sprite
PA_SpriteAnimPause(0, 0, 1);
break;
case DIRECTION_DROITE:
PA_SetSpriteAnim(ECRAN_TACTILE, 0, 4); //On ne fait pas de rotation ici
PA_SpriteAnimPause(0, 0, 1);
break;
}
}
x += Pad.Held.Right - Pad.Held.Left;
y += Pad.Held.Down - Pad.Held.Up;
//On empêche le personnage de sortir de l'écran
if(x < 0) x = 0;
if(x > (256 - 16)) x = (256 - 16);
if(y < 0) y = 0;
if(y > (192 - 32)) y = (192 - 32);
//Si le stylet est utilisé, on place le personnage à sa position
if(Stylus.Held)
{
x = Stylus.X;
y = Stylus.Y;
if(x < 0) x = 0;
if(x > (256 - 16)) x = (256 - 16);
if(y < 0) y = 0;
if(y > (192 - 32)) y = (192 - 32);
}
//On change la position du personnage à l'écran
PA_SetSpriteXY(ECRAN_TACTILE, // screen
0, // sprite
x, // x position
y); // y...
//On affiche du texte, le sprite et l'arrière plan
PA_OutputText(ECRAN_DU_HAUT,
1, //Position x du texte
1, //Position y du texte
"Bonjour.\nTest effectué par\nABOSO Aymerik."
"\n\nPosition du sprite à l'écran : \n"
"X = %03d\nY = %03d"
"\n\nVos informations :"
"\nNom : %s\nAnniversaire : %02d/%02d"
"\nAlarme : %02dH%02d\nDate d'aujourd'hui : %02d/%02d/%02d\nMessage : %s\nHeure : %02d heures, %02d minutes\net %02d secondes"
"\n\nDéplcez le cube avec les \ntouches directionnelles ou avec\n"
"le stylet !!!"
, x, y, PA_UserInfo.Name, PA_UserInfo.BdayDay ,PA_UserInfo.BdayMonth, PA_UserInfo.AlarmHour, PA_UserInfo.AlarmMinute
, PA_RTC.Day, PA_RTC.Month, PA_RTC.Year, PA_UserInfo.Message, PA_RTC.Hour, PA_RTC.Minutes, PA_RTC.Seconds); //Texte qu'on affiche
PA_CloseLidSound2(Babye, HereWeGo); //Sond ouverture/fermeture du coucercle
PA_WaitForVBL(); //On rafraichit l'écran à 60 images par secondes.
}
}
Désolé mais c'est un projet tutoriel que je fais tout seul, pour que j'aille vérifier dedans quand je travaillerai sur un vrai projet...
Merci D'Avance.
Au Revoir.
«
Dernière édition: 16 Décembre 2010, 22:47:37 par Happy
»
Journalisée
Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
Copper
Mega Member
Messages: 1296
Re : Problème AS lib + EFS
«
Réponse #12 :
16 Décembre 2010, 23:19:20 »
Tu as essayé avec la ligne :
PA_VBLFunctionInit(AS_SoundVBL);
(dans ton post elle est en commentaire)
Journalisée
Happy
Full Member
Messages: 105
Re : Problème AS lib + EFS
«
Réponse #13 :
17 Décembre 2010, 00:26:54 »
A ok, le problème est résolu, par contre, la qualité de mon MP3 en a pris un coup...
Il n'y a pas de moyen de faire une conversion parfaite?
Edit : Avec ces réglage, ça beaucoup mieux niveau qualité :
32Khz/stereo/96Kbps max comme me l'a conseillé EvilTroopa pour le 96Kbps max^^
Merci beaucoup pour votre aide !!!
Je vais pouvoir attaquer mon projet pour les vacances de la noël
ce week-end donc
«
Dernière édition: 17 Décembre 2010, 00:36:44 par Happy
»
Journalisée
Non non mais ça rapelle vraiment de bon souvenirs :
http://www.youtube.com/watch?v=rGDiO1G0-K0
Pages: [
1
]
Haut de page
Imprimer
Aller à:
Merci de choisir une destination:
-----------------------------
Compos
-----------------------------
=> Compo Débile Dev-Fr !
-----------------------------
Les News
-----------------------------
=> News
=> Vos News
-----------------------------
Général
-----------------------------
=> Discussion générale
=> Demande de blogs
=> Evolution du site
-----------------------------
Articles
-----------------------------
=> Interviews
=> Tests
===> Vos Tests
=> Démos Techniques
=> Pimp My Code
=> Tutoriaux
=> Le HS total du dimanche
-----------------------------
Divers Developpement
-----------------------------
=> Idées de Projets
=> Codes et Optimisations
=> Emulation
=> Graphismes
=> Game Design / Level Design
=> Musiques
=> Autre
-----------------------------
Dev-FR Coding Compo 2007
-----------------------------
=> International Section
===> Apps
===> Games
=> Section Francophone
===> Applications
===> Jeux
-----------------------------
Nintendo DS/GBA
-----------------------------
=> Projets
=> Aide au développement
=> Résolu via IRC
-----------------------------
PSP
-----------------------------
=> Projets
=> Aide au développement
-----------------------------
iPhone / iTouch
-----------------------------
=> Projets
=> Aide au développement
=> Tutoriels
-----------------------------
Android
-----------------------------
=> Projets
=> Aide au développement
=> Tutoriels
-----------------------------
Dingoo
-----------------------------
=> Projets
=> Aide au développement
-----------------------------
Wii/NGC
-----------------------------
=> Projets
=> Aide au développement
-----------------------------
PS3/Linux
-----------------------------
=> Projets
=> Divers
-----------------------------
Xbox 360
-----------------------------
=> Projets
=> Aide au développement
=> Tutoriels
-----------------------------
Windows/Mac/Linux
-----------------------------
=> Projets
=> Aide au developpement
-----------------------------
PocketPC
-----------------------------
=> Projets
-----------------------------
Matériel
-----------------------------
=> Consoles
=> Ordinateurs
=> UltraPortables