Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Addin GCC sur l'émulateur du SDK
Nessotrin Hors ligne Membre Points: 204 Défis: 0 Message

Addin GCC sur l'émulateur du SDK

Posté le 10/01/2015 21:29

Attention développeur en besoins, ici se trouve de précieuses ressources, néanmoins sache qu'elle sont à l'abandon depuis fort longtemps, prend garde et tout ira bien

Bonjours à tous,
En utilisant le programme de création du header G1A de casio, j'ai pu démarrer un addin de GCC sur l'émulateur du SDK 8) . Le résultat est une belle erreur, mais l'émulateur accepte de lancer l'addin sans problème. Je joins deux G1A, un crée par le SDK, l'autre par l'outil communautaire.
Je laisse le soin au masochistes de chercher les différences .
Attention tout de même, les paramètres "MODULE_NUM", "MOD1_TITLE" et "MOD1_ICON" n'ont pas été définie dans l'addin communautaire car l'option n’existe pas , les headers sont donc un peu différents !

EDIT: Après un test avec un addin plus simple, j'ai pu le faire fonctionner sans aucun problème

Fichier joint


1, 2 Suivante
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 10/01/2015 22:07 | #


Pour les masochistes sous linux, vive la commande diff !
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 11/01/2015 07:53 | #


Drac0300 a écrit :
Pour les masochistes sous linux, vive la commande diff !

Même réaction !

T'as utilisé le wrapper du SDK alors ? J'y avais pas pensé, à voir après si c'est viable. :3

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Nessotrin Hors ligne Membre Points: 204 Défis: 0 Message

Citer : Posté le 11/01/2015 15:19 | #


Après un petit désassemblage du wrapper, j'ai trouvé l'ordre dans lesquels sont mis toutes les infos :
Cliquez pour découvrir
Cliquez pour recouvrir
[APPNAME] [VERSION] [APL_ICON] [MODULE_NUM] [MOD1_TITLE] [MOD1_ICON] [MOD2_TITLE] [MOD2_ICON] [MOD3_TITLE] [MOD3_ICON] [MOD4_TITLE] [MOD4_ICON] [DISPNAME]

Après, je ne suis pas un expert, j'vais essayer de comprendre un peu plus, mais c'est dur ><'

Nessotrin, développeuse un peu trop occupée avec la vie pour être présente sur PlanetCasio.
Voici Spassus2, mon jeu de combat spatial procédural abandonné, le NESSCASDK, mon SDK 'barebones' fait maison (C'est pour les maso uniquement) et CasioUsb, mon utilitaire de transfert d'addin pour Linux.
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 11/01/2015 15:22 | #


Pourquoi tu regardes pas dans les sources du wrapper de Kristaba... y'a toutes les infos.
Voilà ma version modifiée.

Offset    Size    Description
0x000    8        "USBPower"
0x008    1        0xF3 (AddIn)
0x009    5        { 0x00,0x10,0x00,0x10,0x00 }
0x00E    1        @0x13 + 0x41
0x00F    1        0x01
0x010    4        filesize: uint, big endian
0x014    1        @0x13 + 0xB8
0x015    9    1    [Unsignificant]
0x01E    2    1    Number of objects (if MCS)
0x020    8    +    Internal name `@APPNAME`
0x028    3        -
0x02B    1    1    Number of estrips
0x02C    4        -
0x030    10    +    Version `01.23.4567`
0x03A    2        -
0x03C    14    +    Date `yyyy.MMdd.hhmm`
0x04A    2        -
0x04C    68    1    30×17 icon.
0x090    80    1    eStrip 1
0x0E0    80    1    eStrip 2
0x130    80    1    eStrip 3
0x180    80    1    eStrip 4
0x1D0    4        -
0x1D4    8    +    Program name
0x1DC    20        -
0x1F0    4        filesize: ulong, big endian
0x1F4    12        -
0x200    ...        Addin code

struct G1A_Header
{
    uint8_t magic[8];
    uint8_t addin_id;
    uint8_t unknown1[5];
    uint8_t control1;
    uint8_t unknown2;
    uint8_t filesize_uint[4];
    uint8_t control2;
    uint8_t custom_seq[11];
    uint8_t internal[8];
    uint8_t gap1[3];
    uint8_t estrips;
    uint8_t gap2[4];
    uint8_t version[10];
    uint8_t gap3[2];
    uint8_t date[14];
    uint8_t gap4[2];
    uint8_t bitmap[68];
    uint8_t estrip1[80];
    uint8_t estrip2[80];
    uint8_t estrip3[80];
    uint8_t estrip4[80];
    uint8_t gap5[4];
    uint8_t name[8];
    uint8_t gap6[20];
    uint8_t filesize_ulong[4];
    uint8_t gap7[12];
};

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Nessotrin Hors ligne Membre Points: 204 Défis: 0 Message

Citer : Posté le 11/01/2015 15:26 | #


Le problème est justement dans le wrapper: les addins produits ne peuvent pas démarrer sur l'émulateur, il y a donc un problème dans les infos (par exemple, ce bit insignifiant, il est p'têtre lié )
Nessotrin, développeuse un peu trop occupée avec la vie pour être présente sur PlanetCasio.
Voici Spassus2, mon jeu de combat spatial procédural abandonné, le NESSCASDK, mon SDK 'barebones' fait maison (C'est pour les maso uniquement) et CasioUsb, mon utilitaire de transfert d'addin pour Linux.
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 11/01/2015 18:15 | #


C'est des octets

Mais sinon, j'ai bien essayé : j'ai copié/collé directement le header d'un add-in compilé par le SDK dans le même add-in compilé avec gcc.

Eh ben, même résultat. Conclusion que j'en ai tiré : pas en lien avec le header.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 11/01/2015 21:17 | #


J'ai essayé de même de corriger le wrapper (corriger par exemple le checksum), rien à faire. Je suppose que ça à voir avec les trucs comme l'initialize addin ou la variable qui traîne dans le code source par défaut.
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 11/01/2015 22:18 | #


Peut-être que le make365addinheader.exe du sdk ne fait, au dépit de son nom, pas que le header...
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 12/01/2015 10:08 | #


Faudrait jeter un coup d'oeil aux entry points de l'addin Casio et celui de GCC voir les différences. Je suppose que ça vient EB partie de là.
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 12/01/2015 12:21 | #


J'ai vérifié avec vbindiff, les seules différences sont au début, je vous mets une screenshot :
Cliquez pour découvrir
Cliquez pour recouvrir


Il n'y a pas d'autres différences entre les deux fichiers binaires
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 12/01/2015 12:24 | #


Ls deux premiers octets différents sont le checksum si je me souviens bien. Même après avoir corrigé celui-ci l'ému refuse de le lancer.
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 12/01/2015 12:35 | #


La plupart des données différentes sont celles des e-strips.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 12/01/2015 12:44 | #


Les six octets suivants font partie du numéro de version on dirait, et visiblement il n'est pas codé de la même manière (mais c'est sûrement insignifiant).
Les 4 à partir de 0x0047 sont dans la date, le premier g1a a été compilé à 14h25v et l'autre à 20h58. -> insignifiant
Les suivants font tous partie de l'icône ->insignifiant
Sauf les 4 derniers à partir de 0x90 qui sont dans "eStrip 1" -> aucune idée e ce que c'est...


Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 12/01/2015 12:45 | #


Un e-strip, c'est les données qui permettent de lancer l'app à partir d'une e-act, ce qui a d'ailleurs un effet sur les arguments de AddIn_main().
C'est comme "NOTES" par exemple...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 12/01/2015 13:33 | #


Lephenixnoir a écrit :
Un e-strip, c'est les données qui permettent de lancer l'app à partir d'une e-act, ce qui a d'ailleurs un effet sur les arguments de AddIn_main().
C'est comme "NOTES" par exemple...


Et il y a une possibilité que le "non support" des addins soit caché dedans ?

Ajouté le 12/01/2015 à 13:36 :
Eiyeron a écrit :
Ls deux premiers octets différents sont le checksum si je me souviens bien. Même après avoir corrigé celui-ci l'ému refuse de le lancer.

Quoi comme checksum, la somme toute simple de tous les octets ?
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 12/01/2015 14:02 | #


Nan, je sais plus quoi mais c'est dans le chm où y'a les infos techniques des FX.
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 12/01/2015 15:53 | #


Ok je chercherai !
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 12/01/2015 16:06 | # | Fichier joint


Je l'aiiiii. C'est une version un peu vieillotte mais casiopeia est down alors...
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 12/01/2015 18:55 | #


Eiyeron a écrit :
Je l'aiiiii. C'est une version un peu vieillotte mais casiopeia est down alors...

Toute la doc chm que j'ai pu trouver existe sur un site "perso" de SimLo...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 12/01/2015 19:00 | #


Il en a un? Première info de la journée.
1, 2 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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 110 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