Logicielsmoto.com http://www.logicielsmoto.com/phpBB/ |
|
Outillage pour développement de jeux sur TO8 http://www.logicielsmoto.com/phpBB/viewtopic.php?f=3&t=620 |
Page 25 sur 40 |
Auteur: | Bentoc [ 21 Avr 2022, 08:53 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Quelques nouvelles ... J'ai terminé d'implémenter le système de buffer et j'obtiens un gain de 12% sur le framerate global. Soit en moyenne 8700 cycles par boucle principale d'économisés. Je vous explique tout ça plus tard. J'ai intégré qq retours de Sam (mais pas encore tout). Je pense mettre en place maintenant de quoi faire pointer les variables temp de chaque routine sur la zone DP en mappant les variables sur des "slots" Exemple, dans la routine, au lieu de faire : Code: x_off fdb 0 on fera : Code: x_off equ glb_w_var_0 avec en include : Code: glb_w_var_0 equ $9FEE ça permettra également de gagner de la place en réutilisant toujours le même espace (pour des routines différentes) pour ces variables de travail. |
Auteur: | Yoann Riou [ 21 Avr 2022, 09:27 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Mais tu arretes ?!?!? ... Tu vas nous pondre un Sonic aussi rapide que sur Megadrive |
Auteur: | Samuel Devulder [ 21 Avr 2022, 09:52 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Arrêtes surtout pas ! Quand je vois que certains sont tout heureux d'annoncer Sonic sur des machines à 85Mhz de pleins de MIPS (ce qui n'est pas un vrai challenge: la seule difficulté étant de configurer le Makefile), alors qu'avec nos 1Mhz on arrive a faire aussi bien... (et eux en plus(moins), ils n'ont pas les niveaux bonus) |
Auteur: | Bentoc [ 21 Avr 2022, 10:17 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Merci pour vos encouragements ! Voici la dernière vidéo : https://youtu.be/hP3DjPNClHo C'est bcp plus fluide que sur la première vidéo. Sans parler d'un jeu complet, on peut déjà envisager d'ajouter à court terme : - un layer supplémentaire pour les tiles d'avant plan (j'ai une idée pour aller vite, on ne devrait pas perdre bcp) - la gestion des collisions de "terrain", la structure de données des tiles est compatible, mais il faut que je réalise un convertisseur des données d'origine - le code de controle de sonic - un gestionnaire d'objet pour instancier / libérer les objets en fonction de la position de sonic dans la map largement de quoi s'amuser ... |
Auteur: | Samuel Devulder [ 21 Avr 2022, 10:29 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Citation: C'est bcp plus fluide que sur la première vidéo. Carrément ! Ca (dé)fonce grave: |
Auteur: | Yoann Riou [ 21 Avr 2022, 11:10 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Ca semble ralentir pas mal au niveau des cascades. Ont-elles un attribut de transparence ce qui fait qu'elles sont plus couteuses en cycles pour afficher ? Aussi, je vois que tu affiches une ligne sur deux pour le background. As-tu essayer d'alterner les lignes ? Par exemple : * Boucle 1 : lignes paires * Boucle 2 : lignes impaires * Boucle 3 : lignes paires * Boucle 4 : lignes impaires * ... |
Auteur: | Bentoc [ 21 Avr 2022, 11:21 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Non rien de spécial sur les cascades. La vitesse varie selon deux critères : - le nombre de tuiles pleines dessinées a l’écran - la pas de défilement (plus le pas est élevé, plus je dois remplir le buffer) Les cascades sont des tuiles pleines et souvent entourées de murs en tuiles pleines également. Dans le jeu d’origine, la transparence des cascades est gérée par entrelacement vertical. Je crois que c’est un sprite qui vient s’afficher par dessus. Je verai si je conserve ce principe ou si je profite de l’entrelacement horizontal et si je me contente d’afficher les tuiles concernées en avant plan. Dans ce cas pas de sprite supplémentaire. |
Auteur: | Bentoc [ 21 Avr 2022, 11:24 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Oui j’ai déjà essayé d’alterner (a l’époque sur le spécial stage) mais ça ne donne rien de bon car le frame rate est variable. Ça aurait fonctionné si on était sur du 50 ou 25 fps, ce qui n’est pas le cas. |
Auteur: | Bentoc [ 21 Avr 2022, 11:27 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
J’ai aussi essayé de me passer des bordures qui masquent en noir les tiles en cours d’apparition. Mais le fait de les voir apparaître par bloc attire l’œil et c’est très perturbant. |
Auteur: | Yoann Riou [ 21 Avr 2022, 12:01 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Bentoc a écrit: Je verai si je conserve ce principe ou si je profite de l’entrelacement horizontal et si je me contente d’afficher les tuiles concernées en avant plan. Dans ce cas pas de sprite supplémentaire. Oui, c'est vrai qu'avec l'entrelacement, ce devrait donner un cote de transparence ... en esperant ceci dit que seules les cascades sont en avant plant dans le jeu, sinon, il va y avoir de tuiles qui ne peuvent s'afficher que sans entrelacement. |
Auteur: | Bentoc [ 21 Avr 2022, 15:45 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Oui ça va être pénible car certains tiles d’avant plan sont transparents il faut donc afficher ou non les pixels des lignes noires intermédiaires pour masquer les sprites. A moins d’afficher les sprites en entrelacé sur les mêmes lignes que le decors … (une solution pour gagner de la place et avoir tt les images de sonic en ram ?) à essayer… |
Auteur: | Bentoc [ 23 Avr 2022, 21:41 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
ça y est j'ai les tiles d'avant plan qui s'affichent correctement ... https://youtu.be/_HvDkPCm164 J'ai donc écrit un convertisseur pour récupérer les données d'origine, ça aidera aussi pour les collisions. Sur les tiles d'avant plan, les lignes intermédiaires conservent les pixels transparents, et on remplace les pixels colorés par des pixels noirs ... tout simplement : Fichier(s) joint(s): tileset.png [ 44.92 Kio | Vu 3927 fois ] Les points négatifs (pour le moment) : 1. Les données d'origine comprennent des blocks en double ... dont je ne connais pas l'utilité, le tileset adonc bien grossi. S'il s'avère qu'ils sont inutiles, je dédoublonnerai. 2. Les zones d'avant plan coutent plus cher à afficher (lignes noires intermédiaires), ça ne devrait pas être problématique car les tiles d'avant plan utiles sont en qté limité. Sauf que dans le design original il y a de grandes zones de mur en avant plan (dans des endroits normalement inacessibles). Il va donc falloir que j'édite la map des niveaux pour repasser ces murs en arrière plan. Mais sinon c du tout bon ;-) Coté prog rien de spécial : Au moment de rendre les tiles d'arriere plan depuis le buffer, si je tombe sur un tile d'avant plan je le met en file d'attente : Code: DBT_cloop pulu d,x pshs u stb $E7E6 beq @skip tsta bpl @low stb ,y+ stx ,y++ ldx <glb_screen_location_1 stx ,y++ ldx <glb_screen_location_2 stx ,y++ bra @skip @low ldu <glb_screen_location_2 jsr ,x @skip puls d,x,u et après avoir rendu les sprites je dessine ces tiles d'avant plan : Code: DrawHighPriorityBufferedTile ldy #tmb_hprio_tiles @loop ldb ,y+ stb $E7E6 beq @exit ldx ,y++ ldu ,y++ stu <glb_screen_location_1 ldu ,y++ jsr ,x bra @loop @exit rts Quand l'écran ne bouge pas, les tiles d'arrière plan ne sont plus rendus du tout (on appelle pas la routine). Par contre on appelle la routine pour les tiles d'avant plan, qui utilise la liste avec tout de prêt dedans ... pratique ! C'est le seul code ajouté ... ps : il faut que je règle un petit pb de clignotement des sprites au démarrage du scroll ... c'est sur la todo list. |
Auteur: | Bentoc [ 23 Avr 2022, 21:51 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Pour la transparence de l'eau, si j'édite la map en passant les blocs d'eau d'arrière plan en avant plan ça donnera ça : https://youtu.be/4tvO6CsxEO4 Pas mal non ? du coup pas besoin de code spé pour gérer ça. Vous noterez les trous dans les murs : c’est pour les tiles animés … ça viendra après |
Auteur: | Samuel Devulder [ 23 Avr 2022, 22:39 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Petite optim: les ",y+" (2 cycles) et ",y++" (3 cycles) sont couteux à la longue. Il vaut mieux procéder à un décalage fixe (1 cycle) et un gros, mais unique, LEA (5 cycles) après: Code: stb ,y+ ; +2 devientstx ,y++ ; +3 ldx <glb_screen_location_1 stx ,y++ ; +3 ldx <glb_screen_location_2 stx ,y++ ; +3 = total +11cycles Code: stb ,y ; +0 Evidemment plus on a de "++" et plus on gagne ainsi.stx 1,y ; +1 ldx <glb_screen_location_1 stx 3,y ; +1 ldx <glb_screen_location_2 stx 5,y ; +1 leay 7,y ; +5 = total +8 cycles Par ailleurs il se pourrait que le "++" final sur Y ne serve à rien. En effet si le B qu'on place en $E7E6 est nul on passe dans @exit sans avoir fait avancer Y. Similairement si A est >0, on passe dans le @low sans non plus faire avancer Y. Donc si (hypothèse!) on se fiche que Y a bien avancé de 7 cases, on peut carrément virer le LEAY final du code ci-dessus et gagner encore plus. |
Auteur: | Bentoc [ 23 Avr 2022, 22:56 ] |
Sujet du message: | Re: Outillage pour développement de jeux sur TO8 |
Merci, bien vu. Virer le leay final oui mais faut bien avancer donc le placer au début ? Ça revient au même non ? J’ai envisagé d’utiliser puls pour la lecture de la liste mais l’irq viendrait écraser les données si elle se déclenche lors de la routine… donc c’est pas viable. |
Page 25 sur 40 | Heures au format UTC + 1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |