Mise à jour de l'émulateur TI-68k en ligne...
28 posts
• Page 2 of 3 • 1, 2, 3
Re: Mise à jour de l'émulateur TI-68k en ligne...
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.
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.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
-
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6865
- Joined: 23 Dec 2009, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: -
- GitHub: debrouxl
Re: Mise à jour de l'émulateur TI-68k en ligne...
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 ] )...
-
Acksop
Niveau 3: MH (Membre Habitué)- Posts: 10
- Joined: 07 Apr 2015, 12:13
- Location: Besançon
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Hors Cursus
- GitHub: Acksop
Re: Mise à jour de l'émulateur TI-68k en ligne...
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.
Le remote control à base de caractères est censé être déjà implémenté dans le code de link ?
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.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
-
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6865
- Joined: 23 Dec 2009, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: -
- GitHub: debrouxl
Re: Mise à jour de l'émulateur TI-68k en ligne...
pfuuuu ... presque 8 mois ... dont près de 6 d'abandon faute de temps ...
>> 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 !)
>>> 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 !
>>>> 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 !
Lionel Debroux wrote: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 wrote: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 wrote: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 !
-
Acksop
Niveau 3: MH (Membre Habitué)- Posts: 10
- Joined: 07 Apr 2015, 12:13
- Location: Besançon
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Hors Cursus
- GitHub: Acksop
Re: Mise à jour de l'émulateur TI-68k en ligne...
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.
Concernant le script JS voici le code complet qu'il faudra modifier avec les fichiers à charger automatiquement:
- Code: Select all
//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: Select all
<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);
-
Acksop
Niveau 3: MH (Membre Habitué)- Posts: 10
- Joined: 07 Apr 2015, 12:13
- Location: Besançon
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Hors Cursus
- GitHub: Acksop
Re: Mise à jour de l'émulateur TI-68k en ligne...
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.
Bon boulot, en tout cas.
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...)My calculator programs
Mes programmes pour calculatrices
-
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 14779
- Images: 1123
- Joined: 01 Jun 2007, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Twitter: adriweb
- GitHub: adriweb
Re: Mise à jour de l'émulateur TI-68k en ligne...
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
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.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
-
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6865
- Joined: 23 Dec 2009, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: -
- GitHub: debrouxl
Re: Mise à jour de l'émulateur TI-68k en ligne...
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
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
-
Clément.7
Niveau 11: LV (Légende Vivante)- Posts: 348
- Joined: 12 Jun 2013, 15:02
- Location: Près de Nantes
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: IUT Informatique en 2017-2019
- GitHub: ClementNerma
Re: Mise à jour de l'émulateur TI-68k en ligne...
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.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...)My calculator programs
Mes programmes pour calculatrices
-
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 14779
- Images: 1123
- Joined: 01 Jun 2007, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Twitter: adriweb
- GitHub: adriweb
Re: Mise à jour de l'émulateur TI-68k en ligne...
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
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
-
Clément.7
Niveau 11: LV (Légende Vivante)- Posts: 348
- Joined: 12 Jun 2013, 15:02
- Location: Près de Nantes
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: IUT Informatique en 2017-2019
- GitHub: ClementNerma
28 posts
• Page 2 of 3 • 1, 2, 3
Return to News TI-68k (TI-89, TI-92, TI-Voyage 200)
Who is online
Users browsing this forum: ClaudeBot [spider] and 3 guests