mrcrowbar.lib.games.lemmings module

File format classes for the game Lemmings (DOS, 1991).

Sources: DAT compressor http://www.camanis.net/lemmings/files/docs/lemmings_dat_file_format.txt

Level file format http://www.camanis.net/lemmings/files/docs/lemmings_lvl_file_format.txt

Vgagr/Ground DAT file formats http://www.camanis.net/lemmings/files/docs/lemmings_vgagrx_dat_groundxo_dat_file_format.txt

Main DAT file format http://www.camanis.net/lemmings/files/docs/lemmings_main_dat_file_format.txt

Vgaspec compressor/DAT file format http://www.camanis.net/lemmings/files/docs/lemmings_vgaspecx_dat_file_format.txt

Extra special thanks to ccexplore and Mindless

class mrcrowbar.lib.games.lemmings.Anim(width, height, bpp, frame_count, *args, **kwargs)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

image_data = <Bytes: offset=0x0, transform=<mrcrowbar.lib.images.base.Planarizer object>>
mrcrowbar.lib.games.lemmings.AnimField(offset, width, height, bpp, frame_count)
class mrcrowbar.lib.games.lemmings.DATCompressor[source]

Bases: Transform

export_data(buffer, parent=None)[source]

Perform a transform on a byte string.

buffer

Source byte string.

parent

Parent object of the source (to provide context for Refs).

import_data(buffer, parent=None)[source]

Perform a reverse-transform on a byte string.

buffer

Source byte string.

parent

Parent object of the source (to provide context for Refs).

class mrcrowbar.lib.games.lemmings.GroundDAT(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

interactive_info = <BlockField: 0x00007f0c833f1b70>

Information for every type of interactive piece.

property palette
palette_ega_custom = <Palette: 0x00007f0c833e0f50>

EGA palette used for rendering interactive/terrain pieces.

palette_ega_preview = <Palette: 0x00007f0c834add30>

Extended EGA palette used for rendering the level preview.

palette_ega_standard = <Palette: 0x00007f0c833e0e10>

Copy of EGA palette used for rendering lemmings/action bar. Colours 0-6 are not used by the game, instead there is a palette embedded in the executable. Colour 7 is used for drawing the minimap and dirt particles.

palette_vga_custom = <Palette: 0x00007f0c83421350>

VGA palette used for rendering interactive/terrain pieces.

palette_vga_preview = <Palette: 0x00007f0c833ba330>

VGA palette used for rendering the level preview.

palette_vga_standard = <Palette: 0x00007f0c83420e90>

Copy of VGA palette used for rendering lemmings/action bar. Colours 0-6 are not used by the game, instead there is a palette embedded in the executable. Colour 7 is used for drawing the minimap and dirt particles.

terrain_info = <BlockField: 0x00007f0c833f1630>

Information for every type of terrain piece.

class mrcrowbar.lib.games.lemmings.Interactive(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

draw_back = <Bits: offset=0x6, bits=0b10000000>

If 1, blit image behind background.

draw_masked = <Bits: offset=0x6, bits=0b1000000>

If 1, draw piece flipped vertically.

draw_upsidedown = <Bits: offset=0x7, bits=0b10000000>

If 1, draw piece as a hole.

mod_check = <UInt16_BE: offset=0x6, bitmask=b'?\x7f'>

Check to ensure the last chunk of the block is empty.

obj_id = <UInt16_BE: offset=0x4, range=range(0, 16)>

Index of the InteractiveInfo block in the accompanying GroundDAT.

property repr

Plaintext summary of the Block.

property x

The x position of the left edge.

x_raw = <Int16_BE: offset=0x0, range=range(-8, 1601)>

Raw value for the x position of the left edge.

y = <Int16_BE: offset=0x2, range=range(-41, 201)>

The y position of the top edge.

class mrcrowbar.lib.games.lemmings.InteractiveImage(*args, **kwargs)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

image_data = <Bytes: offset=0x0, transform=<mrcrowbar.lib.images.base.Planarizer object>>
mask_data = <Bytes: offset=<Ref: _parent.mask_rel_offset (rw)>, transform=<mrcrowbar.lib.images.base.Planarizer object>>
class mrcrowbar.lib.games.lemmings.InteractiveInfo(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

anim_flags = <UInt16_LE: offset=0x0>
base_offset = <UInt16_LE: offset=0x15>
end_frame = <UInt8: offset=0x3>
frame_data_size = <UInt16_LE: offset=0x6>
height = <UInt8: offset=0x5>
mask_rel_offset = <UInt16_LE: offset=0x8>
property plane_padding
preview_frame = <UInt16_LE: offset=0x17>
property size
sound_effect = <UInt8: offset=0x1b>

Sound effect to play. Only used when trigger_effect is set to TRAP.

start_frame = <UInt8: offset=0x2>
trigger_effect = <UInt8: offset=0x14>
property trigger_height
trigger_height_raw = <UInt8: offset=0x13>
property trigger_width
trigger_width_raw = <UInt8: offset=0x12>
property trigger_x
trigger_x_raw = <UInt16_LE: offset=0xe>
property trigger_y
trigger_y_raw = <UInt16_LE: offset=0x10>
unknown_1 = <UInt16_LE: offset=0xa>
unknown_2 = <UInt16_LE: offset=0xc>
unknown_3 = <UInt16_LE: offset=0x19>
vgagr = <StoreRef: 0x00007f0c833eac50>
width = <UInt8: offset=0x4>
class mrcrowbar.lib.games.lemmings.Level(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

property camera_x

Start x position of the camera.

camera_x_raw = <UInt16_BE: offset=0x18, range=range(0, 1265)>

Raw value for the start x position of the camera.

custom_index = <UInt16_BE: offset=0x1c>

Index denoting which Special graphic to use (optional).

interactives = <BlockField: 0x00007f0c833f11d0>

List of Interactive object references (32 slots).

name = <Bytes: offset=0x7e0, length=32, default=b'                                '>

Name of the level (ASCII string).

num_bashers = <UInt16_BE: offset=0x12, range=range(0, 251)>

Number of Basher skills.

num_blockers = <UInt16_BE: offset=0xe, range=range(0, 251)>

Number of Blocker skills.

num_bombers = <UInt16_BE: offset=0xc, range=range(0, 251)>

Number of Bomber skills.

num_builders = <UInt16_BE: offset=0x10, range=range(0, 251)>

Number of Builder skills.

num_climbers = <UInt16_BE: offset=0x8, range=range(0, 251)>

Number of Climber skills.

num_diggers = <UInt16_BE: offset=0x16, range=range(0, 251)>

Number of Digger skills.

num_floaters = <UInt16_BE: offset=0xa, range=range(0, 251)>

Number of Floater skills.

num_miners = <UInt16_BE: offset=0x14, range=range(0, 251)>

Number of Miner skills.

num_released = <UInt16_BE: offset=0x2, range=range(0, 115)>

Number of Lemmings released.

num_to_save = <UInt16_BE: offset=0x4, range=range(0, 115)>

Number of Lemmings required to be saved.

release_rate = <UInt16_BE: offset=0x0, range=range(0, 251)>

Minimum Lemming release-rate.

property repr

Plaintext summary of the Block.

steel_areas = <BlockField: 0x00007f0c833f0f30>

List of SteelArea object references (32 slots).

style_index = <UInt16_BE: offset=0x1a>

Index denoting which graphical Style to use.

terrains = <BlockField: 0x00007f0c833f0e50>

List of Terrain object references (400 slots).

time_limit_mins = <UInt16_BE: offset=0x6, range=range(0, 256)>

Time limit for the level (minutes).

class mrcrowbar.lib.games.lemmings.LevelDAT(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

levels = <BlockField: 0x00007f0c833f0bb0>
class mrcrowbar.lib.games.lemmings.Loader[source]

Bases: Loader

post_load()[source]
class mrcrowbar.lib.games.lemmings.MainAnims(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

anim_basher_l = <BlockField: 0x00007f0c833f2970>
anim_basher_r = <BlockField: 0x00007f0c833f2510>
anim_blocker = <BlockField: 0x00007f0c833f33f0>
anim_bounder_l = <BlockField: 0x00007f0c833f2430>
anim_bounder_r = <BlockField: 0x00007f0c833f1ef0>
anim_builder_l = <BlockField: 0x00007f0c833f27b0>
anim_builder_r = <BlockField: 0x00007f0c833f25f0>
anim_burner = <BlockField: 0x00007f0c833f3310>
anim_climber_l = <BlockField: 0x00007f0c833f2350>
anim_climber_r = <BlockField: 0x00007f0c833f20b0>
anim_digger = <BlockField: 0x00007f0c833f2190>
anim_drowner = <BlockField: 0x00007f0c833f2270>
anim_exploder = <BlockField: 0x00007f0c833f3770>
anim_faller_l = <BlockField: 0x00007f0c833f2cf0>
anim_faller_r = <BlockField: 0x00007f0c833f2c10>
anim_floater_l = <BlockField: 0x00007f0c833f3070>
anim_floater_r = <BlockField: 0x00007f0c833f2eb0>
anim_goner = <BlockField: 0x00007f0c833f3690>
anim_leaver = <BlockField: 0x00007f0c833f3230>
anim_miner_l = <BlockField: 0x00007f0c833f2b30>
anim_miner_r = <BlockField: 0x00007f0c833f2a50>
anim_postclimber_l = <BlockField: 0x00007f0c833f26d0>
anim_postclimber_r = <BlockField: 0x00007f0c833f2890>
anim_prefloater_l = <BlockField: 0x00007f0c833f2f90>
anim_prefloater_r = <BlockField: 0x00007f0c833f2dd0>
anim_shrugger_l = <BlockField: 0x00007f0c833f35b0>
anim_shrugger_r = <BlockField: 0x00007f0c833f34d0>
anim_splatter = <BlockField: 0x00007f0c833f3150>
anim_walker_l = <BlockField: 0x00007f0c833f1d30>
anim_walker_r = <BlockField: 0x00007f0c833f1fd0>
class mrcrowbar.lib.games.lemmings.MainDAT(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

class mrcrowbar.lib.games.lemmings.MainHUDGraphics(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

class mrcrowbar.lib.games.lemmings.MainHUDGraphicsHP(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

class mrcrowbar.lib.games.lemmings.MainMasks(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

mask_basher_l = <BlockField: 0x00007f0c833f3930>
mask_basher_r = <BlockField: 0x00007f0c833f3850>
mask_exploder = <BlockField: 0x00007f0c833f3bd0>
mask_miner_l = <BlockField: 0x00007f0c833f3af0>
mask_miner_r = <BlockField: 0x00007f0c833f3a10>
number_0 = <BlockField: 0x00007f0c83470590>
number_1 = <BlockField: 0x00007f0c834704b0>
number_2 = <BlockField: 0x00007f0c834703d0>
number_3 = <BlockField: 0x00007f0c834702f0>
number_4 = <BlockField: 0x00007f0c83470210>
number_5 = <BlockField: 0x00007f0c83470130>
number_6 = <BlockField: 0x00007f0c83470050>
number_7 = <BlockField: 0x00007f0c833f3e70>
number_8 = <BlockField: 0x00007f0c833f3d90>
number_9 = <BlockField: 0x00007f0c833f3cb0>
class mrcrowbar.lib.games.lemmings.MainMenuAnims(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

class mrcrowbar.lib.games.lemmings.MainMenuGraphics(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

class mrcrowbar.lib.games.lemmings.MainSection5(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

class mrcrowbar.lib.games.lemmings.OddRecord(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

name = <Bytes: offset=0x18, length=32, default=b'                                '>

Name of the level (ASCII string).

num_bashers = <UInt16_BE: offset=0x12, range=range(0, 251)>

Number of Basher skills.

num_blockers = <UInt16_BE: offset=0xe, range=range(0, 251)>

Number of Blocker skills.

num_bombers = <UInt16_BE: offset=0xc, range=range(0, 251)>

Number of Bomber skills.

num_builders = <UInt16_BE: offset=0x10, range=range(0, 251)>

Number of Builder skills.

num_climbers = <UInt16_BE: offset=0x8, range=range(0, 251)>

Number of Climber skills.

num_diggers = <UInt16_BE: offset=0x16, range=range(0, 251)>

Number of Digger skills.

num_floaters = <UInt16_BE: offset=0xa, range=range(0, 251)>

Number of Floater skills.

num_miners = <UInt16_BE: offset=0x14, range=range(0, 251)>

Number of Miner skills.

num_released = <UInt16_BE: offset=0x2, range=range(0, 115)>

Number of Lemmings released.

num_to_save = <UInt16_BE: offset=0x4, range=range(0, 115)>

Number of Lemmings required to be saved.

release_rate = <UInt16_BE: offset=0x0, range=range(0, 251)>

Minimum Lemming release-rate.

property repr

Plaintext summary of the Block.

time_limit_mins = <UInt16_BE: offset=0x6, range=range(0, 256)>

Time limit for the level (minutes).

class mrcrowbar.lib.games.lemmings.OddtableDAT(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

records = <BlockField: 0x00007f0c833f1a90>

List of OddRecord objects (80 slots).

class mrcrowbar.lib.games.lemmings.SoundEffect(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: IntEnum

ASSIGN = 4
BEAR_TRAP = 15
BOMBER = 12
BUILDER = 18
CRUSH_TRAP = 7
DROWN = 17
ELECTRIC_TRAP = 6
FIRE_TRAP = 13
HATCH_OPEN = 2
HEAVY_TRAP = 14
HIT_STEEL = 10
LETS_GO = 3
NONE = 0
OH_NO = 5
ROPE_TRAP = 9
SKILL_SELECT = 1
SPLAT = 8
UNKNOWN_1 = 11
YIPPEE = 16
class mrcrowbar.lib.games.lemmings.Special(*args, **kwargs)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

image_data = <Bytes: offset=0x28, transform=<mrcrowbar.lib.games.lemmings.SpecialCompressor object>>
palette_ega = <Palette: 0x00007f0c83489040>
palette_ega_preview = <Palette: 0x00007f0c833eb150>
palette_vga = <Palette: 0x00007f0c83488f30>
class mrcrowbar.lib.games.lemmings.SpecialCompressor[source]

Bases: Transform

DECOMPRESSED_SIZE = 14400
export_data(buffer, parent=None)[source]

Perform a transform on a byte string.

buffer

Source byte string.

parent

Parent object of the source (to provide context for Refs).

import_data(buffer, parent=None)[source]

Perform a reverse-transform on a byte string.

buffer

Source byte string.

parent

Parent object of the source (to provide context for Refs).

plan = <mrcrowbar.lib.images.base.Planarizer object>
class mrcrowbar.lib.games.lemmings.SteelArea(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

property height

Height of the steel area.

height_raw = <Bits: offset=0x2, bits=0b1111>

Raw value for the height.

mod_check = <UInt8: offset=0x3>

Check to ensure the last byte of the block is empty.

property repr

Plaintext summary of the Block.

property width

Width of the steel area.

width_raw = <Bits: offset=0x2, bits=0b11110000>

Raw value for the width.

property x

The x position of the left edge.

x_raw_coarse = <UInt8: offset=0x0, range=range(0, 200)>

Raw value (coarse component) for the x position of the left edge.

x_raw_fine = <Bits: offset=0x1, bits=0b10000000>

Raw value (fine component) for the x position of the left edge.

property y

The y position of the top edge.

y_raw = <UInt8: offset=0x1, range=range(0, 128), bitmask=b'\x7f'>

Raw value for the y position of the area’s top edge.

class mrcrowbar.lib.games.lemmings.Terrain(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

draw_back = <Bits: offset=0x0, bits=0b10000000>

If 1, blit image behind background.

draw_erase = <Bits: offset=0x0, bits=0b100000>

If 1, draw piece as a hole.

draw_upsidedown = <Bits: offset=0x0, bits=0b1000000>

If 1, draw piece flipped vertically.

obj_id = <UInt8: offset=0x3, range=range(0, 64), bitmask=b'?'>

Index of the TerrainInfo block in the accompanying GroundDAT.

property repr

Plaintext summary of the Block.

unknown_1 = <Bits: offset=0x3, bits=0b1000000>
property x

The x position of the left edge.

x_raw = <UInt16_BE: offset=0x0, bitmask=b'\x0f\xff'>

Raw value for the x position of the left edge.

property y

The y position of the top edge.

y_raw_coarse = <Int8: offset=0x2>

Raw value (coarse component) for the y position of the top edge.

y_raw_fine = <Bits: offset=0x3, bits=0b10000000>

Raw value (fine component) for the y position of the top edge.

class mrcrowbar.lib.games.lemmings.TerrainImage(*args, **kwargs)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

image_data = <Bytes: offset=0x0, transform=<mrcrowbar.lib.images.base.Planarizer object>>
mask_data = <Bytes: offset=<Ref: _parent.mask_offset (rw)>, transform=<mrcrowbar.lib.images.base.Planarizer object>>
class mrcrowbar.lib.games.lemmings.TerrainInfo(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

base_offset = <UInt16_LE: offset=0x2>
height = <UInt8: offset=0x1>
property mask_offset
mask_rel_offset = <UInt16_LE: offset=0x4>
property mask_size
property mask_stride
property size
unknown_1 = <UInt16_LE: offset=0x6>
vgagr = <StoreRef: 0x00007f0c834836b0>
width = <UInt8: offset=0x0>
class mrcrowbar.lib.games.lemmings.TriggerEffect(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: IntEnum

DISINTEGRATE = 6
DROWN = 5
EXIT_LEVEL = 1
NONE = 0
ONEWAY_LEFT = 7
ONEWAY_RIGHT = 8
STEEL = 9
TRAP = 4
class mrcrowbar.lib.games.lemmings.VgagrDAT(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

property interact_store
stores = <BlockField: 0x00007f0c833f1e10>
property terrain_store
class mrcrowbar.lib.games.lemmings.VgagrStore(*args, **kwargs)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

data = <Bytes: offset=0x0>
class mrcrowbar.lib.games.lemmings.VgaspecDAT(source_data=None, parent=None, preload_attrs=None, endian=None, cache_bytes=False, path_hint=None)[source]

Bases: Block

Base class for Blocks.

source_data

Source data to construct Block with. Can be a byte string, dictionary of attribute: value pairs, or another Block object.

parent

Parent Block object where this Block is defined. Used for e.g. evaluating Refs.

preload_attrs

Attributes on the Block to set before importing the data. Used for linking in dependencies before loading.

endian

Platform endianness to use when interpreting the Block data. Useful for Blocks which have the same data layout but different endianness for stored numbers. Has no effect on fields with an predefined endianness.

cache_bytes

Cache the bytes equivalent of the Block. Useful for debugging the loading procedure. Defaults to False.

path_hint

Cache a string containing the path of the current Block, relative to the root.

special = <BlockField: 0x00007f0c83470670>