Outils pour utilisateurs

Outils du site


linux:powermanga

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/*

Liens HTTP

Liens Debian

Liens développement

linux/powermanga.txt · Dernière modification : 2018/09/15 21:18 de bruno