Logicielsmoto.com

Nous sommes le 19 Mar 2024, 09:03

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 598 messages ]  Aller à la page Précédente  1, 2, 3, 4, 5, 6, 7 ... 40  Suivante
Auteur Message
MessagePosté: 07 Mar 2021, 01:04 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1800
Localisation: Brest
oui c'est ca. L'ensemble des registres est restauré à la sortie. Mais attention que dans la routine d'interruption on ne sauve pas d'autres choses sur la pile (durant un jsr / bsr au sein de la routine d'interruption par exemple). Il vaut mieux prévoir large et ajouter 4 octets de rab.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Mar 2021, 08:00 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 432
Localisation: Var
Bien vu ! Merci bcp.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Mar 2021, 14:20 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 432
Localisation: Var
ça y est ça fonctionne :sol:
On a donc la musique du SN76489 en // de l'animation d'intro jouée avec un IRQ à 50hz.

La modification du générateur de sprites n'a pas eu beaucoup d'impact sur les perfs.
Si on additionne tous les cycles pour l'ensemble des sprites compilés (backup/draw, erase et draw):
Avant: 176618 cycles
Après: 177404 cycles
soit 0,4% de performance en moins.

Le coup de stress d'hier soir est passé !
J'avance un peu sur l'intro avant de vous montrer une nouvelle vidéo.
Et puis je sais que j'ai encore quelques utilisations de S qui trainent dans le moteur a droite à gauche, à 50hz on passe entre les gouttes mais pas avec un IRQ à 60hz ;-)


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Mar 2021, 17:09 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
Excellent! J'ai hâte d'entendre ça :)


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Mar 2021, 18:30 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 477
j'aurais jamais cru qu'un jour je verrais l'intro de sonic avec le "SEEEGAAAA" sur un thomson :good: :jap: :eek: :bien:

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 13 Mar 2021, 18:00 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 432
Localisation: Var
Et voila ...
phpBB [video]

Je vous ai épargné les 35s de chargement !!!

les fichiers .sd et .fd (pas besoin d'extension mémoire, j'utilise tt les pages jusqu'a la 14), il me reste donc 1 page ;-)
Fichier(s) joint(s):
SONIC2.rar [162.13 Kio]
Téléchargé 254 fois

<edit 15/03 : correction palette et son>

C'est mon tout premier essai pour jouer du son avec le SN76489.
J'ai fait une conversion de PSGlib sans aucun debug derrière ... apparement il y a un pb avec le channel noise, mais rien de trop grave.
Les soirées de cette semaine ont été consacrées au debug du moteur de jeu suite à l'ajout de l'animation SEGA ... ça n'a pas été une partie de plaisir.

Le son est émulé par une version modifiée de DCTO8D (par Dino merci à lui).

les données PSG pour le SN76489 font 1544 octets, si on utilise la compression du format de fichier PSG on tombe a 1075 octets, mais j'ai des anomalies a débusquer dans ma conversion de PSGlib depuis le Z80.

Un dernier truc : sur la vrai machine j'ai des "interférences" dans la bordure écran en haut et en bas lors des fondus palette que je n'ai pas sous émulateur ... Va falloir chercher d'ou ça vient ...

a+


Dernière édition par Bentoc le 15 Mar 2021, 13:56, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
MessagePosté: 13 Mar 2021, 18:56 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
C'est pas mal du tout. Il faut que j'essaie sur la vraie machine. Allez hop... C'est noté pour demain


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 13 Mar 2021, 21:49 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1800
Localisation: Brest
C'est super! Une note toute fois: Je vois sur la vidéo que le noir n'est pas complètement noir mais plutôt gris "sombre". Même globalement je trouve les couleurs un peu délavées. Il y a une raison à cela ? (mauvais gamma de l'émulateur ?)

Concernant les interférences lors des changements de palette, c'est normal car pendant qu'on écrit dans les registres palette, cette dernière n'est pas accessible par l'automate d'affichage et on voit un artefact noir à l'écran. Pour éviter cela il faut faire le changement de palette lorsque que l'automate d'affichage ne dessine pas l'écran (tour non-noir compris). Il y a 2 endroits possibles:
1) soit lors du retour de trame horizontale. Attention c'est très très court! On peut à peine changer une entrée de la palette, cf les infos de la démo Chinese Stack sur pulsedemos.com,
2) soit lors du retour de trame verticale, le fameux VBL (tu sais le bits de poids fort de $E7E7) qui est plus long, ce qui laisse largement le temps de changer toute la palette, flipper les écrans vidéo, envoyer des commandes au SN-bidule (chip audio dont je ne retiens jamais les références), etc.

Pour moi le plus simple est l'option 2) en passant par (ou en décortiquant pour cloner la logique de) la routine de palette du MONITEUR qui s'occupe de la synchro VBL + tempo pour ne rien voir des artefacts à l'écran.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 13 Mar 2021, 22:17 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 432
Localisation: Var
Pour les couleurs c'est lié à l'émulateur que Dino a modifié pour l'émulation du sound chip.
Sous la dernière version de DCMOTO : aucun problème.
J'ai hâte de construire la carte son pour pouvoir faire des captures sur machine réelle ... Dino travaille sur le sujet.

Merci pour les infos sur la palette !

J'ai passé le projet en public sur Github:
https://github.com/bhrousseau/Bento8-GameEngine

Au fil du temps j'ajouterai de la doc, mais j'attend de stabiliser un peu le code avant.

Prochaine étape : ajout du paysage de fond et du petit scrolling de l'île en fin d'intro.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 14 Mar 2021, 09:14 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 432
Localisation: Var
Le problème de son a été identifié ... Dino m'a suggéré de regarder si je réinit bien le DAC après la lecture PCM.
Du coup j'ai fait un test en retirant la lecture PCM et le problème sur la musique jouée par le SN76489 a disparu ...


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 14 Mar 2021, 12:11 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 477
c'est ouf ... :good:

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 15 Mar 2021, 11:13 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 432
Localisation: Var
Sur les conseils de sam je suis allé voir la routine de maj palette du moniteur.
(Je ne sais pas qui a désassemblé le moniteur TO8 dans le sdk vital mais c'est très pratique ...)

Code:
// SETP$ A=couleur à modif / X=16bits OR modifier / Y=16bits AND modifier
//si A=FF alors X pointe sur un tableau contenant la nouvelle palette
FCB1 34    PSHS U,Y,DP,B,A,CC
FCB3 C6    LDB  #E7
FCB5 1F    TFR  B,DP
FCB7 4D    TSTA     
FCB8 2A    BPL  FCE1  // prog d'une couleur
FCBA 8D    BSR  FCD6  // wait a VBL
FCBC 10 8E LDY  #0200
FCC0 31    LEAY -1,Y
FCC2 26    BNE  FCC0  // temporise 200x8µs
FCC4 0F    CLR  DB    // met a zero le registre de selection
FCC6 10 8E LDY  #0010 
FCCA EC    LDD  ,X++
FCCC D7    STB  DA    // ecrit la valeur 16 bits dans le registre de donnée
FCCE 97    STA  DA
FCD0 31    LEAY -1,Y
FCD2 26    BNE  FCCA  // repete 16fois
FCD4 35    PULS PC,U/S,Y,DP,B,A,CC 
// RETOUR


FCD6 7D    TST  E7E7      // Wait a VBL
FCD9 2A    BPL  FCD6
FCDB 7D    TST  E7E7
FCDE 2B    BMI  FCDB
FCE0 39    RTS 


Après l'attente VBL, il y a une tempo de 1600 cycles.

Donc si je comprends bien :
L'attente VBL permet de se positionner en fin de la dernière ligne "utile" et au début de la bordure basse.
La tempo de 1600 cycles permet de se positionner 25 lignes plus bas (64 cycles/ligne).
On est en théorie hors du champ visible (suivant le réglage de l'écran) ou en tout cas très bas.

J'ai appliqué les modifs, c'est bcp mieux. On voit encore quelques pixels tout en bas de l'écran, je vais ajuster ça.
Vu qu'il faut 400 cycles tout rond pour mettre à jour la palette, il faut donc 7 lignes invisibles.
si on part du principe que l'image est centrée sur l'écran, on a (312 - 200)/2 = 56 lignes de bordures en haut et 56 en bas.
donc si j'attends 52 lignes au lieu de 25 ça devrait être ok.
Bon il faut trouver le juste milieu car 3328 cycles a attendre ça fait pas mal de cycles perdus sur la frame.
Pour un fondu ça va car en général on ne fait pas grand chose d'autre.

<Edit> c'est parfait avec une tempo de 52 lignes


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 22 Mar 2021, 22:03 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 432
Localisation: Var
Suite à la fabrication d'une carte son pour TO8, voici une capture sur machine réelle.
Désolé pour la faible qualité vidéo ... c'est ma première capture.

phpBB [video]


Nouveautés:
- Raster pour le dégradé du ciel (avec apparition en fondu)
- Raster pour les couleurs de l'ile et des reflets de l'eau
- effet de vague rendus en temps réel (chacune des 15 lignes est un sprite) à l'aide d'une table d'offset de 66 valeurs comme dans le code d'origine.

A la fin de la video on a 42 sprites a l'écran (une majorité immobile évidement donc pas rafraichis au niveau de l'affichage, il ne faut pas abuser, mais leur code objet est exécuté et leurs données sont bien en mémoire).
J'ai ajouté la lecture du theme de Marble Zone pour montrer le SN76489 en action. Le petit bug de mon adaptation de PSGlib pour gérer la compression a été corrigé. La loop fonctionne sans problème.
Taille des données des musiques:
Intro: 958 octets
Marble Zone: 3860 octets (alors que le vgm fait 15,5ko !)
SEGA (pcm): 24948 octets

Utilisation de la RAM pour les données :
Code:
Free space on page 5 : 4 octets
Free space on page 6 : 31 octets
Free space on page 7 : 9 octets
Free space on page 8 : 94 octets
Free space on page 9 : 100 octets
Free space on page 10 : 15 octets
Free space on page 11 : 318 octets
Free space on page 12 : 2167 octets
Free space on page 13 : 443 octets
Free on page 14 : 1265 octets
Free on page 15 : 10 octets


Je me suis bien amusé avec les raster que j'avais toujours rêvé de mettre en œuvre, c'était l'occasion. ça permet de rajouter 14 couleurs supplémentaires à l'écran, pas mal ! et comme les couleurs supplémentaires ne sont nécessaires qu'en bas de page (72 lignes de raster) ça ne bloque "que" 5000 cycles par frame, ce qui permet de faire défiler l'ile avec l'effet de reflets sur l'eau.

Le code est à jour sur GitHub, les .fd et .sd sont dans le répertoire Sonic2/Disk/

ps: mon implémentation des rasters ne fonctionne pas bien sur DCMOTO (problème d'émulation du timer). A lancer sur vrai machine pour le moment.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 22 Mar 2021, 23:43 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1800
Localisation: Brest
Punaise, ca rend super bien. :love: Félicitations, c'est super beau !!! :bien: Chapeau :jap:

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 23 Mar 2021, 09:09 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 432
Localisation: Var
Merci sam !


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

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 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