Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,14 @@
"vi.h": "c",
"types.h": "c",
"ppcarch.h": "c",
"string.h": "c"
"string.h": "c",
"gxmanage.h": "c",
"gxtransform.h": "c",
"gxdraw.h": "c",
"gxget.h": "c",
"gxverify.h": "c",
"card.h": "c",
"__start.h": "c"
},
// Disable C/C++ IntelliSense, use clangd instead
"C_Cpp.intelliSenseEngine": "default",
Expand Down
42 changes: 26 additions & 16 deletions configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,17 @@
#"-requireprotos"
]

cflags_trk = [
*cflags_base,
"-O4,p",
"-sdata 0",
"-sdata2 0",
"-inline auto,deferred",
"-rostr",
"-char signed",
"-use_lmw_stmw on"
]

# Renderware library flags
cflags_renderware = [
*cflags_base,
Expand Down Expand Up @@ -631,14 +642,14 @@ def MatchingFor(*versions):
"ax",
[
Object(Matching, "dolphin/src/ax/AX.c"),
Object(NonMatching, "dolphin/src/ax/AXAlloc.c"),
Object(Matching, "dolphin/src/ax/AXAlloc.c"),
Object(Matching, "dolphin/src/ax/AXAux.c"),
Object(NonMatching, "dolphin/src/ax/AXCL.c"),
Object(NonMatching, "dolphin/src/ax/AXOut.c"),
Object(Matching, "dolphin/src/ax/AXCL.c"),
Object(Matching, "dolphin/src/ax/AXOut.c"),
Object(Matching, "dolphin/src/ax/AXSPB.c"),
Object(NonMatching, "dolphin/src/ax/AXVPB.c"),
Object(Matching, "dolphin/src/ax/AXVPB.c"),
Object(Matching, "dolphin/src/ax/AXComp.c"),
Object(NonMatching, "dolphin/src/ax/DSPCode.c"),
Object(Matching, "dolphin/src/ax/DSPCode.c"),
Object(Matching, "dolphin/src/ax/AXProf.c"),
],
),
Expand All @@ -652,7 +663,7 @@ def MatchingFor(*versions):
"card",
[
Object(Matching, "dolphin/src/card/CARDBios.c"),
Object(NonMatching, "dolphin/src/card/CARDUnlock.c"),
Object(Matching, "dolphin/src/card/CARDUnlock.c"),
Object(Matching, "dolphin/src/card/CARDRdwr.c"),
Object(Matching, "dolphin/src/card/CARDBlock.c"),
Object(Matching, "dolphin/src/card/CARDDir.c"),
Expand Down Expand Up @@ -699,25 +710,24 @@ def MatchingFor(*versions):
DolphinLib(
"exi",
[
Object(NonMatching, "dolphin/src/exi/EXIBios.c"),
Object(Matching, "dolphin/src/exi/EXIBios.c"),
Object(Matching, "dolphin/src/exi/EXIUart.c")
]
),
DolphinLib(
"gx",
[
Object(NonMatching, "dolphin/src/gx/GXInit.c"),
Object(NonMatching, "dolphin/src/gx/GXFifo.c"),
Object(Matching, "dolphin/src/gx/GXInit.c"),
Object(Matching, "dolphin/src/gx/GXFifo.c"),
Object(Matching, "dolphin/src/gx/GXAttr.c"),
Object(Matching, "dolphin/src/gx/GXMisc.c"),
Object(NonMatching, "dolphin/src/gx/GXGeometry.c"),
Object(Matching, "dolphin/src/gx/GXGeometry.c"),
Object(Matching, "dolphin/src/gx/GXFrameBuf.c"),
Object(NonMatching, "dolphin/src/gx/GXLight.c"),
Object(Matching, "dolphin/src/gx/GXLight.c"),
Object(Matching, "dolphin/src/gx/GXTexture.c"),
Object(Matching, "dolphin/src/gx/GXBump.c"),
Object(Matching, "dolphin/src/gx/GXTev.c"),
Object(NonMatching, "dolphin/src/gx/GXPixel.c"),
Object(NonMatching, "dolphin/src/gx/GXDraw.c"),
Object(Matching, "dolphin/src/gx/GXPixel.c"),
Object(Matching, "dolphin/src/gx/GXDisplayList.c"),
Object(Matching, "dolphin/src/gx/GXTransform.c"),
Object(Matching, "dolphin/src/gx/GXPerf.c")
Expand Down Expand Up @@ -793,7 +803,7 @@ def MatchingFor(*versions):
"Runtime.PPCEABI.H",
[],
[
Object(NonMatching, "Runtime/__mem.c"),
Object(NonMatching, "Runtime/__mem.c", extra_cflags=["-inline on, deferred"]),
Object(Matching, "Runtime/__va_arg.c"),
Object(NonMatching, "Runtime/global_destructor_chain.c"),
Object(NonMatching, "Runtime/New.cp"),
Expand Down Expand Up @@ -897,9 +907,9 @@ def MatchingFor(*versions):
Object(NonMatching, "debugger/embedded/MetroTRK/Portable/mem_TRK.c"),
Object(NonMatching, "debugger/embedded/MetroTRK/Portable/string_TRK.c"),
Object(Matching, "debugger/embedded/MetroTRK/Processor/ppc/Generic/flush_cache.c"),
#Object(NonMatching, "debugger/embedded/MetroTRK/Processor/ppc/Generic/__exception.s"),
Object(NonMatching, "debugger/embedded/MetroTRK/Processor/ppc/Generic/__exception.s"),
Object(NonMatching, "debugger/embedded/MetroTRK/Processor/ppc/Generic/targimpl.c"),
#Object(NonMatching, "debugger/embedded/MetroTRK/Processor/ppc/Export/targsupp.s"),
Object(Matching, "debugger/embedded/MetroTRK/Processor/ppc/Export/targsupp.s"),
Object(Matching, "debugger/embedded/MetroTRK/Processor/ppc/Generic/mpc_7xx_603e.c"),
Object(NonMatching, "debugger/embedded/MetroTRK/Os/dolphin/dolphin_trk.c"),
Object(NonMatching, "debugger/embedded/MetroTRK/Os/dolphin/usr_put.c"),
Expand Down
154 changes: 79 additions & 75 deletions src/dolphin/include/dolphin/CARDPriv.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,93 +25,97 @@ extern "C" {

#define CARD_MAX_MOUNT_STEP (CARD_NUM_SYSTEM_BLOCK + 2)

typedef struct CARDDir {
u8 gameName[4];
u8 company[2];
u8 _padding0;
u8 bannerFormat;
u8 fileName[CARD_FILENAME_MAX];
u32 time; // seconds since 01/01/2000 midnight

u32 iconAddr; // 0xffffffff if not used
u16 iconFormat;
u16 iconSpeed;

u8 permission;
u8 copyTimes;
u16 startBlock;
u16 length;
u8 _padding1[2];

u32 commentAddr; // 0xffffffff if not used
typedef struct CARDDir
{
u8 gameName[4];
u8 company[2];
u8 _padding0;
u8 bannerFormat;
u8 fileName[CARD_FILENAME_MAX];
u32 time; // seconds since 01/01/2000 midnight

u32 iconAddr; // 0xffffffff if not used
u16 iconFormat;
u16 iconSpeed;

u8 permission;
u8 copyTimes;
u16 startBlock;
u16 length;
u8 _padding1[2];

u32 commentAddr; // 0xffffffff if not used
} CARDDir;

typedef struct CARDDirCheck {
u8 padding0[64 - 2 * 4];
u16 padding1;
s16 checkCode;
u16 checkSum;
u16 checkSumInv;
typedef struct CARDDirCheck
{
u8 padding0[64 - 2 * 4];
u16 padding1;
s16 checkCode;
u16 checkSum;
u16 checkSumInv;
} CARDDirCheck;

typedef struct CARDControl {
BOOL attached;
s32 result;
u16 size;
u16 pageSize;
s32 sectorSize;
u16 cBlock;
u16 vendorID;
s32 latency;
u8 id[12];
int mountStep;
int formatStep;
u32 scramble;
DSPTaskInfo task;
void* workArea;
CARDDir* currentDir;
u16* currentFat;
OSThreadQueue threadQueue;
u8 cmd[9];
s32 cmdlen;
vu32 mode;
int retry;
int repeat;
u32 addr;
void* buffer;
s32 xferred;
u16 freeNo;
u16 startBlock;
CARDFileInfo* fileInfo;
CARDCallback extCallback;
CARDCallback txCallback;
CARDCallback exiCallback;
CARDCallback apiCallback;
CARDCallback xferCallback;
CARDCallback eraseCallback;
CARDCallback unlockCallback;
OSAlarm alarm;
u32 cid;
const DVDDiskID* diskID;
typedef struct CARDControl
{
BOOL attached;
s32 result;
u16 size;
u16 pageSize;
s32 sectorSize;
u16 cBlock;
u16 vendorID;
s32 latency;
u8 id[12];
int mountStep;
int formatStep;
u32 scramble;
DSPTaskInfo task;
void* workArea;
CARDDir* currentDir;
u16* currentFat;
OSThreadQueue threadQueue;
u8 cmd[9];
s32 cmdlen;
vu32 mode;
int retry;
int repeat;
u32 addr;
void* buffer;
s32 xferred;
u16 freeNo;
u16 startBlock;
CARDFileInfo* fileInfo;
CARDCallback extCallback;
CARDCallback txCallback;
CARDCallback exiCallback;
CARDCallback apiCallback;
CARDCallback xferCallback;
CARDCallback eraseCallback;
CARDCallback unlockCallback;
OSAlarm alarm;
u32 cid;
const DVDDiskID* diskID;
} CARDControl;

typedef struct CARDID {
u8 serial[32]; // flashID[12] + timebase[8] + counterBias[4] + language[4] + XXX[4]
u16 deviceID;
u16 size;
u16 encode; // character set -- 0: S-JIS, 1: ANSI
typedef struct CARDID
{
u8 serial[32]; // flashID[12] + timebase[8] + counterBias[4] + language[4] + XXX[4]
u16 deviceID;
u16 size;
u16 encode; // character set -- 0: S-JIS, 1: ANSI

u8 padding[512 - 32 - 5 * 2];
u8 padding[512 - 32 - 5 * 2];

u16 checkSum;
u16 checkSumInv;
u16 checkSum;
u16 checkSumInv;
} CARDID;

void __CARDDefaultApiCallback(s32 chan, s32 result);
void __CARDSyncCallback(s32 channel, s32 result);

#define CARDIsValidBlockNo(card, iBlock) \
(CARD_NUM_SYSTEM_BLOCK <= (iBlock) && (iBlock) < (card)->cBlock)
(CARD_NUM_SYSTEM_BLOCK <= (iBlock) && (iBlock) < (card)->cBlock)
#define __CARDGetDirCheck(dir) ((CARDDirCheck*)&(dir)[CARD_MAX_FILE])

CARDDir* __CARDGetDirBlock(CARDControl* card);
Expand All @@ -123,7 +127,7 @@ void __CARDExiHandler(s32 chan, OSContext* context);
void __CARDExtHandler(s32 chan, OSContext* context);
void __CARDUnlockedHandler(s32 chan, OSContext* context);
s32 __CARDAccess(CARDControl* card, CARDDir* ent);
s32 __CARDIsWritable(CARDControl *card, CARDDir *entry);
s32 __CARDIsWritable(CARDControl* card, CARDDir* entry);

#define TRUNC(n, a) (((u32)(n)) & ~((a)-1))
#define OFFSET(n, a) (((u32)(n)) & ((a)-1))
Expand All @@ -136,4 +140,4 @@ extern u8 __CARDPermMask;
#ifdef __cplusplus
}
#endif
#endif // _DOLPHIN_CARDPRIV
#endif // _DOLPHIN_CARDPRIV
Loading