Nombre de visites sur cette page : 21074 Score au progrank : 51 Note actuelle : 9.5/10 noté 3 fois Vous devez être connecté(e) pour noter (inscription).
Picture compressor est un petit utilitaire qui j'espère vous sera utile
Voici la marche à suivre :
1) Enregistrer une picture
2) Aller dans la mémoire principale, sélectionner une seule picture et l'exporter dans la racine de la mémoire de stockage (vous pouvez répéter l'opération autant de fois que souhaité)
3) Exécutez l'addin PICTURE, et sélectionnez le fichier contenant la picture à réduire
4) Choisissez la taille désirée
5) Ca y est, l'opération est terminée, vous n'avez plus qu'à vous rentre dans la mémoire de stockage et retranférer votre fichier dans la mémoire principale
Ce programme est garanti sans aucun danger pour votre calculatrice. J'espère que vous saurez tirer profit de ces nouvelles possibilités, pour réaliser des jeux toujours plus performants 8)
Voici un petit jeu qui utilise ce programme pour faire un joli scrolling : Yétisport ic
Remerciements à Dafp pour ses recherches et ses explications.
Et à Pierrotll pour tout le code que j'ai récupéré.
18/03/12 : possibilité de compresser des pictures en moins de 1024 octets
19/03/12 : plus de problème avec en ligne en haut de l'écran quand la picture fait moins de 1024 octets
Merci Zezombye de continuer de trouver ce genre d'astuces !
Si j'ai bien compris c'est du scroll horizontal sur 4 Pictures ? Sauf qu'au lieu de faire 4*2048=8192 octets, ça n'en fait que 2048+3*4=2060 octets ?
Niveau place c'est vraiment sympa, après en effet ça doit saccader. On peut tout de même imaginer faire deux fois l'astuce pour avoir 2 personnages très détaillés qui auraient chacun 4 positions possibles...
Par nature il n'est pas possible de faire directement une combinaison de scroll horizontal et vertical du coup, c'est bien ça ? A moins d'enregistrer la Picture obtenue par le scroll horizontal à la fin des Pictures nécessaires au scroll vertical par exemple (à voir niveau rapidité).
Et si je comprends bien il manque tout ou partie de la 1e ligne de la Picture ?
EDIT : je ne sais plus, on a une astuce pour dépasser les 20 Pictures autre que les Captures ?
L'idée c'est plutôt que les 2048 octets sont lus de haut en bas, puis de gauche à droite. En insérant une 4, 8 ou 12 octets au début de la lecture, l'ensemble des données est décalé vers la droite de 1, 2 ou 3 quarts de la largeur et chaque ligne se retrouve répartie sur la fin de sa ligne d'« origine » et le début de la suivante.
Il est à noter que cela ne permet pas n'importe quel scroll horizontal, loin de la. Si l'on regarde attentivement les nuages qui atteignent le bord droit de l'écran et ne sont donc que partiellement visibles, le « reste » qui est invisible à droite déborde à gauche, un pixel plus bas (ligne suivante). C'est un effet que j'ai beaucoup observé en manipulant la vram, un « artifact » qui vient simplement du fait que la vram n'est pas un véritable objet à deux dimensions (physiquement, j'entends), mais simplement une ligne de mémoire continue.
On pourrait combiner les deux, mais ça voudrait dire deux choses :
- Il faut insérer trois Pictures de 4 octets entre tous les frames hozirontaux
- Il y aura donc des lignes blanches
Ça reste négociable, si je calcule bien. Par contre, pas plus de 5 lignes de scroll horizontal vu qu'il n'y a que 20 Pictures.
Et, comme on a décalé toutes les lignes d'un, deux, ou trois quarts de ligne vers la droite, il manque autant de données de la première ligne, qui est systématiquement blanche sur sa partie gauche.
Ouaip, 3 pictures de 4 octets qui poussent la dernière picture vers la droite, même principe que le scroll vertical.
Il peut y avoir un décalage d'un pixel, prenons l'exemple d'une picture 20*10 qu'on décale par incréments de 5 pixels :
+0 pixels
+5 pixels
Ici le rectangle du bas s'est retrouvé en haut (pour ça qu'il ne faut pas mettre de pixels sur la ligne tout en bas)
+10 pixels
+15 pixels
Ici le rectangle du haut s'est retrouvé de l'autre côté mais décalé d'un pixel
Il faut prendre en compte le fait que ce n'est pas vraiment un scrolling vertical mais un ajout de 4 octets qui décalent vers la droite (et vers le bas).
Il est possible de dépasser 20 pictures/captures, mais l'inconvénient est de ne pas pouvoir y accéder avec RclPict ou dans la mémoire principale. Du coup je vois pas trop d'utilité à mettre des pictures qui ne sont accessibles qu'en en appelant une autre (par exemple, si je veux décaler la Pict 30 vers la droite en appelant la Pict 20, autant stocker la Pict 30 dans la Pict 20 mais décalée vers la droite).
Impossible malheureusement de faire une combinaison de scroll horizontal+vertical, à moins de pouvoir renommer les fichiers dans la mémoire à partir du programme. (à quand une exploitation de buffer overflow pour pouvoir faire tourner de l'assembleur ? )
D’accord merci Lephenixnoir, tu confirmes bien ce que j'entendais en écrivant "Par nature il n'est pas possible de faire directement une combinaison de scroll horizontal et vertical" et "Il manque tout ou partie de la 1e ligne de la Picture".
Ceci dit on peut imaginer faire bouger quasiment instantanément un objet de 32*8 pixels selon 4 positions verticales et 4 positions horizontales en 3*4+2048+3*341+2048=5131 octets et en utilisant 8 Pictures, ce qui en laisse 12 pour un décor, ou autant d'autres objets pour remplacer celui que l'on veut faire scroller.
Il faut pour cela faire le scroll horizontal et enregistrer la Picture obtenue après les Pictures permettant le scroll vertical. En fait ça risque d'être carrément moche !
Ah je vois que c'est ce que tu proposes Zezombye ! Mais si on met l'objet de 32*8 en bas à droite de la Picture, il devrait être moins impacté par la modification de la 1e ligne même si on fait une combinaison des 2 scrolls non ?
D'accord merci pour la précision du dépassement des 20 Pictures. Tu as raison, c'est sans intérêt si on ne peut pas les appeler (à part peut-être en mettre une 21e de 1024, pour ne pas avoir de problème si la 20e fait 1024).
J'ai déjà utilisé cette add-in pourrait des gains de place non négligeable mais je ne voit pas l'intérêt pour le scrolling
D'après ce que vous dites c'est plutôt contraignant?
Tu peux trouver une démonstration de l'intérêt du scrolling dans des jeux comme Airwolf ou de façon purement esthétique sur le menu de sélection du niveau dans Clonelab. Je n'arrive pas à me souvenir du 3e jeu qui exploite vraiment le principe dans son gameplay, que son auteur me pardonne et que ceux qui savent le mentionne !
(à part peut-être en mettre une 21e de 1024, pour ne pas avoir de problème si la 20e fait 1024).
Autant que la 20e fasse 2048 du coup
Il faut pour cela faire le scroll horizontal et enregistrer la Picture obtenue après les Pictures permettant le scroll vertical. En fait ça risque d'être carrément moche !
Hmm, le StoPict m'a pas l'air très rapide (enfin si on fait du scroll de pictures j'imagine qu'on veut de la rapidité). Une autre solution serait de mettre les pictures de scroll vertical avant celles de scroll horizontal. On aurait donc :
- Pict 10, 11, 12, 13... : scroll vertical de X pixels
- Pict 2, 3, 4 : scroll horizontal de 32 pixels (4 octets)
- Pict 5 : la picture à afficher
- Pict 1A : scroll horizontal de 32 pixels (pour remettre à 0 l'offset horizontal, bien que ça décale d'une ligne verticalement)
Ainsi si on appelle la Pict 13 qui fait 0x10 octets (soit une ligne de décalage), la Pict 5 sera décalée verticalement de 2 pixels.
(c'est d'ailleurs une utilité aux pictures cachées, en plus l'utilisateur se plaindra pas de 4 octets qu'il peut pas enlever)
Par contre faire le scroll vertical/horizontal sans pouvoir combiner les 2, je vois pas trop l'intérêt :/ Il faudrait pouvoir combiner les 2 mais je vois absolument pas comment.
Après il y a peut-être moyen d'utiliser 4*4-1=15 Pictures qui font un mix de 4 décalages horizontaux et 4 verticaux, plus une Picture qu'on souhaite scroller dans tous les sens. Donc 16 Pictures pour 16 position possibles. Ça donne quelquechose d'assez lourd, il faut être sûr de son coût...
J'ai pas encore tout compris le scrolling mais si je veux utiliser un scrolling horizontal faisant passer à l'écran des objets diffèrent comment on fait? Ou plus simplement est-ce possible?
Oui c'est tout à fait possible de faire scroller horizontalement des objets, 16 maximum si tu souhaites qu'ils soient préenregistrés en Picture, une infinité si ils sont dessinés (Drawstat ou autre) puis enregistrés dans une Picture.
Note bien que le scroll horizontal présente un léger artefact graphique (cf la discussion en cours), et qu'il ne permet que 4 positions possibles (ce qui est dû à la limite de 4 octets minimum par Picture, comme l'a expliqué Zezombye).
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