Difference between revisions of "2A51171B"

From SimsWiki
Jump to: navigation, search
(+ more infos on instance 0x00 array data format)
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{Resource tgi
 
{{Resource tgi
 
|short = 3DARY
 
|short = 3DARY
|long = 3D array
+
|long = 3D Array
 
}}
 
}}
  
 
==Format==
 
==Format==
;ZEROs
+
===Header===
:Unknown [offset ranges: 0-63 / 0x00-0x3F]
+
As specified in [[WDB]].
;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)
+
  
_______________________________________________________________
+
; DWORD : Block ID (2A51171B)
 +
; DWORD : Block version (only known version is 1)
 +
; [[7BITSTR]] : Block name (c3DArray)
  
; *** the following parts depend on the instance number.
+
===Data Section===
 
+
; DWORD : Count X
;DWORD
+
; DWORD : Count Y
:Count X [offset ranges: 81-84 / 0x51-0x54] (instance number dependent)
+
; DWORD : Count Z
;DWORD
+
; variable : Array[Z,X,Y] (see below)
: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 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.
+
:Array[Z,X,Y] is a 3-dimensional array *of Objects* with depth Z, height X, and width Y. The type of data contained within the Object varies by Instance ID. Z is the outer loop, X is the middle loop, and Y is the inner loop, ie:
 +
:Repeat Z times
 +
::Repeat X times
 +
:::Repeat Y times
 +
::::Object
 
_______________________________________________________________
 
_______________________________________________________________
  
  
 
===Instance ID 0x00===
 
===Instance ID 0x00===
 +
* It is for the location of floor tiles, including road tiles.
  
 
;DWORD
 
;DWORD
Line 40: Line 35:
 
:Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
 
:Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
 
;DWORD
 
;DWORD
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of array layers/levels/stories)
+
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of levels/stories)
  
;Data storage format:
+
Repeat Z times
: Note: W = West; N = North; E = East; S = South; "?" = Unknown where Known values of "?" = 0
+
:Repeat X times
: 8 Bytes
+
::Repeat Y times
: 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  
+
:::;WORD
 +
::::West quarter tile reference number
 +
:::;WORD
 +
::::North quarter tile reference number
 +
:::;WORD
 +
::::East quarter tile reference number
 +
:::;WORD
 +
::::South quarter tile reference number
 +
 
 +
* Notes:
 +
*# Floor tile reference number found in String Map [[SMAP]] [[CAC4FC40]] instance 0x0E
 +
*# 0x0000 means no floor tile.
  
 
[[Image:Grid-direction-data-format.jpg]]
 
[[Image:Grid-direction-data-format.jpg]]
  
* 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;
+
===Instance ID 0x01===
** 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))-} ]
+
  
 
+
Array contains the elevation of the grid points for each level on the lot.
===Instance ID 0x01===
+
  
 
;DWORD
 
;DWORD
Line 66: Line 66:
 
:(number of grid point along the Height)
 
:(number of grid point along the Height)
 
;DWORD
 
;DWORD
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of array layers/levels/stories)
+
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of levels/stories)
  
;Data storage format:
+
Repeat Z times
:Float (in singles)
+
:Repeat X times
 +
::Repeat Y times
 +
:::;Float (in singles)
 +
::::Elevation of the grid point
  
* Functions:
+
Notes:
 
+
# The elevation of each grid point is relative to the Z-Value of the [[LDEF]] Lot Description in the neighborhood package.
** 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.
+
# The standard elevation for the ground level and roads is 0.
** 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.
+
# The standard elevation for each level is 3.0 more than the previous level, or 16-click-high/16-step-high.  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.
+
# The height of walls is determined by the difference in elevations from one level to the next.
** 4. if there's a swim pool, the underground layer of grid points will be placed earlier than the ground lot origin.
+
# A basement is built at ground level, which is why the ground slopes down when creating a basement.
 +
# A negative elevation means that the grid point is lower than the standard elevation of the lot (usually the elevation of the road). For example, creating a basement will usually move the ground level below the road, so the elevation of those grid points will be negative.
 +
# There is an optional underground level. To determine whether this level exists, check the minimum level of the lot in the [[WGRA]] Wall Graph. The only known underground level is the swimming pool; but an underground level can continue to exist even after the swimming pool has been removed.
 +
#* If the underground level exists, then:
 +
#** The minimum level specified in [[WGRA]] will be -1
 +
#** Depth = 0 of the Array will contain the elevations of the underground level
 +
#** Depth = 1 of the Array will contain the elevations of the ground level
 +
#* Otherwise (default):
 +
#** The minimum level specified in [[WGRA]] will be 0
 +
#** Depth = 0 of the Array will contain the elevations of the ground level
  
 +
[[Image:Hex001-lotfile.png]]
 +
[[Image:Hex001-lot.png]]
  
 
===Instance ID 0x03===
 
===Instance ID 0x03===
 +
 +
Array contains information about locked road tiles on the lot.
  
 
;DWORD
 
;DWORD
Line 86: Line 102:
 
:Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
 
:Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
 
;DWORD
 
;DWORD
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of array layers/levels/stories)
+
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of levels/stories)
  
;Data storage format:
+
Repeat Z times
:BYTE
+
:Repeat X times
:Unknown
+
::Repeat Y times
 +
:::;BYTE
 +
::::Locking information
 +
::::0 is unlocked
  
*  Guesses: This may be a road pattern array or tiled grid array?
+
===Instance ID 0x09, 0x0A, or 0x0B===
**  (Lot origin is the 'corner point' the shadow points at, and it is the origin a lot rotates at.)
+
* Room ID from [[WGRA]] Array B
*** eg1 = 30 repeats of 20(0x00)-10(0x01) for a lot (Width=30 & Height=30; lot origin @ right & back corner; an empty 3x2 lot)
+
* They are related to a closed room as data are added into them upon formation of a closed room. Values for room (light, load, place)[ [http://www.modthesims2.com/showthread.php?t=204112 Ref.: @ build mode, press the buttons "shift" & "alt"... an info window pops up ] ] matches values in instances 0x0B, 0x0A  and 0x09 respectively.  Not all three will be used or marked when a given closed room is made.  The raise in numeric value is accumulative dependent on how many times one is used along the history of undeleted closed rooms in a 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)
+
** for instance, a wall1 room was made first, it happened all three were employed, then (1,1,1) resulted inside such room.  Thirdly, a foundation block was made, (2,2,2) resulted for the inside of the foundation.  Fourthly, a room of screen deck was made, (3,3,0) resulted inside the screen room.
*** eg3 = 600(0x00)-300(0x01) for a lot (Width=30 & Height=30; lot origin @ left & back corner; an empty 3x2 lot)
+
Fifthly, a room of column deck was formed, (0,4,0) resulted inside it.  Sixthly, a roof room was built , (4,0,3) resulted inside the attic room.  Seventhly, a wall1 room was built, (5,5,4) resulted inside the room.  Note, the unclosed rooms and the "outside" had (0,0,0) for the three of "room".
*** 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)
+
  
 
===Instance ID 0x09, 0x0A, or 0x0B===
 
  
 
;DWORD
 
;DWORD
Line 109: Line 123:
 
:Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
 
:Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
 
;DWORD
 
;DWORD
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of array layers/levels/stories)
+
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of levels/stories)
  
 
;Data storage format:
 
;Data storage format:
Line 119: Line 133:
 
*** eg3 = 12800(0x00) for empty unbuilt lots of Width=40 & Height=40
 
*** 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
 
*** eg4 = 14400(0x00) for empty built lots of Width=30 & Height=30 with the only ground wall deleted
 
  
 
===Instance ID 0x0C===
 
===Instance ID 0x0C===
 +
* It is for the location of objects. Unlike floor tile, it stores the instance numbers of object ([[ObjT]]) files instead of object IDs or lot-individually assigned reference numbers.
  
 
;DWORD
 
;DWORD
Line 128: Line 142:
 
:Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
 
:Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
 
;DWORD
 
;DWORD
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of array layers/levels/stories)
+
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of levels/stories)
  
 
<pre>
 
<pre>
Line 152: Line 166:
  
 
:Array format
 
:Array format
: length = 3636 offsets
+
: length = 3636 offsets for a 3x2 empty lot
 
+
: length = 3648 offsets for a 3x2 lot with 4 extra singly-tiled objects
  
 
===Instance ID 0x14===
 
===Instance ID 0x14===
 +
 +
* This may be an occupancy array between story/levels and between grid lines, probably used for room occupancy.  It seems to have West, North, East and South respectively as in the case of floor tile.  This is also one of the differences between levelroom foundation wall and unlocked foundation wall; unlocked foundation wall caused no alteration on value in this file while levelroom foundation wall caused certain values to become "0x00000000" from "0xFFFFFFFF".  Swim-pool caused "0x00000003" instead of "0x00000000" from "0xFFFFFFFF".  levelroom foundation blocks also caused "0x00000000" from "0xFFFFFFFF".  So far, it may explain why levelroom foundation wall still can have some bits of blockage property and tiling oddities.
 +
* If the data format is not Dword, Word would be the next potential format and NW, NE, SE and SW may be present.
  
 
;DWORD
 
;DWORD
Line 162: Line 179:
 
:Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
 
:Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
 
;DWORD
 
;DWORD
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (0x00000000)
+
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of levels/stories - 1)
  
 
;Data storage format:
 
;Data storage format:
Line 173: Line 190:
 
*** eg2 = empty3x2-LO@BR [(nil/null)]
 
*** eg2 = empty3x2-LO@BR [(nil/null)]
  
 +
: Test 1 {lot origin is at the lot's back right as the shadow suggests. There were 4 stories/levels}
 +
* offset ranges 1:
 +
** 1485-1515 ; 2 x {4(3 0 0 0)} and
 +
** 1805-1836 ; 2 x {4(3 0 0 0)} for the swim-pool block shown in [[Image:3DArray0x15-0x01to0x00-pooltiles.jpg]]
 +
* offset ranges 2:
 +
** 3629-3660 ; 4(256)4{0}4(0)4(256) -- 4(256)4(256)4{0}4(0) and
 +
** 3949-3980 ; 4{0}4(0)4(256)4(256) -- 4{0}4(256)4(256)4(0) for the levelroom foundation wall
 +
* offset ranges 3:
 +
** 5629-5660 ; 8(4(0)) for the 2 consecutive levelroom foundation blocks.
  
 
===Instance ID 0x15===
 
===Instance ID 0x15===
 +
 +
* This may be an array for the presentation of the horizontal plane(s) for the lot imposter, and it appears to affect non-levelroom partition-dependent build tools like wall and fence tools.
  
 
;DWORD
 
;DWORD
Line 181: Line 209:
 
:Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
 
:Count Y [offset ranges: 85-88 / 0x55-0x58] (Height = n2 x 10)
 
;DWORD
 
;DWORD
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of array layers/levels/stories)
+
:Count Z [offset ranges: 89-92 / 0x59-0x5C] (number of levels/stories)
  
 
;Data storage format:
 
;Data storage format:
 
;4 bytes
 
;4 bytes
 
:unknown (Unlikely Singles)
 
:unknown (Unlikely Singles)
 +
: from empty lot, 4x (0x01)
  
 
:Array format
 
:Array format
 
* 4(Width x Height)
 
* 4(Width x Height)
 
** empty3x2= Width=30 & Height=30; LO = Lot Origin; @ = at; F = Front; B = Back; R = Right; L = Left
 
** empty3x2= Width=30 & Height=30; LO = Lot Origin; @ = at; F = Front; B = Back; R = Right; L = Left
*** eg1 = empty3x2-LO@FR [3600(0x01)]
+
*** eg1 = empty3x2-LO@FR [Nt(0x01)](Nt = 3600 = 30 x 30 x 1 x 4)
*** eg2 = empty3x2-LO@BR [3600(0x01)]
+
*** eg2 = empty3x2-LO@BR [Nt(0x01)](Nt = 3600 = 30 x 30 x 1 x 4)
 +
*** eg3 = 1x1 lot 2level [Nt(0x01)](Nt = 3600 = 20 x 10 x 2 x 4)
 +
 
 +
: Testing:
 +
* all 0x01 --> 0x00 in base game ; the levelroom foundation wall was built before such testing as a control.
 +
** [[Image:3DArray0x15-0x01to0x00.jpg]]
 +
** [[Image:3DArray0x15-0x01to0x00-noFenceAnywhere.jpg]]
 +
** [[Image:3DArray0x15-0x01to0x00-noWallAnywhere.jpg]]
 +
** [[Image:[email protected]]]
 +
** [[Image:3DArray0x15-0x01to0x00-pooltiles.jpg]]
 +
* Observations:
 +
* Buildable
 +
*** foundations
 +
*** swim-pool
 +
*** modular stairs
 +
*** plant objects
 +
*** roof-tool-based roofs
 +
* Unbuildable
 +
*** partitions including fences, fence-arch, wall 1 (default wall), unlocked walls of foundation wall, screen wall, attic wall; yet, Partitions like walls and fences can form as long as a ending side is at the pool border whether the cheat "moveobjects on" is used.  Previously made walls remained.
 +
*** floor tiles unbuildable or unpresented?
 +
* The cheat "moveobjects on" can initiate the presentation of grids on the road side.
 +
* Any newly introduced array values will remain 0x01; for example, those added by a swim-pool or an extra story/level.
 +
 
 +
 
 +
===Instance ID 0x1B===
 +
 
 +
Array contains information about locked road tiles on the lot.
 +
 
 +
;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 levels/stories)
 +
 
 +
;Data storage format:
 +
;8 bytes
 +
:unknown
 +
: from empty lot, 8x (0xFF)
 +
*** eg1 = 40 x 10 lot (beach) with 2 pages [Nt(0xFF)](Nt = 6400 = 40 x 10 x 2 x 8)
 +
*** eg2 = 20 x 60 lot (beach) with 2 pages [Nt(0xFF)](Nt = 19200 = 20 x 60 x 2 x 8)
 +
 
 +
 
 +
===Instance ID 0x20===
 +
 
 +
Array contains information about locked road tiles on the lot.
 +
 
 +
;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 levels/stories)
 +
 
 +
;Data storage format:
 +
;2 bytes
 +
:unknown
 +
: from empty lot, 2x (0x11)
 +
*** eg1 = 40 x 10 lot (beach) with 2 pages [Nt(0x11)](Nt = 1600 = 40 x 10 x 2 x 2)
 +
*** eg2 = 20 x 60 lot (beach) with 2 pages [Nt(0x11)](Nt = 4800 = 20 x 60 x 2 x 2)
 +
 
 +
 
 +
Terminology
 +
Note: page @ matshad/txmt == Storey/story @ UI == level/grid layer @ build mode
 +
 
 +
 
 +
 
 +
 
 +
 
  
 
=See Also=
 
=See Also=
Line 198: Line 295:
 
{{OldWikiEntryCleaned}}
 
{{OldWikiEntryCleaned}}
  
[[Category:Modding]]
+
[[Category:Sims 2 Modding]]
 
[[Category:InternalFormats]]
 
[[Category:InternalFormats]]
 
[[Category:FormatsByTGI]]
 
[[Category:FormatsByTGI]]

Latest revision as of 12:17, 17 September 2012

2A51171B
Short name: 3DARY
Long name: 3D Array

Contents

[edit] Format

[edit] Header

As specified in WDB.

DWORD 
Block ID (2A51171B)
DWORD 
Block version (only known version is 1)
7BITSTR 
Block name (c3DArray)

[edit] Data Section

DWORD 
Count X
DWORD 
Count Y
DWORD 
Count Z
variable 
Array[Z,X,Y] (see below)
Array format
Array[Z,X,Y] is a 3-dimensional array *of Objects* with depth Z, height X, and width Y. The type of data contained within the Object varies by Instance ID. Z is the outer loop, X is the middle loop, and Y is the inner loop, ie:
Repeat Z times
Repeat X times
Repeat Y times
Object

_______________________________________________________________


[edit] Instance ID 0x00

  • It is for the location of floor tiles, including road tiles.
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 levels/stories)

Repeat Z times

Repeat X times
Repeat Y times
WORD
West quarter tile reference number
WORD
North quarter tile reference number
WORD
East quarter tile reference number
WORD
South quarter tile reference number
  • Notes:
    1. Floor tile reference number found in String Map SMAP CAC4FC40 instance 0x0E
    2. 0x0000 means no floor tile.

Grid-direction-data-format.jpg

[edit] Instance ID 0x01

Array contains the elevation of the grid points for each level on the lot.

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 levels/stories)

Repeat Z times

Repeat X times
Repeat Y times
Float (in singles)
Elevation of the grid point

Notes:

  1. The elevation of each grid point is relative to the Z-Value of the LDEF Lot Description in the neighborhood package.
  2. The standard elevation for the ground level and roads is 0.
  3. The standard elevation for each level is 3.0 more than the previous level, or 16-click-high/16-step-high. In other words, each click (in terms of elevation tools)/step (in terms of modular stairs) is 0.1875 in singles.
  4. The height of walls is determined by the difference in elevations from one level to the next.
  5. A basement is built at ground level, which is why the ground slopes down when creating a basement.
  6. A negative elevation means that the grid point is lower than the standard elevation of the lot (usually the elevation of the road). For example, creating a basement will usually move the ground level below the road, so the elevation of those grid points will be negative.
  7. There is an optional underground level. To determine whether this level exists, check the minimum level of the lot in the WGRA Wall Graph. The only known underground level is the swimming pool; but an underground level can continue to exist even after the swimming pool has been removed.
    • If the underground level exists, then:
      • The minimum level specified in WGRA will be -1
      • Depth = 0 of the Array will contain the elevations of the underground level
      • Depth = 1 of the Array will contain the elevations of the ground level
    • Otherwise (default):
      • The minimum level specified in WGRA will be 0
      • Depth = 0 of the Array will contain the elevations of the ground level

Hex001-lotfile.png Hex001-lot.png

[edit] Instance ID 0x03

Array contains information about locked road tiles on the lot.

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 levels/stories)

Repeat Z times

Repeat X times
Repeat Y times
BYTE
Locking information
0 is unlocked

[edit] Instance ID 0x09, 0x0A, or 0x0B

  • Room ID from WGRA Array B
  • They are related to a closed room as data are added into them upon formation of a closed room. Values for room (light, load, place)[ Ref.: @ build mode, press the buttons "shift" & "alt"... an info window pops up ] matches values in instances 0x0B, 0x0A and 0x09 respectively. Not all three will be used or marked when a given closed room is made. The raise in numeric value is accumulative dependent on how many times one is used along the history of undeleted closed rooms in a lot.
    • for instance, a wall1 room was made first, it happened all three were employed, then (1,1,1) resulted inside such room. Thirdly, a foundation block was made, (2,2,2) resulted for the inside of the foundation. Fourthly, a room of screen deck was made, (3,3,0) resulted inside the screen room.

Fifthly, a room of column deck was formed, (0,4,0) resulted inside it. Sixthly, a roof room was built , (4,0,3) resulted inside the attic room. Seventhly, a wall1 room was built, (5,5,4) resulted inside the room. Note, the unclosed rooms and the "outside" had (0,0,0) for the three of "room".


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 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

[edit] Instance ID 0x0C

  • It is for the location of objects. Unlike floor tile, it stores the instance numbers of object (ObjT) files instead of object IDs or lot-individually assigned reference numbers.
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 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 for a 3x2 empty lot
length = 3648 offsets for a 3x2 lot with 4 extra singly-tiled objects

