Grpinfo

From EDukeWiki
Revision as of 08:59, 7 January 2024 by Doom64hunter (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

grpinfo { [...]}

Grpinfo is a special token that declares a custom game GRP. If defined properly, the corresponding package can be selected and loaded in the eduke32 startup window.

Unlike other DEF tokens, each grpinfo token must be defined in a separate file with a "*.grpinfo" extension. Each file corresponds to a single game package to be loaded by eduke32.

Tokens

name <name>

Required token. Defines the title of the GRP file that will be displayed in the eduke32 startup window.

scriptname <game.con>

Optional token. Defines the path to the main CON file (GAME.CON replacement) for this GRP package.

defname <duke3d.def>

Optional token. Defines the path to the main DEF file for this GRP.

rtsname <duke.rts>

Optional token. Defines the path to the main RTS WAD file.

size <grp_size>

Required token. This token is the size of the GRP in bytes, and is required to identify the GRP to be loaded when this item is selected in the startup window.

crc <crc32_value>

Required token. This token is the CRC32 checksum of the GRP package, and is required to identify the GRP to be loaded when this item is selected in the startup window.

dependency <crc32_value>

Optional token. If this grpinfo definition defines an addon to an existing GRP (in the same vein as Duke Caribbean or Nuclear Winter), this token is the CRC32 checksum of the GRP that needs to be loaded first.

The GRP package can then only be loaded if the specified dependency is also present, and the dependency will automatically be loaded first.

flags <bitfield>

Optional token. Defines a bitfield of flags that should be set when this GRP is loaded, see below.

Grpinfo Flags

The following values are game flags to be used within the grpinfo definition.

Exposed Value Label Description
Yes 1 GAMEFLAG_DUKE Enables Duke3D-specific behavior in the engine.
Yes 2 GAMEFLAG_NAM Enables NAM-specific behavior in the engine, e.g. cheat names.
Yes 4 GAMEFLAG_NAPALM Enables NAPALM-specific behavior in the engine, e.g. differences in default RTS file naming.
Yes 8 GAMEFLAG_WW2GI Enables WW2GI-specific behavior in the engine, for example, player weapon code differences.
Yes 16 GAMEFLAG_ADDON Designates that the GRP is an addon, to be loaded together with another GRP. Currently does not affect behavior.
No 32 GAMEFLAG_SHAREWARE Enables Duke3D shareware-specific behavior in the engine. For example, preventing the access to episodes 2 and 3, showing ordering splash screens on exit, etc.
No 64 GAMEFLAG_DUKEBETA Enables 0.99 beta specific behavior in the engine, mainly some quote differences.
No 128 GAMEFLAG_FURY Enables Ion Fury specific behavior in the engine. This includes many, many changes to override Duke3D default behaviors.
No 256 GAMEFLAG_STANDALONE Intended GRPs that are not based on Duke3D -- also used for Ion Fury. However, currently does not affect any behavior.
No 512 GAMEFLAG_NOCLASSIC Removes the "Classic" renderer option from the display menu if set.
No 1024 GAMEFLAG_NOPOLYMER Removes the "Polymer" renderer option from the display menu if set.
Defines
define GAMEFLAG_DUKE         0x00000001
define GAMEFLAG_NAM          0x00000002
define GAMEFLAG_NAPALM       0x00000004
define GAMEFLAG_WW2GI        0x00000008
define GAMEFLAG_ADDON        0x00000010
define GAMEFLAG_SHAREWARE    0x00000020
define GAMEFLAG_DUKEBETA     0x00000060 // includes 0x20 since it's a shareware beta
define GAMEFLAG_FURY         0x00000080
define GAMEFLAG_STANDALONE   0x00000100
define GAMEFLAG_NOCLASSIC    0x00000200
define GAMEFLAG_NOPOLYMER    0x00000400

Predefined Dependency CRC32 Values

The following values are predefined CRC32 values in eduke32, that can be used within the grpinfo definition for the dependency token.

Exposed Value Label Description
Yes 0x982AFE4A DUKEWT_CRC Duke Nukem 3D: Atomic Edition (World Tour)
Yes 0xFD3DCFF1 DUKE15_CRC Duke Nukem 3D: Atomic Edition (1.5)
Yes 0xF514A6AC DUKEPP_CRC Duke Nukem 3D: Plutonium Pak
Yes 0xBBC9CE44 DUKE13_CRC Duke Nukem 3D (1.3d)
No 0xAA4F6A40 DUKEKR_CRC Duke Nukem 3D (South Korean Censored)
No 0x02F18900 DUKE099_CRC Duke Nukem 3D Shareware 0.99
No 0xA28AA589 DUKE10_CRC Duke Nukem 3D Shareware 1.0
No 0x912E1E8D DUKE11_CRC Duke Nukem 3D Shareware 1.1
No 0x983AD923 DUKESW_CRC Duke Nukem 3D Shareware 1.3D
No 0xC5F71561 DUKEMD_CRC Duke Nukem 3D Mac Demo
No 0x73A15EE7 DUKEMD2_CRC Duke Nukem 3D MacUser Demo
Yes 0xA9242158 DUKEDC13_CRC Duke it out in D.C. (1.3D)
Yes 0xB79D997F DUKEDCPP_CRC Duke it out in D.C. (Plutonium Pack)
Yes 0xA8CF80DA DUKEDC_CRC Duke it out in D.C. (Megaton)
No 0x39A692BF - Duke it out in D.C. (Zoom Platform)
No 0xC63B6A8B - Duke it out in D.C. (Crash Fix)
Yes 0x4A2DBB62 VACA13_CRC Duke Caribbean: Life's a Beach (1.3D)
Yes 0x2F4FCCEE VACAPP_CRC Duke Caribbean: Life's a Beach (Plutonium Pak)
Yes 0xB62B42FD VACA15_CRC Duke Caribbean: Life's a Beach (1.5)
Yes 0x18F01C5B DUKECB_CRC Duke Caribbean: Life's a Beach (Megaton)
No 0x65B5F690 - Duke Caribbean: Life's a Beach (Zoom Platform)
No 0x64CF2351 - Duke Caribbean: Life's a Beach (Crash Fix)
Yes 0xF1CAE8E4 DUKENW_CRC Duke: Nuclear Winter (Megaton)
No 0xC7EFBFA9 - Duke: Nuclear Winter Demo
Yes 0x82C1B47F DZ2_13_CRC Duke!ZONE II (1.3D)
Yes 0x7FB6117C DZ2_PP_CRC Duke!ZONE II (Plutonium Pak)
No 0x1E9516F1 - Duke!ZONE II (Zoom Platform)
No 0x7CD82A3B - Duke Nukem's Penthouse Paradise
No 0xCF928A58 - Duke Nukem's Penthouse Paradise
Yes 0x75C1F07B NAM_CRC NAM
Yes 0x3DE1589A NAPALM_CRC NAPALM
Yes 0x907B82BF WW2GI_CRC WWII GI
No 0xD1ED8C0C PLATOONL_CRC Platoon Leader
Defines
define DUKE13_CRC     0xBBC9CE44
define DUKEKR_CRC     0xAA4F6A40
define DUKE15_CRC     0xFD3DCFF1
define DUKEPP_CRC     0xF514A6AC
define DUKEWT_CRC     0x982AFE4A
define DUKE099_CRC    0x02F18900
define DUKE10_CRC     0xA28AA589
define DUKE11_CRC     0x912E1E8D
define DUKESW_CRC     0x983AD923
define DUKEMD_CRC     0xC5F71561
define DUKEMD2_CRC    0x73A15EE7
define DUKEDC13_CRC   0xA9242158
define DUKEDCPP_CRC   0xB79D997F
define DUKEDC_CRC     0xA8CF80DA
define VACA13_CRC     0x4A2DBB62
define VACAPP_CRC     0x2F4FCCEE
define VACA15_CRC     0xB62B42FD
define DUKECB_CRC     0x18F01C5B
define DUKENW_CRC     0xF1CAE8E4
define DZ2_13_CRC     0x82C1B47F
define DZ2_PP_CRC     0x7FB6117C
define NAM_CRC        0x75C1F07B
define NAPALM_CRC     0x3DE1589A
define WW2GI_CRC      0x907B82BF
define PLATOONL_CRC   0xD1ED8C0C

Examples

The following is the grpinfo used by Ion Fury: Aftershock. It is stored in a file called "fury.grpinfo", which is placed on the same path as the binary.

grpinfo
{
   name "Ion Fury: Aftershock"
   scriptname "scripts/main.con"
   defname "ashock.def"
   size 160826590
   crc 0xE175FB41
   flags 1664
   dependency 0
}