[6502] ébauche sidescroller
5 participants
Page 1 sur 1
[6502] ébauche sidescroller
Salut les gamopats,
Après une longue période d'abstinence, je me remets à la prog.
Cette fois, j'ébauche un sidescroller... Je ne me fais pas un devoir d'arriver au bout, c'est surtout pour me confronter à des problèmes qui peuvent m'intéresser.
Pour démarrer, faut que je me remette dans le bain des metatiles, attribute table, buffers, et autres joyeusetés.
Je m'accorderai 40 ko (32 pour le code, 8 pour les tiles).
Comme certains le savent, j'aime les mondes très vastes... Ici, rebelote.
Je pense avoir trouvé mon fil d'Ariane.
Pour créer les niveaux, je compte utiliser des "colonnes de metatiles". Avec 128 "colonnes de metatiles" différentes, je pense pouvoir obtenir des niveaux variés.. Si ca ne suffisait pas, je pourrais même créer d'autres sets de "colonnes de metatiles", pour différencier l'overworld de l'underworld par exemple (à 12 octets / colonne car il y aura certainement un hud).
Chaque niveau fera 16 écrans de large soit 256 colonnes... autrement dit 256 octets (sans compter le set de colonnes)
Je parlais de buffer plus haut car en affichant des colonnes de 9 metatiles seulement, j'étais déjà hors vblank... j'avais rien calculé, mais vu que j'utilise pointeurs sur pointeurs, ca chiffre vite. Et encore je ne mettais pas à jour l'attribute table (pour le choix de la palette de couleur).
Bref, je vais repartir de 0.
Après une longue période d'abstinence, je me remets à la prog.
Cette fois, j'ébauche un sidescroller... Je ne me fais pas un devoir d'arriver au bout, c'est surtout pour me confronter à des problèmes qui peuvent m'intéresser.
Pour démarrer, faut que je me remette dans le bain des metatiles, attribute table, buffers, et autres joyeusetés.
Je m'accorderai 40 ko (32 pour le code, 8 pour les tiles).
Comme certains le savent, j'aime les mondes très vastes... Ici, rebelote.
Je pense avoir trouvé mon fil d'Ariane.
Pour créer les niveaux, je compte utiliser des "colonnes de metatiles". Avec 128 "colonnes de metatiles" différentes, je pense pouvoir obtenir des niveaux variés.. Si ca ne suffisait pas, je pourrais même créer d'autres sets de "colonnes de metatiles", pour différencier l'overworld de l'underworld par exemple (à 12 octets / colonne car il y aura certainement un hud).
Chaque niveau fera 16 écrans de large soit 256 colonnes... autrement dit 256 octets (sans compter le set de colonnes)
Je parlais de buffer plus haut car en affichant des colonnes de 9 metatiles seulement, j'étais déjà hors vblank... j'avais rien calculé, mais vu que j'utilise pointeurs sur pointeurs, ca chiffre vite. Et encore je ne mettais pas à jour l'attribute table (pour le choix de la palette de couleur).
Bref, je vais repartir de 0.
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: [6502] ébauche sidescroller
Plop,
J'ai un scrolling qui fonctionne, avec mise à jour des attributs cette fois.
Quelques changements par rapport au post précédent : je suis passé de metatiles de 2x2 tiles à 4x4 tiles (32x32 px), mes colonnes ne comportent plus que 6 metatiles (soit 96 tiles à écrire contre 48 précédemment). Chaque écran ne me coûte plus que 8 octets (1 octet par colonne).
Malgré avoir bufferisé ce qui pouvait l'être, l'affichage d'une colonne passe en PAL mais pas en NTSC. Je pense diluer sur 3 frames.
Maintenant, je vais créer mes sets de metatiles et de colonnes de metatiles. Je vais prendre mon temps. Pouvoir se balader dans un joli environnement sera un facteur de motivation pour la suite.
J'ai un scrolling qui fonctionne, avec mise à jour des attributs cette fois.
Quelques changements par rapport au post précédent : je suis passé de metatiles de 2x2 tiles à 4x4 tiles (32x32 px), mes colonnes ne comportent plus que 6 metatiles (soit 96 tiles à écrire contre 48 précédemment). Chaque écran ne me coûte plus que 8 octets (1 octet par colonne).
Malgré avoir bufferisé ce qui pouvait l'être, l'affichage d'une colonne passe en PAL mais pas en NTSC. Je pense diluer sur 3 frames.
Maintenant, je vais créer mes sets de metatiles et de colonnes de metatiles. Je vais prendre mon temps. Pouvoir se balader dans un joli environnement sera un facteur de motivation pour la suite.
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: [6502] ébauche sidescroller
Plus ça va, plus le problème des collisions avec le background pointe le bout de son nez.
En passant de metatiles 2x2 à 4x4, ce que je gagne du coté attribute table, je vais surement le perdre côté gestion des collisions. A moins que je lise directement en VRAM.
Pour l'instant, j'ai l'impression d'être en face d'un sac de noeuds.
En passant de metatiles 2x2 à 4x4, ce que je gagne du coté attribute table, je vais surement le perdre côté gestion des collisions. A moins que je lise directement en VRAM.
Pour l'instant, j'ai l'impression d'être en face d'un sac de noeuds.
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: [6502] ébauche sidescroller
Concernant le scrolling, j'ai dilué l'écriture de chaque colonne de metatiles sur 2 frames, maintenant ca passe aussi en NTSC. Pour rappel, mes colonnes sont composées de 6 metatiles (de 4x4 tiles). Dans l'absolu, il faut que je dilue sur 6 frames pour épargner le vblank autant que possible.
Je vais rester comme ça pour l'instant, j'ai suffisamment de marge pour afficher quelques sprites.
En parlant d'avancer, jusque là, je scrolle d'1 pixel / frame. Faut que j'adapte ma routine pour switcher de nametable au bon moment dans tous les cas. (par exemple si scrolle de 3 pixels / frame ca va pas) et surtout faut que j'utilise un "nombre à virgule" pour gérer les accélérations et tout le toutim par la suite.
Je vais rester comme ça pour l'instant, j'ai suffisamment de marge pour afficher quelques sprites.
En parlant d'avancer, jusque là, je scrolle d'1 pixel / frame. Faut que j'adapte ma routine pour switcher de nametable au bon moment dans tous les cas. (par exemple si scrolle de 3 pixels / frame ca va pas) et surtout faut que j'utilise un "nombre à virgule" pour gérer les accélérations et tout le toutim par la suite.
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: [6502] ébauche sidescroller
Je compte varier les décors en ajoutant des nuages et des buissons par ci par là... Avec mon système de colonnes de metatiles, chaque variante de colonne me coute 6 octets (1 octet par metatile).
Un set de 128 colonnes différentes me coute donc 768 octets. Le problème c'est qu'en rajoutant des buissons, des nuages et autres, on diminue grandement le nombre de colonnes réellement différentes.
J'ai eu une idée. Pendant la bufferisation de la colonne, je vérifie si l'index de la metatile correspond à celui d'une metatile randomisable et zou !
Il est possible que je me serve aussi de cette bufferisation pour spawner les ennemis. Je garde ça en tête.
Un set de 128 colonnes différentes me coute donc 768 octets. Le problème c'est qu'en rajoutant des buissons, des nuages et autres, on diminue grandement le nombre de colonnes réellement différentes.
J'ai eu une idée. Pendant la bufferisation de la colonne, je vérifie si l'index de la metatile correspond à celui d'une metatile randomisable et zou !
Il est possible que je me serve aussi de cette bufferisation pour spawner les ennemis. Je garde ça en tête.
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: [6502] ébauche sidescroller
La moitié, voire les 3/4 de ce que tu racontes me semble être du chinois, mais force et honneur comme on dit, curieux d'en voir une ébauche.
Re: [6502] ébauche sidescroller
Toujours debout, il n'abandonne jamais!
upsilandre- Interne
- Nombre de messages : 5138
Age : 49
Localisation : val de marne 94
Date d'inscription : 31/05/2015
Re: [6502] ébauche sidescroller
Merci pour vos encouragements les amis
Je passerai aux screenshots / vidéos quand ça sera plus consistant. Quand j'aurai un perso maniable et interaction avec le background je pense. Cette partie là risque de soulever pas mal de problèmes.
Je passerai aux screenshots / vidéos quand ça sera plus consistant. Quand j'aurai un perso maniable et interaction avec le background je pense. Cette partie là risque de soulever pas mal de problèmes.
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: [6502] ébauche sidescroller
Idem, je ne suis pas expert technique en programmation comme Vincent... mais j'adore, et j'apprends des trucs...
_______________________________________________________
Re: [6502] ébauche sidescroller
upsilandre a écrit:Toujours debout, il n'abandonne jamais!
Toujours codeur,, rassurez vous
Toujours la banane toujours debout
Des scrollings je vais programmer
Droit sur mes guibolles ressuscité
Tous ceux qui codent autour de moi
C'est l'hécatombe, surtout sur Amiga
Tous ceux qui codent, tombent à tour de bras
Et moi je suis toujours là
Ils m'ont cru disparu, on me croit oublié
Dites à ces trous du cul, j'continue d'coder
_______________________________________________________
Re: [6502] ébauche sidescroller
Eh Doc, je suis certainement pas un expert en programmation, faut pas se leurrer
Sinon, concernant les contrôles de Link, j'aurais aimé avoir 3 boutons d'action : sauter, accélérer, frapper. Je trouve qu'il est dommage qu'on ai ce bouton "select" qui est limite inutile. J'hésite à détourner son utilisation.
Mine de rien cette disposition des boutons du pad conditionne pas mal de choses.
Sinon, concernant les contrôles de Link, j'aurais aimé avoir 3 boutons d'action : sauter, accélérer, frapper. Je trouve qu'il est dommage qu'on ai ce bouton "select" qui est limite inutile. J'hésite à détourner son utilisation.
Mine de rien cette disposition des boutons du pad conditionne pas mal de choses.
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: [6502] ébauche sidescroller
Pour les collisions avec le background, vu que je construis mes écrans avec des metatiles de 16 tiles (4x4 tiles), je pensais qu'il serait globalement plus simple de directement lire en VRAM, en dépit du coût dans le vblank.
Cependant, vu qu'on scrolle, calculer l'adresse dans les 2 ko de VRAM nécessite aussi des opérations pour jongler entre les 2 tables.
Je vais essayer autre chose. Reconstruire une table en RAM pour les collisions me permettrait d'épargner le vblank, pour un coût en cycles et en octets peut-être pas plus élevé. Faudra quand même que je grille un octet de plus pour chaque metatile dans le set de metatiles (1 octet devrait suffire ça me laisse 2 bits par zone de 2x2 tiles).
J'espère en tout cas que j'arriverai à mettre en place une de ces 2 solutions, c'est plus corsé que je ne l'imaginais
Cependant, vu qu'on scrolle, calculer l'adresse dans les 2 ko de VRAM nécessite aussi des opérations pour jongler entre les 2 tables.
Je vais essayer autre chose. Reconstruire une table en RAM pour les collisions me permettrait d'épargner le vblank, pour un coût en cycles et en octets peut-être pas plus élevé. Faudra quand même que je grille un octet de plus pour chaque metatile dans le set de metatiles (1 octet devrait suffire ça me laisse 2 bits par zone de 2x2 tiles).
J'espère en tout cas que j'arriverai à mettre en place une de ces 2 solutions, c'est plus corsé que je ne l'imaginais
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: [6502] ébauche sidescroller
Franchement, c'était tout con. Ca aide pas de coder quand on n'est pas à 100% de ses moyens
Donc pour les collisions avec le background, je vais continuer en lisant directement en VRAM.
L'aventure continue !
Donc pour les collisions avec le background, je vais continuer en lisant directement en VRAM.
L'aventure continue !
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: [6502] ébauche sidescroller
Hé ça fait plaisir de te relire, j'avais un peu laissé de coté l'informatique pendant les vacances, mais je m'y remets aussi.
Impatient de voir ce que cela donne
Impatient de voir ce que cela donne
Shaoth- Guéri miraculeux
- Nombre de messages : 2234
Age : 54
Localisation : 92
Date d'inscription : 05/04/2018
Re: [6502] ébauche sidescroller
Ah content de savoir que tu reprennes du service ! Bon courage, j'ai vu qu'avec le Doc, vous accusiez les années.
De mon côté, faut que je réorganise mon tileset.
Pour les collisions, je vais me baser sur l'index de la tile. Si l'index est supérieur à une certaine valeur, alors elle sera infranchissable. Pour le moment toutes les tiles sont mélangées. Faut que je trie. Et c'est pas tout, je dois aussi rectifier toutes les metatiles, en corrigeant les index des tiles qui les composent.
C'est typiquement le genre de truc qui brise le peu d'élan que j'avais.
De mon côté, faut que je réorganise mon tileset.
Pour les collisions, je vais me baser sur l'index de la tile. Si l'index est supérieur à une certaine valeur, alors elle sera infranchissable. Pour le moment toutes les tiles sont mélangées. Faut que je trie. Et c'est pas tout, je dois aussi rectifier toutes les metatiles, en corrigeant les index des tiles qui les composent.
C'est typiquement le genre de truc qui brise le peu d'élan que j'avais.
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: [6502] ébauche sidescroller
Comment est créé ton tileset ?
Avec un outil graphique ou codé ?
Avec un outil graphique ou codé ?
Shaoth- Guéri miraculeux
- Nombre de messages : 2234
Age : 54
Localisation : 92
Date d'inscription : 05/04/2018
Re: [6502] ébauche sidescroller
Pour le tileset j'utilise un outil graphique : Nes Screen Tool. Pour les metatiles, et colonnes de metatiles, c'est du "code".
Mais c'est bon, j'ai fini, c'était pas la mer à boire. :)
Maintenant, je vais me pencher sur les déplacements / tests de collision avec le background. La gravité va faire son entrée !
Mais c'est bon, j'ai fini, c'était pas la mer à boire. :)
Maintenant, je vais me pencher sur les déplacements / tests de collision avec le background. La gravité va faire son entrée !
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Sujets similaires
» [6502] projet jeu colonisation spatiale
» Z80 Vs 6502, FIGHT !
» LOL une coleco avec un 6502
» [6502] Un jeu d'aventure dans 40 ko.
» [6502/NES] Remettre le pied à l'étrier... "GOLD RUSH 1849"
» Z80 Vs 6502, FIGHT !
» LOL une coleco avec un 6502
» [6502] Un jeu d'aventure dans 40 ko.
» [6502/NES] Remettre le pied à l'étrier... "GOLD RUSH 1849"
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum