:: PlayerAdvance.org ::  

Précédent   :: PlayerAdvance.org :: > :: Forums Hébergés :: > OldSchool Library > Ressources

Ressources OSLib, extension, modifications...

Publicité

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 22/01/2006, 14h39   #1
Brunni
Super Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
Par défaut Librairie OSLib


Présentation :

Bonjour tout le monde

Je vous présente le projet sur lequel je bosse depuis quelques temps: une librairie pour PSP. La première pre-release est enfin sortie, et la librairie est plus ou moins complète (il manque encore des trucs comme la lecture mod, vidéo, etc.)

Comme son nom l'indique (OldSchool Library), cette librairie vous permettra de faire de jolis jeux et démos tout en profitant de la puissance de la console. En plus, la librairie est complètement accélérée en hardware, donc finis les ramages après trois sprites qui se courent après!

Il y a de quoi dessiner des lignes, rectangles, dégradés à quatre coins, images étirées, en rotation, en alpha-blend, etc. Il y a également des fonctions de gestion du joypad et stick analogique. La librairie inclut également une section son, qui peut jouer des sons en .wav et .bgm, avec la possibilité de streamer les sons depuis la MemoryStick.

La librairie est écrite en C histoire d'être compatible avec tous les projets, mais ça la rend un peu moins pratique. Elle est rapide et ne prend pas le contrôle sur votre application: elle effectue des opérations bien définies, un peu comme les fonctions de base que vous devez de toutes façons écrire pour le moteur de votre jeu.

Comment utiliser :

Pour l'installation, modifiez le batch pour que la ligne suivante pointe sur l'installation de cygwin:
set CYGWINDIR=C:\cygwin

Autres informations :

Des exemples peuvent être téléchargés ici:
http://oslib.palib.info/samples/

Merci d'avance pour vos commentaires.

Dernière modification par Brunni ; 01/12/2007 à 15h32.
Brunni est déconnecté   Réponse avec citation

Publicité

Vieux 22/01/2006, 14h44   #2
Japi
Membre confirmé
 
Date d'inscription: 14/12/2005
Messages: 558
Par défaut

Genial Brunni, comme d'hab j'allais dire

Dommage que j'ai pas de psp pour m'amuser avec ça.
Japi est déconnecté   Réponse avec citation
Vieux 22/01/2006, 15h11   #3
Yodajr
Administrateur
 
Date d'inscription: 09/11/2005
Messages: 3 750
Par défaut

Génial !
Woaw

Franchement merci Brunni, j'attendais une lib PSP, mais bzouing quoi, Mollusk qui fait une lib DS, Brunni une lib PSP, bordel mais vive PA

Je reconnais bien ton style au niveau du fichier d'aide
J'men vais tester ça, fichues journées de 24H

scusez le manque de vocabulaire de ce post
Yodajr est déconnecté   Réponse avec citation
Vieux 22/01/2006, 15h19   #4
DJP
Bitchy Little Girl...
 
Date d'inscription: 29/10/2005
Messages: 3 201
Par défaut

Je vais attendre un peu (d'avoir fini ce que j'ai a faire...) avant de passer à la PSP, mais en tout cas c'est déjà un bonheur d'imaginer utiliser cette belle grosse resolution
__________________

>> On garde :: On améliore :: On kill <<
DJP est déconnecté   Réponse avec citation
Vieux 22/01/2006, 15h27   #5
Brunni
Super Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
Par défaut

Merci, mais non c'est pas le but que vous abandonniez la GBA & DS
D'ailleurs vous verrez le style de prog est très différent de ces consoles, mais les deux sont sympa
Citation:
Je reconnais bien ton style au niveau du fichier d'aide
Lol je sais c'est pas très fourni et il n'y a même pas de table des matières, mais ça viendra
Par contre, je fais des fois de petites updates sans forcément prévenir. Je l'ai déjà fait deux fois depuis le post d'ailleurs.

Dernière modification par Brunni ; 05/03/2006 à 17h27.
Brunni est déconnecté   Réponse avec citation
Vieux 22/01/2006, 17h20   #6
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

Meme si j'ai pas encore pu tester, faudra que je regarde ca mais c'est clair que ca a l'air terrible !
Mollusk est déconnecté   Réponse avec citation
Vieux 22/01/2006, 17h38   #7
Yodajr
Administrateur
 
Date d'inscription: 09/11/2005
Messages: 3 750
Par défaut

Donc Brunni, si j'ai bien compris, si veux afficher des "sprites", j'affiche autant d'images PNG que necessaire ?

Et aussi, vu que tu code sur PSP, je me demandais si tu utilisais PSPOss ? car à ce que j'ai pu en voir, il a l'air assez pratique pour nous : l'usb activé en permanence, des racourcis vers le applis sur le "bureau" et surtout plus de vidéo de lancement (le truc PSP sur fond blanc qui prend 2H sur une 1.5 )

Dernière modification par Yodajr ; 22/01/2006 à 17h46.
Yodajr est déconnecté   Réponse avec citation
Vieux 22/01/2006, 18h13   #8
Brunni
Super Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
Par défaut

J'ai essayé avec FileAssistant++ et il n'y a pas d'écran PSP mais c'est lent quand même (il faut bien laisser le temps à ton jeu jeu de se charger depuis la MS...), donc en fait tu ne gagnes pas grand chose...
Pour les sprites c'est bien comme ça qu'il faut faire
D'ailleurs une map est une aussi série de petits sprites

Dernière modification par Brunni ; 24/01/2006 à 10h53.
Brunni est déconnecté   Réponse avec citation
Vieux 27/01/2006, 18h16   #9
Yodajr
Administrateur
 
Date d'inscription: 09/11/2005
Messages: 3 750
Par défaut

Vala comme convenu mes questions

Vala en fait: je ne comprend pas la partie graphique.
Ou plus précisement, comment fait tu pour obtenir ce résultat (la map) ?

Voila ce que j'ai compris en faisant le parralèle avec mes connaissances en prog GBA/HAM :
Déja il ne semble pas y avoir de palettes à charger (tant mieux ou pas, on s'en fou un peu pour l'instant)
Puis tu charge le tileset, qui n'est plus un fichier C comme j'ai l'habitude, mais un fichier PNG normal.
Et enfin tu crèe la map en utilisant le tileset et le fichier map, qui lui est toujours en C
Bon jusque la ca va, sauf que je ne sait pas comment reproduire ca avec ma propre map

Vala la question : comment toi tu fait ? surtout ce fichier PNG, d'ou sort il ? tu utilise donc un autre éditeur de map que GBA Graphics ? Ou alors j'ai raté une option dans GG ?

2eme thème : les touches.
Dans ton exemple, tu appelle oslReadKeys(); au milieu du code, après les tests des boutons et avant le test du joystick... il y a une raison spéciale ou c'est un oubli/hasard ?

Vala c'est tout... et installe VS c++, ca vaux vraiment le coup
Yodajr est déconnecté   Réponse avec citation
Vieux 27/01/2006, 18h22   #10
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

Je crois qu'il ne faut pas faire de parallèle avec le dev gba/DS
Mollusk est déconnecté   Réponse avec citation
Vieux 27/01/2006, 23h09   #11
Yodajr
Administrateur
 
Date d'inscription: 09/11/2005
Messages: 3 750
Par défaut

Vi, mais bon je connais que ça
Yodajr est déconnecté   Réponse avec citation
Vieux 27/01/2006, 23h10   #12
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

C'est pour ca qu'il nous a fait cette lib
Mollusk est déconnecté   Réponse avec citation
Vieux 28/01/2006, 00h55   #13
Brunni
Super Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
Par défaut

* Bon déjà tu me l'avais demandé dans le MP, le fait que les ressources soient des fichiers et non du code provient d'une différence fondamentale entre la GBA/DS et la PSP. Il faut savoir que sur PSP, on ne peut pas lire directement sur la Memory Stick; lorsqu'on le fait c'est par blocs et c'est ultra lent, contrairement à la GBA où on a directement accès à toute la cartouche.
On est donc obligé de charger en RAM tout ce qu'on veut utiliser, y compris notre "ROM" (jeu), qui est chargé entièrement par la PSP au démarrage. C'est pourquoi on doit faire en sorte qu'il soit le plus petit possible, parce que toute la place prise par le code réduit en même temps la RAM disponible (déjà pas grande à la base).
Si j'inclus mon image ou ma map au code, elle sera rajoutée au jeu, résultat ça va plomber la RAM pour rien, même si on n'aurait pas forcément besoin du tileset "feu" dans un niveau de glace par exemple
Pour ça, on utilise les fichiers, car ils sont sur la MS, mais on les charge en RAM à la demande. C'est plus lent (loading powaa...), mais au moins on peut limiter au max la RAM utilisée.

* Pour la map, ce sont des sprites. Actuellement elle est implémentée de façon optimisée donc ça ne sert à rien que je te copie le code parce que tu y comprendras encore moins qu'avant
Mais tu peux prendre directement une map de GBA Graphics, à l'avenir ce sera un fichier à charger. Je peux essayer de te développer une routine simple étape par étape pour voir. Imaginons que tu as trois tiles, une vide (0), une avec de l'eau (1) et une avec un bout de terre (2). Pour simplifier elles sont dans trois images différentes. Ensuite tu as un tableau qui définit où sont les différentes tiles, exemple:
Code:
const unsigned short mamap[5][5]=  {
  {0,0,0,0,0},
  {0,2,2,2,0},
  {1,1,1,1,1},
  {1,1,1,1,1},
  {1,1,1,1,1}
};
C'est ça une map. Après il suffit d'afficher les bonnes tiles au bon endroit. Exemple, si on a trois images, on peut les dessiner ainsi:
Code:
for (y=0;y<5;y++)
  for (x=0;x<5;x++)    {
     //Pour chaque bloc du tableau, on le dessine à l'écran aux positions * 8 (une tile fait 8x8)
     if (mamap[y][x] == 0)
        oslDrawImageXY(x*8, y*8, image0);
     else if (mamap[y][x] == 1)
        oslDrawImageXY(x*8, y*8, image1);
     else if (mamap[y][x] == 2)
        oslDrawImageXY(x*8, y*8, image2);
  }
Résultat tu remplis tout ton écran à coup de 8x8, et t'as une map. La différence ici c'est qu'on peut appeler:
oslSetImageTileSize( image, x, y, largeur, hauteur);
Pour définir quelle partie de l'image on dessine. Par exemple si on a une image de 128x128 qui contient 16 sprites de 32 par 32, on peut afficher le premier ainsi:
Code:
oslSetImageTileSize(image, 0, 0, 32, 32);
oslDrawImageXY(0,0, image);
Puis le quatrième, tout en haut à droite:
Code:
oslSetImageTileSize(image, 96, 0, 32, 32);
oslDrawImageXY(0,0, image);
Ca veut dire qu'on dessine un sprite de 32x32 contenu dans l'image à partir de la position 0,0 (et 96,0 pour le deuxième).

* GBA Graphics ne supporte pas la PSP actuellement, par contre je le recoderai peut-être complètement à l'occas, parce qu'il se fait vieux. Pour le moment je convertis le tileset et la map avec GBA Graphics et après je choisis mon tileset et je fais Ctrl+C (copier l'aperçu) et je le mets dans un fichier PNG, mais c'est mauvais parce qu'on perd un peu de qualité.

* Pour les touches c'est une erreur, je ne devrais pas les utiliser avant oslReadKeys

Pour les maps, le principe n'a rien à voir avec la GBA, tu ne copie pas une map ou palette quelque part, tu fais appel à une fonction qui dessine ta map. En fait c'est un peu le mode 3 avec encore moins de choses: pas de palette, pas de maps, pas de sprite (contrairement à la GBA), rien du tout, juste un grand écran vide.
Après tu commences à dessiner calmement ton écran, en faisant appel aux fonctions de dessin de sprites et autres. Le fait de dessiner successivement des sprites et des maps les uns sur les autres donne le même rendu que sur la GBA: les plans qui sont dessinés en dernier seront en avant puisqu'ils écrasent ceux de derrière.
Pour les maps, laisse moi un peu de temps, là c'est un peu foireux parce que je ne peux pas les intégrer à GBA Graphics, mais essaie de comprendre les principes de ce style de "dessin libre" sur l'écran, en dessinant des sprites par exemple. Tu devrais même pouvoir écrire ta propre routine de maps une fois que tu as compris le principe, donc pas besoin de la mienne

N'hésite pas à demander plus de choses si tu es bloqué...

Dernière modification par Brunni ; 28/01/2006 à 00h57.
Brunni est déconnecté   Réponse avec citation
Vieux 28/01/2006, 01h10   #14
Yodajr
Administrateur
 
Date d'inscription: 09/11/2005
Messages: 3 750
Par défaut

Merci merci, ca s'éclaircit un peu
C'est sur que j'aurais pas réussi à piger ça rien qu'en regardant le code

Prochain objectif : afficher (soyont fous) plusieurs map et simuler un paralax

PS : ne tiens pas compte de la derniere phrase de mon MP
Yodajr est déconnecté   Réponse avec citation
Vieux 28/01/2006, 09h47   #15
Nesgba
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 830
Par défaut

salut, bravo brunni pour tes travaux, ca permet de voir comment maitriser la bete.
si il existai un emulateur je m'y mettrai bien mais malheureusement ce n'est pas le cas .
j'adore le fait d'avoir un ecran vide ou tu fait tout toi meme de A a Z c'est trop cool
brunni en ce qui concerne la 3D tu as testé un peu ou pas ?

a titre d'information (bien entendu ) esque le devkit officiel psp est en circulation sur le net ? et esqu'il comprend un pseudo-emulateur ?

edit: #define RGBA16(r,v,b,a) ((((b)>>3)<<11) | (((v)>>2)<<5) | ((r)>>3)) un "a" de trop la non ?

Dernière modification par Nesgba ; 28/01/2006 à 09h56.
Nesgba est déconnecté   Réponse avec citation
Vieux 28/01/2006, 10h19   #16
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

alpha, non ?
Mollusk est déconnecté   Réponse avec citation
Vieux 28/01/2006, 10h30   #17
Nesgba
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 830
Par défaut

Citation:
Envoyé par Mollusk
alpha, non ?
oui mais... il sert a quoi dans la cas present ?
Nesgba est déconnecté   Réponse avec citation
Vieux 28/01/2006, 10h31   #18
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

peut-etre que dans d'autres macros il sert, donc il est mis pour 'harmoniser' les macros en demandant toujours la meme chose
Mollusk est déconnecté   Réponse avec citation
Vieux 28/01/2006, 10h43   #19
Nesgba
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 830
Par défaut

Citation:
Envoyé par Mollusk
peut-etre que dans d'autres macros il sert, donc il est mis pour 'harmoniser' les macros en demandant toujours la meme chose
non il en a d'autres qui n'ont que 3 valeurs donc c'est pas une question d'harmonie (echec ... et mat ?)
Nesgba est déconnecté   Réponse avec citation
Vieux 28/01/2006, 11h12   #20
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

lol, pas faux (j'ai pas regardé, ce n'était que des suppositions...)

Bon, 1 point pour toi, cette fois-ci c'est toi ou moi qui cherche un topic où se fighter ?
Mollusk est déconnecté   Réponse avec citation
Vieux 28/01/2006, 11h38   #21
Nesgba
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 830
Par défaut

Citation:
Envoyé par Mollusk
lol, pas faux (j'ai pas regardé, ce n'était que des suppositions...)

Bon, 1 point pour toi, cette fois-ci c'est toi ou moi qui cherche un topic où se fighter ?
hehe t'imagine -> "ah comment ca ma routine n'est pas optimisée !! tu fais le malin ?!! je te provoque au quizz codage ce soir a 21h !!!!"
Nesgba est déconnecté   Réponse avec citation
Vieux 28/01/2006, 13h35   #22
Brunni
Super Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
Par défaut

C'est effectivement pour harmoniser, pour que chaque routine ait une version RGB et RGBA (après si c'est inutile on s'en fout)
Donc en 16 le A sert à rien, ça revient au même que RGB, mais en 12 par exemple:
#define RGB12(r,v,b) ((((b)>>4)<<8) | (((v)>>4)<<4) | ((r)>>4))
#define RGBA12(r,v,b,a) ((((a)>>4)<<12) | (((b)>>4)<<8) | (((v)>>4)<<4) | ((r)>>4))
Par contre là je vais l'enlever, ça évitera de croire qu'on a un canal alpha en mode 16 bits...

Sinon voici un petit tutorial pour ceux qui viennent de la GBA (doc/debut.htm), inclus au nouveau zip: http://membres.lycos.fr/brunni/OSLib.zip (clic droit enregistrer sous)
Désolé de le mettre sur lycos mon compte sur infernobox ne marche plus Si quelqu'un connait un meilleur hébergement gratuit, je suis preneur, parce que lycos...
Brunni est déconnecté   Réponse avec citation
Vieux 28/01/2006, 13h47   #23
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

Bah je peux t'offrir un hébergement, mais ca sera sur palib.info... donc si ca te dérange pas je t'ouvre un acès ftp dessus

Et vlan le Nes, un point pour Momo...
Mollusk est déconnecté   Réponse avec citation
Vieux 28/01/2006, 14h00   #24
Nesgba
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 830
Par défaut

IWRAM ou pas ? la ram quelle taille ? vitesse de transfert ram->cpu ? quel compillateur ? le code généré est optimisé ? tu aime le chocolat ? plottage par 2 ou 3 possible par le hard ?

Nesgba est déconnecté   Réponse avec citation
Vieux 28/01/2006, 14h58   #25
Yodajr
Administrateur
 
Date d'inscription: 09/11/2005
Messages: 3 750
Par défaut

Citation:
Envoyé par Nesgba
tu aime le chocolat ?
Trop dure les questions de nes, j'vous jure ma ptite dame

Et stop le hors sujet, il faut que je me concentre pour mon parallax
Yodajr est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Publicité



Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 02h20.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd. Tous droits réservés.
Version française #16 par l'association vBulletin francophone
Design par Ass-Itch, DJP et Dr.Vince