[fini] barbarian en C avec la SDL
+3
Tryphon
ichigobankai
F.L
7 participants
Page 1 sur 2
Page 1 sur 2 • 1, 2
[fini] barbarian en C avec la SDL
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:
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
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
@+
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:
- http://barbarian.1987.free.fr/online/
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
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
@+
Dernière édition par F.L le Mar 6 Déc 2016 - 21:32, édité 3 fois
Re: [fini] barbarian en C avec la SDL
attention le html5 et le Javascript sont 2 choses bien distinctes
Re: [fini] barbarian en C avec la SDL
Tu veux faire quoi avec des polices TTF ?
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: [fini] barbarian en C avec la SDL
pourtant il y a bien un fichier js dans un canvas html5 ???
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
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
Re: [fini] barbarian en C avec la SDL
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...
Parce que ça, ça sera pas super portable sur NEC ou SNES...
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: [fini] barbarian en C avec la SDL
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
mais si tu m'explique comment utiliser une fonte bitmap en C, je le ferais
Re: [fini] barbarian en C avec la SDL
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.
Alekmaul ou Touko devrait pouvoir te renseigner.
Alekmaul ou Touko devrait pouvoir te renseigner.
Templeton- Patient contaminé
- Nombre de messages : 390
Age : 106
Localisation : France
Date d'inscription : 13/11/2016
Re: [fini] barbarian en C avec la SDL
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:
Mais pour l'instant je souhaite finir cette version que j'ai attaqué avec la sdl
Toute aide sera la bienvenue
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
Re: [fini] barbarian en C avec la SDL
F.L a écrit:pourtant il y a bien un fichier js dans un canvas html5 ???
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
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à.
Re: [fini] barbarian en C avec la SDL
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 :
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);
Re: [fini] barbarian en C avec la SDL
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.
Alekmaul ou Touko devrait pouvoir te renseigner.
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 ?
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é :)
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: [fini] barbarian en C avec la SDL
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
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
Invité- Invité
Re: [fini] barbarian en C avec la SDL
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);
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.
Re: [fini] barbarian en C avec la SDL
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
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++))
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- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: [fini] barbarian en C avec la SDL
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
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
@+
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
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
@+
Re: [fini] barbarian en C avec la SDL
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.TOUKO, il y a HUC d'installé dans le dossier de ton exemple ?
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) .
Exactau fait, j'ai cru reconnaitre des sprites familiers
Invité- Invité
Re: [fini] barbarian en C avec la SDL
hello.
j'ai enfin reussi à afficher du texte à l'ecran (et vive la sdl)
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
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 )
@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
j'ai enfin reussi à afficher du texte à l'ecran (et vive la sdl)
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
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 )
@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
Re: [fini] barbarian en C avec la SDL
Pas de soucis, je serrai là pour te filer un coup de paluche le jour venupromis 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 )
Invité- Invité
Re: [fini] barbarian en C avec la SDL
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
* 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- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: [fini] barbarian en C avec la SDL
TOUKO a écrit:Pas de soucis, je serrai là pour te filer un coup de paluche le jour venupromis 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 )
en ecrivant ça tout à l'heure, en fait je n'ai pas pu attendre, et je viens de faire ma premiere rom pce !
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
effectivement, HUC fait une rom en quelques secondes sans trop de manip..... je valide !
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 !!
Re: [fini] barbarian en C avec la SDL
Non du tout, Huc est très simple d'emploi, et tu n'as aucune lib à inclure, excepter tes propres fonctions,datas .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
C'est le but du petit rep que je t'ai envoyé .effectivement, HUC fait une rom en quelques secondes sans trop de manip..... je valide !
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 .2000 j'imagine que c'est la localisation de la tile en vram mais que veut dire 0x40 ?:
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
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 .- commes dans barbarian j'ai besoin de souvent changer de couleur mes sprites, puis-je gerer manuellement la couleur de mes palettes ?
Les sprites hardwares ont une taille de 32x64 pixels max en 16 couleurs, soit 0x200(en hexa) words, soit 1024 octets .-quelle taille fais un sprite en maxi?
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 .- j'ai deja toutes mes tiles de barbarian, en data de 8x8pixels. puis-je les utiliser avec HUC ?
Bah tu vois que c'est facile de faire un hello touko !!en ecrivant ça tout à l'heure, en fait je n'ai pas pu attendre, et je viens de faire ma premiere rom pce !
Dernière édition par TOUKO le Jeu 24 Nov 2016 - 21:16, édité 1 fois
Invité- Invité
Re: [fini] barbarian en C avec la SDL
merci pour ta réponse rapide !!
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 :
et pour le 0x40, je te redemanderais plus tard des precisions, car j'ai pas compris grand chose (il me manque des bases)
encore merci d'avance !
TOUKO a écrit: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 .j'ai deja toutes mes tiles de barbarian, en data de 8x8pixels. puis-je les utiliser avec HUC ?
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)
encore merci d'avance !
Re: [fini] barbarian en C avec la SDL
oui tu peux les réutiliser, mais ça risque de pas marcher si ils sont découpés en tiles de 8x8 .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 !
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 .
le 0x40 c'est de l'hexa, mais tu peux aussi bien mettre du décimal à la place donc 0x40 = 64 words .et pour le 0x40, je te redemanderais plus tard des precisions, car j'ai pas compris grand chose (il me manque des bases)
La calculatrice windows en mode programmeur est ton amie !!
Invité- Invité
Re: [fini] barbarian en C avec la SDL
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 ?
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 ?
Re: [fini] barbarian en C avec la SDL
Oui, il faudra revoir l'organisation des sprites hélas ..ça risque d'etre trop le bazar non ?
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 .
Invité- Invité
Re: [fini] barbarian en C avec la SDL
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
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 ?
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
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
Re: [fini] barbarian en C avec la SDL
Ca fait plaisir de voir que ça t'aide
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 );
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 );
Invité- Invité
Re: [fini] barbarian en C avec la SDL
c'est fait, nos reponses se sont croisés
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"
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"
Re: [fini] barbarian en C avec la SDL
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)- pourquoi 2000? qu'il y a t'il avant ?
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.
1000 c'est bon, en général on commence à mettre les tiles du bcknd à cette adresse .- a partir de combien puis-je envoyer ensuite ... 1000+xxx
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) .
CAD ??question bonus : est il possible de modifier une couleur de cette image pour la rendre transparente
merci d'avance pour tout ça.
Seule la couleur 0 des palettes est transparente, donc tout ce que tu veux rendre transparent doit avoir cette couleur .
Invité- Invité
Re: [fini] barbarian en C avec la SDL
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
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
Page 1 sur 2 • 1, 2
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum