SIZE_INFO = 0x26
VPK_SIZE = 0x51
VPK = 0x53

CARD_SET_A_PLUCKING   = "PIKMINCARD1S" # A001 -> A020
CARD_SET_B_MARCHING   = "PIKMINCARD2S" # B001 -> B020
CARD_SET_C_CONNECTING = "PIKMINCARD3S" # C001 -> C020
CARD_SETS_H_P_ALL     = "PIKMINCARDAP" # H001 -> H006 + P001 -> P003, one of each minigame (ALL)
CARD_SET_D_OLIMAR     = "PIKMINCARD1P" # D001 plucking
CARD_SET_D_PRESIDENT  = "PIKMINCARD2P" # D002 marching
CARD_SET_D_LOUIE      = "PIKMINCARD3P" # D003 connecting

PLUCKING_PIKMIN = "PIKMINPUZZLE01" .encode("ascii").ljust(16, b"\x00")
MARCHING_PIKMIN = "PIKMINPUZZLE02" .encode("ascii").ljust(16, b"\x00")
PIKMIN_OTAKARA  = "PIKMINOTAKARA"  .encode("ascii").ljust(16, b"\x00")

LEVEL_ID_LENGTH = 0x10

LEVELS_START = 0x100
LEVEL_FOOTER_LENGTH = 0x5

PLUCKING_WIDTH = 11
PLUCKING_HEIGHT = 8
PLUCKING_LAYERS = 2
PLUCKING_PIKMIN_HEADER_LENGTH = 0x5
PLUCKING_PIKMIN_LAYER_LENGTH = 0x58
PLUCKING_PIKMIN_LENGTH = PLUCKING_PIKMIN_HEADER_LENGTH + PLUCKING_PIKMIN_LAYER_LENGTH * PLUCKING_LAYERS

MARCHING_WIDTH = 32
MARCHING_HEIGHT = 11
MARCHING_PIKMIN_HEADER_LENGTH = 0x3
MARCHING_PIKMIN_LAYER_LENGTH = 0x160
MARCHING_PIKIS_LENGTH = 0x3f
MARCHING_PIKMIN_LENGTH = MARCHING_PIKMIN_HEADER_LENGTH + MARCHING_PIKMIN_LAYER_LENGTH + MARCHING_PIKIS_LENGTH

CONNECTING_WIDTH = 9
CONNECTING_HEIGHT = 6
CONNECTING_LAYERS = 3
CONNECTING_PIKMIN_HEADER_LENGTH = 0x3
CONNECTING_PIKMIN_LAYER_LENGTH = 0x36
CONNECTING_PIKMIN_LENGTH = CONNECTING_PIKMIN_HEADER_LENGTH + CONNECTING_PIKMIN_LAYER_LENGTH * CONNECTING_LAYERS

FOOTER_NORMAL = bytes([0x3E, 0x02, 0xCF, 0x00, 0xC9])
FOOTER_CONNECTING_X3 = bytes([0x3E, 0x01, 0x76, 0x18, 0xFB])
