| 1 |
/* |
| 2 |
* ps2_hdd.h |
| 3 |
* $Id: ps2_hdd.h,v 1.5 2005/07/10 21:06:48 bobi Exp $ |
| 4 |
* |
| 5 |
* borrowed from ps2fdisk |
| 6 |
*/ |
| 7 |
|
| 8 |
#ifndef _PS2_HDD_H_ |
| 9 |
#define _PS2_HDD_H_ |
| 10 |
|
| 11 |
typedef unsigned char u_char; |
| 12 |
typedef unsigned int u_int; |
| 13 |
typedef unsigned short u_short; |
| 14 |
typedef unsigned long u_long; |
| 15 |
|
| 16 |
/* Various PS2 partition constants */ |
| 17 |
#define PS2_PARTITION_MAGIC "APA" /* "APA\0" */ |
| 18 |
#define PS2_PART_IDMAX 32 |
| 19 |
#define PS2_PART_NAMEMAX 128 |
| 20 |
#define PS2_PART_MAXSUB 64 /* Maximum # of sub-partitions */ |
| 21 |
#define PS2_PART_FLAG_SUB 0x0001 /* Is partition a sub-partition? */ |
| 22 |
#define PS2_MBR_VERSION 2 /* Current MBR version */ |
| 23 |
|
| 24 |
/* Partition types */ |
| 25 |
#define PS2_MBR_PARTITION 0x0001 |
| 26 |
#define PS2_SWAP_PARTITION 0x0082 |
| 27 |
#define PS2_LINUX_PARTITION 0x0083 |
| 28 |
#define PS2_GAME_PARTITION 0x0100 |
| 29 |
|
| 30 |
/* Date/time descriptor used in on-disk partition header */ |
| 31 |
typedef struct ps2fs_datetime_type |
| 32 |
{ |
| 33 |
u_char unused; |
| 34 |
u_char sec; |
| 35 |
u_char min; |
| 36 |
u_char hour; |
| 37 |
u_char day; |
| 38 |
u_char month; |
| 39 |
u_short year; |
| 40 |
} ps2fs_datetime_t; |
| 41 |
|
| 42 |
/* On-disk partition header for a partition */ |
| 43 |
typedef struct ps2_partition_header_type |
| 44 |
{ |
| 45 |
u_long checksum; /* Sum of all 256 words, assuming checksum==0 */ |
| 46 |
u_char magic [4]; /* PS2_PARTITION_MAGIC */ |
| 47 |
u_long next; /* Sector address of next partition */ |
| 48 |
u_long prev; /* Sector address of previous partition */ |
| 49 |
char id [PS2_PART_IDMAX]; |
| 50 |
char unknown1 [16]; |
| 51 |
u_long start; /* Sector address of this partition */ |
| 52 |
u_long length; /* Sector count */ |
| 53 |
u_short type; |
| 54 |
u_short flags; /* PS2_PART_FLAG_* */ |
| 55 |
u_long nsub; /* No. of sub-partitions (stored in main partition) */ |
| 56 |
ps2fs_datetime_t created; |
| 57 |
u_long main; /* For sub-partitions, main partition sector address */ |
| 58 |
u_long number; /* For sub-partitions, sub-partition number */ |
| 59 |
u_short unknown2; |
| 60 |
char unknown3 [30]; |
| 61 |
char name [PS2_PART_NAMEMAX]; |
| 62 |
struct |
| 63 |
{ |
| 64 |
char magic [32]; /* Copyright message in MBR */ |
| 65 |
char unknown_0x02; |
| 66 |
char unknown1 [7]; |
| 67 |
ps2fs_datetime_t created; /* Same as for the partition, it seems*/ |
| 68 |
u_long data_start; /* Some sort of MBR data; position in sectors*/ |
| 69 |
u_long data_len; /* Length also in sectors */ |
| 70 |
char unknown2 [200]; |
| 71 |
} mbr; |
| 72 |
struct |
| 73 |
{ /* Sub-partition data */ |
| 74 |
u_long start;/* Sector address */ |
| 75 |
u_long length;/* Sector count */ |
| 76 |
} subs [PS2_PART_MAXSUB]; |
| 77 |
} ps2_partition_header_t; |
| 78 |
|
| 79 |
#endif /* _PS2_HDD_H_ */ |