1

comment on fait pour faire dessiner un sprite avec moka????

plus tard, j'aimerais faire une classe sprite qui gere ca automatiquement..
Tout ce qui passe pas par le port 80, c'est de la triche.

2

euh.. je suis boycoté ou personne ne sait la réponse?
Tout ce qui passe pas par le port 80, c'est de la triche.

3

4

Martial Demolins :
Quesoft doit être le seul à connaitre la réponse, et il n'a pas dû passer encore wink

En effet, je n'était pas passé smile

En parcourrant rapidement ma doc, je me suis rendu compte que les fonctions pour manipuler les sprites n'étaient pas encore encapsulées dans une des classes de l'API. Cependant, on peut utiliser toutes les fonction de la TIGCC lib en Moka : il suffit d'utiliser le mot clef native...

Exemple :

native.Sprite8 (10, 10, 8, ma_sprite, LCD_MEM, SPRT_XOR);

Pour définir ma_sprite on peut le placer dans un fichier d'entête qui correspond à une classe de ton projet. Par exemple, si le fichier source de la classe principale se nomme MaClasse.java, on peut placer ceci dans un MaClasse.h qui se trouve dans le même répertoire :

static unsigned char ma_sprite[] = {0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0xFF};

5

onur :
comment on fait pour faire dessiner un sprite avec moka????

plus tard, j'aimerais faire une classe sprite qui gere ca automatiquement..

Je serai toujours là pour le support technique smile

L'API de Moka est sous LGPL, ce qui fait que l'on peut développer des applications ou des classes Moka propriétaires, mais si tu veux contribuer au projet, j'en serais très heureux.

6

euh, si c'est du LGPL ca va etre au contraire difficile de faire des progs propriétaires, puisqu'il faut qu'on soit capable de linker avec d'autres versions de ton API a partir d'un simple binaire (ce qui est a peu pres impossible si tu linkes statiquement)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

7

Pollux :
euh, si c'est du LGPL ca va etre au contraire difficile de faire des progs propriétaires, puisqu'il faut qu'on soit capable de linker avec d'autres versions de ton API a partir d'un simple binaire (ce qui est a peu pres impossible si tu linkes statiquement)

En fait c'est un peu plus compliqué. Même s'il s'agit de librairies statiques, seul l'exécutable est sous LGPL, pas le code source:

5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked
with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.

However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

