Difference between revisions of "Barbie Fashion Show"
Line 6: | Line 6: | ||
The game's internal engine is apparently called Ring0 or "R0". |
The game's internal engine is apparently called Ring0 or "R0". |
||
==Data Files == |
==Data Files (KAR) == |
||
The main data files are .KAR files. The game has a total of 41 KAR files. |
The main data files are .KAR files. The game has a total of 41 KAR files. |
||
Line 110: | Line 110: | ||
* libsip (used to let python code extend C++ classes) |
* libsip (used to let python code extend C++ classes) |
||
* libEnginec (game engine functionality) |
* 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. |
|||
==See also== |
==See also== |
Revision as of 20:23, 25 June 2023
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 | ||
ObFm | ||
PhFm | ||
PtFm | ||
ScFm | Scripting | Modified .pyc bytecode |
SnFm | ||
SsFm | ||
StFm | ||
TbFm | ||
TrFm | ||
TxFm |
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.