[edit] Instance ID 0x14

  • This may be an occupancy array between story/levels and between grid lines, probably used for room occupancy. It seems to have West, North, East and South respectively as in the case of floor tile. This is also one of the differences between levelroom foundation wall and unlocked foundation wall; unlocked foundation wall caused no alteration on value in this file while levelroom foundation wall caused certain values to become "0x00000000" from "0xFFFFFFFF". Swim-pool caused "0x00000003" instead of "0x00000000" from "0xFFFFFFFF". levelroom foundation blocks also caused "0x00000000" from "0xFFFFFFFF". So far, it may explain why levelroom foundation wall still can have some bits of blockage property and tiling oddities.
  • If the data format is not Dword, Word would be the next potential format and NW, NE, SE and SW may be present.
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 levels/stories - 1)
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)]
Test 1 {lot origin is at the lot's back right as the shadow suggests. There were 4 stories/levels}
  • offset ranges 1:
    • 1485-1515 ; 2 x {4(3 0 0 0)} and
    • 1805-1836 ; 2 x {4(3 0 0 0)} for the swim-pool block shown in 3DArray0x15-0x01to0x00-pooltiles.jpg
  • offset ranges 2:
    • 3629-3660 ; 4(256)4{0}4(0)4(256) -- 4(256)4(256)4{0}4(0) and
    • 3949-3980 ; 4{0}4(0)4(256)4(256) -- 4{0}4(256)4(256)4(0) for the levelroom foundation wall
  • offset ranges 3:
    • 5629-5660 ; 8(4(0)) for the 2 consecutive levelroom foundation blocks.

[edit] Instance ID 0x15

  • This may be an array for the presentation of the horizontal plane(s) for the lot imposter, and it appears to affect non-levelroom partition-dependent build tools like wall and fence tools.
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 levels/stories)
Data storage format
4 bytes
unknown (Unlikely Singles)
from empty lot, 4x (0x01)
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 [Nt(0x01)](Nt = 3600 = 30 x 30 x 1 x 4)
      • eg2 = empty3x2-LO@BR [Nt(0x01)](Nt = 3600 = 30 x 30 x 1 x 4)
      • eg3 = 1x1 lot 2level [Nt(0x01)](Nt = 3600 = 20 x 10 x 2 x 4)
Testing:
  • all 0x01 --> 0x00 in base game ; the levelroom foundation wall was built before such testing as a control.
    • 3DArray0x15-0x01to0x00.jpg
    • 3DArray0x15-0x01to0x00-noFenceAnywhere.jpg
    • 3DArray0x15-0x01to0x00-noWallAnywhere.jpg
    • 3DArray0x15-0x01to0x00-partitionsFormed@Pool.jpg
    • 3DArray0x15-0x01to0x00-pooltiles.jpg
  • Observations:
  • Buildable
      • foundations
      • swim-pool
      • modular stairs
      • plant objects
      • roof-tool-based roofs
  • Unbuildable
      • partitions including fences, fence-arch, wall 1 (default wall), unlocked walls of foundation wall, screen wall, attic wall; yet, Partitions like walls and fences can form as long as a ending side is at the pool border whether the cheat "moveobjects on" is used. Previously made walls remained.
      • floor tiles unbuildable or unpresented?
  • The cheat "moveobjects on" can initiate the presentation of grids on the road side.
  • Any newly introduced array values will remain 0x01; for example, those added by a swim-pool or an extra story/level.


[edit] Instance ID 0x1B

Array contains information about locked road tiles on the lot.

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 levels/stories)
Data storage format
8 bytes
unknown
from empty lot, 8x (0xFF)
      • eg1 = 40 x 10 lot (beach) with 2 pages [Nt(0xFF)](Nt = 6400 = 40 x 10 x 2 x 8)
      • eg2 = 20 x 60 lot (beach) with 2 pages [Nt(0xFF)](Nt = 19200 = 20 x 60 x 2 x 8)


[edit] Instance ID 0x20

Array contains information about locked road tiles on the lot.

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 levels/stories)
Data storage format
2 bytes
unknown
from empty lot, 2x (0x11)
      • eg1 = 40 x 10 lot (beach) with 2 pages [Nt(0x11)](Nt = 1600 = 40 x 10 x 2 x 2)
      • eg2 = 20 x 60 lot (beach) with 2 pages [Nt(0x11)](Nt = 4800 = 20 x 60 x 2 x 2)


Terminology Note: page @ matshad/txmt == Storey/story @ UI == level/grid layer @ build mode




[edit] 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

Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox