Skip to content

The Sims Online ‐ RAS Stream

Jeremy Glazebrook edited this page Apr 23, 2026 · 3 revisions

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.

Sample RAS File

Pre-Alpha Sample

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.

Structure Notes

New & Improved Structure

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

Clone this wiki locally