:: PlayerAdvance.org ::  

Précédent   :: PlayerAdvance.org :: > :: Développement Amateur :: > Tutoriels

Publicité

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 11/11/2006, 00h57   #1
Arialia
Elite
 
Date d'inscription: 10/04/2006
Localisation: Pays de la moutarde
Messages: 901
Par défaut Utilisation de la LibFat sous devkitpro

Utilisation de la LibFat sous devkitpro

Auteur : Arialia

Préambule :
Alors voilà je me lance aujourd'hui dans un tutoriel pour programmer avec la nouvelle LibFat de Chism qui est maintenant incluse dans Devkitpro.

La nouvelle librairie de Chism nous fait faire un bond en avant, elle prend en compte de nombreux matériels et est devenue hyper simple à utiliser (une fois que l'on a compris le principe ) du coup aucun exemple ou documentation n'est disponible
(sauf ici en anglais merci KoshNi )

Les linkers fleurissant régulièrement Chism à décidé de fournir un système de patchage de pilotes appelé DLDI, dorénavant les développeurs n'auront plus à recompiler leur application, et les fabricants de linkers auront juste à fournir le pilote de leur matériel quant à l'utilisateur si la rom ne supporte pas nativement son linker il pourra la patcher avec le pilote adéquat.


Fonctions Fichiers :
Pour ceux qui trépignent déjà voici un exemple de code :
Code PHP:
       #include <stdio.h>  // nécessaire pour la gestion fichier
       #include <stdlib.h>
       #include <fcntl.h>
       #include <unistd.h>
        #include "fat.h"
       
char *nomfic="testbuf.txt";
        
int fd=0,ret=0;
        
char buff[80]="";
        
char mesg[7]="Vive PA";
        
bool bfatok fatInitDefault();     // seule fonction de la libfat directement appellée
     
    
if (bfatok)
        {
            
iprintf("fat initialisé\n");
        }
        else
                {
iprintf("fat init echec\n");
        };
//...
        
if (bfatok)
            {
               
fd=open("test.txt",O_RDWR);
                       
printf("fd :%d\n",fd);
                           
ret=read(fd,buff,80);
                       
buff[ret]='\0';
                           
printf("buff: %s \nlong: %d octets\n",buff,ret);
                       
write(fd,mesg,7);
                       
close(fd);
                        }
//... 
Vous avez compris? Eh oui ç'est bien çà : une fois le pilote FAT initialisé vous pouvez utiliser toutes les fonctions fichiers standards du c !!!


Fonctions Répertoires :

Devkitpro R20 et +
Depuis DevkitPro R20 les fonctions de listage des répertoires sont présentes, mais attention ce n'est pas du Posix ... ç'est beaucoup plus efficace

Voici les fonctions spécifiques :
  • DIR_ITER* diropen (const char *path);
    Ouvre le répertoire "path" et retourne un pointeur sur une structure DIR_ITER
    en posix ç'est DIR* diropen(const char *path);
    nop
  • int dirreset (DIR_ITER *dirState);
    Revient au début du répertoire ==> rewinddir(DIR* dir) en posix ...
    nop
  • int dirnext (DIR_ITER *dirState, char *filename, struct stat *filestat);
    Lit la prochaine entrée de répertoire
    filename : Nom de l'entrée
    filestat : structure stat de l'entrée, mettre à NULL si vous n'en avez pas besoin ...
    retourne 0 si nouvelle entrée
    retourne -1 si fin de répertoire ou erreur ...

    j'avoue que l'idée de récupérer les stats au passage est géniale et évite beaucoup de code supplémentaire ...

    ==> dirent* readdir(DIR* dir) en posix ....
    nop
  • int dirclose (DIR_ITER *dirState);
    ferme le répertoire ...
    nop

un bout de code pour illustrer cela:
Citation:
Envoyé par Chism
...
dirnext should now return 0 when it finds a valid dir entry, and -1 at all other times.
Return -1 with errno==ENOENT indicates that it has reached the end of the directory.

So a simple example (untested, should work) would be:
Code:
#include <sys/stat.h>
#include <sys/dir.h>


struct stat st;
char filename[MAX_FILENAME_LEN]; // may need to be 256 instead of a constant
DIR_ITER* dir;

dir = diropen ("/"); // no error checking -- make sure you check for NULL!

while (dirnext(dir, filename, &st) == 0) {
    // st.st_mode & S_IFDIR indicates a directory
    printf ("%s: %s\n", (st.st_mode & S_IFDIR ? " DIR" : "FILE"), filename);
}
Devkitpro R19b
Pour ceux qui ne sont pas encore sous Devkitpro R20 ....


Il ya un bémol : j'ai eu beau chercher je n'ai pas trouver de fonctions sur les répertoires dans devkitarm ou dans les fonctions publiques de la librairie FAT ... (normal ç'est devkitpro r20 qui doit apporter le support ...annoncé fin janvier... ... ça y est )

Alors j'ai pris mon courage à deux mains et je nous ai écris les fonctions manquantes : opendir, readdir, closedir, et rewinddir

le but est de pouvoir utiliser du code C standard (Posix) dans nos homebrews
Merci Chism (et ceux qui l'ont aidé ...)

Descriptif Librairie :

Maintenant que je vous ai expliqué le principe général de la librairie passons au descriptif détaillé :
1 - bool fatInit (u32 cacheSize, bool setAsDefaultDevice);
Initialise tout linker inséré (soit dans le port DS , soit dans le port GBA)
Ajoute le pilote Fat à "devoptab" rendant utilisable pour les fonctions fichiers standards
cacheSize: le nombre de pages à allouer pour chaque linker inséré
setAsDefaultDevice: si vrai rend le pilote FAT le pilote par défaut pour les opérations fichiers

2 - bool fatInitDefault (void);
Appelle fatInit avec setAsDefaultDevice=true et cacheSize optimisé pour le système

  • à traduire

3 - bool fatMountNormalInterface (PARTITION_INTERFACE partitionNumber, u32 cacheSize);
Mount the device specified by partitionNumber
PD_DEFAULT is not allowed, use _FAT_partition_setDefaultDevice
PD_CUSTOM is not allowed, use _FAT_partition_mountCustomDevice

4 - bool fatMountCustomInterface (const struct IO_INTERFACE_STRUCT* device, u32 cacheSize);
Mount a partition on a custom device

5 - bool fatUnmount (PARTITION_INTERFACE partitionNumber);
Unmount the partition specified by partitionNumber
If there are open files, it will fail

6 - bool fatUnsafeUnmount (PARTITION_INTERFACE partitionNumber);
Forcibly unmount the partition specified by partitionNumber
Any open files on the partition will become invalid
The cache will be invalidated, and any unflushed writes will be lost

7 - bool fatSetDefaultInterface (PARTITION_INTERFACE partitionNumber);
Set the default device for access by fat: and fat0:
PD_DEFAULT is unallowed.
Doesn't do anything useful on GBA, since there is only one device


#ifdef NDS
typedef enum {PI_DEFAULT, PI_SLOT_1, PI_SLOT_2, PI_CUSTOM} PARTITION_INTERFACE;
#else
typedef enum {PI_CART_SLOT} PARTITION_INTERFACE;
#endif


En fait ce qu'appelle Chism avec le terme PARTITION_NUMBER c'est le port où le périphérique est inséré.

Les fichiers sont accessibles sous la forme "device:/rep1/rep2/nomfic.ext"
avec pour device les valeurs suivantes possibles :
- fat1 : linker dans le slot DS
- fat2 : linker dans le slot GBA
- fat3 : pilote personnalisé

- fat0 ou fat: par défaut (fat1 si inséré sinon fat2)
"fat0:/rep1/rep2/nomfic.ext" est donc identique à "fat:/rep1/rep2/nomfic.ext" et aussi à "/rep1/rep2/nomfic.ext"

Je n'ai pas encore testé avec ce type d'accès

Exemples :

Voici un exemple complet avec en prime les fonctions de répertoire qui j'espère ne tarderont pas à faire leur apparition sous Devkitpro20
- Test LibFat GBA:dirent.zip
ce programme permet de vérifier la compatibilité de votre matériel avec la dernière LibFAT (20060813), évidemment je vous conseille de sauvegarder vos données avant car le programme écrit deux fichiers un en accès direct, l'autre en bufferisé.

- Test LibFat NDS version libfat(20060813) modifiée DLDI:
dirent_nds.zip
Cette version permet de lister le premier répertoire de chaque répertoire ou de remonter au père si dossier vide ... permet de tester l'accés du genre /GBA/Action/../Action/../Action .... jusqu'au plantage ...

A ce propos mon homebrew est le premier qui ne m'a pas flingué mes données sur ma miniSD dans ma supercardMiniSD . Donc allez-y ....

J'espère que mon tuto vous a plu ....

Dernière modification par Arialia ; 06/02/2007 à 00h27.
Arialia est déconnecté   Réponse avec citation

Publicité

Vieux 11/11/2006, 10h36   #2
thoduv
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: ...
Messages: 1 464
Par défaut

Pourquoi ne pas utiliser les accès "bufferés" (fopen, fread, fwrite) plutot que les accès directs (open, read, write) ?

Sinon, chouette tuto, merci !
__________________
"S'il n'y a pas de solutions c'est qu'il n'y a pas de problème ..."
< mon devblog > ... < Lapinou Jumps ! - un jeu de plate-forme "vertical" avec un mignon petit lapin. >
thoduv est déconnecté   Réponse avec citation
Vieux 11/11/2006, 11h31   #3
KoshNi
Membre
 
Date d'inscription: 04/11/2006
Messages: 17
Par défaut

J'ai trouvé ici http://forum.gbadev.org/viewtopic.php?p=107300#107300 une des dernières versions de la libfat (28/10), je la mets en pièce jointe. Mais je ne sais pas comment m'en servir dans un de mes projets ? A la place de la version actuelle ?
Fichiers attachés
Type de fichier : zip libfat-nds-20061028.tar.zip (84,4 Ko, 307 affichages)
__________________
Lumière. Beauté. Amour. Bonheur.
KoshNi est déconnecté   Réponse avec citation
Vieux 11/11/2006, 14h19   #4
Arialia
Elite
 
Date d'inscription: 10/04/2006
Localisation: Pays de la moutarde
Messages: 901
Par défaut

Citation:
Envoyé par KoshNi
J'ai trouvé ici http://forum.gbadev.org/viewtopic.php?p=107300#107300 une des dernières versions de la libfat (28/10), je la mets en pièce jointe. Mais je ne sais pas comment m'en servir dans un de mes projets ? A la place de la version actuelle ?
Merci pour ce topic... Superbe info...

J'ai récupéré le source ici
http://chishm.drunkencoders.com/libf...061028.tar.bz2

Apparemment tout est prêt pour la gestion des répertoires, ya plus qu'à attendre la nouvelle version de devkitpro

si tu es pressé et que tu as besoin de la gestion des répertoires, tu peux remplacer dans ce que je vous ai fourni le contenu de 'source/fat' par le contenu 'source' de l'archive ci-dessus.

Si tu es juste interressé par les accès fichiers, alors tu mets le 'fat.h' donné dans 'devkitpro/libnds/include' et le nouveau 'libfat.a' dans 'devkitpro/libnds/lib'

Suivant le cas tu utilises :
  • #include <fat.h> // utilisation librairie devkitpro
  • #include "fat.h" // utilisation librairie dans tes sources

Faudra que je mettes à jour le tuto
EDIT :
Attention : je n'ai pas eu le temps de tester la dernière version de Chism ... Alors comme il a dit qu'il y avait des risques de changement interne dans sa lib ... je ne garantis pas que mon code (dirent.c) fonctionne avec sa nouvelle version, de plus il ne l'a pas encore réellement publiée (dispo en version CVS normallement).

Dernière modification par Arialia ; 11/11/2006 à 17h01.
Arialia est déconnecté   Réponse avec citation
Vieux 11/11/2006, 14h53   #5
Bobby Sixkilla
Maître Chinpoko-extra-mon
 
Date d'inscription: 10/11/2005
Localisation: Palaiseau (Rive sud)
Messages: 6 460
Voir les codes amis Nintendo DS
Par défaut

Merci Arialia pour ce tuto.
Bobby Sixkilla est déconnecté   Réponse avec citation
Vieux 14/11/2006, 15h48   #6
Arialia
Elite
 
Date d'inscription: 10/04/2006
Localisation: Pays de la moutarde
Messages: 901
Par défaut

J'ai fait quelques petites modifications :
- lien sur le topic de chism ...
- explications sur les "device"


J'espère vous peaufiner ça bientôt ...

Au fait ç'est valable aussi pour GBA

d'ailleurs ma rom est une rom GBA ... le fiston avait embarqué sa DS ...

Dernière modification par Arialia ; 14/11/2006 à 15h50.
Arialia est déconnecté   Réponse avec citation
Vieux 14/11/2006, 21h45   #7
Tembargo
Membre confirmé
 
Date d'inscription: 21/11/2005
Localisation: Tōkyō
Messages: 3 018
Voir les codes amis Nintendo DS
Par défaut

Je pense utiliser ça dans pas longtemps
Donc je te dis déjà merci pour le fait d'avoir fait ce joli tuto

Et je te dirais ce que j'en pense après utilisation dans pas longtemps
__________________

Tembargo est déconnecté   Réponse avec citation
Vieux 15/01/2007, 23h14   #8
Noda
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: à montréal jusqu'au 4 mai, après retour en france ^^
Messages: 570
Par défaut

C'est bizarre, dans ton code tu utilise read, open etc au lieu de fopen, fread etc?

comment on fait un fseek dans ton cas? (puisque j'arrive a faire marcher un truc basé sur ton dirent, qui m'est très utile au passage en attendant la r20 de devkitpro )
__________________
http://nodadev.wordpress.com
Noda est déconnecté   Réponse avec citation
Vieux 15/01/2007, 23h39   #9
Dr.Vince
Administrateur
 
Date d'inscription: 10/11/2005
Messages: 4 939
Voir les codes amis Nintendo DS Voir les codes amis Wii
Par défaut

tiens j'étais passé à côté de ça, par dirent tu entends les fonctions de listage de contenu de répertoire ???

et sinon ce tuto correspond à la version DLDI ou pas ?? d'ailleurs si quelqu'un sait comment s'en servir....
__________________
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 17/01/2007, 01h40   #10
Arialia
Elite
 
Date d'inscription: 10/04/2006
Localisation: Pays de la moutarde
Messages: 901
Par défaut

Citation:
Envoyé par Noda
C'est bizarre, dans ton code tu utilise read, open etc au lieu de fopen, fread etc?

comment on fait un fseek dans ton cas? (puisque j'arrive a faire marcher un truc basé sur ton dirent, qui m'est très utile au passage en attendant la r20 de devkitpro )
J'ai utilisé les fonctions open,read, etc car ce sont les fonctions de bas niveau utilisées par les fonctions fichiers bufferisées et vu les problèmes que j'ai eu avec les homebrews avant la libfat j'ai préféré tester avec les fonctions de base ...

Sinon j'ai testé les fonctions bufferisées dans mon exemple, cela marche bien,
tu utilises fseek comme sur les autres plateformes ... ç'est ça la force de la libfat, tu peux même reprendre le source des librairies génériques genre libjpeg etc très facilement ... trop cool (perso j'ai compilé la libjpeg sans pb pour la gba et la nds juste à adapter le makefile ç'est tout ...)

Citation:
Envoyé par Dr.Vince
tiens j'étais passé à côté de ça, par dirent tu entends les fonctions de listage de contenu de répertoire ???

et sinon ce tuto correspond à la version DLDI ou pas ?? d'ailleurs si quelqu'un sait comment s'en servir....
Exact ce sont les fonctions de listage des répertoires.
Valable aussi pour la version DLDI, sauf que Chism à enlevé la possibilité d'accéder en même temps à un linker slot1 et à un autre dans le slot2 ...
Il faut juste compiler avec sa dernière version de libfat

En fait côté dev le DLDI ç'est cool : tu compiles avec la dernière version de la libfat (au moins http://chishm.drunkencoders.com/libf...061225.tar.bz2 , source http://chishm.drunkencoders.com/libf...061225.tar.bz2 ) et ... ç'est tout. C'est l'utilisateur final qui patche ta rom avec le pilote DLDI qui l'intéresse.

Sinon devkitpro R20 arrive bientôt (post ici):
Citation:
Envoyé par Wintermute
Citation:
Envoyé par tepples
Citation:
Envoyé par Lick
But wintermute is right, it's a bit of a struggle in practice. End-users should just quit being lazy and patch their homebrew themselves.
If no one comes through with an implementation of this suggestion, does this include buying a PC that runs Microsoft Windows with which to do so?
source is provided, along with linux and windows binaries.

I'm intending to provide this tool with devkitARM r20 which should hopefully be released by the end of January. Assuming my OSX colleagues are available then everyone should be pretty happy.

I now have newlib 1.15.0 built with the psuedo device API updated for the directory listing functions. There are also several fixes in the base rules for arm/itcm/iwram code as noted in other places by gmiller.

I'm also hoping to include git and several examples using this marvellous image processor.
Je pense tester bientôt le DLDI pour mon projet que je réalise pour la compo (PALIB,NINTENDOMAX,Portabledev) enfin si j'ai le temps je suis un peu à la bourre ... heureusement qu'ils ont repoussé de 2 semaines !!!

promis après la compo je vous mets à jour le tuto ...

zut déjà si tard que çà !! je vais encore être une zombie moi !!!
bonne nuit , bonne année .....

Dernière modification par Arialia ; 17/01/2007 à 01h43.
Arialia est déconnecté   Réponse avec citation
Vieux 17/01/2007, 12h18   #11
Dr.Vince
Administrateur
 
Date d'inscription: 10/11/2005
Messages: 4 939
Voir les codes amis Nintendo DS Voir les codes amis Wii
Par défaut

merci pour les réponses
__________________
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 17/01/2007, 22h45   #12
Noda
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: à montréal jusqu'au 4 mai, après retour en france ^^
Messages: 570
Par défaut

yes merci
__________________
http://nodadev.wordpress.com
Noda est déconnecté   Réponse avec citation
Vieux 20/01/2007, 16h31   #13
Noda
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: à montréal jusqu'au 4 mai, après retour en france ^^
Messages: 570
Par défaut

Heu, c'est normal que le nom d'une entrée de répertoire soit sur 8 lettres (pas de support long file name?) et bug avec des fichiers contenant des majuscules, espaces, chiffres etc dans leur nom? :/

PS: désolé pour le double post, j'aurais pu editer mais on aurait pas vu le changement
__________________
http://nodadev.wordpress.com
Noda est déconnecté   Réponse avec citation
Vieux 20/01/2007, 22h53   #14
Arialia
Elite
 
Date d'inscription: 10/04/2006
Localisation: Pays de la moutarde
Messages: 901
Par défaut

Euh moi j'ai ça sous Dualis (emulation GBAMP) :

Je testerais demain avec la SCMiniSD.
Version LibFat : 13/08/2006

faudra que je teste aussi avec la version DLDI ...

Dernière modification par Arialia ; 23/01/2007 à 18h56.
Arialia est déconnecté   Réponse avec citation
Vieux 21/01/2007, 00h46   #15
Dr.Vince
Administrateur
 
Date d'inscription: 10/11/2005
Messages: 4 939
Voir les codes amis Nintendo DS Voir les codes amis Wii
Par défaut

bon bah je viens de tester avec la version DLDI (du 25/12/2006) , et ça fonctionne pas, que je patch ou pas FAT_InitDefault retourne false sur ma SCSD.....

voilà le code :

Code PHP:
// Includes
#include <PA9.h>       // Include for PA_Lib
#include "fat.h"

u8 line ;

// Function: main()
int main(int argcchar ** argv)
{
    
PA_Init();    // Initializes PA_Lib
    
PA_InitVBL(); // Initializes a standard VBL
    
PA_InitText(0,0);
    
PA_InitText(1,0);
    
    
PA_OutputSimpleText(0,0,line++,"Test...");
    if(
fatInitDefault()){
        
PA_OutputSimpleText(0,0,line++,"FAT init OK");
    }
    else{
        
PA_OutputSimpleText(0,0,line++,"FAT init BAD");
    }
    
    
// Infinite loop to keep the program running
    
while (1)
    {
        
PA_WaitForVBL();
    }
    
    return 
0;
// End of main() 
__________________
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 21/01/2007, 13h38   #16
Noda
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: à montréal jusqu'au 4 mai, après retour en france ^^
Messages: 570
Par défaut

moi avec la version DLDI du 28/10 ca marche mais ya des soucis avecles fichiers de + de 8 carac et contenant des carac spéciaux :/
__________________
http://nodadev.wordpress.com
Noda est déconnecté   Réponse avec citation
Vieux 22/01/2007, 16h29   #17
Arialia
Elite
 
Date d'inscription: 10/04/2006
Localisation: Pays de la moutarde
Messages: 901
Par défaut

J'ai fait pas mal de test hier résultats en bref :
Supercard SD firmware 1.63 : utiliser le pilote DLDI fait par moonlight ( dans archive Moonshell)

gestion des répertoires : marche pas avec la nouvelle version de libfat ...

comme j'ai pas trop le temps de fouiller j'ai essayé en transformant la 13082006 en version DLDI : marche nickel

ci-dessous code du fichier "disc.c" à modifier (ne pas oublier les fichiers io_dldi.h et io_dldi.s

Code PHP:
// Include known io-interfaces:
#include "io_dldi.h"                             // à ajouter
#include "io_mpcf.h"
#include "io_m3cf.h"
#include "io_m3sd.h"
#include "io_sccf.h"
#include "io_scsd.h"
#include "io_fcsr.h"
#include "io_nmmc.h"
#include "io_efa2.h"
#include "io_mmcf.h"
#include "io_njsd.h"

const IO_INTERFACEioInterfaces[] = {
    &
_io_dldi,        // Reserved for new interfaces  // à ajouter
#ifdef NDS
    // Place Slot 1 (DS Card) interfaces here
    
&_io_njsd, &_io_nmmc,
#endif
    // Place Slot 2 (GBA Cart) interfaces here
    
&_io_mpcf, &_io_m3cf, &_io_sccf, &_io_scsd, &_io_m3sd, &_io_fcsr
    
// Experimental Slot 2 interfaces
    
, &_io_mmcf, &_io_efa2
}; 

Encore quelques soucis en chemin relatif ... sinon marche nickel.
[Edit]
test sur Supercard MiniSD : Ok
test sur Supercard SD : Ok après patch DLDI SCSD Moon

Dernière modification par Arialia ; 22/01/2007 à 16h31.
Arialia est déconnecté   Réponse avec citation
Vieux 22/01/2007, 18h43   #18
Noda
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: à montréal jusqu'au 4 mai, après retour en france ^^
Messages: 570
Par défaut

Moi j'ai réussi à faire marcher avec la version DLDI du 25/12/06 (si ca intéresse quelqu'un, je mettrai la source, j'ai juste commenté les lignes problématique et tout marche nickel).

Le souci ets toujours la gestion des noms de fichiers long j'ai essayé avec toutes les versions (y compris ton originale qui marche sous dsemu) et rien a faire, si y'a des espaces et/ou plus de 8 carac dans le nom, ca plante ou ignore le fichier (pas vu), que ce soit sur ma supercard sd ou sur mon DS-Xtreme :/

Apparement c'est possible que ca vienne du fait que mes fichiers se trouvent dans un sous-répertoire (a la racine ca marcherait ptetre, j'ai pas testé)...

Si t'as une idée du problème hésites pas

Edit: au fait tu pourrais lacher la version NDS de ta source (dirent) stp? ce serait super pratique pour faire des tests
__________________
http://nodadev.wordpress.com

Dernière modification par Noda ; 22/01/2007 à 18h56.
Noda est déconnecté   Réponse avec citation
Vieux 22/01/2007, 19h38   #19
Dr.Vince
Administrateur
 
Date d'inscription: 10/11/2005
Messages: 4 939
Voir les codes amis Nintendo DS Voir les codes amis Wii
Par défaut

@Arialia : quand tu dis que la gestion des rep fonctionne pas tu parles de ton zip dirent ??

@Noda : moi ça m'intéresse pour la correction de la version du 25/12/06
__________________
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 22/01/2007, 19h44   #20
Noda
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: à montréal jusqu'au 4 mai, après retour en france ^^
Messages: 570
Par défaut

voilà

http://noda.free.fr/wtd/fatDLDI.rar
__________________
http://nodadev.wordpress.com
Noda est déconnecté   Réponse avec citation
Vieux 22/01/2007, 20h17   #21
Arialia
Elite
 
Date d'inscription: 10/04/2006
Localisation: Pays de la moutarde
Messages: 901
Par défaut

Citation:
Envoyé par Dr.Vince
@Arialia : quand tu dis que la gestion des rep fonctionne pas tu parles de ton zip dirent ??
de mes fonctions opendir et readdir de dirent.c précisément, hier j'ai essayé de les réecrire en m'inspirant de celle de chism (je sais pas encore utiliser les fonctions réentrantes) ça me plante la ds

sinon je pensais à la police, car j'ai eu des pb avec celle par défaut ...
Arialia est déconnecté   Réponse avec citation
Vieux 23/01/2007, 01h33   #22
Arialia
Elite
 
Date d'inscription: 10/04/2006
Localisation: Pays de la moutarde
Messages: 901
Par défaut

Voilà une version de dirent DLDI (source et binaires) pour la DS
avec en prime une jolie police de caractères .....
je peux pas la tester sur la DS : mon fiston s'en sert de réveil

ah oui j'ai fait un fichier texte dont le nom est long

[Edit] version libfat : 13082006 avec DLDI
dirent_nds.zip

Permet de lister aussi le premier répertoire ....

Modification du tuto : explication sur le DLDI + lien
ajout de cette version de dirent

Dernière modification par Arialia ; 23/01/2007 à 19h28.
Arialia est déconnecté   Réponse avec citation
Vieux 23/01/2007, 19h31   #23
Arialia
Elite
 
Date d'inscription: 10/04/2006
Localisation: Pays de la moutarde
Messages: 901
Par défaut

Merci Noda pour ta demande çà m'a permis de déboguer mon projet
Arialia est déconnecté   Réponse avec citation
Vieux 23/01/2007, 19h37   #24
archeide
Membre
 
Date d'inscription: 21/07/2006
Localisation: Paris, Maisons-alfort
Messages: 49
Par défaut

Je n'avais pas vu ce topic, c'est génial tout ca!
Moi qui cherchait désespérement à me débarasser de ma vieille gba_fat_lib, que je gardais à cause du manque des fonctions de listing !

Je vais essayer de l'utiliser dans la prochaine version de snemulds

Merci encore!
archeide est déconnecté   Réponse avec citation
Vieux 23/01/2007, 19h57   #25
Noda
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: à montréal jusqu'au 4 mai, après retour en france ^^
Messages: 570
Par défaut

Citation:
Envoyé par Arialia
Merci Noda pour ta demande çà m'a permis de déboguer mon projet
De rien, merci à toi pour toutes ces infos et pour tes sources, ca m'a permis de rajouter le support libfat dans mon jeu en quelques minutes seulement (+ les quelques heures pour débugguer toutes les fonctions autours )


Edit: YESS!!!! Grace a toi j'ai trouvé mon bug avec les noms de + de 8 carac

en fait c'st tout con (mais chelou): Je filtre les fichiers par extension (*.tdm) or,
-si un nom de fichier fait 8 carac max sans carac spéciaux, le nom (et l'extension) seront reconnu en majuscules

-si un nom fait plus de 8 carac ou contient des carac spéciaux, le nom et l'extension correspondront à la casse originale (minuscule la plupart du temps)

Devinez quoi? je filtrai avec les majuscules (car en testant j'avais trouvé que ca marchait comme ca) avec *.TDM

en filtrant sans tenir compte de la casse, bingo!

Donc encore merci Arialia, grace à toi on a une lib nickel qui marche avec la toute dernière version de la libfat (modifiée par mes soins) pour les répertoires (vu que le bug venait de mon code )
__________________
http://nodadev.wordpress.com

Dernière modification par Noda ; 23/01/2007 à 22h15.
Noda 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 11h07.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2014, 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