MSX Village forum

La Place des Développeurs quelqu'un pour me rafraîchir la mémoire ...

ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 14/07/2012 à 10h02

Reprise du message précédent

merci jipe...
112 c'est le nombre de fichier maxi en racine ? Ou le nombre de fichier maxi par dossier ?


Comment je fait pour copier la zone des sprite dans la page 1 ? Edité par ericb59 Le 14/07/2012 à 10h03


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 14/07/2012 à 10h29
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 ?


:noel
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 14/07/2012 à 10h37
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.


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

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 14/07/2012 à 10h37
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


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 14/07/2012 à 10h58
la syntaxe exacte pour les variables tableau est la suivante

INT ((((ABS(X1-X2)+1*ABS(Y1-Y2)+1*taille pixel +7)/8+4)/8)+1

taille du pixel = 8 en screen8


:noel
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 14/07/2012 à 11h05
La formule est :

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)
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 14/07/2012 à 11h21
nos deux formules ne sont pas identiques

moi je la sort du Guide du MSX-BASIC version 2.0 de SONY (le bouquin marron du HB700)

ce livre est bourré d'exemples trés bien fait :top


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 14/07/2012 à 11h32
@ 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


banniere-ericb59e
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 19/07/2012 à 10h55
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


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 19/07/2012 à 12h11
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 ?


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 19/07/2012 à 12h31
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 ?




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... :gre Edité par ericb59 Le 19/07/2012 à 12h31


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 19/07/2012 à 12h35
tu veux utiliser ce genre de fichier dans un jeu ?


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 19/07/2012 à 12h44
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...


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 19/07/2012 à 12h50
et les passer dans un fichier bload tu y a pensé , c'est plus rapide que lire des fichiers a accés direct ?
tu peux même utiliser la VRAM pour stocker


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 19/07/2012 à 12h53
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 ?


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 19/07/2012 à 12h56
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


:noel
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie