====== 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]]