Skip to content

Commit f5aceb7

Browse files
authored
isavegame 99% (#400)
* isavegame progress * isavegame 99%
1 parent 0167625 commit f5aceb7

File tree

3 files changed

+736
-68
lines changed

3 files changed

+736
-68
lines changed

include/dolphin/dolphin.h

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,8 @@ void VIWaitForRetrace();
241241
#define CARD_MAX_FILE 127
242242
#define CARD_ICON_MAX 8
243243

244+
typedef void (*CARDCallback)(s32 chan, s32 result);
245+
244246
typedef struct CARDFileInfo
245247
{
246248
/*0x00*/ s32 chan;
@@ -256,6 +258,12 @@ typedef struct CARDFileInfo
256258
#define CARD_ATTR_GLOBAL 0x20u
257259
#define CARD_ATTR_COMPANY 0x40u
258260

261+
#define CARD_STAT_SPEED_END 0
262+
#define CARD_STAT_SPEED_FAST 1
263+
#define CARD_STAT_SPEED_MIDDLE 2
264+
#define CARD_STAT_SPEED_SLOW 3
265+
#define CARD_STAT_SPEED_MASK 3
266+
259267
#define CARD_RESULT_UNLOCKED 1
260268
#define CARD_RESULT_READY 0
261269
#define CARD_RESULT_BUSY -1
@@ -274,13 +282,61 @@ typedef struct CARDFileInfo
274282
#define CARD_RESULT_CANCELED -14
275283
#define CARD_RESULT_FATAL_ERROR -128
276284

285+
#define CARD_ICON_WIDTH 32
286+
#define CARD_ICON_HEIGHT 32
287+
288+
#define CARD_BANNER_WIDTH 96
289+
#define CARD_BANNER_HEIGHT 32
290+
291+
#define CARD_STAT_ICON_NONE 0
292+
#define CARD_STAT_ICON_C8 1
293+
#define CARD_STAT_ICON_RGB5A3 2
294+
#define CARD_STAT_ICON_MASK 3
295+
296+
#define CARD_STAT_BANNER_NONE 0
297+
#define CARD_STAT_BANNER_C8 1
298+
#define CARD_STAT_BANNER_RGB5A3 2
299+
#define CARD_STAT_BANNER_MASK 3
300+
301+
#define CARD_ENCODE_ANSI 0
302+
#define CARD_ENCODE_SJIS 1
303+
304+
#define CARD_STAT_ANIM_LOOP 0x00
305+
#define CARD_STAT_ANIM_BOUNCE 0x04
306+
#define CARD_STAT_ANIM_MASK 0x04
307+
308+
#define CARDGetDirCheck(dir) ((CARDDirCheck*)&(dir)[CARD_MAX_FILE])
309+
#define CARDGetBannerFormat(stat) (((stat)->bannerFormat) & CARD_STAT_BANNER_MASK)
310+
#define CARDGetIconAnim(stat) (((stat)->bannerFormat) & CARD_STAT_ANIM_MASK)
311+
#define CARDGetIconFormat(stat, n) (((stat)->iconFormat >> (2 * (n))) & CARD_STAT_ICON_MASK)
312+
#define CARDGetIconSpeed(stat, n) (((stat)->iconSpeed >> (2 * (n))) & CARD_STAT_SPEED_MASK)
313+
#define CARDSetBannerFormat(stat, f) \
314+
((stat)->bannerFormat = (u8)(((stat)->bannerFormat & ~CARD_STAT_BANNER_MASK) | (f)))
315+
#define CARDSetIconAnim(stat, f) \
316+
((stat)->bannerFormat = (u8)(((stat)->bannerFormat & ~CARD_STAT_ANIM_MASK) | (f)))
317+
#define CARDSetIconFormat(stat, n, f) \
318+
((stat)->iconFormat = \
319+
(u16)(((stat)->iconFormat & ~(CARD_STAT_ICON_MASK << (2 * (n)))) | ((f) << (2 * (n)))))
320+
#define CARDSetIconSpeed(stat, n, f) \
321+
((stat)->iconSpeed = \
322+
(u16)(((stat)->iconSpeed & ~(CARD_STAT_SPEED_MASK << (2 * (n)))) | ((f) << (2 * (n)))))
323+
#define CARDSetIconAddress(stat, addr) ((stat)->iconAddr = (u32)(addr))
324+
#define CARDSetCommentAddress(stat, addr) ((stat)->commentAddr = (u32)(addr))
325+
#define CARDGetFileNo(fileInfo) ((fileInfo)->fileNo)
326+
277327
// CARDBios.h
278328
void CARDInit(void);
329+
s32 CARDGetResultCode(s32 chan);
279330
s32 CARDFreeBlocks(s32 chan, s32* byteNotUsed, s32* filesNotUsed);
280331
s32 CARDGetEncoding(s32 chan, u16* encode);
281332
s32 CARDGetSectorSize(s32 chan, u32* size);
333+
// CARDCreate
334+
s32 CARDCreate(s32 chan, const char* fileName, u32 size, CARDFileInfo* fileInfo);
335+
// CARDDelete
336+
s32 CARDDelete(s32 chan, const char* fileName);
282337
// CARDMount.h
283338
s32 CARDProbeEx(s32 chan, s32* memSize, s32* sectorSize);
339+
s32 CARDMount(s32 chan, void* workArea, CARDCallback detachCallback);
284340
s32 CARDUnmount(s32 chan);
285341
// CARDCheck.h
286342
s32 CARDCheckEx(s32 chan, s32* xferBytes);
@@ -303,15 +359,23 @@ typedef struct CARDStat
303359
/*0x64*/ u32 offsetIconTlut;
304360
/*0x68*/ u32 offsetData;
305361
} CARDStat;
362+
s32 CARDGetStatus(s32 chan, s32 fileNo, CARDStat* stat);
306363
s32 CARDSetStatus(s32 chan, s32 fileNo, struct CARDStat* stat);
307364
// CARDRead.h
365+
s32 CARDReadAsync(CARDFileInfo* fileInfo, void* buf, s32 length, s32 offset, CARDCallback callback);
308366
s32 CARDRead(struct CARDFileInfo* fileInfo, void* buf, s32 length, s32 offset);
367+
// CARDWrite
368+
s32 CARDWriteAsync(CARDFileInfo* fileInfo, void* buf, s32 length, s32 offset, CARDCallback callback);
309369
// CARDOpen.h
310370
s32 CARDFastOpen(s32 chan, s32 fileNo, CARDFileInfo* fileInfo);
311371
s32 CARDOpen(s32 chan, char* fileName, CARDFileInfo* fileInfo);
312372
s32 CARDClose(CARDFileInfo* fileInfo);
313373
// CARDNet
314374
s32 CARDSetAttributes(s32 chan, s32 fileNo, u8 attr);
375+
// CARDFormat
376+
s32 CARDFormat(s32 chan);
377+
// CARDRdwr
378+
s32 CARDGetXferredBytes(s32 chan);
315379

316380
#ifdef __cplusplus
317381
}

0 commit comments

Comments
 (0)