Table des matières
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 Powermanga sur SourceForge existe depuis le 12 février 2001. Et les sources sont versionnées sur un dépôt Subversion depuis 2012. Le code source de Powermanga est disponible sous 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 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 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/*