Skip to content

Commit 12de3f9

Browse files
Create Steep.md
1 parent e03f00e commit 12de3f9

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

Research/Steep.md

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# Steep
2+
Research by theawesomecoder61.
3+
4+
### How to interpret this documentation
5+
- If a struct has been spelt out, it will not be repeated. Use the links to jump to that struct.
6+
7+
## Notes
8+
- In the raw data extracted from the forge, you should take each Data Chunk data, decompress it, and merge it with the other decompressed data. This is because the maximum decompressed data size for each Data Chunk is 262144 bytes (0x00 0x00 0x04 0x00).
9+
- **THIS DOCUMENTATION IS UNFINISHED.**
10+
11+
## Compression
12+
Zstd
13+
14+
## Header
15+
| Type | Name | Size | Notes |
16+
|--------|----------------|--------------|-------|
17+
| [Resource Type](#resource-type) | resourceType | 4 | |
18+
| int | fileSize | 4 | |
19+
| int | fileNameSize | 4 | |
20+
| char[] | fileName | fileNameSize | |
21+
| | <skip 2 bytes> | | |
22+
| int64 | fileID | 8 | fileID is the same from this file's entry in the .forge Index Table |
23+
24+
---
25+
26+
## Resource Type
27+
This is always found at the first 4 bytes of decompressed data. Other Resource Types can appear in the same file, for example, in mesh files. Here is a selection of the most important Resource Types.
28+
29+
| Value | Resource Type |
30+
|------------|---------------|
31+
| 0xFC9E1595 | Compiled Mesh |
32+
| 0x85C817C3 | Material |
33+
| 0x415D9568 | Mesh |
34+
| 0x1D4B87A3 | Mipmap |
35+
| 0xA2B7E917 | Texture Map |
36+
| 0xD70E6670 | Texture Set |
37+
38+
---
39+
40+
## DXT
41+
Whatever you call it, DXT Type, DXT compression, fourCC, etc.
42+
43+
| Value | DXT |
44+
|----------|------|
45+
| 0, 7 | DXT0 |
46+
| 1, 2, 3 | DXT1 |
47+
| 4 | DXT3 |
48+
| 5, 6, 12 | DXT5 |
49+
| 8, 9, 16 | DX10 |
50+
51+
---
52+
53+
## Texture Map file
54+
### Structure
55+
- [Header](#header)
56+
- [Texture Map](#texture-map)
57+
- [Image Data](#image-data)
58+
59+
### TopMip
60+
| Type | Name | Size (bytes) |
61+
|------|----------------|--------------|
62+
| int | width | 4 |
63+
| int | height | 4 |
64+
| | <skip 8 bytes> | |
65+
| [DXT](#dxt) | dxt | 4 |
66+
| | <skip 4 bytes> | |
67+
| int | mipmaps | 4 |
68+
69+
### Texture Map
70+
| Type | Name | Size (bytes) |
71+
|--------|-----------------|--------------|
72+
| int | fileType | 4 |
73+
| [TopMip](#topmip) | topMip0 | 28 |
74+
| | <skip 57 bytes> | |
75+
| [TopMip](#topmip) | topMip1 | 28 |
76+
| | <skip 12 bytes> | |
77+
78+
### Image Data
79+
| Type | Name | Size (bytes) |
80+
|--------|-----------------|---------------|
81+
| int | imageDataSize | 4 |
82+
| byte[] | imageData | imageDataSize |
83+
84+
---
85+
86+
## TopMip file
87+
### Structure
88+
- [Header](#header)
89+
- [Image Data Alt](#image-data-alt)
90+
91+
### Image Data Alt
92+
This is different than the Image Data block above. This one lacks an int before the imageData.
93+
94+
| Type | Name | Size (bytes) | Notes |
95+
|--------|-----------------|--------------|-------|
96+
| byte[] | imageData | fileSize | fileSize from the Header |

0 commit comments

Comments
 (0)