This page describes the content and structure of the ITEM.IBS file.
Some parts are not yet understood (some values in the header, item declarations and the last section in the file).
Dungeon Master Nexus Data File Decoder can extract all images from this file (there are 332 images).
Filesize = 100352 Sections of data are aligned on 2 KB boundaries. 00h bytes are used as padding. Offset Size Description -------------------------- 00000 2048 File Header 69 31 word: File signature: 'i1' 00 F3 word: Number of item declarations F3h = 243 00 08 word: Number of color palettes for item images = 8 01 00 word: Number of association entries for palette index / item index = 256 00 DF word: Number of item images = 223 00 00 00 00 00 6D word: Number of item on floor declarations 6Dh = 109 00 12 00 00 00 01 00 05 00 00 25 F8 Size of useful data in 'Item images declarations' section (243 x 40 bytes) (padded with 00 bytes until next 2KB boundary) 00 06 00 0F 00 00 72 80 Size of useful data in 'Item images' section (padded with 00 bytes until next 2KB boundary) 00 15 00 00 00 00 00 00 00 15 00 1B 00 00 D2 38 Size of useful data in 'Items on floor images' section (padded with 00 bytes until next 2KB boundary) 00 30 00 01 00 00 02 78 Size of useful data in last section 278h = 632 (padded with 00 bytes until next 2KB boundary) 00 00 00 00 00800 10240 Item declarations (243 entries) Potential data stored in fields not yet identified: Stat/skill bonuses Transparent color Item stats (damage, armor, etc.) Recovery time after after item has been used. Seems identical for all actions. Relationship between items images when charges are used up or not. Number of images per items ? 40 bytes per item Byte0: item index Byte1: Object category: Only 6 possible values: 0: Weapon 1: Clothe 2: Food 3: Potions 4: Scrolls 7: Misc Byte2: Carry locations. Bit field, each bit represents one possible carry location 122 values between 1 and 65 (9 unique values), 121 values = 0 bit 7 6 5 4 3 2 1 0 | | | | | | | | | | | | | | | +- Consumable | | | | | | +--- Head | | | | | +----- Neck | | | | +------- Torso | | | +--------- Legs | | +----------- Feet | +------------- Unknown ?? This bit is set only for all 'Misc' items except the rope and all necklaces +--------------- This bit is not used Byte3: 39 values = 0, 108 values = 2, 3 values = 128, 93 values = 130 Flags on bits 7 and 1 ? Items without image on floor have value 0 or 2 Items with an image on floor have value 128 or 130 => Flag on bit 7 is: 0: Does not have a special image on floor 1: Has a special image on floor s=similar s Byte4: 243 values between 10 and 64 (22 unique values) s Byte5: 243 values between 5 and 60 (22 unique values) s Byte6: 86 values between 3 and 19 (14 unique values), 157 values = 0 May be a champion skill index s Byte7: 89 values between 3 and 18 (15 unique values), 154 values = 0 May be a champion skill index Byte8: Item weight. 243 values between 0 and 141 (52 unique values) s Byte9: 46 values between 1 and 40 (20 unique values), 194 values = 0 s Byte10: 64 values between 1 and 45 (25 unique values), 179 values = 0 Byte11: 27 values between 15 and 75 (19 unique values), 216 values = 0 Byte12: 62 values between 1 and 60 (15 unique values), 181 values = 0 Byte13: 60 values between 4 and 252 (16 unique values), 183 values = 0 May be a signed value. range would be -20 to +29 s Byte14: 44 values between 1 and 135 (10 unique values), 199 values = 0 Bit 7 is probably a flag s Byte15: 34 values between 1 and 134 (11 unique values), 209 values = 0 Only weapons have non 0 values. Some weapons have 0 value. Bit 7 is probably a flag Byte16: Action 1 ID: 0 if not action, other value: action ID 79 values between 1 and 41 (21 unique values), 164 values = 0 Byte17: Action 2 ID: 0 if not action, other value: action ID 47 values between 1 and 40 (17 unique values), 196 values = 0 Byte18: Action 3 ID: 0 if not action, other value: action ID 31 values between 4 and 42 (19 unique values), 212 values = 0 Byte19: 243 values between 0 and 83 (13 unique values) Word20: Image index for item in inventory. Index in association table (palette/item image) found at offset 3100h. 224 Values between 1 and 237 (187 unique values), 19 values = FFFFh Word22: Image index for item on floor. Indices include all images in the file, including the 223 item images Value FFFFh means the item on floor image will be the same as the item in inventory image 96 Values between 266 and 331 (66 unique values, no value is missing), 147 values = FFFFh Word24: String index for Item name? -+ Word26: String index for Item description? | Word28: String index for Item Action 1? |- Increasing values from 0 to 448, or FFFFh Word30: String index for Item Action 2? | The first TEXT item in RLOWFIX.BIN contains 449 strings ! Word32: String index for Item Action 3? -+ FFFFh is used when no action is defined (see Byte16, byte17, Byte18) Word34: Always 0000h Word36: Attribute 0: Weapon: "Distance" as for DM items. "Attack force when thrown" (from DM Nexus hint book) 1: Clothe: Unknown. Only 4 values found: 177, 179, 181, 183. Wear locations ? 2: Food: Food value 3: Potions, 4: Scrolls, 7: Misc: Always 0 Byte38: 83 values between 1 and 192 (19 unique values) 160 values = 0 Byte39: 44 between 5 and 194 (7 unique values), 199 values = 0 03000 30720 Items images 03000 256 Color palettes: 8 palettes of 16 colors 03100 512 Associations palette / item image. 2 bytes per entry Special value 'FF00' means the entry is not used Byte0: Palette index (between 0 and 7) Byte1: Item index (between 0 and 222) 03300 28544 223 images of 128 bytes each (index 0 to 222). 16x16 pixels images 4bpp 0A280 1408 Padding 0A800 55296 Items on floor images 0A800 2200 Header 109 image declarations for items on floor 20 bytes for each image declaration word0: image ID word1: Encoding (always 0008h in this file) word2: palette ID. If dword1 <> 0, associates this ID with palette at offset dword1 If dword1 = 0, refers to a previously declared palette word3: image width word4: image height word5: unused (always 0000h) dword0: image offset (relative to A800h, the beginning of this declaration section) dword1: palette offset. If 0, use palette of previous image 1 declaration marking the end of declarations Last image ID: FFFF, image offset is offset where 00h padding starts (D238) all other fields are set to 0 0B098 51616 16 colors palettes (32 bytes) and Images. All bytes are used by images or palettes (checked) 17A38 1480 Padding 18000 2048 Animations. 632 meaningful bytes + padding Sequence of images: animations. List of commands. Each command is 4 bytes large: 1 word command, 1 word parameter 1 word command. If first byte = FFh, then special command, otherwise the word contains an image index. Possible special commands are: FF FF: End of animation. Always last entry in animation. Parameter is always 0000h, except in one case 4000h FF FE: Goto. Used with a negative parameter to go back n commands earlier to loop animation FF FD FF FC Block 1 00 13 19 records 00 9C Size of block 1 = 156 bytes = 4 (this header) + 8 * 19 = Offset of first entry 00 00 00 01 00 E4 00 00 228 First ID in next block converted to decimal: image indices 01 00 00 01 00 DF 00 08 223 02 00 00 01 00 EA 00 11 234 03 00 00 01 00 EB 00 14 235 04 00 00 01 00 EC 00 17 236 05 00 00 01 00 ED 00 1A 237 06 00 00 01 00 EE 00 1D 238 07 00 00 01 00 EF 00 20 239 08 00 00 01 00 F0 00 23 240 09 00 00 01 00 F2 00 2F 242 0A 00 00 01 00 F6 00 37 246 0B 00 00 01 00 FA 00 47 250 0C 00 00 01 00 FC 00 4A 252 0D 00 00 01 00 FE 00 4E 254 0E 00 00 01 01 02 00 5A 258 0F 00 00 01 01 04 00 63 260 10 00 00 01 01 08 00 6F 264 11 00 00 01 00 E8 00 73 232 FF 00 00 00 00 00 00 00 |---| |---| | L Offset of first dword in next section (number of dwords from beginning of next block) L First ID in next block Other blocks 00 E4 80 06 228 00 E5 80 06 229 00 E6 80 06 230 00 E7 80 06 231 00 F4 80 06 244 00 F5 80 06 245 FF FE FF FA FF FF 00 00 00 DF 80 04 223 00 E0 80 04 224 00 E1 80 06 225 00 E2 80 06 226 01 00 80 06 256 01 01 80 06 257 00 00 00 01 FF FE FF FF FF FF 00 00 00 EA 80 0A 234 FF FE FF FF FF FF 00 00 00 EB 80 0A 235 FF FE FF FF FF FF 00 00 00 EC 80 0A 236 FF FE FF FF FF FF 00 00 00 ED 80 0A 237 FF FE FF FF FF FF 00 00 00 EE 80 0A 238 FF FE FF FF FF FF 00 00 00 EF 80 0A 239 FF FE FF FF FF FF 00 00 00 F0 C0 04 240 00 F1 C0 04 241 00 F0 C0 00 240 FF FD 40 04 00 F1 C0 00 241 FF FD 40 04 00 F0 C0 00 240 FF FC 40 04 00 F1 C0 00 241 FF FC 40 04 FF FE FF F6 FF FF 40 00 00 F2 80 04 242 FF FD 00 00 FF FC 00 04 00 F3 80 04 243 FF FD 00 00 FF FC 00 04 FF FE FF FA FF FF 00 00 00 F6 80 03 246 00 F7 80 03 247 00 F6 80 00 246 FF FD 00 03 00 F7 80 03 247 00 F6 80 00 246 FF FD 00 03 00 F7 80 03 247 00 F6 80 00 246 FF FD 00 03 00 F7 80 03 247 00 F8 80 03 248 00 F9 80 03 249 00 FB 80 03 251 00 00 00 01 FF FE FF FF 00 FA 80 0A 250 FF FE FF FF FF FF 00 00 00 FC 80 04 252 00 FD 80 04 253 FF FE FF FE FF FF 00 00 00 FE 80 04 254 FF FD 00 04 FF FC 00 04 FF FD 00 04 FF FC 00 00 00 FF 80 04 255 FF FD 00 04 FF FC 00 04 FF FD 00 04 FF FC 00 00 FF FE FF F6 FF FF 00 00 01 02 80 05 258 01 03 80 05 259 FF FC 00 05 01 02 80 05 258 01 03 80 00 259 FF FC 00 05 FF FC 00 05 FF FE FF F9 FF FF 00 00 01 04 80 04 260 01 05 80 03 261 01 06 80 03 262 01 07 80 03 263 FF FD 00 03 FF FC 00 03 01 05 80 03 261 01 04 80 03 260 FF FD 00 03 FF FC 00 03 FF FD 00 03 FF FF 00 00 01 08 80 04 264 01 09 80 04 265 FF FE FF FE FF FF 00 00 00 E8 80 0E 232 00 E9 80 06 233 FF FE FF FF FF FF 00 00