Entry

From Crash Bandicoot Hacking Wiki
Revision as of 03:22, 26 July 2015 by Wikia>WurlyFox (Created page with "Entries are the intermediate level data containers in NSF files. They are containers for 'items'-the lowest level data containers in NSF files. == Format == {| class="article...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Entries are the intermediate level data containers in NSF files. They are containers for 'items'-the lowest level data containers in NSF files.

Format

Offset Field Size Value
0x0 Magic Number 4 bytes 0x100FFFF
0x4 ID 4 bytes *
0x8 Type 4 bytes *
0xC Item Count 4 bytes c
0x10 Item Offsets c x 4 bytes *
0x10 + (c x 4) Items c x * bytes *

Structure

struct entry
{
  const unsigned long magic = 0x100FFFF;
  unsigned long EID;
  unsigned long type;
  unsigned long itemcount;
  union
  {
    unsigned long itemoffset[itemcount];
    item *itemptr[itemcount];
  };
  item items[itemcount];
};

Types

An entry's type determines the specific kind of content contained in its items.

Type Name Subsystem Description
1 Object Model Vertices/Animation SVTX contains multiple key frames of animation for an object
2 Object Model Polygons TGEO contains polygons used by a Type 1 entry
3 World Geometry WGEO contains polygons and vertices for a section of the level
4 Display List SLST contains delta encoded display lists, describing the change in z-ordering of polygon primitives at each point of a corresponding camera path
5 Texture Page TPAG describes texture/palette data used by polygons
6 Level Data LDAT contains a level's initial settings such as Crash's starting location
7 Zone Data ZDAT contains a 'zone'-a collection of world models to render, objects to spawn, a camera path, collision octree, and misc attributes
11 GOOL Executable GOOL contains a header, compiled GOOL bytecode, const pool, state map, state descriptors, and animation sequence/text/sprite descriptors for an object
12 Audio ADIO contains audio data for a sound effect
13 MIDI MIDI contains the MIDI sequence for a level's background music
14 Instruments INST describes instruments used to play a MIDI
15 Image Data IMAG contains image data (for the loading screens?)
17 Map Data MDAT contains data describing how a new level should be loaded when selected
18 Palettes for fading transitions IPAL describes the CLUTs used during a fade transition
19 Demo playback PBAK contains a pre-recorded sequence of button presses for playback
20 Cutscene Model

Vertices/Animation

CVTX contain vertices for cutscene models

Entry IDs/EIDs

Like chunks, each entry has also been assigned a unique ID. Unlike CIDs, however, entry IDs (EIDs) have not been precomputed based on index. Each EID encodes a unique 5 character identifier string. Each entry has been assigned an EID that encodes an appropriate identifier.

Encoding scheme

EIDs use the following [32 bit] encoding scheme:

0EEEEEEDDDDDDCCCCCCBBBBBBAAAAAA1

where the [6 bit] fields A, B, C, D, and E, respectively, in that order, are indices of 5 characters in the following conversion table:

Index 0 1 2 3 4 5 6 7 8 9 A B C D E F
Char 0 1 2 3 4 5 6 7 8 9 a b c d e f
Index 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
Char g h i j k l m n o p q r s t u v
Index 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
Char w x y z A B C D E F G H I J K L
Index 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
Char M N O P Q R S T U V W X Y Z _ !

The conversion table above is used by the EID encoding and decoding routines and is located at the following addresses in each of the Crash games:

  • Crash 1 - 0x51728

Null EID

The EID with value 0x6396347F, which translates to NONE!, is used frequently throughout the game code. It represents a null EID.