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 » Personnalisation de caractères en sprites
Remiweb Hors ligne Membre de CreativeCalc Points: 1040 Défis: 32 Message

Personnalisation de caractères en sprites

Posté le 22/11/2014 15:24

Comme je l'avais dit ici j'ai pu modifier les caractères de l'OS, j'ouvre donc ce topic pour en discuter





Il est donc possible d'avoir des caractères personnalisés et de les utiliser comme des sprites dans les programmes en basic
Les jeux pourraient simplement avoir une version normale et une spéciale sprites.
Si on arrive à mettre en place un add-in pour gérer ça on peut même envisager des fichiers de sprites qui seraient joints aux jeux.

Mais il reste à voir plusieurs choses :
- Si cela intéresse beaucoup de monde
- Comment procéder (changer l'OS fonctionne, mais à voir avec un Add-in)
- Si c'est faisable, quels sprites intégrer (les créer et se mettre d'accord)



Quelques infos supplémentaire :

Image du 1er essais
Image du 1er essais


Manière dont sont codés les sprites :
Mode texte
Mode texte
- un caractère fait 6x8 pixels, la colonne de gauche et la ligne du bas étant vides pour la plupart des caractères.
- chaque ligne de pixels du caractère est codée sur un octet
- les deux derniers bits de cet octet sont inutilisés, donc des 0

