Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Tutoriels d'utilisation de gint (commentaires)
Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Tutoriels d'utilisation de gint (commentaires)

Posté le 15/07/2017 13:54

Les tutoriels d'utilisation de gint sont sur ce topic.

Pour garder les tutoriels ensemble dans les posts du topic d'origine (et surtout pas créer un topic par tuto...), je vous propose de poster vos questions/commentaires/etc ici. Merci !


Précédente 1, 2, 3 ··· 10 ··· 12, 13, 14, 15, 16 Suivante
Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 24/05/2021 18:17 | #


J'ai corrigé la typo, merci.

Tu commences pas mal ! Ce qui te manque c'est l'idée de représenter les octets d'une variable.

Imaginons que tu as un tableau de 10 int ; en C, int tab[10]. Chaque élément du tableau est un entier (de 4 octets) donc le tableau entier fait 40 octets. Si tu arrives à mettre un type sur la variable que tu veux obtenir à la fin et à calculer sa taille en octets alors tu auras quasiment tout fini !

Dans ton cas, ta variable data c'est une liste de listes d'entiers Python, ce qui n'est pas exactement correct. Si tu veux un tableau en C, tu vas avoir une variable du genre int mutation[16][16], et en mémoire cette variable c'est 256 entiers (de 4 octets chacun) à la suite, avec chaque ligne stockée de gauche à droite, de la ligne du haut (en premier) à la ligne du bas (en dernier).

Tu peux créer les octets de cette variable de cette façon :

mutation = bytes()
for y in range(16):
    for x in range(16):
        mutation += fxconv.u32(data[y][x])

La fonction fxconv.u32() est juste un raccourci pour coder un entier (positif) sur 4 octets. À la fin, si tu fais len(mutation), tu auras 1024 (16×16×4).

Si tu veux avoir une taille variable c'est un peu plus compliqué parce que en C tu ne peux pas vraiment faire des tableaux de taille variable. Si ce que j'ai raconté jusqu'ici est clair, je peux détailler
Shadow15510 Hors ligne Administrateur Points: 4817 Défis: 16 Message

Citer : Posté le 24/05/2021 20:11 | #


C'est très clair !
Je suis assez familier avec le concept de tableau de taille fixe et ce tableau représente l'état des mutations disponible à un instant donné, le tableau est donc fixe…

Il faut juste copier-coller les trois lignes que tu as mises et c'est ok ? Ou quelque chose m'a échappé ?
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 24/05/2021 20:15 | #


Si la taille du tableau est unique, tu peux faire ça oui ! Si tu as plusieurs tables de mutations et que ces tables ne sont pas toutes de la même taille... alors tu comprends bien que ça ne marchera pas pour tout le monde en même temps.
Shadow15510 Hors ligne Administrateur Points: 4817 Défis: 16 Message

Citer : Posté le 24/05/2021 20:17 | #


En fait, j'ai pas mal de tables de mutations différentes qui correspondent à des stades plus ou moins avancés du jeu les tables vont se débloquer au fur et à mesure, mais elles sont toutes de la même taille (8 par 4)
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 24/05/2021 20:19 | #


Dans ce cas pas de souci tu peux faire un tableau de 8 par 4 dans le code et utiliser le motif ci-dessus dans fxconv.
Shadow15510 Hors ligne Administrateur Points: 4817 Défis: 16 Message

Citer : Posté le 24/05/2021 20:19 | #


Du coup ça me fait un code comme ça :
def convert_mt(input_name, output, params, target):
    with open(input_name, "r") as file:
        # Extract informations
        lines = file.read().splitlines()
        mutation_matrix = [i.split(" | ") for i in lines]
        
        # Encode information into bytes
        data = byte()
        for i in enumerate(mutation_matrix):
            for j in enumerate(i):
                mutation += fxconv.u32(int(j))

    fxconv.elf(data, output, "_" + params["name"], **target)

"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 24/05/2021 20:24 | #


Yup, c'est bon. Il te manque un s à bytes(). Dans le code C, tu peux récupérer une structure comme ça :

struct mutation_table {
    int table[4][8];
}

Techniquement tu n'es pas obligé de faire une structure, mais c'est plus pratique (surtout si tu comptes ajouter des informations en plus ensuite).
Shadow15510 Hors ligne Administrateur Points: 4817 Défis: 16 Message

Citer : Posté le 24/05/2021 20:33 | #


Ok !
Nickel nickel, merci beaucoup !

Ajouté le 25/05/2021 à 11:56 :
Hey, j'ai encore un petit soucis, quand je compile, j'ai une erreur Unknown CMake command "fxconv_declare_converters"., il faut inclure un fichier particulier pour déclarer des convertisseurs ?
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 25/05/2021 11:58 | #


C'est avec include(Fxconv). C'est un peu récent donc si ton fxSDK n'a pas été mis à jour récemment essaie ça.
Shadow15510 Hors ligne Administrateur Points: 4817 Défis: 16 Message

Citer : Posté le 25/05/2021 13:00 | #


Oui, la ligne est bien dans le CMakeLists.txt, mais ça ne change rien… Niveau version j'utilise la version de DS, pas l'AUR, celle avec le dépôt pacman

Ajouté le 25/05/2021 à 13:35 :
Si fxconv est fourni dans le même paquet que fxsdk, j'ai la version 2.4.0-1
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 25/05/2021 13:36 | #


Eeeet c'est ma faute encore une fois. Je n'ai pas encore créé de release avec ces changements. Je vais probablement faire ça cet après-midi, en espérant que Darks puisse suivre.
Shadow15510 Hors ligne Administrateur Points: 4817 Défis: 16 Message

Citer : Posté le 25/05/2021 13:36 | #


Ok
Merci beaucoup !
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Dark storm Hors ligne Labélisateur Points: 11468 Défis: 176 Message

Citer : Posté le 25/05/2021 20:36 | #


La balle est dans ton camp
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 25/05/2021 20:44 | #


Oui j'arrive mais je voudrais pas précipiter le truc, tu sais ce qui se passe quand on rushe une release. xD
Shadow15510 Hors ligne Administrateur Points: 4817 Défis: 16 Message

Citer : Posté le 26/05/2021 20:10 | #


Hey !
Ça compile presque ! xD Avec la nouvelle version, le convertisseur est bien pris en compte et à l'air de faire son travail Il reste néanmoins une erreur que je ne comprends pas :
[sha-chan@Kili Plague]$ fxsdk build-fx -B
[  5%] Building C object CMakeFiles/myaddin.dir/src/main.c.obj
[ 10%] Building C object CMakeFiles/myaddin.dir/src/core.c.obj
[ 15%] Building C object CMakeFiles/myaddin.dir/src/display_engine.c.obj
[ 21%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/plague.png
[ 26%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/planes.png
[ 31%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/bground.png
[ 36%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/mutations.png
[ 42%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/piece.png
[ 47%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/title.png
[ 52%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/mutations_table/abilities_1.txt
[ 57%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/mutations_table/abilities_2.txt
[ 63%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/mutations_table/abilities_3.txt
[ 68%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/mutations_table/symptoms_1.txt
[ 73%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/mutations_table/symptoms_2.txt
[ 78%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/mutations_table/symptoms_3.txt
[ 84%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/mutations_table/transmissions_1.txt
[ 89%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/mutations_table/transmissions_2.txt
[ 94%] Building FXCONV object CMakeFiles/myaddin.dir/assets-fx/mutations_table/transmissions_3.txt
[100%] Linking C executable myaddin
/usr/lib/gcc/sh3eb-elf/11.1.0/../../../../sh3eb-elf/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/myaddin.dir/build.make:251 : myaddin] Erreur 1
make[1]: *** [CMakeFiles/Makefile2:83 : CMakeFiles/myaddin.dir/all] Erreur 2
make: *** [Makefile:91 : all] Erreur 2

Il n'arrive pas à trouver -lc ?
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 26/05/2021 20:16 | #


Oui -lc c'est l'option -l (utiliser une bibliothèque) avec la bibliothèque c (donc libc.a, le lib devant est fixe et le .a derrière aussi). La libc c'est la lib standard du langage, et depuis cette nouvelle version fxlibc est utilisée. C'est notre implémentation communautaire d'une partie de la libc (jusque-là gint fournissait quelques fonctions, mais là on s'approche d'un support complet).

Il faut que tu l'installes donc. Darks était supposé la packager mais je ne la vois pas sur le dépôt.
Shadow15510 Hors ligne Administrateur Points: 4817 Défis: 16 Message

Citer : Posté le 26/05/2021 21:28 | #


Du coup, il faut que j'installe fxlibc ou libc ou c'est pareil ?
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 26/05/2021 21:30 | #


Je pense que Darks va le packager, dans ce cas tu auras juste à installer le paquet du nom choisi (fxlibc je pense).

Attention parce que si tu installes libc avec pacman directement, tu vas obtenir une libc pour ton ordinateur (x86/amd64). Le nom « libc » est très commun, un peu comme « gcc », donc il est facile de se tromper.
Shadow15510 Hors ligne Administrateur Points: 4817 Défis: 16 Message

Citer : Posté le 26/05/2021 21:31 | #


Ah ok !
Je vais attendre le paquet de Darks ça va m'éviter les manipulations hasardeuses…
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 20113 Défis: 143 Message

Citer : Posté le 26/05/2021 21:31 | #


Je pense que c'est le bon plan ouais
Dark storm Hors ligne Labélisateur Points: 11468 Défis: 176 Message

Citer : Posté le 27/05/2021 00:39 | #


Done, y'a plus qu'à update

Pour info, gint 3.5.0 nécessitant fxlibc, normalement tu n'as même pas besoin d'installer cette dépendance explicitement : elle va être directement cherchée et installée via la mise à jour de gint.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Précédente 1, 2, 3 ··· 10 ··· 12, 13, 14, 15, 16 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 62 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd