La Place des Développeurs quelqu'un pour me rafraîchir la mémoire ...
Reprise du message précédent
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 bsaveadresse 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
ericb59
Membre non connecté
Conseiller Municipal
ha oui c'est tout bête en fait !
est-ce que tu pourrais me donner une espèce de "carte" de la mémoire d'un MSX (Turbo-R) ?
savoir quels adresses sont dispos, et que tels adresses correspondent à tel chose...
Sur la VRAM aussi... je crois que tu me l'as déjà dit, mais je ne retrouves plus où...
Quels sont les adresses d'une page de VRAM ? page active et l'autre page en screen 8 ?
est-ce que tu pourrais me donner une espèce de "carte" de la mémoire d'un MSX (Turbo-R) ?
savoir quels adresses sont dispos, et que tels adresses correspondent à tel chose...
Sur la VRAM aussi... je crois que tu me l'as déjà dit, mais je ne retrouves plus où...
Quels sont les adresses d'une page de VRAM ? page active et l'autre page en screen 8 ?
la cartographie de la mémoire n'est pas figée , elle dépend du nombre de disques utilisés
entre 8000H a E800H tu dispose de la place pour le basic
entre E800H et F380H le systéme implante disques et dos
a partir de F380H on trouve les HOOKS et les VARIABLES SYSTEME
avec le nestor Basic la place pour le Basic doit changer et il se réserve peut-être des adresses pour travailler
la page Vram en screen 8 va de 0000H a D3FFH accessible sous basic par SET PAGE 0,0
la seconde page n'est accessible en basic qu'avec le SET PAGE 1,1
il faut passer par le language machine pour accéder directement a la mémoire totale du VDP
entre 8000H a E800H tu dispose de la place pour le basic
entre E800H et F380H le systéme implante disques et dos
a partir de F380H on trouve les HOOKS et les VARIABLES SYSTEME
avec le nestor Basic la place pour le Basic doit changer et il se réserve peut-être des adresses pour travailler
la page Vram en screen 8 va de 0000H a D3FFH accessible sous basic par SET PAGE 0,0
la seconde page n'est accessible en basic qu'avec le SET PAGE 1,1
il faut passer par le language machine pour accéder directement a la mémoire totale du VDP
ericb59 :
tu veux dire que la page 1 du screen 8 n'est pas accessible à partir d'adresses ? au delà de D3FFH par exemple ?
Ta question n'est pas très claire ...
Ce qu'à voulu dire Jipe, c'est qu'il faut utiliser SET PAGE pour accéder en BASIC aux deux pages du SCREEN8.
De même, on ne peut pas utiliser VPOKE/VPEEK sur la partie supérieure à 64Ko (ce qui est ridicule d'ailleurs). Edité par Metalion Le 19/07/2012 à 14h44
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)
pour être plus clair en screen8 la page 0 va de 0000H a FFFFH
la partie écran allant de 0000H a D3FFH
a partir de F000H il y a les sprites
la basic ne sait pas aller au dessus de la valeur &HFFFF que ce soit avec la ram POKE ou la vram VPOKE
la partie écran allant de 0000H a D3FFH
a partir de F000H il y a les sprites
la basic ne sait pas aller au dessus de la valeur &HFFFF que ce soit avec la ram POKE ou la vram VPOKE
ericb59
Membre non connecté
Conseiller Municipal
oui ca j'avais trouvé, mais ça désactive tous les sprites.
ce que je cherche c'est désactiver 1 sprite à la fois ; un genre d'instruction du genre sprite(1) off
sinon je cache les sprites en les plaçant en 255,0 ; mais je cherche une méthode plus efficace en temps machine...
ce que je cherche c'est désactiver 1 sprite à la fois ; un genre d'instruction du genre sprite(1) off
sinon je cache les sprites en les plaçant en 255,0 ; mais je cherche une méthode plus efficace en temps machine...
ericb59 :
sinon je cache les sprites en les plaçant en 255,0 ; mais je cherche une méthode plus efficace en temps machine...
Il n'y a pas d'autres méthodes.
Ou tu désactives tous les sprites, ou un par un en les mettant dans une zone cachée. A ce sujet, il y a un cas particulier en Y=216, car à cette ordonnée les sprites disparaissent vraiment. C'est à dire que même si cette zone d'écran est affichée (par un scrolling), le sprite est invisible.
Et pour utiliser cette méthode de façon rapide, il suffit de faire VPOKE xxxx,216 avec "xxxx" comme adresse du sprite dans la TAS. Pour rappel, la TAS contient 4 octets par sprite : Y, X, pattern, couleur & EC (pour le mode 1). Donc une fois que tu connais l'adresse de base de la TAS (donnée par les registres 5 & 11), tu peux faire directement : VPOKE TAS+sprite*4,216 (sauf si ta TAS est au delà de $FFFF dans la VRAM).
Maintenant, je ne suis pas sur que ce soit plus rapide que d'utiliser la fonction PUT SPRITE ...
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
ok bon, j ai trouvé une autre solution qui consite à .... optimiser mon code et mes ressources !
par contre je ne serai pas contre que quelqu un m explique les autres moyens de faire des
if a=2 then goto ...
car il le semble qu il y a des expressions plus courtes non ?
par contre je ne serai pas contre que quelqu un m explique les autres moyens de faire des
if a=2 then goto ...
car il le semble qu il y a des expressions plus courtes non ?
Visiteur
Vagabond
Message : 0
En effet on peut faire ON A GOTO (ou GOSUB) 100, 200, 300, 400, ....
et cela revient à une foule de lignes IF A=1 THEN 100, IF A=2 THEN 200, IF A=3 THEN 300, IF A=4 THEN 400, etc ...
On gagne aussi de l'espace en évitant le pléonasme THEN GOTO (ou THEN GOSUB). Edité par Visiteur Le 25/07/2012 à 20h12
et cela revient à une foule de lignes IF A=1 THEN 100, IF A=2 THEN 200, IF A=3 THEN 300, IF A=4 THEN 400, etc ...
On gagne aussi de l'espace en évitant le pléonasme THEN GOTO (ou THEN GOSUB). Edité par Visiteur Le 25/07/2012 à 20h12
ericb59
Membre non connecté
Conseiller Municipal
non ce n'est pas de ça que je parlais... Désolé si je m'exprime mal...
Je parle de la comparaison d'expression dans un IF
Il me semblait qu'il y a avait des méthodes pour faire comparaisons d'expressions plus rapides... non ? J'ai rêvé ?
Ceci dit j'ai une question sur le ON A GOTO
Si il me manque une valeur dans A comment je fais ?
Supposons que A puisse prendre les valeurs 1,2,3,5
je fait ça ON A GOSUB 100,200,300,,500 ??
(d'après un test rapide... Le on A GOSUB serait moins rapide qu'une série de IF .... ? ! ) Edité par ericb59 Le 25/07/2012 à 20h25
Je parle de la comparaison d'expression dans un IF
Il me semblait qu'il y a avait des méthodes pour faire comparaisons d'expressions plus rapides... non ? J'ai rêvé ?
Ceci dit j'ai une question sur le ON A GOTO
Si il me manque une valeur dans A comment je fais ?
Supposons que A puisse prendre les valeurs 1,2,3,5
je fait ça ON A GOSUB 100,200,300,,500 ??
(d'après un test rapide... Le on A GOSUB serait moins rapide qu'une série de IF .... ? ! ) Edité par ericb59 Le 25/07/2012 à 20h25
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie