Posté le 15/07/2017 13:54
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 269 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
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 :
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
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é ?
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.
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)
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.
Citer : Posté le 24/05/2021 20:19 | #
Du coup ça me fait un code comme ça :
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)
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 :
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).
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 ?
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.
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
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.
Citer : Posté le 25/05/2021 13:36 | #
Ok
Merci beaucoup !
Citer : Posté le 25/05/2021 20:36 | #
La balle est dans ton camp
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
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 :
[ 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 ?
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.
Citer : Posté le 26/05/2021 21:28 | #
Du coup, il faut que j'installe fxlibc ou libc ou c'est pareil ?
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.
Citer : Posté le 26/05/2021 21:31 | #
Ah ok !
Je vais attendre le paquet de Darks ça va m'éviter les manipulations hasardeuses…
Citer : Posté le 26/05/2021 21:31 | #
Je pense que c'est le bon plan ouais
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.