MSX Village forum

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

Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 19/07/2012 à 12h56

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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 19/07/2012 à 13h23
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 ?


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 à 14h13
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


: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 à 14h28
tu veux dire que la page 1 du screen 8 n'est pas accessible à partir d'adresses ? au delà de D3FFH par exemple ?


banniere-ericb59e
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 19/07/2012 à 14h44
ericb59 :
tu veux dire que la page 1 du screen 8 n'est pas accessible à partir d'adresses ? au delà de D3FFH par exemple ?


:hum 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)
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 19/07/2012 à 16h16
ok c'est bon pour ça... merci !


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 à 16h52
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


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 25/07/2012 à 08h09
Question de sprite !

Y a t'il un moyen pour désactiver/cacher rapidement un sprite avec une instruction ? VDP ? VPOKE ? ou autre ?


banniere-ericb59e
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 25/07/2012 à 10h35
VDP(9)=VDP(9)or2 pour désactiver l'affichage des sprites
VDP(9)=VDP(9)and&HFD pour activer l'affichage des sprites

Si je me souviens bien, si l'on place un Sprite à une certaine ligne de la partie cachée de l'écran, ça "éteint" aussi les sprites.
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 25/07/2012 à 10h57
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...


banniere-ericb59e
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 25/07/2012 à 11h30
Je ne pensais pas que tu demandais ça car c'est tellement simple en changeant juste la coordonnée Y pour déplacer le sprite dans la partie cachée de l'écran,
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 25/07/2012 à 13h39
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)
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 25/07/2012 à 14h34
Le vpoke est le plus rapide si on ne fait pas faire le calcul de l'adresse correspondante à la coordonnée Y pour le Sprite à effacer par le Basic.
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 25/07/2012 à 20h03
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 ?


banniere-ericb59e
Site web    
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 25/07/2012 à 20h09
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
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 25/07/2012 à 20h24
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 .... ? ! :moue ) Edité par ericb59 Le 25/07/2012 à 20h25


banniere-ericb59e
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie