π
<-
Chat plein-écran
[^]

Mise à jour de l'émulateur TI-68k en ligne...

:32ti89: :32ti892: :32ti89t: :32ti89tn: :32ti92: :32tiv200:

Re: Mise à jour de l'émulateur TI-68k en ligne...

Message non lude Lionel Debroux » 27 Mai 2015, 19:00

Merci pour cette contribution :)

Actuellement, je fais du JS au boulot depuis quelques mois et peut-être pas pour longtemps. D'un côté, je pourrais plus facilement me remettre à cet émulateur, mais de l'autre, le boulot prend beaucoup d'énergie - et puis Emscripten est un choix encore meilleur maintenant qu'à l'époque...

Les tableaux typés JS, comme Uint8Array, sont les plus proches des tableaux classiques C/C++/Java/etc.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Mise à jour de l'émulateur TI-68k en ligne...

Message non lude Acksop » 25 Juin 2015, 21:28

Pour pouvoir faire une release officielle, j'ai besoin d'aide sur l'interface utilisateur, en particulier:
* la possibilité de sélectionner plusieurs variables à la fois avant envoi à l'émulateur;
* faire en sorte que F10 déclenche le même dialog permettant de browser le système de fichiers de l'ordinateur que celui qui est sur la page HTML;
* une interface plus utilisable pour la réception des variables (là, il faut cliquer sur deux boutons, puis un lien qui apparaît grâce au deuxième bouton...);
* à plus long terme, l'interface utilisateur pour dirlist, qui prendrait en entrée un tableau d'objets, et permettrait de cocher une seule variable (au tout début; plus tard, il faudrait gérer les réceptions multiples dans le backend) à recevoir silencieusement;
* skins grande taille et keymaps pour 89, V200, 89T;
* une plus jolie image pour le skin 89.


<<< J'avais pas vu ... ( apa mis mes lunettes de taupe !)
A l'époque de ma terminale je révais de pouvoir créer un jeux en assembleur, quelques-jeux basiques
du type de Solarstriker ( GB ) ou Revenge of the Gator ( GB )... mais ce n'étais pas possible à ce moment là
car je ne savait ni d'Eve ni d'Adam que la compilation nécessitait un autre langage...



Je n'ai malheureusement pas d'assez bonnes connaissances en C/C++ ( OpenGL ) afin de pouvoir utiliser ce type de LLVM
( dont je ne connaissait pas l'acronyme... )

...

je vais tenter de prendre sur moi ( j'ai de nombreux projets en cours ) et avancer sur ces modifications nécessaire pour la release officielle même si je sens que je vais galérer sur le dirlist
Merci en tout cas, l'émulation emscripten - TI-68k me donne envie !

...

j'ai tout de même continuer depuis le message sur le forum sur mon fork d'instancier une façon élémentaire d'écrire au clavier automatiquement sur l'émulateur afin de lancer le jeu automatiquement après un chargement de l'ensemble des fichiers nécessaires ( je bloque a ce moment sur une erreur qui me renvoi dans le core js de l'émulateur [ que j'ai déja modifié au passage... mais c'est superficiel ] )...
Avatar de l’utilisateur
Acksop
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 28%
 
Messages: 10
Inscription: 07 Avr 2015, 12:13
Localisation: Besançon
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Hors Cursus
GitHub: Acksop

Re: Mise à jour de l'émulateur TI-68k en ligne...

Message non lude Lionel Debroux » 26 Juin 2015, 06:36

Même si ce n'est pas encore directement utilisable, l'arrivée annoncée de WebAssembly renforce l'idée selon laquelle il faudrait utiliser du C/C++ pour le coeur de l'émulateur, et produire du WebAssembly.

j'ai tout de même continuer depuis le message sur le forum sur mon fork d'instancier une façon élémentaire d'écrire au clavier automatiquement sur l'émulateur afin de lancer le jeu automatiquement après un chargement de l'ensemble des fichiers nécessaires

Le remote control à base de caractères est censé être déjà implémenté dans le code de link ?
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Mise à jour de l'émulateur TI-68k en ligne...

Message non lude Acksop » 23 Avr 2016, 03:32

pfuuuu ... presque 8 mois ... dont près de 6 d'abandon faute de temps ...

Lionel Debroux a écrit:Même si ce n'est pas encore directement utilisable, l'arrivée annoncée de WebAssembly renforce l'idée selon laquelle il faudrait utiliser du C/C++ pour le coeur de l'émulateur, et produire du WebAssembly.

>> je ne sais pas vraiment quoi penser de tout cela C/C++/Java n'ont pas été les langages que j'ai pratiqué et surtout celui sur lequel je me suis spécialisé ces dernières années... WebAssembly ne m'est pas une chose familière, si j'ai la possibilité de poursuivre une formation prochaine, il y a des chances que ce soit dans l'un des deux languages :) je serait alors au top pour réellement continuer vers la release officielle se trouvant quelques posts plus haut ( ainsi que dans un fichier texte dans mon dossier de travail !)

Acksop a écrit:j'ai tout de même continuer depuis le message sur le forum sur mon fork d'instancier une façon élémentaire d'écrire au clavier automatiquement sur l'émulateur afin de lancer le jeu automatiquement après un chargement de l'ensemble des fichiers nécessaires


>>> après m'y être replonger cette soirée ( un peu étendue ), j'ai finalement mis les main dans le camboui du core JS de l'émulateur afin de pouvoir charger de multiples fichiers en autoload à base d'un Objet Xhr manipulant un Objet Reader chargeant une fonction-maison ajoutée directement dans le core JS de l'émulateur ( je mettrait tout dans un prochain post ; le temps pour moi de rassembler les pièces du puzzle que j'avais barbotté il y a 8 mois ) ...

Le jumellage fonctionne script-JS/core-FileAutoLoad fonctionne en chargeant une liste de fichier .89*, autant dire que j'en suis enfin venu a bout à cette heure !



Lionel Debroux a écrit:Le remote control à base de caractères est censé être déjà implémenté dans le code de link ?

>>>> effectivement : L'écriture au clavier se fait tout aussi naturellement, le code de link le permettait avec la fonction emu.setKey(%,%), mais avant d'en arriver là je suis passé par un paquet de non-sens-ECMAScriptiens !

Voila!
sinon concernant la release officielle:
* je n'ai pas d'exemple concret pour la sélection et la réception de plusieurs variables avant l'envoi à l'émulateur .. je ne peut pas faire grand chose sans.
* un exemple-type pour le dirlist me manque aussi... avant de m'en apercevoir, j'avais instancier quelques recherches autour d'un accès JAVA ( par une applet ) et avais même intégré le bouton dans le formulaire de la page HTML ....
* sinon concernant la taille des skins, le besoin n'y était pas pour moi a ce moment là, mais ce soir j'ai remarqué que la taille de l'écran (var screen ) et au maximum de 320*200... c'est déjà pas si mal, mais je pense que je peut avoir besoin d'un écran d'une taille 50% plus grande que celle la, donc j'y jetterais un coup d'oeil plus tôt que je ne le pense !
Avatar de l’utilisateur
Acksop
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 28%
 
Messages: 10
Inscription: 07 Avr 2015, 12:13
Localisation: Besançon
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Hors Cursus
GitHub: Acksop

Re: Mise à jour de l'émulateur TI-68k en ligne...

Message non lude Acksop » 26 Juin 2016, 13:49

Voici donc les quelques modifications que j'ai du apporter pour permettre de charger des fichiers depuis une page HTML et lancer une application depuis un script JS, ce post apporte celles qui doivent être mises en place dans le CORE de l'émulateur: le fameux fichier 12.1_**readeable.js ainsi que le script qui permet de générer une telle chose.

Code: Tout sélectionner
//vers la ligne 1327, il faut instancier la fonction mère:
function loadAutoMaticFileReader(reader)
{
stdlib.console.log("Starting to autoload as variable");
newfileready=reader;
state.unhandled_count=0;
handle_newfileready();
}

/* et la déclarer vers la ligne 1573 après le "return" afin de permettre le lancement de la fonction
"loadAutoMaticFileReader" . En gros, après "loadrom:loadrom" il faut positionner :
"loadAutoMaticFileReader:loadAutoMaticFileReader" */

//Il faut instancier la fonction en ligne 1875
function loadautofile(fileReader)
{emu.loadAutoMaticFileReader(fileReader);}

/* enfin en toute fin de fichier après le return, il faut de nouveau déclarer la fonction "loadautofile"
par le même système que précédemment:: "loadautofile:loadautofile" */


Concernant le script JS voici le code complet qu'il faudra modifier avec les fichiers à charger automatiquement:
Code: Tout sélectionner
<script type="text/javascript">
function launch(){

   emu.setKey(7,1);
   emu.setKey(26,1); // M
   
   window.setTimeout(function(){
      emu.setKey(26,0);
      emu.setKey(7,1);
      emu.setKey(12,1); // E
   
      window.setTimeout(function(){
         emu.setKey(12,0);
         emu.setKey(7,1);
         emu.setKey(18,1); // N
   
         window.setTimeout(function(){
            emu.setKey(18,0);
            emu.setKey(7,1);
            emu.setKey(9,1); // U
         
            window.setTimeout(function(){
               emu.setKey(9,0);
               emu.setKey(7,0);
               emu.setKey(36,1); // (
   
               window.setTimeout(function(){
                  emu.setKey(36,0);
                  emu.setKey(7,0);
                  emu.setKey(28,1); // )
   
                  window.setTimeout(function(){
                  emu.setKey(28,0);
                  emu.setKey(8,1); // ENTER
                  
                     window.setTimeout(function(){
                     emu.setKey(8,0); // PUSHUP - ENTER
                     
                     //CHARGEMENT ET LANCEMENT DE LA FONCTION DONE();
   
                     },750);
                     
                  },750);
   
               },750);
   
            },750);
   
         },750);
   
      },750);
   
   },750);
   
}

