Lego Island World Database
From Just Solve the File Format Problem
Revision as of 04:33, 6 January 2017 by Hamhock666 (Talk | contribs)
The Lego Island World Database format is for a particular file in the Mindscape game Lego Island. This file stores all of the models and textures used in the game.
Format
// Documentation info
// struct groups[x] -> A data structure called groups that is repeated x number of times.
// uint32 -> An unsigned integer that is 32 bits in size.
// float32 -> a floating point number that is 32 bits in size.
// char[x] -> A string of characters that is x characters long.
// if (INDEX/subgroups) == 1 -> If the index of the subgroups data structure is 1 execute the following indented.
// SEEK 10 -> Seek to byte 10 in the binary file.
// SEEKREL -1 -> Seek 1 byte backwards in the binary file.
// MARKER HELLO -> A marker definition that can be accessed with GOTO HELLO.
// GOTO HELLO -> Go to the marker HELLO.
uint32 number_of_groups
struct groups[number_of_groups]
uint32 size_of_group_title
char[size_of_group_title] group_title
struct subgroups[2]
uint32 num_sub_items
struct sub_items[num_sub_items]
uint32 size_of_sub_item_title
char[size_of_sub_item_title] sub_item_title
uint32 size_of_item
uint32 item_offset
if (INDEX/subgroups) == 1
size_of_presenter_title I
presenter_title s size_of_presenter_title
byte[37] unknown
uint32 gif_chunk_size
byte[gif_chunk_size] unknown
uint32 model_chunk_size
//gifchunk
uint32 num_images
struct images[num_images]
uint32 size_of_string
char[size_of_string] gif_name
uint32 width
uint32 height
uint32 num_colors
struct colors[num_colors]
uint8 r
uint8 g
uint8 b
struct rows[height]
struct pixels[width]
uint8 color_index
//modelchunk
uint32 size_of_chunk
uint32 num_bins
struct bins[num_bins]
uint32 size_of_string
char[size_of_string] bin_name
uint32 num_models
uint32 end_bin_offset
SEEK end_bin_offset
//model
uint32 magic_number
uint32 bytes_left_in_subgroup
uint32 version
byte[8] unknown
uint32 size_of_file_name
char[size_of_file_name] file_name
uint32 u1
struct unknowns1[u1]
float32 some_float1
float32 some_float2
float32 some_float3
float32 some_float4
uint32 u2
struct unknowns2[u2]
uint32 some_int1
uint32 some_int2
uint32 some_int3
uint32 some_int4
uint32 number_of_components
struct component_header[number_of_components]
uint32 size_of_string
char[size_of_string] component_header_name
uint16 num_things
struct things[num_things]
uint16 unknown1
uint16 unknown2
float32 ufloat1
float32 ufloat2
float32 ufloat3
uint16 num_things2
struct things2[num_things2]
uint16 unknown1
uint16 unknown2
float32 ufloat1
float32 ufloat2
float32 ufloat3
float32 ufloat4
uint16 num_things3
uint16 num_things4
uint32 some_int
//components
struct components[number_of_components+1]
uint32 size_of_string
char[size_of_string] component_name
struct random_floats2[10]
float32 random_float2
byte[4] unknown
uint8 defined_elsewhere
if (defined_elsewhere) == 1
byte[4] unknown
GOTO ENDCOMP
//number of lod models in this component
uint32 number_of_models
if (number_of_models) == 0
GOTO SKIPCOMPOFFSET
uint32 end_component_offset
MARKER SKIPCOMPOFFSET
//this means lod, all models in a chunk are the same, just different poly
struct models[number_of_models]
byte[4] unknown
uint16 number_of_parts
byte[2] unknown
uint16 number_of_verts
uint16 number_of_normals
uint16 number_of_coordinates
byte[2] unknown
struct vertices[number_of_verts]
float32 x
float32 y
float32 z
struct normals[number_of_normals/2]
float32 x
float32 y
float32 z
struct coordinates[number_of_coordinates]
float32 u
float32 v
struct parts[number_of_parts]
uint16 num_tris
uint16 num_index_definitions
struct indices[num_tris]
struct axis[3]
uint16 first
uint16 second
uint32 num_coordinate_indices
struct coordinate_indices[num_coordinate_indices/3]
struct axis[3]
uint32 coordinate_index
uint8 part_color_red
uint8 part_color_green
uint8 part_color_blue
byte[8] unknown
uint32 size_of_texture_name
char[size_of_texture_name] texture_name
uint32 size_of_material_name
char[size_of_material_name] material_name
byte[4] unknown
MARKER ENDCOMP
//modelgifs
uint32 num_images
byte[4] unknown
struct images[num_images]
uint32 size_of_string
//store gif_char for later use, then go back and read entire gif_name
uint8 gif_char
SEEKREL -1
char[size_of_string] gif_name
uint32 width
uint32 height
uint32 num_colors
struct colors[num_colors]
uint8 r
uint8 g
uint8 b
struct rows[height]
struct pixels[width]
uint8 color_index
//for special textures beggining with "^"
if (gif_char) == 94
struct extra_images[1]
uint32 width
uint32 height
uint32 num_colors
struct colors[num_colors]
uint8 r
uint8 g
uint8 b
struct rows[height]
struct pixels[width]
uint8 color_index