Repository navigation
The Sims Online ‐ RAS Stream
This type of stream uses Chunks similar to an IFF file. It contains house data, and it's used in the server when sending the house data to the Client, and when the Client is updating the house data to the server after a change is made.
A sample RAS Stream file can be found here, which is a lot the TSOClient has dumped to the disk from Pre-Alpha using the GetHouseBlobByID and SetHouseBlobByID functions in nio2so.
This information is archived from niotso.org
- Header - Should be "_SAR" (if the file is little-endian)
- Stream size - Size of the entire file
- Version - Should be 4
- Chunks
Each chunk, excluding TOC_, has the following form:
- Chunk type - 4 bytes
- Chunk id - 4 bytes
- Chunk size - 4 bytes
- Chunk contents
TOC_ has the following form:
- Chunk type - 4 bytes
- Chunk contents
The RAS format contains the following chunks:
- TOC_
- ver_
- save
- SIM_
- WRLD
- SELI (for each object)
- OBJI, OBJ_, objP (for each object)
- OMOD
- FMGR
- WMGR
- HSID
- HDSC
- HRMT
- HRTE
- AMBN
TOC_ contents:
- Unknown - 2 bytes; should be 32; maybe flags
- Chunk listings - For each chunk listing:
- Chunk type - 4 bytes
- Unknown - 4 bytes; maybe chunk id
- Offset - 4 bytes
- (Version 4 only) Unknown - 2 bytes; should be 0 or 1; maybe flags
ver_ contents:
- Version - 4 bytes; should be 2
save contents:
- Unknown - 4 bytes; should be 3
- Unknown - 4 bytes; should be 0
- Unknown - 4 bytes; should be 0
SIM_ contents:
- Compressed stream
WRLD contents:
- Compressed stream
SELI contents:
- Object guid - 4 bytes
- Unknown - 4 bytes; lot coordinates?
- Unknown - 5 shorts in succession
- Clsid - 4 bytes; GZCLSID_cTSOObject, GZCLSID_cTSOMTObject, or similar
OBJI contents:
- Object instance id - 2 bytes
- Object guid - 4 bytes
- Unknown - 0x103e7 or 0x10002 or 0x14e1f or 0x1270f
OBJ_ contents:
- Compressed stream
objP contents:
- Unknown - "01 00 00 00 00 00"
OMOD contents:
- Unknown: 04 00 00 00 05 00 05 00 00 00 00
FMGR contents:
- u32 unknown1_count
- unknown1s - for each unknown1:
- string unknown1_1
- u32 unknown1_2_count
- unknown1_2s - for each unknown1_2:
- u16 unknown1_2_1
- u16 unknown1_2_2
- u32 unknown1_2_3
WMGR contents:
- Unknown: 4 bytes; should be 0
HSID contents:
- Unknown: 4 bytes set to 0
- Location: 4 bytes, e.g. 0x00b800d5
- Lot category: 1 byte between 0x00 and 0x0b (inclusive) Note: >=0x0b means any object can run on the lot (see TSOViewerClientD_base+0xf0ba)
HDSC contents:
- String 1 - A pascalvlc string, e.g. "60"
- String 2 - A pascalvlc string, e.g. "slate1"
HRMT contents:
- Unknown - 4 bytes; should be 1
- Property Leader / Lot Owner - 4 bytes; in the NoNetwork lot, this defaults to kNewAvatarID (0xffff1111)
HRTE contents:
- Compressed stream
AMBN contents:
- Unknown - 4 bytes; should be 0
Compressed stream format:
- Body 1 size
- Body 1
- Decompressed size
- Body 2
- Body 2 Size
- Refpack data
These are the objects that exist on the NoNetwork lot:
0x0007: 0x81e6bef9 (Portal - Pedestrian) - shorts=[6,3,39,0,4], clsid=GZCLSID_cTSOObject 0x0004: 0xef121974 (MailBox - Part A) - shorts=[11,8,3,1,4], clsid=GZCLSID_cTSOMTObject 0x0003: 0x729c4842 (MailBox - Part B) - shorts=[13,2,3,1,4], clsid=GZCLSID_cTSOMTObject 0x0005: 0xa4258067 (Trash Outside) - shorts=[9,6,3,1,4], clsid=GZCLSID_cTSOObject 0x0006: 0x313d2f9a (Leave Lot - Pay Phone) - shorts=[9,4,23,8,4], clsid=GZCLSID_cTSOObject
0xC61931DC (NPC Maid) 0x1D28F41A: GZCLSID_cTSOPerson