2A51171B
From SimsWiki
2A51171B | |
---|---|
Short name: | 3DARY |
Long name: | 3D array |
Contents |
Format
- ZEROs
- Unknown [offset ranges: 0-63 / 0x00-0x3F]
- DWORD
- Block ID [offset ranges: 64-67 / 0x40-0x43] (0x2a51171b)
- DWORD
- Block Version [offset ranges: 68-71 / 0x44-0x47]
- 7BITSTR
- Block name count [offset ranges: 72 / 0x48] (character count 8)
- Block name [offset ranges: 73-80 / 0x49-0x50] (c3DArray)
_______________________________________________________________
- *** the following parts depend on the instance number.
- DWORD
- Count X [offset ranges: 81-84 / 0x51-0x54] (instance number dependent)
- DWORD
- Count Y [offset ranges: 85-88 / 0x55-0x58] (instance number dependent)
- DWORD
- Count Z [offset ranges: 89-92 / 0x59-0x5C] (instance number dependent)
- variable
- Array[X,Y,Z] (see below)
- Array format
- Array[X,Y,Z] is a 3-dimensional array *of Objects* with height X, width Y, and depth Z. The type of data contained within the Object varies by the Instance ID of the file.
_______________________________________________________________
Instance ID 0x00
- DWORD
- Count X [offset ranges: 81-84 / 0x51-0x54] (Width = n1 x 10)
- DWORD
- Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
- DWORD
- Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of array layers/levels/stories)
- Data storage format
- Note: W = West; N = North; E = East; S = South; "?" = Unknown where Known values of "?" = 0
- 8 Bytes
- Format = W? N? E? S? , where W, N, E, S = any of the floor tile map reference number found in String Map file instance 0x0E
- Based on the pattern, this is apparently the array for floor tile pattern and the value may be the floor tile map reference number (found in instance 0x0E of String Map (SMAP; CAC4FC40) files); 0x0000 = untiled;
- empty3x2= Width=30 & Height=30; LO = Lot Origin; @ = at; F = Front; B = Back; R = Right; L = Left
- eg1 = empty3x2-LO@FR [ 120(0x0001)-120(0x0000)-120(0x0002)-120(0x0003)-120(0x0004)-120(0x0005)-120(0x0003)-120(0x0006)-120(0x0000)-120(0x0001)-2400(0x0000) ]
- eg2 = empty3x2-LO@BR [ 30{80(0x0000)-4(0x0001)-4(0x0000)-4(0x0006)-4(0x0003)-4(0x0005)-4(0x0004)-4(0x0003)-4(0x0002)-4(0x0000)-4(0x0001)-} ]
- eg3 = empty3x2-LO@BL [ 2400(0x0000)-120(0x0001)-120(0x0000)-120(0x0006)-120(0x0003)-120(0x0005)-120(0x0004)-120(0x0003)-120(0x0002)-120(0x0000)-120(0x0001) ]
- eg4 = empty3x2-LO@FL [ 30{4(0x0001)-4(0x0000)-4(0x0002)-4(0x0003)-4(0x0004)-4(0x0005)-4(0x0003)-4(0x0006)-4(0x0000)-4(0x0001)-80(0x0000))-} ]
- empty3x2= Width=30 & Height=30; LO = Lot Origin; @ = at; F = Front; B = Back; R = Right; L = Left
Instance ID 0x01
- DWORD
- Count X [offset ranges: 81-84 / 0x51-0x54] (Width = [n1 x 10] + 1)
- (number of grid point along the Width)
- DWORD
- Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = [n2 x 10] + 1)
- (number of grid point along the Height)
- DWORD
- Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of array layers/levels/stories)
- Data storage format
- Float (in singles)
- Functions:
- 1. To store arrays of the height values of grid points in singles. And, the layer/story/level of grid point is presumed probably based on values of W, H and layer/story/level probably partly dependent on the same 3D array instance file.
- 2. Every standard level height is 16-click-high/16-step-high, and it has a value of 3 in singles. In other words, each click (in terms of elevation tools)/step (in terms of modular stairs) is 0.1875 in singles.
- 3. Negative value can exist in singles and later values can be smaller than the previous values for every layer/story/level as V!ND!CARE's <4-click wall tutorial suggests.
- 4. if there's a swim pool, the underground layer of grid points will be placed earlier than the ground lot origin.
Instance ID 0x03
- DWORD
- Count X [offset ranges: 81-84 / 0x51-0x54] (Width = n1 x 10)
- DWORD
- Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
- DWORD
- Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of array layers/levels/stories)
- Data storage format
- BYTE
- Unknown
- Guesses: This may be a road pattern array or tiled grid array?
- (Lot origin is the 'corner point' the shadow points at, and it is the origin a lot rotates at.)
- eg1 = 30 repeats of 20(0x00)-10(0x01) for a lot (Width=30 & Height=30; lot origin @ right & back corner; an empty 3x2 lot)
- eg2 = 30 repeats of 10(0x01)-20(0x00) for a lot (Width=30 & Height=30; lot origin @ left & front corner; an empty 3x2 lot)
- eg3 = 600(0x00)-300(0x01) for a lot (Width=30 & Height=30; lot origin @ left & back corner; an empty 3x2 lot)
- eg4 = 300(0x01)-600(0x00) for a lot (Width=30 & Height=30; lot origin @ right & front corner; an empty 3x2 lot)
- eg5 = 300(0x01)-900(0x00) for a lot (Width=40 & Height=30; lot origin @ right & front corner; an empty 3x3 lot)
- eg6 = 400(0x01)-1200(0x00) for a lot (Width=40 & Height=40; lot origin @ right & front corner; an empty 4x3 lot)
- (Lot origin is the 'corner point' the shadow points at, and it is the origin a lot rotates at.)
Instance ID 0x09, 0x0A, or 0x0B
- DWORD
- Count X [offset ranges: 81-84 / 0x51-0x54] (Width = n1 x 10)
- DWORD
- Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
- DWORD
- Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of array layers/levels/stories)
- Data storage format
- Unknown
- repeat count = 2^3 x W x H
- eg1 = 7200(0x00) for empty unbuilt lots of Width=30 & Height=30
- eg2 = 9600(0x00) for empty unbuilt lots of Width=40 & Height=30
- eg3 = 12800(0x00) for empty unbuilt lots of Width=40 & Height=40
- eg4 = 14400(0x00) for empty built lots of Width=30 & Height=30 with the only ground wall deleted
- repeat count = 2^3 x W x H
Instance ID 0x0C
- DWORD
- Count X [offset ranges: 81-84 / 0x51-0x54] (Width = n1 x 10)
- DWORD
- Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
- DWORD
- Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of array layers/levels/stories)
;DWORD :Count n ;''for each entry'' ;DWORD :unknown
- Data storage format
- Unknown
- Known "values"
- 0x00000001
- 0x00000002
- 0x00000003
- 0x00000004
- 0x00000005
- 0x00000006
- 0x00000007
- 0x00000008
- 0x0000008c (140)
- Array format
- length = 3636 offsets
Instance ID 0x14
- DWORD
- Count X [offset ranges: 81-84 / 0x51-0x54] (Width = n1 x 10)
- DWORD
- Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
- DWORD
- Count Z [offset ranges: 89-92 / 0x59-0x5C] (0x00000000)
- Data storage format
- 16 bytes
- Unknown
- Array format
- empty3x2= Width=30 & Height=30; LO = Lot Origin; @ = at; F = Front; B = Back; R = Right; L = Left
- eg1 = empty3x2-LO@FR [(nil/null)]
- eg2 = empty3x2-LO@BR [(nil/null)]
- empty3x2= Width=30 & Height=30; LO = Lot Origin; @ = at; F = Front; B = Back; R = Right; L = Left
Instance ID 0x15
- DWORD
- Count X [offset ranges: 81-84 / 0x51-0x54] (Width = n1 x 10)
- DWORD
- Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
- DWORD
- Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of array layers/levels/stories)
- Data storage format
- 4 bytes
- unknown (Unlikely Singles)
- Array format
- 4(Width x Height)
- empty3x2= Width=30 & Height=30; LO = Lot Origin; @ = at; F = Front; B = Back; R = Right; L = Left
- eg1 = empty3x2-LO@FR [3600(0x01)]
- eg2 = empty3x2-LO@BR [3600(0x01)]
- empty3x2= Width=30 & Height=30; LO = Lot Origin; @ = at; F = Front; B = Back; R = Right; L = Left
See Also
This article is imported from the old MTS2 wiki. It's original page, with comments, can be found at http://old_wiki.modthesims2.com/2A51171B