alekmaul 0 Report post Posted April 12, 2012( 04/12/2012 10:43 AM) Hello, En continuité du travail de RemY,j'ai voulu aussi me lancer dans une librairie C générique Snes (Faut que les Homebrews reviennent pour les 20 ans de la console !) mais sans dépendre d'Eclipse ou d'un autre éditeur. Voici l'entrée Wiki du début de mes travaux **c'est une version beta** et il manque pas mal de choses pour avoir toutes les fonctionnalités de la Snes (pas de son, pas de mode 7, des bugs dans la gestion des sprites ...). http://www.portabledev.com/wiki/doku.php La documentation (accessible depuis le wiki) ainsi que les liens avec les exemples sont directement générés depuis la libSnes. Je vais continuer en adaptant un certain nombre de mes homebrews GBA, je pense surtout à CodeName Hacker. Merci de me dire ce que vous en pensez :) Quote Share this post Link to post Share on other sites
M0nsieurL 29 Report post Posted April 12, 2012( 04/12/2012 10:35 PM) ??a me botte, dommage que j'ai le bras dans le sac, je me serait fait un plaisir de te faire du pixel art pour faire un jeu! Perso celui qui me ferait bien plaisir en portage ça serait spout! Sinon la question con, comment je fais pour compiler avec programmer's notepad? :) Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted April 13, 2012( 04/13/2012 04:20 AM) Pour info, je vais renommer la lib, libSnes existe déjà pour bsnes ... On va donc maintenant parler de PVSnesLib :) ! Pour compiler, il te suffit de définir un "Tool" via le menu Tools/Options, sous Programmer Notepads qui va pointer sur la commande Make. Quote Share this post Link to post Share on other sites
M0nsieurL 29 Report post Posted April 13, 2012( 04/13/2012 07:14 PM) > "make" > Failed to create process: Le fichier spécifié est introuvable. > Process Exit Code: 0 > Time Taken: 00:00 Heu, j'ai du merder un truc encore là?? PVSnesLib? pourquoi ce nom? (j'ai lu que la SnesLib était déjà en chantier par byuu) Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted April 13, 2012( 04/13/2012 07:57 PM) Alors, dans l'ordre : Pb de process : Ton problème vient du fait que msys/bin doit être dans ton path windows Le nom : en fait, c est libsnes qu' il utilise le ch'ti père byuu, alors je me suis retourné vers Programmer Valuable Snes library , enfin c'est ce que j'ai trouvé :) Quote Share this post Link to post Share on other sites
M0nsieurL 29 Report post Posted April 13, 2012( 04/13/2012 08:35 PM) Huh? C:\Snesdev\msys\msys\bin c'est pas le bon dossier? Pourtant dans le wiki : Download msys to use Unix like environment and put it in you snes directory. (eg, ???C:/snesdev/msys??? would be fine). Je m'ai trompé? Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted April 14, 2012( 04/14/2012 04:18 AM) En fait, il semble que tu as fait un sous répertoire sous msys, tu dois donc avoir effectivement c:\Snesdev\msys\msys\bin. Comme tu le fais remarquer, dans ton cas, tu dois donc ajouter ce répertoire "c:\Snesdev\msys\msys\bin" à ton PATH Windows. J'ai mis à jour le wiki dans ce sens : Download msys to use Unix like environment and extract it in you snes directory. (eg, ???C:\snesdev\??? would be fine). You will have a subdirectory name msys with all msys distribution in it. Add the msys\bin directory to your PATH environment variable (eg, you will add c:\snesdev\msys\bin in our example). En espérant que cela soit plus clair. Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted April 14, 2012( 04/14/2012 06:26 PM) Bon, double post pour dire que j'ai mis à jour le wiki avec la procédure pour tester que la librairie et le kit sont bien installés. A tester donc :) Quote Share this post Link to post Share on other sites
M0nsieurL 29 Report post Posted April 14, 2012( 04/14/2012 08:42 PM) Bon je comprends toujours pas pourquoi ça ne marche pas. Au passage le lien de cette page (PVSnesLib french documentation) pointe vers http://www.portabledev.com/pages/snes/pvsneslib/doc.php. C'est quoi l'histoire du "PATH Windows", c'est à mettre en plus dans le makefile? P.S : J'ai tout retéléchargé et tout réinstallé donc je comprends pas. Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted April 15, 2012( 04/15/2012 05:32 AM) Merci pour le lien, c'est corrigé. J'ai ajouté 2 screenshots pour le problème d'ajout de msys/bin au path, j'espère que ça sera plus clair. Le but est que ton "make" que tu tapes dans les Tools de Programmer's Notepad soit reconnu par ce dernier. ET comme il y a beaucoup d'autres fichiers nécessaires pour msys, le path Windows doit être modifié. Quote Share this post Link to post Share on other sites
M0nsieurL 29 Report post Posted April 15, 2012( 04/15/2012 02:12 PM) > "make" snesbmp libsnesfont.bmp -b convert bitmap ... libsnesfont.chr input.c 816-tcc -I/c/SnesDev/libsnes/include -I/c/snesdev/snes-examples/input/ -Wall -c /c/snesdev/snes-examples/input/input.c -o /c/snesdev/snes-examples/input/input.ps c:/snesdev/snes-examples/input/input.c:9: include file 'snes.h' not found "make": *** [/c/snesdev/snes-examples/input/input.ps] Error 1 Je suis a deux doigts de pouvoir compiler!!! Pour info je suis sur windows 7. C'est frustrant pour le moment... Alors je fais comment pour inclure le snes.h? Quote Share this post Link to post Share on other sites
jotakun 0 Report post Posted April 15, 2012( 04/15/2012 05:36 PM) Salut All, Merci AlekMaul pour cette magnifique initiative. J'ai suivi la page d'install de ton wiki et la compilation du "template" se passe bien! J'obtiens mon .SFC que je lance sous Bsnes et ça fait... bizarre. Du coup j'ai voulu ouvrir et essayé ton Hello World mais quend je compile ben j'obtiens pas de .SFC?? Est-ce normal docteur? Quote Share this post Link to post Share on other sites
M0nsieurL 29 Report post Posted April 15, 2012( 04/15/2012 06:43 PM) Tu peux poster ce que tu as dans le log de compilation? Quote Share this post Link to post Share on other sites
jotakun 0 Report post Posted April 15, 2012( 04/15/2012 09:52 PM) Salut Lestat, ouais j'ai pas regardé plus loin que le bout de mon nez... :D Il me retourne le fait qu'il n'a pas trouvé les fichiers en .h "snes.h" etc... Je les copie donc dans le repertoire du hello world, je compile, pas d'erreur. Et le .sfc qui en ressort m'affiche au milieu de l'écran "HEL" c'est tout :evil: Mais c'est un bon départ pour une quiche comme moi qui a du mal avec la prog :) Quoiqu'il en soit si un projet de jeu naît ici avec tous ces merveilleux outils ce serait top, je serai heureux d'aider sur les graphismes et la zic ^^ A suivre!! Quote Share this post Link to post Share on other sites
M0nsieurL 29 Report post Posted April 15, 2012( 04/15/2012 11:08 PM) Le souci, c'est que comme moi, tu es obligé de déplacer les include pour compiler, avoue que ce n'est pas très pratique pour les mise à jour de la lib. Moi même en déplaçant le snes.h et le dossier snes contenant les autres includes, j'ai une erreur pour les.obj (je suis plus sûr de l'extension) :] En tout cas content de voir qu'il y a des gens intéressés par ce genre de projet! Ps:ici c'est m0nsieurL si tu veux bien :) Quote Share this post Link to post Share on other sites
jotakun 0 Report post Posted April 16, 2012( 04/16/2012 05:39 AM) Ok! Alors vivement l'avancement du projet d'Alekmaul et celui de Remy aussi! J'ai hâte de voir ça.. PS:ok désole pour le nom, ça s'écrivait plus vite :) Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted April 16, 2012( 04/16/2012 08:32 AM) hum, normalement, les deux define en haut du makefile de chaque exemple sont à modifier pour que les includes soient pris en compte. Cf le wiki, je l'ai mis à jour. Normalement, rien de plus à faire. Pour le hello world, le texte s'affiche effectivement mal, j'ai refondu complètement cette brique.Dans la prochaine verison, il n'y aura plus de problème. Quote Share this post Link to post Share on other sites
jotakun 0 Report post Posted April 16, 2012( 04/16/2012 11:39 AM) Je pense avoir trouver mon problème qui est au milieu du makefile, comme tu as changé le nom de ta lib entre temps, la déclaration "LIBDIRS" pointait toujours sur "LIBSNES" au lieu de PVSNESLIB et là ça passe pas besoin de coller les .h dans le répertoire. Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted April 16, 2012( 04/16/2012 05:45 PM) Ouch , tu as raison, et j'ai pas reposté les exemples comme un imbécile. Merci de l'info,je mets à jour dés que possible. Quote Share this post Link to post Share on other sites
M0nsieurL 29 Report post Posted April 16, 2012( 04/16/2012 08:02 PM) #---------------------------------------------------------------------------------# list of directories containing libraries, this must be the top level containing # include and lib #--------------------------------------------------------------------------------- LIBDIRS := $(PVSNESLIB) Je comprends pas pourquoi ça ne compile pas moi, c'est pourtant le bon dossier non? > "make" template.c 816-tcc -I/c/snesdev//pvsneslib/include -I/c/snesdev/pvlibsnes/template/ -Wall -c /c/snesdev/pvlibsnes/template/template.c -o /c/snesdev/pvlibsnes/template/template.ps c:/snesdev/pvlibsnes/template/template.c:9: include file 'snes.h' not found "make": *** [/c/snesdev/pvlibsnes/template/template.ps] Error 1 > Process Exit Code: 2 > Time Taken: 00:00 Je pige pas, j'ai quoi à modifier pour le coup? P.s : j'ai tout retéléchargé. Quote Share this post Link to post Share on other sites
remy 1 Report post Posted April 17, 2012( 04/17/2012 05:28 AM) monsieurL je crois que tu as un probléme avec ton PC car meme tout ce que j'avais fait tu n'arrive pas a le compiler, la c'est pareil !!!! je crois que tu as un gros souci lol !! Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted April 17, 2012( 04/17/2012 05:18 PM) MonsieurL, promis, je remets à jour dés que j'ai le temps. Certainement avant la fin de la semaine et tu verras, ça va compiler ^^ Normalement, le changement dans le makfile de LIBSNES en PVSNESLIB doit corriger ton problème (cherche, y'en a souvent qu'un seul dans le makefile ;)) Je suis en ce moment en train de travailler sur les scrollings et les sprites ... Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted April 18, 2012( 04/18/2012 04:19 AM) Double post pour dire que PVSnesLib et les exemples ont été mis à jour. N'hésitez pas à poster ici : http://www.portabledev.com/smf/ vos remarques ;) Quote Share this post Link to post Share on other sites
jotakun 0 Report post Posted April 18, 2012( 04/18/2012 05:50 AM) Salut, Bon je poste un com ici car faut attendre un mail d'approbation du forum portabledev à l'inscription : J'ai un message dans le log des exemples backgrounds mode 1 et dans effect: "make": *** No rule to make target `libsnes.chr', needed by `/c/snesdev/exemples/graphics/effects/effects.sfc'. Stop. Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted April 18, 2012( 04/18/2012 08:11 AM) salut, approuvé à l'instant ;) TOn problème vienbt du fait que tu as les anciens exemples, je pense. Tu dois changer le makefile pour pouvoir compiler la font : $(OUTPUT).obj : $(OUTPUT).c hdr.asm pvsneslib.chr pvsneslib.chr: pvsneslib.png $(SXBM) -image -opt -v -target snes -format p4 -o $@ $< @echo convert bitmap ... $(notdir $@) ici, j'ai pvsneslib à la place de libsnes. Quote Share this post Link to post Share on other sites
M0nsieurL 29 Report post Posted April 18, 2012( 04/18/2012 08:17 PM) Je comprends pas, je vais finir par croire que Rémy a raison ;) > "make" template.c 816-tcc -I/c/snesdev//pvsneslib/include -I/c/snesdev/pvlibsnes/template/ -Wall -c /c/snesdev/pvlibsnes/template/template.c -o /c/snesdev/pvlibsnes/template/template.ps c:/snesdev/pvlibsnes/template/template.c:9: include file 'snes.h' not found "make": *** [/c/snesdev/pvlibsnes/template/template.ps] Error 1 > Process Exit Code: 2 > Time Taken: 00:00 Le makefile du template # path to snesdev root directory (for emulators, devkitsnes, libsnes) export DEVKITSNES := /c/snesdev/ # path to devkitsnes root directory for compiler export DEVKIT65XX := /c/snesdev/devkitsnes #--------------------------------------------------------------------------------- .SUFFIXES: #--------------------------------------------------------------------------------- ifeq ($(strip $(DEVKIT65XX)),) $(error "Please set DEVKIT65XX in your environment. export DEVKIT65XX=devkit65XX") endif include $(DEVKIT65XX)/snes_rules #--------------------------------------------------------------------------------- # TARGET is the name of the output # BUILD is the directory where object files & intermediate files will be placed # SOURCES is a list of directories containing source code # INCLUDES is a list of directories containing extra header files #--------------------------------------------------------------------------------- TARGET := $(shell basename $(CURDIR)) SOURCES := . #--------------------------------------------------------------------------------- # options for code generation #--------------------------------------------------------------------------------- CFLAGS += $(INCLUDE) #--------------------------------------------------------------------------------- # list of directories containing libraries, this must be the top level containing # include and lib #--------------------------------------------------------------------------------- LIBDIRS := $(PVSNESLIB) LIBOBJS +:= export OUTPUT := $(CURDIR)/$(TARGET) CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.asm))) BMPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.bmp))) #--------------------------------------------------------------------------------- export OFILES := $(BINFILES:.bin=.obj) \ $(CFILES:.c=.obj) $(SFILES:.asm=.obj) $(BMPFILES:.bmp=.chr) export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) #--------------------------------------------------------------------------------- all : $(OUTPUT).sfc @echo build ! clean: @echo clean ... @rm -f $(OFILES) $(TARGET).sfc #--------------------------------------------------------------------------------- $(OUTPUT).obj : $(OUTPUT).c hdr.asm $(OUTPUT).sfc : $(OFILES) Quote Share this post Link to post Share on other sites
remy 1 Report post Posted April 18, 2012( 04/18/2012 08:21 PM) bah c'était pareil que ma lib, tu n'avais qu'a extraire et a lancer eclipse et tout compiler ! malheureusement tu n'as jamais reussi !!! et la rebelote !! Quote Share this post Link to post Share on other sites
M0nsieurL 29 Report post Posted April 18, 2012( 04/18/2012 08:25 PM) Mais il me semble qu'alekmaul n'avait pas réussi à faire le lien avec un truc sur ta lib! Tu pourrais l'aider a développer un peu la sienne si le c??ur t'en dit? ;) Merde, voilà que je fais des rimes... Quote Share this post Link to post Share on other sites
jotakun 0 Report post Posted April 18, 2012( 04/18/2012 09:21 PM) Attends m1sterL, tu as un rep qui s'appelle PVSNESLIB et un autre qui s'appelle PVLIBSNES??? > "make" template.c 816-tcc -I/c/snesdev//pvsneslib/include -I/c/snesdev/pvlibsnes/template/ -Wall -c /c/snesdev/pvlibsnes/template/template.c -o /c/snesdev/pvlibsnes/template/template.ps Quote Share this post Link to post Share on other sites
M0nsieurL 29 Report post Posted April 18, 2012( 04/18/2012 09:57 PM) Roh le clampin de base ;) Mille mercis Jotak1! Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted April 30, 2012( 04/30/2012 10:04 AM) Allez, eptite video de ma chaine youtube pour vous montrer la progression de la lib : eAOmvXN3lB4 Y'a pas encore les collisions mais ça avance ... Et voila le code C utilisé (juste le main , c'est très long sinon) ^^ //--------------------------------------------------------------------------------- int main(void) { unsigned short pad0, move, i; // Initialize SNES consoleInit(); // Initialize text console with our font and invert color (black with BG white) consoleInitText(0, 1, &snesfont); consoleSetTextCol(RGB15(0,0,0), RGB15(31,31,31)); // Copy tiles to VRAM bgInitTileSet(1, &mapgfx, &mappal, 0, (&mapgfx_end - &mapgfx), 16*2, BG_16COLORS, 0x5000); // Init Sprites gfx and palette with default size of 16x16 oamInitGfxSet(&mariogfx, (&mariogfx_end-&mariogfx), &mariopal, 0, 0x4000, OBJ_SIZE16); // Init Map to address 0x1000 and Copy Map to VRAM bgSetMapPtr(1, 0x1000, SC_64x32); for (i=0;i<31;i++) { // 128 pixel height -> 128/8 = 16 2400 / 8 = 300 u8 *ptrMap = &map + 300*i*2; // 300 = map size x *2 because each entry is 16bits length if (i>=16) ptrMap = &map + 300*5*2; // Init anything else with white line u16 ptrVRAM = 0x1000+i*32; // screen begin to 0x1000 dmaCopyVram(ptrMap, ptrVRAM, 32*2); // copy row to VRAM dmaCopyVram((ptrMap+32*2), (ptrVRAM+32*32), 32*2); // copy row to VRAM } // Show Mario mario.x = 0; mario.y = 96<<8; // 128-16-16 = 96, 16 because map ground is 16 pix height, in fixed point mario.anim_frame = 6; mario.flipx = 1; mario.jmpval = 0; oamSet(0, (mario.x>>8), (mario.y>>8), 3, mario.flipx, 0, mario.anim_frame*2, 0); // flip x and take 5th sprite oamSetEx(0, OBJ_SMALL, OBJ_SHOW); // Now Put in 16 color mode and disable BG3 setMode(BG_MODE1,0); bgSetDisable(2); // Put some text consoleDrawText(6,16,"MARIOx00 WORLD TIME"); consoleDrawText(6,17," 00000 ox00 1-1 000"); // Wait VBL 'and update sprites too :) ) WaitForVBlank(); // Wait for nothing :) while(1) { // no move currently move = 0; // Refresh pad values scanPads(); // Get current #0 pad pad0 = padsCurrent(0); // Update scrolling with current pad (left / right / jump can combine) if (pad0 & (KEY_RIGHT | KEY_LEFT | KEY_A) ) { if (pad0 & KEY_RIGHT) { moveMario(W_RIGHT); } if (pad0 & KEY_LEFT) { moveMario(W_LEFT); } if (pad0 & KEY_A) { if (mario.jmpval == 0) { // if not currently jumping mario.jmpval = -1000; mario.anim_frame = 1; } } } // down to have small mario else if (pad0 & KEY_DOWN) { mario.anim_frame = 0; } // well, just standing ! else { if (mario.anim_frame != 1) mario.anim_frame = 6; } // Add jumping value if needed if (mario.jmpval != 0) { mario.jmpval += GRAVITY; mario.y += mario.jmpval; // if collide with something under mario, stop jumping //if (isGroundHere() != 0) { if (mario.y >= (96<<8)) { mario.y = 96<<8; mario.jmpval = 0; mario.anim_frame = 6; } } // Now, display mario with current animation oamSet(0, (mario.x>>8), (mario.y>>8), 3, mario.flipx, 0, mario.anim_frame*2, 0); WaitForVBlank(); } return 0; } Quote Share this post Link to post Share on other sites
M0nsieurL 29 Report post Posted April 30, 2012( 04/30/2012 06:09 PM) Cool il me tarde d'avoir la dernière lib en date, en lisant j'arrive même à comprendre le code! Tiens la fonction scanPads() est hors du main? Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted May 1, 2012( 05/01/2012 07:53 AM) En fait, c'est dans le main, regarde bien :) ! De toute façon, tu as maintenant le code source complet ici : http://www.portabledev.com/media/SNES/P ... 00013.html Et la dernière version de la lib sur le wiki : http://www.portabledev.com/wiki/doku.ph ... version_en Tous les exemples sont présentés ici : http://www.portabledev.com/wiki/doku.php?id=examples_en Je suis maintenant en train d'intégrer snesmod mais c'est pas simple, il veut rien savoir de l'init du SPC pour l'instant ... Quote Share this post Link to post Share on other sites
jotakun 0 Report post Posted May 1, 2012( 05/01/2012 01:45 PM) C'est une bonne chose ces lib qui facilite la création! Je sais que la création de la lib passe en premier mais pour une quiche en prog comme moi il faudrait mettre en place un tuto accessible genre le site du zéro :) Quote Share this post Link to post Share on other sites
alekmaul 0 Report post Posted May 1, 2012( 05/01/2012 06:54 PM) ok, je veux bien, mais alors il faut me guider en me précisant exactement comment je dois orienter mes tutos, histoire que je sois pas hors sujet dés le début ... car, avec les exemples fournis avec la lib, je pense que l'on peut avoir un bon aperçu de ce que l'on peut faire :) donc, à toi de me dire ce qu'il te manque pour débuter, surtout que le wiki possède déjà comment installer la lib Quote Share this post Link to post Share on other sites