Grpinfo
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 }