MSX Village forum

La Place des Développeurs "Diddy kong" petit programme basic en screen 8 test: animation du personnage

Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10712

Le 09/10/2012 à 19h14

Reprise du message précédent

la taille disponible est affichée quand on arrive sous basic

sans drives on dispose de 28k avec drive ça dépend de la machine de 23k a 25k , avec CTRL a l'INIT on gagne un peu de place


:noel
Site web    
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6237

Le 09/10/2012 à 19h18
Y a t il un moyen de calculer l'espace disponible? et/ou a quoi correspond la valeur calculé s en ko (s=222) par sprite 41x41 merci de ton aide

Si je dois faire sauter mon perso, il faut bien que je gratte un peu de place :p
(La programmation ça me changera des soudures ^^ ) Edité par MSXlegend Le 09/10/2012 à 19h19


KCX Bluetooth emitter Mono/ Stéréo, Smart USB
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10712

Le 09/10/2012 à 19h31
l'instruction DIM P(S) dimensionne le tableau a 222 mais il faut voir combien prend d'octets une variable tableau
c'est expliqué dans un coin des bouquins sur le BASIC


:noel
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1502

Le 09/10/2012 à 21h49
Je ne connaissais pas cette méthode de copie de données de la VRAM vers un tableau de variables.
Comme quoi, on peut encore découvrir des choses sur le MSX, 30 ans après !

D'après le guide officiel, le tableau peut être en variable entières, simple précision ou double précision.
Entre ces deux extrêmes, la taille du tableau est divisée par 4 ...

Essaie donc de remplacer ton DIM P(222) par un DIM P!(222), tu devrais ainsi gagner de la place.
Edité par Metalion Le 09/10/2012 à 21h50


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6237

Le 09/10/2012 à 21h57
Merci beaucoup Metalion :) je vais faire des tests dans la soirée. Si je gagne de la place, je devrais au moins pouvoir en charger une de plus sans le clear (peut etres?) ;)


KCX Bluetooth emitter Mono/ Stéréo, Smart USB
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6237

Le 09/10/2012 à 23h55
Verdict !!!

J'ai mis clear 3000 et j'ai encore moin de place. J'ai essayé 400,500, etc.. et c'est deja un peu mieux, mais il me manque de quoi mettre 2 pages :'(

J'ai donc essayé de remplacer tous les DIM x(222) par un DIM x!(222). Je n'ai aucun message d'erreur, mais c'est au moment de la copie vers A,B,C, etc.. que j'ai un message d'erreur.

Je suis bloqué!! Jipé, j'aimerais que tu y jette un oeil quand tu pourras, je pense etres passé a coté de quelque chose.... Je te joind le fichier zip qui contient:
-variable.bas
-donkey.sc8

J'ai pris soin de tout detailler dans le programme, mais je sais que tu maitrise déja parfaitement le basic
L'animation a partir des variables fonctionnent très bien, mais il manque 2 anims !!!
http://www.mediafire.com/?27530hdc66zhwhd

Si tu peux me trouver la solution, ce serait :top Edité par MSXlegend Le 10/10/2012 à 11h44


KCX Bluetooth emitter Mono/ Stéréo, Smart USB
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10712

Le 10/10/2012 à 11h59
j'ai inséré des lignes print fre(0) dans ton programme

ligne 0 ,105 , 115 , 125 etc

le résultat est que l'on passe de 27145 a 19931 sur la 1ére variable tableau ce qui représente 1792 sauf le 1er tableau

c'est énorme


:noel
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1502

Le 10/10/2012 à 14h02
MSXlegend :
Y a t il un moyen de calculer l'espace disponible? et/ou a quoi correspond la valeur calculé s en ko (s=222) par sprite 41x41




Ton "sprite" fait 41x41 pixels, soit 1681 pixels. Comme on est en SCREEN8, un pixel est stocké dans un octet.

Donc, chaque sprite nécessite 1681 octets pour être stocké.



La valeur 222 correspond à la taille du tableau nécessaire pour stocker l'image concernée. Puisque que tu définis un tableau en variable double précision (8 octets par valeur), ton tableau fait donc 222 x 8 = 1776 octets. On retrouve donc bien la taille nécessaire (à 80 octets près ...).



Mon idée de passer les tableaux en variables entières était donc fausse. Car si on est en variable entière (2 octets par valeur), il faudrait alors dimensionner le tableau non pas à 222 variables, mais à 888, pour garder la même place en mémoire.



Il est donc normal que tu sois bloqué à 13 sprites, puisque 13 tableaux de 1776 octets prennent 23.088 octets, c'est à dire quasiment toute la mémoire libre pour le BASIC (23.432 octets avec le Disk BASIC).



Tu pourrais passer à 16 sprites si tu te passais du Disk BASIC (appuyer sur SHIFT au démarrage), tu aurais alors 28.815 octets de libre. Mais cela ne te servirai pas à grand chose vu que tu en as besoin ...



Sans changer quelque chose de dimensionnant à ton programme, il n'y a donc pas de solution à ton problème.



Mes propositions :



- Changer la taille de tes personnages : une fois ton programme BASIC chargé, tu regardes l'espace mémoire restant libre par un PRINT FRE(0), et tu divises ce résultat par 15. Cela te donnera la taille maxi en octets (et donc en pixels) de ton personnage.

- Passer ton animation en SCREEN5 : tu auras 4 pages graphiques disponibles, et tes sprites prendront deux fois moins de place en mémoire. Mais avec les limitations du SCREEN5 évidemment ... Edité par Metalion Le 10/10/2012 à 14h25


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6237

