Sgdk - Sega Megadrive / Genesis Development Kit

Page 3 sur 16 Précédent  1, 2, 3, 4 ... 9 ... 16  Suivant

Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par troudki le Mer 17 Jan 2018 - 8:41

Hello
Avec la nouvelle version SGDK 1.34 sortie récemment  (merci stef), est ce que vous voyez bien les sprites affichés dans le sample sprite ?
++

troudki
Patient contaminé

Nombre de messages : 131
Date d'inscription : 02/01/2014

http://www.z-team.fr

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Stef le Mer 17 Jan 2018 - 10:03

Dis moi pas que j'ai laissé une (grosse) coquille de ce genre ? ^^

Edit: ah ben si, j'ai oublié d'ajouter une ressource dans le repository, c'est corrigé Wink
Si tu télécharges l'archive depuis la section "release" il n'y avait pas de soucis heureusement :)
avatar
Stef
Infirmier

Masculin Nombre de messages : 4615
Age : 39
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par troudki le Mer 17 Jan 2018 - 10:49

j'ai téléchargé l'archi..ca compile bien mais c'est en testant sur divers émulateur que je ne vois aucun sprite du sample sprite..
avatar
troudki
Patient contaminé

Masculin Nombre de messages : 131
Age : 45
Localisation : Antibes
Date d'inscription : 02/01/2014

http://www.z-team.fr

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Stef le Mer 17 Jan 2018 - 11:02

J'ai essayé ici et je n'ai aucun problème (tout les sprites bien visibles).
Essais de recompiler la lib (avec le fichier build_lib.bat), et ensuite rebuild le sample sprite pour voir si ça change quelque chose.
avatar
Stef
Infirmier

Masculin Nombre de messages : 4615
Age : 39
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Mer 17 Jan 2018 - 11:26

Je n'étais pas au courant pour la mise à jour.

Quoi de neuf sous le capot?
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par TotOOntHeMooN le Mer 17 Jan 2018 - 11:53

C'est ça que je trouve cool dans les libs de jeux... Tu as une base commune à plein de projets, et il suffit que des optimisations soient faites, pour qu'avec un simple rebuild, tous les projets en profitent. Cool

J'aimais beaucoup Allegro sur PC pour cela. (qui a vu le jour sur ST, je sais)
avatar
TotOOntHeMooN
Docteur *
Docteur *

Masculin Nombre de messages : 8048
Age : 49
Localisation : France
Date d'inscription : 18/04/2013

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Mer 17 Jan 2018 - 12:18

@shingosama a écrit:Je n'étais pas au courant pour la mise à jour.

Quoi de neuf sous le capot?

LIBRARY
* DMA
 - added DMA queue support for all (or almost all) methods supporting DMA operation
* SPRITE
 - fixed timing issue when changing FRAME or ANIMATION manually.
 - fixed sprite sorting when multiple depth were modified in a single SPR_update(..).
 - safer sprite allocation / release.
* MEMORY
 - added MEM_getLargestFreeBlock() to get the largest available block of memory.
* improved LZ4W compression (better compression rate, faster compression...)
* minors changes on method updating tilemap through X,Y position (safer)
* some cleanup

SAMPLE
* reworked benchmark sample to avoid out of memory error (^^)
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Stef le Mer 17 Jan 2018 - 13:06

Oui voilà, petite mise à jour ^^
Quand je fais une grosse MAJ je communique un peu plus dessus.

Il y a la compression LZ4W que j'ai amélioré mais ça se remarque uniquement pour des gros blocs de données. A l'avenir je vais aussi améliorer rescomp (le compilateur de ressource) pour qu'il en tire un peu plus partie aussi.
avatar
Stef
Infirmier

Masculin Nombre de messages : 4615
Age : 39
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Mer 17 Jan 2018 - 20:00

Vous êtes sûr que la carte n'a pas de taille max ? J'ai fais une carte de 512 tiles et ça me donne un écran noir Sad
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

For stef

Message par Igor le Sam 20 Jan 2018 - 7:03

Hy Stef, im New to sgdk but im making a good progress with, i came here to speak with you about How i can handle colision with sgdk ? I see many people discuss It in spritesmind but cant understand How to make It Sad

Igor
Visiteur de l'hôpital

Nombre de messages : 1
Date d'inscription : 20/01/2018

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Sam 20 Jan 2018 - 11:03

C'est bon j'ai compris le problème, il fallait ne pas utiliser de compression !

Par contre Stef, j'aimerais savoir un truc. Tu conseilles plutôt d'utiliser de grandes images comme je le fais 1024 tiles ou bien de faire un tileset et de générer la map dans le code ? C'est quoi le plus rapide / performant ?
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Jeu 25 Jan 2018 - 18:50

Salut, j'essaie de faire du scrolling par line et le rendu est pas terrible, c'est même affreux Sad


Code:
VDP_setHorizontalScrollLine(PLAN_B, 200, +scroll, 24, FALSE);

Le scrolling est beaucoup trop rapide et quand j'utilise getTick() pour limiter le temps, le scrolling n'est pas du tout fluide.

Un peu d'aide serait la bienvenue!

edit : ok, j'ai compris, le mieux c'est le scrolling par tiles !
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Stef le Ven 26 Jan 2018 - 9:43

@Igor a écrit:Hy Stef, im New to sgdk but im making a good progress with, i came here to speak with you about How i can handle colision with sgdk ? I see many people discuss It in spritesmind but cant understand How to make It Sad

hi Igor,

I think it's better to keep the discussion on SpritesMind as Gamopat is a french board Wink
Still collision is a tricky subject which is not limited / restricted to SGDK in general, it depends if you speak about object vs object colission or object vs background collision etc... any game engine has its own way to handle collisions Wink


Le scrolling est beaucoup trop rapide et quand j'utilise getTick() pour limiter le temps, le scrolling n'est pas du tout fluide.

Un peu d'aide serait la bienvenue!

edit : ok, j'ai compris, le mieux c'est le scrolling par tiles !

Heuu... ta conclusion me fait peur MDR
Depuis peu SGDK embarque un sample qui s'appelle XGM Player (c'est le fameux player de musique que j'utilise pour faire des compilations ^^) : https://github.com/Stephane-D/SGDK/blob/master/sample/xgmplayer

Dedans je fais un petit scrolling type starfield dans le fond qui utilise le scrolling par line de la MD :
Je te met les fonctions qui t'interessent ici :

Code:
#define SCROLLV_LEN    224

// BG starfield scrolling
static s16 scrollB[SCROLLV_LEN];
static fix16 scrollBF[SCROLLV_LEN];
static fix16 scrollSpeed[SCROLLV_LEN];


static void initBGScroll()
{
    s16 i, ns, s;
    fix16* sf = scrollBF;
    fix16* ss = scrollSpeed;

    // create the scrolling offset table
    s = 1;
    i = SCROLLV_LEN;
    while(i--)
    {
         *sf++ = FIX16(0);
         do
         {
             ns = -((random() & 0x3F) + 10);
         } while(ns == s);
         *ss++ = ns;
         s = ns;
    }
}

static void updateBGScroll()
{
    s16 i;
    fix16* sf = scrollBF;
    s16* s = scrollB;
    fix16* ss = scrollSpeed;

    i = SCROLLV_LEN;
    while(i--)
    {
        *sf += *ss++;
        *s++ = fix16ToInt(*sf++);
    }
}

En gros j'ai 3 tables :
- la valeur de scrolling pour chaque ligne au format fixed point (fix16 : ça permet qui d'avoir un chiffre à virgule).
- la vitesse de scrolling pour chaque ligne au format fixed point (fix16 toujours)
- la valeur de scrolling pour chaque ligne au format entier (c'est la partie entière de la valeur fix16, celle qu'on va envoyer au VDP)

Ensuite tu envoie la table contenant les valeurs entières en VRAM en utilisant la méthode que tu as utilisé plus haut, ou tu fais comme un bourrin comme moi direct avec DMA si tu sais ce que tu fais ^^ :


Code:
DMA_queueDma(DMA_VRAM, (u32) scrollB, VDP_HSCROLL_TABLE + 2, SCROLLV_LEN, 4);
avatar
Stef
Infirmier

Masculin Nombre de messages : 4615
Age : 39
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par upsilandre le Ven 26 Jan 2018 - 10:47

Je pense que ce que shingosama appelle un scrolling a la ligne c'est juste un scrolling hardware vertical de l'ecran au pixel, un vrai scrolling quoi (pas software a la tuile). La t'es en train de lui présenter des methodes de scrolling avancé alors qu'il a pas encore assimiler la base je pense :)
avatar
upsilandre
Guéri miraculeux

Masculin Nombre de messages : 2924
Age : 43
Localisation : val de marne 94
Date d'inscription : 31/05/2015

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Ven 26 Jan 2018 - 11:13

Je vais regarder ce soir l'exemple.

En fait, j'ai un BG avec des étoiles et j'aimerais scroller plusieurs lignes afin de donner de la profondeur comme c'est le cas dans la plupart de shmup sur Mega Drive.

Par exemple dans Thunder Force 3, on y voit les étoiles se déplacer à différentes vitesses, ce qui donne une profondeur de champ.
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par upsilandre le Ven 26 Jan 2018 - 11:41

ok dans ce cas c'est bien ce dont te parle Stef 😄
avatar
upsilandre
Guéri miraculeux

Masculin Nombre de messages : 2924
Age : 43
Localisation : val de marne 94
Date d'inscription : 31/05/2015

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Ven 26 Jan 2018 - 12:28

Oui, du coup je vais étudier ce petit bout de code :)

La track d'ActRaiser est juste magnifique, merci Stef :)
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Ven 26 Jan 2018 - 12:49

J'ai profité de ma pause déjeuner pour reprendre ton code simplement. Cela fonctionne très bien, mais pas correctement avec le starfield que le graphiste m'a donné. Va falloir que je lui demande de retravailler le BG.

Je vous tiens au courant les poulets :)
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Sam 27 Jan 2018 - 12:28



Voilà ce que donne le scrolling par ligne. Je trouve que c'est assez impressionnant cette profondeur possible avec un seul plan.

Par contre, je n'ai pas compris à quoi servait la fonction initBGScroll().
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Tryphon le Sam 27 Jan 2018 - 12:33

Excellent ! thumleft
avatar
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 12874
Age : 41
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par GliX le Sam 27 Jan 2018 - 12:56

Salut les gens,

Je me suis mis au dev avec SGDK depuis quelques jours, et c'est un vrai bonheur, bravo et mille mercis Stef.
Je viens de remarquer quelque chose de troublant, lorsque j'utilise la méthode SPR_addSprite plusieurs fois, je retrouve la ressource chargée autant de fois dans la VRAM. Je me serai attendu à ne la retrouver qu'une seule fois (exemple pour une projectile instancié moult fois).
Je précise que je fais cet appel uniquement à l'init.

J'aurai une dernière question, quel est le moyen le plus efficace pour "tinter" un Sprite?
Je m'explique, pendant quelques frames je souhaite rendre un Sprite d'une couleur unie tout en conservant sa transparence, sans altérer sa palette qui sera sans doute partagée et avec la possibilité de pouvoir évidemment rendre plus tard à ce Sprite ses couleurs originales.

Merci merci !   :)

GliX
Visiteur de l'hôpital

Masculin Nombre de messages : 2
Age : 40
Localisation : Paris
Date d'inscription : 27/01/2018

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par uran le Sam 27 Jan 2018 - 13:23

@shingosama a écrit:

Voilà ce que donne le scrolling par ligne. Je trouve que c'est assez impressionnant cette profondeur possible avec un seul plan.

Par contre, je n'ai pas compris à quoi servait la fonction initBGScroll().
Sympa, t'as combien de plan différent qui scroll du coup ?
Cela t'embêterait de poster la partie du code qui fait ce scrolling?
avatar
uran
Patient contaminé

Masculin Nombre de messages : 373
Age : 39
Localisation : 34980
Date d'inscription : 17/10/2016

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Sam 27 Jan 2018 - 14:31

@Tryphon merci :)

@uran le code utilisé est celui de @Stef qui l'a partagé un plus haut. Il provient du sample XGMPlayer. Sinon c'est un plan avec un scrolling par ligne. Une technique utiliser dans de nombreux jeux sur Mega Drive afin de donner de la profondeur au plan. Arrow Flash utilise beaucoup le scrolling par ligne.

@Glix je viens de vérifier et pareil pour moi, dans la VRAM j'ai plusieurs fois le même sprite ! Je dis peut-être une bêtise, mais la fonction SPR_addSprite() ajoute automatiquement le sprite dans la VRAM, il faut utiliser SPR_setVRAMTileIndex() pour choisir l'index. Enfin c'est ce que j'ai compris pour le moment.

edit : je confirme, la fonction SPR_setVRAMTileIndex() permet d'utiliser un seul sprite dans la VRAM ! Je viens d'essayer et je n'ai plus de doublon dans la tile ! Par contre, cela améliore les performances du coup ?
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par GliX le Sam 27 Jan 2018 - 15:12

Oh yeah, merci @shingosama
Je ne sais pas pour les perfs, mais au moins ça laisse logiquement plus de place dans la VRAM.   :)

