Skip to content

Shaun White Skateboarding

Applies toSWS

Shaun White Skateboarding is Ubisoft Montreal’s 2010 skateboarding game on an early Anvil (Scimitar) engine. Its class layouts and container versions follow the Assassin’s Creed II generation rather than the later engine of Riders Republic. Inferred · from the AC2-profile readers fitting its data

The recorded PC build has the executable Shaun White Skateboarding.exe, 26,954,360 bytes, SHA-256 c7eb65c89ab016694a2f60a5f586c451a5a02bf05f226bffc943d256128d35c4. Every observation in the wiki’s Shaun White pages comes from this executable and the data installed beside it. Observed

The game is set in the city of New Harmony, whose districts the player reaches by monorail. Observed

The base install holds 33 forge archives named DataPC*.forge beside the executable, 4,239,261,993 bytes in all, and they hold 3,894 entries. Every one of the 33 archive headers carries the scimitar signature and forge version 26. Proven · all 33 forges

The archives fall into these groups. Observed

Group Archives Content
Shared DataPC.forge, DataPC_extra.forge Bootstrap resources, localization and GUI data
Levels 01 to 06 DataPC_01.forge to DataPC_06.forge One world each, with its cells
Level variants _FYM, _Multi, _Robot_01, _Robot_02, _Stronghold suffixes Further worlds of their own, not overlays on a base level
Special worlds DataPC_SW.forge, DataPC_Main_Menu.forge, DataPC_Customization.forge The Shaun White world, the menu and character selection
Customization DataPC_*CustomizationData.forge Character and customization data

Beside the executable are also the shader bundles ekshadersPChigh.bin, ekshadersPCmed.bin and ekshadersPClow.bin (see SDB2). The installed copy examined also carries .forge.patch files beside several forges; their layout has not been examined. Unknown

A patched copy of the game (executable dated 2011-08-23, forges dated 2010-10-27) differs from the recorded build in its data. Observed It holds 40 forges: the same 33 DataPC* data forges plus seven DataPC_StreamedSounds*.forge. Observed · one patched copy The sound forges are DataPC_StreamedSounds.forge, with no language in its name, and one for each of six languages: Eng, Fre, Ger, Ita, Rus and Spa (DataPC_StreamedSoundsEng.forge and so on). Observed · one patched copy Its text is Russian only: its DataPC.forge holds the Russian text packages and no other language’s. Observed · one patched copy

Recorded build Patched build Confidence
DataPC.forge 38 entries, 20,545,833 bytes 11 entries, 19,661,097 bytes Observed
Entries of the 33 data forges 3,894 3,867 Observed
Other 32 data forges Same version, entry count and size as in the recorded build; 10 of them (dated 2010-10-19) byte-identical, 22 with other content Observed
DataPC_01.forge Byte-identical Observed

Two independent readers of the forge tables, entry headers and block chunk tables agree on the patched DataPC.forge; its Graphic Bootstrap entry keeps the same blocks (26 bytes stored raw, then 16 chunks decoding to 512,822 bytes). No data forge of the patched copy has a bad chunk checksum, an entry header disagreeing with its records, or blocks that do not fill their payload. Observed · every data forge of the patched copy

The seven sound forges hold 10,308 entries besides their GlobalMetaFiles, and none of them begins with the data block magic: their payloads are framed some other way. Observed

The game’s videos are loose Bink files under Videos/, not forge entries: the patched copy holds 77 .bik files, 253.7 MB and 32,596 frames in all, every one Bink 1 of revision i, played through the binkw32.dll (version 1.9u) beside the executable. None of the 40 forges of that copy has a Bink entry, by their name records and by a byte scan. Observed · the patched copy Five are top-level clips, three play at start-up and 69 are trick-book clips. Five carry audio: four clips with four tracks each at 48 kHz, and head_tv.bik in stereo at 44.1 kHz. Observed · the patched copy

The four-track clips (dreamsequence, q16_sq13, startup/short_intro, startup/ubilogo_1280x720) carry, as track ids 0 to 3, a stereo, two mono and a stereo track, all DCT-coded; head_tv.bik has a single stereo DCT track. Observed · all 77 files The game plays all four tracks together at one volume: a loop calls BinkSetVolume for the four track ids with the same computed value. Observed · static reading of the executable The tracks are each mastered to full scale, so their sum reaches the 16-bit limits in 11,016 of the 10,471,680 mixed samples (9,560 in dreamsequence, 1,456 in short_intro); the clipping is in the material. Observed · every audio clip decoded and mixed Each frame is decoded into separate Y, U, V and alpha planes of one byte per sample, with sizes rounded up to multiples of 8 (chroma at half size); the game uploads the Y plane and the two chroma planes as separate textures. Observed · static reading of the executable and of binkw32.dll The first intro frame is drawn as one quad: its vertex declaration is stream 0 with a FLOAT3 POSITION0 at byte 0 and a FLOAT2 TEXCOORD0 at 12, a stride of 20, and its pixel program samples the Y, Cr and Cb planes, three L8 textures, at samplers 0, 1 and 2. Observed · the game’s first presented frame, recorded Its programs, run on that frame’s recorded constants and planes, give at every one of the 921,600 pixels the same RGB as an independent BT.601 conversion, to the last bit. Proven · the first intro quad’s programs run on its recorded inputs

Every file’s header reads as below, its frame index is increasing and inside the file, and splitting the frames by it gives the same packets as FFmpeg 6.1.1, frame for frame. Proven · all 77 files of the patched copy

Bink 1 file header44 + 20 per audio track + 4 per frame91% known

Little-endian. The tables after offset 44 follow one another with no gap.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x04char[4] = BIKimagic and revisionProven
0x44u32file size minus 8Proven
0x84u32frame countProven
0xC4u32largest frame sizeProven
0x104u32duplicated framesSourced
0x144u32widthProven
0x184u32heightProven
0x1C4u32frame rate numeratorProven
0x204u32frame rate denominatorProven
0x244u32video flagsProven0x00100000 alpha plane, 0x00020000 grey; 0 in all 77 files
0x284u32audio track countProven
0x2C4 per tracku32[]largest decoded audio sizeProvenone per track
after those4 per tracku16, u16sample rate and audio flagsProvenflags 0x4000 16-bit, 0x2000 stereo, 0x1000 DCT; 0x7000 and 0x5000 in these files
after those4 per tracku32[]track idsProven
after those4 per frameu32[]frame offsetsProvenbit 0 set on a keyframe

A frame’s packet starts, for each audio track, with a u32 chunk size and then, in a non-empty chunk, a u32 count of the PCM bytes the chunk decodes to and the coded blocks. A chunk holds as many whole blocks as fit: usually one, but the first chunk of a clip holds 18 or 19, so a decoder has to go on decoding inside a chunk (the first chunk of track 1 of q16_sq13 decodes to 72,960 bytes, 19 blocks of 1,920 16-bit samples). Observed · every audio clip, decoded within one step of FFmpeg 6.1.1’s output

BinkGetFrameBuffersInfo (in binkw32.dll 1.9u) fills a u32 buffer count (1 for a file of one frame, else 2), the luma width and height and the chroma width and height ((width + 1) / 2), each rounded up to a multiple of 8, a zero word, then per buffer four planes (Y, U, V, alpha) of 12 bytes: u32 used, the buffer pointer, u32 pitch. Used is 1 for Y, U and V and the alpha flag for the fourth. Observed · static reading of binkw32.dll 1.9u The game reads these fields of the BINK handle directly: +0x08 frame count, +0x0C and +0x10 the current frame, +0x14 and +0x18 the frame rate, +0x20 the flags, +0xBC the registered buffers, +0xE0 the audio track count, +0x2A4 the width and +0x2A8 the height; its BinkGoto calls count frames from 1. Observed · static reading of the executable’s call sites

The six numbered forges are the game’s main levels, named by the game’s district table and the strings of the English text (localization). Each name below carries the id of its string. Observed

Forge World id District String id Evidence
DataPC_01.forge 0x47AF3893 The Midtown Quarter 11233 Level 01 holds the three STRIDE challenges that string 12861 places in THE MIDTOWN QUARTER; stations 0 and 1 (strings 11262, 11263) travel to this world. Observed
DataPC_02.forge 0x47AF38BE The Downtown Quarter 11238 Level 02 holds the WENDY’S challenges that string 12862 places in THE DOWNTOWN QUARTER; station 2 (string 11264) travels to this world. Observed
DataPC_03.forge 0x47AF38E9 The Rising Island 11242 Station 3 (string 11265) travels to this world, whose content is an island. Observed
DataPC_04.forge 0x47AF3914 The Ministry Quarter 11249 The district table lists world 04 and the Stronghold world under this district; the station of level 04 is named Restricted Area Station (string 11266). Observed
DataPC_05.forge 0x817B7E55 The Prison Quarter 11253 The district table lists this world under this district. Observed
DataPC_06.forge 0x47AF396A none none No district lists this world; it appears only in mission tables. The entities include 06_Buildings_MinistryHQ, but no string names a Ministry headquarters. Observed
DataPC_SW.forge 0x954D44AF Shaun World 11271, 11272 The district table lists this world under this district; station 5 (string 11269, Shaun Station) travels to it. Observed

The names come from the game’s own district table, in the data block of the Game Bootstrap entry (entry 2) of DataPC.forge. A district object (class 0x8DF4697E) holds a string reference (class 0x81A7045D, the string id at offset 12 of the class word), then the ids of its worlds, then its sub-areas (class 0xBE759080). The monorail station table is in the same block, with records of 114 bytes: the name string id at offset 0 and the world id at offset 89 (offset 129 for the Shaun station). Observed

District Worlds Sub-areas (string ids)
The Midtown Quarter (11233) 01 The Common Place 11234, Midtown 11235, The Safe Harbor 11236
The Downtown Quarter (11238) 02 The Bureau of Edification 11239, Conformity Square 11240, Tranquility Square 11241
The Rising Island (11242) 03 The Underground 11247, The Park 11248
The Ministry Quarter (11249) 04, 04_Stronghold (0x8B56B7D1) The Department of Truth 11250, The Department of Energy 11251, The Restricted Area 11252
The Prison Quarter (11253) 05 The Department of Enlightenment 11254
Shaun World (11271) SW Shaun World 11272

The station of level 04 is named Restricted Area Station (11266), but the world belongs to The Ministry Quarter, of which The Restricted Area is a sub-area. The English strings 11262 to 11269 name six stations: Midtown (01), Safe Harbor (01), Downtown (02), Rising Island (03), Restricted Area (04) and Shaun (SW). The in-game city map shows the Restricted Area node with the panel text of string 11249. Observed

Strings 12635 to 12638 (Conformity Square Rooftops, Rising Island Park, Restricted Area Complex, SkateLab) are four string references in the same block, each followed by a world id of a multiplayer world: 02_Multi, 03_multi, 04_Multi and 05_MULTI. They name those worlds, not levels 04 and 05. Observed

Each of the four multiplayer worlds (02_Multi 0x84798472, 03_multi 0x8CC64B8E, 04_Multi 0x8F9A90C4, 05_MULTI 0x89FC9A5A) holds exactly one entity of class 0x5D54B379, MultiPointPlayerSpawner, named MULTI_Spawner_Player_001 (04_MULTI_Spawner_Player_001 in 04); the single-player worlds use PlayerSpawner, class 0xE74CB43D. Observed · all four multiplayer forges The other Spawner_Scatter, TeamA, TeamB and Together_ entities of these worlds are further spawn groups of the multiplayer modes. Inferred · from their names Arriving in 02, 04 or 05, the skater’s feet are at that spawner’s position. Observed · one arrival in each

The container is a forge of version 26 whose entries are framed as data blocks compressed with LZO2A. Proven · all 33 forges

Which public engine revision is this?

Forge version 26 and the class layouts match the Assassin’s Creed II generation of Anvil, but an exact engine revision is not established. Unknown

What is known

SystemClaimsConfidenceProven or observed
Overview683%
Archives and files4678%
Data model12085%
World and streaming5184%
Geometry14481%
Materials17078%
Shaders6686%
Textures6893%
Lighting and sky8878%
Vegetation2592%
Water3491%
Collision and physics5487%
Animation11882%
Gameplay data37100%
Runtime and limits12092%

Computed from the engine's pages; the whole picture is on the coverage page.