Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [add-in] multijoueur en Basic
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

[add-in] multijoueur en Basic

Posté le 05/02/2018 20:54

Bonjour communauté ! ici je partage mon idée de projet d'add-in d'ajout de commandes basic pour gérer le multijoueur (quête ultime du flemmard qui n'a pas envie d'apprendre le C... ). Le chemin sera long et difficile, mais je compte sur vous pour partager vos conseils et idées ! si vous voulez participer à la création du programme, toute aide est la bienvenue !
projet multijoueur en basic :
   20%

moral de l'équipe
   99%


EDIT: je pense utiliser les syscalls pour modifier les fonctions Send, Receive, Send38k et Receive38k pour en faire des commandes permettant la communication entre deux calculatrices. Voici les types de communications que j'envisage:
> Send :envoi de une ou plusieurs informations sans attente de confirmation de réception via le port 3 pin
> receive38k : met le programme en pause le temps de recevoir quelque chose ( n'importe quoi ) ( faire par exemple receive→ A va déterminer le type de données que receive pourra recevoir, ici une variable, mais ca peut être une liste ou autre : receive→List x )
> Send38k : envoi de données par le port USB
> Receive : recoit les données sans mettre le programme en pause ( la syntaxe est la même que Receive )
> OpenComport38k : permettra de mettre la calto en receive permanent en background de l'exécution du programme
> CloseComport38k : stoppe le receive en background

Je pense aussi ajouter quelques nuances et fonctions supplémentaires pour varier les types de communications et palier le fait de ne pouvoir modifier que 4 commandes...

en avant !

EDIT :

Le projet ici a été abandonné, mais rassurez vous : c'est parce que Sentaro21 a été plus rapide que moi : téléchargez C.Basic qui permet de gérer la communication par le port série et bien d'autres choses !


1, 2 Suivante
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 05/02/2018 21:54 | #


Niveau détails gores, tu as quelques commandes Basic qui sont des no-op et que tu peux mapper sur des fonctions perso d'après SimLo. C'est ici, à la section PRGM/DSK-interface :

https://bible.planet-casio.com/simlo/chm/v20/fx_legacy_PRGM.HTM

En plus c'est celles qui ont des noms de communication. La programmation est bien faite quand même.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1242 Défis: 54 Message

Citer : Posté le 05/02/2018 23:19 | #


(Quelques détails en plus sur la manip dont parle LePhé ici : https://bible.planet-casio.com/simlo/chm/v20/fx9860G_basic_extension.htm )
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 06/02/2018 06:54 | #


Je pense sincèrement qu'en Basic, la meilleure option pour faire du multijoueur c'est de le faire au tour par tour, ou du moins sur la même machine.
Le reste ne sera de toute façon qu'un PoC inutilisable par 95% des potentiels joueurs.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 06/02/2018 19:51 | #


je pense faire un add-in, donc transférable d'une graph 75 à une autre. le plus dur une fois le programme fait sera de le rendre plus stable afin de minimiser les problèmes de plantage... je suis en train d'étudier la structure de l'OS pour trouver comment modifier le fichier correspondant aux commandes basic... si quelqu'un sait lequel c'est, qu'il me le dise !
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 06/02/2018 20:00 | #


comment modifier le fichier correspondant aux commandes basic

Mais les commandes Basic ne sont pas dans un fichier ! Leur comportement et leur code sont inscrits dans l'OS, planqués au milieu de tout le reste. Tu ne peux pas t'en sortir comme ça, d'autant plus que tu dois opérer en laissant l'OS inchangé
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 06/02/2018 20:57 | #


Quitte à faire un addin, autant faire ton jeu multijoueur en addin. Pour le coup on sait faire, même si encore personne n'a fait un jeu sympa avec.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 07/02/2018 17:12 | #


mon but n'est pas de créer un jeu multijoueur, mais un add-in pour rendre leur conception plus facile et sans l'aide d'un PC
après recherche, il s'avère qu'il faut faire appel à la rétro-ingénierie, et là, c'est déjà un autre domaine à maîtriser !
c'est là qu'on voit l'avantage du Linux qui propose beaucoup plus de logiciel de rétro ingineering. Donc, encore une fois (et ce ne sera pas la dernière ) je pose une question: comment changer le fichier .bin de l'OS en un fichier lisible et éditable dans un langage de programmation connu (genre C, Java, C++...) ?

merci encore de votre participation au sujet !
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 07/02/2018 17:17 | #


Le fichier .bin est en assembleur, il te faut donc un désassembleur. Mais attention, pas un désassembleur x86, un désassembleur SH3.

Si le désassembleur est assez puissant, il pourrait t'afficher le code en C (mais ça reste du code obfusqué, donc t'attends pas à du code très lisible).
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 07/02/2018 17:17 | #


c'est impossible de passer d'un fichier binaire a un langage tesl que le C
mais avec un éditeur héxa et une doc (trouvé grâce au retro engineering) tu peut avoir une sorte d'asm superH mais ce sera imbuvable et pas éditable
De plus Je ne suis pas sur qu'une tels doc existe mais si tu veut la créer par retro engineering je te conseil de le faire sur des système plus simple comme une gameboy car un interpréteur est tout sauf simple à étudier pour un débutant.
There is only one thing that makes a dream impossible to achieve : the fear of failure
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 07/02/2018 18:20 | #


Comme il a déjà été dit, le binaire ne te donne que du code assembleur, et j'irai même plus loin, jamais, jamais de C. Surtout quand le code a été optimisé.

Pour ce qui est de désassembler l'OS, je l'ai déjà fait en utilisant un désassembleur custom (objdump ne reconnaissant pas les multiplications), ça fait des très gros listings et je ne suis même pas sûr que quelqu'un se doit déjà amusé à chercher où se trouvait le code des applications individuelles dans ce bazar.

Le rétro-engineering, normalement tu n'as pas à en faire, SimLo l'a déjà fait pour nous. Qu'est-ce qui te fait penser le contraire ?
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 07/02/2018 19:23 | #


Ouais, oublie le désassemblage de l'OS si t'as pas un excellent niveau en assembleur SH3 et une très bonne connaissance de casiowin.
Tout ce que peux te produire un désassembleur c'est une fichier de pas mal (genre beaucoup) d'instructions. Et t'aura pas de code de plus haut niveau, genre C ou autre.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 18/03/2018 15:09 | #


bonjour à tous ! voici du nouveau: je me suis renseigné sur la construction de l'OS casio SH4 et du casiowin (d'après le taf de Simlo et autres). Effectivement, le désassemblage est une mauvaise idée (à part si on sait lire le binaire ou l'héxadécimal comme on lit un livre ). Par contre, je pense devoir sortir du cercle de Planète Casio (juste pour ce projet, hein) pour ce qui est de la conception d'un OS alternatif, car il semblerait que ca n'est pas très réglo vis à vis de Casio et j'ai cru comprendre que ce site préfère rester dans la le légal ( et c'est tout à votre honneur ).

Donc voici un peu là où j'en suis ! (ca n'a pas beaucoup avancé je vous l'accorde ! )

Je vous tiens tout de même au courant d'éventuelles découvertes utiles (s'il y en a encore) !
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 18/03/2018 15:23 | #


Ce n'est surtout pas très réglo dans le cadre du mode examen : un OS modifié pourrait ouvrir la voie vers un contournage du mode examen. Si un tel OS existerait, casio réagirait par attaquer en justice ceux qui ont permis à un tel OS de se faire (non seulement son créateur, mais FX-remote, le site pour héberger ces outils, etc). De plus casio briderait les calculatrices pour renforcer le mode examen, ce qu'on ne veut surtout pas.

Si tu veux faire un OS permettant de rajouter des commandes basic, ça ne servira à rien : presque personne ne l'utilisera. Il y a d'ailleurs des projets pour un basic amélioré (genre Prgm2) mais presque personne n'a codé des programmes dessus (en particulier parce qu'il crashait beaucoup).

De plus, tu as le contrôle sur 4 commandes basic : Send, Send38k, Receive, Receive38k. Il te suffit d'utiliser les syscalls nécessaires (voir doc de simlo) pour les rediriger vers une fonction qui fait ce que tu veux. C'est bien plus abordable que de réécrire l'OS.

Enfin, étant donné qu'il sera nécessaire d'avoir un addin (et donc de posséder une graph 35 améliorée, ou graph 75) autant directement gérer le multijoueur via un addin. Je pense d'ailleurs qu'on n'a pas de jeu avec multijoueur, du coup ton jeu serait le premier avec multijoueur non local.

Si tu veux vraiment faire du multijoueur non local en basic, ce serait possible mais avec un code à transmettre. À toi de voir comment le code est généré pour empêcher des triches éventuelles.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 18/03/2018 15:59 | #


Si tu veux faire un OS alternatif, sois le bienvenu sur Planète Casio ! On est 100% à fond. Cependant, on découragera (fortement) son utilisation sur les machines destinées à participer à un examen. Nous, on n'a rien à se reprocher de plus.

Par contre par rapport au multi en Basic, on a une marge très significative, et je te préviens le défi est de taille.

Évidemment, tout dépend du temps libre que tu peux passer sur ce projet, mais ça ne me paraît pas raisonnable d'attendre des résultats significatifs sur un OS avant un an de boulot... il m'a fallu des semaines avant de réussir à rediriger proprement les interruptions quand j'ai commencé à coder gint.

Encore une fois, si tu fais un OS alternatif, on veut en entendre parler, alors lance-toi !
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 19/03/2018 08:32 | #


Juste pour être clair, Casio se fout complètement de savoir si on fait des OS alternatifs ou non. À l'époque de FiXOS, ils étaient au courant il me semble, mais n'ont pas eu l'intention de faire arrêter le projet.

Ce qui les dérange, c'est que l'on facilite la contrefaçon. En gros exécuter un OS de Casio sur une machine qui n'est pas fabriquée par Casio.

Ajouté le 19/03/2018 à 08:33 :
J'en profite pour caler ici la ref à FiXOS : https://lab.knightsofnii.com/fixos-core-team/fixos
Si tu veux continuer le projet, je suis sûr que l'auteur original serait ravi
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 20/03/2018 20:09 | #


Lephenixnoir a écrit :
on découragera (fortement) son utilisation sur les machines destinées à participer à un examen.


en effet, je pense que cela est plus sage. Par contre, un OS alternatif y sera-t-il simplement toléré ? A ce que j'ai cru comprendre en me renseignant, Casio a une validation du ministère pour son utilisation lors d'un examen, par contre, un OS modifié je ne pense pas que au moment de l'exam, le staff informatique va se ramener pour voir jusqu'où tu as modifié le firmware... Mais bon, l'objectif est de faciliter la programmation et donner plus de possibilités, donc si je pose cette question, c'est juste pour savoir ! .

Zezombye a écrit :
Si tu veux faire un OS permettant de rajouter des commandes basic, ça ne servira à rien : presque personne ne l'utilisera


là, je ne suis pas d'accord: dans la communauté pas mal de gens qui sont vraiment pour l'apparition de la possibilité de gérer le multijoueur en Basic. En particulier parce qu'une calculatrice, c'est plus simple à transporter qu'un PC, aussi parce que les programmes sont vérifiables et testables plus facilement (encore qu'il y ait un émulateur sur le SDK casio).

Dark Storm a écrit :
Juste pour être clair, Casio se fout complètement de savoir si on fait des OS alternatifs ou non


merci pour la précision ! Même si ca diffère avec ce que j'ai entendu auparavant Mais bon, comme on dit, mieux vaut s'addresser au bon dieu plutôt qu'a ses saints : je vais directement voir ce que me propose la license casio...

Bon, sur le point de la doc et des connaissances requises pour la réalisation du projet, ca avance plutôt bien !
Mais ce qui m'a le plus permi de trouver là par où commencer, c'est cette super communauté de Planète Casio, refuge du geek que tout le monde prend pour un fou extra-terrestre ( autobiographique )

merci à tous ! on avance lentement mais sûrement !
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 20/03/2018 20:14 | #


Lightmare a écrit :
Par contre, un OS alternatif y sera-t-il simplement toléré ?

Certainement pas.

Ce que veut dire Zezombye je pense, c'est que le coût de devoir changer l'OS et potentiellement ne plus pouvoir utiliser la calculatrice en examen est bien fort par rapport au gain du multijoueur qui pourrait se faire simplement avec un add-in. Surtout qu'il faut aussi faire ça sur la calculatrice du copain...

Encore une fois, bon courage, et n'hésite pas à poser plein de questions o/
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 25/03/2018 12:32 | #


Bonjour ! aujourd'hui j'aimerais mieux comprendre les travaux de SimLo, celui sur les commandes send , receive , Send38k et receive38k (liens plus haut dans les commentaires). En effet il parle de syscalls, ce que je sais de cela, c'est que ca permet de rappeler des fonctions de la calto (syscalls = "system-calls" ? ) dans des programmes en C (comme les add-ins). Sauf que là, il parle de les utiliser pour modifier les actions des commandes (send, receive...). Du coup, je pense qu'il dit vrai mais qu'on ne procède tout simplement pas de la même manière ici que lorsqu'on crée un add-in (c'est évident puisque ce topic est sur les OS alternatifs ).

donc comment modifier les fonctions de la calto à partir des syscalls ?
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 25/03/2018 15:09 | #


En fait les syscalls (qui signifient bien system calls) ce sont un ensemble de fonctions que le système d'exploitation expose aux applications pour leur permettre d'utiliser les fonctionnalités du matériel. Il y en a aussi sous Linux, Windows... pour créer des processus, ouvrir des fichiers, communiquer avec le reste du monde, etc.

Les programmes C (add-ins) utilisent très largement les syscalls pour effectuer leurs tâches quotidiennes : fxlib elle-même est un gros paquet d'appels de syscalls ; plein de fonctions ne sont pas codées dans la bibliothèque elle-même mais dans le système.

Ce que Simon Lothar a fait, entre autres, c'est rétro-engineerer le système pour comprendre le rôle et le fonctionnement de bon nombre de ces syscalls. Il a documenté tout ça dans son fameux chm...

Ce qui est mentionné dans la partie que je t'ai donnée au premier message, PRGM/SDK-interface, c'est qu'il existe des syscalls qui permettent de modifier le comportement des commandes Basic Send(), Send38k, etc, en le remplaçant par du code arbitraire choisi par le programmeur. Une véritable mine d'or s'il en est, et c'est ce que je proposais d'utiliser à l'origine. (Bon, il faut quand même respecter les conventions de l'interpréteur Basic, mais ça c'est facile.)

Maintenant, puisque tu mentionnes que ce topic est sur les OS alternatifs (ce serait peut-être pas mal de le renommer du coup !), la question des syscalls s'aborde très différemment. Les syscalls sont une interface créée par l'OS et offerte aux applications. Si tu implémentes un nouvel OS, tu jettes ceux qui existent aux oubliettes et tu écris les tiens, point.

Ta question, « comment modifier les fonctions de la calto à partir des syscalls ? », admet donc deux réponses différentes selon ton point de vue. Si tu est un programmeur d'add-ins qui veut tuner le basic : c'est ce que j'ai mentionné deux paragraphes plus haut. Si tu es le développeur d'un système alternatif, la question n'a quasiment pas de sens. Tu ne modifies pas les fonctions de la calto, tu les réécris à partir de zéro. Et en particulier tu n'utilises pas les syscalls existants puisque tu écris les tiens.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 25/03/2018 15:17 | #


Merci beaucoup Lephenixnoir pour ces éclaircissements ! Alors si j'ai bien compris, s'il s'agit de la création d'un OS alternatif, il faut reprendre sa création depuis zéro... mis à part le temps, techniquement c'est possible (motivation+connaissances ), mais pour gagner du temps, on ne pourrait pas tout simplement récupérer le code source de l'OS existant ( celui de SimLo) pour le modifier où du moins récupérer les parties qu'on aura pas à toucher ?

merci de ton aide !
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 88 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