On peut ainsi faire des sprites collables les uns aux autres (pas d'espace entre) comme la pierre sur l'image au dessus.

Mode graphique
Mode graphique
Pour les caractères les moins larges (ex : A,B,C) :
- un octet code pour 2 lignes, on a donc 4 bits par ligne
- un caractère fait 4x6 pixels (on a encore une ligne vide sur le coté et en dessous)

Pour les quelques caractères plus larges (ex: M,Q,W) :
- chaque ligne est codée sur un octet
- un caractère fait 6*6 ?
A vérifier si ça fonctionne bien comme ça pour tous les caractères larges...


Les idées proposées pour les sprites :
liste des idées
liste des idées

- 1 ou 2 personnages
- monstre(s)
- explosion
Blocs :
- brique
- mur
- toit
- herbe
- arbre/plante
+ un bloc quelconque



Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 30/11/2014 15:44 | #


Petit filou
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 30/11/2014 15:51 | #


Superbe !
Beau boulot, continue comme ça !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 30/11/2014 19:44 | #


GG ! Ca promet
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Remiweb Hors ligne Membre de CreativeCalc Points: 1040 Défis: 32 Message

Citer : Posté le 09/02/2016 20:50 | # | Fichier joint


Comme c'est liés aux caractères et que je ne veux pas créer un topic je fais un petit déterrage

J'ai obtenus ces caractères en modifiant des valeurs hexadécimales d'un programme :

Ce sont tous des caractères qui ne sont pas dans le menu "CHAR".

X Y et r sont récupérables en faisant VARS -> GRPH
[] est récupérable en copiant une fraction dans le menu RUN-MAT

Pour les autres je ne crois pas qu'on puisse les récupérer directement depuis la calculette ?
A B C D E F sont les caractères utilisés pour afficher des nombre en héxa, par contre je n'avais jamais vu le P avant.
Je peux éventuellement publier un programme pour les récupérer si ça intéresse du monde.



La grande question est savez-vous s'il existes d'autres caractères comme ça ?
Tweaks : ||||| ||||
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 09/02/2016 21:49 | #


Ça m'intéresse ! Ça pourrait un peu changer les designs des programmes
Tibo28l Hors ligne Membre Points: 118 Défis: 0 Message

Citer : Posté le 10/02/2016 11:39 | #


Super bien ce projet !
Mes Programmes :
Cliquer pour enrouler

- Mystery Key
- Khi2
Casio-jawa Hors ligne Membre Points: 138 Défis: 0 Message

Citer : Posté le 10/02/2016 12:42 | #


hebien quand tu en aura fini avec ça les sprites BASIC seront beaucoup plus faciles
le C-Engine c'est fantastique
Gab.c Hors ligne Membre Points: 449 Défis: 0 Message

Citer : Posté le 10/02/2016 13:55 | #


Bon courage pour poursuivre ce projet très intéressant .
Au soir de votre vie, le seigneur ne comptera pas le nombre de fois ou vous êtes tombés, il comptera le nombre de fois ou vous vous êtes relevés.

Labyrinthe : un jeu de réflexe unique, élu Jeu Du Mois !!!
Epicmario Hors ligne Membre Points: 72 Défis: 0 Message

Citer : Posté le 10/02/2016 14:27 | #


@Remiweb Ça te brancherait qu'on se fasse une petite alliance Illuminati histoire de péter le BASIC game ?
~Geek incompris ayant trouvé refuge sur l'Internet~
Remiweb Hors ligne Membre de CreativeCalc Points: 1040 Défis: 32 Message

Citer : Posté le 10/02/2016 18:46 | # | Fichier joint


Malheureusement s'il ne s'est rien passé depuis 2014 c'est parce que ce système n'est pas exploitable

Pour mes essais je modifiais l'OS, il faudrait donc le flasher à chaque fois ce qui est assez lourd...
Lephenixnoir a essayé de voir si avec un add-in on pouvait directement modifier des caractères, ce qui serait la meilleur solution. Mais on ne peut pas, ils sont stockés dans un bout de la mémoire auquel on a pas accès...

@Matt36230 Voilà
Tweaks : ||||| ||||
Ne0tux Hors ligne Membre d'honneur Points: 3525 Défis: 265 Message

Citer : Posté le 10/02/2016 18:48 | #


Salut !

Je n'avais pas vu ce topic qui s'avère extrêmement intéressant ! J'imagine qu'une avancée dans ce projet en entraînerait une autre dans ton oeuvre phare, Remi' !

J'ai quelques questions :

-> penses-tu que la modification des caractères puisse se faire par un simple add-in de "patch" ?

-> sous-entendu : as-tu déjà trouvé une autre méthode que le flashage d'un OS alternatif ?

-> as-tu besoin d'aide pour ladite méthode ?

-> pourquoi cherches-tu de nouveaux caractères, pour en avoir davantage à remplacer, ou pour qu'ensemble nous choisissions ceux qui valent la peine d'être remplacés ?

-> si j'ai bien saisi il faudra que l'on se mette d'accord ici dans notre communauté sur les caractères que l'ont souhaite voir ? Des idées de quelqu'un apte à proposer des dessins ?

-> souhaites-tu ne faire qu'un seul "pack" de caractères ou plusieurs ?

-> actuellement, combien de caractères modifiés penses-tu qu'il soit raisonnable d'intégrer ?

Merci pour ces travaux qui promettent et bon courage !

EDIT : je viens de voir ta réponse Rémi', du coup mes questions tombent à l'eau. C'est dommage, mais j'imagine que ça vous à tout de même permis à toi et Lephé' de vous plonger dans quelque chose de nouveau, ce qui a forcément été une expérience bénéfique.
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Remiweb Hors ligne Membre de CreativeCalc Points: 1040 Défis: 32 Message

Citer : Posté le 10/02/2016 19:01 | #


-> penses-tu que la modification des caractères puisse se faire par un simple add-in de "patch" ?
Je n'en sais rien du tout, le problème c'est de pouvoir écrire dans la mémoire...
Lephenixnoir a essayé de lire/écrire à l'adresse à laquelle j'avais modifié des caractères mais il n'a pas pu le faire...

-> sous-entendu : as-tu déjà trouvé une autre méthode que le flashage d'un OS alternatif ?
Non du coup, un add-in serait vraiment parfait...

-> as-tu besoin d'aide pour ladite méthode ?
Si ça t'intéresse et que tu as le temps de faire des tests : oui
Je peux détailler la manière dont les caractères sont codés pour essayer d'en chercher dans la mémoire ? En fait je ne suis pas 100% convaincu par les adresses qu'on a essayé.

-> pourquoi cherches-tu de nouveaux caractères, pour en avoir davantage à remplacer, ou pour qu'ensemble nous choisissions ceux qui valent la peine d'être remplacés ?
Ma question n'avait rien à voir, je voulais juste savoir s'il existait d'autres caractères intéressants pour coder en basic qui ne seraient pas listés.

-> si j'ai bien saisi il faudra que l'on se mette d'accord ici dans notre communauté sur les caractères que l'ont souhaite voir ? Des idées de quelqu'un apte à proposer des dessins ?
-> souhaites-tu ne faire qu'un seul "pack" de caractères ou plusieurs ?
-> actuellement, combien de caractères modifiés penses-tu qu'il soit raisonnable d'intégrer ?
Si on ne peut pas faire d'add-in j'avais effectivement proposé de se mettre d'accord sur un pack de caractères modifiés.
Je pourrais faire un petit programme pour patcher n'importe quel OS, ça serait semblable à ce qu'on fait pour modifier l'image d'extinction.

Pour les deux dernières questions je ne peux pas vraiment répondre.
Si effectivement on lance le projet il faudra se mettre d'accord sur les caractères "inutiles" qui seront remplacés et par quoi les remplacer.

Ajouté le 10/02/2016 à 19:10 :
Tes questions ne tombent pas totalement à l'eau !
Je pense qu'on a pas trop approfondi le problème et il reste l'idée du pack de caractères modifiés
Tweaks : ||||| ||||
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 11/02/2016 12:58 | #


Merci Remiweb
Tibo28l Hors ligne Membre Points: 118 Défis: 0 Message

Citer : Posté le 11/02/2016 16:18 | #


Il faudrait un genre de mod flashable comme sur Android
Mes Programmes :
Cliquer pour enrouler

- Mystery Key
- Khi2
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 14/02/2016 11:05 | #


Ne0tux a écrit :
-> penses-tu que la modification des caractères puisse se faire par un simple add-in de "patch" ?
-> sous-entendu : as-tu déjà trouvé une autre méthode que le flashage d'un OS alternatif ?

Remiweb a écrit :
Je n'en sais rien du tout, le problème c'est de pouvoir écrire dans la mémoire...
Lephenixnoir a essayé de lire/écrire à l'adresse à laquelle j'avais modifié des caractères mais il n'a pas pu le faire...

Attendez, vous ne m'avez pas compris je pense
Le système d'update le fait bien, c'est donc possible. Je crois qu'il y a des syscalls pour écraser des secteurs : ainsi, on pourrait modifier nous-même.
Sauf que si on fait une connerie, on peut effacer des morceaux de l'OS. Et si vraiment la bêtise est grande, on peut écraser le logiciel de mise à jour, et flinguer la machine pour de bon.
À coté, les risques et périls de l'outil de compatibilité de Ziqumu ne sont pas très conséquents...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Remiweb Hors ligne Membre de CreativeCalc Points: 1040 Défis: 32 Message

Citer : Posté le 14/02/2016 11:39 | #


Lephenixnoir a écrit :
Je crois qu'il y a des syscalls pour écraser des secteurs

Du coup y en a-t-il pour lire ces secteurs ?
Il suffirait de contrôler ce qui s'y trouve avant de faire la modification, comme pour l'image d’extinction ?
(et pour annuler la modification il faudrait comparer avec le caractère qu'on y a mit)
Tweaks : ||||| ||||
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 14/02/2016 11:43 | #


Remiweb a écrit :
Lephenixnoir a écrit :
Je crois qu'il y a des syscalls pour écraser des secteurs

Du coup y en a-t-il pour lire ces secteurs ?
Il suffirait de contrôler ce qui s'y trouve avant de faire la modification, comme pour l'image d’extinction ?
(et pour annuler la modification il faudrait comparer avec le caractère qu'on y a mit)

Pourquoi utiliser des syscalls ? On peut lire directement avec des pointeurs.
Un contrôle est possible, si on pouvait localiser le logiciel de mise à jour cela nous éviterait d'aller écraser la zone de mémoire correspondante. Encore une fois, on ne peut pas être sûrs, même si on peut faire des tests suffisamment conséquents pour s'assurer de ne pas faire trop de bêtises. Ah oui, et si on limite l'utilisation aux version d'OS testées et reconnues, alors on doit pouvoir s'en sortir.

Btw, le logiciel de mise à jour n'est sans doute pas au même endroit de mémoire logique que l'OS (s'il y est). Mais l'écrasement de secteur est plus bas niveau encore...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Remiweb Hors ligne Membre de CreativeCalc Points: 1040 Défis: 32 Message

Citer : Posté le 14/02/2016 11:49 | #


Lephenixnoir a écrit :
Pourquoi utiliser des syscalls ? On peut lire directement avec des pointeurs.

Je ne maîtrise pas du tout ça, désolé je voulais juste demander si on pouvait lire quoi
(enfin je sais ce que sont les pointeurs et les syscall mais comme je n'ai jamais utilisé ça...)

Donc en principe c'est faisable. Du coup à quoi correspondent les tests que tu avais fait pour écrire/lire ?
Tweaks : ||||| ||||
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 14/02/2016 11:51 | #


On ne peut pas essayer de modifier sur l'émulateur ? C'est moins dangereux.
Hackcell En ligne Maître du Puzzle Points: 1531 Défis: 11 Message

Citer : Posté le 14/02/2016 11:59 | #


Je pense que non, l'émulateur n'est dispo qu'en 1.0.0
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 14/02/2016 12:00 | #


Remiweb a écrit :
Je ne maîtrise pas du tout ça, désolé si je parle des mauvaises choses
(enfin je sais ce que sont les pointeurs et les syscall mais que en théorie...)

Ok. Un pointeur c'est une adresse dans la mémoire logique (de 0x00000000 à 0xffffffff). Les pointeurs couvrent donc 4 Gio de mémoire, dont on ne dispose bien évidemment pas. La mémoire physique ne fait que 4 Mio et de 256 kio à 512 kio de RAM selon les modèles. Une unité sur la puce, appelée le MMU (pour Memory Management Unit), est chargée de convertir les adresses logiques en entrées dans la mémoire physique pour accéder aux données.
L'OS se trouve à un endroit précis de la mémoire logique (0xa0000000, en fait il est aussi à 0x80000000, mais ce n'est pas une réelle copie : c'est le MMU qui redirige ces deux adresses vers la même zone de mémoire physique où l'OS réside), et on peut y lire, mais pas y écrire. Je peux donc parcourir l'OS en lecture si je veux.
Cependant, l'écriture est plus compliquée. On n'a pas les droits pour le faire avec des pointeurs (le MMU, encore une fois, nous empêche de le faire). Cependant, le système le fait : ne serait-ce que par le logiciel de mise à jour qui écrase toute la zone de mémoire dédiée à l'OS. Cela dit, l'écrasement de secteur ça se passe directement dans la mémoire physique donc on ne sait pas trop où on tape.
Mais maintenant que j'y pense, la gestion de la mémoire de stockage nécessite la modification d'une partie de la mémoire morte (les 4 Mio, donc 2.5 sont dédiés à l'OS et 1.5, à la mémoire de stockage), et il n'est pas impossible (quoique très incertain) que les méthodes utilisées permettent d'écrire dans l'OS. Ce serait alors beaucoup moins risqué que les sycalls un peu barbares.

Remiweb a écrit :
Donc en principe c'est faisable. Du coup à quoi correspondent les tests que tu avais fait pour écrire/lire ?

J'avais essayé d'aller écrire dans la mémoire logique avec un pointeur.

Matt36230 a écrit :
On ne peut pas essayer de modifier sur l'émulateur ? C'est moins dangereux.

Pas vraiment non. L'émulateur n'est qu'un émulateur, on est à trop bas niveau pour qu'il permette de faire ça. Cela dit avec la mémoire de stockage, ça pourrait fonctionner.

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)

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 152 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