Yo,
J'ai enfin (presque) terminé le portage du compilateur "Small" et de la machine virtuelle qui va avec... j'estime que cela devrait etre le successeur du TI-Basic en matière de programmation de jeux, d'ailleurs dans l'état actuel des choses on ne peut faire que des jeux avec, puisque le seul lien avec la calculatrice est Genlib (j'ai eu la flemme d'écrire d'autres lib pour l'interpréteur). Donc, vous l'aurez compris, il s'agit d'une machine à programmer Genlib on-calc

Quelques screenshots pour montrer que le tout est deja fonctionnel et marche plutot bien:
Le compilateur:

La machine virtuelle, avec une demo Genlib (c'est exactement la meme chose que Genscr16.c mais écrit en Small)... comme vous pouvez le voir c'est quand meme plutot rapide, merci Genlib:

Et enfin, voici le code... le Small est un language de script qui ressemble au C mais sans types et sans pointeurs. Il se situe donc entre le C et le Basic:
/* GenLib test */ #include <genlib> move_plane(plane:p, dir[2]) { new x,y new size = sgl_get_plane_size(p)*16 sgl_get_plane_coord(p,x,y) x += dir[0] y += dir[1] sgl_set_plane_coord(p,x,y) if ((x > size-240) || (x < 3)) dir[0] = -dir[0] if ((y > size-128) || (y < 3)) dir[1] = -dir[1] } main() { new handle:hd new dscreen:ds1 new dscreen:ds2 new plane:p1 new plane:p2 new dir1[2] = {3,2} new dir2[2] = {1,1} new map,map2,tile // Init genlib gl_init() // Alloc two DScreens gl_init_dscreen(ds1, hd) if(hd == h_null) goto end gl_push_hd(hd) gl_init_dscreen(ds2, hd) if(hd == h_null) goto end gl_push_hd(hd) // Load resources map = sgl_resource("gendata") map2 = map+1024 tile = map+1280 // Init DScreens gl_set_dscreen_int(ds1) gl_set_dscreen_function(ds2) gl_cls() gl_change_update() p1 = gl_init_plane(map,tile,32) if (p1 == plane:0) goto end gl_push_hd(sgl_plane_handle(p1)) p2 = gl_init_plane(map2,tile,16) if (p2 == plane:0) goto end gl_push_hd(sgl_plane_handle(p2)) sgl_set_plane_coord(p1,16,17) sgl_set_plane_coord(p2,32,33) gl_wait_no_key() while (!gl_key_pressed()) { move_plane(p1, dir1) move_plane(p2, dir2) gl_update_vscreen_16(p1) gl_update_vscreen_16(p2) sgl_wait_timer_zero() gl_put_plane(p2) gl_put_fgrd_plane(p1) gl_draw_clipped_circle(240/2,128/2,25,3) gl_draw_clipped_circle(240/2,128/2,10,2) sgl_wait_dbuffer(ds1,ds2) } end: gl_free_hd() gl_quit() }
.
Les fonctions "gl_" sont celles de genlib, et les "sgl_" sont spécifiques à la lib Small, que j'ai rajouté pour combler les différences par rapport au C.
Et j'ai l'intention d'en implementer d'autres qui simplifieront l'utilisation de Genlib pour les débutants... en particulier une gestion des Handle totalement transparente.
J'entends deja les puristes qui vont dire "ouais mais c'est un interpréteur!! c'est nul, c'est lent". Deja, c'est beaucoup plus rapide que le TI-Basic, et de toute façon c'est pas pour faire des jeux d'actions rapides (pour ça il y a C/Asm), mais pour tous les autres types de jeu ça convient. Et puis les programmes en P-code Small devraient prendre beaucoup moins de place que des programmes compilés. En plus ça me permet de faire un debuggeur "source-level" on-calc, ce qui aidera beaucoup les programmeurs. Et enfin, je suis en train de faire un compilateur JIT (Just-In-Time), qui converti le P-code Small en assembleur 68k à l'execution. (execution 2 à 3 fois plus rapide selon mes calculs)
Bon, maintenant les gros points négatifs:
Ca bouffe beaucoup de place: 64Ko pour le compilateur et 17Ko pour l'interpréteur (sans compter la place que prend Genlib+Genclib+UniOS), ce qui rend ridicule une version pour TI-92. Mais bon, ça à la limite avec toute la Flash qu'on a c'est pas un gros probleme...
L'autre probleme un peu plus genant c'est le temps de compilation: 45 secondes pour compiler cet exemple simplissime... je n'ose meme pas imaginer ce que ce serait pour un jeu complet, et je n'ai aucun moyen d'améliorer ça.
Donc voila... j'attends vos impressions. Est-ce bien la peine de continuer à développer ça, est-ce que les programmeurs interessés par ce language seront nombreux malgré les inconvénients (mon but étant que tous ceux qui utilisent le TI-Basic à l'école utilisent ce language, pour profiter de la puissance de Genlib)... ?
PS: je rappelle que Genlib est (c)PpHd... je ne lui ai pas demandé son avis pour l'utiliser mais j'espere qu'il sera d'accord

[edit]Edité par Nitro le 15-07-2001 à 01:42:58[/edit]