Logicielsmoto.com

Nous sommes le 29 Mar 2024, 02:11

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 276 messages ]  Aller à la page Précédente  1, 2, 3, 4, 5, 6 ... 19  Suivante
Auteur Message
MessagePosté: 06 Nov 2020, 02:26 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
La musique de fin de vient pas du thomson, non ?

Quelle est la vitesse d'échantillonnage pour les musiques d'intros ?

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 06 Nov 2020, 02:43 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
lol non a la fin de la vidéo j'ai mis la vrai, c'est pas du TO :W

pour gagner de la place et faire tenir ma boucle dans max 16000 ko (dans une bank), j'ai testé un truc un peu bizarre :

- j'ai mon .wav à 44100 16bits qualité cd (normale quoi)
- je l'ouvre dans Audacity
- je change le Taux du projet Hz à 5000 (le select en bas à gauche dans Audacity)
- en suite Pistes > rééchantillonneer > à 5000 aussi. (là j'ai toujours trop d'octets 40800 echantillons)
- et pour faire tenir mon sample dans max 16000 échantillons, je fais Effets > Etirement glissant et je mets 160% 160% (plus ou moins ! j'adapte)
jusqu'a optenir <= 16000 echantillons
- ensuite Outils > export de données d'echantillons (pour avoir un fichier txt)
- puis j'utilise mon outils web pour créer le fichier .BIN pour TO

ps :selon la boucle de sample que je veux jouer, j'adapte la temporisation (donc la vitesse de lecture, l'injection vers le CNA)

et pour la lecture j'ai une routine que j'appel avec genre une tete de lecture qui lit d'octet en octet avec une temporisation pour lire plus ou moins vite jusque la fin de l'adresse du sample !

Code:
AUDIO_OUTPUT macro
           LDA ,X+     * X pointe sur sample, A = valeur digit sample
           STA $E7CD   * joue le son
           endm


Selection du sample à jouer :
Code:
* INI le son a jouer (ici LOOP2.BIN)
                    LDA #40          * valeur temporisation pour LOOP2.BIN
                    STA audio_tmp
                    LDA #8
                    STA audio_bank
                    LDX #$A000
                    STX sample_start
                    STX audio_tete_lecture
                    LDX #$DC37       *pour LOOP2.BIN
                    STX sample_end


Boucle principal du splashscreen :
Code:
splash_screen_loop
                JSR play1digitsample
                CLRA
                JSR   JOYS
                BCS   ecran_intro
                JMP splash_screen_loop


Lecture d'un digit sample avec test si fin pour boucler le son :
Code:
********************************************
* play 1 digit sample
********************************************
play1digitsample
                      PSHS A,B,X,Y
                      LDA  audio_bank      *|choix de la bank
                      STA  $E7E5               *|commute la bank
                      LDX  audio_tete_lecture
                      LEAX 1,X
                      STX  audio_tete_lecture
                      CMPX sample_end
                      BEQ  play1digitsample_reset
                      AUDIO_OUTPUT

                      LDB audio_tmp       *temporisation
play1digitsample_TMP    DECB
                      BNE play1digitsample_TMP

                      LDA  #2        *|choix de la bank
                      STA  $E7E5   *|commute la bank
                      PULS A,B,X,Y
                      RTS
play1digitsample_reset
                      LDX  sample_start
                      STX  audio_tete_lecture
                      LDA  #2        *|choix de la bank
                      STA  $E7E5   *|commute la bank
                      PULS A,B,X,Y
                      RTS




mais cette partie son j'améliorerais à la fin.

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 06 Nov 2020, 08:41 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Le son est un peu crachotant. Sans doute que la musique est trop longue donc que la vitesse de restitution un peu trop faible. Il faudrait avoir la musique sur plusieurs bank (à 5000 échantillons/seconde, une bank ne contient que 3sec de musique).

Une petite remarque:
Code:
PULS A,B,X,Y
RTS
s'optimise en
Code:
PULS A,B,X,Y,PC
directement :)

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 06 Nov 2020, 16:44 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
oui tu me l'a déjà dis en plus pour l'ajout ,PC et virer le RTS :oui:

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 06 Nov 2020, 22:43 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
oulaaa va falloir que j'optimise l'affichage des digits des scores ! ça ralenti grave le jeu !!

voila un test d'execution sans affichage du score !
phpBB [video]


et avec l'affichage du score (a la seconde 20!)
phpBB [video]


:voyons:

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Nov 2020, 14:12 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Un conseil pour l'optim: ne calculer que ce qui change. Genre pas la peine d'afficher les chiffres qui ne changent pas dans le score. Ensuite si tu fais une série de divisions pour obtenir chaque chiffre, c'est pas ce qu'on fait de plus rapide. La routine de Préhisto "conversion décimale" est plus rapide: http://collection.thomson.free.fr/code/ ... ?XI=0&XJ=8

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Nov 2020, 18:40 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
humm, comment j'additionne 2 valeurs supérieurs à 255 déjà ?

- le but étant de faire (X*X) + (Y*Y) = distance
(valeur max possible de X=28 et valeur max de Y=19) donc max (28*28)+(19*19) = 1145 ($0479)

par exemple j'ai :

Code:
dist_tileX RMB 1
dist_tileY RMB 1
carreX RMB 2
carreY RMB 2

*calcul de dist_tileX au carre (=carreX)
  LDA dist_tileX
  LDB dist_tileX
  MUL
  STD carreX
*calcul de dist_tileY au carre (=carreY)
  LDA dist_tileY
  LDB dist_tileY
  MUL
  STD carreY
*addition de carreX+carreY ??
  LEAX carreX, carreY       
 
?? c'est là que je sais plus !




merci.

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Nov 2020, 19:04 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
C'est simple. Déjà tu peux utiliser la pile pour stocker les valeurs temporaires, c'est mieux car à partir de là le code est direct:
Code:
*calcul de dist_tileX au carre (=carreX)
  LDA dist_tileX
  LDB dist_tileX
  MUL
  PSHS D   empile résultat partiel. STD ,--S marche aussi
*calcul de dist_tileY au carre (=carreY)
  LDA dist_tileY
  LDB dist_tileY
  MUL
*addition de carreX+carreY ?? LEAX ==> Oui mais non: LEA utilise l'unité d'adresse (EA = effective address) or nous on veut faire (donc utiliser) l'unité arithmétique. Il faut utiliser l'un des accus: A, B ou D
  ADDD ,S++ et hop voilà, D = dist_tileX² + dist_tileY²

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Nov 2020, 19:11 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
ah merci,
j'avais pas pensé à utiliser la pile !

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Nov 2020, 19:15 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
A tu vraiment besoin de la distance au carré ? Parce que à la limite dist_tileX + dist_tileY peut être une approximation suffisante.

A noter aussi: MUL est une multiplication non signée. Si dist_tileX/Y est signé, alors le résultat ne sera pas bon.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Nov 2020, 19:27 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
1 - j'ai pas besoin du signe, car je dois prendre la valeur la plus petite pour définir la direction la plus courte à prendre pour le fantôme.

je dois faire 4 calcul de distance tile a chaque movement entre (BLINKY <-> PACMAN)

- distance entre la case du TOP de BLINKY -> case PACMAN = 9 (disont par exemple)
- distance entre la case du RIGHT de BLINKY -> case PACMAN = 5 (disont par exemple)
- distance entre la case du BOTTOM de BLINKY -> case PACMAN = 13 (disont par exemple)
- distance entre la case du LEFT de BLINKY -> case PACMAN = 17 (disont par exemple)

puis je dois prendre la plus petite donc 5, donc BLINKY dois aller à droite au prochain movement

PS: avant de faire les calculs je dois voir si c'est un mur ou pas, pour pas traverser les murs...

_________________
Image


Dernière édition par adnz le 08 Nov 2020, 02:49, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Nov 2020, 21:11 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
Combien de cycles on a à dispo par seconde sur TO8 quant on fait tourner un prog en ASM par exemple ?

Code:
   ORG $7300
   ORCC  #$50
test                                *| Dans cette boucle
                                     *| y'a combien
   JMP test                            *| de cycles ?

END


Merci.

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Nov 2020, 02:51 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
Citation:
Si dist_tileX/Y est signé, alors le résultat ne sera pas bon.


bein! en faite si j'ai besoin du signe !
c'est logique !
j'ai des résultat genre $FC (-3) alors que j'ai besoin du 3 seulement sans le signe , mais vu que j'ai $FC, bah ça fait 252 et pas 3 !!!
Du coup mon calcul est faussé !

faut que je transforme -3 en 3, je pense en testant le bit N de CC, si j'ai un résultat négatif alors j'applique une inversion de valeurs des bits !

bit N de CC = 1 si résultat négatif ? c'est bien ça ?

_________________
Image


Dernière édition par adnz le 08 Nov 2020, 03:02, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Nov 2020, 02:58 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Ah ouais, donc le code au dessus est pas bon (MUL est unsigned, donc -1*-1 ne donne pas 1, mais 65534). Il faut faire
Code:
*calcul de dist_tileX au carre (=carreX)
  LDA dist_tileX
  BGE pos1
  NEGA
pos1
  TFR A,B
  MUL
  PSHS D   empile résultat partiel. STD ,--S marche aussi
*calcul de dist_tileY au carre (=carreY)
  LDA dist_tileY
  BGE pos2
  NEGA
pos2
  TFR A,B
  MUL
*addition de carreX+carreY
  ADDD ,S++ et hop voilà, D = dist_tileX² + dist_tileY²

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Nov 2020, 03:05 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
ha super merci je test ça ...

j'ai presque fini l'IA mode attack de BLINKY ;)
il ne me manquait plus que ce soucis
:good:

_________________
Image


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 276 messages ]  Aller à la page Précédente  1, 2, 3, 4, 5, 6 ... 19  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 28 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com