sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
libmc.h
Go to the documentation of this file.
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# Copyright 2001-2004, ps2dev - http://www.ps2dev.org
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
16
17/*
18 NOTE: These functions will work with the MCMAN/MCSERV or XMCMAN/XMCSERV
19 modules stored in rom0. The library will automatically detect which
20 module is used and will use the appropriate RPC commands accordingly.
21
22 NOTE: These functions seem to work for both psx and ps2 memcards
23
24 to use memcards:
25 1) first load modules (sio2man then mcman/mcserv)
26 2) call mcInit(MC_TYPE)
27 3) use mcGetInfo() to see if memcards are connected
28 4) use mcSync to check that the function has finished
29
30 all mc* functions except mcInit() are asynchronous and require mcSync()
31 usage to test when they are done
32*/
33
34#ifndef __LIBMC_H__
35#define __LIBMC_H__
36
37#include <libmc-common.h>
38#include <sifrpc.h>
39
40#define MC_WAIT 0
41#define MC_NOWAIT 1
42
43#define MC_TYPE_PSX sceMcTypePS1
44#define MC_TYPE_PS2 sceMcTypePS2
45#define MC_TYPE_POCKET sceMcTypePDA
46#define MC_TYPE_NONE sceMcTypeNoCard
47
48#define MC_FORMATTED 1
49#define MC_UNFORMATTED 0
50
51// Valid bits in memcard file attributes (mctable.AttrFile)
52#define MC_ATTR_READABLE sceMcFileAttrReadable
53#define MC_ATTR_WRITEABLE sceMcFileAttrWriteable
54#define MC_ATTR_EXECUTABLE sceMcFileAttrExecutable
55#define MC_ATTR_PROTECTED sceMcFileAttrDupProhibit
56#define MC_ATTR_FILE sceMcFileAttrFile
57#define MC_ATTR_SUBDIR sceMcFileAttrSubdir
59#define MC_ATTR_OBJECT (sceMcFileAttrFile|sceMcFileAttrSubdir)
60#define MC_ATTR_CLOSED sceMcFileAttrClosed
61#define MC_ATTR_PDAEXEC sceMcFileAttrPDAExec
62#define MC_ATTR_PSX sceMcFileAttrPS1
64#define MC_ATTR_HIDDEN sceMcFileAttrHidden
65
68 MC_FUNC_NONE = 0x00,
69 MC_FUNC_GET_INFO,
70 MC_FUNC_OPEN,
71 MC_FUNC_CLOSE,
72 MC_FUNC_SEEK,
73 MC_FUNC_READ,
74 MC_FUNC_WRITE,
75 MC_FUNC_FLUSH = 0x0A,
76 MC_FUNC_MK_DIR,
77 MC_FUNC_CH_DIR,
78 MC_FUNC_GET_DIR,
79 MC_FUNC_SET_INFO,
80 MC_FUNC_DELETE,
81 MC_FUNC_FORMAT,
82 MC_FUNC_UNFORMAT,
83 MC_FUNC_GET_ENT,
84 MC_FUNC_RENAME,
85 MC_FUNC_CHG_PRITY,
86 MC_FUNC_ERASE_BLOCK = 0x5A,
87 MC_FUNC_READ_PAGE,
88 MC_FUNC_WRITE_PAGE,
89};
90
98 MCICON_TYPE_SAVED_DATA = 0, // "Saved Data (PlayStation(r)2)"
99 MCICON_TYPE_SOFTWARE_PS2, // "Software (PlayStation(r)2)"
100 MCICON_TYPE_SOFTWARE_PKT, // "Software (PocketStation(r))"
101 MCICON_TYPE_SETTINGS_DATA, // "Settings File (PlayStation(r)2)"
102 MCICON_TYPE_SYSTEM_DRIVER // "System driver"; Implemented on SCPH-5XXXX, previous models can't recognize it unless HDD-OSD is active
103};
104
105typedef int iconIVECTOR[4];
106typedef float iconFVECTOR[4];
107
108typedef struct
109{
111 unsigned char head[4];
113 unsigned short type;
115 unsigned short nlOffset;
117 unsigned unknown2;
119 unsigned trans;
121 iconIVECTOR bgCol[4];
123 iconFVECTOR lightDir[3];
125 iconFVECTOR lightCol[3];
127 iconFVECTOR lightAmbient;
129 unsigned short title[34];
131 unsigned char view[64];
133 unsigned char copy[64];
135 unsigned char del[64];
137 unsigned char unknown3[512];
138} mcIcon;
139
140typedef struct _sceMcTblGetDir { // size = 64
141 sceMcStDateTime _Create; // 0
142 sceMcStDateTime _Modify; // 8
143 u32 FileSizeByte; // 16
144 u16 AttrFile; // 20
145 u16 Reserve1; // 22
146 u32 Reserve2; // 24
147 u32 PdaAplNo; // 28
148 unsigned char EntryName[32]; // 32
149} sceMcTblGetDir __attribute__((aligned(64)));
150
151typedef struct
152{
153 struct
154 {
155 unsigned char unknown1;
157 unsigned char sec;
159 unsigned char min;
161 unsigned char hour;
163 unsigned char day;
165 unsigned char month;
167 unsigned short year;
168 } _create;
169
170 struct
171 {
172 unsigned char unknown2;
174 unsigned char sec;
176 unsigned char min;
178 unsigned char hour;
180 unsigned char day;
182 unsigned char month;
184 unsigned short year;
185 } _modify;
186
188 unsigned fileSizeByte;
190 unsigned short attrFile;
191 unsigned short unknown3;
192 unsigned unknown4[2];
194 unsigned char name[32];
195} mcTable __attribute__((deprecated, aligned (64)));
196
197// values to send to mcInit() to use either mcserv or xmcserv
198// These definitions are retained for backwards compatibility
199#define MC_TYPE_MC 0
200#define MC_TYPE_XMC 1
201
202#ifdef __cplusplus
203extern "C" {
204#endif
205
211extern int mcInit(int type);
212
226extern int mcGetInfo(int port, int slot, int* type, int* free, int* format);
227
238extern int mcOpen(int port, int slot, const char *name, int mode);
239
247extern int mcClose(int fd);
248
258extern int mcSeek(int fd, int offset, int origin);
259
260
270extern int mcRead(int fd, void *buffer, int size);
271
281extern int mcWrite(int fd, const void *buffer, int size);
282
290extern int mcFlush(int fd);
291
301extern int mcMkDir(int port, int slot, const char* name);
302
314extern int mcChdir(int port, int slot, const char* newDir, char* currentDir);
315
329extern int mcGetDir(int port, int slot, const char *name, unsigned mode, int maxent, sceMcTblGetDir* table);
330
342extern int mcSetFileInfo(int port, int slot, const char* name, const sceMcTblGetDir* info, unsigned flags);
343
353extern int mcDelete(int port, int slot, const char *name);
354
363extern int mcFormat(int port, int slot);
364
373extern int mcUnformat(int port, int slot);
374
384extern int mcGetEntSpace(int port, int slot, const char* path);
385
397extern int mcRename(int port, int slot, const char* oldName, const char* newName);
398
410extern int mcEraseBlock(int port, int slot, int block, int mode);
411
423extern int mcReadPage(int port, int slot, unsigned int page, void *buffer);
424
436extern int mcWritePage(int port, int slot, int page, const void *buffer);
437
447extern int mcChangeThreadPriority(int level);
448
456extern int mcSync(int mode, int *cmd, int *result);
457
462extern int mcReset(void);
463
468extern int xfromInit(int type);
469
483extern int xfromGetInfo(int port, int slot, int* type, int* free, int* format);
484
495extern int xfromOpen(int port, int slot, const char *name, int mode);
496
504extern int xfromClose(int fd);
505
515extern int xfromSeek(int fd, int offset, int origin);
516
517
527extern int xfromRead(int fd, void *buffer, int size);
528
538extern int xfromWrite(int fd, const void *buffer, int size);
539
547extern int xfromFlush(int fd);
548
558extern int xfromMkDir(int port, int slot, const char* name);
559
571extern int xfromChdir(int port, int slot, const char* newDir, char* currentDir);
572
586extern int xfromGetDir(int port, int slot, const char *name, unsigned mode, int maxent, sceMcTblGetDir* table);
587
599extern int xfromSetFileInfo(int port, int slot, const char* name, const sceMcTblGetDir* info, unsigned flags);
600
610extern int xfromDelete(int port, int slot, const char *name);
611
620extern int xfromFormat(int port, int slot);
621
630extern int xfromUnformat(int port, int slot);
631
641extern int xfromGetEntSpace(int port, int slot, const char* path);
642
653extern int xfromRename(int port, int slot, const char* oldName, const char* newName);
654
666extern int xfromEraseBlock(int port, int slot, int block, int mode);
667
679extern int xfromReadPage(int port, int slot, unsigned int page, void *buffer);
680
692extern int xfromWritePage(int port, int slot, int page, const void *buffer);
693
702extern int xfromChangeThreadPriority(int level);
703
711extern int xfromSync(int mode, int *cmd, int *result);
712
717extern int xfromReset(void);
718
719#ifdef __cplusplus
720}
721#endif
722
723#endif /* __LIBMC_H__ */
int mcReset(void)
Definition libmc.c:1025
int mcGetEntSpace(int port, int slot, const char *path)
Definition libmc.c:969
int xfromWrite(int fd, const void *buffer, int size)
Definition libmc.c:1082
int mcUnformat(int port, int slot)
Definition libmc.c:961
int xfromReset(void)
Definition libmc.c:1210
int xfromMkDir(int port, int slot, const char *name)
Definition libmc.c:1098
int mcSeek(int fd, int offset, int origin)
Definition libmc.c:881
int xfromChangeThreadPriority(int level)
Definition libmc.c:1194
int mcRead(int fd, void *buffer, int size)
Definition libmc.c:889
int xfromSync(int mode, int *cmd, int *result)
Definition libmc.c:1202
int mcMkDir(int port, int slot, const char *name)
Definition libmc.c:913
int xfromSetFileInfo(int port, int slot, const char *name, const sceMcTblGetDir *info, unsigned flags)
Definition libmc.c:1122
int mcWritePage(int port, int slot, int page, const void *buffer)
Definition libmc.c:1001
int mcEraseBlock(int port, int slot, int block, int mode)
Definition libmc.c:985
int xfromDelete(int port, int slot, const char *name)
Definition libmc.c:1130
int mcOpen(int port, int slot, const char *name, int mode)
Definition libmc.c:865
int mcRename(int port, int slot, const char *oldName, const char *newName)
Definition libmc.c:977
int mcChdir(int port, int slot, const char *newDir, char *currentDir)
Definition libmc.c:921
int mcSetFileInfo(int port, int slot, const char *name, const sceMcTblGetDir *info, unsigned flags)
Definition libmc.c:937
int xfromClose(int fd)
Definition libmc.c:1058
int mcReadPage(int port, int slot, unsigned int page, void *buffer)
Definition libmc.c:993
MCICON_TYPES
Definition libmc.h:97
int xfromFlush(int fd)
Definition libmc.c:1090
int xfromRename(int port, int slot, const char *oldName, const char *newName)
Definition libmc.c:1162
int mcGetDir(int port, int slot, const char *name, unsigned mode, int maxent, sceMcTblGetDir *table)
Definition libmc.c:929
int mcClose(int fd)
Definition libmc.c:873
int xfromGetInfo(int port, int slot, int *type, int *free, int *format)
Definition libmc.c:1042
int xfromGetEntSpace(int port, int slot, const char *path)
Definition libmc.c:1154
int xfromSeek(int fd, int offset, int origin)
Definition libmc.c:1066
int xfromInit(int type)
Definition libmc.c:1033
int mcGetInfo(int port, int slot, int *type, int *free, int *format)
Definition libmc.c:857
int xfromWritePage(int port, int slot, int page, const void *buffer)
Definition libmc.c:1186
int mcInit(int type)
Definition libmc.c:848
int xfromChdir(int port, int slot, const char *newDir, char *currentDir)
Definition libmc.c:1106
MC_FUNC_NUMBERS
Definition libmc.h:67
int mcDelete(int port, int slot, const char *name)
Definition libmc.c:945
int xfromEraseBlock(int port, int slot, int block, int mode)
Definition libmc.c:1170
int mcFormat(int port, int slot)
Definition libmc.c:953
int xfromFormat(int port, int slot)
Definition libmc.c:1138
int xfromUnformat(int port, int slot)
Definition libmc.c:1146
int mcWrite(int fd, const void *buffer, int size)
Definition libmc.c:897
int xfromReadPage(int port, int slot, unsigned int page, void *buffer)
Definition libmc.c:1178
int mcChangeThreadPriority(int level)
Definition libmc.c:1009
int mcSync(int mode, int *cmd, int *result)
Definition libmc.c:1017
int xfromGetDir(int port, int slot, const char *name, unsigned mode, int maxent, sceMcTblGetDir *table)
Definition libmc.c:1114
int mcFlush(int fd)
Definition libmc.c:905
int xfromRead(int fd, void *buffer, int size)
Definition libmc.c:1074
int xfromOpen(int port, int slot, const char *name, int mode)
Definition libmc.c:1050
unsigned unknown2
Definition libmc.h:117
unsigned char view[64]
Definition libmc.h:131
unsigned short type
Definition libmc.h:113
unsigned short title[34]
Definition libmc.h:129
iconFVECTOR lightCol[3]
Definition libmc.h:125
iconFVECTOR lightAmbient
Definition libmc.h:127
unsigned short nlOffset
Definition libmc.h:115
unsigned trans
Definition libmc.h:119
unsigned char copy[64]
Definition libmc.h:133
iconIVECTOR bgCol[4]
Definition libmc.h:121
iconFVECTOR lightDir[3]
Definition libmc.h:123
unsigned char head[4]
Definition libmc.h:111
unsigned char unknown3[512]
Definition libmc.h:137
unsigned char del[64]
Definition libmc.h:135
unsigned char name[32]
Definition libmc.h:194
unsigned fileSizeByte
Definition libmc.h:188
unsigned short attrFile
Definition libmc.h:190