Skip to content
70 changes: 35 additions & 35 deletions config/SZBE69_B8/objects.json
Original file line number Diff line number Diff line change
Expand Up @@ -2177,46 +2177,46 @@
"mw_version": "Wii/1.3",
"cflags": "sdk/ec",
"objects": {
"sdk/ec/src/ec_api.cpp": "MISSING",
"sdk/ec/src/ec_asyncOp.cpp": "MISSING",
"sdk/ec/src/ec_api.cpp": "NonMatching",
"sdk/ec/src/ec_asyncOp.cpp": "NonMatching",
"sdk/ec/src/ec_base64.cpp": "Equivalent",
"sdk/ec/src/ec_checkECard.cpp": "MISSING",
"sdk/ec/src/ec_checkReg.cpp": "MISSING",
"sdk/ec/src/ec_chkDevStat.cpp": "MISSING",
"sdk/ec/src/ec_chkDownload_bw.cpp": "MISSING",

"sdk/ec/src/ec_connect.cpp": "MISSING",
"sdk/ec/src/ec_content.cpp": "MISSING",
"sdk/ec/src/ec_csup.cpp": "MISSING",
"sdk/ec/src/ec_deleteContents.cpp": "MISSING",
"sdk/ec/src/ec_dk.cpp": "MISSING",
"sdk/ec/src/ec_downloadContents.cpp": "MISSING",
"sdk/ec/src/ec_file_bw.cpp": "MISSING",
"sdk/ec/src/ec_getContentsResReq.cpp": "MISSING",
"sdk/ec/src/ec_getTitle.cpp": "MISSING",
"sdk/ec/src/ec_getTitleResReq.cpp": "MISSING",
"sdk/ec/src/ec_http_bw.cpp": "MISSING",

"sdk/ec/src/ec_list.cpp": "MISSING",
"sdk/ec/src/ec_listCatalog.cpp": "MISSING",
"sdk/ec/src/ec_listContentDownloadInfos.cpp": "MISSING",
"sdk/ec/src/ec_listContentSetGroups.cpp": "MISSING",
"sdk/ec/src/ec_listContentSets.cpp": "MISSING",
"sdk/ec/src/ec_listECardItems.cpp": "MISSING",
"sdk/ec/src/ec_listPurchaseHistory.cpp": "MISSING",
"sdk/ec/src/ec_listServiceItems.cpp": "MISSING",
"sdk/ec/src/ec_listTitleContents.cpp": "MISSING",
"sdk/ec/src/ec_listTitles.cpp": "MISSING",
"sdk/ec/src/ec_checkECard.cpp": "NonMatching",
"sdk/ec/src/ec_checkReg.cpp": "NonMatching",
"sdk/ec/src/ec_chkDevStat.cpp": "NonMatching",
"sdk/ec/src/ec_chkDownload_bw.cpp": "NonMatching",

"sdk/ec/src/ec_connect.cpp": "NonMatching",
"sdk/ec/src/ec_content.cpp": "NonMatching",
"sdk/ec/src/ec_csup.cpp": "Matching",
"sdk/ec/src/ec_deleteContents.cpp": "NonMatching",
"sdk/ec/src/ec_dk.cpp": "NonMatching",
"sdk/ec/src/ec_downloadContents.cpp": "NonMatching",
"sdk/ec/src/ec_file_bw.cpp": "NonMatching",
"sdk/ec/src/ec_getContentsResReq.cpp": "NonMatching",
"sdk/ec/src/ec_getTitle.cpp": "NonMatching",
"sdk/ec/src/ec_getTitleResReq.cpp": "NonMatching",
"sdk/ec/src/ec_http_bw.cpp": "NonMatching",

"sdk/ec/src/ec_list.cpp": "NonMatching",
"sdk/ec/src/ec_listCatalog.cpp": "NonMatching",
"sdk/ec/src/ec_listContentDownloadInfos.cpp": "NonMatching",
"sdk/ec/src/ec_listContentSetGroups.cpp": "NonMatching",
"sdk/ec/src/ec_listContentSets.cpp": "NonMatching",
"sdk/ec/src/ec_listECardItems.cpp": "NonMatching",
"sdk/ec/src/ec_listPurchaseHistory.cpp": "NonMatching",
"sdk/ec/src/ec_listServiceItems.cpp": "NonMatching",
"sdk/ec/src/ec_listTitleContents.cpp": "NonMatching",
"sdk/ec/src/ec_listTitles.cpp": "NonMatching",

"sdk/ec/src/ec_md5.cpp": "Matching",
"sdk/ec/src/ec_mem.cpp": "Matching",
"sdk/ec/src/ec_misc.cpp": "MISSING",
"sdk/ec/src/ec_purchaseTitle.cpp": "MISSING",
"sdk/ec/src/ec_register.cpp": "MISSING",
"sdk/ec/src/ec_shoplog_bw.cpp": "MISSING",
"sdk/ec/src/ec_soap.cpp": "MISSING",
"sdk/ec/src/ec_misc.cpp": "NonMatching",
"sdk/ec/src/ec_purchaseTitle.cpp": "NonMatching",
"sdk/ec/src/ec_register.cpp": "NonMatching",
"sdk/ec/src/ec_shoplog_bw.cpp": "NonMatching",
"sdk/ec/src/ec_soap.cpp": "NonMatching",
"sdk/ec/src/ec_string.cpp": "NonMatching",
"sdk/ec/src/ec_sysconfig_bw.cpp": "MISSING"
"sdk/ec/src/ec_sysconfig_bw.cpp": "NonMatching"
}
},
"sdk/ec_c": {
Expand Down
4 changes: 2 additions & 2 deletions src/sdk/PowerPC_EABI_Support/MSL/MSL_C++/string
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ namespace std {

do_replace(cur_size, 0, src, src + size, tag);
}

inline char *data() const;
void append(const CharT *str) {
// required to be here to match; probably an inline missing
random_access_iterator_tag tag;
Expand Down Expand Up @@ -471,4 +471,4 @@ namespace std {
getline(basic_istream<CharT, Traits> &is, basic_string<CharT, Traits, Allocator> &str);
}

#endif
#endif
2 changes: 1 addition & 1 deletion src/sdk/PowerPC_EABI_Support/MSL/MSL_C++/vector
Original file line number Diff line number Diff line change
Expand Up @@ -219,4 +219,4 @@ namespace std {

}

#endif
#endif
2 changes: 2 additions & 0 deletions src/sdk/PowerPC_EABI_Support/MSL/MSL_C/stdlib.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ void *bsearch(
int (*comp)(const void *, const void *)
);

long strtol(const char *str, char **_end, int base);

int system(const char *command);
char *getenv(const char *name);

Expand Down
2 changes: 2 additions & 0 deletions src/sdk/PowerPC_EABI_Support/MSL/MSL_C/string.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ size_t strxfrm(char *RESTRICT dest, const char *RESTRICT src, size_t count);

size_t strlen(const char *str);



int strcmp(const char *lhs, const char *rhs);
int strncmp(const char *lhs, const char *rhs, size_t count);
char *strchr(const char *str, int ch);
Expand Down
211 changes: 211 additions & 0 deletions src/sdk/ec/asyncOp.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
#ifndef EC_ASYNCOP_H
#define EC_ASYNCOP_H

#include <ec/string.h>
#include <ec/internal/shr.h>
#include <ec/vector.h>
#include <ec/mem.h>

void *asyncOpThreadFunc(void *arg);

namespace ec {
class ECNamValStr : public ECString {
public:
ECString field0xc;
ECNamValStr();
~ECNamValStr();
};
}

struct ECAsyncOpArg {
int field0x0;
int *field0x4;
ECString *field0x8;
unsigned long field0xc;
int field0x10;
int field0x14;
int field0x18;
int field0x1c;
int field0x20;
int field0x24;
int field0x28;
int field0x2c;
int field0x30;
ec::ECBufHeapMeta *bufHeap; //0x34
void *field0x38;
};

struct AsyncOpThread : public _SHRThread {
int field0x2c;
};

class ECObj {
public:
void operator delete(void *);
};

class ECAsyncOp : public ECObj {
public:
//ECAsyncOpEnv *env;
long field0x4; //0x4
ECString method; //0x8
long field0x14; //0x14
int field0x18; //0x18
int field0x1c;
ECResult status; //0x20
int field0x24;
int field0x28; //0x28
u8 pad5[0x4];
unsigned long field0x30;
unsigned long downloadSize;
int field0x38;
u8 pad6[0x4];
char field0x3c;
u8 pad7[0x77];
char field0xbb;
int field0xbc;
char &__vt;
u8 padf[0x3];
int field0xc4;
int field0xc8;
int *field0xcc;
ECString *field0xd0;
int field0xd4;
int field0xd8;
int field0xdc;
int field0xe0;
int field0xe4;
int field0xe8;
int field0xec;
int field0xf0;
int field0xf4;
ec::ECBufHeapMeta *field0xf8;
void *pvVar; //0xfc
ec::ECBufHeapMeta field0x100;
const char *field0x108;
unsigned long field0x10c;
int field0x110;
int field0x114;
int field0x118;
int field0x11c;
const char *field0x120;
void setErrMsg(const char* msg);
void setErrInfo(const char*, const char*);
void setErrInfo(long, const char*);
void setTotalSize(unsigned long);
void incDownloadedSize(unsigned long);
ECResult init(long param1, ECAsyncOpArg *asyncOpArg);
void setFinalStatus(long param1);
void dump();
~ECAsyncOp();
};

class ECAsyncOpEnv {
public:
int field0x0;
AsyncOpThread *opThread;
_SHRThread *opThread1;
int field0xc;
ECString ecsUrl;
ECString iasUrl;
ECString casUrl;
ECString ccsUrl;
ECString ucsUrl;
unsigned int points;
bool field0x50; //got points?
u8 pad1[0x14];
ECString field0x68;
ECString field0x74;
int field0x80;
int field0x84;
int field0x88;
int field0x8c;
int field0x90;
int field0xbc;
u8 pad2[0x28];
ECString field0xc0;
ECString field0xcc;
ECString field0xd8;
ECString field0xe4;
ECString field0xf0;
ECString field0xfc;
ECString field0x108;
ECString field0x114;
ECString field0x120;
ECString field0x12c;
ECString field0x138;
ECString field0x144;
u8 pad3[0x28];
int field0x150;
int field0x154;
int field0x158;
int field0x15c;
int field0x160;
u8 pad4[0x4];
int field0x164;
u8 padd[0xc];
bool field0x170;
bool field0x171;
bool field0x172;
bool field0x173;
int field0x174;
ECString field0x184;
u8 pad5[0xc];
ECVector<ec::ECNamValStr> *vector1;
u8 currTitleId[0x8];
ECString field0x1b0;
ECString field0x1bc;
u8 pad7[0x8];
ECString field0x1d0;
u8 pad8[0x48];
ECString field0x224;
ECString field0x230;
ECString field0x23c;
bool field0x25a;
bool field0x25b;
u8 pad9[0x10];
ECString field0x260;
ECAsyncOpEnv();
~ECAsyncOpEnv();
ECResult init();
ECResult shutDown();
void lock();
void unlock();
void lockProgress();
void unlockProgress();
void dispatchOp(ECAsyncOp *op);
void post(ECAsyncOp *op);
void start(ECAsyncOp *op, ECAsyncOpArg *arg);
void clearOpCaches();
void getDeviceInfo();
void getKeyPairStatus();
void setDeviceToken(const char *token);
void setDeviceToken(ECString &token);
void setNamedValue(const char *name, const char *value);
int saveConfig();
void getConfig();
void getDevId();
void getDevCert();
void getCRL(bool unk);
bool checkParentalControlPassword(const char *unk1, long code);
void getParentalControlInfo();
void getCountry();
void getRegion();
void getLanguage();
void getSerialNumber();
void getFileSystemStatus();
void getWifiMac(char *unk);
void getBluetoothMac(char *unk);
int getFreeChannelAppCount();
int setWebSvcUrls(const char* ecsUrl, const char* iasUrl, const char* casUrl);
int setContentUrls(const char* ccsUrl, const char* ucsUrl);
void setErrInfo(const char*, const char*);
};

namespace ec {
ECAsyncOpEnv op;
}



#endif // EC_ASYNCOP_H
49 changes: 49 additions & 0 deletions src/sdk/ec/content.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#ifndef EC_CONTENT_H
#define EC_CONTENT_H

#include <ec/asyncOp.h>
#include <ec/vector.h>
#include <MSL_C++/string>


namespace ec {
ECResult downloadUcsFule(const ECAsyncOpEnv &, const ECString &, char *, unsigned char *, unsigned long &);
class Buffer {
~Buffer();
};
template <class T>
class Content {
u8 pad[0xf];
//ECString has a size of 0xc
ECString str1; //0x10
ECString str2; //0x1c
ECString str3; //0x28
u8 pad1[0x4];
ECString str4; //0x38
ECString str5; //0x44
ECString str6; //0x50
~Content();
void get();
};
struct ECTmdView {};
struct ECWhichContents {};
struct ECTitleContentsResources {};
ECResult getTmd(const ECAsyncOpEnv &, const ECString &, unsigned short *, unsigned char *&, unsigned long &, unsigned char *&, unsigned long &);
ECResult importTmd(const ECAsyncOpEnv &, unsigned char *, unsigned long, unsigned char *, unsigned long, unsigned char *, unsigned long);
ECResult getTitleContentsResources(const ECAsyncOpEnv&, const ECTmdView&, unsigned char*, unsigned long, ECWhichContents, ECWhichContents, unsigned short*, unsigned long, bool*, bool*, unsigned short*, unsigned long*, unsigned short*, unsigned long*, unsigned long*, ECTitleContentsResources*, ECTitleContentsResources*);
ECResult importContents(const ECAsyncOpEnv&, const ECTmdView&, unsigned char*, unsigned long, unsigned char*, unsigned long, unsigned char*, unsigned long, unsigned short*, unsigned long);
ECResult importContent(const ECAsyncOpEnv&, unsigned long long, unsigned long, unsigned long, unsigned char*, unsigned long);
class ImportBuf {
~ImportBuf();
void close();
void write(const char*, unsigned long);
};
ECResult importTickets(const ECAsyncOpEnv&, const ECVector<ECString>&, const ECString&, const void*, unsigned long);
ECResult importTicket(const ECAsyncOpEnv&, const void*, const void*, unsigned long, const void*, unsigned long);
ECResult importCommonTicket(const ECAsyncOpEnv&, const ECString&, unsigned char*, unsigned long&);
ECResult downloadSysTitle(const ECAsyncOpEnv&, unsigned long long, unsigned long);


}

#endif
Loading
Loading