function changeUploadFile(nbFiles,filesToLoad){
   fileName = folder + "/" + filesToLoad[nbFiles];
   var xhr_object = null;
        
   /* ### Construction de l’objet XMLHttpRequest selon le type de navigateur*/
   /* Cas des navigateurs de type Netscape (Firefore, Conqueror, etc.)*/
   if(window.XMLHttpRequest){
         xhr_object = new XMLHttpRequest();
   /* Cas du navigateur Internet Explorer*/
   }else if(window.ActiveXObject){
         xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
   /* Cas des navigateurs ne comprenant pas cette technologie (anciens navigateurs)*/
   }else{
         /* XMLHttpRequest non supporté par le navigateur */
          alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
       return;
   }
   
   xhr_object.onload = function() {
        
   }
   xhr_object.onreadystatechange = function() {

        if (xhr_object.readyState == 4 && xhr_object.status == 200 ) {
      var arraybuffer = xhr_object.response;
        var reader = new FileReader();
        reader.readAsArrayBuffer(arraybuffer);
        
        reader.onloadend = function() {
                    ui.loadautofile(this);
                };
        console.log("loading File on TI-89");
        nbFiles--;
      if(nbFiles >= 0 ){
         changeUploadFile(nbFiles,filesToLoad);
      }else{
         window.setTimeout(launch,tempoYouThinkItMustHaveToLoadAllFiles);
      }
        
        } else if (xhr_object.readyState == 1) {

                console.log("Opening File for TI-89");

        } else if (xhr_object.readyState == 2) {

                console.log("Header File Receided for TI-89");

        } else if (xhr_object.readyState == 3) {

                console.log("Download File on XHR to put on TI-89");

        }
       
        };
        xhr_object.open("GET", fileName, true);
        xhr_object.responseType = "blob";
   xhr_object.send();
   console.log("XHR:"+fileName+" SEND REQUEST!");
}
var event;
event = new Event('change');
var folder = 'FOLDER';
var filesToLoad = new Array(
                "MYFILE_1.89P","MYFILE_2.89I","MYFILE_3.89L"
);
var nbFiles;
nbFiles = filesToLoad.length-1;
var delay = function() { changeUploadFile(nbFiles,filesToLoad); };
console.log("DELAY SEND REQUEST!");
window.setTimeout(delay,10000);
Avatar de l’utilisateur
Acksop
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 28%
 
Messages: 10
Inscription: 07 Avr 2015, 12:13
Localisation: Besançon
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Hors Cursus
GitHub: Acksop

Re: Mise à jour de l'émulateur TI-68k en ligne...

Message non lude Adriweb » 26 Juin 2016, 13:53

C'est rigolo, ca ressemble pas mal (les timeOut pour l'envoi de touches multiples) à ce que je fais de mon côté pour l'émulateur 84+CE intégré au PB :)

Bon boulot, en tout cas.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14606
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Mise à jour de l'émulateur TI-68k en ligne...

Message non lude Lionel Debroux » 27 Juin 2016, 07:23

Alright.
Je n'ai toujours pas passé le temps nécessaire à la création d'un repo Github contenant l'historique du développement. Mais j'ai de plus en plus de mal à me motiver à le faire, parce que non seulement l'avancée de la technique confirme de plus en plus nettement qu'un émulateur écrit directement en JS est une impasse, mais aussi parce que le nombre d'utilisateurs potentiels d'un émulateur TI-68k est de plus en plus bas :(
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Mise à jour de l'émulateur TI-68k en ligne...

Message non lude Clément.7 » 27 Juin 2016, 12:47

Quel est l'intérêt de mettre des setTimeout() ?
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
Avatar de l’utilisateur
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 29.5%
 
Messages: 348
Inscription: 12 Juin 2013, 15:02
Localisation: Près de Nantes
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: Mise à jour de l'émulateur TI-68k en ligne...

Message non lude Adriweb » 27 Juin 2016, 13:07

Ca permet de faire une "file d'attente" d'actions avec un certain délai ; impossible par exemple dans du single-thread de simplement faire quelque chose du genre: sendKey(...), wait(200), sendKey(...), wait(200), sendKey(...); ... et donc il ne reste plus que ça.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14606
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Mise à jour de l'émulateur TI-68k en ligne...

Message non lude Clément.7 » 27 Juin 2016, 13:22

Oui mais pourquoi faire des délais d'attente ?
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
Avatar de l’utilisateur
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 29.5%
 
Messages: 348
Inscription: 12 Juin 2013, 15:02
Localisation: Près de Nantes
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: IUT Informatique en 2017-2019
GitHub: ClementNerma

PrécédenteSuivante

Retourner vers News TI-68k (TI-89, TI-92, TI-Voyage 200)

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 10 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
965 utilisateurs:
>947 invités
>13 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)