La Place des Développeurs quelqu'un pour me rafraîchir la mémoire ...
ericb59
Membre non connecté
Conseiller Municipal
@jipe j'essaie de minimiser autant que possible l'usage des "If ... then" pour économiser du temps processeur !
Alors, j'ai bien avancé... encore ! Quand j'ai un truc en tête, ça m'obsède donc faut que j'vance ! haha !
J'aurai besoin de 2 choses :
- une musique FM avec un replayer en ASM (pour la musique n'importe c'est pour tester)
- quelqu'un qui puisse me faire ou me dire comment faire des effets sonores avec le PSG...
Je n'ai pas besoin de grand chose comme effets sonores... "Un bruit de pas" un perso qui marche... tcho tchoc...
Et un bruit pour signifier que le perso tombe dans le vide...
Vous voyez ce que je veux dire ?
Alors, j'ai bien avancé... encore ! Quand j'ai un truc en tête, ça m'obsède donc faut que j'vance ! haha !
J'aurai besoin de 2 choses :
- une musique FM avec un replayer en ASM (pour la musique n'importe c'est pour tester)
- quelqu'un qui puisse me faire ou me dire comment faire des effets sonores avec le PSG...
Je n'ai pas besoin de grand chose comme effets sonores... "Un bruit de pas" un perso qui marche... tcho tchoc...
Et un bruit pour signifier que le perso tombe dans le vide...
Vous voyez ce que je veux dire ?
la tu arrives dans la partie sensible la musique et le bruitage des jeux
avec le PSG et l'instruction sound on peux faire des bruitages
tente aussi ta chance avec le PCM et des digits
pour les replayers a part celui de la moonsound ils ne courent pas les rues
avec le PSG et l'instruction sound on peux faire des bruitages
tente aussi ta chance avec le PCM et des digits
pour les replayers a part celui de la moonsound ils ne courent pas les rues
ericb59 :
@jipe j'essaie de minimiser autant que possible l'usage des "If ... then" pour économiser du temps processeur !
Une bonne solution pour économiser les IF ... THEN est d'utiliser des opérandes directes.
Par exemple dans la ligne BASIC suivante :
Code :
10 X=-(C=1)*10
X sera égal à 0 si C est différent de 1 (FAUX donne 0 comme valeur à la comparaison)
X sera égal à 10 si C est égal à 1 (VRAI donne -1 comme valeur à la comparaison)
Et on peut bien sur faire plusieurs tests en même temps en multipliant les opérandes :
Code :
10 X=(C=1)*(D>15)*(E<>10)*200
Il faut juste faire attention aux signes de l'évaluation.
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)
Visiteur
Vagabond
Message : 0
Citation :
Code :
10 X=-(C=1)*10
L'opérateur d'assignation et de comparaison qui reste identique, c'est vraiment pas terrible.
Après tokenization, si ça se trouve, l'interprétation est la même, voire même plus compliquée pour le basic, car je soupçonne l'utilisation d'une pile pour sauver le contexte de la première assignation.
Il faut se méfier des formes raccourcies, qui ne sont pas forcément plus rapides.
Par exemple, en C, il y a des gens qui font leurs copies comme ça:
Code :
while (*src) {
*dst = *src;
++dst;
++src;
}
Et il y a ceux qui font comme ça:
Code :
while (*dst++=*src++);
À priori, le résultat est le même. La seconde forme parle aux bas instincts du codeur et lui dit «regarde, je suis la plus rapide». Sauf que:
- la seconde forme est un UB (undefined behaviour). Dans ce cas, ça fonctionnera la plupart du temps (mais sans garantie).
- le code généré, dans le meilleur des cas, sera strictement identique.
- la première forme est bien plus lisible.
Donc là, je conseillerais d'en rester à une écriture lisible avec des «if/then». C'est plus important que de gagner epsilon avec des pratiques vaudoues.
Venom :
L'opérateur d'assignation et de comparaison qui reste identique, c'est vraiment pas terrible. Après tokenization, si ça se trouve, l'interprétation est la même, voire même plus compliquée pour le basic, car je soupçonne l'utilisation d'une pile pour sauver le contexte de la première assignation.
Hmmmm ... Tu as peut être raison, mais je n'en suis pas certain.
Car à mon avis, l'évaluation de l'expression "C=1" est faite de la même façon par le BASIC dans les deux cas. Dans le cas IF ... THEN, après l'évaluation de "C=1", l'argument VRAI ou FAUX est transmis à l'évaluation de l'expression "IF ... THEN" pour décision. Dans l'autre cas, la valeur VRAI ou FAUX est transmise dans le calcul pour évaluation de l'expression calculée.
On a donc probablement l'occasion de sauter une étape et d'être directement dans l'évaluation de l'expression calculée.
Maintenant, tu as peut être raison en terme d'utilisation de la pile.
C'est à voir ...
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 ! maintenant que tu le dis... je m en souviens !
j ai cru lire quelque part qu on pouvait libérer un peut de mémoire, avec autre chose que le ctrl au démarrage... ? non ?
j ai cru lire quelque part qu on pouvait libérer un peut de mémoire, avec autre chose que le ctrl au démarrage... ? non ?
ericb59
Membre non connecté
Conseiller Municipal
... Comment écrire sur du screen 12
Avec la méthode classique open grp... etc...
Ca fait des gros paquets !!
Et question subsidiaire, comment écrire , sur un screen 10, par exemple; sans le cadre noir autour des lettres ?
Avec la méthode classique open grp... etc...
Ca fait des gros paquets !!
Et question subsidiaire, comment écrire , sur un screen 10, par exemple; sans le cadre noir autour des lettres ?
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie