/* ScummVM - Graphic Adventure Engine * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT * file distributed with this source distribution. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __CDTYPES_H__ #define __CDTYPES_H__ typedef unsigned int uint32; typedef unsigned short uint16; typedef unsigned char uint8; typedef signed int int32; typedef signed short int16; typedef signed char int8; typedef struct { uint8 len_di; uint8 attributeLength; uint8 lba[4]; uint16 parent; char name[256]; // arbitrary number } ISOPathTableRecord __attribute__ ((packed)); typedef struct { uint8 year; // Number of years since 1900 uint8 month; // Month of the year from 1 to 12 uint8 day; // Day of the Month from 1 to 31 uint8 hour; // Hour of the day from 0 to 23 uint8 min; // Minute of the hour from 0 to 59 uint8 sec; // second of the minute from 0 to 59 uint8 gmtOff; // Offset from Greenwich Mean Time in number of 15 minute intervals from -48(West) to +52(East) uint8 padding[10]; } ISOTime __attribute__ ((packed)); typedef struct { uint8 year; // Number of years since 1900 uint8 month; // Month of the year from 1 to 12 uint8 day; // Day of the Month from 1 to 31 uint8 hour; // Hour of the day from 0 to 23 uint8 min; // Minute of the hour from 0 to 59 uint8 sec; // second of the minute from 0 to 59 uint8 gmtOff; // Offset from Greenwich Mean Time in number of 15 minute intervals from -48(West) to +52(East) //uint8 padding[10]; } ISOFileTime __attribute__ ((packed)); typedef struct { uint8 len_dr; uint8 attributeLength; uint8 lba[4]; uint8 lba_BE[4]; uint8 size[4]; uint8 size_BE[4]; ISOFileTime time; uint8 flags; uint8 fieldSize; uint8 gapSize; uint8 sequenceNumber[4]; uint8 len_fi; char name[256]; // arbitrary number } ISODirectoryRecord __attribute__ ((packed)); typedef struct { char volumeSetId[128]; char publisherId[128]; char preparerId[128]; char applicationId[128]; char copyrightId[37]; char abstractId[37]; char bibliographicId[37]; } ISOIds __attribute__ ((packed)); typedef struct { uint16 length; uint32 tocLBA; uint32 tocLBA_bigend; uint32 tocSize; uint32 tocSize_bigend; uint8 dateStamp[8]; uint8 reserved[6]; uint8 reserved2; uint8 reserved3; } ISORoot __attribute__((packed)); // 0x22 typedef struct { uint8 type; // 0x00 char identifier[5]; // 0x01 uint8 version; // 0x06 uint8 reserved1; // 0x07 char systemIdentifier[32]; // 0x08 char volumeIdentifier[32]; // 0x28 uint8 reserved2[8]; // 0x48 uint32 volumeSpaceSize; // 0x50 uint32 volumeSpaceSizeBE; // 0x54 char reserved3[32]; // 0x58 uint32 volumeSetSize; // 0x78 uint32 volumeSequenceNumber; // 0x7C uint32 logicalBlockSize; // 0x80 uint32 pathTableSize; // 0x84 uint32 pathTableSizeBE; // 0x88 uint32 pathTablePos; // 0x8C uint32 pathTable2Pos; // 0x90 uint32 pathTablePosBE; // 0x94 uint32 pathTable2PosBE; // 0x98 ISORoot rootDir; // 0x9C ISOIds ids; // 0xBE ISOTime creation; // 0x32D ISOTime modification; // 0x33E ISOTime expiration; // 0x34F ISOTime effective; // 0x360 uint8 fileStructureVersion; // 0x371 uint8 reserved4; // 0x372 uint8 applicationUse[512]; // 0x373 uint8 reserved5[653]; // 0x573 } ISOPvd __attribute__ ((packed)); // 0x800 #endif // __CDTYPES_H__