add rap file generation
[iso2ps2.git] / ps2classic / iso.h
CommitLineData
1de93811
ML
1#ifndef __LIBISO_H__\r
2#define __LIBISO_H__\r
3\r
4#define ISOTYPE_ILLEGAL 0\r
5#define ISOTYPE_CD 1\r
6#define ISOTYPE_DVD 2\r
7#define ISOTYPE_AUDIO 3\r
8#define ISOTYPE_DVDDL 4\r
9\r
10#define ISOFLAGS_Z 0x0001\r
11#define ISOFLAGS_Z2 0x0002\r
12#define ISOFLAGS_BLOCKDUMP 0x0004\r
13#define ISOFLAGS_MULTI 0x0008\r
14#define ISOFLAGS_BZ2 0x0010\r
15\r
16#define CD_FRAMESIZE_RAW 2352\r
17#define DATA_SIZE (CD_FRAMESIZE_RAW-12)\r
18\r
19#define itob(i) ((i)/10*16 + (i)%10) /* u_char to BCD */\r
20#define btoi(b) ((b)/16*10 + (b)%16) /* BCD to u_char */\r
21\r
22#include "types.h"\r
23\r
24typedef struct\r
25{\r
26 u32 slsn;\r
27 u32 elsn;\r
28 void *handle;\r
29} _multih;\r
30\r
31struct isoFile\r
32{\r
33 char filename[256];\r
34 u32 type;\r
35 u32 flags;\r
36 u32 offset;\r
37 u32 blockofs;\r
38 u32 blocksize;\r
39 u32 blocks;\r
40 void *handle;\r
41 void *htable;\r
42 char *Ztable;\r
43 u32 *dtable;\r
44 int dtablesize;\r
45 _multih multih[8];\r
46 int buflsn;\r
47 u8 *buffer;\r
48};\r
49\r
50\r
51struct rootDirTocHeader\r
52{\r
53 u16 length; //+00\r
54 u32 tocLBA; //+02\r
55 u32 tocLBA_bigend; //+06\r
56 u32 tocSize; //+0A\r
57 u32 tocSize_bigend; //+0E\r
58 u8 dateStamp[8]; //+12\r
59 u8 reserved[6]; //+1A\r
60 u8 reserved2; //+20\r
61 u8 reserved3; //+21\r
62} __attribute__((packed));\r
63\r
64\r
65struct asciiDate\r
66{\r
67 char year[4];\r
68 char month[2];\r
69 char day[2];\r
70 char hours[2];\r
71 char minutes[2];\r
72 char seconds[2];\r
73 char hundreths[2];\r
74 char terminator[1];\r
75} __attribute__((packed));\r
76\r
77\r
78struct cdVolDesc\r
79{\r
80 u8 filesystemType; // 0x01 = ISO9660, 0x02 = Joliet, 0xFF = NULL\r
81 u8 volID[5]; // "CD001"\r
82 u8 reserved2;\r
83 u8 reserved3;\r
84 u8 sysIdName[32];\r
85 u8 volName[32]; // The ISO9660 Volume Name\r
86 u8 reserved5[8];\r
87 u32 volSize; // Volume Size\r
88 u32 volSizeBig; // Volume Size Big-Endian\r
89 u8 reserved6[32];\r
90 u32 unknown1;\r
91 u32 unknown1_bigend;\r
92 u16 volDescSize; //+80\r
93 u16 volDescSize_bigend; //+82\r
94 u32 unknown3; //+84\r
95 u32 unknown3_bigend; //+88\r
96 u32 priDirTableLBA; // LBA of Primary Dir Table //+8C\r
97 u32 reserved7; //+90\r
98 u32 secDirTableLBA; // LBA of Secondary Dir Table //+94\r
99 u32 reserved8; //+98\r
100 struct rootDirTocHeader rootToc;\r
101 s8 volSetName[128];\r
102 s8 publisherName[128];\r
103 s8 preparerName[128];\r
104 s8 applicationName[128];\r
105 s8 copyrightFileName[37];\r
106 s8 abstractFileName[37];\r
107 s8 bibliographyFileName[37];\r
108 struct asciiDate creationDate;\r
109 struct asciiDate modificationDate;\r
110 struct asciiDate effectiveDate;\r
111 struct asciiDate expirationDate;\r
112 u8 reserved10;\r
113 u8 reserved11[1166];\r
114} __attribute__((packed));\r
115\r
116\r
117\r
118struct isoFile *isoOpen(const char *filename);\r
119struct isoFile *isoCreate(const char *filename, int mode);\r
120int isoSetFormat(struct isoFile *iso, int blockofs, int blocksize, int blocks);\r
121int isoDetect(struct isoFile *iso);\r
122int isoReadBlock(struct isoFile *iso, u8 *dst, u32 lsn);\r
123int isoWriteBlock(struct isoFile *iso, u8 *src, u32 lsn);\r
124void isoClose(struct isoFile *iso);\r
125void print_ps2image_info(const char *image_name);\r
126void prepare_iso(char image_name[]);\r
127\r
128void *_openfile(const char *filename, int flags);\r
129u64 _tellfile(void *handle);\r
130int _seekfile(void *handle, u64 offset, int whence);\r
131int _readfile(void *handle, void *dst, int size);\r
132int _writefile(void *handle, void *src, int size);\r
133void _closefile(void *handle);\r
134\r
135#endif /* __LIBISO_H__ */