Barbie Fashion Show
Basic details
Barbie Fashion Show was released in 2004 by Vivendi, developed by Knowledge Adventure (now known as Jumpstart Games). It uses the Power Render game engine, targeting DirectX.
Scripting is provided by Python 2.2, implemented through SIP by Riverbank Computing.
The game's internal engine is apparently called Ring0 or "R0".
Data Files (KAR)
The main data files are .KAR files. The game has a total of 41 KAR files.
KAR files are built on an IFF/RIFF format, with inconsistent endianness.
KAR Chunks:
The function at 004ee380 in BarbieFashion.exe seems to select how different chunks are loaded. From that function we can extract all (?) chunk types, other than meta chunks
Name | Class | Purpose |
---|---|---|
CAT | Meta | Starts the file |
RIFF | Meta | |
RsCk | Meta | |
DtFm | ||
FtFm | ||
IfFm | ||
InFm | ||
LvFm | ||
MtFm | Textures | Seems to be metadata for textures |
ObFm | ||
PhFm | ||
PtFm | ||
ScFm | Scripting | Modified .pyc bytecode |
SnFm | Sounds | Sound effects |
SsFm | ||
StFm | ||
TbFm | ||
TrFm | ||
TxFm | Textures | Raw pixels for textures |
Python
Python bytecode in the form of modified .pyc files exists in two forms:
- The sipEngine.bc file which is loaded at game start
- ScFm chunks. These are saved in the files GlobalSc.kar ModelMatcherSc.kar PortfolioSc.kar SigninSc.kar Stage5Sc.kar TravelSc.kar
In both cases, they are missing their header. Add the bytes "2D ED 0D 0A 00 00 00 00" to the beginning of the file, and they can be successfully decompiled by Easy Python Decompiler.
For the kar files, as they are the only chunk in the file, you can convert them to stand-alone .BC files by removing the first 44 bytes. Then add the above bytes and rename to .pyc to disassemble.
The game registers two modules with the python interpreter:
- libsip (used to let python code extend C++ classes)
- libEnginec (game engine functionality)
KAS files
KAS files are used for music. The two KAS files are CreditsStream1.KAS and globalStream1.KAS.
Both are Ogg Vorbis soundfiles with a 4-byte header added. In both cases the header is 31 CC CC CC, and when removed, they can be opened by any .ogg program.
GlobalStream1.KAS is 38 minutes, 43 seconds
CreditsStream1.KAS is 3 minutes, 53 seconds.