FORUM, Forum Discussion, Forum Gratuit, Nom de domaine, Nom de domaine gratuit, Redirection gratuite,

Forum DCreload  : Tout (ou presque:) sur la seconde vie de la dreamcast Administrateurs :oggy, Cédric
Forum DCreload : Tout (ou presque:) sur la seconde vie de la dreamcast
Non connecté | Se connecter
en ligne : 2 inconnus visitent le forum
Inscription Inscription | Profil Profil | Messages Privés Messages Privés | Recherche Recherche | Online Online | Aide Aide | Créer un blog gratuit

forum Index du forum forumLa programmation forumProgrammation Dreamcast C++

Auteur : Sujet: Programmation Dreamcast C++  Bas
 olivier
 Messages postés : 63
 saucisses
 olivier
  Posté le 12/08/2008 13:17:24
Send a private message to olivier
Bonjour,
Comment fait-on pour programmer en C++ sur la DC ?

Quelles lignes de commande ???
Dans le makefile je mets quoi ???
Merci

WHEN DISASTERS STRIKE !!!
 erwan2
 Messages postés : 42
 saucisses
  Posté le 12/08/2008 21:43:48
Send a private message to erwan2
Il me semble que le C++ est assez mal supporté par Kos ... .

Il utilise un utilitaire "kos-c++" pour le CPP.
Voila ce que l'on peut trouver dans le répertoire CPP des examples

Citation :

$(TARGET): $(OBJS) romdisk.o
kos-c++ -o $(TARGET) $(OBJS) romdisk.o -ldcplib -lm



http://perso.dc-france.com/signature/500-120/rss_img.png
 Bouz
 Messages postés : 650
 choucroutes + bière
 Bouz
  Posté le 12/08/2008 23:08:55
Send a private message to Bouz
Il semblerait que le C++ marche plutot bien avec KOS, vu que c'est avec ça que je développe :-)

 olivier
 Messages postés : 63
 saucisses
 olivier
  Posté le 13/08/2008 01:28:07
Send a private message to olivier
ok,
comment fait on pour utiliser la fonction png_to_texture en c++
car le compilo c++ me renvoie une erreur:

kos-c++ -o pong.elf pong.o romdisk.o -ldcplib -lm -lgl -lk++ -lpng
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(readpng.o)(.text+0x44): In function `readpng_version_info':
/home/olivier/Desktop/dc/kos-ports/libpng/readpng.c:28: référence indéfinie vers « _zlibVersion »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngread.o)(.text+0x230): In function `png_create_read_struct_2':
/home/olivier/Desktop/dc/kos-ports/libpng/pngread.c:96: référence indéfinie vers « _inflateInit_ »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngread.o)(.text+0x3bc): In function `png_read_init_3':
/home/olivier/Desktop/dc/kos-ports/libpng/pngread.c:261: référence indéfinie vers « _inflateInit_ »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngread.o)(.text+0xe60): In function `png_read_row':
/home/olivier/Desktop/dc/kos-ports/libpng/pngread.c:568: référence indéfinie vers « _inflate »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngread.o)(.text+0x1970): In function `png_read_destroy':
/home/olivier/Desktop/dc/kos-ports/libpng/pngread.c:1160: référence indéfinie vers « _inflateEnd »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrtran.o)(.text+0xa80): In function `png_set_gamma':
/home/olivier/Desktop/dc/kos-ports/libpng/pngrtran.c:522: référence indéfinie vers « _fabs »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrtran.o)(.text+0xe54): In function `png_build_gamma_table':
/home/olivier/Desktop/dc/kos-ports/libpng/pngrtran.c:4073: référence indéfinie vers « _pow »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrtran.o)(.text+0x1058):/home/olivier/Desktop/dc/kos-ports/libpng/pngrtran.c:4032: référence indéfinie vers « _pow »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrtran.o)(.text+0x1234):/home/olivier/Desktop/dc/kos-ports/libpng/pngrtran.c:3877: référence indéfinie vers « _pow »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrtran.o)(.text+0x1420):/home/olivier/Desktop/dc/kos-ports/libpng/pngrtran.c:3913: référence indéfinie vers « _pow »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrtran.o)(.text+0x1890): In function `png_init_read_transformations':
/home/olivier/Desktop/dc/kos-ports/libpng/pngrtran.c:721: référence indéfinie vers « _pow »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrtran.o)(.text+0x1984):/home/olivier/Desktop/dc/kos-ports/libpng/pngrtran.c:897: encore plus de références indéfinies suivent vers « _pow »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrtran.o)(.text+0x1b88): In function `png_init_read_transformations':
/home/olivier/Desktop/dc/kos-ports/libpng/pngrtran.c:846: référence indéfinie vers « _fabs »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrtran.o)(.text+0x1b90):/home/olivier/Desktop/dc/kos-ports/libpng/pngrtran.c:846: référence indéfinie vers « _pow »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrtran.o)(.text+0x1d50):/home/olivier/Desktop/dc/kos-ports/libpng/pngrtran.c:807: référence indéfinie vers « _pow »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrutil.o)(.text+0x50c): In function `png_decompress_chunk':
/home/olivier/Desktop/dc/kos-ports/libpng/pngrutil.c:278: référence indéfinie vers « _inflate »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrutil.o)(.text+0x51c):/home/olivier/Desktop/dc/kos-ports/libpng/pngrutil.c:278: référence indéfinie vers « _inflateReset »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrutil.o)(.text+0x3610): In function `png_read_finish_row':
/home/olivier/Desktop/dc/kos-ports/libpng/pngrutil.c:2813: référence indéfinie vers « _inflate »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(pngrutil.o)(.text+0x3620):/home/olivier/Desktop/dc/kos-ports/libpng/pngrutil.c:2813: référence indéfinie vers « _inflateReset »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(png.o)(.text+0x1dc): In function `png_reset_crc':
/home/olivier/Desktop/dc/kos-ports/libpng/png.c:173: référence indéfinie vers « _crc32 »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(png.o)(.text+0x238): In function `png_calculate_crc':
/home/olivier/Desktop/dc/kos-ports/libpng/png.c:199: référence indéfinie vers « _crc32 »
/home/rage/Desktop/dc/kos/addons/lib/dreamcast/libpng.a(png.o)(.text+0xbb0): In function `png_reset_zstream':
/home/olivier/Desktop/dc/kos-ports/libpng/png.c:710: référence indéfinie vers « _inflateReset »
collect2: ld returned 1 exit status
make: *** [pong.elf] Erreur 1


merci

WHEN DISASTERS STRIKE !!!
 Bouz
 Messages postés : 650
 choucroutes + bière
 Bouz
  Posté le 13/08/2008 23:30:58
Send a private message to Bouz
Il doit te manquer un lien.
Je compile avec ça:

$(TARGET): $(OBJS)
$(KOS_CCPLUS) $(KOS_CFLAGS) $(KOS_LDFLAGS) -o $(TARGET) $(KOS_START) $(OBJS) $(OBJEXTRA) -lk++ -lkglx -lm -lpcx -lkosutils $(KOS_LIBS)

 olivier
 Messages postés : 63
 saucisses
 olivier
  Posté le 14/08/2008 01:56:36
Send a private message to olivier


Peux tu me donner tout ton makefile ?

Merci

WHEN DISASTERS STRIKE !!!
 olivier
 Messages postés : 63
 saucisses
 olivier
  Posté le 14/08/2008 14:58:26
Send a private message to olivier
Salut,
g trouvé d'où venait le problème !!!
Voici mon Makefile:

TARGET = test.elf
OBJS = test.o

all: rm-elf $(TARGET)

include $(KOS_BASE)/Makefile.rules

clean:
-rm -f $(TARGET) $(OBJS) romdisk.*

rm-elf:
-rm -f $(TARGET) romdisk.*

$(TARGET): $(OBJS) romdisk.o
$(KOS_CCPLUS) $(KOS_CFLAGS) $(KOS_CPPFLAGS) $(KOS_LDFLAGS) -o $(TARGET) $(KOS_START) \
$(OBJS) romdisk.o $(OBJEXTRA) -L$(KOS_BASE)/lib -lk++ -lpng -lm -lgl -lz $(KOS_LIBS)

romdisk.img:
$(KOS_GENROMFS) -f romdisk.img -d romdisk -v

romdisk.o: romdisk.img
$(KOS_BASE)/utils/bin2o/bin2o romdisk.img romdisk romdisk.o

run: $(TARGET)
$(KOS_LOADER) $(TARGET)

dist:
rm -f $(OBJS) romdisk.o romdisk.img
$(KOS_STRIP) $(TARGET)

WHEN DISASTERS STRIKE !!!
 erwan2
 Messages postés : 42
 saucisses
  Posté le 15/08/2008 14:42:14
Send a private message to erwan2
Sinon pour png_to_texture, il faut faire un carré avec 4 vertex et y appliquer une texture .
C'est ca ?

http://perso.dc-france.com/signature/500-120/rss_img.png
 Bouz
 Messages postés : 650
 choucroutes + bière
 Bouz
  Posté le 15/08/2008 23:01:32
Send a private message to Bouz
A priori, ça paraitrait logique :-)
png_to_texture, ça te te charge pas simplement une image png en tant que texture?

Je travaille à partir de pcx avec la séquence:
- pcx_to_img
- pvr_mem_malloc
- pvr_txr_load_kimg
- kos_img_free
Et puis, pour l'utiliser avec KGL:
- glGenTextures
- glBindTexture(GL_TEXTURE_2D, resId)
- glKosTex2D
Et enfin tu mappes ta texture sur tes 4 vertex!
Mais ton truc est probablement plus simple :-)

 erwan2
 Messages postés : 42
 saucisses
  Posté le 16/08/2008 09:50:51
Send a private message to erwan2

Citation :


// Partie d'un exemple de KOS
/* init background */
void back_init()
{
   back_tex = pvr_mem_malloc(512*512*2);
   png_to_texture("/rd/background.png", back_tex, PNG_NO_ALPHA);
}



/* draw background */
void draw_back(void)
{
   pvr_poly_cxt_t cxt;
   pvr_poly_hdr_t hdr;
   pvr_vertex_t vert;

   pvr_poly_cxt_txr(&cxt, PVR_LIST_OP_POLY, PVR_TXRFMT_RGB565, 512, 512, back_tex, PVR_FILTER_BILINEAR);
   pvr_poly_compile(&hdr, &cxt);
   pvr_prim(&hdr, sizeof(hdr));

   vert.argb = PVR_PACK_COLOR(1.0f, 1.0f, 1.0f, 1.0f);    
   vert.oargb = 0;
   vert.flags = PVR_CMD_VERTEX;
   
   vert.x = 1;
   vert.y = 1;
   vert.z = 1;
   vert.u = 0.0;
   vert.v = 0.0;
   pvr_prim(&vert, sizeof(vert));
   
   vert.x = 640;
   vert.y = 1;
   vert.z = 1;
   vert.u = 1.0;
   vert.v = 0.0;
   pvr_prim(&vert, sizeof(vert));
   
   vert.x = 1;
   vert.y = 480;
   vert.z = 1;
   vert.u = 0.0;
   vert.v = 1.0;

/*kos 1.18 - ta_commit_vertex and ta_commit_poly_hdr become pvr_prim =
Commit a vertex to the TA
Soumettre un sommet au PVR . */
   pvr_prim(&vert, sizeof(vert));
   
   vert.x = 640;
   vert.y = 480;
   vert.z = 1;
   vert.u = 1.0;
   vert.v = 1.0;
   vert.flags = PVR_CMD_VERTEX_EOL;
   pvr_prim(&vert, sizeof(vert));
}




Vu que les fonctions PVR (anciennement TA) ne sont pas listés, ca reste assez chiant a comprendre vu que je suis pas programmeur .

Sans compté que je voie toujours pas comment ils font pour définir les vecteurs U et V .

--Message edité par erwan2 le 2008-08-16 10:00:43--

http://perso.dc-france.com/signature/500-120/rss_img.png
 Bouz
 Messages postés : 650
 choucroutes + bière
 Bouz
  Posté le 16/08/2008 15:23:18
Send a private message to Bouz
J'ai écrit une couche au-dessus de KGLX.
Les performances ne sont pas très rapides, mais au moins, la documentation est là (c'est de l'OpenGL light, et les exemples de NeHe dans KOS sont très simples et très complets).
Ca vaut peut-etre le coup de regarder du côté des fonctions du PVR, mais ça me fait un peu flipper. N'ayant pas de connaissances poussées dans ce domaine, ça me semble compliqué à aborder.
Quel est ton problème avec les vecteurs U et V?

 erwan2
 Messages postés : 42
 saucisses
  Posté le 16/08/2008 15:40:41
Send a private message to erwan2

Citation :


  vert.u = 0.0;
  vert.v = 1.0;



0.0 et 1.0 ca correspond a quoi ?
C'est un cosinus ou un truc dans le style ?

http://perso.dc-france.com/signature/500-120/rss_img.png
 Bouz
 Messages postés : 650
 choucroutes + bière
 Bouz
  Posté le 16/08/2008 19:30:40
Send a private message to Bouz
x,y,z, c'est un point de ton vertex, donc les coordonnées du point dans l'espace.
u,v c'est les coordonnées du point correspondant sur la texture (carré qui va de (0,0) à (1,1)).
Donc dans le code que tu donnes, tu fais un strip de 4 points en donnant les coordonnées des 4 coins de ta texture.
Par exemple, si tu mets 0,5 à la place de 1, tu vas afficher que le quart supérieur de ta texture.

 erwan2
 Messages postés : 42
 saucisses
  Posté le 16/08/2008 21:28:25
Send a private message to erwan2
merci

http://perso.dc-france.com/signature/500-120/rss_img.png
 Bouz
 Messages postés : 650
 choucroutes + bière
 Bouz
  Posté le 16/08/2008 21:49:09
Send a private message to Bouz
Ca y est, tu peux faire tout ce que tu veux en 3D texturée sur ta DC :-)

 erwan2
 Messages postés : 42
 saucisses
  Posté le 19/08/2008 13:54:17
Send a private message to erwan2
J'ai trouvé ce document sur internet, il est pas mal .
http://www.dc-france.com/miroir/mise-en-place-et-etude-du-developpement-dreamcast.htm

http://perso.dc-france.com/signature/500-120/rss_img.png
 Bouz
 Messages postés : 650
 choucroutes + bière
 Bouz
  Posté le 19/08/2008 22:12:51
Send a private message to Bouz
Tu n'avais pas un tuto pour la compilation de la tool-chain? J'avais téléchargé le nécessaire sur DC-France, à l'époque...?

 erwan2
 Messages postés : 42
 saucisses
  Posté le 19/08/2008 22:55:55
Send a private message to erwan2
Si, mais j'ai trouver celui ci en cherchant un fonction du PVR sur le web .
Alors je l'ai "sauvegardé" pour éviter qu'ils disparaissent

http://perso.dc-france.com/signature/500-120/rss_img.png

forum Index du forum forumLa programmation forumProgrammation Dreamcast C++
Haut
Aller à :
  Ajouter une réponse rapide

Ajouter une réponse rapide