Meta Header
Researched by SuperSaiyajinStackZ, Version: 0.1.0.
Some notes
- The exact size of the Header is unknown yet. It seems like the Checksum contains the range from
0x0
up to0x18
though. - The Checksum of the “Meta Header” is stored at
0xE - 0xF
inside the Savefile. - The first
0x7
bytes is a identifier for the Savefile, so the game can ensure the Savefile is actually valid. TheST
could likely meanSims, The
from the game title, howeverWN024
is unknown yet.
Structure
You can find a C++ structure for the Meta Header below.
struct MetaHeader {
enum class SFXVolumes : uint8_t {
Vol0 = 0x0, Vol1 = 0xC, Vol2 = 0x18, Vol3 = 0x24, Vol4 = 0x30, Vol5 = 0x3C, Vol6 = 0x48,
Vol7 = 0x54, Vol8 = 0x60, Vol9 = 0x6C, Vol10 = 0x80
};
enum class MUSVolumes : uint8_t {
Vol0 = 0x0, Vol1 = 0x19, Vol2 = 0x32, Vol3 = 0x4B, Vol4 = 0x64, Vol5 = 0x7D, Vol6 = 0x96,
Vol7 = 0xAF, Vol8 = 0xC8, Vol9 = 0xE1, Vol10 = 0xFF
};
enum class Languages : uint8_t {
English = 0x0, Dutch = 0x1, French = 0x2, German = 0x3, Italian = 0x4, Spanish = 0x5
};
uint8_t Identifier[0x7] = { 0x53, 0x54, 0x57, 0x4E, 0x30, 0x32, 0x34 }; // The identifier the game uses, to validate the Savefile, which is "STWN024"; 0x0 - 0x6.
uint8_t Unknown1 = 0x0; // Unknown; 0x7.
SFXVolumes SoundEffectVolume = SFXVolumes::Vol0; // The Sound Effect Volume Level; 0x8.
MUSVolumes MusicVolume = MUSVolumes::Vol0; // The Music Volume Level; 0x9.
Languages Language = Languages::English; // The Language the game uses; 0xA.
uint8_t Unknown2[0x3] = { 0x0 }; // Unknown; 0xB - 0xD.
uint16_t Checksum = 0x0; // The Meta Header Checksum; 0xE - 0xF.
uint8_t BigfootLovesChickens : 4; // Bigfoot Loves Chickens Minigame Level; 0x10.
uint8_t CarCommercials : 4; // Car Commercial Minigame Level; 0x10.
uint8_t KeelhaulinCards : 4; // Keelhaulin' Cards Minigame Level; 0x11.
uint8_t CattleCleanup : 4; // Cattle Cleanup Minigame Level; 0x11.
uint8_t KingChugChug : 4; // King Chug-Chug Minigame Level; 0x12.
uint8_t CanyonJumping : 4; // Canyon Jumping Minigame Level; 0x12.
uint8_t ChopShop : 4; // Chop Shop Minigame Level; 0x13.
uint8_t Unknown3 : 4; // Unknown; 0x13.
uint8_t Unknown4[0x4] = { 0x0 }; // Unknown; 0x14 - 0x18.
};
Sound Effect Volumes
The Meta Header at offset 0x8
stores the Sound Effect Volume.
The volumes are not stored like 0x0, 0x1, 0x2
etc, they are directly stored as their percentage or so. See below for the Levels and their actual value.
Level | Value |
---|---|
0 | 0x0 |
1 | 0xC |
2 | 0x18 |
3 | 0x24 |
4 | 0x30 |
5 | 0x3C |
6 | 0x48 |
7 | 0x54 |
8 | 0x60 |
9 | 0x6C |
10 | 0x80 |
Music Volumes
The Meta Header at offset 0x9
stores the Music Volume.
The volumes are not stored like 0x0, 0x1, 0x2
etc, they are directly stored as their percentage or so. See below for the Levels and their actual value.
Level | Value |
---|---|
0 | 0x0 |
1 | 0x19 |
2 | 0x32 |
3 | 0x4B |
4 | 0x64 |
5 | 0x7D |
6 | 0x96 |
7 | 0xAF |
8 | 0xC8 |
9 | 0xE1 |
10 | 0xFF |
Languages
The Meta Header at offset 0xA
stores the active language.
If the language index is 0x6
or larger, the game won’t display any text and eventually crash, so be warned. See below for the Language Indexes.
Language | Index |
---|---|
English | 0x0 |
Dutch | 0x1 |
French | 0x2 |
German | 0x3 |
Italian | 0x4 |
Spanish | 0x5 |
Minigames
The Minigames are stored as 4 bits. So 4 bits per minigame starting at 0x10
with Bigfoot Loves Chickens
.
The range for valid Levels are: 0x0 - 0x5
. Use 0x0
if you don’t want the Minigames stored inside the Minigames menu, or 0x1 - 0x5
if you want them there.
See below for a list for which offset and bits is for which Minigame.
Minigame | Offset | Bits |
---|---|---|
Bigfoot Loves Chickens | 0x10 | First 4 |
Car Commercials | 0x10 | Last 4 |
Keelhaulin’ Cards | 0x11 | First 4 |
Cattle Cleanup | 0x11 | Last 4 |
King Chug-Chug | 0x12 | First 4 |
Canyon Jumping | 0x12 | Last 4 |
Chop Shop | 0x13 | First 4 |