Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Addin GCC sur l'émulateur du SDK
NessotrinHors ligneMembrePoints: 203 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


Pages : 1, 2Suivante
Drac0300Hors ligneMembrePoints: 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.
LephenixnoirEn ligneAdministrateurPoints: 16091 Défis: 140 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
NessotrinHors ligneMembrePoints: 203 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.
LephenixnoirEn ligneAdministrateurPoints: 16091 Défis: 140 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];
};
NessotrinHors ligneMembrePoints: 203 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.
LephenixnoirEn ligneAdministrateurPoints: 16091 Défis: 140 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.
EiyeronHors ligneAncien modérateurPoints: 5513 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.
Drac0300Hors ligneMembrePoints: 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.
EiyeronHors ligneAncien modérateurPoints: 5513 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à.
Drac0300Hors ligneMembrePoints: 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.
EiyeronHors ligneAncien modérateurPoints: 5513 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.
LephenixnoirEn ligneAdministrateurPoints: 16091 Défis: 140 Message

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


La plupart des données différentes sont celles des e-strips.
Drac0300Hors ligneMembrePoints: 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.
LephenixnoirEn ligneAdministrateurPoints: 16091 Défis: 140 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...
Drac0300Hors ligneMembrePoints: 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.
EiyeronHors ligneAncien modérateurPoints: 5513 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.
Drac0300Hors ligneMembrePoints: 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.
EiyeronHors ligneAncien modérateurPoints: 5513 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...
LephenixnoirEn ligneAdministrateurPoints: 16091 Défis: 140 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...
EiyeronHors ligneAncien modérateurPoints: 5513 Défis: 57 Message

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


Il en a un? Première info de la journée.
Pages : 1, 2Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 150 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