11 #ifndef __MCMAN_INTERNAL_H__
12 #define __MCMAN_INTERNAL_H__
14 #ifndef MCMAN_ENABLE_EXTENDED_DEV_OPS
15 #if defined(BUILDING_VMCMAN)
16 #define MCMAN_ENABLE_EXTENDED_DEV_OPS 1
18 #define MCMAN_ENABLE_EXTENDED_DEV_OPS 0
27 #if !defined(BUILDING_XFROMMAN) && !defined(BUILDING_VMCMAN)
32 #if MCMAN_ENABLE_EXTENDED_DEV_OPS
44 #ifndef BUILDING_VMCMAN
45 #ifdef BUILDING_XFROMMAN
48 #ifdef BUILDING_XMCMAN
60 #if !defined(BUILDING_XFROMMAN) && !defined(BUILDING_VMCMAN)
61 #define MODNAME "mcman_cex"
62 #elif defined(BUILDING_VMCMAN)
63 #define MODNAME "vmcman"
64 #elif defined(BUILDING_XFROMMAN)
65 #define MODNAME "xfromman"
66 #elif defined(BUILDING_DONGLEMAN)
67 #define MODNAME "dongleman"
71 #ifndef MCMAN_ENTRYPOINT
73 #define MCMAN_ENTRYPOINT _start
75 #define MCMAN_ENTRYPOINT mcman_start
82 #define DPRINTF(format, args...) \
83 sio_printf(MODNAME ": " format, ##args)
86 #define DPRINTF(format, args...) \
87 printf(MODNAME ": " format, ##args)
89 #define DPRINTF(format, args...)
101 #define CF_USE_ECC 0x01
102 #define CF_BAD_BLOCK 0x08
103 #define CF_ERASE_ZEROES 0x10
105 #ifdef BUILDING_VMCMAN
106 #define MCMAN_MAXSLOT 10
108 #define MCMAN_MAXSLOT 4
110 #define MCMAN_CLUSTERSIZE 1024
111 #define MCMAN_CLUSTERFATENTRIES 256
114 int entry[MCMAN_CLUSTERFATENTRIES];
117 #define MAX_CACHEENTRY 0x24
120 int entry[1 + (MCMAN_CLUSTERFATENTRIES * 2)];
123 #define MAX_CACHEDIRENTRY 0x3
146 #define MAX_FDHANDLES 3
148 #if MCMAN_ENABLE_EXTENDED_DEV_OPS
149 #define MC_IO_DEV_T iomanX_iop_device_t
150 #define MC_IO_FIL_T iomanX_iop_file_t
151 #define MC_IO_DRE_T iox_dirent_t
152 #define MC_IO_STA_T iox_stat_t
153 #define MC_IO_OPS_T iomanX_iop_device_ops_t
156 #define MC_IO_S_RD (FIO_S_IRUSR | FIO_S_IRGRP | FIO_S_IROTH)
157 #define MC_IO_S_WR (FIO_S_IWUSR | FIO_S_IWGRP | FIO_S_IWOTH)
158 #define MC_IO_S_EX (FIO_S_IXUSR | FIO_S_IXGRP | FIO_S_IXOTH)
159 #define MC_IO_S_FL FIO_S_IFREG
160 #define MC_IO_S_DR FIO_S_IFDIR
162 #define MC_IO_CST_ATTR FIO_CST_ATTR
163 #define MC_IO_CST_MODE FIO_CST_MODE
164 #define MC_IO_CST_CT FIO_CST_CT
165 #define MC_IO_CST_MT FIO_CST_MT
167 #define MC_IO_DEV_T iop_device_t
168 #define MC_IO_FIL_T iop_file_t
169 #define MC_IO_DRE_T io_dirent_t
170 #define MC_IO_STA_T io_stat_t
171 #define MC_IO_OPS_T iop_device_ops_t
173 #define MC_IO_S_RD SCE_STM_R
174 #define MC_IO_S_WR SCE_STM_W
175 #define MC_IO_S_EX SCE_STM_X
176 #define MC_IO_S_FL SCE_STM_F
177 #define MC_IO_S_DR SCE_STM_D
179 #define MC_IO_CST_ATTR SCE_CST_ATTR
180 #define MC_IO_CST_MODE SCE_CST_MODE
181 #define MC_IO_CST_CT SCE_CST_CT
182 #define MC_IO_CST_MT SCE_CST_MT
186 #if !defined(BUILDING_XFROMMAN) && !defined(BUILDING_VMCMAN)
189 extern void long_multiply(u32 v1, u32 v2, u32 *HI, u32 *LO);
190 extern int mcman_chrpos(
const char *str,
int chr);
191 extern void mcman_wmemset(
void *buf,
int size,
int value);
192 extern int mcman_calcEDC(
void *buf,
int size);
193 extern int mcman_checkpath(
const char *str);
194 extern int mcman_checkdirpath(
const char *str1,
const char *str2);
195 extern void mcman_invhandles(
int port,
int slot);
196 extern int McCloseAll(
void);
197 extern int mcman_detectcard(
int port,
int slot);
198 extern int mcman_dread(
int fd, MC_IO_DRE_T *dirent);
199 extern int mcman_getstat(
int port,
int slot,
const char *filename, MC_IO_STA_T *stat);
201 extern void mcman_initPS2com(
void);
202 extern void mcman_deinitPS2com(
void);
203 #if !defined(BUILDING_XFROMMAN) && !defined(BUILDING_VMCMAN)
204 extern void sio2packet_add(
int port,
int slot,
int cmd, u8 *buf);
206 extern int mcman_eraseblock(
int port,
int slot,
int block,
void **pagebuf,
void *eccbuf);
207 extern int mcman_readpage(
int port,
int slot,
int page,
void *buf,
void *eccbuf);
208 extern int mcman_cardchanged(
int port,
int slot);
209 extern int mcman_resetauth(
int port,
int slot);
210 extern int mcman_probePS2Card2(
int port,
int slot);
211 extern int mcman_probePS2Card(
int port,
int slot);
212 #if !defined(BUILDING_XFROMMAN) && !defined(BUILDING_VMCMAN)
215 extern int mcman_getcnum (
int port,
int slot);
216 extern int mcman_correctdata(
void *buf,
void *ecc);
217 extern int mcman_sparesize(
int port,
int slot);
218 extern int mcman_setdevspec(
int port,
int slot);
219 extern int mcman_reportBadBlocks(
int port,
int slot);
220 extern int mcman_setdevinfos(
int port,
int slot);
221 extern int mcman_format2(
int port,
int slot);
222 extern int mcman_fatRseek(
int fd);
223 extern int mcman_fatWseek(
int fd);
224 extern int mcman_findfree2(
int port,
int slot,
int reserve);
225 extern int mcman_dread2(
int fd, MC_IO_DRE_T *dirent);
226 extern int mcman_getstat2(
int port,
int slot,
const char *filename, MC_IO_STA_T *stat);
227 extern int mcman_setinfo2(
int port,
int slot,
const char *filename,
sceMcTblGetDir *
info,
int flags);
228 extern int mcman_read2(
int fd,
void *buffer,
int nbyte);
229 extern int mcman_write2(
int fd,
void *buffer,
int nbyte);
230 extern int mcman_close2(
int fd);
231 extern int mcman_getentspace(
int port,
int slot,
const char *dirname);
232 extern int mcman_cachedirentry(
int port,
int slot,
const char *filename,
McCacheDir *pcacheDir,
McFsEntry **pfse,
int unknown_flag);
233 extern int mcman_getdirinfo(
int port,
int slot,
McFsEntry *pfse,
const char *filename,
McCacheDir *pcd,
int unknown_flag);
234 extern int mcman_open2(
int port,
int slot,
const char *filename,
int flags);
235 extern int mcman_chdir(
int port,
int slot,
const char *newdir,
char *currentdir);
236 extern int mcman_writecluster(
int port,
int slot,
int cluster,
int flag);
237 extern int mcman_getdir2(
int port,
int slot,
const char *dirname,
int flags,
int maxent,
sceMcTblGetDir *
info);
238 extern int mcman_delete2(
int port,
int slot,
const char *filename,
int flags);
239 extern int mcman_checkBackupBlocks(
int port,
int slot);
240 extern int mcman_unformat2(
int port,
int slot);
241 extern void mcman_initPS1PDAcom(
void);
242 extern void mcman_deinitPS1PDAcom(
void);
243 extern int mcman_probePS1Card2(
int port,
int slot);
244 extern int mcman_probePS1Card(
int port,
int slot);
245 extern int mcman_probePDACard(
int port,
int slot);
246 extern int mcman_setPS1devinfos(
int port,
int slot);
247 extern int mcman_format1(
int port,
int slot);
248 extern int mcman_open1(
int port,
int slot,
const char *filename,
int flags);
249 extern int mcman_read1(
int fd,
void *buffer,
int nbyte);
250 extern int mcman_write1(
int fd,
void *buffer,
int nbyte);
251 extern int mcman_getPS1direntry(
int port,
int slot,
const char *filename,
McFsEntryPS1 **pfse,
int flag);
252 extern int mcman_dread1(
int fd, MC_IO_DRE_T *dirent);
253 extern int mcman_getstat1(
int port,
int slot,
const char *filename, MC_IO_STA_T *stat);
254 extern int mcman_setinfo1(
int port,
int slot,
const char *filename,
sceMcTblGetDir *
info,
int flags);
255 extern int mcman_getdir1(
int port,
int slot,
const char *dirname,
int flags,
int maxent,
sceMcTblGetDir *
info);
256 extern int mcman_clearPS1direntry(
int port,
int slot,
int cluster,
int flags);
257 extern int mcman_delete1(
int port,
int slot,
const char *filename,
int flags);
258 extern int mcman_close1(
int fd);
259 extern int mcman_findfree1(
int port,
int slot,
int reserve);
260 extern int mcman_fatRseekPS1(
int fd);
261 extern int mcman_fatWseekPS1(
int fd);
262 extern int mcman_FNC8ca4(
int port,
int slot,
MC_FHANDLE *fh);
263 extern int mcman_PS1pagetest(
int port,
int slot,
int page);
264 extern int mcman_unformat1(
int port,
int slot);
265 extern int mcman_cachePS1dirs(
int port,
int slot);
266 extern int mcman_fillPS1backuparea(
int port,
int slot,
int block);
267 extern void mcman_initcache(
void);
268 extern int mcman_clearcache(
int port,
int slot);
269 extern McCacheEntry *mcman_getcacheentry(
int port,
int slot,
int cluster);
270 extern void mcman_freecluster(
int port,
int slot,
int cluster);
271 extern int mcman_getFATindex(
int port,
int slot,
int num);
275 extern int mcman_readdirentryPS1(
int port,
int slot,
int cluster,
McFsEntryPS1 **pfse);
276 extern int mcman_readclusterPS1(
int port,
int slot,
int cluster,
McCacheEntry **pmce);
277 extern int mcman_replaceBackupBlock(
int port,
int slot,
int block);
278 extern int mcman_fillbackupblock1(
int port,
int slot,
int block,
void **pagedata,
void *eccdata);
279 extern int mcman_clearsuperblock(
int port,
int slot);
280 extern int mcman_ioerrcode(
int errcode);
281 extern int mcman_modloadcb(
const char *filename,
int *port,
int *slot);
282 extern void mcman_unit2card(u32 unit);
283 extern int mcman_initdev(
void);
284 extern void mcman_deinitdev(
void);
286 #if defined(BUILDING_VMCMAN)
287 extern int mcman_iomanx_backing_mount(
int port,
int slot,
const char *filename);
288 extern int mcman_iomanx_backing_umount(
int port,
int slot);
289 extern int mcman_iomanx_backing_getcardspec(
int port,
int slot, s16 *pagesize, u16 *blocksize,
int *cardsize, u8 *flags);
290 extern int mcman_iomanx_backing_erase(
int port,
int slot,
int page);
291 extern int mcman_iomanx_backing_write(
int port,
int slot,
int page,
void *pagebuf,
void *eccbuf);
292 extern int mcman_iomanx_backing_read(
int port,
int slot,
int page,
void *pagebuf,
void *eccbuf);
299 u16 pages_per_cluster;
302 u32 clusters_per_card;
310 int bad_block_list[32];
315 u32 FATentries_per_cluster;
316 u32 clusters_per_block;
318 u32 rootdir_cluster2;
321 u32 max_allocatable_clusters;
328 u32 word[1056/
sizeof(u32)];
329 u8
byte[1056/
sizeof(u8)];
330 char magic[1056/
sizeof(char)];
334 u32 word[128/
sizeof(u32)];
335 u16 half[128/
sizeof(u16)];
336 u8
byte[128/
sizeof(u8)];
341 extern char SUPERBLOCK_MAGIC[];
342 extern char SUPERBLOCK_VERSION[];
344 extern int mcman_wr_port;
345 extern int mcman_wr_slot;
346 extern int mcman_wr_block;
347 extern int mcman_wr_flag3;
348 extern int mcman_curdircluster;
353 #ifndef BUILDING_XFROMMAN
356 extern int PS1CardFlag;
358 extern McFsEntry mcman_dircache[MAX_CACHEDIRENTRY];
360 extern MC_FHANDLE mcman_fdhandles[MAX_FDHANDLES];
361 extern MCDevInfo mcman_devinfos[4][MCMAN_MAXSLOT];
363 extern u8 mcman_eccdata[512];
366 extern u8 mcman_sio2outbufs_PS1PDA[0x90];
368 #ifdef BUILDING_DONGLEMAN
369 extern int sema_hakama_id;
371 #define HAKAMA_SIGNALSEMA() //SignalSema(sema_hakama_id)
372 #define HAKAMA_WAITSEMA() //WaitSema(sema_hakama_id)
374 #define HAKAMA_SIGNALSEMA() //while(0) {}
375 #define HAKAMA_WAITSEMA() //while(0) {}
378 #endif // __MCMAN_INTERNAL_H__