Le 10/10/2012 à 14h38
J'ai pigé, merci pour toutes ces indications. LA solution reste donc de redimentionner mes sprites. Je comprend mieux grace aux explication que vous m'avez tous donné :top ...Pourtant mon idée était bonne mais bon :'(
peux t on modifier la memoire destiné au basic par une petite modif hardware ou software :siffle :oups

En attendant, je vais tester ctrl et sinon shift au demarrage pour voir. Je vais comparer aussi la place de disponible sur un vrai 2+ pour comparer
C'est quand même dingue que les concepteur du MSX n'avais pas prévu que des dingues comme nous allais faire des truc de ouf sur un MSX2 en 2012 :siffle :D Edité par MSXlegend Le 10/10/2012 à 14h41


KCX Bluetooth emitter Mono/ Stéréo, Smart USB
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1502

Le 10/10/2012 à 14h42
Cela en devrait pas t'aider des masses, mais en re-faisant le calcul de dimensionnement du tableau, j'arrive à 221 et non pas 222.


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

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 10/10/2012 à 16h02
Tu devrais regarder avec le NestorBasic, il me semble qu'on peut utiliser toute la mémoire ;)
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6237

Le 10/10/2012 à 17h23
Metalion :
Cela en devrait pas t'aider des masses, mais en re-faisant le calcul de dimensionnement du tableau, j'arrive à 221 et non pas 222.


oui j'ai remarqué, j'ai aussi calculé 221 (j'ai essayé de réduire au max tu te doute bien ;) )



Fabf :
Tu devrais regarder avec le NestorBasic, il me semble qu'on peut utiliser toute la mémoire ;)


Etant curieux, je vais essayer mais je pense surtout que c'est coté ROM basic que c'est comme ça.



_________________

Quoi qu'il en soit, j'ai trouvé une autre utilité coté variable, du genre pour ça :D











Edité par MSXlegend Le 10/10/2012 à 17h25


KCX Bluetooth emitter Mono/ Stéréo, Smart USB
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1502

Le 10/10/2012 à 17h58
Fabf :
Tu devrais regarder avec le NestorBasic, il me semble qu'on peut utiliser toute la mémoire ;)


Fabf a raison : NestorBASIC est peut être la solution à ton problème.



C'est une extension du BASIC MSX qui permet pas mal de choses, notamment l'accès direct du BASIC à tout l'espace mémoire disponible sur ta machine. Cependant, en pratique, il n'est intéressant que si ton MSX2 possède plus de 64Ko de RAM, car NestorBASIC utilise déjà les 32Ko supplémentaires pour son propre fonctionnement.



Et en bonus, tu as le compilateur intégré, qui te permet d'accélérer l'exécution de ton programme.



Par contre, cela va t'obliger à gérer tes "sprites" différemment, car si j'ai bien compris, NestorBASIC donne accès à toute la RAM disponible, mais indirectement. C'est à dire que tu peux y aller lire et écrire des données, mais pas y placer tes tableaux de variables. En soi, ce n'est pas vraiment un problème, car tu as la facilité d'avoir des fonctions de transfert RAM->VRAM sans passer par les tableaux de données. Mais tu devras stocker tous les sprites d'animation, c'est à dire 26 sprites au lieu de 13.



Si tu as besoin d'un coup de main ... ^^



PS : Bon, je suis tout seul dans un Campanile en banlieue parisienne, je vais me jeter à l'eau avec NestorBASIC, on verra bien. Edité par Metalion Le 10/10/2012 à 18h07


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6237

Le 10/10/2012 à 19h30
Merci du coup de pouce ^^

Les variable ne fonctionnent pas avec le xbasic. Pas grave, j'ai tout simplement reduit mes 15 plans a 11. On verra bien :moue
Je me suis gardé 2 place de 41x41 pour les variables au cas ou ;) (pour 2 ou 3 petite anim du genre les bananes qui tourne sur eux même)

verdict ce soir Edité par MSXlegend Le 10/10/2012 à 19h32


KCX Bluetooth emitter Mono/ Stéréo, Smart USB
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10712

Le 11/10/2012 à 11h32
il reste la solution sc8 to sc5 : s8tos5.zip

cet utilitaire permet d'utiliser la palette et d'optimiser les couleurs

un conseil : il faut mettre une partie du décor et tes sprites personnage et objets sur une seule page screen 8 afin d'avoir la palette la plus adaptée a la totalité des couleurs

ainsi tu pourra disposer des 4 pages du screen 5 et inverser directement ton perso dans une page sans passer par les variables tableaux


:noel
Site web    
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6237

Le 11/10/2012 à 16h41
Tien je ne connaissait pas :heink
Je pense que si je dois en faire un mini-jeux et ça va certainement le devenir, je serais obligé de tout simpifier au niveau des couleurs . Le moins evidant ce sera le decors qu'il va falloir convertir en 8 ou 10 couleurs max.Je conserve le code couleur 0, le reste pour le perso et les ennemis. ça va etre chaud bouillant là :sick :fou

Je vais refaire ma demo en screen 8 avec quelques items par ci et par là, et je vais essayer un tableau complet jouable, ça devrait suffir avec mes 4 pages et quelques variables :top Edité par MSXlegend Le 11/10/2012 à 22h42


KCX Bluetooth emitter Mono/ Stéréo, Smart USB
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie