====== Powermanga ======
===== Compiler le logiciel Powermanga =====
Powermanga est un jeu vidéo de type shoot them up développé par la société TLK Games. Le jeu était un partagiciel développé en langage C et en assembleur Intel sous MS-DOS finalisé sous Windows 95 et DirectX. Un portage des sources Windows sous Linux a débuté en août 1998 et une version sous GNU GPL version 2 fut diffusée sous Linux en novembre 2000.
Un projet [[https://sourceforge.net/projects/powermanga/|Powermanga]] sur SourceForge existe depuis le 12 février 2001. Et les [[http://sourceforge.net/p/powermanga/code/HEAD/tree/|sources sont versionnées sur un dépôt Subversion]] depuis 2012. Le code source de Powermanga est disponible sous [[http://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_GNU|GNU GPL version 3]] depuis septembre 2007.
==== Installer les dépendances ====
L'installation de quelques logiciels est nécessaire pour compiler Powermaga. Sous Ubuntu 12.04 les paquets suivants doivent être installés :
aptitude install subversion gcc automake libsdl1.2-dev libsdl-mixer1.2-dev colorgcc
Sur Mageia 3
urpmi subversion gcc automake libSDL_mixer-devel
==== Récupérer les sources depuis le dépôt Subversion ===
Avec le compte anonyme :
svn checkout svn://svn.code.sf.net/p/powermanga/code/trunk powermanga-code
Ou avec un compte utilisateur enregistré chez [[http://sourceforge.net/|SourceForge]], par exemple le compte « //gurumeditation// » :
svn checkout --username=gurumeditation svn+ssh://gurumeditation@svn.code.sf.net/p/powermanga/code/trunk powermanga-code
==== Compiler le logiciel Powermanga ====
export CC="colorgcc"
cd powermanga
./bootstrap
./configure
make
# Le ludiciel peut-être lancé directement depuis son répertoire
ln -s src/powermanga .
./powermanga
===== Les sprites de Powermanga =====
Powermanga est un jeu vidéo utilisant des éléments graphiques appelés [[http://fr.wikipedia.org/wiki/Sprite_%28jeu_vid%C3%A9o%29|sprite]].
Les sprites sont sauvegardés sous la forme de fichiers binaires portant l'extension « *.spr » dans le répertoire « graphics ».
Ces fichiers binaires « *.spr » qui ne sont absolument pas standards sont dans un format spécifique au logiciel Powermanga.
Il existe deux formats de fichiers. Le premier format que nous appellerons //image// et le deuxième format que nous appellerons //bitmap//.
Les deux format contiennent les pixels du sprite, un pixel étant représenté par un octet les sprites sont donc en 256 couleurs.
Alors que le format //bitmap// contient uniquement les pixels du sprite, le format //image// contient contient quelques informations
supplémentaires comme des points et des zones de collision et des positions de canons.
==== Liste des fichiers graphiques ====
=== Les fichiers sprites de type « image » ===
* //sprites/all_enemies.spr// :
* 21 petits ennemis de 40 images chacun.
* 21 //bloodsuckers// de 8 images chacun.
* 40 //lonely foes// et 8 objets spécials de 32 images chacun.
* //sprites/all_shots.spr// : 78 tirs de 32 images chacun.
* //sprites/bonus_gems.spr// : 6 gemmes de 32 images chacune.
* //sprites/energy_gauge_red.spr// : une image pour composer la jauge des vaisseaux du joueur et des gardiens.
* //sprites/energy_gauge_green.spr// : une image pour composer la jauge des vaisseaux du joueur et des gardiens.
* //sprites/energy_gauge_blue.spr// : une image pour composer la jauge des vaisseaux du joueur et des gardiens.
* //sprites/explosion_fragments.spr// : 5 fragments d'explosions de 32 images chacun.
* //sprites/explosions.spr// : 3 types d'explosion de 32 images chacune.
* //sprites/extra_guns.spr// : 5 types de cannons de 16 images chacun (canons à gauche et à droite du vaisseau).
* //sprites/guardians/guardian_00.spr// à //sprites/guardians/guardian_13.spr//
* //sprites/meteors/meteor_00.spr// à //sprites/meteors/meteor_42.spr// : 43 fichiers.
* Chaque fichier contient trois types de météorites de 32 images chacune
* //sprites/satellite_protections.spr// : 5 types satellites de protection du vaisseau de 16 images chacun.
* //sprites/spaceships/spaceship_1_frame_0.spr// à //sprites/spaceships/spaceship_1_frame_4.spr// : 5 fichiers des 5 images du vaisseau 1.
* //sprites/spaceships/spaceship_2_frame_0.spr// à //sprites/spaceships/spaceship_2_frame_4.spr// : 5 fichiers des 5 images du vaisseau 2.
* //sprites/spaceships/spaceship_3_frame_0.spr// à //sprites/spaceships/spaceship_3_frame_4.spr// : 5 fichiers des 5 images du vaisseau 3.
* //sprites/spaceships/spaceship_4_frame_0.spr// à //sprites/spaceships/spaceship_4frame_4.spr// : 5 fichiers des 5 images du vaisseau 4.
* //sprites/spaceships/spaceship_5_frame_0.spr// à //sprites/spaceships/spaceship_5_frame_4.spr// : 5 fichiers des 5 images du vaisseau 5.
* //sprites/stars/star_little_0.spr// à //sprites/stars/star_little_7.spr// 8 fichiers de 8 petites étoiles (fond étoilé).
* //sprites/stars/star_middle_0.spr// à //sprites/stars/star_middle_7.spr// 8 fichiers de 8 moyennes étoiles (fond étoilé).
* //sprites/stars/star_big_0.spr// à //sprites/stars/star_big_7.spr// 8 fichiers de 8 grosses étoiles (fond étoilé).
* //sprites/stars/star_spaceship_0.spr// à //sprites/stars/star_spaceship_7.spr// 8 fichiers de 8 étoiles du vaisseaux (invincibilité du vaisseau).
=== Les fichiers sprites de type « bitmap » ===
* //bitmap/main_menu.spr : Les quatre items du menu principal, de 32 images chacun
* //bitmap/options_panel_anims.spr :
* //bitmap/scores_multiplier.spr :
* //bitmap/tlk_games_logo.spr :
* //bitmap/fonts/font_big.spr :
* //bitmap/fonts/font_game.spr :
* //bitmap/fonts/font_score.spr :
* //bitmap/fonts/font_scrolltext.spr :
=== Correspondances fichiers graphiques et fichiers sources ===
^Nom du fichier graphique ^ Nom du fichier source ^ Nom de la fonction d'exportation ^
| sprites/all_enemies.spr | enemies.c | enemies_extract() |
| sprites/all_shots.spr | shots.c | shots_extract() |
| sprites/bonus_gems.spr | bonus.c | bonus_extract() |
| sprites/energy_gauge_red.spr | energy_gauge.c | energy_gauge_extract() |
| sprites/energy_gauge_green.spr | energy_gauge.c | energy_gauge_extract() |
| sprites/energy_gauge_blue.spr | energy_gauge.c | energy_gauge_extract() |
| sprites/explosion_fragments.spr | explosions.c | explosions_extract() |
| sprites/explosions.spr | explosions.c | explosions_extract() |
| sprites/extra_guns.spr | extra_gun.c | guns_extract() |
| sprites/guardians/guardian_00.spr à sprites/guardians/guardian_13.spr | guardians.c | guardians_extract() |
| sprites/meteors/meteor_00.spr à sprites/meteors/meteor_42.spr | meteors_phase.c | meteors_extract() |
| sprites/satellite_protections.spr | satellite_protections.c | satellite_extract() |
| sprites/spaceships/spaceship_1_frame_0.spr à sprites/spaceships/spaceship_1_frame_4.spr | spaceship.c | spaceship_extract() |
| sprites/spaceships/spaceship_2_frame_0.spr à sprites/spaceships/spaceship_2_frame_4.spr | spaceship.c | spaceship_extract() |
| sprites/spaceships/spaceship_3_frame_0.spr à sprites/spaceships/spaceship_3_frame_4.spr | spaceship.c | spaceship_extract() |
| sprites/spaceships/spaceship_4_frame_0.spr à sprites/spaceships/spaceship_4_frame_4.spr | spaceship.c | spaceship_extract() |
| sprites/spaceships/spaceship_5_frame_0.spr à sprites/spaceships/spaceship_5_frame_4.spr | spaceship.c | spaceship_extract() |
| sprites/stars/star_little_0.spr à sprites/stars/star_little_7.spr | starfield.c | starfield_extract() |
| sprites/stars/star_middle_0.spr à sprites/stars/star_middle_7.spr | starfield.c | starfield_extract() |
| sprites/stars/star_big_0.spr à sprites/stars/star_big_7.spr | starfield.c | starfield_extract() |
| sprites/stars/star_spaceship_0.spr à sprites/stars/star_spaceship_7.spr | starfield.c | starfield_extract() |
^Nom du fichier graphique ^ Nom du fichier source ^ Nom de la fonction d'exportation ^ Taille en pixels ^
| bitmap/main_menu.spr | menu.c | menu_extract() | 192 x 31 |
| bitmap/options_panel_anims.spr | options_panel.c | options_extract() | 28 x 28 |
| bitmap/scores_multiplier.spr | options_panel.c | options_extract() | 14 x 8 |
| bitmap/tlk_games_logo.spr | inits_game.c | tlk_games_logo_extract() | 82 x 58 (estimation)|
| bitmap/fonts/font_big.spr | sprites_string.c | sprites_font_extract() | 16 x 16 (estimation)|
| bitmap/fonts/font_game.spr | sprites_string.c | sprites_font_extract() | 32 x 26 (estimation)|
| bitmap/fonts/font_score.spr | sprites_string.c | sprites_font_extract() | 16 x 16 |
| bitmap/fonts/font_scrolltext.spr | scrolltext.c | scrolltext_extract() | 20 x 21 (estimation)|
==== Fonctions d'extractions des fichiers sprites ====
Toutes les fonctions de lecture et de décompression des fichiers sprites sont dans le fichier source « //images.c// ».
* bool image_load (const char *fname, image * img, Uint32 num_of_sprites, Uint32 num_of_anims)
* char * images_read (image * img, Uint32 num_of_sprites, Uint32 num_of_anims, char *addr, Uint32 max_of_anims)
* char * image_extract (image * img, const char *file)
* char * read_pixels (Uint32 numofpixels, char *source, char *destination)
* char * read_compress (Uint32 filesize, char *filedata, char *destination)
* bool image_load_num (const char *fname, Sint32 num, image * img, Uint32 num_of_sprites, Uint32 num_of_anims)
* char * images_read (image * img, Uint32 num_of_sprites, Uint32 num_of_anims, char *addr, Uint32 max_of_anims)
* char * image_extract (image * img, const char *file)
* char * read_pixels (Uint32 numofpixels, char *source, char *destination)
* char * read_compress (Uint32 filesize, char *filedata, char *destination)
* bool bitmap_load (const char *fname, bitmap * fonte, Uint32 num_of_obj, Uint32 num_of_images)
* char * bitmap_read (bitmap * bmp, Uint32 num_of_obj, Uint32 num_of_images, char *addr, Uint32 max_of_anims)
* char * bitmap_extract (bitmap * bmp, char *filedata)
* char * read_pixels (Uint32 numofpixels, char *source, char *destination)
* char * read_compress (Uint32 filesize, char *filedata, char *destination)
===== Arborescence des paquets =====
Pour extraire les fichiers d'un paquet RPM :
rpm2cpio powermanga-0.93-1.2.x86_64.rpm | cpio -idmv
==== Comparaison des chemins des fichiers sous différentes distributions ====
^Debian ^Fedora ^Mageia ^OpenSuse ^
|/usr/games/powermanga |/usr/bin/powermanga |/usr/games/powermanga |/usr/lib/powermanga/powermanga |
|/usr/share/games/powermanga/data |/usr/share/powermanga/data |/usr/share/games/powermanga/data |/usr/lib/powermanga/data |
|/usr/share/games/powermanga/graphics |/usr/share/powermanga/graphics |/usr/share/games/powermanga/graphics |/usr/lib/powermanga/graphics |
|/usr/share/games/powermanga/sound |/usr/share/powermanga/sound |/usr/share/games/powermanga/sound |/usr/lib/powermanga/sound |
|/usr/share/games/powermanga/sounds |/usr/share/powermanga/sounds |/usr/share/games/powermanga/sounds |/usr/lib/powermanga/sound |
|/usr/share/games/powermanga/texts |/usr/share/powermanga/texts |/usr/share/games/powermanga/texts |/usr/lib/powermanga/texts |
|/usr/share/applications/powermanga.desktop|/usr/share/applications/powermanga.desktop|/usr/share/applications/powermanga.desktop|/usr/share/applications/powermanga.desktop|
|/usr/share/pixmaps/powermanga.xpm |- |- |/usr/share/pixmaps/powermanga.png |
|/usr/share/menu/powermanga |- |- |- |
|/usr/share/man/man6/powermanga.6.gz |/usr/share/man/man6/powermanga.6.gz |/usr/share/man/man6/powermanga.6.xz |/usr/share/man/man6/powermanga.6.gz |
==== Arborescence du paquet OpenSuse ====
* /usr/bin/powermanga (POSIX shell script)
* /usr/lib/powermanga/data/*
* /usr/lib/powermanga/data/curves/*
* /usr/lib/powermanga/data/levels/*
* /usr/lib/powermanga/graphics/*
* /usr/lib/powermanga/order/*
* /usr/lib/powermanga/sounds/*
* /usr/lib/powermanga/texts/*
* /usr/lib/powermanga/powermanga (ELF 64-bit)
* /usr/share/applications/powermanga.desktop
* /usr/share/doc/packages/powermanga/*
* /usr/share/icons/hicolor/*
* /usr/share/man/fr/man6/powermanga.6.gz
* /usr/share/man/man6/powermanga.6.gz
* /usr/share/pixmaps/powermanga.png
* /var/games/powermanga/*
===== Liens HTTP =====
* [[http://sourceforge.net/projects/powermanga/|Powermanga sur SourceForge.net]]
* [[https://fr.wikipedia.org/wiki/Powermanga|Powermanga sur Wikipédia]]
* [[http://www.linuxpedia.fr/doku.php/powermanga#liens_sources|Powermanga sur LinuxPedia]]
* [[https://aur.archlinux.org/packages/powermanga/|Le paquet Powermanga Arch Linux]]
* [[http://www.lgdb.org/game/powermanga|Powermanga sur Linux game database]]
* [[https://libregamewiki.org/Powermanga|Powermanga sur Libregamewiki]]
* [[https://apps.fedoraproject.org/packages/powermanga|Paquet Fedora de Powermanga]]
==== Liens Debian ====
* [[https://packages.debian.org/sid/powermanga|Le paquet Debian de Powermanga]]
* [[http://lists.alioth.debian.org/pipermail/pkg-games-devel/2012-August/023907.html|Powermanga 0.91 is available on pkg-games-devel at lists.alioth.debian dot org]]
* [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=734438|Debian Bug report logs - #734438
powermanga: New upstream release 0.91]]
* [[http://lists.alioth.debian.org/pipermail/pkg-games-devel/2014-August/031867.html|Powermanga : new upstream release (version 0.92) on pkg-games-devel at lists.alioth.debian dot org]]
* [[http://lists.alioth.debian.org/pipermail/pkg-games-devel/|The Pkg-games-devel Archives]]
==== Liens développement ====
* [[http://linuxfr.org/news/occupez-votre-ete-contribuez-a-un-jeu-libre|Occupez votre été : contribuez à un jeu libre]]
* [[http://devnewton.bci.im/fr/gamepad_db|La base de données des manettes de jeu]]
* [[https://hg.libsdl.org/SDL/file/default/include/SDL_gamecontroller.h|SDL_gamecontroller.h]]