EvilEngine/UIM: Difference between revisions
Content added Content deleted
(→Format) |
No edit summary |
||
Line 6: | Line 6: | ||
==Format== |
==Format== |
||
A UI Motion asset begins with a 0x18-byte header which extends from [[Base|xBaseAsset]]: |
|||
<source lang=cpp> |
|||
struct zUIMotionAsset : xBaseAsset |
|||
{ |
|||
uint8 cmdCount; |
|||
uint8 in; |
|||
uint8 pad[2]; |
|||
uint32 cmdSize; |
|||
float totalTime; |
|||
float loopTime; |
|||
}; |
|||
</source> |
|||
{| class="wikitable" |
{| class="wikitable" |
||
! Offset !! Type !! Variable !! Description |
! Offset !! Type !! Variable !! Description |
||
|- |
|- |
||
| 0x08 || |
| 0x08 || uint8 || '''cmdCount''' || Number of commands after the header |
||
|- |
|- |
||
| 0x09 || |
| 0x09 || uint8 || '''in''' || |
||
|- |
|- |
||
| 0x0A || |
| 0x0A || uint8[2] || '''pad''' || Padding |
||
|- |
|- |
||
| 0x0C || |
| 0x0C || uint32 || '''cmdSize''' || |
||
|- |
|- |
||
| 0x10 || float || '''totalTime''' || |
| 0x10 || float || '''totalTime''' || |
||
|- |
|- |
||
| 0x14 || float || '''loopTime''' || |
| 0x14 || float || '''loopTime''' || |
||
|} |
|||
Following the header is a list of Commands (with a length of '''cmdCount'''). The format of each command is explained below. |
|||
===Commands=== |
|||
There are 8 types of Commands defined: |
|||
* 0 - Move |
|||
* 1 - Scale |
|||
* 2 - Rotate |
|||
* 3 - Opacity |
|||
* 4 - AbsoluteScale |
|||
* 5 - Brightness |
|||
* 6 - Color |
|||
* 7 - UVScroll |
|||
Each command type has an 0x18-byte header: |
|||
<source lang=cpp> |
|||
struct zUIMotionCmdAsset |
|||
{ |
|||
uint32 type; |
|||
float startTime; |
|||
float endTime; |
|||
float accelTime; |
|||
float decelTime; |
|||
uint8 enabled; |
|||
// 3 bytes of padding |
|||
}; |
|||
</source> |
|||
{| class="wikitable" |
|||
! Offset !! Type !! Variable !! Description |
|||
|- |
|||
| 0x00 || uint32 || '''type''' || Type ID (see above) |
|||
|- |
|||
| 0x04 || float || '''startTime''' || |
|||
|- |
|||
| 0x08 || float || '''endTime''' || |
|||
|- |
|||
| 0x0C || float || '''accelTime''' || |
|||
|- |
|||
| 0x10 || float || '''decelTime''' || |
|||
|- |
|||
| 0x14 || uint8 || '''enabled''' || |
|||
|- |
|||
| 0x15 || - || - || 3 bytes of padding |
|||
|} |
|||
====Move (Type 0)==== |
|||
Size = 0x20 bytes |
|||
<source lang=cpp> |
|||
struct zUIMotionCmdMove : zUIMotionCmdAsset |
|||
{ |
|||
float distX; |
|||
float distY; |
|||
}; |
|||
</source> |
|||
{| class="wikitable" |
|||
! Offset !! Type !! Variable !! Description |
|||
|- |
|||
| 0x18 || float || '''distX''' || |
|||
|- |
|||
| 0x1C || float || '''distY''' || |
|||
|} |
|||
====Scale (Type 1)==== |
|||
Size = 0x2C bytes |
|||
<source lang=cpp> |
|||
struct zUIMotionCmdScale : zUIMotionCmdAsset |
|||
{ |
|||
float amountX; |
|||
float amountY; |
|||
uint8 centerPivot; |
|||
// 3 bytes of padding |
|||
float centerOffsetX; |
|||
float centerOffsetY; |
|||
}; |
|||
</source> |
|||
{| class="wikitable" |
|||
! Offset !! Type !! Variable !! Description |
|||
|- |
|||
| 0x18 || float || '''amountX''' || |
|||
|- |
|||
| 0x1C || float || '''amountY''' || |
|||
|- |
|||
| 0x20 || uint8 || '''centerPivot''' || |
|||
|- |
|||
| 0x21 || - || - || 3 bytes of padding |
|||
|- |
|||
| 0x24 || float || '''centerOffsetX''' || |
|||
|- |
|||
| 0x28 || float || '''centerOffsetY''' || |
|||
|} |
|||
====Rotate (Type 2)==== |
|||
Size = 0x24 bytes |
|||
<source lang=cpp> |
|||
struct zUIMotionCmdRotate : zUIMotionCmdAsset |
|||
{ |
|||
float rotation; |
|||
float centerOffsetX; |
|||
float centerOffsetY; |
|||
}; |
|||
</source> |
|||
{| class="wikitable" |
|||
! Offset !! Type !! Variable !! Description |
|||
|- |
|||
| 0x18 || float || '''rotation''' || |
|||
|- |
|||
| 0x1C || float || '''centerOffsetX''' || |
|||
|- |
|||
| 0x20 || float || '''centerOffsetY''' || |
|||
|} |
|||
====Opacity (Type 3)==== |
|||
Size = 0x1C bytes |
|||
<source lang=cpp> |
|||
struct zUIMotionCmdOpacity : zUIMotionCmdAsset |
|||
{ |
|||
uint8 startOpacity; |
|||
uint8 endOpacity; |
|||
// 2 bytes of padding |
|||
}; |
|||
</source> |
|||
{| class="wikitable" |
|||
! Offset !! Type !! Variable !! Description |
|||
|- |
|||
| 0x18 || uint8 || '''startOpacity''' || |
|||
|- |
|||
| 0x19 || uint8 || '''endOpacity''' || |
|||
|- |
|||
| 0x1A || - || - || 2 bytes of padding |
|||
|} |
|||
====AbsoluteScale (Type 4)==== |
|||
Size = 0x2C bytes |
|||
<source lang=cpp> |
|||
struct zUIMotionCmdAbsoluteScale : zUIMotionCmdAsset |
|||
{ |
|||
float startX; |
|||
float startY; |
|||
float endX; |
|||
float endY; |
|||
uint8 centerPivot; |
|||
uint8 textScale; |
|||
// 2 bytes of padding |
|||
}; |
|||
</source> |
|||
{| class="wikitable" |
|||
! Offset !! Type !! Variable !! Description |
|||
|- |
|||
| 0x18 || float || '''startX''' || |
|||
|- |
|||
| 0x1C || float || '''startY''' || |
|||
|- |
|||
| 0x20 || float || '''endX''' || |
|||
|- |
|||
| 0x24 || float || '''endY''' || |
|||
|- |
|||
| 0x28 || uint8 || '''centerPivot''' || |
|||
|- |
|||
| 0x29 || uint8 || '''textScale''' || |
|||
|- |
|||
| 0x2A || - || - || 2 bytes of padding |
|||
|} |
|||
====Brightness (Type 5)==== |
|||
Size = 0x1C bytes |
|||
<source lang=cpp> |
|||
struct zUIMotionCmdBrightness : zUIMotionCmdAsset |
|||
{ |
|||
uint8 startBrightness; |
|||
uint8 endBrightness; |
|||
// 2 bytes of padding |
|||
}; |
|||
</source> |
|||
{| class="wikitable" |
|||
! Offset !! Type !! Variable !! Description |
|||
|- |
|||
| 0x18 || uint8 || '''startBrightness''' || |
|||
|- |
|||
| 0x19 || uint8 || '''endBrightness''' || |
|||
|- |
|||
| 0x1A || - || - || 2 bytes of padding |
|||
|} |
|||
====Color (Type 6)==== |
|||
Size = 0x20 bytes |
|||
<source lang=cpp> |
|||
struct zUIMotionCmdColor : zUIMotionCmdAsset |
|||
{ |
|||
uint8 startRed; |
|||
uint8 startGreen; |
|||
uint8 startBlue; |
|||
uint8 endRed; |
|||
uint8 endGreen; |
|||
uint8 endBlue; |
|||
// 2 bytes of padding |
|||
}; |
|||
</source> |
|||
{| class="wikitable" |
|||
! Offset !! Type !! Variable !! Description |
|||
|- |
|||
| 0x18 || uint8 || '''startRed''' || |
|||
|- |
|||
| 0x19 || uint8 || '''startGreen''' || |
|||
|- |
|||
| 0x1A || uint8 || '''startBlue''' || |
|||
|- |
|||
| 0x1B || uint8 || '''endRed''' || |
|||
|- |
|||
| 0x1C || uint8 || '''endGreen''' || |
|||
|- |
|||
| 0x1D || uint8 || '''endBlue''' || |
|||
|- |
|||
| 0x1E || - || - || 2 bytes of padding |
|||
|} |
|||
====UVScroll (Type 7)==== |
|||
Size = 0x20 bytes |
|||
<source lang=cpp> |
|||
struct zUIMotionCmdUVScroll : zUIMotionCmdAsset |
|||
{ |
|||
float amountU; |
|||
float amountV; |
|||
}; |
|||
</source> |
|||
{| class="wikitable" |
|||
! Offset !! Type !! Variable !! Description |
|||
|- |
|||
| 0x18 || float || '''amountU''' || |
|||
|- |
|||
| 0x1C || float || '''amountV''' || |
|||
|} |
|} |
||
Revision as of 03:39, 25 May 2021
UIM | |
---|---|
UI Motion | |
Type | Base |
Games used | The Incredibles |
Format
A UI Motion asset begins with a 0x18-byte header which extends from xBaseAsset:
struct zUIMotionAsset : xBaseAsset
{
uint8 cmdCount;
uint8 in;
uint8 pad[2];
uint32 cmdSize;
float totalTime;
float loopTime;
};
Offset | Type | Variable | Description |
---|---|---|---|
0x08 | uint8 | cmdCount | Number of commands after the header |
0x09 | uint8 | in | |
0x0A | uint8[2] | pad | Padding |
0x0C | uint32 | cmdSize | |
0x10 | float | totalTime | |
0x14 | float | loopTime |
Following the header is a list of Commands (with a length of cmdCount). The format of each command is explained below.
Commands
There are 8 types of Commands defined:
- 0 - Move
- 1 - Scale
- 2 - Rotate
- 3 - Opacity
- 4 - AbsoluteScale
- 5 - Brightness
- 6 - Color
- 7 - UVScroll
Each command type has an 0x18-byte header:
struct zUIMotionCmdAsset
{
uint32 type;
float startTime;
float endTime;
float accelTime;
float decelTime;
uint8 enabled;
// 3 bytes of padding
};
Offset | Type | Variable | Description |
---|---|---|---|
0x00 | uint32 | type | Type ID (see above) |
0x04 | float | startTime | |
0x08 | float | endTime | |
0x0C | float | accelTime | |
0x10 | float | decelTime | |
0x14 | uint8 | enabled | |
0x15 | - | - | 3 bytes of padding |
Move (Type 0)
Size = 0x20 bytes
struct zUIMotionCmdMove : zUIMotionCmdAsset
{
float distX;
float distY;
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | float | distX | |
0x1C | float | distY |
Scale (Type 1)
Size = 0x2C bytes
struct zUIMotionCmdScale : zUIMotionCmdAsset
{
float amountX;
float amountY;
uint8 centerPivot;
// 3 bytes of padding
float centerOffsetX;
float centerOffsetY;
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | float | amountX | |
0x1C | float | amountY | |
0x20 | uint8 | centerPivot | |
0x21 | - | - | 3 bytes of padding |
0x24 | float | centerOffsetX | |
0x28 | float | centerOffsetY |
Rotate (Type 2)
Size = 0x24 bytes
struct zUIMotionCmdRotate : zUIMotionCmdAsset
{
float rotation;
float centerOffsetX;
float centerOffsetY;
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | float | rotation | |
0x1C | float | centerOffsetX | |
0x20 | float | centerOffsetY |
Opacity (Type 3)
Size = 0x1C bytes
struct zUIMotionCmdOpacity : zUIMotionCmdAsset
{
uint8 startOpacity;
uint8 endOpacity;
// 2 bytes of padding
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | uint8 | startOpacity | |
0x19 | uint8 | endOpacity | |
0x1A | - | - | 2 bytes of padding |
AbsoluteScale (Type 4)
Size = 0x2C bytes
struct zUIMotionCmdAbsoluteScale : zUIMotionCmdAsset
{
float startX;
float startY;
float endX;
float endY;
uint8 centerPivot;
uint8 textScale;
// 2 bytes of padding
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | float | startX | |
0x1C | float | startY | |
0x20 | float | endX | |
0x24 | float | endY | |
0x28 | uint8 | centerPivot | |
0x29 | uint8 | textScale | |
0x2A | - | - | 2 bytes of padding |
Brightness (Type 5)
Size = 0x1C bytes
struct zUIMotionCmdBrightness : zUIMotionCmdAsset
{
uint8 startBrightness;
uint8 endBrightness;
// 2 bytes of padding
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | uint8 | startBrightness | |
0x19 | uint8 | endBrightness | |
0x1A | - | - | 2 bytes of padding |
Color (Type 6)
Size = 0x20 bytes
struct zUIMotionCmdColor : zUIMotionCmdAsset
{
uint8 startRed;
uint8 startGreen;
uint8 startBlue;
uint8 endRed;
uint8 endGreen;
uint8 endBlue;
// 2 bytes of padding
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | uint8 | startRed | |
0x19 | uint8 | startGreen | |
0x1A | uint8 | startBlue | |
0x1B | uint8 | endRed | |
0x1C | uint8 | endGreen | |
0x1D | uint8 | endBlue | |
0x1E | - | - | 2 bytes of padding |
UVScroll (Type 7)
Size = 0x20 bytes
struct zUIMotionCmdUVScroll : zUIMotionCmdAsset
{
float amountU;
float amountV;
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | float | amountU | |
0x1C | float | amountV |