SMF(Spring Map File) Reference
SMF is a binary format
File location
maparchive.sd7/maps/mymapname.smf
Data Map
- smu = spring map unit, the size you see when in the lobby. roughly between 2 and 64.
Header
Bytes
|
Type |
Description
|
16 |
char[] |
Magic number; "spring map file\0"
|
4 |
int |
Version number; "1"
|
4 |
unsigned int |
ID, should be as unique as possible.
|
4 |
int |
Width; smu * 64
|
4 |
int |
Length; smu * 64
|
4 |
int |
Square size; 8
|
4 |
int |
Texels per square size; 8
|
4 |
int |
Tile size; 32
|
4 |
float |
Depth/min height; 512 = 1*smu
|
4 |
float |
Height/max height; 512 = 1*smu
|
4 |
int |
Byte offset to start of height map
|
4 |
int |
Byte offset to start of type map
|
4 |
int |
Byte offset to start of tile index
|
4 |
int |
Byte offset to start of mini map
|
4 |
int |
Byte offset to start of metal map
|
4 |
int |
Byte offset to start of features map
|
4 |
int |
No of extra headers
|
+ Extra Headers
Bytes
|
Type |
Description
|
4 |
int |
Size of the header
|
4 |
int |
Type of header
|
* |
* |
Data of header
|
+ Height Map
Bytes
|
Type |
Description
|
(width+1)*(length+1) |
unsigned short[] |
Data for height map.
|
+ Type Map
Bytes
|
Type |
Description
|
(width/2)*(length/2) |
char[] |
Data for type map.
|
+ Mini Map
Bytes
|
Type |
Description
|
699048 |
char[] |
raw DXT1 compressed 1024x1024 image.
|
+ Tile Index Header
Bytes
|
Type |
Description
|
4 |
int |
Number of tile files
|
4 |
int |
Total number of tiles in all files.
|
+ SMT File Infos
Bytes
|
Type |
Description
|
4 |
int |
Number of tiles in this file
|
size of filename |
char[] |
The filename of the smt.
|
+ Tile Index
Bytes
|
Type |
Description
|
(width / 4) * (length / 4) |
int[] |
Index numbers of tiles in SMT's
|
+ Metal Map
Bytes
|
Type |
Description
|
(width / 2) * (length / 2) |
char[] |
Metal Density
|
+ Features Header
Bytes
|
Type |
Description
|
4 |
int |
Number of features
|
4 |
int |
Number of feature types
|
* |
char[] |
List of feature names delimited by null
|
+ Features
Bytes
|
Type |
Description
|
4 |
int |
Type of feature, corresponds with feature name list.
|
4 |
float |
X Position (along the width of the map)
|
4 |
float |
Y Position (Up into the sky)
|
4 |
float |
Z Position (along the length of the map)
|
4 |
float |
rotation, not sure of scale
|
4 |
float |
relative size (not implemented); 1
|
+ Grass Extra header
Bytes
|
Type |
Description
|
4 |
int |
Size of the header; 12
|
4 |
int |
Type of header; 1
|
4 |
int |
Byte offset to beginning of grass map
|
+ Grass Data
(width / 4) * (length / 4)
|
unsigned char
|
Map defining the grass on the map. not sure what 256 available values mean.
|