GliX
Visiteur de l'hôpital

Masculin Nombre de messages : 2
Age : 40
Localisation : Paris
Date d'inscription : 27/01/2018

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Sam 27 Jan 2018 - 15:14

Je ne sais pas si c'est possible de demander à SGDK de réutiliser un sprite dans la VRAM plutôt que de le faire manuellement, à voir avec @Stef.
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Stef le Sam 27 Jan 2018 - 16:27

@shingo> Bien joué, ça rend super bien dans ton petit shump

@Glix> Merci pour le commentaire sur SGDK ^^ Content de voir autant de gens tenter l'aventure sur MD Wink
Comme l'a expliqué shingosama par défaut la fonction SPR_addSprite(..) utilise une allocation VRAM automatique et SGDK n'a pas vraiment moyen de savoir qu'il doit partager la VRAM sur plusieurs sprites (enfin disons que ça serait compliqué selon les cas de figure et trop pénalisant pour les performances).
Pour passer en mode allocation VRAM manuel tu dois effectivement utiliser la méthode SPR_setVRAMTileIndex(..) ou alors tu utiliser SPR_addSpriteEx(..) qui te permet de spécifier plus de paramètres que SPR_addSprite(..) Wink

Sinon non hélas tu n'as pas moyen de faire ce genre d'effet (flasher un sprite) sans allouer une palette (ou au moins une partie de la palette) juste pour ce sprite. Ou alors tu dois dupliquer les images pour les faire en version 1 couleur mais bon là ça te coûte cher en Rom (tu dois dupliquer les sprites où tu les génères en soft avec le CPU s'ils ne sont pas trop grands)
avatar
Stef
Infirmier

Masculin Nombre de messages : 4615
Age : 39
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Dim 28 Jan 2018 - 14:14

Salut quelqu'un pourrait me dire combien de sprites peut afficher SGDK ?

Je suis en train de faire des essais et lorsque j'affiche plus de 10 sprites ça déconne pas mal et lorsque j'ai mis 64, boum plantage MDR MDR MDR
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Invité le Dim 28 Jan 2018 - 14:31

Le moteur peut en afficher 128 je crois !
Et je confirme, c'est suffisamment véloce pour en mettre plein la gueule de la MD :



Ici avec 60 sprites avec Algorithmes divers, avant la MaJ du SgdK qui a introduit la gestion Yorder. Wink

Invité
Invité


Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Dim 28 Jan 2018 - 14:43

Merci Vetea, ça me rassure, je vais donc vérifier ce qui coince dans mon code source :)

Impressionnant le nombre de sprites !
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Tryphon le Dim 28 Jan 2018 - 14:48

La limite du nombre de sprites hard, c'est 80 en mode 320 et 64 en mode 256, si je dis pas de bêtises...
avatar
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 12874
Age : 41
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par shingosama le Dim 28 Jan 2018 - 15:14

Merci @Tryphon pour la précision.

En fait c'était une définition qui bloquait chez moi, elle était à 8, je l'ai passé à 32, plus de soucis.

Le seul problème que j'ai, c'est qu'il semble y avoir un problème de priorité. Lorsqu'un sprite quitte l'écran, je le désactive avec SPR_releaseSprite(sprite) afin de libérer la mémoire. Par exemple lorsque je tire en continu, pas de soucis, mais si je tire lorsque la vague d'ennemis se pointe, les bullets ne sont pas affichées. Puis quand les bullets s'affichent, des ennemis disparaissent...

J'ai regardé dans le VDP_SPRITE de DGENS et le sprite bullet veut toujours se positionner à la place des sprites ennemies au-lieu d'allouer une place à la suite.

Je ne sais pas si c'est bien de décharger un sprite puis de le charger à la voler ou de le garder de côté.

Y a t-il un moyen de modifier la priorité ?

Code:
player.sprite = SPR_addSprite(&player_ship, player.posx, player.posy, TILE_ATTR_FULL(PAL1, TRUE, FALSE, FALSE, 1));

Serait-ce un comportement normal étant donné que j'ai lu que la Mega Drive ne pouvait pas afficher plus de 20 sprites par ligne ?
avatar
shingosama
Interne
Interne

Masculin Nombre de messages : 5146
Age : 32
Localisation : SEGA Toulouse
Date d'inscription : 02/11/2016

https://www.genku.net

Revenir en haut Aller en bas

Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 3 sur 16 Précédent  1, 2, 3, 4 ... 9 ... 16  Suivant

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum