[fini] barbarian en C avec la SDL

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

[fini] barbarian en C avec la SDL

Message par F.L le Mer 23 Nov 2016 - 0:14

hello
je crée un nouveau sujet pour vous montrer l'avancée de ma conversion des codes de mon remake de barbarian en C.
l'année dernière déja j'avais "traduit" mes codes qb64 en html5 javascript:
Spoiler:
ça avait été une très bonne transition car ce langague est très proche du C.
il m'a fallu un peu adapter la synthaxe au C, et depuis quelques jours j'ai envoyé le listing dans codeblocks.
le plus dur pour moi c'est de batailler avec l'installation de la sdl et les librairies Boulet
heureusement 65c02 m'a aidé car sinon j'aurais encore laissé tomber....
et ensuite finalement, le portage aura été assez rapide (une quinzaine de soirées)
voici une vidéo du jeu au tout debut de la pose des graphismes :

depuis, le jeu est fini et marche nickel. voici le lien du zip (3 mégas) :
https://www.dropbox.com/s/bfa4id9qhiktwyw/barbarianSDL.zip?dl=0

sur la vidéo du dessus, la vidéo est saccadée, pas le jeu, ça vient de camstudio qui a eu du mal à saisir tout le bureau (pc de bureautique)
il restait encore pas mal de sprites à gerer mais le plus gros etait fait. il manquait surtout à gerer les polices d'ecritures avec la ttf, et je ne parle pas du son....
ceci n'est qu'une etape pour porter le jeu sur une nouvelle console : pcengine ou snes, je ne sais pas encore.
si des personnes qui connaissent bien une de ces machine veut m'aider, il sera le bienvenu

voila, j'espere que ce nouveau projet vous plaira et que je ne vous saoule pas trop avec barbarian Mr. Green
@+


Dernière édition par F.L le Mar 6 Déc 2016 - 21:32, édité 3 fois
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par ichigobankai le Mer 23 Nov 2016 - 0:30

attention le html5 et le Javascript sont 2 choses bien distinctes Wink
avatar
ichigobankai
Patient contaminé

Masculin Nombre de messages : 994
Age : 38
Localisation : 49
Date d'inscription : 04/04/2011

http://www.mastersystem-france.com

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par Tryphon le Mer 23 Nov 2016 - 0:34

Tu veux faire quoi avec des polices TTF ?

Tryphon
Infirmier

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

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par F.L le Mer 23 Nov 2016 - 0:39

pourtant il y a bien un fichier js dans un canvas html5 ??? scratch

ichigo, ça te dirait de m'aider pour mettre mes codes en C dans une console ?? le moteur marche. il faut "juste" y poser des graphismes et du son

@tryphon
j'aimerais tout betement afficher du texte mais je n'arrive pas à installer la librairie sdl_ttf
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par Tryphon le Mer 23 Nov 2016 - 0:41

C'est pas un peu overkill ? Genre, tu peux pas juste prendre une fonte bitmap et blitter les caractères (ce que tu as certainement fait sur les autres versions) ?
Parce que ça, ça sera pas super portable sur NEC ou SNES...

Tryphon
Infirmier

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

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par F.L le Mer 23 Nov 2016 - 0:51

a part sur megadrive, j'ai toujours utilisé des ttf....
mais si tu m'explique comment utiliser une fonte bitmap en C, je le ferais Wink
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par Templeton le Mer 23 Nov 2016 - 1:24

Autrement, il y a peut être des exemples de fonction pour afficher des polices dans les documentations des devkit C sur Snes et Pc Engine.study 
Alekmaul ou Touko devrait pouvoir te renseigner. Wink
avatar
Templeton
Patient en incubation

Masculin Nombre de messages : 53
Age : 99
Localisation : France
Date d'inscription : 13/11/2016

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par F.L le Mer 23 Nov 2016 - 9:24

Oui, sur pcengine il semble "assez simple " d'ecrire avec un police ,si je me fie a cet exemple
Trouvé sur ce site :(j'aime bien le nom du site  ) qui parle de HUC :
http://www.atchoum.fr/pc-engine/tutoriels/programmez-la-pc-engine-chapitre-i-introduction/
CODE:
Code:
#include "huc.h"
 
main()
{
     set_color_rgb(1, 7, 7, 7);
     set_font_color(1, 0);
     set_font_pal(0);
     load_default_font();
     put_string("Bonjour Livegen !", 0, 0);
}


Mais pour l'instant je souhaite finir cette version que j'ai attaqué avec la sdl
Toute aide sera la bienvenue smile
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par ichigobankai le Mer 23 Nov 2016 - 9:57

F.L a écrit:pourtant il y a bien un fichier js dans un canvas html5 ??? scratch
ichigo, ça te dirait de m'aider pour mettre mes codes en C dans une console ?? le moteur marche. il faut "juste" y poser des graphismes et du son

Dans ton cas, l'encapsulage html5 (qui en est effectivement) n'a aucun rôle.
Ca pourrait tout aussi bien est du html4 que ca ne changerait absolument rien, vu que tout est dans le JS Wink

Concernant l'aide, je préfère décliner, ayant déjà pas mal (trop) de choses à gérer de mon coté. 

Si tu es coincé, par une fonction/bout de code, le mieux c'est de poster ledit bout de code ici pour que nous te donnions un coup de mains à ce moment là.
avatar
ichigobankai
Patient contaminé

Masculin Nombre de messages : 994
Age : 38
Localisation : 49
Date d'inscription : 04/04/2011

http://www.mastersystem-france.com

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par F.L le Mer 23 Nov 2016 - 10:41

pour le moment je suis bloqué sur comment ecrire les scores, vu que je n'arrive pas à installer la lib ttf, ou autre methode
je vais surement resinstaller la sdl et recreer un projet pour voir.
je ne sais pas non plus comment retourner une image en effet miroir.
voici comment je l'affiche les sprites :

Code:
SDL_Surface *imageA = SDL_LoadBMP("ressources/spritesA/debout.bmp");SDL_Rect positionSpriteA;
positionSpriteA.x = 100, positionSpriteA.y = 100;
SDL_BlitSurface(imageA, NULL, ecran, &positionSpriteA);

help
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par Stef le Mer 23 Nov 2016 - 10:55

Templeton a écrit:Autrement, il y a peut être des exemples de fonction pour afficher des polices dans les documentations des devkit C sur Snes et Pc Engine.study 
Alekmaul ou Touko devrait pouvoir te renseigner. Wink

En effet je pense... SGDK (pour la Megadrive) te permet aussi d'écrire du texte facilement à l'écran.
Voici le "Hello world" de SGDK :

Code:
#include <genesis.h>

int main()
{
    VDP_drawText("Hello World!", 10, 13);
    return (0);
}

Plutot simple non ? Wink
Et tu as accès à tout le code source de SGDK ici :
https://github.com/Stephane-D/SGDK/tree/master/src

Ainsi tu peux voir comment tout est implémenté :)
avatar
Stef
Infirmier

Masculin Nombre de messages : 3587
Age : 38
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par TOUKO le Mer 23 Nov 2016 - 13:55

F.L:l'exemple que tu donnes sur PCE est correct .
Je pensais retrouver les exemple que j'avais fait pour la gazette de gamopat, mais je retrouve plus rien, je vais donc devoir te refaire un truc facile d'emploi .

EDIT: ok c'est bon tu peux récupérer les petits tutos (4) que j'avais fait pour la gazette .
https://www.dropbox.com/s/u5ujveavx29jnmu/exemple4.zip?dl=0


Dernière édition par TOUKO le Mer 23 Nov 2016 - 22:17, édité 1 fois
avatar
TOUKO
Docteur *
Docteur *

Masculin Nombre de messages : 12069
Age : 44
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par dub le Mer 23 Nov 2016 - 16:46

F.L a écrit:pour le moment je suis bloqué sur comment ecrire les scores, vu que je n'arrive pas à installer la lib ttf, ou autre methode
je vais surement resinstaller la sdl et recreer un projet pour voir.
je ne sais pas non plus comment retourner une image en effet miroir.
voici comment je l'affiche les sprites :

Code:
SDL_Surface *imageA = SDL_LoadBMP("ressources/spritesA/debout.bmp");SDL_Rect positionSpriteA;
positionSpriteA.x = 100, positionSpriteA.y = 100;
SDL_BlitSurface(imageA, NULL, ecran, &positionSpriteA);

help

D'après mes "vieux" souvenir, tu peux pas flipper une image, il faut la SDL2. Tu es obligé de créer tes sprites dans les deux sens. Il y a un moyen je crois avec des surfaces en OpenGL mais c'est galère.

C'est quoi ton soucis avec la lib ttf ? Normalement, c'est pareil que les autres genrs sdl_image : tu as la partie à copier dans include et lib, un fichier .h dans SDL et la librairire compilée en dll que tu places dans ton rép où tu executes ton programme. Il faut aussi le rajouter à ta ligne de compilation suivant le programme que tu utilises, comme tu as fait pour sdl_image.
avatar
dub
Patient contaminé

Masculin Nombre de messages : 466
Age : 47
Localisation : France
Date d'inscription : 27/08/2008

http://www.pixelretro.com

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par Tryphon le Mer 23 Nov 2016 - 17:28

F.L a écrit:a part sur megadrive, j'ai toujours utilisé des ttf....
mais si tu m'explique comment utiliser une fonte bitmap en C, je le ferais Wink

Tu crées un fichier graphique qui contient tous les caractères, si possible dans l'ordre ASCII.

Puis tu l'utilises comme n'importe quelle autre ressource graphique que tu as dans un fichier graphique.

Tu la charges dans une surface, et chaque fois que tu veux afficher une chaîne "ABCD", tu parcours chaque caractère de la chaîne, tu récupères le code ASCII, à partir de celui-ci tu trouves la position de ta lettre dans la surface et tu blittes à l'écran.

Je n'ai jamais utilisé la SDL en C, mais j'utilise pygame en Python (qui est une adaptation de SDL à la syntaxe python), donc avec une syntaxe entre les deux (je déclare pas les variables) qu'il faudra certainement que tu adaptes, ça donnerait une fonction du genre :

Code:
void print_on_surf(Surface *police, Surface *dest, char *text, int x, int y) {
    while (carac = *(text++)) {
        cx = carac & 15 ;
        cy = carac >> 4 ;
        blit(dest, police, (x, y), (cx, cy, 8, 8));
        x += 8;
    }
}


Là dedans, police est ta surface contenant la... police, et je suppose que les lettres sont dessinées dedans en lignes de 16 caractères, et que chaque caractère fait 8x8 pixels.

dest est la surface de destination (par exemple l'écran)

text est la chaîne à afficher, terminée par un 0 (la façon de faire classique en C)

x et y sont les coordonnées où afficher le texte à l'écran.

La ligne :
Code:
while (carac = *(text++))
est une astuce C : elle signifie que carac prend la valeur pointée par text, donc le code du 1er caractère de la chaîne, ensuite le pointeur text est incrémenté, ce qui veut dire que maintenant il pointe sur le deuxième caractère (pour le prochain passage dans la boucle) et le test consiste à vérifier si carac n'est pas nul (si c'est le cas, on sort, et ça tombe bien car carac nul signifie qu'on a terminé la chaîne).

Ensuite cx et cy calculent la position de la lettre de code carac dans la police (respectivement le reste et le quotient de carac dans la division par 16).

La commande blit, je ne sais pas comment elle s'appelle en SDL (SDL_blit ?) mais j'ai copié la commande pygame du même nom, les paramètres, c'est dans l'ordre :

surface de destination
surface source
position dans la destination
rectangle de copie de source (top, left, width, height)

Il est vraisemblable qu'en C, il te faille construire une structure Rect et y stocker tes x, y

Le TTF, c'est BEAUCOUP plus lourd : une police TTF, c'est du vectoriel, la bibliothèque doit tracer des courbes points par points, les ajuster, gérer l'espacement des caractères (le kerning). Les PC actuels peuvent faire ça en temps réel, mais JAMAIS une PCE ou une SNES.

Tryphon
Infirmier

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

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par F.L le Mer 23 Nov 2016 - 20:07

merci à vous tous pour votre aide !
il me faut un moment pour tout assimiler, et après je vous dirais si ça marche !
TOUKO, il y a HUC d'installé dans le dossier de ton exemple ? au fait, j'ai cru reconnaitre des sprites familiers  Mr. Green

pour l'instant, j'ai installé codeblock et la sdl sur un autre ordi, ça s'est bien passé (ou presque) avec la sdl. je crois qu'elle etait mal installée avant.
je vais essayer d'installer des lib pour voir
@+
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par TOUKO le Mer 23 Nov 2016 - 22:11

TOUKO, il y a HUC d'installé dans le dossier de ton exemple ?
Oui, pour le moment le .bat te permet juste de faire une rom .pce (donc pas de format CD), mais c'est vite fait si tu as besoin,tu as même l'emulateur (mednafen) inclu.

Tu lances le compil.bat mon_fichier.c (en mode msdos et dans le repértoire que je t'ai envoyé) et tu as un mon_fichier.pce à la sortie (si pas d'erreur lol) .

au fait, j'ai cru reconnaitre des sprites familiers  
Exact  Wink
avatar
TOUKO
Docteur *
Docteur *

Masculin Nombre de messages : 12069
Age : 44
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par F.L le Jeu 24 Nov 2016 - 15:23

hello.
j'ai enfin reussi à afficher du texte à l'ecran (et vive la sdl)  Mr. Green
n'arrivant toujours pas à installer ces fichues librairies sdl_image et sdl_ttf, heureusement hier soir j'ai trouvé un template à telecharger sur devellopez.com avec la sdl et ces deux librairies pré-installés cheers
génial, je peux enfin afficher des .png et ecrire sur l'ecran.
je crois aussi que dans sdl_image il y a une fonction pour retourner les sprites.. a voir
du coup, j'en ai pour qq jours à  insere tous les détails qui manquent. j'ai deja mis les arbres sur les cotés.

@TOUKO promis ces jours ci je prends une petite demi-heure pour faire un hello world sur pcengine grace à ce que tu m'as envoyé. pour le moment, à ce que j'en ai vu, il me semble que c'est assez abordable. je te dirais ça vraiment car je ne veux pas faire comme pas mal de monde sur internet : c'est à dire donner son avis ou des conseils sur quelque chose que l'on ne connais meme pas . (amis mythos, vous vous reconnaitrez  )
si je suis satisfait de HUC, une fois le "portage" sous SDL fini, il y a de grandes chances que je me lance dans l'aventure grace à toi (ou à cause Mr. Green )

@Stef le hello world de sgdk a l'ai abordable aussi c'est vrai. mais j'ai deja fait barbarian sur megadrive avec bex, et je ne sais pas si j'arriverais à trouver la motivation pour le refaire. c'est sur que ça ameliorerait surement la qualité des musiques ! (seul point que je regrette sur mes versions)

@Tryphon la lib SDL_ttf fait exactement ce que tu a decrit. elle traite la police .ttf en faisant une surface.c'est assez pratique. il "ne faut que quelques lignes" pour afficher un mot à l'ecran. comparé à la simplicité de qb64 je rigole jaune, meme avec bex c'est plus simple... mais bon, le jeu en vaut la chandelle

ce soir, si j'ai le temps je referrais une vidéo des avancées. j'espere coller les png de mon copain le gnome
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par TOUKO le Jeu 24 Nov 2016 - 15:31

promis ces jours ci je prends une petite demi-heure pour faire un hello world sur pcengine grace à ce que tu m'as envoyé. pour le moment, à ce que j'en ai vu, il me semble que c'est assez abordable. je te dirais ça vraiment car je ne veux pas faire comme pas mal de monde sur internet : c'est à dire donner son avis ou des conseils sur quelque chose que l'on ne connais meme pas . (amis mythos, vous vous reconnaitrez   )
si je suis satisfait de HUC, une fois le "portage" sous SDL fini, il y a de grandes chances que je me lance dans l'aventure grace à toi (ou à cause  )
Pas de soucis, je serrai là pour te filer un coup de paluche le jour venu  Wink
avatar
TOUKO
Docteur *
Docteur *

Masculin Nombre de messages : 12069
Age : 44
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par Tryphon le Jeu 24 Nov 2016 - 16:48

F.L a écrit:@Tryphon la lib SDL_ttf fait exactement ce que tu a decrit. elle traite la police .ttf en faisant une surface.c'est assez pratique. il "ne faut que quelques lignes" pour afficher un mot à l'ecran. comparé à la simplicité de qb64 je rigole jaune, meme avec bex c'est plus simple... mais bon, le jeu en vaut la chandelle

Si tu utilises la lib juste une fois, et que tu recolles à chaque frame à l'écran la surface qu'elle t'a renvoyée, oui, ça revient à peu près au même. Mais dans ce cas ça veut dire que le texte ne change pas et alors autant le mettre comme ressource graphique dans un fichier à part.

Si tu dois retracer le texte à chaque frame (genre, un score), alors non, la lib SDL est beaucoup plus lourde que ce que je t'ai proposé (parce qu'elle retraduit les commandes ttf en pixels à chaque appel*).

Franchement, je pense pas qu'une telle lib soit utile sur ce genre de projet (et je m'en suis toujours passé sur les miens), mais tu fais ce que tu veux Cool

* pour faire simple, le ttf, c'est un peu comme le langage logo avec la tortue. Il faut exécuter un mini-programme pour chaque caractère. C'est donc lourd...

Tryphon
Infirmier

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

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par F.L le Jeu 24 Nov 2016 - 18:32

TOUKO a écrit:
promis ces jours ci je prends une petite demi-heure pour faire un hello world sur pcengine grace à ce que tu m'as envoyé. pour le moment, à ce que j'en ai vu, il me semble que c'est assez abordable. je te dirais ça vraiment car je ne veux pas faire comme pas mal de monde sur internet : c'est à dire donner son avis ou des conseils sur quelque chose que l'on ne connais meme pas . (amis mythos, vous vous reconnaitrez   )
si je suis satisfait de HUC, une fois le "portage" sous SDL fini, il y a de grandes chances que je me lance dans l'aventure grace à toi (ou à cause  )
Pas de soucis, je serrai là pour te filer un coup de paluche le jour venu  Wink

en ecrivant ça tout à l'heure, en fait je n'ai pas pu attendre, et je viens de faire ma premiere rom pce ! joueur fou
voici le lien :
https://www.dropbox.com/s/m9qm8dtmao1lmrz/hello.pce?dl=0

TOUKO, c'est sympa de m'avoir mis le pied à l'etrier, j'espere que j'y arriverais. ça doit pas etre pire que bex Wink

effectivement, HUC fait une rom en quelques secondes sans trop de manip..... je valide ! Razz
j'ai survolé l'histoire des sprites, ça n'a pas l'air mechant mais je n'ai pas tout saisi encore...
j'ai plein de question. en premier à propos de çà:
Code:
 /* On charge dans la VRAM du VDC les données graphique de notre sprite */
 load_vram( 0x2000 , player_spr , 0x40);

2000 j'imagine que c'est la localisation de la tile en vram mais que veut dire 0x40 ?:

autres questions :
- commes dans barbarian j'ai besoin de souvent changer de couleur mes sprites, puis-je gerer manuellement la couleur de mes palettes ?
-quelle taille fais un sprite en maxi?
- j'ai deja toutes mes tiles de barbarian, en data de 8x8pixels. puis-je les utiliser avec HUC ?
merci d'avance pour toutes ces questions !! Very Happy
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par TOUKO le Jeu 24 Nov 2016 - 20:25

TOUKO, c'est sympa de m'avoir mis le pied à l'etrier, j'espere que j'y arriverais. ça doit pas etre pire que bex 
Non du tout, Huc est très simple d'emploi, et tu n'as aucune lib à inclure, excepter tes propres fonctions,datas . 

effectivement, HUC fait une rom en quelques secondes sans trop de manip..... je valide ! 
C'est le but du petit rep que je t'ai envoyé .

