— ANNÉE MMXXVI —OBEY

THE MISTERY EXAMINER

JOURNAL DES CURIOSITÉS TECHNIQUES & RÉCITS DIVERS
← Retour au sommaire
Electranoid · Pixel Painters Corp, 1994

ELECTRANOID - Anatomie de l'archive RES (2026)

Illustration : ELECTRANOID - Anatomie de l'archive RES
Fig. 1 — ELECTRANOID - Anatomie de l'archive RES

ENOID.RES est une archive qui regroupe toutes les ressources du jeu - images, sons, niveaux, textes - en un seul fichier. C'est une table d'index suivie du contenu brut des fichiers, mis bout à bout. Voici son anatomie exacte.

⊹˚₊‧───────────────‧₊˚⊹

Fichier : ENOID.RES · Taille : 167 724 octets · Entrées : 39 fichiers

⊹˚₊‧───────────────‧₊˚⊹

Le programme est écrit avec les outils de Borland, les strings sont donc toutes préfixées par leur longueur.

01 - Trois zones

Le fichier tient en trois blocs consécutifs : un en-tête de 2 octets, une table d'index, puis le contenu de chaque fichier, concaténé sans séparateur ni padding.

Structure de l'archive (167 724 octets)
┌───────────┬────────────────┬─────────────────────────────────────────────────┐
│  Header   │ Table d'index  │              Contenu des fichiers               │
│    2 o    │     858 o      │                    166 864 o                    │
│ NbEntries │ 39 × 22 octets │             39 fichiers concaténés              │
└───────────┴────────────────┴─────────────────────────────────────────────────┘
0           2                860                                  167 724 (EOF) 

Le premier Offset de la table (860) pointe exactement à la fin de la table d'index.

Header - les 2 premiers octets du fichier

27
00

0x0027 en little-endian = 39NbEntries, le nombre total d'entrées de l'archive.

⊹˚₊‧───────────────‧₊˚⊹

02 - Une entrée d'index, 22 octets

Juste après le header, NbEntries enregistrements consécutifs de taille fixe, un par fichier contenu dans l'archive. Voici l'entrée n°0 telle qu'elle apparaît dans ENOID.RES, décrivant TITLE00.SPF - le tout premier fichier de l'archive.

Entrée d'index n°0 - octets 2 à 23

0B
54
49
54
4C
45
30
30
2E
53
50
46
00
5C
03
00
00
06
0D
00
00
02
FilenameLength(1 o)
Filename(12 o)
Offset(4 o)
Size(4 o)
FileType(1 o)

Décodage de cette entrée

0x0b = 11 → nom sur 11 caractères utiles → "TITLE00.SPF" + 1 octet de padding à zéro → Offset = 0x0000035c = 860Size = 0x00000d06 = 3334FileType = 0x02 (binaire). Le contenu de TITLE00.SPF se trouve donc exactement aux octets 860 → 4193 de l'archive.

ChampTypeDescription
FilenameLengthByteLongueur réelle du nom de fichier.
Filenamechar[12]Nom de fichier 8.3 DOS, majuscules.
OffsetDwordPosition absolue du contenu dans l'archive, depuis le tout début du fichier .RES.
SizeDwordTaille du contenu en octets.
FileTypeByteConstant par type : 0x02 (binaire) ou 0x01 (.TXT).

03 - Les 39 entrées de ENOID.RES

Catalogue complet, dans l'ordre physique de l'archive.

#NomOffsetTailleType
1TITLE00.SPF8603 334 ospf
2TITLEBK.SPF4 1941 763 ospf
3BACK000.SPF5 9572 369 ospf
4BACK001.SPF8 3261 644 ospf
5BACK002.SPF9 9701 786 ospf
6BACK003.SPF11 7561 720 ospf
7BACK004.SPF13 4761 678 ospf
8SB_MAIN.FMF15 1545 088 ofmf
9TITLENM.SPF20 24210 977 ospf
10PLAYFRM.SPF31 2193 455 ospf
11PLAYDROP.MPF34 67415 871 ompf
12SB_PLAY0.FMF50 5452 514 ofmf
13PLAYWIN.SPF53 0597 490 ospf
14PC_PLAY0.FMF60 549789 ofmf
15PC_MAIN.FMF61 3381 405 ofmf
16GAMELET.ANI62 74350 741 oani
17BACK005.SPF113 4841 778 ospf
18BACK006.SPF115 2622 332 ospf
19BACK007.SPF117 5941 821 ospf
20BACK008.SPF119 4151 787 ospf
21BACK009.SPF121 2021 656 ospf
22PC_OVER.FMF122 858209 ofmf
23SB_OVER.FMF123 067498 ofmf
24ICONS.SPF123 56511 926 ospf
25PLAYPCS2.SPF135 4916 047 ospf
26LEVEL000.RMP141 538238 ormp
27LEVEL001.RMP141 776238 ormp
28LEVEL002.RMP142 014238 ormp
29LEVEL003.RMP142 252238 ormp
30LEVEL004.RMP142 490238 ormp
31LEVEL005.RMP142 728238 ormp
32LEVEL006.RMP142 966238 ormp
33LEVEL007.RMP143 204238 ormp
34LEVEL008.RMP143 442238 ormp
35LEVEL009.RMP143 680238 ormp
36INSTRUCT.SPF143 9184 385 ospf
37PLAYPCS.SPF148 30311 479 ospf
38INSTRUCT.TXT159 7826 093 otxt
39HELP.TXT165 8751 849 otxt

04 - Répartition par extension

Sept formats de fichiers différents cohabitent dans l'archive, voici la description connue à ce jour.

ExtensionNombreDescription
.SPF17 fic.Images compressées (backgrounds ou spritesheets).
.RMP10 fic.Disposition des briques par niveau, 238 octets bruts chacun (grille 17×14, pivotée à l'affichage).
.FMF6 fic.Ressources audio
.MPF1 fic.
.ANI1 fic.GAMELET.ANI - animation d'accueil
.TXT2 fic.Texte