on va commencer par jeter un œil sur le contenu du fichier UNREAL.EXE, comme nous l'avons vu dans l'article précédent, l'index contient 97 fichiers. Sans lister la liste complète, il est intéressant de noter que les assets sont stockés dans un certain ordre: celui des diverses parties.
il est plus facile, sous Linux, d'extraire le loader via la commande dd:
frater@gemini:~/re/unreal# dd bs=1 count=26347 if=UNREAL.EXE of=LOADER.EXE
Nous pouvons ensuite, dans DosBox-X, décompresser le loader, mais ce n'est pas suffisant comme nous allons le voir plus loin.
Nous allons lister les fichiers exécutables:
Nom de Fichier | Taille (bytes) | Compression 1 | Taille (Bytes) | Compression 2 | Tailles (bytes) | Titre / usage |
---|---|---|---|---|---|---|
PART1.EXE | 29.860 | LINK V3.69 /EXEPACK | 42.592 | N/A | 42.592 | Start field + flags “FuturCrew Present Unreal” |
PART99.EXE | 747 | LZEXE V0.91 or V1.00a | 434 | LINK V3.69 /EXEPACK | 1.088 | End Part (Texte Credits) |
PART3.EXE | 17.051 | LZEXE V0.91 or V1.00a | 33.080 | LINK V3.69 /EXEPACK | 86.048 | Sinus Part? |
PART10.EXE | 15.611 | LZEXE V0.91 or V1.00a | 22.264 | LINK V3.69 /EXEPACK | 31.120 | |
PART13.EXE | 21.003 | LZEXE V0.91 or V1.00a | 36.954 | LINK V3.69 /EXEPACK | 61.008 | WormHole, plasma part |
PART16.EXE | 9.691 | LZEXE V0.91 or V1.00a | 14.250 | LINK V3.69 /EXEPACK | 54.050 | |
PART17.EXE | 35.868 | LINK V3.69 /EXEPACK | 75.040 | N/A | 75.040 | |
PART4.EXE | 39.176 | LINK V3.69 /EXEPACK | 109.216 | N/A | 109.216 | ball part ? |
PART18.EXE | 3.339 | LZEXE V0.91 or V1.00a | 3.422 | LINK V3.69 /EXEPACK | 4.752 | |
PART21.EXE | 19.739 | LZEXE V0.91 or V1.00a | 28.412 | LINK V3.69 /EXEPACK | 111.872 | Coke/disk part |
PART95.EXE | 6.811 | LZEXE V0.91 or V1.00a | 9.282 | LINK V3.69 /EXEPACK | 13.344 | |
PARTS.EXE | 11.208 | LINK V3.69 /EXEPACK | 10.928 | N/A | 10.928 | Audio Setup |
PART15.EXE | 120.054 | LINK V3.69 /EXEPACK | 206.042 | N/A | 206.042 | LandScape |
PARTV.EXE | 108.842 | LINK V3.69 /EXEPACK | 131.280 | N/A | 131.280 | Vector Part |
LOADER.EXE | 26.347 | LZEXE V0.91 or V1.00a | 40.144 | LINK V3.69 /EXEPACK | 50.096 | DIS / Music player / Loader |
Les fichiers extraits sont peu parlant, et certains sont même totalement illisibles. Heureusement, il existe un utilitaire unp.exe
, qui sous DOS, permet de décompresser quasi n'importe quelle compresseur d’exécutable.
Les fichiers sont, en grande majorité, compressés via l'utilitaire LZEXE pour réduire la taille totale de la démo, sans devoir compresser les assets, d'autres via l'outil de LINK de microsoft.
Après avoir décompressé les fichiers (via unp.exe), on constate que certains fichiers sont sont plus lourd que les fichiers “sources” (PART99.EXE et PARTS.EXE).
Seuls ceux qui sont uniquement compressé via LINK V3.69 /EXEPACK, ne sont pas compressés deux fois.
La raison de cette double compression n'est pas très clair, car certaines parties sont compressées deux fois avec un résultat “pire” que simplement via la compression LINK (PART99.EXE et PARTS.EXE).
On peut supposer qu'il s'agit ici d'Obscurcissement de la démo, ou simplement un choix d'options de script de compilation par “défaut” (/EXEPACK) suivit d'une compression manuelle (LZEXE).
Il faut encore ajouter le “Loader” qui est contiendrait à la fois le “file system” et le serveur de démo [DIS], qui permet de gérer la mémoire, l'accès aux assets, le player de musique.
Nom de Fichier | Taille L1 (bytes) | Compression L1 | Taille L2 (Bytes) | Compression L2 | Taille L3 (Bytes) | Description |
---|---|---|---|---|---|---|
LOADER.EXE | 26.347 | LZEXE V0.91 or V1.00a | 40.144 | LINK V3.69 /EXEPACK | 50.096 | DIS / Music player / Loader |
Quand on additionne l'ensemble des fichiers extraits (2.372.134 Bytes) et le loader (26.347 Bytes), nous arrivons à un grand totale de 2.398.481 bytes; le fichier “source” UNREAL.EXE ayant une taille de 2.400.825 Bytes; cela fait une différence de 2344 Bytes.
→ On sait, de par la partie 1, que l'index est composé de 97 entrées de 24 Bytes et 12 Bytes de données de “rangement” :
En comparant les tailles des fichiers (exécutables compressés) vs les fichiers décompressés;
UNREAL.EXE | Fichiers extraits | Décompressés |
---|---|---|
2400825 | 2398481 | 2921640 |
Il y a bien une différence de 2344 bytes entres l’exécutable et les fichiers extrait qui corresponds à la FTOC, et une différence de 520815 bytes (en plus) pour l'ensemble des fichiers exécutable décompressés, soit un gain de presque 22%; à l'époque des modem, ce gain n'était pas négligeable…
Outre les fichiers exécutable, on retrouve :
fichiers | nom/extention |
---|---|
20 | .4SR |
2 | .BIN |
1 | ANIM.FCA |
1 | CHISEL.FCF |
1 | MAGICFNT.FCP |
1 | FONT8.FNT |
20 | .GFX |
17 | .PAL |
1 | CREDITS.PLL |
5 | .S3M |
4 | .TXT |
8 | .U |
2 | .UFF |