SSBM Decomp
Loading...
Searching...
No Matches
card.h
Go to the documentation of this file.
1#ifndef _DOLPHIN_CARD_H_
2#define _DOLPHIN_CARD_H_
3
4#include <dolphin/dsp.h>
5#include <dolphin/dvd.h>
6#include <dolphin/os.h>
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12#define CARD_FILENAME_MAX 32
13#define CARD_MAX_FILE 127
14#define CARD_ICON_MAX 8
15
16typedef void (*CARDCallback)(s32 chan, s32 result);
17
18// todo: sort into headers
19typedef struct CARDFileInfo {
20 /*0x00*/ s32 chan;
21 /*0x04*/ s32 fileNo;
22 /*0x08*/ s32 offset;
23 /*0x0C*/ s32 length;
24 /*0x10*/ u16 iBlock;
26
27typedef struct CARDDir {
28 /*0x00*/ u8 gameName[4];
29 /*0x04*/ u8 company[2];
30 /*0x06*/ u8 _padding0;
31 /*0x07*/ u8 bannerFormat;
33 /*0x28*/ u32 time; // seconds since 01/01/2000 midnight
34 /*0x2C*/ u32 iconAddr; // 0xffffffff if not used
35 /*0x30*/ u16 iconFormat;
36 /*0x32*/ u16 iconSpeed;
37 /*0x34*/ u8 permission;
39 /*0x36*/ u16 startBlock;
42 u32 commentAddr; // 0xffffffff if not used
43} CARDDir;
44
85
86typedef struct CARDDecParam {
87 /* 0x00 */ u8* inputAddr;
88 /* 0x04 */ u32 inputLength;
89 /* 0x08 */ u32 aramAddr;
90 /* 0x0C */ u8* outputAddr;
92
93typedef struct CARDID {
94 /* 0x000 */ u8 serial[32];
95 /* 0x020 */ u16 deviceID;
96 /* 0x022 */ u16 size;
97 /* 0x024 */ u16 encode;
98 /* 0x026 */ u8 padding[470];
99 /* 0x1FC */ u16 checkSum;
100 /* 0x1FE */ u16 checkSumInv;
101} CARDID;
102
107#include <dolphin/card/CARDDir.h>
116
117#define CARD_ATTR_PUBLIC 0x04u
118#define CARD_ATTR_NO_COPY 0x08u
119#define CARD_ATTR_NO_MOVE 0x10u
120#define CARD_ATTR_GLOBAL 0x20u
121#define CARD_ATTR_COMPANY 0x40u
122
123#define CARD_FAT_AVAIL 0x0000u
124#define CARD_FAT_CHECKSUM 0x0000u
125#define CARD_FAT_CHECKSUMINV 0x0001u
126#define CARD_FAT_CHECKCODE 0x0002u
127#define CARD_FAT_FREEBLOCKS 0x0003u
128#define CARD_FAT_LASTSLOT 0x0004u
129
130#define CARD_WORKAREA_SIZE (5 * 8 * 1024)
131
132#define CARD_SEG_SIZE 0x200u
133#define CARD_PAGE_SIZE 0x80u
134#define CARD_MAX_SIZE 0x01000000U
135
136#define CARD_NUM_SYSTEM_BLOCK 5
137#define CARD_SYSTEM_BLOCK_SIZE (8 * 1024u)
138
139#define CARD_MAX_MOUNT_STEP (CARD_NUM_SYSTEM_BLOCK + 2)
140
141#define CARD_STAT_SPEED_END 0
142#define CARD_STAT_SPEED_FAST 1
143#define CARD_STAT_SPEED_MIDDLE 2
144#define CARD_STAT_SPEED_SLOW 3
145#define CARD_STAT_SPEED_MASK 3
146
147#define CARD_RESULT_UNLOCKED 1
148#define CARD_RESULT_READY 0
149#define CARD_RESULT_BUSY -1
150#define CARD_RESULT_WRONGDEVICE -2
151#define CARD_RESULT_NOCARD -3
152#define CARD_RESULT_NOFILE -4
153#define CARD_RESULT_IOERROR -5
154#define CARD_RESULT_BROKEN -6
155#define CARD_RESULT_EXIST -7
156#define CARD_RESULT_NOENT -8
157#define CARD_RESULT_INSSPACE -9
158#define CARD_RESULT_NOPERM -10
159#define CARD_RESULT_LIMIT -11
160#define CARD_RESULT_NAMETOOLONG -12
161#define CARD_RESULT_ENCODING -13
162#define CARD_RESULT_CANCELED -14
163#define CARD_RESULT_FATAL_ERROR -128
164
165#define CARDIsValidBlockNo(card, blockNo) \
166 ((blockNo) >= CARD_NUM_SYSTEM_BLOCK && (blockNo) < (card)->cBlock)
167
168#define CARD_READ_SIZE 512
169#define CARD_COMMENT_SIZE 64
170
171#define CARD_ICON_WIDTH 32
172#define CARD_ICON_HEIGHT 32
173
174#define CARD_BANNER_WIDTH 96
175#define CARD_BANNER_HEIGHT 32
176
177#define CARD_STAT_ICON_NONE 0
178#define CARD_STAT_ICON_C8 1
179#define CARD_STAT_ICON_RGB5A3 2
180#define CARD_STAT_ICON_MASK 3
181
182#define CARD_STAT_BANNER_NONE 0
183#define CARD_STAT_BANNER_C8 1
184#define CARD_STAT_BANNER_RGB5A3 2
185#define CARD_STAT_BANNER_MASK 3
186
187#define CARDGetBannerFormat(stat) \
188 (((stat)->bannerFormat) & CARD_STAT_BANNER_MASK)
189#define CARDGetIconFormat(stat, n) \
190 (((stat)->iconFormat >> (2 * (n))) & CARD_STAT_ICON_MASK)
191#define CARDGetDirCheck(dir) ((CARDDirCheck*) &(dir)[CARD_MAX_FILE])
192
193void CARDInit(void);
196s32 CARDFreeBlocks(s32 chan, s32* byteNotUsed, s32* filesNotUsed);
197s32 CARDRenameAsync(s32 chan, const char* oldName, const char* newName,
200
201#ifdef __cplusplus
202}
203#endif
204
205#endif
s32 CARDFormatAsync(s32 chan, CARDCallback callback)
void CARDInit(void)
s32 CARDGetResultCode(s32 chan)
#define CARD_FILENAME_MAX
Definition card.h:12
void(* CARDCallback)(s32 chan, s32 result)
Definition card.h:16
s32 CARDCheckAsync(s32 chan, CARDCallback callback)
s32 CARDRenameAsync(s32 chan, const char *oldName, const char *newName, CARDCallback callback)
s32 CARDFreeBlocks(s32 chan, s32 *byteNotUsed, s32 *filesNotUsed)
int BOOL
Definition types.h:20
unsigned long u32
Definition types.h:9
unsigned short int u16
Definition types.h:7
static void callback(HSD_GObj *gobj)
Definition ftDk_SpecialLw.c:90
signed long s32
Definition hsd_3B2B.h:1
unsigned char u8
Definition hsd_3B2B.h:2
Definition card.h:45
const DVDDiskID * diskID
Definition card.h:83
CARDCallback extCallback
Definition card.h:74
void * workArea
Definition card.h:59
volatile u32 mode
Definition card.h:65
CARDCallback exiCallback
Definition card.h:76
CARDCallback eraseCallback
Definition card.h:79
u16 vendorID
Definition card.h:52
int formatStep
Definition card.h:57
CARDCallback xferCallback
Definition card.h:78
u16 startBlock
Definition card.h:72
s32 cmdlen
Definition card.h:64
u32 addr
Definition card.h:68
CARDDir * currentDir
Definition card.h:60
u16 freeNo
Definition card.h:71
u16 cBlock
Definition card.h:51
s32 result
Definition card.h:47
OSAlarm alarm
Definition card.h:81
void * buffer
Definition card.h:69
int mountStep
Definition card.h:55
int retry
Definition card.h:66
u32 scramble
Definition card.h:56
s32 xferred
Definition card.h:70
CARDFileInfo * fileInfo
Definition card.h:73
u16 pageSize
Definition card.h:49
DSPTaskInfo task
Definition card.h:58
s32 latency
Definition card.h:53
int cid
Definition card.h:82
u16 size
Definition card.h:48
int repeat
Definition card.h:67
CARDCallback unlockCallback
Definition card.h:80
u16 * currentFat
Definition card.h:61
s32 sectorSize
Definition card.h:50
CARDCallback txCallback
Definition card.h:75
BOOL attached
Definition card.h:46
OSThreadQueue threadQueue
Definition card.h:62
u8 cmd[9]
Definition card.h:63
CARDCallback apiCallback
Definition card.h:77
Definition card.h:86
u8 * outputAddr
Definition card.h:90
u32 inputLength
Definition card.h:88
u32 aramAddr
Definition card.h:89
u8 * inputAddr
Definition card.h:87
Definition card.h:27
u8 _padding1[2]
Definition card.h:41
u8 company[2]
Definition card.h:29
u8 _padding0
Definition card.h:30
u16 startBlock
Definition card.h:39
u32 time
Definition card.h:33
u16 length
Definition card.h:40
u16 iconFormat
Definition card.h:35
u32 iconAddr
Definition card.h:34
u8 fileName[CARD_FILENAME_MAX]
Definition card.h:32
u8 gameName[4]
Definition card.h:28
u8 bannerFormat
Definition card.h:31
u8 permission
Definition card.h:37
u16 iconSpeed
Definition card.h:36
u32 commentAddr
Definition card.h:42
u8 copyTimes
Definition card.h:38
Definition card.h:19
s32 length
Definition card.h:23
s32 offset
Definition card.h:22
s32 fileNo
Definition card.h:21
s32 chan
Definition card.h:20
u16 iBlock
Definition card.h:24
Definition card.h:93
u16 encode
Definition card.h:97
u16 size
Definition card.h:96
u16 deviceID
Definition card.h:95
u16 checkSumInv
Definition card.h:100
u16 checkSum
Definition card.h:99
u8 serial[32]
Definition card.h:94
u8 padding[470]
Definition card.h:98
Definition dsp.h:9
Definition dvd.h:7
Definition OSAlarm.h:10
Definition OSThread.h:15