BPROD.DAT (TFTD)

From UFOpaedia
Jump to: navigation, search

The BPROD.DAT file holds information on the current progress of what is being manufactured. It is a whopping (compared to other dat files) 3440 bytes. Essentially it holds information for each of your bases and for each item that can be produced. Each item gets 10 bytes (8 bases * 43 producible items * 10 bytes = 3440), however the format of this file seems a bit sideways (to me atleast). The best 'line width' to come up with is 430, 1 line for each base.

Inside of those 430 bytes it is divided into to 4 sections:

  • Hours Stored (Long Integer 4 Bytes)- always lower (possibly equal see below) than the engineering hours needed to make one. It is the remainder when the amount of hours spent does not evenly divide into the time it takes to make the product. However setting this value to 0 will remove the production and place it back into the new production list, be see note below.
  • Engineers Allocated (Integer 2 Bytes) - how many engineers are allocated to making this product
  • Total to Produce (Integer 2 Bytes) - the number of these items to make
  • Units Produced (Integer 2 Bytes) - the number of these itesm to make.

NOTE: Normally when a project is complete all the values for it are set to 0. Only the 'Hours Stored' controls if it is shown as being produced or available for a new production. If a production is hacked to 0, before it is done, the engineers are still allocated to it. You will be unable to get these engineers back until you create the same project they were working on again, note that they still take up space in the workshop, so you might not be able to create that project again.

The amount of hours stored can equal the amount required, as is the case when you start a new project (along with the total to produce set 1 higher). This is why you can sometimes see 0/0 Days/Hours Left if you meet it exactly. The next hour should increment and allow the project to be finished.

Each of these 4 sections list all of the items that can be produced before going on to the next section. The order they are place corresponds to the record in PRODUCT.DAT. So byte 0 is hours completed for a Fusion Ball Launcher, byte 4 is hours completed for Laser Cannon, byte 8 is hours completed for a Plasma Beam, and so on. Finally at byte 140 (4 bytes * 35 items) we get the engineers allocated to the Fusion Ball Launcher. (All at the first base)

Rough Outline

Here is a rough outline of the format of the file, divided up into 430 byte chunks (each corresponds to a base). The order follows that of PRODUCT.DAT inside these chunks. All addresses are in decimal unless prefixed by 0x

 000 - 0A8h : Hours stored for each item (4 bytes each)
0ACh - 100h : Engineers allocated to each item (2 bytes each)
102h - 156h : Total to produce for each item (2 bytes each)
158h - 1ACh : Units produced for each item (2 bytes each)

More Detailed

Item Name Stored Hours
Offset
Allocated Engineers
Offset
Quantity to Make
Offset
Number Produced
Offset
P.W.T. Launcher 0 (0x0) 172 (0xAC) 258 (0x102) 344 (0x158)
Gauss Cannon 4 (0x4) 174 (0xAE) 260 (0x104) 346 (0x15A)
Sonic Oscillator 8 (0x8) 176 (0xB0) 262 (0x106) 348 (0x15C)
PWT Craft Ammo 12 (0xC) 178 (0xB2) 264 (0x108) 350 (0x15E)
Coelacanth/Gauss 16 (0x10) 180 (0xB4) 266 (0x10A) 352 (0x160)
Displacer/Sonic 20 (0x14) 182 (0xB6) 268 (0x10C) 354 (0x162)
Displacer/PWT 24 (0x18) 184 (0xB8) 270 (0x10E) 356 (0x164)
PW Torpedo (SWS) 28 (0x1C) 186 (0xBA) 272 (0x110) 358 (0x166)
Gauss Pistol 32 (0x20) 188 (0xBC) 274 (0x112) 360 (0x168)
Gauss Rifle 36 (0x24) 190 (0xBE) 276 (0x114) 362 (0x16A)
Heavy Gauss 40 (0x28) 192 (0xC0) 278 (0x116) 364 (0x16C)
Disturbance Sensor 44 (0x2C) 194 (0xC2) 280 (0x118) 366 (0x16E)
Medi-kit 48 (0x30) 196 (0xC4) 282 (0x11A) 368 (0x170)
M.C. Disruptor 52 (0x34) 198 (0xC6) 284 (0x11C) 370 (0x172)
Sonic Cannon 56 (0x38) 200 (0xC8) 286 (0x11E) 372 (0x174)
Cannon Power Clip 60 (0x3C) 202 (0xCA) 288 (0x120) 374 (0x176)
Sonic Blasta Rifle 64 (0x40) 204 (0xCC) 290 (0x122) 376 (0x178)
Blasta Power Clip 68 (0x44) 206 (0xCE) 292 (0x124) 378 (0x17A)
Sonic Pistol 72 (0x48) 208 (0xD0) 294 (0x126) 380 (0x17C)
Pistol Power Clip 76 (0x4C) 210 (0xD2) 296 (0x128) 382 (0x17E)
Disruptor Pulse Launcher 80 (0x50) 212 (0xD4) 298 (0x12A) 384 (0x180)
Disruptor Ammo 84 (0x54) 214 (0xD6) 300 (0x12C) 386 (0x182)
Thermal Shok Launcher 88 (0x58) 216 (0xD8) 302 (0x12E) 388 (0x184)
Thermal Shok Bomb 92 (0x5C) 218 (0xDA) 304 (0x130) 390 (0x186)
Sonic Pulsar 96 (0x60) 220 (0xDC) 306 (0x132) 392 (0x188)
M.C. Reader 100 (0x64) 222 (0xDE) 308 (0x134) 394 (0x18A)
Plastic Aqua Armor 104 (0x68) 224 (0xE0) 310 (0x136) 396 (0x18C)
Ion Armor 108 (0x6C) 226 (0xE2) 312 (0x138) 398 (0x18E)
Mag. Ion Armor 112 (0x70) 228 (0xE4) 314 (0x13A) 400 (0x190)
Aqua Plastics 116 (0x74) 230 (0xE6) 316 (0x13C) 402 (0x192)
Ion-Beam Accelerators 120 (0x78) 232 (0xE8) 318 (0x13E) 404 (0x194)
Magnetic Navigation 124 (0x7C) 234 (0xEA) 320 (0x140) 406 (0x196)
HAMMERHEAD 128 (0x80) 236 (0xEC) 322 (0x142) 408 (0x198)
MANTA 132 (0x84) 238 (0xEE) 324 (0x144) 410 (0x19A)
LEVIATHAN 136 (0x88) 240 (0xF0) 326 (0x146) 412 (0x19C)
Gauss Pistol Clip 140 (0x8C) 242 (0xF2) 328 (0x148) 414 (0x19E)
Gauss Rifle Clip 144 (0x90) 244 (0xF4) 330 (0x14A) 416 (0x1A0)
Heavy Gauss Clip 148 (0x94) 246 (0xF6) 332 (0x14C) 418 (0x1A2)
Vibro Blade 152 (0x98) 248 (0xF8) 334 (0x14E) 420 (0x1A4)
Thermic Lance 156 (0x9C) 250 (0xFA) 336 (0x150) 422 (0x1A6)
Heavy Thermic Lance 160 (0xA0) 252 (0xFC) 338 (0x152) 424 (0x1A8)
Guass Cannnon Ammo 164 (0xA4) 254 (0xFE) 340 (0x154) 426 (0x1AA)
{UNUSED} 168 (0xA8) 256 (0x100) 342 (0x156) 428 (0x1AC)

See Also