L'auteur a simplement l'obligation de fournir un moyen de recompiler un exécutable avec une version différente de la librairie (ex founir le code objet des modules qu'il link avec la librairie).

Malheureusement, tu semble avoir raison de dire qu'il est difficile de faire des progs propriétaires ... (j'ai n'ai donc pas choisi la licence idéale)

La LGPL est beaucoup moins puissante que la GPL. En particulier, une classe Moka ne tombe pas automatiquement sous LGPL, quand bien même elle serait sousclasse d'une classe sous LGLP.

De toute façon, la FSF nous demmande d'utiliser le "gros bon sens". À de nombreuses occasions elle a statué que ses compilateurs pouvaient être utilisés à des fins propriétaires.

8

justement, est-ce que le .o suffirait ? pas sur, étant donné que par exemple ca interdirait de rajouter des membres dans une classe sauf a la fin, etc...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

9

Pollux :
justement, est-ce que le .o suffirait ? pas sur, étant donné que par exemple ca interdirait de rajouter des membres dans une classe sauf a la fin, etc...

C'est ce que semble indiquer la LGPL. Désolé d'avoir fait un édit furtif, je ne pensait pas que tu était encore en ligne ...

PS: Par curiosité, tu est un québécois ou un couche tard ? (21:51 GMT-5 ça fait 03:51 GMT+1 si je ne me trompe pas)

10

il était "que" 2:51 chez moi tongue

a propos de ton edit furtif, pour un compilo c'est différent : le code généré n'est a priori pas protégé, de meme qu'une image enregistrée par gimp n'est pas protégée ; alors que dans le cas du linking il s'agit d'inclure le code de la lib lui-meme...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

11

Bon moi je veux bien faire une classe Sprite open source. Tant qu'à faire, ca servira à tout le monde.

Je promets rien pour la date (comme d'hab). J'essayerai de faire ce que tu as dis plus haut. Je te tiens au courant wink
Tout ce qui passe pas par le port 80, c'est de la triche.

12

Bon alors, premiers problemes ...
Quand je compile, TIGCC me demande si je veux prendre le fichier modifié par une source extérieur (moka) sauf que comme il y a 4378 fichiers, c'est un peu lourd de cliquer sur OUI 4378 fois, mais tu n'y es pour rien, il faut arranger TIGCC.

Sinon, j'ai fait par exemple:
import moka.lang.System;//Importer la classe moka.lang.System


public class Frame {
	public int myVal;

	public Frame(int val){
		myVal = val;
	}

	public void Ping(){
       System.println("C'est la classe Frame! %i",myVal);
       System.read();//Attend que l'utilisateur appuie sur une touche.
	}

}


mais ca plante en disant:
Unresolved reference to 'System_println_String_long_int'.

J'avais fait un private au lieu de public pour myVal à la base. Mais meme erreur il me semble.
De meme en utilisant une fonction native:

native.printf("%i",myVal);
ca plante aussi.

Sinon j'ai eu un autre probleme. J'ai fait la classe Frame, mais je l'avais nommé Spriter.java, et ca a donné une erreur. Jusque là ok, cest normal. Mais meme apres l'avoir nommé Frame.java, il me donnait la meme erreur, meme pour des fichiers qui n'ont rien à voir! Meme pour hello.java qui marchait avant, ca marchait plus en me disant que le fichier devait s'appeler autrement et qu'il s'appelait Spriter.java

Ah oui, encore un autre probleme, si j'enleve pas l'option -o, ca plante.

Alors bon, je me dis que je dois pas avoir la bonne version... rassure moi.. (j'ai la 2.21 téléchargé sur ticalc)
Tout ce qui passe pas par le port 80, c'est de la triche.

13

La version 2.21 est la dernière, tu n'as pas à t'inquiéter.

En ordre de sévérité :

- La compilation plante lorsque l'on compile le fichier Frame.java parce que l'optimisateur (qui est désactivé par !-o) parcours le programme à partir de la méthode main qui est absente du programme. C'est un bug, bien sûr, car un message d'erreur devrait apparaître au lieu de laisser l'application planter. Ironiquement, je semble faire une telle vérification à la fin de la conversion, car lorsque l'on tente de compiler avec !-o, on obtient le message suivant :

No 'main' method found in the main class.

Je vais corriger cela.

- Pour les méthodes System.println et System.print, elles sont surchargées pour prendre presque n'importe quoi en argument, mais elles ne supportent pas les arguments multiples (voir la doc pour ce qui est disponible). Le mot clef 'native' est +/- intuitif à utiliser :

* Comme modificateur d'une méthode, il indique que la méthode est codée en langage C (Moka ne convertira pas le code de la méthode). Ex :
public native void writeShort (short val) {

* Comme bloc ou fonction, il indique que le contenu délimité par { } ou ( ) est codé en langage C. Ex :
native {
 char *ptr = malloc(50 * sizeof(char));
  *(ptr++) = '2';
}

ptr = native ( malloc (50 * sizeof(char)) );


* Dans native., il indique que la fonction qui suit le point et ses arguments sont codés en C. Comme myVal est une variable d'instance (concept inconnu de TIGCC), il faut utiliser la syntaxe C pour y accéder :
native.printf("%i",this->myVal);

Également, un int de Moka est un long int du TIGCC (donc myVal doit être déclarée short si tu veux un int en TIGCC). Pour utiliser une fonction en C, mais conserver la traduction des argument, utilise la directement, sans le native (s'il n'y a pas de conflit, il n'y aura pas de problème) :

printf("%ld"a,myVal);//le a indique que "%ld" est une chaîne ANSI, non pas un objet String

Voici une façon de procéder :
import moka.lang.System;//Importer la classe moka.lang.System 

public class Frame { 
  public int myVal; 

  public Frame(int val){ 
    myVal = val; 
  } 

  public void Ping(){ 
    System.print("C'est la classe Frame!"); 
    System.println(myVal);
    System.read();//Attend que l'utilisateur appuie sur une touche. 
  } 

  public static void main () {
    Frame maF = new Frame(23); //Alloue maF
    maF.Ping();
    maF.finalize(); //Libère maF
  }
}


Pour TIGCC, je sais que c'est enuyeux. Le mieux aurrait été un message du style : XXX fichiers ont été modifiés, voulez-vous recharger ? Mais bon ... Moi je ferme TIGCC avant la conversion Moka et je double clique sur le TPR produit par Moka pour ouvrir directement le projet.

14

Pollux :
il était "que" 2:51 chez moi tongue

a propos de ton edit furtif, pour un compilo c'est différent : le code généré n'est a priori pas protégé, de meme qu'une image enregistrée par gimp n'est pas protégée ; alors que dans le cas du linking il s'agit d'inclure le code de la lib lui-meme...


C'est vrai.

La stl du compilateur C GNU est sous quelle licence au juste ? Je suppose qu'il l'ont mise sous le domaine publique ...

15

La STL fait partie du standard C++, le compilateur G++ est sous GPL...
D'ailleurs, la STL n'est en fait qu'une série d'en-têtes de fichiers, donc elle est lisible par tous.

16

ex-Miles :
La STL fait partie du standard C++, le compilateur G++ est sous GPL...
D'ailleurs, la STL n'est en fait qu'une série d'en-têtes de fichiers, donc elle est lisible par tous.

Même si un code est rendu disponible à tous, ça ne veut pas dire qu'il est open source ou du domaine publique. De nombreux programmeurs (et c'est d'autant plus vrai pour les TI) fournissent le code de leurs applications, mais sous une licence qui en fait du code propriétaire.

Je m'était mal exprimé, je voulais parler de la Standard C Library et non de la Standard Template Library. De toute façon, je ne suis pas sûr que l'implémentation soit définie par le standard, ce qui fait quelle peut être protégée par copyright.

17

L'implémentation, c'est encore autre chose... La preuve avec Microsoft grin
Effectivement, le code peut être donné sans que cela soit du code open source. En ce qui concerne la libc, je ne sais vraiment pas. Comme tout est lié dessus...

18

Ben la STL est décrite par des standards, après, il y en a plusieurs implémentation qui suivent plus ou moins ces spécifications libres (celle de gcc) ou non (celle de visual)...
Mon site perso : http://www.xwing.info

19

c quoi ce vieux troll ? neutral (non seulement pas justifié, mais en plus completement hors sujet)

sinon pour la licence utilisée par la STL de GCC, c'est du GPL avec l'exception suivante :
// As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

20

Pollux :
c quoi ce vieux troll ? neutral (non seulement pas justifié, mais en plus completement hors sujet)

Open source vs propriétaire ? Effectivement, c'est hors sujet. Pauvre Onur, son topic est sqwaté smile

21

non, je parlais de guilc, qui profitait qu'on parlait des questions de licence pour glisser un troll a peu pres aussi fin que "vi$u4l c++ $uxorzz lol mdrrr" ^^

apres le fait que le sujet ait changé, perso ca me dérange pas, donc tant que ca dérange pas onur...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

22

Pollux :
non, je parlais de guilc, qui profitait qu'on parlait des questions de licence pour glisser un troll a peu pres aussi fin que "vi$u4l c++ $uxorzz lol mdrrr" ^^

apres le fait que le sujet ait changé, perso ca me dérange pas, donc tant que ca dérange pas onur...

Oh ... le 'la preuve avec Microsoft' ? Je ne commenterai pas là dessus, étant en conflit d'intérêt grin

23

non non, je parlais du post de guilc triso (i.e. ./18)
Miles parlait de la licence des libs MS, il lancait pas un gros troll comme quoi VC++ ne respecterait aucun standard...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

24

Pollux :
non non, je parlais du post de guilc triso (i.e. ./18)
Miles parlait de la licence des libs MS, il lancait pas un gros troll comme quoi VC++ ne respecterait aucun standard...

Ok j'avais mal lu ...

25

Ca me dérange pas que vous discutiez entre vous.. je n'ai pas eu le temps de tester les dernieres indications de Quesoft.. je reposterai au moment nécessaire wink
Tout ce qui passe pas par le port 80, c'est de la triche.

26

onur :
Ca me dérange pas que vous discutiez entre vous.. je n'ai pas eu le temps de tester les dernieres indications de Quesoft.. je reposterai au moment nécessaire wink

Si tu as de besoin de plus d'information, n'hésite pas ...

27

Quesoft > conflit d'intérêt ??
Effectivement, ce n'était pas pour troller wink Visual s'en sort assez bien avec la STL, il ne lui manque que 2-3 bricoles - checksum sur les chaînes, ... -

28

ex-Miles :
Quesoft > conflit d'intérêt ??

Je suis assez pro-copy left. Ce qui fait que je ne suis pas toujours d'accord avec les tactiques commerciales de MS et que j'ai un préjugé défavorable envers cette compagnie... d'où le conflit d'intérêt.

Bien sûr, je lançais ça en half joke smile

29

J'ai toujours pas eu le temps de tester plus que l'autre fois mais je vais le faire wink
Tout ce qui passe pas par le port 80, c'est de la triche.

30

au fait tu as msn ou un truc du style.. ?
Tout ce qui passe pas par le port 80, c'est de la triche.