[Tutoriel]SAVE utilisant PACKAGE$
5 participants
Page 1 sur 2
Page 1 sur 2 • 1, 2
[Tutoriel]SAVE utilisant PACKAGE$
[Tutoriel]SAVE utilisant PACKAGE$
SOMMAIRE
0)Introduction
1)La commande SAVE et PACKAGE$
2)Une fois cela bien en tête, qu'est-ce que PACKAGE$ ?
3)Les bits des ressources
4)Comment activer une ressource et la paqueter ?
5)Quels sont les inconvénients ?
6)Conclusion
SOMMAIRE
0)Introduction
1)La commande SAVE et PACKAGE$
2)Une fois cela bien en tête, qu'est-ce que PACKAGE$ ?
3)Les bits des ressources
4)Comment activer une ressource et la paqueter ?
5)Quels sont les inconvénients ?
6)Conclusion
0)Introduction
Bienvenue dans le tutoriel qui va vous apprendre à utiliser la commande SAVE, mais dans sa version expert avec la variable système PACKAGE$.
1)La commande SAVE et PACKAGE$
On connaît tous ou presque tous, la commande SAVE qui sauvegarde n'importe quel type de ressource de Petit Computer.
Ex1: SAVE"COL1:COULEUR" pour la couleur des sprites
Ex2: SAVE"PROG" ou SAVE"PRG:PROG" pour un programme
Mais l'autre façon de sauvegarder c'est de paqueter ressources et programme, avec une variable système PACKAGE$.
On n'utilise pas vraiment cette variable mais on crée plutôt sa valeur, Petit Computer se chargeant de l'assigner automatiquement à PACKAGE$.
Ex: SAVE"PROG","5007" ou "5007" sera la valeur assigné à PACKAGE$ par la suite, jusqu'à qu'une nouvelle valeur soit crée.
2)Une fois cela bien en tête, qu'est-ce que PACKAGE$ ?
PACKAGE$ est la valeur hexadécimale d'une valeur binaire de base 16.
Ex: "5007" ou 5 correspond en binaire à 0101 (voir AIDE_J8B, trucs et astuces N°6 ou N°7 )
Chaque bit représente une ressource de Petit Computer en fonction de l'écran du haut ou du bas. (voir le 3) du tutoriel, ou voir AIDE_J8B trucs et astuces N°8 )
Les bits s'écrivent du plus grand au plus petit et se suivent toujours.
Ex: b03 b02 b01 b00 ce qui correspond aux ressources SPU3 SPU2 SPU1 SPU0 de l'écran du haut.
Ex2: si on avait besoin du bits 42, on devrait écrire la liste à partir du bit 43 jusqu'au bit 0.
3)Les bits des ressources
- Correspondance bit / ressource:
- Chaque couleur forme 4 bits qu'on devra convertir en hexadécimal pour le PACKAGE$ suivant le groupe du nombre max de bits qu'on utilisera.
{Ecran du haut
b00: SPU0
b01: SPU1
b02: SPU2
b03: SPU3
b04: SPU4
b05: SPU5
b06: SPU6
b07: SPU7
b08: BGU0
b09: BGU1
b10: BGU2
b11: BGU3
b12: BGF
b13: COL0
b14: COL1
b15: COL2
b16: SCU0
b17: SCU1 }
b18: GRP0
b19: GRP1
b20: GRP2
b21: GRP3
b22: MEM
b23: SPD0
b24: SPD1
b25: SPD2
b26: SPD3
{Ecran du bas
b27: BGU0
b28: BGU1
b29: BGU2
b30: BGU3
b31: BGF
b32: COL0
b33: COL1
b34: COL2
b35: SCU0
b36: SCU1 }
b37: ?? réservé au système
b38: ?? réservé au système
b39: BGD0 haut
b40: BGD1 haut
b41: SPS0
b42: SPS1
b43: BGD0 bas
b44: BGD1 bas
b45: ?? non utilisé
b46: ?? non utilisé
b47: ?? non utilisé
4)Comment activer une ressource et la paqueter ?
Pour activer une ressource dans un PACKAGE$, il suffit que son bit soit égal à 1 sinon ce sera 0.
Ex: Pour sauvegarder un programme paqueté avec SPU1 et SPU2, il suffira de regarder les bits qu'ils occupent : SPU1 c'est le b01 et SPU2 c'est le b02.
Donc comme on est dans une base de 16, il faut prendre en compte aussi le b00 et le b03 ce qui nous donne : b03=0 b02=1 b01=1 b00=0.
On convertit ensuite en hexadécimal le résultat 0110 ce qui nous donne : 6 (Dans PetitComputer on fera en mode RUN: ?HEX$(0110) ). On écrira alors SAVE"PROG","6"
5)Quels sont les inconvénients ?
Le premier est qu'on peut paqueter qu'une ressource de chaque type, ce qui veut dire qu'on ne peut pas paqueter deux SPU0 par exemple.
Le deuxième est qu'on ne peut pas recharger une ressource paqueté, ce qui veut dire que si on charge un SPU0 alors qu'un SPU0 paqueté est présent, on ne pourra pas retrouver le SPU0 paqueté, il est définitivement perdu pour la suite du programme.
Dernier point, si on modifie un programme paqueté, il faut toujours penser à l'enregistrer avec son PACKAGE$.
Ex: LOAD"J8BPGAME" '(J8BPGAME est paqueté)
'on modifie le code
SAVE"J8BPGAME","5007" 'On sauvegarde le programme avec les ressources. Oublier le PACKAGE$ reviendrait à sauvegarder que le programme sans ressources.
Garder bien en tête que si vous avez supprimé les fichiers ressources, et que vous oubliez de sauvegarder avec le PACKAGE$ et quitter, vous perdrez toutes les ressources qui était avec le PACKAGE$.
6)Conclusion
En résumé, pour paqueter il faut d'abord activer les ressources suivant les bits qu'ils occupent, et convertir le résutat en hexadécimal pour obtenir le PACKAGE$, et enfin utiliser une commande SAVE suivi du nom du programme et du PACKAGE$. C'est donc très utile pour avoir plusieurs fichiers en un seul programme et on n'aura pas à se demander quoi supprimer pour la désinstallation ou si on a rien oublier de scanner.
En contrepartie, Paqueter sert seuleument pour les programmes qui n'utilisent qu'un type de chaque ressource, ce qui limite son utilisation aux programmes ayant des ressources graphiques limités.
PS:Pour toutes erreurs, veuillez me le signaler que je les corrige.
Dernière édition par J8B le Dim 2 Nov - 0:15, édité 3 fois
Re: [Tutoriel]SAVE utilisant PACKAGE$
Super Tuto mais en fait je n'ais pas compris ce que tu entend par "paqueter"
C'est sauvegarder un programme avec ses ressources en même temps
c'est ce que j'ai compris en tout cas !
J' espère que tu m'éclairera ou que tu rajouteras une partie explication dans ton tuto !
C'est sauvegarder un programme avec ses ressources en même temps
c'est ce que j'ai compris en tout cas !
J' espère que tu m'éclairera ou que tu rajouteras une partie explication dans ton tuto !
Re: [Tutoriel]SAVE utilisant PACKAGE$
Je crois avoir compris dans l'ensemble, merci pour ce tuto
Tu pourrais peut-être rajouter dans ton post comment passer du binaire à l'hexadécimal, ce que ton logiciel d'aide ne permet pas directement (c'est expliqué, mais ce n'est pas calculé comme pour hexadécimal -> binaire) :
HEX$(&B0110)=6
Je vais commencer par créer un logiciel qui convertit un "b**" en ce qu'il faut, puis je vais essayer avec b22 (MEM) pour mon OS, ce sera un premier défi ^^
Tu pourrais peut-être rajouter dans ton post comment passer du binaire à l'hexadécimal, ce que ton logiciel d'aide ne permet pas directement (c'est expliqué, mais ce n'est pas calculé comme pour hexadécimal -> binaire) :
HEX$(&B0110)=6
Je vais commencer par créer un logiciel qui convertit un "b**" en ce qu'il faut, puis je vais essayer avec b22 (MEM) pour mon OS, ce sera un premier défi ^^
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Tutoriel]SAVE utilisant PACKAGE$
Ouais je pense que tu as bien compris. Paqueter signifie former des paquets. Donc quand tu sauvegardes en paquets ça signifie que le programme et ses ressources forme un seul fichier.
C'est ce que j'ai écrit en conclusion mais d'une manière différente.
D'ailleurs faut que je pense à corriger mon fichier AIDE, ce que j'ai marqué pour SAVE n'est pas très exact.
Kuroshitsu, mon fichier d'aide explique le binaire en hexadécimal il y a même un exemple qui est ?HEX$(&B1001101) -> 4D
Bon j'ai rajouté l'exemple dans le tuto
Hexadécimal en binaire, n'est pas expliqué par contre mais à un convertisseur.
C'est ce que j'ai écrit en conclusion mais d'une manière différente.
D'ailleurs faut que je pense à corriger mon fichier AIDE, ce que j'ai marqué pour SAVE n'est pas très exact.
Kuroshitsu, mon fichier d'aide explique le binaire en hexadécimal il y a même un exemple qui est ?HEX$(&B1001101) -> 4D
Bon j'ai rajouté l'exemple dans le tuto
Hexadécimal en binaire, n'est pas expliqué par contre mais à un convertisseur.
Re: [Tutoriel]SAVE utilisant PACKAGE$
J8B > Je viens de finir ma propre version du convertisseur, c'était pas de la tarte en effet x)
Oui j'avais bien précisé que tu l'avais expliqué dans l'aide, mais c'est toujours mieux de le rajouter dans ton tuto ^^
Oui j'avais bien précisé que tu l'avais expliqué dans l'aide, mais c'est toujours mieux de le rajouter dans ton tuto ^^
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Tutoriel]SAVE utilisant PACKAGE$
Et alors ton convertisseur c'est à peu près pareil que le mien ou mieux ?
Bien que l'essentiel soit le résultat ^^
Bien que l'essentiel soit le résultat ^^
Re: [Tutoriel]SAVE utilisant PACKAGE$
Bah mon convertisseur décimal->binaire semble fonctionner correctement (j'ai comparé avec des résultats sur Internet), mais j'ai dû mal comprendre le passage hexadécimal-->décimal...
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Tutoriel]SAVE utilisant PACKAGE$
Hexadécimal en décimal c'est tout bête c'est PRINT &H4D ce qui donne 77. Donc pas besoin de se torturer l'esprit ^^Kuroshitsu a écrit:Bah mon convertisseur décimal->binaire semble fonctionner correctement (j'ai comparé avec des résultats sur Internet), mais j'ai dû mal comprendre le passage hexadécimal-->décimal...
Re: [Tutoriel]SAVE utilisant PACKAGE$
Dans mon programme, je demande avec un INPUT la valeur hexadécimale, que je stocke dans HEXA$
Pour faire la conversion Hexadécimal-->binaire, je comptais faire la conversion Hexa-->Décimal puis Décimal-->binaire.
Mais quand je fais DECIMAL=&HHEXA$, j'ai un message d'erreur qui s'affiche, la syntaxe n'est pas bonne :/
Pour faire la conversion Hexadécimal-->binaire, je comptais faire la conversion Hexa-->Décimal puis Décimal-->binaire.
Mais quand je fais DECIMAL=&HHEXA$, j'ai un message d'erreur qui s'affiche, la syntaxe n'est pas bonne :/
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Tutoriel]SAVE utilisant PACKAGE$
C'est parce &H doit être suivi d'un code hexadécimal et pas d'une variable donc fait plutôt HEXA$="&H"+HEXA$ puis DECIMAL=VAL(HEXA$)Kuroshitsu a écrit:Dans mon programme, je demande avec un INPUT la valeur hexadécimale, que je stocke dans HEXA$
Pour faire la conversion Hexadécimal-->binaire, je comptais faire la conversion Hexa-->Décimal puis Décimal-->binaire.
Mais quand je fais DECIMAL=&HHEXA$, j'ai un message d'erreur qui s'affiche, la syntaxe n'est pas bonne :/
Re: [Tutoriel]SAVE utilisant PACKAGE$
très bon tuto (enfin je crois, j'ai pas testé) :p
Raven94- Messages : 19
Date d'inscription : 02/07/2014
Age : 23
Re: [Tutoriel]SAVE utilisant PACKAGE$
très bon tuto !
Juste une question, je ne suis pas sur d'avoir compris, on peut supprimer toutes les ressources liées au programme (grp,chr,...) après le package ?
Juste une question, je ne suis pas sur d'avoir compris, on peut supprimer toutes les ressources liées au programme (grp,chr,...) après le package ?
Raven94- Messages : 19
Date d'inscription : 02/07/2014
Age : 23
Re: [Tutoriel]SAVE utilisant PACKAGE$
Mon convertisseur marche
Par contre, comment obtiens-tu b03=0, b02=1... ?
Quand je fait passer un b.. de l'héxadécimal au binaire, j'obtient toujours 0.
Par contre, comment obtiens-tu b03=0, b02=1... ?
Quand je fait passer un b.. de l'héxadécimal au binaire, j'obtient toujours 0.
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Tutoriel]SAVE utilisant PACKAGE$
Raven94
Pas vraiment supprimer mais les changer. Si tu relances ton programme depuis le début elles reviendront.
Par exemple tu charges ton programme paqueté, ses ressources se chargent donc automatiquement, et si dans ton programme tu utilises la commande CHRINIT sur une de tes ressources paqueté, elle changera par celle de PetitComputer. Le seul moyen pour que ta ressource paqueté revienne, est de relancer le programme.
Kuroshitsu
C'est toi qui choisi les bits si c'est 0 ou 1. Et les bits c'est du binaire. Bref comprends pas trop ce que tu veux faire ?
Pas vraiment supprimer mais les changer. Si tu relances ton programme depuis le début elles reviendront.
Par exemple tu charges ton programme paqueté, ses ressources se chargent donc automatiquement, et si dans ton programme tu utilises la commande CHRINIT sur une de tes ressources paqueté, elle changera par celle de PetitComputer. Le seul moyen pour que ta ressource paqueté revienne, est de relancer le programme.
Kuroshitsu
C'est toi qui choisi les bits si c'est 0 ou 1. Et les bits c'est du binaire. Bref comprends pas trop ce que tu veux faire ?
Re: [Tutoriel]SAVE utilisant PACKAGE$
Donc on peut faire la sauvegarde d'un MEM$ SANS sauvegarder le MEM$ ?
Trop drole !
Mais va falloir que je relise 10 fois pour comprendre bien de quoi il retourne (moi et les sauvegardes ca prend du temps.)
Attends y'a un truc pas dit : tu nous dis que les bits 0,1,2 et 3 si tu save les 1 et 2 le résultat binaire c'est 0110, t'es gentil mais si c'est les 20,21,22,23 et qu'on veut save les 22 et 23, en binaire ca fait sans doute pas 0011. Tu donnes un exemple spécial pas général et ça embête dans la compréhension je trouve.
Trop drole !
Mais va falloir que je relise 10 fois pour comprendre bien de quoi il retourne (moi et les sauvegardes ca prend du temps.)
Attends y'a un truc pas dit : tu nous dis que les bits 0,1,2 et 3 si tu save les 1 et 2 le résultat binaire c'est 0110, t'es gentil mais si c'est les 20,21,22,23 et qu'on veut save les 22 et 23, en binaire ca fait sans doute pas 0011. Tu donnes un exemple spécial pas général et ça embête dans la compréhension je trouve.
Re: [Tutoriel]SAVE utilisant PACKAGE$
Je ne suis pas trop sûr de ce qu'il se passe pour le MEM$, j'ai jamais essayé.
En théorie, je pense que pour sauvegarder dans le jeu, il faudra faire un SAVE "PRG",PACKAGE$ au lieu d'un SAVE"MEM:TonFichier"
En théorie, je pense que pour sauvegarder dans le jeu, il faudra faire un SAVE "PRG",PACKAGE$ au lieu d'un SAVE"MEM:TonFichier"
Re: [Tutoriel]SAVE utilisant PACKAGE$
Je n'ai toujours rien compris, parce que si l'on ne peut pas supprimer les ressources ensuite autant mettre un "LOAD:..." ça ne prend pas beaucoup plus de place et c'est plus simple, non ?
Raven94- Messages : 19
Date d'inscription : 02/07/2014
Age : 23
Re: [Tutoriel]SAVE utilisant PACKAGE$
Hum visiblement j'ai pas tout compris en ce qui concerne les bits, mais j'aurais au moins réalisé un convertisseur hexadécimal-->binaire ^^'
À ce sujet, j'ai trouvé un logiciel dédié très bien fait qui pourra aider chaque lecteur de ce tuto à se lancer dans les PACKAGE$ : c'est par ici
Au fait, je crois remarqué que lorsque l'on modifie un programme sur lequel on avait déjà attaché, par exemple, une police, il faudra repréciser le PACKAGE$ au moment d'utiliser SAVE. Si je n'ai pas mal compris les deux arguments de ta partie "Inconvénients", tu pourrais le rajouter
À ce sujet, j'ai trouvé un logiciel dédié très bien fait qui pourra aider chaque lecteur de ce tuto à se lancer dans les PACKAGE$ : c'est par ici
Au fait, je crois remarqué que lorsque l'on modifie un programme sur lequel on avait déjà attaché, par exemple, une police, il faudra repréciser le PACKAGE$ au moment d'utiliser SAVE. Si je n'ai pas mal compris les deux arguments de ta partie "Inconvénients", tu pourrais le rajouter
Kuroshitsu- Messages : 104
Date d'inscription : 18/10/2014
Age : 25
Re: [Tutoriel]SAVE utilisant PACKAGE$
Kuroshitsu
Oui bien sûr si tu modifies un programme paqueté, il faut le SAVE avec PACKAGE$ sinon tu sauvagardes que le programme sans les ressources. Je vais le rajouter pour ceux qui sont pas très intuitifs.
Raven94
En fait c'est moi qui avait mal compris ce que tu voulais dire. Désolé de la confusion.
Donc oui une fois que tu as fait un SAVE avec PACKAGE$, tu peux supprimer les fichiers ressources qui ont été enregistré en PACKAGE$ étant donné que maintenant elle sont dans le programme paqueté. Par contre n'oublie pas de faire comme dit juste au dessus à Kuroshitsu si tu dois modifier ton programme paqueté.
Oui bien sûr si tu modifies un programme paqueté, il faut le SAVE avec PACKAGE$ sinon tu sauvagardes que le programme sans les ressources. Je vais le rajouter pour ceux qui sont pas très intuitifs.
Raven94
En fait c'est moi qui avait mal compris ce que tu voulais dire. Désolé de la confusion.
Donc oui une fois que tu as fait un SAVE avec PACKAGE$, tu peux supprimer les fichiers ressources qui ont été enregistré en PACKAGE$ étant donné que maintenant elle sont dans le programme paqueté. Par contre n'oublie pas de faire comme dit juste au dessus à Kuroshitsu si tu dois modifier ton programme paqueté.
Re: [Tutoriel]SAVE utilisant PACKAGE$
Ok Merci, assez sympa cette commande alors ^^
Raven94- Messages : 19
Date d'inscription : 02/07/2014
Age : 23
Re: [Tutoriel]SAVE utilisant PACKAGE$
Ce que je veux dire (excuse moi si je rale trop ) mais dans ton exemple, tu parles des 4 PREMIERS bits. Comment parler des 4 suivants par exemple? En affichant les 8 ?
Si Les SPU 0 , 1 , 2 et 3 sont à 1, Les 4 5 6 et 7 à 0, le binaire c'est 11110000 ?
Si Les SPU 0 , 1 , 2 et 3 sont à 1, Les 4 5 6 et 7 à 0, le binaire c'est 11110000 ?
Re: [Tutoriel]SAVE utilisant PACKAGE$
Attention Fenixelf :
Voici comment ça fonctionne :
SPU7-SPU6-SPU5-SPU4-SPU3-SPU2-SPU1-SPU0
--0----0-----0-----0-----1-----1-----1-----1
Comme les zéros sont inutiles au début d'un code binaire, le code est 1111.
Donc dans ton exemple le binaire est à l'envers.J8B a écrit:Les bits s'écrivent du plus grand au plus petit et se suivent toujours.
Voici comment ça fonctionne :
SPU7-SPU6-SPU5-SPU4-SPU3-SPU2-SPU1-SPU0
--0----0-----0-----0-----1-----1-----1-----1
Comme les zéros sont inutiles au début d'un code binaire, le code est 1111.
Re: [Tutoriel]SAVE utilisant PACKAGE$
Ok, et l'ordi va comprendre tout seul... Wow, les informaticiens se bornent à te rabâcher qu'un ordinateur c'est la chose la plus débile existante mais là... X)
Mais si on veut utiliser les 47 bits faut tous les initialiser? Dur.
Mais si on veut utiliser les 47 bits faut tous les initialiser? Dur.
Re: [Tutoriel]SAVE utilisant PACKAGE$
Je dois pas avoir, compris...
On doit à chaque fois transformer les 4bits correspondants à une couleur en hexadécimal puis les mettre à la suite pour former le PACKAGE$ c'est ça?
Alors, imaginons que je veuille sauvegarder le SPU0 et le SCR0, le code binaire est :
- 00010000000000000001 ou bien 10000000000000001, c'est pareil.
Je ne peux pas tout transformer en hexadécimal d'un seul coup (sinon overflow), donc je le fait 4 par 4 c'est bien ça?
Ensuite, si ça donne bien 10001, j'initialise une variable (mettons PACK$) et je fais SAVE"PROG,PACK$. Où y a t' il une erreur ?
On doit à chaque fois transformer les 4bits correspondants à une couleur en hexadécimal puis les mettre à la suite pour former le PACKAGE$ c'est ça?
Alors, imaginons que je veuille sauvegarder le SPU0 et le SCR0, le code binaire est :
- 00010000000000000001 ou bien 10000000000000001, c'est pareil.
Je ne peux pas tout transformer en hexadécimal d'un seul coup (sinon overflow), donc je le fait 4 par 4 c'est bien ça?
Ensuite, si ça donne bien 10001, j'initialise une variable (mettons PACK$) et je fais SAVE"PROG,PACK$. Où y a t' il une erreur ?
Re: [Tutoriel]SAVE utilisant PACKAGE$
Oui c'est 4 par 4.
0001 0000 0000 0000 0001 donne bien 10001 en hexadécimal.
Puis tu fais SAVE"PROGRAMME","10001", ensuite n'oublie pas de sauvegarder ton programme toujours de cette manière.
Sache aussi que le SCR0 sera chargé au lancement du programme.
0001 0000 0000 0000 0001 donne bien 10001 en hexadécimal.
Puis tu fais SAVE"PROGRAMME","10001", ensuite n'oublie pas de sauvegarder ton programme toujours de cette manière.
Sache aussi que le SCR0 sera chargé au lancement du programme.
Page 1 sur 2 • 1, 2
Sujets similaires
» [Tutoriel] La fonction RND().
» [Tutoriel]DATA
» [Tutoriel] Sprites
» [Tutoriel]Les conditions + FOR
» [TUTORIEL] Comprendre le GOSUB.
» [Tutoriel]DATA
» [Tutoriel] Sprites
» [Tutoriel]Les conditions + FOR
» [TUTORIEL] Comprendre le GOSUB.
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum