Prop Subfile

From SC4D Encyclopaedia
Revision as of 18:39, 9 August 2019 by Tarkus (talk | contribs) (Original from whatevermind, CasperVg, and jdenm8)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This page pertains to the format of the Prop Subfile within the Savegame files. This file has Type ID 2977AA47. It can be viewed and mapped using the SC4 Savegame Explorer, but not edited. This particular subfile was decoded by RippleJet.

Structure

The Prop Subfile has the following format:

DWORD	Size
DWORD	CRC
DWORD	Memory
WORD	Major Version?  (only seen 0x0006)
WORD	Minor Version?  (only seen 0x0004)
WORD	Zot  (almost always 0x0000, however 0x0101 for a zot)  (See Appendix 5 below)
BYTE	Unknown  (only seen 0x00)
BYTE	Appearance Flag  (See Appendix 2 below)
DWORD	0xA823821E  (always the same)
BYTE	Min Tract X Coordinate  (normally between 0x40 and 0x7F)
BYTE	Min Tract Z Coordinate  (normally between 0x40 and 0x7F)
BYTE	Max Tract X Coordinate  (normally between 0x40 and 0x7F)
BYTE	Max Tract Z Coordinate  (normally between 0x40 and 0x7F)
WORD	X Tract Size? (power of 2)  (only seen 0x0002)
WORD	Z Tract Size? (power of 2)  (only seen 0x0002)
DWORD	Count of Properties  (I've seen 0x00000000, 0x00000001 and 0x00000003)
    SGPROP    	SaveGame Properties, repeated Count times  (See Appendix 1 below)
DWORD	Group ID  (from the Prop Exemplar)
DWORD	Type ID  (from the Prop Exemplar)
DWORD	Instance ID  (from the Prop Exemplar)
DWORD	Instance ID  (the value given when the prop appeared)
FLOAT32	Min X Coordinate
FLOAT32	Min Y Coordinate
FLOAT32	Min Z Coordinate
FLOAT32	Max X Coordinate
FLOAT32	Max Y Coordinate
FLOAT32	Max Z Coordinate
BYTE	Orientation
BYTE	State
BYTE	Start Time (in 0.1 hours)
BYTE	Stop Time (in 0.1 hours)
BYTE	Count  (0 or 1)
    DWORD	Interval (in days)
    DWORD	Duration (in days)
    DWORD	Start Date (in Julian days)
    DWORD	End Date (in Julian days)
BYTE	Random Chance of Appearance (0-100)
BYTE	Lot Type  (See Appendix 3 below)
DWORD	Object ID
BYTE	Conditional Appearance  (See Appendix 4 below)

Appendix 1 - Structure of SGPROP (SaveGame Properties)

This structure is used on the SGPROP entries. Known entries are listed further below.

DWORD   Property Name Value
DWORD	Property Name Value  (doubled for some unknown reason)
DWORD	0x00000000
BYTE	Data Type, 01=UInt8, 02=UInt16, 03=UInt32, 07=SInt32, 08=SInt64, 09=Float32, 0B=Boolean
BYTE	KeyType, 0x00 = 0 reps, 0x80 = more than 0 reps
WORD	0x0000
DWORD	Rep Count  (this one appears only if KeyType = 0x80)
    DATA	Property Value (repeated Rep Count times, type according to Data Type)

Appendix 2 - Appearance Flag (offset 0x0013)

The Appearance Flag can have any of the following values:

  • 0x01 (00000001b) - Prop that appears in the game (if this is off, the prop has been deleted).
  • 0x02 (00000010b) - ? (unused).
  • 0x04 (00000100b) - ? (always on).
  • 0x08 (00001000b) - Flora (every entry in the flora subfile has 0x0D).
  • 0x10 (00010000b) - Fauna (every entry in the fauna subfile has this bit set).
  • 0x40 (01000000b) - The prop is burnt.
  • 0x80 (10000000b) - Disabled ATC or Timed Prop (no animation).

Appendix 3 - Lot Type

Occurs at offset 0x0052 + Size of SGPROPs.

Only one of these can be set concurrently. Note, props with Lot Type = 0x01 get an Object ID of 0xFFFFFFFF. Zots also get an Object ID of 0xFFFFFFFF, but the Lot Type is 0x02.

  • 0x00 (00000000b) - Prop that does not belong in the game (deleted).
  • 0x01 (00000001b) - Prop that does not belong to any lot (e.g. border connections).
  • 0x02 (00000010b) - Prop that belongs to a normal lot.
  • 0x04 (00000100b) - Prop that belongs to a Type21 lot.

Appendix 4 - Conditional Appearance (offset 0x0010)

Normally 0x00. Takes different values for props made conditional in different ways:

  • 0x00 - Any non-conditional prop in any state.
  • 0x05 - Requires Power to Appear and Date Timed prop, in state 1.
  • 0x06 - Requires Power to Appear and Hour Timed prop, in state 1.
  • 0x07 - Requires Power to Appear, in state 1.
  • 0x0B - ? (Seen once in Riquelandia for effect 0xEA8DE9EB in state 1).
  • 0x0D - Date Timed prop, in state 1.
  • 0x0E - Hour Timed prop, in state 1.
  • 0x0F - Timed prop in state 0, or any prop with Chance < 100% in any state.

More testing needed here!

Appendix 5

For zots, the type is given in SGPROP 0x48E95539:

    0x00000004 = No Power Zot
    0x00000005 = No Water Zot
    0x00000006 = No Road Zot
    0x00000007 = No Work Zot

Savegame Properties (SGProps)

Known entries for SGPROP for the Prop Subfile are listed below.

0x48E95539 - Zot Type

Data Type: UInt32
Rep Count: 0

    0x00000004 = No Power Zot
    0x00000005 = No Water Zot
    0x00000006 = No Road Zot
    0x00000007 = No Work Zot

0x69DBEBE1 - Unknown

Data Type: Boolean
Rep Count: 0
Values seen: always False (never True)
This is rare, but has been found in the prop subfile, the flora subfile and the building subfile.

0x89A1C16C - Unknown

Data Type: UInt32
Rep Count: 0
This is by far the most common SGPROP in props.
Values seen: 0, but there has once been seen a 1 (in Baza, for a car having a Requester Satisfaction of Crime).

0xCAA45670 - Unknown - Neighbour Connection?

Data Type: UInt32
Rep Count: 0
Values seen: 1 (and nothing else)
This property always appears together with 0xCAA46595 and either 0xCAA45671 or 0xCAA45672.

0xCAA45671 - Unknown - Neighbour Power Connection?

Data Type: UInt32
Rep Count: 0
Values seen: 1 (and nothing else)
This property always appears together with 0xCAA45670 and 0xCAA46595.

0xCAA45672 - Unknown - Neighbour Water Connection?

Data Type: UInt32
Rep Count: 0
Values seen: 1 (and nothing else)
This property always appears together with 0xCAA45670 and 0xCAA46595.
I have never seen both 0xCAA45671 and 0xCAA45672 in the same city.

0xCAA46595 - Unknown - Neighbour Road Connection?

Data Type: UInt32
Rep Count: 0
Values seen: 1 (and nothing else)
This property mostly appears together with 0xCAA45670 and either 0xCAA45671 or 0xCAA45672.
It has been seen on its own as well though.