xref: /dragonfly/contrib/file/magic/Magdir/games (revision 7d3e9a5b)
1
2#------------------------------------------------------------------------------
3# $File: games,v 1.22 2021/02/23 00:51:10 christos Exp $
4# games:  file(1) for games
5
6# Fabio Bonelli <fabiobonelli@libero.it>
7# Quake II - III data files
80       string  IDP2        	Quake II 3D Model file,
9>20     long    x               %u skin(s),
10>8      long    x               (%u x
11>12     long    x 		%u),
12>40     long    x               %u frame(s),
13>16     long    x               Frame size %u bytes,
14>24     long  	x               %u vertices/frame,
15>28     long    x            	%u texture coordinates,
16>32     long    x               %u triangles/frame
17
180       string  IBSP            Quake
19>4      long    0x26            II Map file (BSP)
20>4      long    0x2E      	III Map file (BSP)
21
220       string  IDS2            Quake II SP2 sprite file
23
24#---------------------------------------------------------------------------
25# Doom and Quake
26# submitted by Nicolas Patrois
27
280       string  \xcb\x1dBoom\xe6\xff\x03\x01    Boom or linuxdoom demo
29# some doom lmp files don't match, I've got one beginning with \x6d\x02\x01\x01
30
3124      string  LxD\ 203        Linuxdoom save
32>0      string  x       , name=%s
33>44     string  x       , world=%s
34
35# Quake
36
37# Update: Joerg Jenderek
38# URL: http://fileformats.archiveteam.org/wiki/PAK
39# reference: https://quakewiki.org/wiki/.pak
40# GRR: line below is too general as it matches also Acorn PackDir compressed Archive
41# and Git pack ./revision
420       string  PACK
43# real Quake examples like pak0.pak have only some hundreds like 150 files
44# So test for few files
45>8	ulelong <0x01000000
46# in file version 5.32 test for null terminator is only true for
47# offset ~< FILE_BYTES_MAX = 1 MB defined in ../../src/file.h
48# look for null terminator of 1st entry name
49>>(4.l+55)	ubyte	0	Quake I or II world or extension
50!:mime	application/x-dzip
51!:ext	pak
52#>>>8	ulelong	x	\b, table size %u
53# dividing this by entry size (64) gives number of files
54>>>8	ulelong/64 x	\b, %u files
55# offset to the beginning of the file table
56>>>4	ulelong	x	\b, offset 0x%x
57# 1st file entry
58>>>(4.l)	use	pak-entry
59# 2nd file entry
60#>>>4	ulelong+64	x	\b, offset 0x%x
61#>>>(4.l+64)	use	pak-entry
62#
63#	display file table entry of Quake PAK archive
640	name		pak-entry
65# normally entry start after header which implies offset 12 or higher
66>56	ulelong	>11
67# the offset from the beginning of pak to beginning of this entry file contents
68>>56	ulelong	x	at 0x%x
69# the size of file for this entry
70>>60	ulelong	x	%u bytes
71# 56 byte null-terminated entry name string includes path like maps/e1m1.bsp
72>>0	string	x	'%-.56s'
73# inspect entry content by jumping to entry offset
74>>(56)	indirect x	\b:
75
76#0       string  -1\x0a  Quake I demo
77#>30     string  x        version %.4s
78#>61     string  x        level %s
79
80#0       string  5\x0a   Quake I save
81
82# The levels
83
84# Quake 1
85
860	string	5\x0aIntroduction             Quake I save: start Introduction
870	string	5\x0athe_Slipgate_Complex     Quake I save: e1m1 The slipgate complex
880	string	5\x0aCastle_of_the_Damned     Quake I save: e1m2 Castle of the damned
890	string	5\x0athe_Necropolis           Quake I save: e1m3 The necropolis
900	string	5\x0athe_Grisly_Grotto        Quake I save: e1m4 The grisly grotto
910	string	5\x0aZiggurat_Vertigo         Quake I save: e1m8 Ziggurat vertigo (secret)
920	string	5\x0aGloom_Keep               Quake I save: e1m5 Gloom keep
930	string	5\x0aThe_Door_To_Chthon       Quake I save: e1m6 The door to Chthon
940	string	5\x0aThe_House_of_Chthon      Quake I save: e1m7 The house of Chthon
950	string	5\x0athe_Installation         Quake I save: e2m1 The installation
960	string	5\x0athe_Ogre_Citadel         Quake I save: e2m2 The ogre citadel
970	string	5\x0athe_Crypt_of_Decay       Quake I save: e2m3 The crypt of decay (dopefish lives!)
980	string	5\x0aUnderearth               Quake I save: e2m7 Underearth (secret)
990	string	5\x0athe_Ebon_Fortress        Quake I save: e2m4 The ebon fortress
1000	string	5\x0athe_Wizard's_Manse       Quake I save: e2m5 The wizard's manse
1010	string	5\x0athe_Dismal_Oubliette     Quake I save: e2m6 The dismal oubliette
1020	string	5\x0aTermination_Central      Quake I save: e3m1 Termination central
1030	string	5\x0aVaults_of_Zin            Quake I save: e3m2 Vaults of Zin
1040	string	5\x0athe_Tomb_of_Terror       Quake I save: e3m3 The tomb of terror
1050	string	5\x0aSatan's_Dark_Delight     Quake I save: e3m4 Satan's dark delight
1060	string	5\x0athe_Haunted_Halls        Quake I save: e3m7 The haunted halls (secret)
1070	string	5\x0aWind_Tunnels             Quake I save: e3m5 Wind tunnels
1080	string	5\x0aChambers_of_Torment      Quake I save: e3m6 Chambers of torment
1090	string	5\x0athe_Sewage_System        Quake I save: e4m1 The sewage system
1100	string	5\x0aThe_Tower_of_Despair     Quake I save: e4m2 The tower of despair
1110	string	5\x0aThe_Elder_God_Shrine     Quake I save: e4m3 The elder god shrine
1120	string	5\x0athe_Palace_of_Hate       Quake I save: e4m4 The palace of hate
1130	string	5\x0aHell's_Atrium            Quake I save: e4m5 Hell's atrium
1140	string	5\x0athe_Nameless_City        Quake I save: e4m8 The nameless city (secret)
1150	string	5\x0aThe_Pain_Maze            Quake I save: e4m6 The pain maze
1160	string	5\x0aAzure_Agony              Quake I save: e4m7 Azure agony
1170	string	5\x0aShub-Niggurath's_Pit     Quake I save: end Shub-Niggurath's pit
118
119# Quake DeathMatch levels
120
1210	string	5\x0aPlace_of_Two_Deaths	 Quake I save: dm1 Place of two deaths
1220	string	5\x0aClaustrophobopolis		 Quake I save: dm2 Claustrophobopolis
1230	string	5\x0aThe_Abandoned_Base		 Quake I save: dm3 The abandoned base
1240	string	5\x0aThe_Bad_Place		 Quake I save: dm4 The bad place
1250	string	5\x0aThe_Cistern		 Quake I save: dm5 The cistern
1260	string	5\x0aThe_Dark_Zone		 Quake I save: dm6 The dark zone
127
128# Scourge of Armagon
129
1300	string	5\x0aCommand_HQ               Quake I save: start Command HQ
1310	string	5\x0aThe_Pumping_Station      Quake I save: hip1m1 The pumping station
1320	string	5\x0aStorage_Facility         Quake I save: hip1m2 Storage facility
1330	string	5\x0aMilitary_Complex         Quake I save: hip1m5 Military complex (secret)
1340	string	5\x0athe_Lost_Mine            Quake I save: hip1m3 The lost mine
1350	string	5\x0aResearch_Facility        Quake I save: hip1m4 Research facility
1360	string	5\x0aAncient_Realms           Quake I save: hip2m1 Ancient realms
1370	string	5\x0aThe_Gremlin's_Domain     Quake I save: hip2m6 The gremlin's domain (secret)
1380	string	5\x0aThe_Black_Cathedral      Quake I save: hip2m2 The black cathedral
1390	string	5\x0aThe_Catacombs            Quake I save: hip2m3 The catacombs
1400	string	5\x0athe_Crypt__              Quake I save: hip2m4 The crypt
1410	string	5\x0aMortum's_Keep            Quake I save: hip2m5 Mortum's keep
1420	string	5\x0aTur_Torment              Quake I save: hip3m1 Tur torment
1430	string	5\x0aPandemonium              Quake I save: hip3m2 Pandemonium
1440	string	5\x0aLimbo                    Quake I save: hip3m3 Limbo
1450	string	5\x0athe_Edge_of_Oblivion     Quake I save: hipdm1 The edge of oblivion (secret)
1460	string	5\x0aThe_Gauntlet             Quake I save: hip3m4 The gauntlet
1470	string	5\x0aArmagon's_Lair           Quake I save: hipend Armagon's lair
148
149# Malice
150
1510	string	5\x0aThe_Academy      Quake I save: start The academy
1520	string	5\x0aThe_Lab          Quake I save: d1 The lab
1530	string	5\x0aArea_33          Quake I save: d1b Area 33
1540	string	5\x0aSECRET_MISSIONS  Quake I save: d3b Secret missions
1550	string	5\x0aThe_Hospital     Quake I save: d10 The hospital (secret)
1560	string	5\x0aThe_Genetics_Lab Quake I save: d11 The genetics lab (secret)
1570	string	5\x0aBACK_2_MALICE    Quake I save: d4b Back to Malice
1580	string	5\x0aArea44           Quake I save: d1c Area 44
1590	string	5\x0aTakahiro_Towers  Quake I save: d2 Takahiro towers
1600	string	5\x0aA_Rat's_Life     Quake I save: d3 A rat's life
1610	string	5\x0aInto_The_Flood   Quake I save: d4 Into the flood
1620	string	5\x0aThe_Flood        Quake I save: d5 The flood
1630	string	5\x0aNuclear_Plant    Quake I save: d6 Nuclear plant
1640	string	5\x0aThe_Incinerator_Plant    Quake I save: d7 The incinerator plant
1650	string	5\x0aThe_Foundry              Quake I save: d7b The foundry
1660	string	5\x0aThe_Underwater_Base      Quake I save: d8 The underwater base
1670	string	5\x0aTakahiro_Base            Quake I save: d9 Takahiro base
1680	string	5\x0aTakahiro_Laboratories    Quake I save: d12 Takahiro laboratories
1690	string	5\x0aStayin'_Alive    Quake I save: d13 Stayin' alive
1700	string	5\x0aB.O.S.S._HQ      Quake I save: d14 B.O.S.S. HQ
1710	string	5\x0aSHOWDOWN!        Quake I save: d15 Showdown!
172
173# Malice DeathMatch levels
174
1750	string	5\x0aThe_Seventh_Precinct	 Quake I save: ddm1 The seventh precinct
1760	string	5\x0aSub_Station		 Quake I save: ddm2 Sub station
1770	string	5\x0aCrazy_Eights!		 Quake I save: ddm3 Crazy eights!
1780	string	5\x0aEast_Side_Invertationa	 Quake I save: ddm4 East side invertationa
1790	string	5\x0aSlaughterhouse		 Quake I save: ddm5 Slaughterhouse
1800	string	5\x0aDOMINO			 Quake I save: ddm6 Domino
1810	string	5\x0aSANDRA'S_LADDER		 Quake I save: ddm7 Sandra's ladder
182
183
1840	string	MComprHD	MAME CHD compressed hard disk image,
185>12	belong	x		version %u
186
187# doom - submitted by Jon Dowland
188
1890	string	=IWAD		doom main IWAD data
190>4	lelong	x		containing %d lumps
1910	string	=PWAD		doom patch PWAD data
192>4	lelong	x		containing %d lumps
193
194# Build engine group files (Duke Nukem, Shadow Warrior, ...)
195# Extension: .grp
196# Created by: "Ganael Laplanche" <ganael.laplanche@martymac.org>
1970	string	KenSilverman	Build engine group file
198>12	lelong	x		containing %d files
199
200# Summary: Warcraft 3 save
201# Extension: .w3g
202# Created by: "Nelson A. de Oliveira" <naoliv@gmail.com>
2030	string		Warcraft\ III\ recorded\ game	%s
204
205
206# Summary: Warcraft 3 map
207# Extension: .w3m
208# Created by: "Nelson A. de Oliveira" <naoliv@gmail.com>
2090	string		HM3W		Warcraft III map file
210
211
212# Summary: SGF Smart Game Format
213# Extension: .sgf
214# Reference: https://www.red-bean.com/sgf/
215# Created by: Eduardo Sabbatella <eduardo_sabbatella@yahoo.com.ar>
216# Modified by (1): Abel Cheung (regex, more game format)
217# FIXME: Some games don't have GM (game type)
2180	regex		\\(;.*GM\\[[0-9]{1,2}\\]	Smart Game Format
219>2	search/0x200/b	GM[
220>>&0	string		1]	(Go)
221>>&0	string		2]	(Othello)
222>>&0	string		3]	(chess)
223>>&0	string		4]	(Gomoku+Renju)
224>>&0	string		5]	(Nine Men's Morris)
225>>&0	string		6]	(Backgammon)
226>>&0	string		7]	(Chinese chess)
227>>&0	string		8]	(Shogi)
228>>&0	string		9]	(Lines of Action)
229>>&0	string		10]	(Ataxx)
230>>&0	string		11]	(Hex)
231>>&0	string		12]	(Jungle)
232>>&0	string		13]	(Neutron)
233>>&0	string		14]	(Philosopher's Football)
234>>&0	string		15]	(Quadrature)
235>>&0	string		16]	(Trax)
236>>&0	string		17]	(Tantrix)
237>>&0	string		18]	(Amazons)
238>>&0	string		19]	(Octi)
239>>&0	string		20]	(Gess)
240>>&0	string		21]	(Twixt)
241>>&0	string		22]	(Zertz)
242>>&0	string		23]	(Plateau)
243>>&0	string		24]	(Yinsh)
244>>&0	string		25]	(Punct)
245>>&0	string		26]	(Gobblet)
246>>&0	string		27]	(hive)
247>>&0	string		28]	(Exxit)
248>>&0	string		29]	(Hnefatal)
249>>&0	string		30]	(Kuba)
250>>&0	string		31]	(Tripples)
251>>&0	string		32]	(Chase)
252>>&0	string		33]	(Tumbling Down)
253>>&0	string		34]	(Sahara)
254>>&0	string		35]	(Byte)
255>>&0	string		36]	(Focus)
256>>&0	string		37]	(Dvonn)
257>>&0	string		38]	(Tamsk)
258>>&0	string		39]	(Gipf)
259>>&0	string		40]	(Kropki)
260
261##############################################
262# NetImmerse/Gamebryo game engine entries
263
264# Summary: Gamebryo game engine file
265# Extension: .nif, .kf
266# Created by: Abel Cheung <abelcheung@gmail.com>
2670		string		Gamebryo\ File\ Format,\ Version\ 	Gamebryo game engine file
268>&0		regex		[0-9a-z.]+				\b, version %s
269
270# Summary: Gamebryo game engine file
271# Extension: .kfm
272# Created by: Abel Cheung <abelcheung@gmail.com>
2730		string		;Gamebryo\ KFM\ File\ Version\ 		Gamebryo game engine animation File
274>&0		regex		[0-9a-z.]+				\b, version %s
275
276# Summary: NetImmerse game engine file
277# Extension .nif
278# Created by: Abel Cheung <abelcheung@gmail.com>
2790		string		NetImmerse\ File\ Format,\ Version
280>&0		string		n\ 					NetImmerse game engine file
281>>&0		regex		[0-9a-z.]+				\b, version %s
282
283# Type:	SGF Smart Game Format
284# URL:	https://www.red-bean.com/sgf/
285# From:	Eduardo Sabbatella <eduardo_sabbatella@yahoo.com.ar>
2862	regex/c	\\(;.*GM\\[[0-9]{1,2}\\]	Smart Game Format
287>2	regex/c	GM\\[1\\]			- Go Game
288>2	regex/c	GM\\[6\\]			- BackGammon Game
289>2	regex/c	GM\\[11\\]			- Hex Game
290>2	regex/c	GM\\[18\\]			- Amazons Game
291>2	regex/c	GM\\[19\\]			- Octi Game
292>2	regex/c	GM\\[20\\]			- Gess Game
293>2	regex/c	GM\\[21\\]			- twix Game
294
295# Epic Games/Unreal Engine Package
296#
2970	lelong		0x9E2A83C1	Unreal Engine Package,
298>4	leshort		x		version: %i
299>12	lelong		!0		\b, names: %i
300>28	lelong		!0		\b, imports: %i
301>20	lelong		!0		\b, exports: %i
302
3030	string		ESVG
304>4	lelong		0x00160000
305>10	string		TOC\020		Empire Deluxe for DOS saved game
306
307# Sid Meier's Civilization V/VI
308# From: Benjamin Lowry <ben@ben.gmbh>
3090	string	CIV5
310>4	byte	0x08		Sid Meier's Civilization V saved game,
311>>12	regex	[0-9a-z.]+	saved by game version %s
312>4	byte	0x01		Sid Meier's Civilization V replay data,
313>>12	regex	[0-9a-z.]+	saved by game version %s
314
3150	string	CIV6		Sid Meier's Civilization VI saved game
316
317# https://syzygy-tables.info/
318# From Michel Van den Bergh
3190	string	\327f\f\245	Syzygy DTZ tablebase
320!:mime	application/syzygy
3210	string	q\350#]		Syzygy WDL tablebase
322!:mime	application/syzygy
323