La Place des Développeurs quelqu'un pour me rafraîchir la mémoire ...
ericb59
Membre non connecté
Conseiller Municipal
copier la zone vram dans la ram puis changer de page et recopier la zone ram dans la vram ( juste une supposition jamais essayé )
les zones des sprites
F000 F7FF table des formes
F800 F9FF table des couleurs
FA00 FA7F table des attributs
donc du genre
fori=0to&ha7f:poke&hc000+i,vpeek(&hf000+i):next
setpage1,1
fori=0to&ha7f:vpoke&hf000+i,peek(&hc000+i):next
en basic ça va être un peu lent mais c'est juste pour tester
aprés je ne sais pas comment vont se comporter les coordonnées en changeant de page ?
les zones des sprites
F000 F7FF table des formes
F800 F9FF table des couleurs
FA00 FA7F table des attributs
donc du genre
fori=0to&ha7f:poke&hc000+i,vpeek(&hf000+i):next
setpage1,1
fori=0to&ha7f:vpoke&hf000+i,peek(&hc000+i):next
en basic ça va être un peu lent mais c'est juste pour tester
aprés je ne sais pas comment vont se comporter les coordonnées en changeant de page ?
De mémoire, l'affichage des sprites est indépendant de la page affichée.
Et donc les coordonnées des sprites ne changent pas.
Et donc les coordonnées des sprites ne changent pas.
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
ericb59
Membre non connecté
Conseiller Municipal
bon je vais essayer ...
j'ai un autre problème ...
j'ai ceci
10 screen 8 etc...
20 r=int((4*(abs(20)+1*abs(20)+1)+7)/8)+4
30 dim TN(R)
40 copy (0,0)-(20,20),1 to TN
ILLEGAL FUNCTION CALL IN 40
j'ai un autre problème ...
j'ai ceci
10 screen 8 etc...
20 r=int((4*(abs(20)+1*abs(20)+1)+7)/8)+4
30 dim TN(R)
40 copy (0,0)-(20,20),1 to TN
ILLEGAL FUNCTION CALL IN 40
La formule est :
Pour screen 8, <pixel size> est égal à 8.
Et ensuite il te manque une parenthèse après ton '+1' dans le calcul.
PS : Eric, je ne voudrais pas être désagréable, mais j'ai trouvé ces informations en moins de 5 minutes dans une doc MSX2. Et je ne parle même pas de la parenthèse manquante ... On est là pour s'aider les uns les autres, ce n'est pas un problème, mais il faut quand même faire un minimum de recherches et de vérifications avant de poser une question.
EDIT : Je n'avais pas encore vu la réponse de Jipe ... Edité par Metalion Le 14/07/2012 à 11h06
Code :
INT ((<pixel size>*(ABS(X2-X1)+1)*(ABS(Y2-Y1)+1)+7)/8)+4 bytes
Pour screen 8, <pixel size> est égal à 8.
Et ensuite il te manque une parenthèse après ton '+1' dans le calcul.
PS : Eric, je ne voudrais pas être désagréable, mais j'ai trouvé ces informations en moins de 5 minutes dans une doc MSX2. Et je ne parle même pas de la parenthèse manquante ... On est là pour s'aider les uns les autres, ce n'est pas un problème, mais il faut quand même faire un minimum de recherches et de vérifications avant de poser une question.
EDIT : Je n'avais pas encore vu la réponse de Jipe ... Edité par Metalion Le 14/07/2012 à 11h06
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
ericb59
Membre non connecté
Conseiller Municipal
@ metalion, j ai cherché, mais je ne pensais pas que le probleme venait de la taille du tableau, vu que l erreur arrive sur la ligne du copy, et pour la parenthese c est une erreure de recopie ...
Mes questions peuvent vous paraitres triviales, mais, je suis loin d etre un pro de la technique msx, toutes ces histoires de mémoires, de tailles de pixels etc... je n y comprends rien, et j avoue que ca ne me passionne pas. Après j aime programmer, et c est meme une grosse partie de mon boulot.
en tout cas, merci; car ca marche...
Il me manquait la taille des pixels en fait... Edité par ericb59 Le 14/07/2012 à 12h00
Mes questions peuvent vous paraitres triviales, mais, je suis loin d etre un pro de la technique msx, toutes ces histoires de mémoires, de tailles de pixels etc... je n y comprends rien, et j avoue que ca ne me passionne pas. Après j aime programmer, et c est meme une grosse partie de mon boulot.
en tout cas, merci; car ca marche...
Il me manquait la taille des pixels en fait... Edité par ericb59 Le 14/07/2012 à 12h00
ericb59
Membre non connecté
Conseiller Municipal
Comment détecter le nombre d'enregistrements dans un fichier à accès direct ?
Ou détecter le numéro du dernier enregistrement, sans avoir d'erreur ?
Je parle de ceci :
10 open "a:fichier,dat" as #1
20 field #1, 20 AS a$,30 AS b$
30 get #1, <x>
ou <x> est le numéro du bloc de données...
Alors je me suis fait plusieurs doc du basic j'ai pas trouvé...
EOF ne fonctionne que sur les fichiers à accès séquentiel Edité par ericb59 Le 19/07/2012 à 10h57
Ou détecter le numéro du dernier enregistrement, sans avoir d'erreur ?
Je parle de ceci :
10 open "a:fichier,dat" as #1
20 field #1, 20 AS a$,30 AS b$
30 get #1, <x>
ou <x> est le numéro du bloc de données...
Alors je me suis fait plusieurs doc du basic j'ai pas trouvé...
EOF ne fonctionne que sur les fichiers à accès séquentiel Edité par ericb59 Le 19/07/2012 à 10h57
a mon humble avis il faut le gérer lors de l'écriture et compter le nombre d'enregistrements
ensuite ne pas dépasser la valeur max lors de la lecture
tu n'as pas trouvé plus simple pour te creuser la tête ?
ensuite ne pas dépasser la valeur max lors de la lecture
tu n'as pas trouvé plus simple pour te creuser la tête ?
ericb59
Membre non connecté
Conseiller Municipal
Jipe :
a mon humble avis il faut le gérer lors de l'écriture et compter le nombre d'enregistrements
ensuite ne pas dépasser la valeur max lors de la lecture
tu n'as pas trouvé plus simple pour te creuser la tête ?
ensuite ne pas dépasser la valeur max lors de la lecture
tu n'as pas trouvé plus simple pour te creuser la tête ?
j ai bien pensé faire un premier bloc de données contenant le nombre de blocs du fichier.
mais ca me parraissait gros qu une tele possibilité de determiner le nombre d enregistrement par une instruction n existe pas... Edité par ericb59 Le 19/07/2012 à 12h31
ericb59
Membre non connecté
Conseiller Municipal
oui c'est pour stocker les données de mes niveaux, au lieu de les mettre dans des DATA.
Tu vas me dire que le nombre de niveaux est déterminé... Oui, c'est vrai, mais, comme tous les niveaux ne sont pas encore fait, j'ai des "trous" dans mes données, et je voulais pouvoir gérer ça automatiquement...
Tu vas me dire que le nombre de niveaux est déterminé... Oui, c'est vrai, mais, comme tous les niveaux ne sont pas encore fait, j'ai des "trous" dans mes données, et je voulais pouvoir gérer ça automatiquement...
ericb59
Membre non connecté
Conseiller Municipal
oh tu sais, les données de mes niveaux font moins de 100 octets, ca vas vite à charger avec cette méthode.
Mais ca m'intéresse de connaitre se que tu proposes... Comment on fait un ficher pour bload ?
Mais ca m'intéresse de connaitre se que tu proposes... Comment on fait un ficher pour bload ?
il suffit de stocker les datas sous forme d'octets ou ascii dans un coin de la mémoire non utilisé puis de sauvegarder avec un bsave
adresse début , adresse fin
ensuite on recharche avec un bload et on redécode dans l'autre sens
si un niveau fait 100 octets tu dois pouvoir réserver une place pour plusieurs niveaux d'un coup
adresse début , adresse fin
ensuite on recharche avec un bload et on redécode dans l'autre sens
si un niveau fait 100 octets tu dois pouvoir réserver une place pour plusieurs niveaux d'un coup
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie