PDA

Voir la version complète : [GBA] Apex Sound System (AAS)


Bobby Sixkilla
19/09/2006, 00h30
Apex Sound System (AAS)
Auteur : YodaJr

A la demande de nes, je vais exposer tout ce que je sais sur cette librairie sonore. Tout sera bien sur orienté HAM vu que j'utilise cette lib.

D'abord recupérer la lib ici (http://www.apex-designs.net/tools_aas.html).

Pour se faciliter la vie :

Créer un dossier AAS et un dossier sfx dans le dossier du projet. (attention, jamais d'espace dans les dossiers).
Dans le dossier sfx, mettre tous les wav et les mods.
Dans le dossier AAS, mettre les dossiers AASDocs et LibAAS extraits de l'archive.
Il faut aussi extraire le fichier Conv2AAS.exe correspondant au systeme que l'on utilise et le mettre dans le dossier du projet.
Toujours dans le dossier du projet, creer un fichier convert.bat avec dedans :

@echo off
conv2aas sfx
pause


Ensuite le makefile :

Au OFILES ajoutez AAS_Data.o comme ceci :


OFILES += main.o AAS_Data.o


Ensuite dans VHAM > Project > Makefile > Files To Compile
Faites Add > AAS_Data.s
Oui à la question sur le rechargement.

Vérifiez également que les fichiers AAS_Data.h (et .s) sont bien dans le répertoire racine du projet (n'oubliez pas qu'ils sont générés par le convert.bat)

Ajoutez en dessous du OFILES :

ADD_LIBS += $(VHAM_CURPROJECT)/AAS/LibAAS/libAAS.a
INCDIR := $(INCDIR) -I $(VHAM_CURPROJECT)/AAS/LibAAS -I $(VHAM_CURPROJECT)/AAS/LibAAS/LowLevelAccess


On continue par le main.c (ou autre header c'est vous qui voyez) :

D'abord on ajoute ca tout en haut :

#include <AAS.h>
#include <AAS_Mixer.h>
#include "AAS_Data.h" //généré par le convert.bat


Ensuite après le ham_Init() :

AAS_ShowLogo();
ham_ResetAll(); //je nettoye après le logo d'AAS (pas obligatoire, mais il merde un peu ce logo)


Pour l'affichage du logo AAS (obligatoire pour ecouter les mods sur hardware)

Ca continue juste avant le lancement du VBL:

ham_StartIntHandler(INT_TYPE_TIM1,(void*)AAS_Timer 1InterruptHandler); //lancement de l'interruption d'AAS
AAS_SetConfig(AAS_CONFIG_MIX_24KHZ,AAS_CONFIG_CHAN S_4,AAS_CONFIG_SPATIAL_MONO,AAS_CONFIG_DYNAMIC_OFF ); //la config d'AAS
ham_StartIntHandler(INT_TYPE_VBL,(void *)&fonction_vbl); //c'est parti!

Bon pour la config :

AAS_CONFIG_MIX_xxKHZ est pour le mixage je présume, plus le chiffre est grand, plus le mixage est de qualité mais au dépend des ressources (xx varie de : 8, 12, 16, 20, 24, 28, 32)

AAS_CONFIG_CHANS_x est bien sur pour le nombre de canaux : 4 ou 8 (pareil pour les ressources)

AAS_CONFIG_SPATIAL_x pas compliqué : MONO ou STEREO

AAS_CONFIG_DYNAMIC_OFF alors lui on peut le mettre sur ON mais je ne sait pas à quoi il sert


Pour le VBL, on peut y mettre ou pas le AAS_DoWork()... il ne semble pas utile (moi je le met pas)... mais bon, mettez le et passez le en commentaire (//) il pourra peut ete servir à l'ocasion

Et enfin lancez convert.bat pour génerer le AAS_Data.h

Voila c'est fini pour la préparation, ouf...


Maintenant l'utilisation :

Pour savoir comment appeler vos sons et musiques, regardez dans le fichier AAS_Data.h, tout y est (par exemple je peut voir que mon intro.mod, je dois l'appeler AAS_DATA_MOD_intro)

Pour jouer un mod, c'est :

AAS_MOD_Play(nom_du_mod)

Avec dans mon exemple AAS_DATA_MOD_intro comme nom
Et bien sur les commandes associées :

AAS_MOD_Stop()
AAS_MOD_Pause()
AAS_MOD_Resume()
AAS_MOD_SetVolume(vol) //vol allant de 0 à 256
Toutes ces commandes interviennent sur le mod qui est en train de jouer bien sur


Bon les sons :


AAS_SFX_Play(0,64,22050,AAS_DATA_SFX_START_tir,AAS _DATA_SFX_END_tir,AAS_NULL);


Le premier paramètre, c'est le canal (voir avec la config du début, si on a défini 4 canaux, on peut jouer 4 sons à la fois)
Le 2eme c'est le volume (de 0 à 64)
Le 3eme c'est la fréquence du wav (de 1 à 65535)
Les 4eme et 5eme c'est le nom du son, la en l'occurence le wav s'appelait tir.wav )
Le dernier reste en NULL et c'est très bien comme ca

Avec comme d'hab :

AAS_SFX_Stop(canal)
AAS_SFX_Resume(canal)
AAS_SFX_SetVolume(canal,vol) //vol varie de 0 à 64

canal designe le canal qui joue le son que l'on veut

Voila, c'est tout ce que je sais, si vous avez des questions, gbadev... Non je déconne, posez les ici. :)

Alekmaul
19/09/2006, 09h39
Un chose à ajouter, cette lib ne compile pas "en direct" avec le devkitpro r19, ce dernier était eabi et non la lib.
Je ne sais pas si une version patchée eabi circule sur le Net.

Dr.Vince
19/09/2006, 10h58
il y a un path disponible sur devkitpro il me semble pour patcher un elf en eabi

Bobby Sixkilla
05/11/2007, 20h05
Pour télécharger la lib, il faut écrire à l'adresse email indiquée sur le site officiel. James me l'a envoyé le soir même. ^^

Foxy
05/11/2007, 21h44
Pour convertir la lib AAS en eabi 4, j'avais posté un petit tuto:
http://www.playeradvance.org/forum/showthread.php?t=6222

Alekmaul
05/11/2007, 22h21
Pour convertir la lib AAS en eabi 4, j'avais posté un petit tuto:
http://www.playeradvance.org/forum/showthread.php?t=6222
Oui, je m'en souviens.
Mais bon, quel avantage à passer au dessus du devkit R18 pour la GBA ? il y en a un ???
Perso, je continue d'utiliser le devkit r18 pour mes releases GBA (en plus, je me souviens qu'NRX avait eu des pbs avec des releases GBA compilées en R19 à l'époque lorsque je mettais au point Lindsi Luna Blast).

Foxy
06/11/2007, 00h03
Ben l'interet c'est de pouvoir utiliser le même kit pour compiler sur GBA, DS et PSP.
Maintenant c'est sur que si tu dev que sur la GBA, l'interet est plutot limité. :)