2000 j'imagine que c'est la localisation de la tile en vram mais que veut dire 0x40 ?:
C'est ça, le second param c'est le pointeur (l'adresse plus exactement) des données en ROM, et le 0x40 est la taille (en word,car la VRAM est en word et non en bytes/octets) que tu veux envoyer .
En gros la VRAM va de 0x0000 à 0x7FFF words .
Les sprites contrairement aux tiles sont en 16x16 pixels minimum ,tu as comme tailles:
16x16
16x32
16x64
32x16
32x32
32x64

- commes dans barbarian j'ai besoin de souvent changer de couleur mes sprites, puis-je gerer manuellement la couleur de mes palettes ?
Oui tu disposes de 16 palettes pour les sprites(elles sont séparées de celles pour les tiles), donc tu peux évidemment changer les couleurs de tes palettes mais aussi précharger plusieurs palettes, et changer la palette de tes sprites .

-quelle taille fais un sprite en maxi?
Les sprites hardwares ont une taille de 32x64 pixels max en 16 couleurs, soit 0x200(en hexa) words, soit 1024 octets .

- j'ai deja toutes mes tiles de barbarian, en data de 8x8pixels. puis-je les utiliser avec HUC ?
Oui, mais le plus simple est de prendre tes levels classiques (en bmp) et les convertir en pcx 16 couleurs indexées, et inclure chaque niveau avec HUC comme je l'ai fait dans mon exemple, c'est bcp plus simple, et tu n'as pas besoins de découper quoique ce soit .

en ecrivant ça tout à l'heure, en fait je n'ai pas pu attendre, et je viens de faire ma premiere rom pce ! 
Bah tu vois que c'est facile de faire un hello touko !!  Mr. Green


Dernière édition par TOUKO le Jeu 24 Nov 2016 - 21:16, édité 1 fois
avatar
TOUKO
Docteur *
Docteur *

Masculin Nombre de messages : 12069
Age : 44
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par F.L le Jeu 24 Nov 2016 - 21:14

merci pour ta réponse rapide !!

TOUKO a écrit:
 j'ai deja toutes mes tiles de barbarian, en data de 8x8pixels. puis-je les utiliser avec HUC ?
Oui, mais le plus simple est de prendre tes levels classiques (en bmp) et les convertir en pcx 16 couleurs indexées, et inclure chaque élément avec HUC comme je l'ai fait dans mon exemple, c'est bcp plus simple, et tu n'as pas besoins de découper quoique ce soit .

je parlais des tiles de mes sprites, il y en a enormement (130) ils sont deja découpés. si je peux utiliser mes datas et y coller les bonnes couleurs aux bons numeros, je vais gagner un temps fou !
effectivement pour les decors, autant suivre ton exemple.
pour revenir aux sprites j'espere ne pas abuser de ton temps, mais pourrais tu me donner l'exemple de comment afficher manuellement une tile et comment creer une palette manuellement.
voila comment ça se passe sur megadrive avec bex, j'espere que ton exemple ressemblera un peu à ça :


code a écrit:
loadtiles matile,1,128
(charge une tile à l'adresse 128,c'est le debut de la ram dispo)
drawtilesinc 128,0,5,1,1
(dessine a partir de l'adresse 128, a l'endroit (x,y) 0,5 , une tile en largeur et une tile en hauteur. par defaut ça dessine avec la palette 0. si on veux la palette1 , il faut donner l'adresse 128+palette(1) )

pallettes mapalette,0,0,16 (charge mapalette en palette 0 , et de 16 couleurs)
(la voici)
palettejoueurA:
dataint $0000,$0888,$0000,$066E,$000C,$066E,$02A0,$04E4
dataint $066E,$0888,$0000,$0000,$0000,$0000,$026C,$0E06

(et pour finir la tile de 8x8 pixels)
matile :
datalong $33300000
datalong $33330000
datalong $33333300
datalong $33333333
datalong $33333333
datalong $33333333
datalong $00003333
datalong $00222233



 
et pour le 0x40,  je te redemanderais plus tard des precisions, car j'ai pas compris grand chose (il me manque des bases) Mr. Green
encore merci d'avance !
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par TOUKO le Jeu 24 Nov 2016 - 21:26

je parlais des tiles de mes sprites, il y en a enormement (130) ils sont deja découpés. si je peux utiliser mes datas et y coller les bonnes couleurs aux bons numeros, je vais gagner un temps fou !
oui tu peux les réutiliser, mais ça risque de pas marcher si ils sont découpés en tiles de 8x8 .



tu fais comme ça:
Code:
#include "huc.h"

/* On inclut le sprite */
/* Avec :
/* 0,0 Nb de tiles de 16 pixels dans la planche, à partie de laquelle commencer à intégrer le(s) sprite(s) */
/* 1,1 Nb de tiles de 16 pixels en largeur,longueur */
#incspr(player_spr,"pcx/player_chip.pcx",0,0,1,1)

/* On inclut la palette */
#incpal(player_pal,"pcx/player_chip.pcx")

char spr_pos_x, /* On definie une variable posx du sprite */
        spr_pos_y;      /* On definie une variable posy du sprite */

main()
{   
 /* On définit une résolution Horizontale de 256 pixels */
 set_xres( 256 ); 
 
 /* Change la taille de l'écran virtuel: par défaut c'est 64x32 tiles */
 /*set_screen_size( 32x32 );*/
 
 /* On charge dans la VRAM du VDC les données graphique de notre sprite */
 load_vram( 0x6000 , player_spr , 0x40);
 
 /* On charge la palette du sprite */
 set_sprpal( 0 , player_pal );
 
 reset_satb(); /* On met toute la SAT à 0 */
 
 /* creation du sprite du vaisseau joueur */
 
 spr_set( 5 );   /* Choix du numéro du sprite à utiliser */
 spr_pattern( 0x6000 ); /* Choix du pattern du sprite à utiliser (données graphiques en VRAM) */
 spr_ctrl( SIZE_MAS|FLIP_MAS , SZ_16x16|NO_FLIP ); /* Choix des attributs du sprites taille, flipx,flipy, etc .. */
 spr_pal( 0 ); /* Choix du numéro de palette à affecter au sprite */
 spr_pri( 1 ); /* Choix de la priorité du sprite sur le background */
 spr_x( 1 ); /* Position X en pixel du sprite à l'écran */
 spr_y( 1 ); /* Position Y en pixel du sprite à l'écran */
 
 
 /*------------------------------------*/
 /* INSERTION DU BACKGROUD image_chute */
 /*------------------------------------*/
    
 /* On charge le fond avec les différents labels l'image
    de 32 tiles de long et 28 de haut */
 load_background(ptr_image_chute,image_chute_pal,image_chute_bat,32,28);
 
/* Attente de la synchro verticale ( 0 frames de délais)  */
 vsync( 0 );

/* Mise à jour de la table locale des sprites en VRAM */
 satb_update();
 
 disp_on(); /* Activation de l'affichage */
 
 /* Init des position X et Y du sprite */
 spr_pos_x = 1;
 spr_pos_y = 1;
 
 while( 1 ) /* Création d'une boucle infinie */
 {
 
/* Attente de la synchro verticale ( 0 frames de délais)  */
 vsync( 0 );

/* Mise à jour de la table locale des sprites en VRAM */
 satb_update();
  }
 
}

J'ai utilisé les fichiers graphiques de mes exemples, mais les remplacer par les tiens est super simple .

et pour le 0x40,  je te redemanderais plus tard des precisions, car j'ai pas compris grand chose (il me manque des bases) 
le 0x40 c'est de l'hexa, mais tu peux aussi bien mettre du décimal à la place donc 0x40 = 64 words .
La calculatrice windows en mode programmeur est ton amie !!  tongue
avatar
TOUKO
Docteur *
Docteur *

Masculin Nombre de messages : 12069
Age : 44
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par F.L le Jeu 24 Nov 2016 - 22:00

oula, il faut que je lise ça à tete reposée, mais pour l'instant ton premier exemple (ou l'on charge directement le fichier) à l'air plus simple à comprendre et à realiser, meme si je doit redecouper mes sprites !
car mes datas sont decoupés en 8x8 pixels, et dans le sens de la hauteur (4 maxi)
ça risque d'etre trop le bazar non ?
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par TOUKO le Ven 25 Nov 2016 - 9:16

ça risque d'etre trop le bazar non ?
Oui, il faudra revoir l'organisation des sprites hélas ..
Mais ça veut pas dire que ce serra plus galère, car tout décomposer avec juste des sprites de 8x8 pixels, c'est un boulot énorme il aurait fallut optimiser ça en faisant varier les tailles .
avatar
TOUKO
Docteur *
Docteur *

Masculin Nombre de messages : 12069
Age : 44
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par F.L le Ven 25 Nov 2016 - 10:38

petite rom surprise qui fait office de teaser :
https://www.dropbox.com/s/hiqhnxsrtrohe0k/exemple2.pce?dl=0
TOUKO, grace à ton exemple, c'est vraiment facile sur pce !
avec bex, afficher une image comme ça m'avait demandé pas mal de boulot !!
prochaine avancée, afficher un sprite Razz

edit : j'ai utilisé une resolution de 320, j'imagine que ça ne pose pas de probleme pour le vrai hardware. qq pourrait t'il tester ?


Dernière édition par F.L le Ven 25 Nov 2016 - 10:53, édité 1 fois
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par TOUKO le Ven 25 Nov 2016 - 10:49

Ca fait plaisir de voir que ça t'aide  Wink
N'oublies pas que tu peux passer la résolution en 320 comme sur Md si tu veux garder le même ratio .

Tu remplaces set_xres( 256 ); par set_xres( 320 );
avatar
TOUKO
Docteur *
Docteur *

Masculin Nombre de messages : 12069
Age : 44
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par F.L le Ven 25 Nov 2016 - 12:55

c'est fait, nos reponses se sont croisés Razz
j'ai d'autres questions a propos de l'affichage de cette image :
j'ai envoyé cette image de 40x25 tiles à l'adresse 1000
- pourquoi 2000? qu'il y a t'il avant ?
- a partir de combien puis-je envoyer ensuite ... 1000+xxx
- combien de tiles dispo me reste t'il ?
- question bonus : est il possible de modifier une couleur de cette image pour la rendre transparente
merci d'avance pour tout ça.
va falloir que je renomme le sujet "programmer en C sur pcengine"
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par TOUKO le Ven 25 Nov 2016 - 16:27

- pourquoi 2000? qu'il y a t'il avant ?
Une valeur comme une autre, de l'adresse 0x0000 à 0x0800 en VRAM il s'agit de la BAT (background attribute table, donc on ne met aucune données graphiques dans cette plage(sauf savoir ce que tu fais)
Sous HUC les usages courants sont: les tiles des backgrounds vont de 0x1000 à 0x3FFF, et les sprites commencent à 0x4000, la police commence à 0x0800 .

Mais sinon y'a pas vraiment de rêgles hormis pour la BAT qui commence tjrs à 0x0000 et va à 0x???? en fonction de la taille de la BAT choisie .
32x32,32x64,64x32,64x64,128x32,128x64(en tiles)

Donc les valeurs données pour l'usage courant avec HUC, c'est pour être sur de pas te faire chier.

- a partir de combien puis-je envoyer ensuite ... 1000+xxx
1000 c'est bon, en général on commence à mettre les tiles du bcknd à cette adresse .
Ensuite tout dépend de la taille de ton background, mais si tu utilises mednafen comme emulateur tu peux rentrer dans le mode débug et voir l'occupation de ta VRAM .
Qd ta rom est lancée,tu fais alt+d, puis alt+2 .
Avec les fleches haut/bas tu peux voir les tiles en VRAM (en bas à gauche marqué BG0) .
Ensuite avec les flêche tu peux voir les sprites en VRAM (en bas à gauche marqué SPR0) .

question bonus : est il possible de modifier une couleur de cette image pour la rendre transparente
merci d'avance pour tout ça.
CAD ??
Seule la couleur 0 des palettes est transparente, donc tout ce que tu veux rendre transparent doit avoir cette couleur .
avatar
TOUKO
Docteur *
Docteur *

Masculin Nombre de messages : 12069
Age : 44
Localisation : LE MANS/MARSEILLE
Date d'inscription : 08/07/2010

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par F.L le Ven 25 Nov 2016 - 23:02

ok, merci pour les renseignements, c'est plus clair.
pour la couleur 0, j'imagine que ça ne marche que pour les sprites, et pas quand on affiche des tiles par dessus le background.
0 devient du noir, comme sur megadrive j'imagine...
la semaine prochaine, essai de sprites. je sortirais la calculatice scientifique Wink
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2301
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: [fini] barbarian en C avec la SDL

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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