Include sdk subprojects as wraps

This commit is contained in:
Nomura 2023-09-02 17:27:40 +02:00
parent 31483189f8
commit a4809c2133
1313 changed files with 130 additions and 305518 deletions

5
.gitignore vendored
View File

@ -5,6 +5,11 @@
/tools/cw/mwrap.exe
# Wrapped subprojects folders
/subprojects/libvct-*/
/subprojects/NitroDWC-*/
/subprojects/NitroSDK-*/
/subprojects/NitroSystem-*/
/subprojects/NitroWiFi-*/
/subprojects/nitrogfx/
/subprojects/libpng-*/
/subprojects/zlib-*/

View File

@ -69,4 +69,4 @@ elif is_wsl_accessing_windows; then
fi
# Launch meson
"${MESON:-meson}" setup --native-file=meson/"$native_file" --native-file="$build/root.ini" --cross-file=meson/"$cross_file" --cross-file="$build/root.ini" "$@" -- "$build"
"${MESON:-meson}" setup --wrap-mode=nopromote --native-file=meson/"$native_file" --native-file="$build/root.ini" --cross-file=meson/"$cross_file" --cross-file="$build/root.ini" "$@" -- "$build"

View File

@ -21,7 +21,6 @@ public_includes = include_directories('include', 'asm')
c_args = [
'-O4,p',
'-proc', 'arm946e',
'-thumb',
'-enum', 'int',
'-lang', 'c99',
'-Cpp_exceptions', 'off',
@ -35,6 +34,11 @@ c_args = [
'-stdinc'
]
add_global_arguments(c_args,
language: 'c',
native: false
)
pokeplatinum_args = [
'-DPM_KEEP_ASSERTS',
'-DGAME_VERSION=PLATINUM',
@ -67,26 +71,48 @@ link_args = [
subdir('tools')
############################################################
### DEPENDENCIES ###
############################################################
nitrosdk_dep = dependency('NitroSDK',
default_options: {
'mwrap_ver': '2.0/sp1p2',
'sp1p3_conditionals': true
}
)
nitrosystem_dep = dependency('NitroSystem',
default_options: {
'mwrap_ver': '2.0/sp2'
}
)
nitrowifi_dep = dependency('NitroWiFi',
default_options: {
'mwrap_ver': '2.0/sp1p2',
'sp1p3_conditionals': true
}
)
nitrodwc_dep = dependency('NitroDWC',
default_options: {
'mwrap_ver': '2.0/sp2p2',
'link_ppwlobby': true
}
)
libvct_dep = dependency('libvct')
libcrypto_dep = dependency('libcrypto')
libsyscall_dep = dependency('libsyscall')
ppwlobby_dep = dependency('ppwlobby')
############################################################
### SPEC FILES ###
############################################################
subdir('platinum.us')
############################################################
### DEPENDENCIES ###
############################################################
gamespy_dep = dependency('gamespy', fallback : ['gamespy', 'gamespy_dep'])
libvct_dep = dependency('libVCT', fallback : ['libVCT', 'libvct_dep'])
nitrosdk_dep = dependency('NitroSDK', fallback : ['NitroSDK', 'nitrosdk_dep'])
nitrosystem_dep = dependency('NitroSystem', fallback : ['NitroSystem', 'nitrosystem_dep'])
nitrowifi_dep = dependency('NitroWiFi', fallback : ['NitroWiFi', 'nitrowifi_dep'])
nitrodwc_dep = dependency('NitroDWC', fallback : ['NitroDWC', 'nitrodwc_dep'])
libcrypto_dep = dependency('libcrypto', fallback : ['libcrypto', 'libcrypto_dep'])
libsyscall_dep = dependency('libsyscall', fallback : ['libsyscall', 'libsyscall_dep'])
ppwlobby_dep = dependency('ppwlobby', fallback : ['ppwlobby', 'ppwlobby_dep'])
############################################################
### INTERNAL LIBRARIES ###
############################################################
@ -94,21 +120,19 @@ subdir('lib')
############################################################
### GAME SOURCES ###
### ARM9 BINARY ###
############################################################
subdir('src')
subdir('asm')
# Build main executable
main = executable('main',
sources: [
pokeplatinum_c,
pokeplatinum_asm
],
c_args: [
c_args,
pokeplatinum_args
pokeplatinum_args,
'-thumb'
],
nasm_args: asm_args,
c_pch: 'include/pch/global_pch.h',
@ -118,14 +142,13 @@ main = executable('main',
libspl_public_includes
],
dependencies: [
gamespy_dep,
libvct_dep,
nitrosdk_dep,
nitrosystem_dep,
nitrowifi_dep,
nitrodwc_dep,
libsyscall_dep,
libvct_dep,
libcrypto_dep,
libsyscall_dep,
ppwlobby_dep
],
link_with: [
@ -150,8 +173,11 @@ subdir('res')
############################################################
### ARM7 BINARIES ###
############################################################
ichneumon_sub = subproject('NitroSDK').get_variable('ichneumon_sub')
ichneumon_sub_defs = subproject('NitroSDK').get_variable('ichneumon_sub_defs')
ichneumon_sub = subproject('NitroSDK'
).get_variable('ichneumon_sub')
ichneumon_sub_defs = subproject('NitroSDK'
).get_variable('ichneumon_sub_defs')
############################################################
@ -186,7 +212,7 @@ pokeplatinum_nds = custom_target('pokeplatinum.us.nds',
'@OUTPUT0@',
'@OUTPUT1@'
],
build_by_default : true
build_by_default: true
)
@ -195,8 +221,15 @@ pokeplatinum_nds = custom_target('pokeplatinum.us.nds',
############################################################
sha1sum = find_program('sha1sum', native: true)
test('SBIN Checksums', sha1sum, args: ['-c', '--quiet', sbins_sha1])
test('ROM Checksum', sha1sum, args: ['-c', '--quiet', rom_sha1])
test('SBIN Checksums',
sha1sum,
args: ['-c', '--quiet', sbins_sha1]
)
test('ROM Checksum',
sha1sum,
args: ['-c', '--quiet', rom_sha1]
)
############################################################

View File

@ -0,0 +1,8 @@
[wrap-git]
url = https://github.com/Nomura-RH/NitroDWC.git
revision = head
depth = 1
directory = NitroDWC-2.2.30008
[provide]
dependency_names = NitroDWC

View File

@ -1,60 +0,0 @@
#ifndef DWC_AC_H_
#define DWC_AC_H_
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_WDS_SSID_BUF_SIZE 32
#define DWC_WDS_WEPKEY_BUF_SIZE 32
enum {
DWC_AC_STATE_ERROR_FATAL = -10, DWC_AC_STATE_ERROR_START_UP, DWC_AC_STATE_ERROR_SOCKET_START, DWC_AC_STATE_ERROR_NETCHECK_CREATE, DWC_AC_STATE_ERROR_IRREGULAR, DWC_AC_STATE_NULL = 0, DWC_AC_STATE_SEARCH, DWC_AC_STATE_CONNECT, DWC_AC_STATE_TEST, DWC_AC_STATE_RETRY, DWC_AC_STATE_COMPLETE
};
enum {
DWC_AC_AP_TYPE_USER1, DWC_AC_AP_TYPE_USER2, DWC_AC_AP_TYPE_USER3, DWC_AC_AP_TYPE_USB, DWC_AC_AP_TYPE_SHOP, DWC_AC_AP_TYPE_FREESPOT, DWC_AC_AP_TYPE_WAYPORT, DWC_AC_AP_TYPE_NINTENDOWFC, DWC_AC_AP_TYPE_NINTENDOSPOT, DWC_AC_AP_TYPE_UNKNOWN = 99, DWC_AC_AP_TYPE_FALSE = 0xff
};
typedef enum {
DWC_WDS_STATE_IDLE = 0, DWC_WDS_STATE_PROCESS = 1, DWC_WDS_STATE_COMPLETED = 2, DWC_WDS_STATE_FAILED = 3, DWC_WDS_STATE_ERROR = 4
} DWCWDSState;
typedef struct tagDWCACOption {
u8 connectType;
u8 skipNetCheck;
} DWCACOption;
typedef struct tagDWCACConfig {
void *(*alloc)(u32 name, s32 size);
void (* free)(u32 name, void * ptr, s32 size);
u8 dmaNo;
u8 powerMode;
DWCACOption option;
} DWCACConfig;
typedef struct tagDWCWDSData {
u8 ssid[DWC_WDS_SSID_BUF_SIZE];
u8 wep[DWC_WDS_WEPKEY_BUF_SIZE];
int wepMode;
char apnum[10];
} DWCWDSData;
BOOL DWC_AC_Create(DWCACConfig * config);
int DWC_AC_Process(void);
int DWC_AC_GetStatus(void);
u8 DWC_AC_GetApType(void);
BOOL DWC_AC_GetApSpotInfo(u8 * apSpotInfo);
BOOL DWC_AC_Destroy(void);
void DWC_AC_SetSpecifyAp(const void * ssid, const void * wep, int wepMode);
void DWC_AC_SetSpecifyApEx(const void * ssid, const void * wep, int wepMode, const char * apSpotInfo, int overrideType);
BOOL DWC_AC_CheckWiFiStation(const void * ssid, u16 len);
BOOL DWC_AC_StartupGetWDSInfo(DWCWDSData * nspotInfo);
DWCWDSState DWC_AC_ProcessGetWDSInfo(void);
void DWC_AC_CleanupGetWDSInfo(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,55 +0,0 @@
#ifndef DWC_AUTH_H_
#define DWC_AUTH_H_
#include <nitro.h>
#include "dwc_http.h"
#include "ac/dwc_ac.h"
#ifdef __cplusplus
extern "C" {
#endif
#define DWCAUTH_INGAMESN_LEN (25 + 1)
#define DWCAUTH_GSBRCDBYTES (11 + 1)
typedef struct {
int returncode;
char retcode[3 + 1];
char datetime[14 + 1];
char locator[50 + 1];
char token[300 + 1];
char challenge[8 + 1];
char cookie[64 + 1];
} DWCAuthResult;
typedef enum {
DWCAUTH_E_NOERR, DWCAUTH_E_BMINITERR, DWCAUTH_E_MEMERR, DWCAUTH_E_ACERR, DWCAUTH_E_HTTPINITERR, DWCAUTH_E_CALERR, DWCAUTH_E_INVALIDPARAM, DWCAUTH_E_CANTADDHTTPHEADER, DWCAUTH_E_CANTADDPOSTITEM, DWCAUTH_E_DNSERR, DWCAUTH_E_CANTSTARTHTTPTHREAD, DWCAUTH_E_HTTPCONERR, DWCAUTH_E_HTTPPARSEERR, DWCAUTH_E_HTTPERR, DWCAUTH_E_NASPARSEERR, DWCAUTH_E_BMERR, DWCAUTH_E_NASALREADYEXIST, DWCAUTH_E_NASACCTEXPIRE, DWCAUTH_E_NASERR, DWCAUTH_E_TOOMANYRETRY, DWCAUTH_E_ABORT, DWCAUTH_E_FINISH, DWCAUTH_E_NOTINITIALIZED, DWCAUTH_E_MAX
} DWCAuthError;
typedef struct {
unsigned short ingamesn[DWCAUTH_INGAMESN_LEN];
char gsbrcd[DWCAUTH_GSBRCDBYTES];
DWCAuthAlloc alloc;
DWCAuthFree free;
} DWCAuthParam;
typedef enum {
DWC_AUTH_INGAMESN_NOT_CHECKED = 0, DWC_AUTH_INGAMESN_VALID = 1, DWC_AUTH_INGAMESN_INVALID = 2
} DWCAuthIngamesnCheckResult;
extern DWCAuthIngamesnCheckResult DWCauthingamesncheckresult;
void DWC_Auth_SetCustomNas(const char * nasaddr);
DWCAuthError DWC_Auth_Create(DWCAuthParam * param, void * http);
DWCAuthError DWC_Auth_Create_WFCUtil(DWCAuthParam * param, void * http);
void DWC_Auth_Abort(void);
void DWC_Auth_Destroy(void);
void DWC_Auth_Join(void);
DWCAuthError DWC_Auth_GetError(void);
void DWC_Auth_GetResult(DWCAuthResult * result);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,102 +0,0 @@
#ifndef DWC_HTTP_H_
#define DWC_HTTP_H_
#include <nitroWiFi.h>
#include <nitroWiFi/version.h>
#include "util_alloc.h"
#include "util_base64.h"
#ifdef __cplusplus
extern "C" {
#endif
#define DWCHTTP_MAXURL 256
#define DWCHTTP_STACKSIZE 4096
#define DWCHTTP_MAX_LABELVALUE 32
typedef enum {
DWCHTTP_E_NOERR, DWCHTTP_E_MEMERR, DWCHTTP_E_DNSERR, DWCHTTP_E_CONERR, DWCHTTP_E_SENDTOUT, DWCHTTP_E_SENDERR, DWCHTTP_E_RECVTOUT, DWCHTTP_E_ABORT, DWCHTTP_E_FINISH, DWCHTTP_E_MAX
} DWCHttpError;
typedef enum {
DWCHTTP_POST, DWCHTTP_GET
} DWCHttpAction;
typedef struct {
char * buffer;
char * write_index;
char * buffer_tail;
unsigned long length;
} DWCHttpBuffer;
typedef struct {
char * label;
char * value;
} DWCHttpLabelValue;
typedef struct {
DWCHttpLabelValue * entry;
int len;
int index;
} DWCHttpParseResult;
typedef struct {
const char * url;
DWCHttpAction action;
unsigned long len_recvbuf;
DWCAuthAlloc alloc;
DWCAuthFree free;
BOOL ignoreca;
int timeout;
} DWCHttpParam;
typedef struct {
unsigned char stack[DWCHTTP_STACKSIZE];
u8 initflag;
DWCHttpParam param;
DWCHttpError error;
char url[DWCHTTP_MAXURL];
char * hostname;
char * filepath;
u32 hostip;
BOOL ssl_enabled;
unsigned short port;
CPSSoc soc;
CPSSslConnection con;
unsigned char * lowrecvbuf;
unsigned char * lowsendbuf;
u32 lowentropydata[OS_LOW_ENTROPY_DATA_SIZE / sizeof(u32)];
int num_postitem;
DWCHttpBuffer req;
DWCHttpBuffer rep;
OSMutex content_len_mutex;
int content_len;
int receivedbody_len;
DWCHttpLabelValue labelvalue[DWCHTTP_MAX_LABELVALUE];
OSThread thread;
OSMutex mutex;
BOOL abort;
} DWCHttp;
DWCHttpError DWC_Http_Create(DWCHttp * http, DWCHttpParam * param);
void DWC_Http_Destroy(DWCHttp * http);
void DWC_Http_StartThread(DWCHttp * http, u32 prio);
void DWC_Http_Abort(DWCHttp * http);
int DWC_Http_GetRecvProgress(DWCHttp * http);
DWCHttpError DWC_Http_Add_HeaderItem(DWCHttp * http, char * label, char * data);
DWCHttpError DWC_Http_Add_PostBase64Item(DWCHttp * http, const char * label, const char * data, unsigned long data_len);
DWCHttpError DWC_Http_Add_Body(DWCHttp * http, const char * data);
DWCHttpError DWC_Http_FinishHeader(DWCHttp * http);
BOOL DWC_Http_ParseResult(DWCHttp * http, BOOL noparsebody);
#ifdef DWC_HTTP_SETSSLPRIO
void DWC_Http_SetSSLPrio(u32 prio);
#endif
char * DWC_Http_GetResult(DWCHttp * http, char * label);
int DWC_Http_GetBase64DecodedResult(DWCHttp * http, char * label, char * buffer, unsigned long buffer_len);
BOOL DWC_Http_GetRawResult(DWCHttp * http, char * label, char * buffer, int buffer_len);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,39 +0,0 @@
#ifndef DWC_NETCHECK_H_
#define DWC_NETCHECK_H_
#include "dwc_auth.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
DWCNETCHECK_E_NOERR, DWCNETCHECK_E_HTTPINITERR, DWCNETCHECK_E_HTTPPARSEERR, DWCNETCHECK_E_HTTPERR, DWCNETCHECK_E_MEMERR, DWCNETCHECK_E_AUTHINITERR, DWCNETCHECK_E_AUTHERR, DWCNETCHECK_E_302TWICE, DWCNETCHECK_E_CANTADDPOSTITEM, DWCNETCHECK_E_NASPARSEERR, DWCNETCHECK_E_NETUNAVAIL, DWCNETCHECK_E_NETAVAIL, DWCNETCHECK_E_MAX
} DWCNetcheckError;
typedef struct {
DWCAuthAlloc alloc;
DWCAuthFree free;
void * bmworkarea;
} DWCNetcheckParam;
typedef enum {
DWC_SIMPLENETCHECK_PROCESSING = 0, DWC_SIMPLENETCHECK_SUCCESS, DWC_SIMPLENETCHECK_FAIL, DWC_SIMPLENETCHECK_SYSFAIL, DWC_SIMPLENETCHECK_NOTINITIALIZED
} DWCSimpleNetcheckResult;
DWCNetcheckError DWC_Netcheck_Create(DWCNetcheckParam * param);
void DWC_Netcheck_Destroy(void);
void DWC_Netcheck_Abort(void);
void DWC_Netcheck_Join(void);
DWCNetcheckError DWC_Netcheck_GetError(void);
int DWC_Netcheck_GetReturnCode(void);
void DWC_Netcheck_SetCustomBlacklist(const char * url);
void DWC_Netcheck_SetAllow302(BOOL allow302);
BOOL DWC_SimpleNetcheckAsync(int timeout);
DWCSimpleNetcheckResult DWC_SimpleNetcheckProcess(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,32 +0,0 @@
#ifndef DWC_PROF_H
#define DWC_PROF_H
#include "dwc_http.h"
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_PROF_RESULT_STRING_LENGTH 51
typedef enum {
DWC_PROF_STATE_NOT_INITIALIZED = 0,
DWC_PROF_STATE_OPERATING,
DWC_PROF_STATE_SUCCESS,
DWC_PROF_STATE_FAIL
} DWCProfState;
typedef enum {
DWC_PROF_REGION_SELF = 0x00,
DWC_PROF_REGION_ALL = 0xff
} DWCProfRegion;
BOOL DWC_CheckProfanityAsync(const u16 ** words, int wordsnum, const char * reserved, int timeout, char * result, int * badwordsnum);
BOOL DWC_CheckProfanityExAsync(const u16 ** words, int wordsnum, const char * reserved, int timeout, char * result, int * badwordsnum, DWCProfRegion region);
DWCProfState DWC_CheckProfanityProcess(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,38 +0,0 @@
#ifndef DWC_SVL_H
#define DWC_SVL_H
#include "util_alloc.h"
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_SVL_ERROR_BASENUM (-24000)
#define DWC_SVL_ERROR_HTTPBASENUM (-25000)
#define DWC_SVL_ERROR_FATAL (-100)
#define DWC_SVL_ERROR_BADDATA (-101)
#define DWC_SVL_HOST_LENGTH 64
#define DWC_SVL_TOKEN_LENGTH 300
#define DWC_SVL_STATUSDATA_LENGTH 1
typedef enum {
DWC_SVL_STATE_DIRTY = 0, DWC_SVL_STATE_IDLE, DWC_SVL_STATE_HTTP, DWC_SVL_STATE_SUCCESS, DWC_SVL_STATE_ERROR, DWC_SVL_STATE_CANCELED, DWC_SVL_STATE_MAX
} DWCSvlState;
typedef struct {
BOOL status;
char svlhost[DWC_SVL_HOST_LENGTH + 1];
char svltoken[DWC_SVL_TOKEN_LENGTH + 1];
} DWCSvlResult;
BOOL DWC_Svl_Init(DWCAuthAlloc alloc, DWCAuthFree free);
void DWC_Svl_Cleanup(void);
BOOL DWC_Svl_GetTokenAsync(char * svc, DWCSvlResult * result);
DWCSvlState DWC_Svl_Process(void);
void DWC_Svl_Abort(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,17 +0,0 @@
#ifndef DWC_UTIL_ALLOC_H_
#define DWC_UTIL_ALLOC_H_
#include <nitro.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef void *(* DWCAuthAlloc)(unsigned long name, long size);
typedef void (* DWCAuthFree)(unsigned long name, void * ptr, long size);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,17 +0,0 @@
#ifndef DWC_UTIL_BASE64_H_
#define DWC_UTIL_BASE64_H_
#include <nitro.h>
#ifdef __cplusplus
extern "C" {
#endif
int DWC_Auth_Base64Encode(const char * src, const unsigned long srclen, char * dst, const unsigned long dstlen);
int DWC_Auth_Base64Decode(const char * src, const unsigned long srclen, char * dst, const unsigned long dstlen);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,134 +0,0 @@
#ifndef DWC_ACCOUNT_H_
#define DWC_ACCOUNT_H_
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_ACC_USERDATA_BUFSIZE 64
#define DWC_ACC_USERNAME_STRING_LENGTH 20
#define DWC_ACC_USERNAME_GSBRCD_OFFSET 9
#define DWC_ACC_USERNAME_STRING_BUFSIZE (DWC_ACC_USERNAME_STRING_LENGTH + 1)
#define DWC_ACC_FRIENDKEY_STRING_LENGTH 12
#define DWC_ACC_FRIENDKEY_STRING_BUFSIZE (DWC_ACC_FRIENDKEY_STRING_LENGTH + 1)
#define DWC_ACC_MASKBITS(bits) (((1u << bits) - 1))
#define DWC_ACC_USERID_BITS 43
#define DWC_ACC_PLAYERID_BITS 32
#define DWC_ACC_USERID_HI32_SHIFT 0
#define DWC_ACC_USERID_HI32_BITS 11
#define DWC_ACC_USERID_HI32_MASK DWC_ACC_MASKBITS(DWC_ACC_USERID_HI32_BITS)
#define DWC_ACC_FLAGS_SHIFT 11
#define DWC_ACC_FLAGS_BITS 21
#define DWC_ACC_FLAGS_MASK DWC_ACC_MASKBITS(DWC_ACC_FLAGS_BITS)
#define DWC_ACC_FRIENDDATA_NODATA 0
#define DWC_ACC_FRIENDDATA_LOGIN_ID 1
#define DWC_ACC_FRIENDDATA_FRIEND_KEY 2
#define DWC_ACC_FRIENDDATA_GS_PROFILE_ID 3
#define DWC_ACC_FRIENDDATA_MASK 3
#define DWC_ACC_FRIENDDATA_ISBUDDY (1u << 2)
#define DWC_ACC_FRIENDDATA_ISBUDDY_MASK (1u << 2)
#define DWC_ACC_USERDATA_DIRTY (1u)
#define DWC_ACC_USERDATA_DIRTY_MASK (1u)
#define DWC_FRIENDDATA_NODATA DWC_ACC_FRIENDDATA_NODATA
#define DWC_FRIENDDATA_LOGIN_ID DWC_ACC_FRIENDDATA_LOGIN_ID
#define DWC_FRIENDDATA_FRIEND_KEY DWC_ACC_FRIENDDATA_FRIEND_KEY
#define DWC_FRIENDDATA_GS_PROFILE_ID DWC_ACC_FRIENDDATA_GS_PROFILE_ID
#define DWC_FRIENDKEY_STRING_BUFSIZE DWC_ACC_FRIENDKEY_STRING_BUFSIZE
typedef struct DWCstAccFlag {
u32 flags;
u32 reserved;
u32 reserved1;
} DWCAccFlag;
typedef struct DWCstAccLoginId {
u32 id_data;
u32 userid_lo32;
u32 playerid;
} DWCAccLoginId;
typedef struct DWCstAccFriendKey {
u32 id_data;
u32 friendkey_lo32;
u32 friendkey_hi32;
} DWCAccFriendKey;
typedef struct DWCstAccGsProfileId {
u32 id_data;
int id;
u32 reserved;
} DWCAccGsProfileId;
typedef union DWCstAccFriendData {
DWCAccFlag flags;
DWCAccLoginId login_id;
DWCAccFriendKey friend_key;
DWCAccGsProfileId gs_profile_id;
} DWCAccFriendData;
typedef struct DWCstAccUserData {
int size;
DWCAccLoginId pseudo;
DWCAccLoginId authentic;
int gs_profile_id;
int flag;
u32 gamecode;
int reserved[5];
u32 crc32;
} DWCAccUserData;
typedef DWCAccUserData DWCUserData;
typedef DWCAccFriendData DWCFriendData;
void DWC_CreateUserData(DWCAccUserData * userdata, u32 gamecode);
BOOL DWC_CheckUserData(const DWCAccUserData * userdata);
BOOL DWC_CheckHasProfile(const DWCAccUserData * userdata);
BOOL DWC_CheckValidConsole(const DWCAccUserData * userdata);
BOOL DWC_CheckDirtyFlag(const DWCAccUserData * userdata);
void DWC_ClearDirtyFlag(DWCAccUserData * userdata);
u64 DWC_GetFriendKey(const DWCAccFriendData * frienddata);
u64 DWC_CreateFriendKey(const DWCAccUserData * userdata);
void DWC_CreateExchangeToken(const DWCAccUserData * userdata, DWCAccFriendData * token);
void DWC_CreateFriendKeyToken(DWCAccFriendData * token, u64 friend_key);
void DWC_SetGsProfileId(DWCAccFriendData * frienddata, int gs_profile_id);
BOOL DWC_CheckFriendKey(const DWCAccUserData * userdata, u64 friend_key);
BOOL DWC_IsEqualFriendData(const DWCAccFriendData * frienddata1, const DWCAccFriendData * frienddata2);
BOOL DWC_IsValidFriendData(const DWCAccFriendData * frienddata);
BOOL DWC_IsBuddyFriendData(const DWCAccFriendData * frienddata);
int DWC_GetFriendDataType(const DWCAccFriendData * frienddata);
void DWC_ClearBuddyFlagFriendData(DWCAccFriendData * frienddata);
int DWC_GetGsProfileId(const DWCAccUserData * userdata, const DWCAccFriendData * frienddata);
void DWC_LoginIdToUserName(const DWCAccUserData * userdata, const DWCAccFriendData * frienddata, char * username);
void DWC_ReportFriendData(const DWCAccUserData * userdata, const DWCAccFriendData * frienddata);
void DWC_ReportUserData(const DWCAccUserData * userdata);
u64 DWC_StringToFriendKey(const char * string);
void DWC_FriendKeyToString(char * string, u64 friendKey);
void DWCi_Acc_CreateUserData(DWCAccUserData * userdata, u32 gamecode);
void DWCi_Acc_CreateTempLoginId(DWCAccLoginId * loginid);
BOOL DWC_Acc_CheckFriendKey(u64 friendkey, u32 gamecode);
u64 DWC_Acc_CreateFriendKey(int gs_profile_id, u32 gamecode);
int DWC_Acc_FriendKeyToGsProfileId(u64 friendkey, u32 gamecode);
u64 DWCi_Acc_GetUserId(const DWCAccLoginId * data);
u32 DWCi_Acc_GetPlayerId(const DWCAccLoginId * data);
u64 DWCi_Acc_GetFriendKey(const DWCAccFriendKey * data);
int DWCi_Acc_GetGsProfileId(const DWCAccGsProfileId * data);
void DWCi_Acc_SetUserId(DWCAccLoginId * data, u64 userid);
void DWCi_Acc_SetPlayerId(DWCAccLoginId * data, u32 playerid);
void DWCi_Acc_SetFriendKey(DWCAccFriendKey * data, u64 friend_key);
void DWCi_Acc_SetGsProfileId(DWCAccGsProfileId * data, int gs_profile_id);
void DWCi_Acc_LoginIdToUserName(const DWCAccLoginId * loginid, u32 gamecode, char * username);
void DWCi_Acc_SetLoginIdToUserData(DWCAccUserData * userdata, const DWCAccLoginId * loginid, int gs_profile_id);
BOOL DWCi_Acc_CheckConsoleUserId(const DWCAccLoginId * loginid);
BOOL DWCi_Acc_IsDirty(const DWCAccUserData * userdata);
void DWCi_Acc_ClearDirty(DWCAccUserData * userdata);
BOOL DWCi_Acc_IsValidLoginId(const DWCAccLoginId * loginid);
BOOL DWCi_Acc_IsAuthentic(const DWCAccUserData * userdata);
BOOL DWCi_Acc_IsValidFriendData(const DWCAccFriendData * frienddata);
void DWCi_SetBuddyFriendData(DWCAccFriendData * frienddata);
void DWCi_Acc_TestFlagFunc(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,18 +0,0 @@
#ifndef DWC_BASE_GAMESPY_
#define DWC_BASE_GAMESPY_
#ifdef __cplusplus
extern "C" {
#endif
#include <gs/nonport.h>
#include <gs/gp/gp.h>
#include <gs/gt2/gt2.h>
#include <gs/qr2/qr2.h>
#include <gs/serverbrowsing/sb_serverbrowsing.h>
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,20 +0,0 @@
#ifndef DWC_COMMON_H_
#define DWC_COMMON_H_
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_COMMONSTR_MAX_KEY_VALUE_LEN 4096
extern int DWC_SetCommonKeyValueString(const char * key, const char * value, char * string, char separator);
extern int DWC_AddCommonKeyValueString(const char * key, const char * value, char * string, char separator);
extern int DWC_GetCommonValueString(const char * key, char * value, const char * string, char separator);
extern u32 DWCi_GetMathRand32(u32 max);
extern u32 DWCi_WStrLen(const u16 * str);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,88 +0,0 @@
#ifndef DWC_CONNECTINET_H_
#define DWC_CONNECTINET_H_
#include <ac/dwc_ac.h>
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_SIZE_SPOTINFO 9
typedef struct DWCstInetControl {
volatile int ac_state;
u16 state;
u16 online;
u16 dmaNo;
u16 powerMode;
u8 wontExecuteWDS;
DWCWDSState processWDSstate;
DWCWDSData nspotInfo;
#ifndef SDK_FINALROM
int connectType;
#endif
} DWCInetControl;
typedef enum {
DWC_CONNECTINET_STATE_NOT_INITIALIZED = 0, DWC_CONNECTINET_STATE_IDLE, DWC_CONNECTINET_STATE_OPERATING, DWC_CONNECTINET_STATE_OPERATED, DWC_CONNECTINET_STATE_CONNECTED, DWC_CONNECTINET_STATE_DISCONNECTING, DWC_CONNECTINET_STATE_DISCONNECTED, DWC_CONNECTINET_STATE_ERROR, DWC_CONNECTINET_STATE_FATAL_ERROR, DWC_CONNECTINET_STATE_LAST
} DWCInetResult;
typedef enum {
DWC_CONNECTINET_AUTH_TEST, DWC_CONNECTINET_AUTH_DEVELOP, DWC_CONNECTINET_AUTH_RELEASE, DWC_CONNECTINET_AUTH_LAST
} DWCInetAuthType;
typedef enum {
DWC_APINFO_AREA_JPN = 0, DWC_APINFO_AREA_USA, DWC_APINFO_AREA_EUR, DWC_APINFO_AREA_AUS, DWC_APINFO_AREA_KOR, DWC_APINFO_AREA_UNKNOWN = 0xff
} DWCApInfoArea;
typedef enum {
DWC_APINFO_TYPE_USER0 = 0, DWC_APINFO_TYPE_USER1, DWC_APINFO_TYPE_USER2, DWC_APINFO_TYPE_USB, DWC_APINFO_TYPE_SHOP, DWC_APINFO_TYPE_FREESPOT, DWC_APINFO_TYPE_WAYPORT, DWC_APINFO_TYPE_OTHER, DWC_APINFO_TYPE_NINTENDOWFC = DWC_APINFO_TYPE_OTHER, DWC_APINFO_TYPE_NINTENDOSPOT, DWC_APINFO_TYPE_UNKNOWN = 99
} DWCApInfoType;
typedef struct DWCstApInfo {
DWCApInfoType aptype;
DWCApInfoArea area;
char spotinfo[DWC_SIZE_SPOTINFO + 1];
char essid[WM_SIZE_SSID + 1];
u8 bssid[WM_SIZE_BSSID];
} DWCApInfo;
typedef enum {
DWC_TESTINET_NOT_INITIALIZED = 0, DWC_TESTINET_OPERATING, DWC_TESTINET_CONNECTED, DWC_TESTINET_DISCONNECTED
} DWCTestInetResult;
typedef void * (* DWCACAlloc )(u32 name, s32 size);
typedef void (* DWCACFree )(u32 name, void * ptr, s32 size);
BOOL DWC_GetApInfo(DWCApInfo * apinfo);
void DWC_EnableHotspot(void);
BOOL DWC_CheckWiFiStation(const void * ssid, u16 len);
extern void DWC_InitInetEx(DWCInetControl * inetCntl, u16 dmaNo, u16 powerMode, u16 ssl_priority);
extern void DWC_InitInet(DWCInetControl * inetCntl);
extern void DWC_SetAuthServer(DWCInetAuthType type);
extern void DWC_ConnectInetAsync(void);
extern void DWC_DebugConnectInetAsync(const void * ssid, const void * wep, int wepMode);
extern void DWC_DebugConnectInetExAsync(const void * ssid, const void * wep, int wepMode, const char * apSpotInfo, int overrideType);
extern BOOL DWC_CheckInet(void);
extern void DWC_ProcessInet(void);
extern DWCInetResult DWC_GetInetStatus(void);
extern void DWC_CleanupInet(void);
extern BOOL DWC_CleanupInetAsync(void);
extern BOOL DWCi_CheckDisconnected(void);
extern WMLinkLevel DWC_GetLinkLevel(void);
extern int DWC_GetUdpPacketDropNum(void);
extern void DWC_ForceShutdown(void);
extern BOOL DWC_UpdateConnection(void);
BOOL DWC_TestInetAsync(int timeout);
DWCTestInetResult DWC_TestInetProcess(void);
#ifndef SDK_FINALROM
void DWC_SetConnectApType(DWCApInfoType type);
#else
#define DWC_SetConnectApType(type) ((void)0)
#endif
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,31 +0,0 @@
#ifndef DWC_CORE_H_
#define DWC_CORE_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <base/dwc_connectinet.h>
#include <base/dwc_error.h>
#include <base/dwc_init.h>
#include <base/dwc_memfunc.h>
#include <base/dwc_nasfunc.h>
#include <base/dwc_report.h>
#ifndef NITRODWC_NOGS
#include <base/dwc_account.h>
#include <base/dwc_base_gamespy.h>
#include <base/dwc_common.h>
#include <base/dwc_friend.h>
#include <base/dwc_ghttp.h>
#include <base/dwc_login.h>
#include <base/dwc_match.h>
#include <base/dwc_transport.h>
#include <base/dwc_main.h>
#endif
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,30 +0,0 @@
#ifndef DWC_ERROR_H_
#define DWC_ERROR_H_
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
DWC_ERROR_NONE = 0, DWC_ERROR_DS_MEMORY_ANY, DWC_ERROR_AUTH_ANY, DWC_ERROR_AUTH_OUT_OF_SERVICE, DWC_ERROR_AUTH_STOP_SERVICE, DWC_ERROR_AC_ANY, DWC_ERROR_NETWORK, DWC_ERROR_GHTTP_ANY, DWC_ERROR_DISCONNECTED, DWC_ERROR_FATAL, DWC_ERROR_FRIENDS_SHORTAGE, DWC_ERROR_NOT_FRIEND_SERVER, DWC_ERROR_MO_SC_CONNECT_BLOCK, DWC_ERROR_SERVER_FULL, DWC_ERROR_ND_ANY, DWC_ERROR_ND_HTTP, DWC_ERROR_SVL_ANY, DWC_ERROR_SVL_HTTP, DWC_ERROR_PROF_ANY, DWC_ERROR_PROF_HTTP, DWC_ERROR_NUM
} DWCError;
typedef enum {
DWC_ETYPE_NO_ERROR = 0, DWC_ETYPE_LIGHT, DWC_ETYPE_SHOW_ERROR, DWC_ETYPE_SHUTDOWN_FM, DWC_ETYPE_SHUTDOWN_GHTTP, DWC_ETYPE_SHUTDOWN_ND, DWC_ETYPE_DISCONNECT, DWC_ETYPE_FATAL, DWC_ETYPE_NUM
} DWCErrorType;
enum {
DWC_ECODE_SEQ_LOGIN = (-60000), DWC_ECODE_SEQ_FRIEND = (-70000), DWC_ECODE_SEQ_MATCH = (-80000), DWC_ECODE_SEQ_ETC = (-90000), DWC_ECODE_GS_GP = (-1000), DWC_ECODE_GS_PERS = (-2000), DWC_ECODE_GS_STATS = (-3000), DWC_ECODE_GS_QR2 = (-4000), DWC_ECODE_GS_SB = (-5000), DWC_ECODE_GS_NN = (-6000), DWC_ECODE_GS_GT2 = (-7000), DWC_ECODE_GS_HTTP = (-8000), DWC_ECODE_GS_ETC = (-9000), DWC_ECODE_TYPE_NETWORK = (-10), DWC_ECODE_TYPE_SERVER = (-20), DWC_ECODE_TYPE_DNS = (-30), DWC_ECODE_TYPE_DATA = (-40), DWC_ECODE_TYPE_SOCKET = (-50), DWC_ECODE_TYPE_BIND = (-60), DWC_ECODE_TYPE_TIMEOUT = (-70), DWC_ECODE_TYPE_PEER = (-80), DWC_ECODE_TYPE_CONN_OVER = (-100), DWC_ECODE_TYPE_STATS_AUTH = (-200), DWC_ECODE_TYPE_STATS_LOAD = (-210), DWC_ECODE_TYPE_STATS_SAVE = (-220), DWC_ECODE_TYPE_NOT_FRIEND = (-400), DWC_ECODE_TYPE_OTHER = (-410), DWC_ECODE_TYPE_MUCH_FAILURE = (-420), DWC_ECODE_TYPE_SC_CL_FAIL = (-430), DWC_ECODE_TYPE_CLOSE = (-600), DWC_ECODE_TYPE_TRANS_HEADER = (-610), DWC_ECODE_TYPE_TRANS_BODY = (-620), DWC_ECODE_TYPE_AC_FATAL = (-700), DWC_ECODE_TYPE_OPEN_FILE = (-800), DWC_ECODE_TYPE_INVALID_POST = (-810), DWC_ECODE_TYPE_REQ_INVALID = (-820), DWC_ECODE_TYPE_UNSPECIFIED = (-830), DWC_ECODE_TYPE_BUFF_OVER = (-840), DWC_ECODE_TYPE_PARSE_URL = (-850), DWC_ECODE_TYPE_BAD_RESPONSE = (-860), DWC_ECODE_TYPE_REJECTED = (-870), DWC_ECODE_TYPE_FILE_RW = (-880), DWC_ECODE_TYPE_INCOMPLETE = (-890), DWC_ECODE_TYPE_TO_BIG = (-900), DWC_ECODE_TYPE_ENCRYPTION = (-910), DWC_ECODE_TYPE_ALLOC = (-1), DWC_ECODE_TYPE_PARAM = (-2), DWC_ECODE_TYPE_SO_SOCKET = (-3), DWC_ECODE_TYPE_NOT_INIT = (-4), DWC_ECODE_TYPE_DUP_INIT = (-5), DWC_ECODE_TYPE_WM_INIT = (-6), DWC_ECODE_TYPE_UNEXPECTED = (-9), DWC_ECODE_SEQ_ADDINS = (-30000), DWC_ECODE_FUNC_ND = (-1000), DWC_ECODE_FUNC_PROF = (-3000), DWC_ECODE_TYPE_ND_ALLOC = (-1), DWC_ECODE_TYPE_ND_FATAL = (-9), DWC_ECODE_TYPE_ND_BUSY = (-10), DWC_ECODE_TYPE_ND_HTTP = (-20), DWC_ECODE_TYPE_ND_BUFFULL = (-30), DWC_ECODE_TYPE_ND_SERVER = (0), DWC_ECODE_TYPE_PROF_CONN = (-10), DWC_ECODE_TYPE_PROF_PARSE = (-20), DWC_ECODE_TYPE_PROF_OTHER = (-30)
};
extern DWCError DWC_GetLastError(int * errorCode);
extern DWCError DWC_GetLastErrorEx(int * errorCode, DWCErrorType * errorType);
extern void DWC_ClearError(void);
extern BOOL DWCi_IsError(void);
extern void DWCi_SetError(DWCError error, int errorCode);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,149 +0,0 @@
#ifndef DWC_FRIEND_H_
#define DWC_FRIEND_H_
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_GS_STATUS_STRING_LEN GP_LOCATION_STRING_LEN
#define DWC_PERS_KEY_ID_MASK 0x80000000
#define DWC_PERS_KEY_ID_PLAYER_NAME (DWC_PERS_KEY_ID_MASK | 0x01)
#define DWC_GP_PROCESS_INTERVAL 300
#define DWC_FRIEND_UPDATE_WAIT_COUNT 7
#define DWC_GP_KEEP_ALIVE_COUNT 256
#define DWC_GP_SSTR_KEY_MATCH_VERSION "VER"
#define DWC_GP_SSTR_KEY_MATCH_FRIEND_NUM "FME"
#define DWC_GP_SSTR_KEY_DISTANT_FRIEND "MDF"
#define DWC_GP_SSTR_KEY_MATCH_SC_MAX "SCM"
#define DWC_GP_SSTR_KEY_MATCH_SC_NUM "SCN"
#define DWC_GP_STATUS_NO_CHANGE -1
#define DWC_FRIEND_DATA_SIZE 16
#define DWC_LoadOwnDataAsync DWC_LoadOwnPrivateDataAsync
enum {
DWC_STATUS_OFFLINE = 0, DWC_STATUS_ONLINE, DWC_STATUS_PLAYING, DWC_STATUS_MATCH_ANYBODY, DWC_STATUS_MATCH_FRIEND, DWC_STATUS_MATCH_SC_CL, DWC_STATUS_MATCH_SC_SV, DWC_STATUS_NUM
};
typedef enum {
DWC_FRIEND_STATE_INIT = 0, DWC_FRIEND_STATE_PERS_LOGIN, DWC_FRIEND_STATE_LOGON, DWC_FRIEND_STATE_NUM
} DWCFriendState;
enum {
DWC_BUDDY_UPDATE_STATE_WAIT = 0, DWC_BUDDY_UPDATE_STATE_CHECK, DWC_BUDDY_UPDATE_STATE_PSEARCH, DWC_BUDDY_UPDATE_STATE_COMPLETE, DWC_BUDDY_UPDATE_STATE_NUM
};
enum {
DWC_PERS_STATE_INIT = 0, DWC_PERS_STATE_LOGIN, DWC_PERS_STATE_CONNECTED, DWC_PERS_STATE_NUM
};
typedef void (* DWCUpdateServersCallback)(DWCError error, BOOL isChanged, void * param);
typedef void (* DWCFriendStatusCallback)(int index, u8 status, const char * statusString, void * param);
typedef void (* DWCDeleteFriendListCallback)(int deletedIndex, int srcIndex, void * param);
typedef void (* DWCBuddyFriendCallback)(int index, void * param);
typedef void (* DWCStorageLoginCallback)(DWCError error, void * param);
typedef void (* DWCSaveToServerCallback)(BOOL success, BOOL isPublic, void * param);
typedef void (* DWCLoadFromServerCallback)(BOOL success, int index, char * data, int len, void * param);
typedef union DWCunFriendDataOld {
u8 mpFriendKey[DWC_FRIEND_DATA_SIZE];
struct {
int id;
u8 pad[DWC_FRIEND_DATA_SIZE - sizeof(int)];
} profile;
u8 flags[DWC_FRIEND_DATA_SIZE];
} DWCFriendDataOld;
typedef struct DWCstFriendControl {
DWCFriendState state;
GPConnection * pGpObj;
u32 gpProcessCount;
OSTick lastGpProcess;
int friendListLen;
DWCFriendData * friendList;
u8 buddyUpdateIdx;
u8 friendListChanged;
u8 buddyUpdateState;
vu8 svUpdateComplete;
u32 persCallbackLevel;
int profileID;
const u16 * playerName;
DWCUpdateServersCallback updateCallback;
void * updateParam;
DWCFriendStatusCallback statusCallback;
void * statusParam;
DWCDeleteFriendListCallback deleteCallback;
void * deleteParam;
DWCBuddyFriendCallback buddyCallback;
void * buddyParam;
DWCStorageLoginCallback persLoginCallback;
void * persLoginParam;
DWCSaveToServerCallback saveCallback;
DWCLoadFromServerCallback loadCallback;
} DWCFriendControl;
extern u8 DWC_GetFriendStatus(const DWCFriendData * friendData, char * statusString);
extern u8 DWC_GetFriendStatusSC(const DWCFriendData * friendData, u8 * maxEntry, u8 * numEntry, char * statusString);
extern u8 DWC_GetFriendStatusData(const DWCFriendData * friendData, char * statusData, int * size);
extern u8 DWC_GetFriendStatusDataSC(const DWCFriendData * friendData, u8 * maxEntry, u8 * numEntry, char * statusData, int * size);
extern int DWC_GetNumFriend(const DWCFriendData friendList[], int friendListLen);
extern BOOL DWC_SetOwnStatusString(const char * statusString);
extern BOOL DWC_GetOwnStatusString(char * statusString);
extern BOOL DWC_SetOwnStatusData(const char * statusData, u32 size);
extern int DWC_GetOwnStatusData(char * statusData);
extern BOOL DWC_CanChangeFriendList(void);
extern void DWC_DeleteBuddyFriendData(DWCFriendData * friendData);
extern BOOL DWC_SetBuddyFriendCallback(DWCBuddyFriendCallback callback, void * param);
extern BOOL DWC_SetFriendStatusCallback(DWCFriendStatusCallback callback, void * param);
extern int DWC_Base64Encode(const char * src, const u32 srclen, char * dst, const u32 dstlen);
extern int DWC_Base64Decode(const char * src, const u32 srclen, char * dst, const u32 dstlen);
extern BOOL DWC_LoginToStorageServerAsync(DWCStorageLoginCallback callback, void * param);
extern void DWC_LogoutFromStorageServer(void);
extern BOOL DWC_SetStorageServerCallback(DWCSaveToServerCallback saveCallback, DWCLoadFromServerCallback loadCallback);
extern BOOL DWC_SavePublicDataAsync(char * keyvalues, void * param);
extern BOOL DWC_SavePrivateDataAsync(char * keyvalues, void * param);
extern BOOL DWC_LoadOwnPublicDataAsync(char * keys, void * param);
extern BOOL DWC_LoadOwnPrivateDataAsync(char * keys, void * param);
extern BOOL DWC_LoadOthersDataAsync(char * keys, int index, void * param);
extern void DWCi_FriendInit(DWCFriendControl * friendcnt, GPConnection * pGpObj, const u16 * playerName, DWCFriendData * friendList, int friendListLen);
extern void DWCi_FriendProcess(void);
extern void DWCi_UpdateServersAsync(const char * authToken, const char * partnerChallenge, DWCUpdateServersCallback updateCallback, void * updateParam, DWCFriendStatusCallback statusCallback, void * statusParam, DWCDeleteFriendListCallback deleteCallback, void * deleteParam);
extern void DWCi_StopFriendProcess(DWCError error, int errorCode);
extern void DWCi_GPGetInfoCallback(GPConnection * connection, GPGetInfoResponseArg * arg, void * param);
extern void DWCi_GPRecvBuddyRequestCallback(GPConnection * connection, GPRecvBuddyRequestArg * arg, void * param);
extern BOOL DWCi_GPRecvBuddyAuthCallback(GPConnection * connection, GPRecvBuddyMessageArg * arg, void * param);
extern void DWCi_GPRecvBuddyStatusCallback(GPConnection * connection, GPRecvBuddyStatusArg * arg, void * param);
extern DWCFriendData * DWCi_GetFriendList(void);
extern int DWCi_GetFriendListLen(void);
extern int DWCi_GetProfileIDFromList(int index);
extern int DWCi_GetFriendListIndex(int profileID);
extern void DWCi_InitGPProcessCount(void);
extern GPResult DWCi_SetGPStatus(int status, const char * statusString, const char * locationString);
extern BOOL DWCi_GetGPStatus(int * status, char * statusString, char * locationString);
extern void DWCi_CallBuddyFriendCallback(int index);
extern void DWCi_ShutdownFriend(void);
inline BOOL DWC_SetGsStatusString (const char * statusString)
{
return DWC_SetOwnStatusString(statusString);
}
inline BOOL DWC_GetGsStatusString (char * statusString)
{
return DWC_GetOwnStatusString(statusString);
}
inline BOOL DWC_SetGsStatusData (const char * statusData, u32 size)
{
return DWC_SetOwnStatusData(statusData, size);
}
inline int DWC_GetGsStatusData (char * statusData)
{
return DWC_GetOwnStatusData(statusData);
}
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,56 +0,0 @@
#ifndef DWC_GHTTP_H_
#define DWC_GHTTP_H_
#define GHTTP_EXTENDEDERROR
#include "gs/ghttp/ghttp.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
DWCGHTTPFalse = -1, DWCGHTTPHostLookup = GHTTPHostLookup, DWCGHTTPConnecting = GHTTPConnecting, DWCGHTTPSecuringSession = GHTTPSecuringSession, DWCGHTTPSendingRequest = GHTTPSendingRequest, DWCGHTTPPosting = GHTTPPosting, DWCGHTTPWaiting = GHTTPWaiting, DWCGHTTPReceivingStatus = GHTTPReceivingStatus, DWCGHTTPReceivingHeaders = GHTTPReceivingHeaders, DWCGHTTPReceivingFile = GHTTPReceivingFile, DWC_GHTTP_FALSE = -1, DWC_GHTTP_HOST_LOOKUP = GHTTPHostLookup, DWC_GHTTP_CONNECTING = GHTTPConnecting, DWC_GHTTP_SECURING_SESSION = GHTTPSecuringSession, DWC_GHTTP_SENDING_REQUEST = GHTTPSendingRequest, DWC_GHTTP_POSTING = GHTTPPosting, DWC_GHTTP_WAITING = GHTTPWaiting, DWC_GHTTP_RECEIVING_STATUS = GHTTPReceivingStatus, DWC_GHTTP_RECEIVING_HEADERS = GHTTPReceivingHeaders, DWC_GHTTP_RECEIVING_FILE = GHTTPReceivingFile
} DWCGHTTPState;
typedef enum {
DWCGHTTPErrorStart = GHTTPErrorStart, DWCGHTTPFailedToOpenFile = GHTTPFailedToOpenFile, DWCGHTTPInvalidPost = GHTTPInvalidPost, DWCGHTTPInsufficientMemory = GHTTPInsufficientMemory, DWCGHTTPInvalidFileName = GHTTPInvalidFileName, DWCGHTTPInvalidBufferSize = GHTTPInvalidBufferSize, DWCGHTTPInvalidURL = GHTTPInvalidURL, DWCGHTTPUnspecifiedError = GHTTPUnspecifiedError, DWC_GHTTP_ERROR_START = GHTTPErrorStart, DWC_GHTTP_IN_ERROR = DWC_GHTTP_ERROR_START, DWC_GHTTP_FAILED_TO_OPEN_FILE = GHTTPFailedToOpenFile, DWC_GHTTP_INVALID_POST = GHTTPInvalidPost, DWC_GHTTP_INSUFFICIENT_MEMORY = GHTTPInsufficientMemory, DWC_GHTTP_INVALID_FILE_NAME = GHTTPInvalidFileName, DWC_GHTTP_INVALID_BUFFER_SIZE = GHTTPInvalidBufferSize, DWC_GHTTP_INVALID_URL = GHTTPInvalidURL, DWC_GHTTP_UNSPECIFIED_ERROR = GHTTPUnspecifiedError
} DWCGHTTPRequestError;
typedef enum {
DWCGHTTPSuccess = GHTTPSuccess, DWCGHTTPOutOfMemory = GHTTPOutOfMemory, DWCGHTTPBufferOverflow = GHTTPBufferOverflow, DWCGHTTPParseURLFailed = GHTTPParseURLFailed, DWCGHTTPHostLookupFailed = GHTTPHostLookupFailed, DWCGHTTPSocketFailed = GHTTPSocketFailed, DWCGHTTPConnectFailed = GHTTPConnectFailed, DWCGHTTPBadResponse = GHTTPBadResponse, DWCGHTTPRequestRejected = GHTTPRequestRejected, DWCGHTTPUnauthorized = GHTTPUnauthorized, DWCGHTTPForbidden = GHTTPForbidden, DWCGHTTPFileNotFound = GHTTPFileNotFound, DWCGHTTPServerError = GHTTPServerError, DWCGHTTPFileWriteFailed = GHTTPFileWriteFailed, DWCGHTTPFileReadFailed = GHTTPFileReadFailed, DWCGHTTPFileIncomplete = GHTTPFileIncomplete, DWCGHTTPFileToBig = GHTTPFileToBig, DWCGHTTPEncryptionError = GHTTPEncryptionError, DWCGHTTPNum, DWCGHTTPMemoryError = DWCGHTTPNum + 1, DWC_GHTTP_SUCCESS = GHTTPSuccess, DWC_GHTTP_OUT_OF_MEMORY = GHTTPOutOfMemory, DWC_GHTTP_BUFFER_OVERFLOW = GHTTPBufferOverflow, DWC_GHTTP_PARSE_URL_FAILED = GHTTPParseURLFailed, DWC_GHTTP_HOST_LOOKUP_FAILED = GHTTPHostLookupFailed, DWC_GHTTP_SOCKET_FAILED = GHTTPSocketFailed, DWC_GHTTP_CONNECT_FAILED = GHTTPConnectFailed, DWC_GHTTP_BAD_RESPONSE = GHTTPBadResponse, DWC_GHTTP_REQUEST_REJECTED = GHTTPRequestRejected, DWC_GHTTP_UNAUTHORIZED = GHTTPUnauthorized, DWC_GHTTP_FORBIDDEN = GHTTPForbidden, DWC_GHTTP_FILE_NOT_FOUND = GHTTPFileNotFound, DWC_GHTTP_SERVER_ERROR = GHTTPServerError, DWC_GHTTP_FILE_WRITE_FAILED = GHTTPFileWriteFailed, DWC_GHTTP_FILE_READ_FAILED = GHTTPFileReadFailed, DWC_GHTTP_FILE_INCOMPLETE = GHTTPFileIncomplete, DWC_GHTTP_FILE_TOO_BIG = GHTTPFileToBig, DWC_GHTTP_ENCRYPTION_ERROR = GHTTPEncryptionError, DWC_GHTTP_NUM, DWC_GHTTP_MEMORY_ERROR = DWC_GHTTP_NUM + 1
} DWCGHTTPResult;
typedef GHTTPRequest DWCGHTTPRequest;
typedef GHTTPPost DWCGHTTPPost;
typedef void (* DWC_GHTTPCompletedCALLBACK)(const char * buf, int len, DWCGHTTPResult result, void * param);
typedef void (* DWC_GHTTPProgressCALLBACK)(DWCGHTTPState state, const char * buf, int len, int bytesReceived, int totalSize, void * param);
typedef void (* DWCGHTTPCompletedCallback)(const char * buf, int len, DWCGHTTPResult result, void * param);
typedef void (* DWCGHTTPProgressCallback)(DWCGHTTPState state, const char * buf, int len, int bytesReceived, int totalSize, void * param);
typedef struct {
void * param;
DWCGHTTPCompletedCallback completedCallback;
DWCGHTTPProgressCallback progressCallback;
BOOL buffer_clear;
} DWCGHTTPParam;
BOOL DWC_InitGHTTP(const char * gamename);
BOOL DWC_ShutdownGHTTP(void);
BOOL DWC_ProcessGHTTP(void);
void DWC_GHTTPNewPost(DWCGHTTPPost * post);
BOOL DWC_GHTTPPostAddString(DWCGHTTPPost * post, const char * key, const char * value);
BOOL DWC_GHTTPPostAddFileFromMemory(DWCGHTTPPost * post, const char * key, const char * buffer, int bufferlen, const char * filename, const char * contentType);
int DWC_PostGHTTPData(const char * url, DWCGHTTPPost * post, DWCGHTTPCompletedCallback completedCallback, void * param);
int DWC_GetGHTTPData(const char * url, DWCGHTTPCompletedCallback completedCallback, void * param);
int DWC_GetGHTTPDataEx(const char * url, int bufferlen, BOOL buffer_clear, DWCGHTTPProgressCallback progressCallback, DWCGHTTPCompletedCallback completedCallback, void * param);
int DWC_GetGHTTPDataEx2(const char * url, int bufferlen, BOOL buffer_clear, DWCGHTTPPost * post, DWCGHTTPProgressCallback progressCallback, DWCGHTTPCompletedCallback completedCallback, void * param);
void DWC_CancelGHTTPRequest(int req);
DWCGHTTPState DWC_GetGHTTPState(int req);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,20 +0,0 @@
#ifndef DWC_INIT_H_
#define DWC_INIT_H_
#ifdef __cplusplus
extern "C" {
#endif
enum {
DWC_INIT_RESULT_NOERROR, DWC_INIT_RESULT_CREATE_USERID, DWC_INIT_RESULT_DESTROY_USERID, DWC_INIT_RESULT_DESTROY_OTHER_SETTING, DWC_INIT_RESULT_LAST, DWC_INIT_RESULT_DESTORY_USERID = DWC_INIT_RESULT_DESTROY_USERID, DWC_INIT_RESULT_DESTORY_OTHER_SETTING = DWC_INIT_RESULT_DESTROY_OTHER_SETTING
};
extern int DWC_Init(void * work);
extern u64 DWC_GetAuthenticatedUserId(void);
extern void DWC_Debug_DWCInitError(void * work, int dwc_init_error);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,53 +0,0 @@
#ifndef DWC_LOGIN_H_
#define DWC_LOGIN_H_
#include "auth/dwc_auth.h"
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_LOGIN_AUTH_TIMEOUT (10 * 1000)
#define DWC_LOGIN_GPCONNECT_TIMEOUT (60 * 1000)
typedef enum {
DWC_LOGIN_STATE_INIT = 0, DWC_LOGIN_STATE_REMOTE_AUTH, DWC_LOGIN_STATE_CONNECTING, DWC_LOGIN_STATE_GPGETINFO, DWC_LOGIN_STATE_GPSETINFO, DWC_LOGIN_STATE_CONNECTED, DWC_LOGIN_STATE_NUM
} DWCLoginState;
typedef void (* DWCLoginCallback)(DWCError error, int profileID, void * param);
typedef struct DWCstLoginControl {
GPConnection * pGpObj;
DWCLoginState state;
int productID;
u32 gamecode;
const u16 * playerName;
DWCLoginCallback callback;
void * param;
DWCUserData * userdata;
void * bmwork;
void * http;
OSTick startTick;
u32 connectFlag;
OSTick connectTick;
DWCAccLoginId tempLoginId;
char authToken[GP_AUTHTOKEN_LEN];
char partnerChallenge[GP_PARTNERCHALLENGE_LEN];
char username[DWC_ACC_USERNAME_STRING_BUFSIZE];
GPConnectResponseArg gpconnectresponsearg;
} DWCLoginControl;
extern void DWCi_LoginInit(DWCLoginControl * logcnt, DWCUserData * userdata, GPConnection * pGpObj, int productID, u32 gamecode, const u16 * playerName, DWCLoginCallback callback, void * param);
extern void DWCi_LoginAsync(void);
extern void DWCi_LoginProcess(void);
extern DWCAccUserData * DWCi_GetUserData(void);
extern void DWCi_StopLogin(DWCError error, int errorCode);
extern void DWCi_ShutdownLogin(void);
extern BOOL DWCi_CheckLogin(void);
extern BOOL DWCi_GetAuthInfo(char ** authToken, char ** partnerChallenge);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,97 +0,0 @@
#ifndef DWC_MAIN_H_
#define DWC_MAIN_H_
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_IGNORE_GP_ERROR_ALREADY_BUDDY
#define DWC_GP_COMMAND_STRING "GPCM"
#define DWC_GP_COMMAND_MATCH_STRING "MAT"
#define DWC_DNS_ERROR_RETRY_MAX 5
#define DWC_MAX_PLAYER_NAME 26
#define DWC_SetupGameServerAsync DWC_SetupGameServer
typedef enum {
DWC_STATE_INIT = 0, DWC_STATE_AVAILABLE_CHECK, DWC_STATE_LOGIN, DWC_STATE_ONLINE, DWC_STATE_UPDATE_SERVERS, DWC_STATE_MATCHING, DWC_STATE_CONNECTED, DWC_STATE_NUM
} DWCState;
typedef void (* DWCConnectionClosedCallback)(DWCError error, BOOL isLocal, BOOL isServer, u8 aid, int index, void * param);
typedef struct DWCstControl {
GT2Socket gt2Socket;
GT2ConnectionCallbacks gt2Callbacks;
int gt2SendBufSize;
int gt2RecvBufSize;
GPConnection gpObj;
DWCUserData * userdata;
DWCState state;
DWCState lastState;
u8 aid;
u8 ownCloseFlag;
u16 playerName[DWC_MAX_PLAYER_NAME];
int profileID;
const char * gameName;
const char * secretKey;
DWCLoginCallback loginCallback;
void * loginParam;
DWCUpdateServersCallback updateServersCallback;
void * updateServersParam;
DWCMatchedCallback matchedCallback;
void * matchedParam;
DWCMatchedSCCallback matchedSCCallback;
void * matchedSCParam;
DWCConnectionClosedCallback closedCallback;
void * closedParam;
DWCLoginControl logcnt;
DWCFriendControl friendcnt;
DWCMatchControl matchcnt;
DWCTransportInfo transinfo;
} DWCFriendsMatchControl;
typedef struct DWCstConnectionInfo {
u8 index;
u8 aid;
u16 reserve;
void * param;
} DWCConnectionInfo;
extern void DWC_InitFriendsMatch(DWCFriendsMatchControl * dwccnt, DWCUserData * userdata, int productID, const char * gameName, const char * secretKey, int sendBufSize, int recvBufSize, DWCFriendData friendList[], int friendListLen);
extern void DWC_ShutdownFriendsMatch(void);
extern void DWC_ProcessFriendsMatch(void);
extern BOOL DWC_LoginAsync(const u16 * ingamesn, const char * reserved, DWCLoginCallback callback, void * param);
extern BOOL DWC_UpdateServersAsync(const char * playerName, DWCUpdateServersCallback updateCallback, void * updateParam, DWCFriendStatusCallback statusCallback, void * statusParam, DWCDeleteFriendListCallback deleteCallback, void * deleteParam);
extern BOOL DWC_ConnectToAnybodyAsync(u8 numEntry, const char * addFilter, DWCMatchedCallback matchedCallback, void * matchedParam, DWCEvalPlayerCallback evalCallback, void * evalParam);
extern BOOL DWC_ConnectToFriendsAsync(const u8 friendIdxList[], int friendIdxListLen, u8 numEntry, BOOL distantFriend, DWCMatchedCallback matchedCallback, void * matchedParam, DWCEvalPlayerCallback evalCallback, void * evalParam);
extern BOOL DWC_SetupGameServer(u8 maxEntry, DWCMatchedSCCallback matchedCallback, void * matchedParam, DWCNewClientCallback newClientCallback, void * newClientParam);
extern BOOL DWC_ConnectToGameServerAsync(int serverIndex, DWCMatchedSCCallback matchedCallback, void * matchedParam, DWCNewClientCallback newClientCallback, void * newClientParam);
extern BOOL DWC_SetConnectionClosedCallback(DWCConnectionClosedCallback callback, void * param);
extern int DWC_CloseAllConnectionsHard(void);
extern int DWC_CloseConnectionHard(u8 aid);
extern int DWC_CloseConnectionHardBitmap(u32 * bitmap);
extern int DWC_GetNumConnectionHost(void);
extern u8 DWC_GetMyAID(void);
extern int DWC_GetAIDList(u8 ** aidList);
extern u32 DWC_GetAIDBitmap(void);
extern BOOL DWC_IsValidAID(u8 aid);
extern DWCState DWC_GetState(void);
extern int DWC_GetLastSocketError(void);
extern int DWC_CloseConnectionsAsync(void);
extern GT2Result DWCi_GT2Startup(void);
extern GT2Connection DWCi_GetGT2Connection(u8 aid);
extern u8 DWCi_GetConnectionAID(GT2Connection connection);
extern u8 DWCi_GetConnectionIndex(GT2Connection connection);
extern void * DWCi_GetConnectionUserData(GT2Connection connection);
extern int DWCi_GT2GetConnectionListIdx(void);
extern void DWCi_ClearGT2ConnectionList(void);
extern GT2Connection * DWCi_GetGT2ConnectionByIdx(int index);
extern GT2Connection * DWCi_GetGT2ConnectionByProfileID(int profileID, int numHost);
extern DWCConnectionInfo * DWCi_GetConnectionInfoByIdx(int index);
extern BOOL DWCi_IsValidAID(u8 aid);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,372 +0,0 @@
#ifndef DWC_MATCH_H_
#define DWC_MATCH_H_
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_QR2_ALIVE_DURING_MATCHING
#define DWC_MATCH_ACCEPT_NO_FRIEND
#define DWC_LIMIT_FRIENDS_MATCH_VALID
#define DWC_STOP_SC_SERVER
#define DWC_MATCHING_VERSION 3U
#define DWC_MAX_CONNECTIONS 32
#define DWC_QR2_PID_KEY NUM_RESERVED_KEYS
#define DWC_QR2_MATCH_TYPE_KEY (NUM_RESERVED_KEYS + 1)
#define DWC_QR2_MATCH_RESV_KEY (NUM_RESERVED_KEYS + 2)
#define DWC_QR2_MATCH_VER_KEY (NUM_RESERVED_KEYS + 3)
#define DWC_QR2_MATCH_EVAL_KEY (NUM_RESERVED_KEYS + 4)
#define DWC_QR2_PID_KEY_STR "dwc_pid"
#define DWC_QR2_MATCH_TYPE_KEY_STR "dwc_mtype"
#define DWC_QR2_MATCH_RESV_KEY_STR "dwc_mresv"
#define DWC_QR2_MATCH_VER_KEY_STR "dwc_mver"
#define DWC_QR2_MATCH_EVAL_KEY_STR "dwc_eval"
#define DWC_QR2_RESERVED_KEYS (100 - NUM_RESERVED_KEYS)
#define DWC_QR2_GAME_RESERVED_KEYS (MAX_REGISTERED_KEYS - NUM_RESERVED_KEYS - DWC_QR2_RESERVED_KEYS)
#define DWC_QR2_GAME_KEY_START 100
#define DWC_SB_COMMAND_STRING "SBCM"
#define DWC_MATCH_COMMAND_RESERVATION 0x01
#define DWC_MATCH_COMMAND_RESV_OK 0x02
#define DWC_MATCH_COMMAND_RESV_DENY 0x03
#define DWC_MATCH_COMMAND_RESV_WAIT 0x04
#define DWC_MATCH_COMMAND_RESV_CANCEL 0x05
#define DWC_MATCH_COMMAND_TELL_ADDR 0x06
#define DWC_MATCH_COMMAND_NEW_PID_AID 0x07
#define DWC_MATCH_COMMAND_LINK_CLS_REQ 0x08
#define DWC_MATCH_COMMAND_LINK_CLS_SUC 0x09
#define DWC_MATCH_COMMAND_CLOSE_LINK 0x0a
#define DWC_MATCH_COMMAND_RESV_PRIOR 0x0b
#define DWC_MATCH_COMMAND_CANCEL 0x0c
#define DWC_MATCH_COMMAND_CANCEL_SYN 0x0d
#define DWC_MATCH_COMMAND_CANCEL_SYN_ACK 0x0e
#define DWC_MATCH_COMMAND_CANCEL_ACK 0x0f
#define DWC_MATCH_COMMAND_SC_CLOSE_CL 0x10
#define DWC_MATCH_COMMAND_POLL_TIMEOUT 0x11
#define DWC_MATCH_COMMAND_POLL_TO_ACK 0x12
#define DWC_MATCH_COMMAND_SC_CONN_BLOCK 0x13
#ifdef DWC_LIMIT_FRIENDS_MATCH_VALID
#define DWC_MATCH_COMMAND_FRIEND_ACCEPT 0x20
#endif
#define DWC_MATCH_COMMAND_CL_WAIT_POLL 0x40
#define DWC_MATCH_COMMAND_SV_KA_TO_CL 0x41
#define DWC_MATCH_COMMAND_DUMMY 0xff
#if 0
#define DWC_MATCH_CMD_RESEND_INTERVAL 60
#define DWC_MATCH_CMD_RESEND_INTERVAL_ADD 150
#define DWC_MATCH_CMD_RESV_TIMEOUT 480
#define DWC_SB_UPDATE_INTERVAL 60
#define DWC_SB_UPDATE_INTERVAL_ADD 180
#define DWC_QR2_KEEP_RESV_TIMEOUT 600
#else
#define DWC_MATCH_CMD_RESEND_INTERVAL_MSEC 3000
#define DWC_MATCH_CMD_RESEND_INTERVAL_ADD_MSEC 3000
#define DWC_MATCH_CMD_RESV_TIMEOUT_MSEC 6000
#define DWC_SB_UPDATE_INTERVAL_MSEC 3000
#define DWC_SB_UPDATE_INTERVAL_SHORT_MSEC 1000
#define DWC_SB_UPDATE_INTERVAL_ADD_MSEC 3000
#define DWC_SB_UPDATE_INTERVAL_SHORT 1
#define DWC_SB_UPDATE_INTERVAL_LONG 2
#define DWC_SB_UPDATE_TIMEOUT 30000
#endif
#define DWC_MATCH_CMD_RTT_TIMEOUT 6000
#define DWC_MATCH_SB_UPDATE_TIMEOUT 13000
#define DWC_MATCH_CMD_RETRY_MAX 5
#define DWC_MATCH_SYN_ACK_WAIT_TIME DWC_MATCH_CMD_RTT_TIMEOUT
#define DWC_MATCH_CANCEL_SYN_ACK_WAIT_TIME DWC_MATCH_CMD_RTT_TIMEOUT
#define DWC_MATCH_RESV_KEEP_TIME_ANYBODY DWC_MATCH_CMD_RTT_TIMEOUT
#define DWC_MATCH_RESV_KEEP_TIME_FRIEND (DWC_MATCH_CMD_RTT_TIMEOUT + DWC_MATCH_SB_UPDATE_TIMEOUT)
#define DWC_MAX_MATCH_NN_RETRY 1
#define DWC_MATCH_NN_FAILURE_MAX 5
#define DWC_WAIT_NN_RETRY_TIMEOUT 10000
#define DWC_GT2_CONNECT_TIMEOUT 5000
#define DWC_WAIT_GT2_CONNECT_TIMEOUT (DWC_GT2_CONNECT_TIMEOUT * DWC_MATCH_CMD_RETRY_MAX)
#define DWC_MATCH_LINK_CLS_TIMEOUT 30000
#define DWC_MATCH_CL_WAIT_TIMEOUT 30000
#define DWC_RESV_COMMAND_RETRY_MAX 16
#define DWC_MATCH_OPT_MIN_COMP_POLL_RETRY_MAX 5
#define DWC_SB_UPDATE_MAX_SERVERS 6
#define DWC_MATCH_SYN_DATA_BODY_SIZE 4
#define DWC_MAX_MATCH_IDX_LIST 64
typedef enum {
DWC_MATCH_OPTION_MIN_COMPLETE = 0,
DWC_MATCH_OPTION_SC_CONNECT_BLOCK,
DWC_MATCH_OPTION_NUM
} DWCMatchOptType;
enum {
DWC_SET_MATCH_OPT_RESULT_SUCCESS = 0,
DWC_SET_MATCH_OPT_RESULT_E_BAD_STATE,
DWC_SET_MATCH_OPT_RESULT_E_INVALID,
DWC_SET_MATCH_OPT_RESULT_E_PARAM,
DWC_SET_MATCH_OPT_RESULT_E_ALLOC,
DWC_SET_MATCH_OPT_RESULT_NUM
};
typedef enum {
DWC_MATCH_STATE_INIT = 0,
DWC_MATCH_STATE_CL_WAITING,
DWC_MATCH_STATE_CL_SEARCH_OWN,
DWC_MATCH_STATE_CL_SEARCH_HOST,
DWC_MATCH_STATE_CL_WAIT_RESV,
DWC_MATCH_STATE_CL_SEARCH_NN_HOST,
DWC_MATCH_STATE_CL_NN,
DWC_MATCH_STATE_CL_GT2,
DWC_MATCH_STATE_CL_CANCEL_SYN,
DWC_MATCH_STATE_CL_SYN,
DWC_MATCH_STATE_SV_WAITING,
DWC_MATCH_STATE_SV_OWN_NN,
DWC_MATCH_STATE_SV_OWN_GT2,
DWC_MATCH_STATE_SV_WAIT_CL_LINK,
DWC_MATCH_STATE_SV_CANCEL_SYN,
DWC_MATCH_STATE_SV_CANCEL_SYN_WAIT,
DWC_MATCH_STATE_SV_SYN,
DWC_MATCH_STATE_SV_SYN_WAIT,
DWC_MATCH_STATE_WAIT_CLOSE,
DWC_MATCH_STATE_SV_POLL_TIMEOUT,
DWC_MATCH_STATE_NUM
} DWCMatchState;
enum {
DWC_MATCH_TYPE_ANYBODY = 0,
DWC_MATCH_TYPE_FRIEND,
DWC_MATCH_TYPE_SC_SV,
DWC_MATCH_TYPE_SC_CL,
DWC_MATCH_TYPE_NUM
};
typedef void (* DWCMatchedCallback)(DWCError error, BOOL cancel, void * param);
typedef void (* DWCMatchedSCCallback)(DWCError error, BOOL cancel, BOOL self, BOOL isServer, int index, void * param);
typedef void (* DWCNewClientCallback)(int index, void * param);
typedef int (* DWCEvalPlayerCallback)(int index, void * param);
typedef void (* DWCStopSCCallback)(void * param);
typedef struct DWCstMatchOptMinComplete {
u8 valid;
u8 minEntry;
u8 pad[2];
u32 timeout;
} DWCMatchOptMinComplete;
typedef struct DWCstNNInfo {
u8 isQR2;
u8 retryCount;
u16 port;
u32 ip;
int cookie;
} DWCNNInfo;
typedef struct DWCstMatchCommandControl {
u8 command;
u8 count;
u16 port;
u32 ip;
u32 data[32];
int profileID;
int len;
OSTick sendTime;
} DWCMatchCommandControl;
typedef struct DWCstMatchControl {
GPConnection * pGpObj;
GT2Socket * pGt2Socket;
GT2ConnectionCallbacks * gt2Callbacks;
u8 gt2ConnectCount;
u8 gt2NumConnection;
u8 gt2NumValidConn;
u8 pad1;
qr2_t qr2Obj;
vu8 qr2NNFinishCount;
vu8 qr2MatchType;
vu8 qr2NumEntry;
vu8 qr2IsReserved;
#ifdef DWC_QR2_ALIVE_DURING_MATCHING
u8 qr2ShutdownFlag;
u8 pad2;
#else
u16 pad2;
#endif
u16 qr2Port;
u32 qr2IP;
volatile int qr2Reservation;
u32 qr2IPList[DWC_MAX_CONNECTIONS];
u16 qr2PortList[DWC_MAX_CONNECTIONS];
ServerBrowser sbObj;
BOOL sbUpdateFlag;
OSTick sbUpdateTick;
int sbPidList[DWC_MAX_CONNECTIONS];
OSTick sbUpdateRequestTick;
u8 nnRecvCount;
u8 nnFailureCount;
u16 nnCookieRand;
int nnLastCookie;
OSTick nnFailedTime;
OSTick nnFinishTime;
DWCNNInfo nnInfo;
DWCMatchState state;
u8 clLinkProgress;
u8 friendCount;
u8 distantFriend;
u8 resvWaitCount;
u8 closeState;
u8 cancelState;
u8 scResvRetryCount;
u8 synResendCount;
u8 cancelSynResendCount;
u8 clWaitTimeoutCount;
#ifdef DWC_STOP_SC_SERVER
u8 stopSCFlag;
u8 pad3;
#endif
u16 baseLatency;
u16 cancelBaseLatency;
u16 searchPort;
#ifdef DWC_STOP_SC_SERVER
u16 pad4;
#endif
u32 searchIP;
#if 0
u32 cmdResendCount;
u32 cmdTimeoutCount;
#else
BOOL cmdResendFlag;
OSTick cmdResendTick;
u32 cmdTimeoutTime;
OSTick cmdTimeoutStartTick;
#endif
u32 synAckBit;
u32 cancelSynAckBit;
#ifdef DWC_LIMIT_FRIENDS_MATCH_VALID
u32 friendAcceptBit;
#endif
OSTick lastSynSent;
OSTick lastCancelSynSent;
OSTick closedTime;
OSTick clWaitTime;
volatile int profileID;
int reqProfileID;
int priorProfileID;
int cbEventPid;
u32 ipList[DWC_MAX_CONNECTIONS];
u16 portList[DWC_MAX_CONNECTIONS];
u8 aidList[DWC_MAX_CONNECTIONS];
u32 validAidBitmap;
const char * gameName;
const char * secretKey;
const DWCFriendData * friendList;
int friendListLen;
u8 friendIdxList[DWC_MAX_MATCH_IDX_LIST];
int friendIdxListLen;
u32 svDataBak[DWC_MAX_CONNECTIONS + 1];
DWCMatchCommandControl cmdCnt;
DWCMatchedSCCallback matchedCallback;
void * matchedParam;
DWCNewClientCallback newClientCallback;
void * newClientParam;
DWCEvalPlayerCallback evalCallback;
void * evalParam;
#ifdef DWC_STOP_SC_SERVER
DWCStopSCCallback stopSCCallback;
void * stopSCParam;
#endif
} DWCMatchControl;
typedef struct DWCstSBMessageHeader {
char identifier[4];
u32 version;
u8 command;
u8 size;
u16 qr2Port;
u32 qr2IP;
int profileID;
} DWCSBMessageHeader;
typedef struct DWCstSBMessage {
DWCSBMessageHeader header;
u32 data[DWC_MAX_CONNECTIONS];
} DWCSBMessage;
typedef struct DWCstGameMatchKeyData {
u8 keyID;
u8 isStr;
u16 pad;
char * keyStr;
const void * value;
} DWCGameMatchKeyData;
typedef struct DWCstMatchOptMinCompleteIn {
u8 valid;
u8 minEntry;
u8 retry;
u8 pad;
u32 timeout;
u32 recvBit;
u32 timeoutBit;
OSTick startTime;
OSTick lastPollTime;
} DWCMatchOptMinCompleteIn;
typedef struct DWCstMatchOptSCBlock {
u8 valid;
u8 lock;
u16 pad;
} DWCMatchOptSCBlock;
#ifdef DWC_QR2_ALIVE_DURING_MATCHING
extern BOOL DWC_RegisterMatchingStatus(void);
#endif
BOOL DWC_CancelMatching(void);
extern BOOL DWC_CancelMatchingAsync(void);
extern BOOL DWC_IsValidCancelMatching(void);
#ifdef DWC_STOP_SC_SERVER
extern BOOL DWC_StopSCMatchingAsync(DWCStopSCCallback callback, void * param);
#endif
extern u8 DWC_AddMatchKeyInt(u8 keyID, const char * keyString, const int * valueSrc);
extern u8 DWC_AddMatchKeyString(u8 keyID, const char * keyString, const char * valueSrc);
extern int DWC_GetMatchIntValue(int index, const char * keyString, int idefault);
extern const char * DWC_GetMatchStringValue(int index, const char * keyString, const char * sdefault);
extern int DWC_GetLastMatchingType(void);
extern int DWC_SetMatchingOption(DWCMatchOptType opttype, const void * optval, int optlen);
extern int DWC_GetMatchingOption(DWCMatchOptType opttype, void * optval, int * optlen);
extern int DWC_GetMOMinCompState(u64 * time);
extern BOOL DWC_GetMOSCConnectBlockState(void);
extern void DWC_ClearMOSCConnectBlock(void);
extern DWCMatchState DWC_GetMatchingState(void);
extern void DWCi_MatchInit(DWCMatchControl * matchcnt, GPConnection pGpObj, GT2Socket * pGt2Socket, GT2ConnectionCallbacks * gt2Callbacks, const char * gameName, const char * secretKey, const DWCFriendData friendList[], int friendListLen);
extern qr2_error_t DWCi_QR2Startup(int profileID);
extern void DWCi_ConnectToAnybodyAsync(u8 numEntry, const char * addFilter, DWCMatchedSCCallback matchedCallback, void * matchedParam, DWCEvalPlayerCallback evalCallback, void * evalParam);
extern void DWCi_ConnectToFriendsAsync(const u8 friendIdxList[], int friendIdxListLen, u8 numEntry, BOOL distantFriend, DWCMatchedSCCallback matchedCallback, void * matchedParam, DWCEvalPlayerCallback evalCallback, void * evalParam);
extern void DWCi_SetupGameServer(u8 maxEntry, DWCMatchedSCCallback matchedCallback, void * matchedParam, DWCNewClientCallback newClientCallback, void * newClientParam);
extern void DWCi_ConnectToGameServerAsync(int serverPid, DWCMatchedSCCallback matchedCallback, void * matchedParam, DWCNewClientCallback newClientCallback, void * newClientParam);
extern void DWCi_MatchProcess(BOOL fullSpec);
extern void DWCi_GT2ConnectAttemptCallback(GT2Socket socket, GT2Connection connection, unsigned int ip, unsigned short port, int latency, GT2Byte * message, int len);
extern GT2Bool DWCi_GT2UnrecognizedMessageCallback(GT2Socket socket, unsigned int ip, unsigned short port, GT2Byte * message, int len);
extern void DWCi_GT2ConnectedCallback(GT2Connection connection, GT2Result result, GT2Byte * message, int len);
extern void DWCi_MatchGPRecvBuddyMsgCallback(GPConnection * pconnection, int profileID, char * message);
extern void DWCi_StopMatching(DWCError error, int errorCode);
extern void DWCi_ClearQR2Key(void);
extern void DWCi_ProcessMatchSynPacket(u8 aid, u16 type, u8 * data);
extern BOOL DWCi_ProcessMatchClosing(DWCError error, int errorCode, int profileID);
extern void DWCi_ProcessMatchSCClosing(int clientPid);
extern BOOL DWCi_DeleteHostByProfileID(int profileID, int numHost);
extern int DWCi_DeleteHostByIndex(int index, int numHost);
extern int DWCi_GetNumAllConnection(void);
extern int DWCi_GetNumValidConnection(void);
extern void DWCi_SetNumValidConnection(void);
extern int DWCi_GetAllAIDList(u8 ** aidList);
extern int DWCi_GetValidAIDList(u8 ** aidList);
extern GPResult DWCi_GPSetServerStatus(void);
extern void DWCi_ShutdownMatch(void);
extern BOOL DWCi_IsShutdownMatch(void);
extern int DWCi_GetNumValidConnection(void);
extern void DWCi_NNFreeNegotiateList(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,41 +0,0 @@
#ifndef DWC_MEMFUNC_H_
#define DWC_MEMFUNC_H_
#include <nitro/types.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
DWC_ALLOCTYPE_AUTH,
DWC_ALLOCTYPE_AC,
DWC_ALLOCTYPE_BM,
DWC_ALLOCTYPE_UTIL,
DWC_ALLOCTYPE_BASE,
DWC_ALLOCTYPE_GS,
DWC_ALLOCTYPE_ND,
DWC_ALLOCTYPE_ENC,
DWC_ALLOCTYPE_MAIL,
DWC_ALLOCTYPE_LAST
} DWCAllocType;
typedef void * (* DWCAllocEx)(DWCAllocType name, u32 size, int align);
typedef void (* DWCFreeEx )(DWCAllocType name, void * ptr, u32 size);
void DWC_SetMemFunc(DWCAllocEx alloc, DWCFreeEx free);
void * DWC_Alloc(DWCAllocType name, u32 size);
void * DWC_AllocEx(DWCAllocType name, u32 size, int align);
void DWC_Free(DWCAllocType name, void * ptr, u32 size);
void * DWC_Realloc(DWCAllocType name, void * ptr, u32 oldsize, u32 newsize);
void * DWC_ReallocEx(DWCAllocType name, void * ptr, u32 oldsize, u32 newsize, int align);
void * DWCi_GsMalloc(size_t size);
void * DWCi_GsRealloc(void * ptr, size_t size);
void DWCi_GsFree(void * ptr);
void * DWCi_GsMemalign(size_t boundary, size_t size);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,41 +0,0 @@
#ifndef DWC_NASFUNC_H_
#define DWC_NASFUNC_H_
#include "auth/dwc_auth.h"
#include "auth/dwc_svl.h"
#include "auth/dwc_prof.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
DWC_INGAMESN_NOT_CHECKED = DWC_AUTH_INGAMESN_NOT_CHECKED,
DWC_INGAMESN_VALID = DWC_AUTH_INGAMESN_VALID,
DWC_INGAMESN_INVALID = DWC_AUTH_INGAMESN_INVALID
} DWCIngamesnCheckResult;
typedef enum {
DWC_NASLOGIN_STATE_DIRTY = 0,
DWC_NASLOGIN_STATE_IDLE,
DWC_NASLOGIN_STATE_HTTP,
DWC_NASLOGIN_STATE_SUCCESS,
DWC_NASLOGIN_STATE_ERROR,
DWC_NASLOGIN_STATE_CANCELED,
DWC_NASLOGIN_STATE_MAX
} DWCNasLoginState;
DWCIngamesnCheckResult DWC_GetIngamesnCheckResult(void);
BOOL DWC_GetDateTime(RTCDate * date, RTCTime * time);
BOOL DWC_SVLGetTokenAsync(char * svl, DWCSvlResult * result);
DWCSvlState DWC_SVLProcess(void);
void DWC_SVLAbort(void);
BOOL DWC_NASLoginAsync(void);
DWCNasLoginState DWC_NASLoginProcess(void);
void DWC_NASLoginAbort(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,23 +0,0 @@
#ifndef DWC_ND_H_
#define DWC_ND_H_
#include <nd/DWCi_Nd.h>
#ifdef __cplusplus
extern "C" {
#endif
BOOL DWC_NdInitAsync(DWCNdCallback callback, char * gamecd, char * passwd);
BOOL DWC_NdCleanupAsync(DWCNdCleanupCallback callback);
BOOL DWC_NdSetAttr(const char * attr1, const char * attr2, const char * attr3);
BOOL DWC_NdGetFileListNumAsync(int * entrynum);
BOOL DWC_NdGetFileListAsync(DWCNdFileInfo * filelist, unsigned int offset, unsigned int num);
BOOL DWC_NdGetFileAsync(DWCNdFileInfo * fileinfo, char * buf, unsigned int size);
BOOL DWC_NdCancelAsync(void);
BOOL DWC_NdGetProgress(u32 * received, u32 * contentlen);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,102 +0,0 @@
#ifndef DWC_RNK_H_
#define DWC_RNK_H_
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_RNK_DATA_MAX 764
#define DWC_RNK_CATEGORY_MAX 1000
#define DWC_RNK_ORDER_ASC 0
#define DWC_RNK_ORDER_DES 1
#define DWC_RNK_GET_MAX 30
#define DWC_RNK_FRIENDS_MAX 64
typedef enum {
DWC_RNK_SUCCESS = 0,
DWC_RNK_IN_ERROR,
DWC_RNK_ERROR_INVALID_PARAMETER,
DWC_RNK_ERROR_INIT_ALREADYINITIALIZED,
DWC_RNK_ERROR_INIT_INVALID_INITDATASIZE, DWC_RNK_ERROR_INIT_INVALID_INITDATA, DWC_RNK_ERROR_INIT_INVALID_USERDATA, DWC_RNK_ERROR_PUT_NOTREADY, DWC_RNK_ERROR_PUT_INVALID_KEY, DWC_RNK_ERROR_PUT_NOMEMORY, DWC_RNK_ERROR_GET_NOTREADY, DWC_RNK_ERROR_GET_INVALID_KEY, DWC_RNK_ERROR_GET_NOMEMORY, DWC_RNK_ERROR_CANCEL_NOTASK, DWC_RNK_PROCESS_NOTASK, DWC_RNK_ERROR_INVALID_MODE, DWC_RNK_ERROR_NOTCOMPLETED, DWC_RNK_ERROR_EMPTY_RESPONSE
} DWCRnkError;
typedef enum {
DWC_RNK_STATE_NOTREADY = 0,
DWC_RNK_STATE_INITIALIZED,
DWC_RNK_STATE_PUT_ASYNC,
DWC_RNK_STATE_GET_ASYNC,
DWC_RNK_STATE_COMPLETED,
DWC_RNK_STATE_ERROR
} DWCRnkState;
typedef enum {
DWC_RNK_REGION_JP = 0x01,
DWC_RNK_REGION_US = 0x02,
DWC_RNK_REGION_EU = 0x04,
DWC_RNK_REGION_KR = 0x08,
DWC_RNK_REGION_ALL = 0xff
} DWCRnkRegion;
typedef enum {
DWC_RNK_GET_MODE_ORDER,
DWC_RNK_GET_MODE_TOPLIST,
DWC_RNK_GET_MODE_NEAR,
DWC_RNK_GET_MODE_FRIENDS,
DWC_RNK_GET_MODE_NEAR_HI,
DWC_RNK_GET_MODE_NEAR_LOW
} DWCRnkGetMode;
typedef struct {
u32 order;
s32 pid;
s32 score;
DWCRnkRegion region;
u32 lastupdate;
u32 size;
void * userdata;
} DWCRnkData;
typedef struct {
u32 size;
union {
struct {
u32 sort;
u32 since;
} order;
struct {
u32 sort;
u32 limit;
u32 since;
} toplist;
struct {
u32 sort;
u32 limit;
u32 since;
} near;
struct {
u32 sort;
u32 limit;
u32 since;
s32 friends[DWC_RNK_FRIENDS_MAX];
} friends;
u32 data;
};
} DWCRnkGetParam;
extern DWCRnkError DWC_RnkInitialize(const char * initdata, const DWCUserData * userdata);
extern DWCRnkError DWC_RnkShutdown();
extern DWCRnkError DWC_RnkPutScoreAsync(u32 category, DWCRnkRegion region, s32 score, void * data, u32 size);
extern DWCRnkError DWC_RnkGetScoreAsync(DWCRnkGetMode mode, u32 category, DWCRnkRegion region, DWCRnkGetParam * param);
extern DWCRnkError DWC_RnkCancelProcess();
extern DWCRnkError DWC_RnkProcess();
extern DWCRnkState DWC_RnkGetState();
extern DWCRnkError DWC_RnkResGetRow(DWCRnkData * out, u32 index);
extern DWCRnkError DWC_RnkResGetRowCount(u32 * count);
extern DWCRnkError DWC_RnkResGetOrder(u32 * order);
extern DWCRnkError DWC_RnkResGetTotal(u32 * total);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,46 +0,0 @@
#ifndef DWC_REPORT_H_
#define DWC_REPORT_H_
#include <nitro.h>
#ifdef __cplusplus
extern "C" {
#endif
enum {
DWC_REPORTFLAG_INFO = 0x00000001,
DWC_REPORTFLAG_ERROR = 0x00000002,
DWC_REPORTFLAG_DEBUG = 0x00000004,
DWC_REPORTFLAG_WARNING = 0x00000008,
DWC_REPORTFLAG_ACHECK = 0x00000010,
DWC_REPORTFLAG_LOGIN = 0x00000020,
DWC_REPORTFLAG_MATCH_NN = 0x00000040,
DWC_REPORTFLAG_MATCH_GT2 = 0x00000080,
DWC_REPORTFLAG_TRANSPORT = 0x00000100,
DWC_REPORTFLAG_QR2_REQ = 0x00000200,
DWC_REPORTFLAG_SB_UPDATE = 0x00000400,
DWC_REPORTFLAG_SEND_INFO = 0x00008000,
DWC_REPORTFLAG_RECV_INFO = 0x00010000,
DWC_REPORTFLAG_UPDATE_SV = 0x00020000,
DWC_REPORTFLAG_CONNECTINET = 0x00040000,
DWC_REPORTFLAG_AUTH = 0x01000000,
DWC_REPORTFLAG_AC = 0x02000000,
DWC_REPORTFLAG_BM = 0x04000000,
DWC_REPORTFLAG_UTIL = 0x08000000,
DWC_REPORTFLAG_GAMESPY = 0x80000000,
DWC_REPORTFLAG_ALL = 0xffffffff
};
#ifndef SDK_FINALROM
void DWC_SetReportLevel(u32 level);
void DWC_Printf(u32 level, const char * fmt, ...);
#else
#define DWC_SetReportLevel(level) ((void)0)
#define DWC_Printf(level, ...) ((void)0)
#endif
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,140 +0,0 @@
#ifndef DWC_TRANSPORT_H_
#define DWC_TRANSPORT_H_
#include <gs/darray.h>
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_MAGIC_STRINGS "DT"
#define DWC_MAGIC_STRINGS_LEN 2
#define DWC_TRANSPORT_SEND_MAX 1465
#define DWC_TRANSPORT_GT2HEADER_SIZE 7
enum {
DWC_TRANSPORT_SEND_READY,
DWC_TRANSPORT_SEND_BUSY,
DWC_TRANSPORT_SEND_LAST
};
enum {
DWC_TRANSPORT_RECV_NOBUF,
DWC_TRANSPORT_RECV_HEADER,
DWC_TRANSPORT_RECV_BODY,
DWC_TRANSPORT_RECV_SYSTEM_DATA,
DWC_TRANSPORT_RECV_ERROR,
DWC_TRANSPORT_RECV_LAST
};
enum {
DWC_SEND_TYPE_INVALID,
DWC_SEND_TYPE_USERDATA,
DWC_SEND_TYPE_MATCH_SYN,
DWC_SEND_TYPE_MATCH_SYN_ACK,
DWC_SEND_TYPE_MATCH_ACK,
DWC_SEND_TYPE_MAX
};
typedef struct DWCstTransportInfo DWCTransportInfo;
typedef struct DWCstTransportHeader DWCTransportHeader;
typedef struct DWCstTransportConnection DWCTransportConnection;
typedef struct DWCstDelayedMessage DWCDelayedMessage;
typedef void (* DWCUserSendCallback)(int size, u8 aid);
typedef void (* DWCUserRecvCallback)(u8 aid, u8 * buffer, int size);
typedef void (* DWCUserRecvTimeoutCallback)(u8 aid);
typedef void (* DWCUserPingCallback)(int latency, u8 aid);
struct DWCstTransportConnection {
const u8 * sendBuffer;
u8 * recvBuffer;
int recvBufferSize;
int sendingSize;
int recvingSize;
int requestSendSize;
int requestRecvSize;
u8 sendState;
u8 recvState;
u8 lastRecvState;
u8 pads[3];
u16 lastRecvType;
OSTick previousRecvTick;
u32 recvTimeoutTime;
#ifndef SDK_FINALROM
u16 sendDelay;
u16 recvDelay;
#endif
};
struct DWCstTransportInfo {
DWCTransportConnection connections[DWC_MAX_CONNECTIONS];
DWCUserSendCallback sendCallback;
DWCUserRecvCallback recvCallback;
DWCUserRecvTimeoutCallback recvTimeoutCallback;
DWCUserPingCallback pingCallback;
u16 sendSplitMax;
#ifndef SDK_FINALROM
MATHRandContext16 context;
u32 seed;
DArray delayedSend;
DArray delayedRecv;
u8 sendDrop;
u8 recvDrop;
u8 pads[2];
#endif
};
struct DWCstTransportHeader {
int size;
u16 type;
char magicStrings[DWC_MAGIC_STRINGS_LEN];
};
struct DWCstDelayedMessage {
GT2Connection connection;
int filterID;
u8 * message;
int size;
BOOL reliable;
OSTick startTime;
OSTick delayTime;
};
extern BOOL DWC_SendReliable(u8 aid, const void * buffer, int size);
extern u32 DWC_SendReliableBitmap(u32 bitmap, const void * buffer, int size);
extern BOOL DWC_SendUnreliable(u8 aid, const void * buffer, int size);
extern u32 DWC_SendUnreliableBitmap(u32 bitmap, const void * buffer, int size);
extern BOOL DWC_Ping(u8 aid);
extern BOOL DWC_SetRecvBuffer(u8 aid, void * recvBuffer, int size);
extern BOOL DWC_SetUserSendCallback(DWCUserSendCallback callback);
extern BOOL DWC_SetUserRecvCallback(DWCUserRecvCallback callback);
extern BOOL DWC_SetUserRecvTimeoutCallback(DWCUserRecvTimeoutCallback callback);
extern BOOL DWC_SetRecvTimeoutTime(u8 aid, u32 time);
extern BOOL DWC_SetUserPingCallback(DWCUserPingCallback callback);
extern BOOL DWC_SetSendSplitMax(u16 sendSplitMax);
extern BOOL DWC_IsSendableReliable(u8 aid);
#ifndef SDK_FINALROM
extern BOOL DWC_SetSendDelay(u16 delay, u8 aid);
extern BOOL DWC_SetRecvDelay(u16 delay, u8 aid);
extern BOOL DWC_SetSendDrop(u8 drop, u8 aid);
extern BOOL DWC_SetRecvDrop(u8 drop, u8 aid);
#else
#define DWC_SetSendDelay(delay, aid) ((void)0)
#define DWC_SetRecvDelay(delay, aid) ((void)0)
#define DWC_SetSendDrop(drop, aid) ((void)0)
#define DWC_SetRecvDrop(drop, aid) ((void)0)
#endif
void DWCi_InitTransport(DWCTransportInfo * info);
BOOL DWCi_IsSendableReliable(u8 aid, u16 type);
BOOL DWCi_SendReliable(u16 type, u8 aid, const void * buffer, int size);
void DWCi_RecvCallback(GT2Connection connection, GT2Byte * message, int size, GT2Bool reliable);
void DWCi_PingCallback(GT2Connection connection, int latency);
void DWCi_TransportProcess(void);
void DWCi_ShutdownTransport(void);
void DWCi_ClearTransConnection(u8 aid);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,17 +0,0 @@
#ifndef DWC_BM_INIT_H_
#define DWC_BM_INIT_H_
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_BM_INIT_WORK_SIZE 0x700
#define DWC_INIT_WORK_SIZE 0x700
int DWC_BM_Init(void * work);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,24 +0,0 @@
#ifndef DWC_UTIL_WIFIIDTOOL_H_
#define DWC_UTIL_WIFIIDTOOL_H_
#include <nitro.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
u64 uId;
u64 notAttestedId;
u32 flg;
} DWCAuthWiFiId;
void DWC_Auth_GetId(DWCAuthWiFiId * id);
BOOL DWC_Auth_CheckPseudoWiFiID(void);
BOOL DWC_Auth_CheckWiFiIDNeedCreate(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,14 +0,0 @@
#ifndef DWC_H_
#define DWC_H_
#include <util/dwc_utility.h>
#include <bm/dwc_bm_init.h>
#include <ac/dwc_ac.h>
#include <base/dwc_core.h>
#include <base/dwc_nd.h>
#ifndef NITRODWC_NOGS
#include <base/dwc_ranking.h>
#endif
#endif

View File

@ -1,11 +0,0 @@
#ifndef DWC_VERSION_H_
#define DWC_VERSION_H_
#define DWC_VERSION_DATE 20080630
#define DWC_VERSION_TIME 1906
#define DWC_VERSION_MAJOR 2
#define DWC_VERSION_MINOR 2
#define DWC_VERSION_RELSTEP 30008
#define DWC_VERSION_STRING "DWC2.2.30008.080630.1906_DWC_2_2_PLUS8"
#endif

View File

@ -1,78 +0,0 @@
#ifndef DWC_ND_DWC_ND_H
#define DWC_ND_DWC_ND_H
#if ((defined WIN32) || (defined _WIN32))
#pragma once
#define BOOL int
typedef unsigned long u32;
typedef unsigned long long u64;
#include <stdlib.h>
#else
#ifndef _NITRO
#define _NITRO
#endif
#include <nitro.h>
#include <nitroWiFi.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_ND_NHTTP_THREAD_PRIORITY 10
#define DWC_ND_RECVBUF_MIN 128
#define DWC_ND_LISTBUFFER_PERNUM 256
#define DWC_ND_LENGTH_GAMECODE 4
#define DWC_ND_LENGTH_PASSWORD 16
#define DWC_ND_FILEATTR_LEN 10
typedef enum {
DWC_ND_ERROR_NONE,
DWC_ND_ERROR_ALLOC,
DWC_ND_ERROR_BUSY,
DWC_ND_ERROR_HTTP,
DWC_ND_ERROR_BUFFULL,
DWC_ND_ERROR_DLSERVER,
DWC_ND_ERROR_CANCELED,
DWC_ND_ERROR_PARAM,
DWC_ND_ERROR_FATAL,
DWC_ND_ERROR_MAX
} DWCNdError;
typedef enum {
DWC_ND_CBREASON_INITIALIZE,
DWC_ND_CBREASON_GETFILELISTNUM,
DWC_ND_CBREASON_GETFILELIST,
DWC_ND_CBREASON_GETFILE,
DWC_ND_CBREASON_MAX
} DWCNdCallbackReason;
typedef struct {
char name[32 + 1];
short explain[50 + 1];
char param1[DWC_ND_FILEATTR_LEN + 1];
char param2[DWC_ND_FILEATTR_LEN + 1];
char param3[DWC_ND_FILEATTR_LEN + 1];
unsigned int size;
} DWCNdFileInfo;
typedef void * (* DWCNdAlloc)(u32 size, int align);
typedef void (* DWCNdFree)(void * ptr);
typedef void (* DWCNdCallback)(DWCNdCallbackReason reason, DWCNdError errpr, int servererror);
typedef void (* DWCNdCleanupCallback)(void);
BOOL DWCi_NdStartup(DWCNdAlloc alloc, DWCNdFree free, char * url, char * token, char * gamecd, char * passwd, DWCNdCallback callback);
void DWCi_NdCleanupAsync(DWCNdCleanupCallback callback);
DWCNdError DWCi_NdGetError(void);
BOOL DWCi_NdSetAttr(char * attr1, char * attr2, char * attr3);
BOOL DWCi_NdGetFileListNumAsync(int * entrynum);
BOOL DWCi_NdGetFileListAsync(DWCNdFileInfo * filelist, int offset, int num);
BOOL DWCi_NdGetFileAsync(DWCNdFileInfo * filelist, char * buf, unsigned int bufsize);
BOOL DWCi_NdCancelAsync(void);
BOOL DWCi_NdGetProgress(u32 * received, u32 * contentlen);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,102 +0,0 @@
#ifndef NHTTP_NHTTP_H
#define NHTTP_NHTTP_H
#if ((defined WIN32) || (defined _WIN32))
#pragma once
#define BOOL int
#define TRUE 1
#define FALSE 0
#define SDK_ASSERT(XX) _ASSERT(XX)
typedef unsigned long u32;
typedef struct _SOCCaInfo {
char * caname;
int casize;
unsigned char * cabody;
int caexpsize;
unsigned char * caexp;
} SOCCaInfo, CPSCaInfo;
typedef struct _SOCSslConnection {
char * server_name;
int (* auth_callback)(int, struct _CPSSslConnection *, int);
SOCCaInfo ** ca_info;
int ca_builtins;
} SOCSslConnection;
#include <stdlib.h>
#include <crtdbg.h>
#else
#ifndef _NITRO
#define _NITRO
#endif
#include <nitro.h>
#include <nitroWiFi.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#define NHTTP_COMMTHREAD_STACK (8 * 1024)
#define NHTTP_HTTP_PORT 80
#define NHTTP_HTTPS_PORT 443
#define NHTTP_STR_HTTPVER "1.1"
#define NHTTP_HDRRECVBUF_INILEN 1024
#define NHTTP_HDRRECVBUF_BLOCKSHIFT 9
#define NHTTP_HDRRECVBUF_BLOCKLEN (1 << NHTTP_HDRRECVBUF_BLOCKSHIFT)
#define NHTTP_HDRRECVBUF_BLOCKMASK (NHTTP_HDRRECVBUF_BLOCKLEN - 1)
typedef enum {
NHTTP_ERROR_NONE,
NHTTP_ERROR_ALLOC,
NHTTP_ERROR_TOOMANYREQ,
NHTTP_ERROR_SOCKET,
NHTTP_ERROR_DNS,
NHTTP_ERROR_CONNECT,
NHTTP_ERROR_BUFFULL,
NHTTP_ERROR_HTTPPARSE,
NHTTP_ERROR_CANCELED,
NHTTP_ERROR_NITROSDK,
NHTTP_ERROR_NITROWIFI,
NHTTP_ERROR_UNKNOWN,
NHTTP_ERROR_MAX
} NHTTPError;
typedef enum {
NHTTP_REQMETHOD_GET,
NHTTP_REQMETHOD_POST,
NHTTP_REQMETHOD_HEAD,
NHTTP_REQMETHOD_MAX
} NHTTPReqMethod;
typedef struct _NHTTPRes NHTTPRes;
typedef struct _NHTTPReq NHTTPReq;
typedef void * (* NHTTPAlloc)(u32 size, int align);
typedef void (* NHTTPFree)(void * ptr);
typedef void (* NHTTPCleanupCallback)(void);
typedef void (* NHTTPReqCallback)(NHTTPError error, NHTTPRes * res, void * param);
BOOL NHTTP_Startup(NHTTPAlloc alloc, NHTTPFree free, u32 threadprio);
void NHTTP_CleanupAsync(NHTTPCleanupCallback callback);
NHTTPError NHTTP_GetError(void);
NHTTPReq * NHTTP_CreateRequest(char * url, NHTTPReqMethod method, char * buf, u32 len, NHTTPReqCallback callback, void * param);
void NHTTP_DestroyRequest(NHTTPReq * req);
BOOL NHTTP_AddHeaderField(NHTTPReq * req, char * label, char * value);
BOOL NHTTP_AddPostDataAscii(NHTTPReq * req, char * label, char * value);
BOOL NHTTP_AddPostDataBinary(NHTTPReq * req, char * label, char * value, u32 length);
BOOL NHTTP_SetCAChain(NHTTPReq * req, SOCCaInfo ** cainfo, int cabuiltins);
int NHTTP_SendRequestAsync(NHTTPReq * req);
BOOL NHTTP_CancelRequestAsync(int id);
BOOL NHTTP_GetProgress(u32 * received, u32 * contentlen);
void NHTTP_DestroyResponse(NHTTPRes * res);
int NHTTP_GetHeaderField(NHTTPRes * res, char * label, char ** value);
int NHTTP_GetHeaderAll(NHTTPRes * res, char ** value);
int NHTTP_GetBodyAll(NHTTPRes * res, char ** value);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,40 +0,0 @@
#ifndef DWC_RANKSESSION_H_
#define DWC_RANKSESSION_H_
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
DWCi_RANKING_SESSION_STATE_CANCELED,
DWCi_RANKING_SESSION_STATE_ERROR,
DWCi_RANKING_SESSION_STATE_INITIAL,
DWCi_RANKING_SESSION_STATE_INITIALIZED,
DWCi_RANKING_SESSION_STATE_REQUEST,
DWCi_RANKING_SESSION_STATE_GETTING_TOKEN,
DWCi_RANKING_SESSION_STATE_GOT_TOKEN,
DWCi_RANKING_SESSION_STATE_SENDING_DATA,
DWCi_RANKING_SESSION_STATE_COMPLETED
} DWCiRankingSessionState;
typedef enum {
DWCi_RANKING_SESSION_SUCCESS,
DWCi_RANKING_SESSION_ERROR_NOTINITIALIZED,
DWCi_RANKING_SESSION_ERROR_NOMEMORY,
DWCi_RANKING_SESSION_ERROR_INVALID_KEY
} DWCiRankingSessionResult;
void DWCi_RankingSessionInitialize(BOOL releaseserver);
void DWCi_RankingSessionShutdown(void);
BOOL DWCi_RankingValidateKey(const char * gamename, const char * secretkey, u32 key1, u32 key2, u32 key3, u32 key4);
DWCiRankingSessionResult DWCi_RankingSessionPutAsync(u32 category, s32 pid, DWCRnkRegion region, s32 score, void * data, u32 size);
DWCiRankingSessionResult DWCi_RankingSessionGetAsync(DWCRnkGetMode mode, u32 category, s32 pid, DWCRnkRegion region, DWCRnkGetParam * param);
DWCiRankingSessionState DWCi_RankingSessionProcess(void);
void * DWCi_RankingSessionGetResponse(u32 * size);
void DWCi_RankingSessionCancel(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,72 +0,0 @@
#ifndef DWC_UTILITY_H_
#define DWC_UTILITY_H_
#ifdef __cplusplus
extern "C" {
#endif
#define DWC_UTILITY_WORK_SIZE 0x40000
#define DWC_UTILITY_TOP_MENU_FOR_USA \
(DWC_UTIL_FLAG0_TOP)
#define DWC_UTILITY_SETTING_FOR_USA \
(DWC_UTIL_FLAG0_SETTING)
#define DWC_UTILITY_TOP_MENU_FOR_EUR \
(DWC_UTIL_FLAG0_TOP)
#define DWC_UTILITY_SETTING_FOR_EUR \
(DWC_UTIL_FLAG0_SETTING)
#define DWC_UTILITY_TOP_MENU_FOR_JPN \
(DWC_UTIL_FLAG0_TOP | (DWC_UTIL_FLAG1_RAKU << 4))
#define DWC_UTILITY_SETTING_FOR_JPN \
(DWC_UTIL_FLAG0_SETTING | (DWC_UTIL_FLAG1_RAKU << 4))
#define DWC_UTILITY_TOP_MENU_COMMON \
(DWC_UTIL_FLAG0_TOP)
#define DWC_UTILITY_SETTING_COMMON \
(DWC_UTIL_FLAG0_SETTING)
#define DWC_UTILITY_TOP_MENU_EXCEPT_JPN \
DWC_UTILITY_TOP_MENU_COMMON
#define DWC_UTILITY_SETTING_EXCEPT_JPN \
DWC_UTILITY_SETTING_COMMON
enum DWC_LANGUAGE {
DWC_LANGUAGE_JAPANESE,
DWC_LANGUAGE_ENGLISH,
DWC_LANGUAGE_FRENCH,
DWC_LANGUAGE_GERMAN,
DWC_LANGUAGE_ITALIAN,
DWC_LANGUAGE_SPANISH,
DWC_LANGUAGE_HANGUL
};
enum DWCUTILRESULT {
DWC_UTIL_RESULT_SUCCESS = 0,
DWC_UTIL_RESULT_FAILED = ~0
};
enum DWCUTILFLAG0 {
DWC_UTIL_FLAG0_TOP = 0x0000,
DWC_UTIL_FLAG0_SETTING = 0x0001
};
enum DWCUTILFLAG1 {
DWC_UTIL_FLAG1_RAKU = 0x0001,
DWC_UTIL_FLAG1_USA = 0x0002
};
int DWC_StartUtility(void * work, int language, int param);
int DWC_StartUtilityEx(int language, int param);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,413 +0,0 @@
.include "macros/function.inc"
.include "include/beacon.inc"
.text
arm_func_start ov4_021E6588
ov4_021E6588: ; 0x021E6588
stmfd sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r0, #0x10
mvn r4, #0
bl ov4_021E62EC
mov r6, r0
mov r0, #1
bl ov4_021E62EC
mov r1, #1
strb r1, [r0, #0xb]
bl ov4_021E63A4
cmp r0, #3
beq _021E65D0
cmp r0, #4
beq _021E6638
cmp r0, #5
beq _021E6684
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_021E65D0:
ldrh r1, [r7, #0xa]
ldrb r5, [r6, #0xd11]
cmp r1, #0
ldrneb r0, [r7, #0xc]
cmpne r0, #0
bne _021E65F4
ldrh r0, [r7, #0x36]
bl ov4_021E79A4
b _021E66CC
_021E65F4:
cmp r1, #1
cmpeq r0, #0x20
bne _021E6620
ldrh r0, [r7, #0x36]
bl ov4_021E79A4
ldrb r1, [r6, #0xd10]
mov r0, r7
add r2, r6, #0x300
bl ov4_021E6788
mov r4, r0
b _021E66CC
_021E6620:
ldrb r1, [r6, #0xd10]
mov r0, r7
add r2, r6, #0x300
bl ov4_021E6788
mov r4, r0
b _021E66CC
_021E6638:
ldrb r2, [r6, #0xd0f]
mov r1, #0xc0
mov r0, r7
mla r1, r2, r1, r6
add r1, r1, #0x400
ldrh r2, [r1, #0xa6]
mov r1, r6
sub r2, r2, #1
and r5, r2, #0xff
bl ov4_021E6804
movs r4, r0
bmi _021E66CC
ldrb r1, [r6, #0xd0f]
add r0, r6, #0x47
add r2, r0, #0x400
ldrb r0, [r2, r1, lsl #2]
orr r0, r0, #0x80
strb r0, [r2, r1, lsl #2]
b _021E66CC
_021E6684:
ldrb r1, [r6, #0xd0f]
add r2, r6, #0x300
mov r0, #0x24
mla r2, r1, r0, r2
mov r0, r7
mov r1, #1
ldrb r5, [r6, #0xd11]
bl ov4_021E6788
movs r4, r0
bmi _021E66CC
ldrb r1, [r6, #0xd0f]
mov r0, #0x24
add r2, r6, #0x300
smulbb r1, r1, r0
ldrb r0, [r2, r1]
bic r0, r0, #0xf
orr r0, r0, #1
strb r0, [r2, r1]
_021E66CC:
cmp r4, #0
ldmltia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r4
mov r1, r7
mov r2, r5
mov r3, r6
bl ov4_021E6894
mov r1, r6
bl ov4_021E6A14
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end ov4_021E6588
arm_func_start ov4_021E66F4
ov4_021E66F4: ; 0x021E66F4
stmfd sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, #0x10
bl ov4_021E62EC
mov r4, r0
ldrb r0, [r4, #0xd0c]
mov r0, r0, lsl #0x1c
movs r0, r0, lsr #0x1c
cmpne r0, #4
bne _021E6744
ldrh r0, [r5, #0x2c]
mov r0, r0, asr #4
and r0, r0, #1
cmp r0, #1
bne _021E6744
add r0, r5, #0xc
bl ov4_021E86A0
cmp r0, #1
moveq r0, #6
ldmeqia sp!, {r3, r4, r5, pc}
_021E6744:
ldrb r0, [r4, #0xd0c]
mov r0, r0, lsl #0x1c
movs r0, r0, lsr #0x1c
cmpne r0, #5
bne _021E6780
ldrh r0, [r5, #0x2c]
mov r0, r0, asr #4
and r0, r0, #1
cmp r0, #1
bne _021E6780
add r0, r5, #0xc
bl ov4_021E85F4
cmp r0, #1
moveq r0, #7
ldmeqia sp!, {r3, r4, r5, pc}
_021E6780:
mvn r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E66F4
arm_func_start ov4_021E6788
ov4_021E6788: ; 0x021E6788
stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r6, r0
ldrh r3, [r6, #0xa]
mov r5, r1
mov r4, r2
cmp r3, #0x20
bne _021E67B0
bl ov4_021E66F4
cmp r0, #0
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_021E67B0:
cmp r5, #0
mov r8, #0
ble _021E67FC
ldrh sb, [r6, #0xa]
and r7, sb, #0xff
_021E67C4:
ldrb r0, [r4, #3]
cmp r7, r0
bne _021E67EC
mov r2, sb
add r0, r6, #0xc
add r1, r4, #4
bl strncmp
cmp r0, #0
ldreqb r0, [r4, #1]
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_021E67EC:
add r8, r8, #1
cmp r8, r5
add r4, r4, #0x24
blt _021E67C4
_021E67FC:
mvn r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end ov4_021E6788
arm_func_start ov4_021E6804
ov4_021E6804: ; 0x021E6804
stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov sl, r0
ldrh r2, [sl, #0xa]
mov sb, r1
cmp r2, #0x20
bne _021E6828
bl ov4_021E66F4
cmp r0, #0
ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E6828:
ldrb r8, [sb, #0xd12]
mov r4, #0
cmp r8, #0
ble _021E688C
ldrh r7, [sl, #0xa]
add r0, sb, #0x7c
mov r5, sb
add r6, r0, #0x400
_021E6848:
add r0, r5, #0x400
ldrh r0, [r0, #0x7a]
cmp r7, r0
bne _021E6878
mov r1, r6
mov r2, r7
add r0, sl, #0xc
bl strncmp
cmp r0, #0
addeq r0, sb, r4, lsl #2
ldreqb r0, [r0, #0x445]
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E6878:
add r4, r4, #1
cmp r4, r8
add r5, r5, #0xc0
add r6, r6, #0xc0
blt _021E6848
_021E688C:
mvn r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end ov4_021E6804
arm_func_start ov4_021E6894
ov4_021E6894: ; 0x021E6894
stmfd sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r3
ldrb r5, [r6, #0xd12]
mvn r4, #0
mov r3, #0
cmp r5, #0
ble _021E6918
ldrb lr, [r1, #4]
add ip, r6, #0x74
add ip, ip, #0x400
_021E68BC:
ldrb r7, [ip]
cmp lr, r7
ldreqb r8, [r1, #5]
ldreqb r7, [ip, #1]
cmpeq r8, r7
ldreqb r8, [r1, #6]
ldreqb r7, [ip, #2]
cmpeq r8, r7
ldreqb r8, [r1, #7]
ldreqb r7, [ip, #3]
cmpeq r8, r7
ldreqb r8, [r1, #8]
ldreqb r7, [ip, #4]
cmpeq r8, r7
ldreqb r8, [r1, #9]
ldreqb r7, [ip, #5]
cmpeq r8, r7
moveq r4, r3
beq _021E6918
add r3, r3, #1
cmp r3, r5
add ip, ip, #0xc0
blt _021E68BC
_021E6918:
mvn r3, #0
cmp r4, r3
bne _021E6948
mov r3, r6
and r0, r0, #0xff
bl ov4_021E695C
ldrb r0, [r6, #0xd12]
mov r4, #0xa
cmp r0, #0xa
addlo r0, r0, #1
strlob r0, [r6, #0xd12]
b _021E6954
_021E6948:
mov r0, r4
mov r3, r6
bl ov4_021E69A8
_021E6954:
mov r0, r4
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end ov4_021E6894
arm_func_start ov4_021E695C
ov4_021E695C: ; 0x021E695C
stmfd sp!, {r3, lr}
add ip, r3, #0x6c
strb r0, [ip, #0x401]
ldrh r0, [r1, #2]
and r2, r2, #0x7f
tst r0, #2
mov r0, r0, asr #2
addeq r0, r0, #0x19
and r0, r0, #0xff
strb r0, [ip, #0x402]
ldrb lr, [ip, #0x403]
mov r0, r1
bic r1, lr, #0x7f
orr lr, r1, r2
add r1, r3, #0xbf0
mov r2, #0xc0
strb lr, [ip, #0x403]
bl MIi_CpuCopy32
ldmia sp!, {r3, pc}
arm_func_end ov4_021E695C
arm_func_start ov4_021E69A8
ov4_021E69A8: ; 0x021E69A8
stmfd sp!, {r3, r4, r5, lr}
ldrh r4, [r1, #2]
add ip, r3, #0x44
mov lr, #0xc0
add r5, ip, #0x400
mul ip, r0, lr
tst r4, #2
add r0, r5, r0, lsl #2
mov r4, r4, asr #2
addeq r4, r4, #0x19
and r4, r4, #0xff
ldrb lr, [r0, #2]
and r4, r4, #0xff
add r3, r3, #0x470
cmp r4, lr
bls _021E6A00
strb r4, [r0, #2]
ldrb lr, [r0, #3]
and r2, r2, #0x7f
bic lr, lr, #0x7f
orr r2, lr, r2
strb r2, [r0, #3]
_021E6A00:
mov r0, r1
add r1, r3, ip
mov r2, #0xc0
bl MIi_CpuCopy32
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E69A8
arm_func_start ov4_021E6A14
ov4_021E6A14: ; 0x021E6A14
stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc4
mov r4, r0
add r0, r1, #0x44
add r7, r0, #0x400
add r8, r1, #0x470
subs r6, r4, #1
bmi _021E6ADC
mov r0, #0xc0
mla sl, r6, r0, r8
add sb, r7, r6, lsl #2
add fp, sp, #0
_021E6A44:
add r0, r7, r4, lsl #2
ldrb r1, [r0, #2]
add r0, r7, r6, lsl #2
ldrb r0, [r0, #2]
cmp r1, r0
blo _021E6ADC
mov r0, sb
mov r1, fp
mov r2, #4
bl MIi_CpuCopy32
add r5, r7, r4, lsl #2
mov r0, r5
mov r1, sb
mov r2, #4
bl MIi_CpuCopy32
mov r1, r5
mov r0, fp
mov r2, #4
bl MIi_CpuCopy32
mov r0, sl
add r1, sp, #4
mov r2, #0xc0
bl MIi_CpuCopy32
mov r0, #0xc0
mul r5, r4, r0
add r0, r8, r5
mov r1, sl
mov r2, #0xc0
bl MIi_CpuCopy32
add r1, r8, r5
add r0, sp, #4
mov r2, #0xc0
bl MIi_CpuCopy32
mov r4, r6
sub sb, sb, #4
sub sl, sl, #0xc0
subs r6, r6, #1
bpl _021E6A44
_021E6ADC:
add r1, r7, #0x28
mov r0, #0
mov r2, #4
bl MIi_CpuClear32
add r1, r8, #0x780
mov r0, #0
mov r2, #0xc0
bl MIi_CpuClear32
add sp, sp, #0xc4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end ov4_021E6A14

View File

@ -1,51 +0,0 @@
.include "macros/function.inc"
.include "include/callback.inc"
.text
arm_func_start ov4_021E6B04
ov4_021E6B04: ; 0x021E6B04
stmfd sp!, {r4, lr}
mov r4, r0
mov r0, #0x10
bl ov4_021E62EC
ldrsh r1, [r4]
cmp r1, #5
bne _021E6B7C
ldrsh r1, [r4, #2]
cmp r1, #0
ldmeqia sp!, {r4, pc}
ldr r1, [r4, #8]
cmp r1, #0xd
beq _021E6B4C
cmp r1, #0xf
beq _021E6B58
cmp r1, #0x11
beq _021E6B64
b _021E6B70
_021E6B4C:
mov r1, #1
strb r1, [r0, #0xd14]
ldmia sp!, {r4, pc}
_021E6B58:
mov r1, #2
strb r1, [r0, #0xd14]
ldmia sp!, {r4, pc}
_021E6B64:
mov r1, #3
strb r1, [r0, #0xd14]
ldmia sp!, {r4, pc}
_021E6B70:
mov r1, #4
strb r1, [r0, #0xd14]
ldmia sp!, {r4, pc}
_021E6B7C:
cmp r1, #7
ldmneia sp!, {r4, pc}
ldr r0, [r4, #4]
bl ov4_021E6588
ldmia sp!, {r4, pc}
arm_func_end ov4_021E6B04

View File

@ -1,114 +0,0 @@
.include "macros/function.inc"
.include "include/close.inc"
.text
arm_func_start ov4_021E70C8
ov4_021E70C8: ; 0x021E70C8
stmfd sp!, {r4, lr}
mov r4, r0
ldrb r0, [r4]
cmp r0, #0xa
bhi _021E7114
bl ov4_021E7150
cmp r0, #1
bne _021E70F8
mov r0, #0
strb r0, [r4]
mov r0, #1
ldmia sp!, {r4, pc}
_021E70F8:
mvn r1, #0
cmp r0, r1
bne _021E7148
mov r0, #0x12
strb r0, [r4]
mov r0, #1
ldmia sp!, {r4, pc}
_021E7114:
cmp r0, #0xe
bne _021E7130
bl DWC_Netcheck_Abort
bl DWC_Netcheck_Destroy
mov r0, #0xc
strb r0, [r4]
b _021E7148
_021E7130:
cmp r0, #0x12
bhs _021E7148
bl ov4_021E71E0
cmp r0, #1
moveq r0, #0xa
streqb r0, [r4]
_021E7148:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end ov4_021E70C8
arm_func_start ov4_021E7150
ov4_021E7150: ; 0x021E7150
stmfd sp!, {r3, lr}
bl WCM_GetPhase
cmp r0, #0xc
addls pc, pc, r0, lsl #2
b _021E71D8
_021E7164: ; jump table
b _021E7198 ; case 0
b _021E71A0 ; case 1
b _021E71D8 ; case 2
b _021E71A8 ; case 3
b _021E71D8 ; case 4
b _021E71D8 ; case 5
b _021E71B0 ; case 6
b _021E71D8 ; case 7
b _021E71D8 ; case 8
b _021E71B8 ; case 9
b _021E71D8 ; case 10
b _021E71C8 ; case 11
b _021E71C0 ; case 12
_021E7198:
mov r0, #1
ldmia sp!, {r3, pc}
_021E71A0:
bl WCM_Finish
b _021E71D8
_021E71A8:
bl WCM_CleanupAsync
b _021E71D8
_021E71B0:
bl WCM_EndSearchAsync
b _021E71D8
_021E71B8:
bl WCM_DisconnectAsync
b _021E71D8
_021E71C0:
bl WCM_TerminateAsync
b _021E71D8
_021E71C8:
mov r0, #0
bl ov4_021E63C0
mvn r0, #0
ldmia sp!, {r3, pc}
_021E71D8:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end ov4_021E7150
arm_func_start ov4_021E71E0
ov4_021E71E0: ; 0x021E71E0
stmfd sp!, {r3, lr}
bl SOCL_CalmDown
cmp r0, #0
movne r0, #0
ldmneia sp!, {r3, pc}
bl SOC_Cleanup
cmp r0, #0
mvnne r1, #0x26
cmpne r0, r1
moveq r0, #1
movne r0, #0
ldmia sp!, {r3, pc}
arm_func_end ov4_021E71E0

View File

@ -1,403 +0,0 @@
.include "macros/function.inc"
.include "include/connect.inc"
.text
arm_func_start ov4_021E6B90
ov4_021E6B90: ; 0x021E6B90
stmfd sp!, {r4, lr}
bl ov4_021E63A4
mov r4, r0
mov r0, #0x10
bl ov4_021E62EC
cmp r4, #7
beq _021E6BB8
cmp r4, #8
beq _021E6BC4
b _021E6BCC
_021E6BB8:
bl ov4_021E6BD4
mov r4, r0
b _021E6BCC
_021E6BC4:
bl ov4_021E6CCC
mov r4, r0
_021E6BCC:
mov r0, r4
ldmia sp!, {r4, pc}
arm_func_end ov4_021E6B90
arm_func_start ov4_021E6BD4
ov4_021E6BD4: ; 0x021E6BD4
stmfd sp!, {r3, r4, r5, lr}
mov r5, r0
ldrb r2, [r5, #0xd13]
add r3, r5, #0x470
mov r1, #0xc0
mla r4, r2, r1, r3
bl ov4_021E6E08
add r1, r5, #0xb8
strb r0, [r5, #0xd0d]
add r0, r1, #0xc00
mov r1, #0
mov r2, #0x52
bl MI_CpuFill8
add r2, r5, #0xb8
ldrb r1, [r5, #0xd0d]
mov r0, r5
add r2, r2, #0xc00
bl ov4_021E6FDC
cmp r0, #0
ldrb r0, [r5, #0xd0b]
bic r0, r0, #0xc
beq _021E6C88
orr r0, r0, #4
strb r0, [r5, #0xd0b]
ldrh r0, [r4, #0x2c]
mov r0, r0, asr #4
tst r0, #1
bne _021E6C5C
ldrb r1, [r5, #0xd13]
mov r2, #3
mov r0, #9
add r1, r5, r1, lsl #2
strb r2, [r1, #0x444]
ldmia sp!, {r3, r4, r5, pc}
_021E6C5C:
ldrb r0, [r5, #0xd0d]
cmp r0, #6
ldreqb r0, [r4, #0x15]
cmpeq r0, #0
bne _021E6CB8
ldrb r1, [r5, #0xd13]
mov r2, #3
mov r0, #9
add r1, r5, r1, lsl #2
strb r2, [r1, #0x444]
ldmia sp!, {r3, r4, r5, pc}
_021E6C88:
strb r0, [r5, #0xd0b]
ldrh r0, [r4, #0x2c]
mov r0, r0, asr #4
and r0, r0, #1
cmp r0, #1
bne _021E6CB8
ldrb r1, [r5, #0xd13]
mov r2, #3
mov r0, #9
add r1, r5, r1, lsl #2
strb r2, [r1, #0x444]
ldmia sp!, {r3, r4, r5, pc}
_021E6CB8:
mov r0, #0
strb r0, [r5, #0xd15]
strb r0, [r5, #0xd14]
mov r0, #8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E6BD4
arm_func_start ov4_021E6CCC
ov4_021E6CCC: ; 0x021E6CCC
stmfd sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
bl WCM_GetPhase
ldrb r2, [r7, #0xd13]
mov r1, #0xc0
cmp r0, #3
add r5, r7, #0x470
smulbb r4, r2, r1
bne _021E6DDC
mov r0, r7
bl ov4_021E6FA4
ldrb r1, [r7, #0xd15]
mov r6, r0
add r0, r1, #1
and r1, r0, #0xff
strb r0, [r7, #0xd15]
cmp r1, #3
bls _021E6D34
mov r0, #0
strb r0, [r7, #0xd15]
ldrb r1, [r7, #0xd13]
mov r2, #1
mov r0, #9
add r1, r7, r1, lsl #2
strb r2, [r1, #0x444]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_021E6D34:
cmp r1, #1
beq _021E6DB8
ldrb r0, [r7, #0xd14]
cmp r0, #1
bne _021E6D58
ldrb r0, [r7, #0xd0b]
bic r0, r0, #0xc
strb r0, [r7, #0xd0b]
b _021E6DB8
_021E6D58:
cmp r0, #2
bne _021E6D80
mov r0, #0
strb r0, [r7, #0xd15]
ldrb r1, [r7, #0xd13]
mov r2, #3
mov r0, #9
add r1, r7, r1, lsl #2
strb r2, [r1, #0x444]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_021E6D80:
cmp r0, #3
bne _021E6DA8
mov r0, #0
strb r0, [r7, #0xd15]
ldrb r1, [r7, #0xd13]
mov r2, #4
mov r0, #9
add r1, r7, r1, lsl #2
strb r2, [r1, #0x444]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_021E6DA8:
cmp r1, #3
ldreqb r0, [r7, #0xd0b]
biceq r0, r0, #0xc
streqb r0, [r7, #0xd0b]
_021E6DB8:
mov r0, r7
bl ov4_021E6FC0
mov r2, r0
add r1, r7, #0xb8
add r0, r5, r4
add r1, r1, #0xc00
orr r2, r6, r2
bl WCM_ConnectAsync
b _021E6E00
_021E6DDC:
cmp r0, #9
bne _021E6E00
mov r0, #0
strb r0, [r7, #0xd15]
bl OS_GetTick
str r0, [r7, #0xcb0]
str r1, [r7, #0xcb4]
mov r0, #0xa
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_021E6E00:
mov r0, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end ov4_021E6CCC
arm_func_start ov4_021E6E08
ov4_021E6E08: ; 0x021E6E08
stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
ldrb r2, [sl, #0xd13]
ldrb r1, [sl, #0xd0c]
add r3, sl, #0x470
mov r0, #0xc0
mla r4, r2, r0, r3
mov r0, r1, lsl #0x18
movs r0, r0, lsr #0x1e
mov r0, #0
str r0, [sp]
bne _021E6F24
ldrh r0, [r4, #0xa]
ldr r6, [sp]
cmp r0, #0x20
bne _021E6E68
mov r0, r4
bl ov4_021E66F4
cmp r0, #0
str r0, [sp]
movle r0, #0
addgt r6, r6, #1
strle r0, [sp]
b _021E6E8C
_021E6E68:
cmp r0, #8
bne _021E6E8C
mov r0, r4
bl ov4_021E7490
cmp r0, #0
str r0, [sp]
moveq r0, #0
addne r6, r6, #1
streq r0, [sp]
_021E6E8C:
ldrb r0, [sl, #0xd10]
mov r5, #0
cmp r0, #0
ble _021E6F98
mov r7, sl
add r8, sl, #0x304
add sb, sl, #0x300
add fp, sl, #0x10c
_021E6EAC:
ldrh r2, [r4, #0xa]
ldrb r0, [r7, #0x303]
cmp r2, r0
bne _021E6F04
mov r1, r8
add r0, r4, #0xc
bl strncmp
cmp r0, #0
bne _021E6F04
cmp r6, #0
ldreqb r0, [r7, #0x301]
streq r0, [sp]
beq _021E6F00
ldrb r0, [sb]
bic r0, r0, #0xf0
orr r0, r0, #0x10
strb r0, [sb]
ldrb r0, [fp, #0xc00]
bic r0, r0, #0xc0
orr r0, r0, #0x40
strb r0, [fp, #0xc00]
_021E6F00:
add r6, r6, #1
_021E6F04:
ldrb r0, [sl, #0xd10]
add r5, r5, #1
add r7, r7, #0x24
cmp r5, r0
add r8, r8, #0x24
add sb, sb, #0x24
blt _021E6EAC
b _021E6F98
_021E6F24:
ldrb r0, [sl, #0xd10]
ldr r5, [sp]
mov r4, r5
cmp r0, #0
ble _021E6F88
mov r3, sl
add r2, sl, #0x300
_021E6F40:
ldrb r0, [r2]
mov r1, r0, lsl #0x18
mov r1, r1, lsr #0x1c
cmp r1, #1
bne _021E6F70
cmp r4, #0
bne _021E6F6C
bic r0, r0, #0xf0
strb r0, [r2]
ldrb r0, [r3, #0x301]
str r0, [sp]
_021E6F6C:
add r4, r4, #1
_021E6F70:
ldrb r0, [sl, #0xd10]
add r5, r5, #1
add r2, r2, #0x24
cmp r5, r0
add r3, r3, #0x24
blt _021E6F40
_021E6F88:
cmp r4, #1
ldreqb r0, [sl, #0xd0c]
biceq r0, r0, #0xc0
streqb r0, [sl, #0xd0c]
_021E6F98:
ldr r0, [sp]
and r0, r0, #0xff
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end ov4_021E6E08
arm_func_start ov4_021E6FA4
ov4_021E6FA4: ; 0x021E6FA4
ldrb r0, [r0, #0xd0b]
mov r0, r0, lsl #0x1e
mov r0, r0, lsr #0x1e
cmp r0, #1
moveq r0, #0x30000
movne r0, #0x20000
bx lr
arm_func_end ov4_021E6FA4
arm_func_start ov4_021E6FC0
ov4_021E6FC0: ; 0x021E6FC0
ldrb r0, [r0, #0xd0b]
mov r0, r0, lsl #0x1c
mov r0, r0, lsr #0x1e
cmp r0, #1
moveq r0, #0xc0000
movne r0, #0x80000
bx lr
arm_func_end ov4_021E6FC0
arm_func_start ov4_021E6FDC
ov4_021E6FDC: ; 0x021E6FDC
stmfd sp!, {r4, lr}
mov r4, r2
cmp r1, #9
addls pc, pc, r1, lsl #2
b _021E70B4
_021E6FF0: ; jump table
b _021E7020 ; case 0
b _021E701C ; case 1
b _021E7018 ; case 2
b _021E704C ; case 3
b _021E7048 ; case 4
b _021E7044 ; case 5
b _021E7068 ; case 6
b _021E7090 ; case 7
b _021E70B4 ; case 8
b _021E70B4 ; case 9
_021E7018:
add r0, r0, #0x100
_021E701C:
add r0, r0, #0x100
_021E7020:
ldrb r2, [r0, #0xe6]
add r0, r0, #0x80
add r1, r4, #2
mov r2, r2, lsl #0x1e
mov r3, r2, lsr #0x1e
mov r2, #0x10
strb r3, [r4]
bl MI_CpuCopy8
b _021E70B4
_021E7044:
add r0, r0, #0x100
_021E7048:
add r0, r0, #0x100
_021E704C:
mov r3, #1
add r0, r0, #0xd1
add r1, r4, #2
mov r2, #5
strb r3, [r4]
bl MI_CpuCopy8
b _021E70B4
_021E7068:
mov r1, #2
strb r1, [r4]
ldrb r1, [r0, #0xd13]
add r0, r0, #0x7c
add r2, r0, #0x400
mov r0, #0xc0
mla r0, r1, r0, r2
add r1, r4, #2
bl ov4_021E86C4
b _021E70B4
_021E7090:
mov r1, #2
strb r1, [r4]
ldrb r1, [r0, #0xd13]
add r0, r0, #0x7c
add r2, r0, #0x400
mov r0, #0xc0
mla r0, r1, r0, r2
add r1, r4, #2
bl ov4_021E862C
_021E70B4:
ldrb r0, [r4]
cmp r0, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r4, pc}
arm_func_end ov4_021E6FDC

View File

@ -1,753 +0,0 @@
.include "macros/function.inc"
.include "include/dwc_ac.inc"
.text
arm_func_start DWC_AC_Create
DWC_AC_Create: ; 0x021E5C34
stmfd sp!, {r4, lr}
mov r4, r0
ldr r2, [r4, #0]
mov r0, #1
mov r1, #0x24
blx r2
mov r1, r0
ldr r3, _021E5DD4 ; =0x0221AE2C
mov r0, #0
mov r2, #0x24
str r1, [r3, #0xc]
bl MIi_CpuClear32
ldr r0, _021E5DD4 ; =0x0221AE2C
ldr r1, [r4, #0]
ldr r3, [r0, #0xc]
mov r2, #1
str r1, [r3, #0]
ldr r0, [r4, #4]
ldr r1, _021E5DD8 ; =0x00000D18
str r0, [r3, #4]
strb r2, [r3, #9]
strb r2, [r3, #0x16]
mov r0, #0x10
strb r2, [r3, #8]
bl ov4_021E6124
ldr r2, _021E5DD4 ; =0x0221AE2C
mov r1, #0x2300
str r0, [r2, #0x10]
mov r0, #2
bl ov4_021E6124
ldr r2, _021E5DD4 ; =0x0221AE2C
mov r1, #0x58
str r0, [r2, #0]
mov r0, #4
bl ov4_021E6124
ldr r2, _021E5DD4 ; =0x0221AE2C
mov r1, #0xc
str r0, [r2, #4]
mov r0, #8
bl ov4_021E6124
ldr r1, _021E5DD4 ; =0x0221AE2C
ldr r2, _021E5DD8 ; =0x00000D18
str r0, [r1, #8]
ldr r1, [r1, #0x10]
mov r0, #0
bl MIi_CpuClear32
mov r0, #0
ldr r1, _021E5DD4 ; =0x0221AE2C
mov r2, #0x2300
ldr r1, [r1, #0]
bl MIi_CpuClear32
mov r0, #0
ldr r1, _021E5DD4 ; =0x0221AE2C
mov r2, #0x58
ldr r1, [r1, #4]
bl MIi_CpuClear32
mov r0, #0
ldr r1, _021E5DD4 ; =0x0221AE2C
mov r2, #0xc
ldr r1, [r1, #8]
bl MIi_CpuClear32
ldr r1, _021E5DD4 ; =0x0221AE2C
ldrb r2, [r4, #8]
ldr r0, [r1, #0x10]
strb r2, [r0, #0xd0a]
ldrb r3, [r0, #0xd0b]
ldrb r2, [r4, #9]
bic r3, r3, #3
and r2, r2, #3
orr r2, r3, r2
strb r2, [r0, #0xd0b]
ldr r3, [r1, #8]
ldr r2, [r4, #0]
mov r1, #0
str r2, [r3, #0]
ldr r2, [r4, #4]
str r2, [r3, #4]
str r1, [r3, #8]
ldrb r2, [r0, #0xd0c]
ldrb r1, [r4, #0xa]
bic r2, r2, #0xf
and r1, r1, #0xf
orr r2, r2, r1
strb r2, [r0, #0xd0c]
ldrb r1, [r4, #0xb]
and r2, r2, #0xff
bic r2, r2, #0x30
mov r1, r1, lsl #0x1e
orr r1, r2, r1, lsr #26
strb r1, [r0, #0xd0c]
bl sub_020A2810
ldr r0, _021E5DD4 ; =0x0221AE2C
mov r1, #0x2300
ldr r0, [r0, #0]
bl WCM_Init
cmp r0, #1
beq _021E5DC0
cmp r0, #4
ble _021E5DCC
_021E5DC0:
bl ov4_021E61C8
mov r0, #0
ldmia sp!, {r4, pc}
_021E5DCC:
mov r0, #1
ldmia sp!, {r4, pc}
; .align 2, 0
_021E5DD4: .word Unk_ov4_0221AE2C
_021E5DD8: .word 0x00000D18
arm_func_end DWC_AC_Create
arm_func_start DWC_AC_Process
DWC_AC_Process: ; 0x021E5DDC
stmfd sp!, {r3, r4, r5, lr}
bl ov4_021E63A4
mov r5, r0
cmp r5, #1
bne _021E5DFC
bl ov4_021E80B0
mov r5, r0
b _021E5E70
_021E5DFC:
cmp r5, #7
bhs _021E5E24
bl OS_DisableInterrupts
mov r4, r0
bl ov4_021E78E0
mov r5, r0
bl ov4_021E6344
mov r0, r4
bl OS_RestoreInterrupts
b _021E5E70
_021E5E24:
cmp r5, #9
bhs _021E5E38
bl ov4_021E6B90
mov r5, r0
b _021E5E70
_021E5E38:
cmp r5, #0xa
bhs _021E5E4C
bl ov4_021E7804
mov r5, r0
b _021E5E70
_021E5E4C:
cmp r5, #0x10
bhs _021E5E60
bl ov4_021E8138
mov r5, r0
b _021E5E70
_021E5E60:
cmp r5, #0x11
bne _021E5E70
bl ov4_021E7210
mov r5, r0
_021E5E70:
mov r0, r5
bl ov4_021E6344
cmp r5, #0x10
bne _021E5E94
bl ov4_021E64E8
mov r4, r0
bl ov4_021E64B0
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
_021E5E94:
cmp r5, #0x12
movne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
bl ov4_021E64B0
mvn r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end DWC_AC_Process
arm_func_start DWC_AC_GetStatus
DWC_AC_GetStatus: ; 0x021E5EAC
stmfd sp!, {r3, lr}
bl ov4_021E63A4
cmp r0, #1
movls r0, #0
ldmlsia sp!, {r3, pc}
cmp r0, #7
movlo r0, #1
ldmloia sp!, {r3, pc}
cmp r0, #9
moveq r0, #4
ldmeqia sp!, {r3, pc}
cmp r0, #0xa
movlo r0, #2
ldmloia sp!, {r3, pc}
cmp r0, #0xb
moveq r0, #4
ldmeqia sp!, {r3, pc}
cmp r0, #0x10
movlo r0, #3
ldmloia sp!, {r3, pc}
moveq r0, #5
ldmeqia sp!, {r3, pc}
cmp r0, #0x11
moveq r0, #4
ldmeqia sp!, {r3, pc}
bl ov4_021E7234
ldmia sp!, {r3, pc}
arm_func_end DWC_AC_GetStatus
arm_func_start DWC_AC_GetApType
DWC_AC_GetApType: ; 0x021E5F18
stmfd sp!, {r4, lr}
mov r4, #0xff
bl ov4_021E63A4
cmp r0, #0xa
blo _021E5F3C
cmp r0, #0x10
ldrls r0, _021E5F44 ; =0x0221AE2C
ldrls r0, [r0, #0xc]
ldrlsb r4, [r0, #0x17]
_021E5F3C:
mov r0, r4
ldmia sp!, {r4, pc}
; .align 2, 0
_021E5F44: .word Unk_ov4_0221AE2C
arm_func_end DWC_AC_GetApType
arm_func_start DWC_AC_GetApSpotInfo
DWC_AC_GetApSpotInfo: ; 0x021E5F48
stmfd sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, #0
bl ov4_021E63A4
cmp r0, #0xa
blo _021E5F94
cmp r0, #0x10
bhi _021E5F94
ldr r0, _021E5F9C ; =0x0221AE2C
ldr r2, [r0, #0xc]
ldrb r0, [r2, #0x17]
cmp r0, #4
cmpne r0, #8
bne _021E5F94
mov r1, r5
add r0, r2, #0x18
mov r2, #0xa
bl MI_CpuCopy8
mov r4, #1
_021E5F94:
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
; .align 2, 0
_021E5F9C: .word Unk_ov4_0221AE2C
arm_func_end DWC_AC_GetApSpotInfo
arm_func_start DWC_AC_Destroy
DWC_AC_Destroy: ; 0x021E5FA0
stmfd sp!, {r3, lr}
bl ov4_021E63A4
strb r0, [sp]
ands r0, r0, #0xff
cmpne r0, #0x12
bne _021E5FC4
bl ov4_021E61C8
mov r0, #1
ldmia sp!, {r3, pc}
_021E5FC4:
add r0, sp, #0
bl ov4_021E70C8
ldrb r0, [sp]
bl ov4_021E6344
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end DWC_AC_Destroy
arm_func_start DWC_AC_SetSpecifyApEx
DWC_AC_SetSpecifyApEx: ; 0x021E5FDC
stmfd sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
mov r5, r3
mov r0, #1
mov r7, r1
mov r6, r2
bl ov4_021E62EC
mov r4, r0
cmp r5, #0
mov r2, #0xa
beq _021E6018
mov r0, r5
add r1, r4, #0x18
bl MI_CpuCopy8
b _021E6024
_021E6018:
add r0, r4, #0x18
mov r1, #0
bl MI_CpuFill8
_021E6024:
ldr r3, [sp, #0x18]
mov r0, r8
mov r1, r7
mov r2, r6
strb r3, [r4, #0x22]
bl DWC_AC_SetSpecifyAp
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end DWC_AC_SetSpecifyApEx
arm_func_start DWC_AC_SetSpecifyAp
DWC_AC_SetSpecifyAp: ; 0x021E6040
stmfd sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r0, #0x10
mov r6, r1
mov r5, r2
bl ov4_021E62EC
mov r4, r0
ldrb r3, [r4, #0xd0c]
mov r1, #0
mov r2, #0xf0
bic r3, r3, #0xf
orr r3, r3, #1
strb r3, [r4, #0xd0c]
bl MI_CpuFill8
mov r2, #0
_021E607C:
ldrb r1, [r7, r2]
cmp r1, #0
beq _021E609C
add r0, r4, r2
add r2, r2, #1
strb r1, [r0, #0x40]
cmp r2, #0x20
blt _021E607C
_021E609C:
cmp r6, #0
cmpne r5, #0
bne _021E60B8
ldrb r0, [r4, #0xe6]
bic r0, r0, #3
strb r0, [r4, #0xe6]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_021E60B8:
cmp r5, #1
moveq r2, #5
beq _021E60D0
cmp r5, #2
moveq r2, #0xd
movne r2, #0x10
_021E60D0:
mov r0, r6
add r1, r4, #0x80
bl MI_CpuCopy8
ldrb r1, [r4, #0xe6]
and r0, r5, #0xff
and r0, r0, #3
bic r1, r1, #3
orr r0, r1, r0
strb r0, [r4, #0xe6]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end DWC_AC_SetSpecifyAp
arm_func_start ov4_021E60F8
ov4_021E60F8: ; 0x021E60F8
stmfd sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, #0x10
mov r4, r1
bl ov4_021E62EC
mov r1, r0
mov r0, r4
add r1, r1, r5, lsl #8
mov r2, #0xf0
bl MIi_CpuCopy32
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E60F8
arm_func_start ov4_021E6124
ov4_021E6124: ; 0x021E6124
stmfd sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, #1
mov r4, r1
bl ov4_021E62EC
ldrb r1, [r0, #8]
tst r1, r5
movne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
orr r1, r1, r5
strb r1, [r0, #8]
ldr r2, [r0, #0]
mov r0, r5
mov r1, r4
blx r2
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E6124
arm_func_start ov4_021E6164
ov4_021E6164: ; 0x021E6164
stmfd sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, #1
mov r5, r1
mov r4, r2
bl ov4_021E62EC
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
ldrb r2, [r0, #8]
tst r2, r6
ldmeqia sp!, {r4, r5, r6, pc}
mvn r1, r6
and r1, r2, r1
strb r1, [r0, #8]
ldr r3, [r0, #4]
mov r0, r6
mov r1, r5
mov r2, r4
blx r3
cmp r6, #1
ldreq r0, _021E61C4 ; =0x0221AE2C
moveq r1, #0
streq r1, [r0, #0xc]
ldmia sp!, {r4, r5, r6, pc}
; .align 2, 0
_021E61C4: .word Unk_ov4_0221AE2C
arm_func_end ov4_021E6164
arm_func_start ov4_021E61C8
ov4_021E61C8: ; 0x021E61C8
stmfd sp!, {r4, lr}
mov r0, #1
bl ov4_021E62EC
movs r4, r0
ldmeqia sp!, {r4, pc}
ldrb r0, [r4, #8]
tst r0, #0x10
beq _021E6210
mov r0, #0x10
bl ov4_021E62EC
ldrb r3, [r4, #8]
mov r1, r0
ldr r2, _021E62E4 ; =0x00000D18
bic r0, r3, #0x10
strb r0, [r4, #8]
ldr r3, [r4, #4]
mov r0, #0x10
blx r3
_021E6210:
ldrb r0, [r4, #8]
tst r0, #8
beq _021E6244
mov r0, #8
bl ov4_021E62EC
ldrb r2, [r4, #8]
mov r1, r0
mov r0, #8
bic r2, r2, #8
strb r2, [r4, #8]
ldr r3, [r4, #4]
mov r2, #0xc
blx r3
_021E6244:
ldrb r0, [r4, #8]
tst r0, #4
beq _021E6278
mov r0, #4
bl ov4_021E62EC
ldrb r2, [r4, #8]
mov r1, r0
mov r0, #4
bic r2, r2, #4
strb r2, [r4, #8]
ldr r3, [r4, #4]
mov r2, #0x58
blx r3
_021E6278:
ldrb r0, [r4, #8]
tst r0, #2
beq _021E62AC
mov r0, #2
bl ov4_021E62EC
ldrb r2, [r4, #8]
mov r1, r0
mov r0, #2
bic r2, r2, #2
strb r2, [r4, #8]
ldr r3, [r4, #4]
mov r2, #0x2300
blx r3
_021E62AC:
ldrb r0, [r4, #8]
tst r0, #1
ldmeqia sp!, {r4, pc}
bic r0, r0, #1
strb r0, [r4, #8]
ldr r3, [r4, #4]
mov r1, r4
mov r0, #1
mov r2, #0x24
blx r3
ldr r0, _021E62E8 ; =0x0221AE2C
mov r1, #0
str r1, [r0, #0xc]
ldmia sp!, {r4, pc}
; .align 2, 0
_021E62E4: .word 0x00000D18
_021E62E8: .word Unk_ov4_0221AE2C
arm_func_end ov4_021E61C8
arm_func_start ov4_021E62EC
ov4_021E62EC: ; 0x021E62EC
tst r0, #1
ldrne r0, _021E6340 ; =0x0221AE2C
ldrne r0, [r0, #0xc]
bxne lr
tst r0, #2
ldrne r0, _021E6340 ; =0x0221AE2C
ldrne r0, [r0]
bxne lr
tst r0, #4
ldrne r0, _021E6340 ; =0x0221AE2C
ldrne r0, [r0, #4]
bxne lr
tst r0, #8
ldrne r0, _021E6340 ; =0x0221AE2C
ldrne r0, [r0, #8]
bxne lr
tst r0, #0x10
ldrne r0, _021E6340 ; =0x0221AE2C
ldrne r0, [r0, #0x10]
moveq r0, #0
bx lr
; .align 2, 0
_021E6340: .word Unk_ov4_0221AE2C
arm_func_end ov4_021E62EC
arm_func_start ov4_021E6344
ov4_021E6344: ; 0x021E6344
stmfd sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, #1
bl ov4_021E62EC
mov r5, r0
mov r0, #0x10
bl ov4_021E62EC
mov r4, r0
strb r6, [r5, #9]
cmp r6, #0x10
ldmhsia sp!, {r4, r5, r6, pc}
ldrb r0, [r5, #0x16]
cmp r6, r0
strhib r6, [r5, #0x16]
cmphi r6, #7
ldmlsia sp!, {r4, r5, r6, pc}
ldrb r0, [r4, #0xd0d]
bl ov4_021E64A0
strb r0, [r5, #0x15]
ldrb r0, [r4, #0xd13]
add r0, r4, r0, lsl #2
ldrb r0, [r0, #0x444]
strb r0, [r5, #0x14]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ov4_021E6344
arm_func_start ov4_021E63A4
ov4_021E63A4: ; 0x021E63A4
ldr r0, _021E63BC ; =0x0221AE2C
ldr r0, [r0, #0xc]
cmp r0, #0
ldrneb r0, [r0, #9]
moveq r0, #0
bx lr
; .align 2, 0
_021E63BC: .word Unk_ov4_0221AE2C
arm_func_end ov4_021E63A4
arm_func_start ov4_021E63C0
ov4_021E63C0: ; 0x021E63C0
stmfd sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, #1
bl ov4_021E62EC
mov r4, r0
str r5, [r4, #0xc]
bl ov4_021E63A4
strb r0, [r4, #0xa]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E63C0
arm_func_start ov4_021E63E4
ov4_021E63E4: ; 0x021E63E4
ldr r0, _021E63F4 ; =0x0221AE2C
ldr r0, [r0, #0xc]
ldr r0, [r0, #0xc]
bx lr
; .align 2, 0
_021E63F4: .word Unk_ov4_0221AE2C
arm_func_end ov4_021E63E4
arm_func_start ov4_021E63F8
ov4_021E63F8: ; 0x021E63F8
stmfd sp!, {r4, lr}
ldr r1, _021E649C ; =0x0221AE2C
ldr r1, [r1, #0xc]
ldrb r2, [r1, #0x22]
cmp r2, #0
bne _021E6418
bl ov4_021E64A0
mov r2, r0
_021E6418:
ldr r1, _021E649C ; =0x0221AE2C
mov r0, #0
ldr r1, [r1, #0xc]
strb r2, [r1, #0x17]
bl WCM_GetApEssid
movs r4, r0
beq _021E6450
mov r1, #0x20
bl DC_InvalidateRange
ldr r1, _021E649C ; =0x0221AE2C
mov r0, r4
ldr r1, [r1, #0xc]
add r1, r1, #0x18
bl ov4_021E8654
_021E6450:
ldr r0, _021E649C ; =0x0221AE2C
mov r1, #0
ldr r3, [r0, #0xc]
mov r2, r3
_021E6460:
ldrsb r0, [r2, #0x18]
cmp r0, #0x20
blt _021E6474
cmp r0, #0x7e
ble _021E6488
_021E6474:
add r0, r3, #0x18
mov r1, #0
mov r2, #0xa
bl MI_CpuFill8
ldmia sp!, {r4, pc}
_021E6488:
add r1, r1, #1
cmp r1, #0xa
add r2, r2, #1
blt _021E6460
ldmia sp!, {r4, pc}
; .align 2, 0
_021E649C: .word Unk_ov4_0221AE2C
arm_func_end ov4_021E63F8
arm_func_start ov4_021E64A0
ov4_021E64A0: ; 0x021E64A0
cmp r0, #2
subhi r0, r0, #3
andhi r0, r0, #0xff
bx lr
arm_func_end ov4_021E64A0
arm_func_start ov4_021E64B0
ov4_021E64B0: ; 0x021E64B0
stmfd sp!, {r3, lr}
ldr r1, _021E64E0 ; =0x0221AE2C
mov r0, #8
ldr r1, [r1, #8]
mov r2, #0xc
bl ov4_021E6164
ldr r0, _021E64E0 ; =0x0221AE2C
ldr r2, _021E64E4 ; =0x00000D18
ldr r1, [r0, #0x10]
mov r0, #0x10
bl ov4_021E6164
ldmia sp!, {r3, pc}
; .align 2, 0
_021E64E0: .word Unk_ov4_0221AE2C
_021E64E4: .word 0x00000D18
arm_func_end ov4_021E64B0
arm_func_start ov4_021E64E8
ov4_021E64E8: ; 0x021E64E8
stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r0, _021E6584 ; =0x0221AE2C
mov r1, #0xc0
ldr r8, [r0, #0x10]
ldrb r7, [r8, #0xd13]
ldrb r2, [r8, #0xd0d]
add r0, r8, #0x74
smulbb r4, r7, r1
add r5, r0, #0x400
cmp r2, #6
movhs r0, #1
ldmhsia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
ldrb sb, [r8, #0xd12]
mov r6, #0
cmp sb, #0
bls _021E657C
mov sl, r1
_021E652C:
cmp r6, r7
beq _021E656C
add r0, r8, r6, lsl #2
ldrb r0, [r0, #0x445]
cmp r0, #6
bhs _021E656C
mul r1, r6, sl
add r0, r8, r1
add r0, r0, #0x400
ldrh r2, [r0, #0x7a]
add r0, r5, r4
add r1, r5, r1
bl strncmp
cmp r0, #0
moveq r0, #2
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E656C:
add r0, r6, #1
and r6, r0, #0xff
cmp r6, sb
blo _021E652C
_021E657C:
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
; .align 2, 0
_021E6584: .word Unk_ov4_0221AE2C
arm_func_end ov4_021E64E8
.bss
.global Unk_ov4_0221AE2C
Unk_ov4_0221AE2C: ; 0x0221AE2C
.space 0x4
.global Unk_ov4_0221AE30
Unk_ov4_0221AE30: ; 0x0221AE30
.space 0x4
.global Unk_ov4_0221AE34
Unk_ov4_0221AE34: ; 0x0221AE34
.space 0x4
.global Unk_ov4_0221AE38
Unk_ov4_0221AE38: ; 0x0221AE38
.space 0x4
.global Unk_ov4_0221AE3C
Unk_ov4_0221AE3C: ; 0x0221AE3C
.space 0x4

View File

@ -1,166 +0,0 @@
.include "macros/function.inc"
.include "include/error.inc"
.text
arm_func_start ov4_021E7210
ov4_021E7210: ; 0x021E7210
stmfd sp!, {r3, lr}
mov r0, #1
bl ov4_021E62EC
add r0, r0, #0xa
bl ov4_021E70C8
cmp r0, #1
moveq r0, #0x12
movne r0, #0x11
ldmia sp!, {r3, pc}
arm_func_end ov4_021E7210
arm_func_start ov4_021E7234
ov4_021E7234: ; 0x021E7234
stmfd sp!, {r4, lr}
mov r0, #1
bl ov4_021E62EC
mov r4, r0
bl ov4_021E63E4
cmp r0, #4
bge _021E7258
bl ov4_021E7284
ldmia sp!, {r4, pc}
_021E7258:
cmp r0, #5
bge _021E7268
bl ov4_021E72C8
ldmia sp!, {r4, pc}
_021E7268:
cmp r0, #5
mov r0, r4
bne _021E727C
bl ov4_021E72D0
ldmia sp!, {r4, pc}
_021E727C:
bl ov4_021E72EC
ldmia sp!, {r4, pc}
arm_func_end ov4_021E7234
arm_func_start ov4_021E7284
ov4_021E7284: ; 0x021E7284
cmp r0, #3
addls pc, pc, r0, lsl #2
b _021E72C0
_021E7290: ; jump table
b _021E72A8 ; case 0
b _021E72A0 ; case 1
b _021E72B0 ; case 2
b _021E72B8 ; case 3
_021E72A0:
mvn r0, #8
bx lr
_021E72A8:
mvn r0, #9
bx lr
_021E72B0:
mvn r0, #7
bx lr
_021E72B8:
mvn r0, #6
bx lr
_021E72C0:
mov r0, #0
bx lr
arm_func_end ov4_021E7284
arm_func_start ov4_021E72C8
ov4_021E72C8: ; 0x021E72C8
mvn r0, #5
bx lr
arm_func_end ov4_021E72C8
arm_func_start ov4_021E72D0
ov4_021E72D0: ; 0x021E72D0
ldrb r0, [r0, #0xb]
cmp r0, #0
ldreq r0, _021E72E4 ; =0xFFFF3C4D
ldrne r0, _021E72E8 ; =0xFFFF3865
bx lr
; .align 2, 0
_021E72E4: .word 0xFFFF3C4D
_021E72E8: .word 0xFFFF3865
arm_func_end ov4_021E72D0
arm_func_start ov4_021E72EC
ov4_021E72EC: ; 0x021E72EC
ldrb r1, [r0, #0x22]
ldrb r2, [r0, #0x16]
cmp r1, #0
ldreqb r1, [r0, #0x15]
cmp r2, #0xa
bhs _021E7338
ldrb r0, [r0, #0x14]
cmp r0, #3
ldreq r0, _021E73D4 ; =0xFFFF3864
subeq r0, r0, r1
bxeq lr
cmp r0, #4
ldrne r0, _021E73D8 ; =0xFFFF379C
subne r0, r0, r1
bxne lr
mov r0, #0xc800
rsb r0, r0, #0
sub r0, r0, r1
bx lr
_021E7338:
cmp r2, #0xd
ldrlo r0, _021E73DC ; =0xFFFF34E0
sublo r0, r0, r1
bxlo lr
ldr r0, [r0, #0x10]
cmp r0, #0
ldreq r0, _021E73E0 ; =0xFFFF3CB0
subeq r0, r0, r1
bxeq lr
mvn r3, #0
cmp r0, r3
ldreq r0, _021E73E4 ; =0xFFFF347C
subeq r0, r0, r1
bxeq lr
sub r2, r3, #1
cmp r0, r2
ldreq r0, _021E73E8 ; =0xFFFF3418
subeq r0, r0, r1
bxeq lr
sub r2, r3, #2
cmp r0, r2
ldreq r0, _021E73EC ; =0xFFFF33B4
subeq r0, r0, r1
bxeq lr
sub r2, r3, #3
cmp r0, r2
ldreq r0, _021E73F0 ; =0xFFFF30F8
subeq r0, r0, r1
bxeq lr
sub r2, r3, #4
cmp r0, r2
ldreq r0, _021E73F4 ; =0xFFFF3094
subeq r0, r0, r1
bxeq lr
sub r2, r3, #5
cmp r0, r2
ldreq r0, _021E73F8 ; =0xFFFF3030
subeq r0, r0, r1
bx lr
; .align 2, 0
_021E73D4: .word 0xFFFF3864
_021E73D8: .word 0xFFFF379C
_021E73DC: .word 0xFFFF34E0
_021E73E0: .word 0xFFFF3CB0
_021E73E4: .word 0xFFFF347C
_021E73E8: .word 0xFFFF3418
_021E73EC: .word 0xFFFF33B4
_021E73F0: .word 0xFFFF30F8
_021E73F4: .word 0xFFFF3094
_021E73F8: .word 0xFFFF3030
arm_func_end ov4_021E72EC

View File

@ -1,15 +0,0 @@
.public MIi_CpuClear32
.public MIi_CpuCopy32
.public strncmp
.public ov4_021E62EC
.public ov4_021E63A4
.public ov4_021E66F4
.public ov4_021E6788
.public ov4_021E6804
.public ov4_021E6894
.public ov4_021E695C
.public ov4_021E69A8
.public ov4_021E6A14
.public ov4_021E79A4
.public ov4_021E85F4
.public ov4_021E86A0

View File

@ -1,2 +0,0 @@
.public ov4_021E62EC
.public ov4_021E6588

View File

@ -1,13 +0,0 @@
.public DWC_Netcheck_Destroy
.public DWC_Netcheck_Abort
.public ov4_021E63C0
.public ov4_021E7150
.public ov4_021E71E0
.public SOCL_CalmDown
.public SOC_Cleanup
.public WCM_Finish
.public WCM_CleanupAsync
.public WCM_EndSearchAsync
.public WCM_DisconnectAsync
.public WCM_TerminateAsync
.public WCM_GetPhase

View File

@ -1,18 +0,0 @@
.public OS_GetTick
.public MI_CpuFill8
.public MI_CpuCopy8
.public strncmp
.public ov4_021E62EC
.public ov4_021E63A4
.public ov4_021E66F4
.public ov4_021E6BD4
.public ov4_021E6CCC
.public ov4_021E6E08
.public ov4_021E6FA4
.public ov4_021E6FC0
.public ov4_021E6FDC
.public ov4_021E7490
.public ov4_021E862C
.public ov4_021E86C4
.public WCM_ConnectAsync
.public WCM_GetPhase

View File

@ -1,30 +0,0 @@
.public sub_020A2810
.public DC_InvalidateRange
.public OS_DisableInterrupts
.public OS_RestoreInterrupts
.public MIi_CpuClear32
.public MIi_CpuCopy32
.public MI_CpuFill8
.public MI_CpuCopy8
.public strncmp
.public DWC_AC_SetSpecifyAp
.public ov4_021E6124
.public ov4_021E6164
.public ov4_021E61C8
.public ov4_021E62EC
.public ov4_021E6344
.public ov4_021E63A4
.public ov4_021E64A0
.public ov4_021E64B0
.public ov4_021E64E8
.public ov4_021E6B90
.public ov4_021E70C8
.public ov4_021E7210
.public ov4_021E7234
.public ov4_021E7804
.public ov4_021E78E0
.public ov4_021E80B0
.public ov4_021E8138
.public ov4_021E8654
.public WCM_Init
.public WCM_GetApEssid

View File

@ -1,7 +0,0 @@
.public ov4_021E62EC
.public ov4_021E63E4
.public ov4_021E70C8
.public ov4_021E7284
.public ov4_021E72C8
.public ov4_021E72D0
.public ov4_021E72EC

View File

@ -1,9 +0,0 @@
.public MIi_CpuClear32
.public MI_CpuCopy8
.public strncmp
.public ov4_021E62EC
.public ov4_021E74DC
.public ov4_021E753C
.public ov4_021E7628
.public ov4_021E7730
.public ov4_021E77C0

View File

@ -1,18 +0,0 @@
.public OS_GetTick
.public MI_CpuFill8
.public MI_CpuCopy8
.public _ull_div
.public DWC_Alloc
.public DWC_Free
.public ov4_021E8E98
.public ov4_021E8EA4
.public ov4_021E8F34
.public ov4_021E8F74
.public ov4_021E903C
.public ov4_021E9110
.public ov4_021E95A4
.public ov4_021E95D8
.public ov4_021E95EC
.public ov4_021E9600
.public ov4_021E9614
.public ov4_021E9628

View File

@ -1,7 +0,0 @@
.public ov4_021E62EC
.public ov4_021E63C0
.public ov4_021E7A40
.public WCM_EndSearchAsync
.public WCM_DisconnectAsync
.public WCM_TerminateAsync
.public WCM_GetPhase

View File

@ -1,20 +0,0 @@
.public OS_GetTick
.public _ull_div
.public ov4_021E62EC
.public ov4_021E63A4
.public ov4_021E63C0
.public ov4_021E73FC
.public ov4_021E79D8
.public ov4_021E7A40
.public ov4_021E7B20
.public ov4_021E7B70
.public ov4_021E7C14
.public ov4_021E7C5C
.public ov4_021E7D84
.public ov4_021E7EA4
.public ov4_021E7F68
.public ov4_021E802C
.public ov4_021E808C
.public WCM_SearchAsync
.public WCM_EndSearchAsync
.public WCM_GetPhase

View File

@ -1,10 +0,0 @@
.public MI_CpuCopy8
.public DGT_Hash1Reset
.public DGT_Hash1SetSource
.public DGT_Hash1GetDigest_R
.public memcmp
.public ov4_021E86D4
.public ov4_021E87D8
.public ov4_021E8824
.public ov4_021E89D0
.public ov4_021E8A40

View File

@ -1,6 +0,0 @@
.public ov4_021E62EC
.public ov4_021E63C0
.public ov4_021E6B04
.public ov4_021E73FC
.public WCM_StartupAsync
.public WCM_GetPhase

View File

@ -1,29 +0,0 @@
.public OS_GetTick
.public MI_CpuCopy8
.public _ull_div
.public DWC_Netcheck_Create
.public DWC_Netcheck_Destroy
.public DWC_Netcheck_Abort
.public DWC_Netcheck_GetError
.public DWC_Netcheck_GetReturnCode
.public ov4_021E62EC
.public ov4_021E63A4
.public ov4_021E63C0
.public ov4_021E63F8
.public ov4_021E64A0
.public ov4_021E8234
.public ov4_021E8298
.public ov4_021E8328
.public ov4_021E8354
.public ov4_021E83C0
.public ov4_021E83D4
.public ov4_021E8404
.public ov4_021E84C4
.public ov4_021E8518
.public ov4_021E856C
.public SOCL_CalmDown
.public SOC_GetHostID
.public SOC_SetResolver
.public SOC_Startup
.public SOC_Cleanup
.public WCM_GetPhase

View File

@ -1,18 +0,0 @@
.public CRYPTO_RC4FastInit
.public CRYPTO_RC4FastEncrypt
.public DC_InvalidateRange
.public MI_CpuFill8
.public MI_CpuCopy8
.public WM_GetAllowedChannel
.public WM_GetDispersionScanPeriod
.public WM_Initialize
.public WM_End
.public WM_StartScanEx
.public WM_EndScan
.public MATHi_CRC16InitTableRev
.public MATHi_CRC16UpdateRev
.public MATH_CalcCRC16
.public ov4_021E8BA8
.public ov4_021E8BBC
.public ov4_021E8E98
.public ov4_021E9074

View File

@ -1,29 +0,0 @@
#pragma once
.macro arm_func_start name
.balign 4, 0
.global \name
.type \name, @function
.arm
.endm
.macro arm_func_end name
.size \name, .-\name
.endm
.macro thumb_func_start name
.balign 4, 0
.global \name
.type \name, @function
.thumb
.endm
.macro non_word_aligned_thumb_func_start name
.global \name
.type \name, @function
.thumb
.endm
.macro thumb_func_end name
.size \name, .-\name
.endm

View File

@ -1,344 +0,0 @@
.include "macros/function.inc"
.include "include/makelist.inc"
.text
arm_func_start ov4_021E73FC
ov4_021E73FC: ; 0x021E73FC
stmfd sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, #0x10
bl ov4_021E62EC
mov r4, r0
cmp r5, #0
beq _021E742C
cmp r5, #1
beq _021E744C
cmp r5, #2
beq _021E7464
b _021E7488
_021E742C:
add r1, r4, #0x300
mov r0, #0
mov r2, #0x144
bl MIi_CpuClear32
mov r0, r4
bl ov4_021E74DC
strb r0, [r4, #0xd10]
b _021E7488
_021E744C:
bl ov4_021E7730
strb r0, [r4, #0xd10]
mov r0, r4
bl ov4_021E77C0
strb r0, [r4, #0xd0f]
b _021E7488
_021E7464:
add r1, r4, #0x300
mov r0, #0
mov r2, #0x144
bl MIi_CpuClear32
mov r1, #0
mov r0, r4
strb r1, [r4, #0xd0f]
bl ov4_021E753C
strb r0, [r4, #0xd10]
_021E7488:
ldrb r0, [r4, #0xd10]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E73FC
arm_func_start ov4_021E7490
ov4_021E7490: ; 0x021E7490
stmfd sp!, {r4, lr}
mov r4, r0
mov r0, #0x10
bl ov4_021E62EC
ldrb r0, [r0, #0xd0c]
mov r0, r0, lsl #0x1c
movs r0, r0, lsr #0x1c
cmpne r0, #6
bne _021E74D0
ldr r1, _021E74D8 ; =0x022158A0
add r0, r4, #0xc
mov r2, #8
bl strncmp
cmp r0, #0
moveq r0, #8
ldmeqia sp!, {r4, pc}
_021E74D0:
mov r0, #0
ldmia sp!, {r4, pc}
; .align 2, 0
_021E74D8: .word Unk_ov4_022158A0
arm_func_end ov4_021E7490
arm_func_start ov4_021E74DC
ov4_021E74DC: ; 0x021E74DC
stmfd sp!, {r3, r4, r5, lr}
mov r5, r0
add r4, r5, #0x300
bl ov4_021E7628
ldrb r1, [r5, #0xd0c]
mov r5, r0
mov r0, #0x24
mla r4, r5, r0, r4
mov r1, r1, lsl #0x1c
movs r0, r1, lsr #0x1c
cmpne r0, #6
bne _021E7530
ldr r0, _021E7538 ; =0x022158A0
add r1, r4, #4
mov r2, #8
bl MI_CpuCopy8
mov r1, #8
strb r1, [r4, #3]
add r0, r5, #1
strb r1, [r4, #1]
and r5, r0, #0xff
_021E7530:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
; .align 2, 0
_021E7538: .word Unk_ov4_022158A0
arm_func_end ov4_021E74DC
arm_func_start ov4_021E753C
ov4_021E753C: ; 0x021E753C
stmfd sp!, {r4, r5, r6, lr}
mov r6, r0
add r5, r6, #0x300
bl ov4_021E7628
ldrb r1, [r6, #0xd0c]
mov r4, r0
mov r0, #0x24
mla r5, r4, r0, r5
mov r1, r1, lsl #0x1c
movs r0, r1, lsr #0x1c
cmpne r0, #4
bne _021E7598
ldr r0, _021E761C ; =0x0221760C
add r1, r5, #4
mov r2, #8
bl MI_CpuCopy8
mov r1, #8
add r0, r4, #1
strb r1, [r5, #3]
mov r1, #6
strb r1, [r5, #1]
and r4, r0, #0xff
add r5, r5, #0x24
_021E7598:
ldrb r0, [r6, #0xd0c]
mov r0, r0, lsl #0x1c
movs r0, r0, lsr #0x1c
cmpne r0, #7
bne _021E75D8
ldr r0, _021E7620 ; =0x02215898
add r1, r5, #4
mov r2, #8
bl MI_CpuCopy8
mov r1, #8
add r0, r4, #1
strb r1, [r5, #3]
mov r1, #9
strb r1, [r5, #1]
and r4, r0, #0xff
add r5, r5, #0x24
_021E75D8:
ldrb r0, [r6, #0xd0c]
mov r0, r0, lsl #0x1c
movs r0, r0, lsr #0x1c
cmpne r0, #8
bne _021E7614
ldr r0, _021E7624 ; =0x022158A8
add r1, r5, #4
mov r2, #0xb
bl MI_CpuCopy8
mov r1, #0xb
add r0, r4, #1
strb r1, [r5, #3]
mov r1, #0xa
strb r1, [r5, #1]
and r4, r0, #0xff
_021E7614:
mov r0, r4
ldmia sp!, {r4, r5, r6, pc}
; .align 2, 0
_021E761C: .word Unk_ov4_0221760C
_021E7620: .word Unk_ov4_02215898
_021E7624: .word Unk_ov4_022158A8
arm_func_end ov4_021E753C
arm_func_start ov4_021E7628
ov4_021E7628: ; 0x021E7628
stmfd sp!, {r4, r5, r6, lr}
mov r2, #0
mov r3, r0
mov r1, r2
add ip, r0, #0x300
_021E763C:
ldrb r4, [r0, #0xd0c]
mov r4, r4, lsl #0x1c
movs r5, r4, lsr #0x1c
addne r4, r1, #1
cmpne r5, r4
bne _021E7718
ldrb r4, [r3, #0xe7]
cmp r4, #0xff
beq _021E7718
mov r6, #0
_021E7664:
add r4, r3, r6
ldrb lr, [r4, #0x40]
cmp lr, #0
beq _021E768C
add r4, r6, #1
add r5, ip, r6
and r6, r4, #0xff
strb lr, [r5, #4]
cmp r6, #0x20
blo _021E7664
_021E768C:
cmp r6, #0
moveq r4, #0
beq _021E76A4
strb r6, [ip, #3]
strb r1, [ip, #1]
mov r4, #1
_021E76A4:
cmp r4, #0
ldrb r4, [r3, #0xe7]
addne r2, r2, #1
andne r2, r2, #0xff
addne ip, ip, #0x24
cmp r4, #1
bne _021E7718
mov r6, #0
_021E76C4:
add r4, r3, r6
ldrb r5, [r4, #0x60]
cmp r5, #0
beq _021E76EC
add lr, r6, #1
add r4, ip, r6
and r6, lr, #0xff
strb r5, [r4, #4]
cmp r6, #0x20
blo _021E76C4
_021E76EC:
cmp r6, #0
moveq r4, #0
beq _021E7708
strb r6, [ip, #3]
add lr, r1, #3
strb lr, [ip, #1]
mov r4, #1
_021E7708:
cmp r4, #0
addne r2, r2, #1
andne r2, r2, #0xff
addne ip, ip, #0x24
_021E7718:
add r1, r1, #1
cmp r1, #3
add r3, r3, #0x100
blt _021E763C
mov r0, r2
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ov4_021E7628
arm_func_start ov4_021E7730
ov4_021E7730: ; 0x021E7730
stmfd sp!, {r3, r4, r5, lr}
ldrb r3, [r0, #0xd12]
mov r2, #0
mov r1, r2
cmp r3, #0
ble _021E77B8
add r3, r0, #0x47
mov ip, r0
add r3, r3, #0x400
_021E7754:
add r4, r0, r1, lsl #2
ldrb r4, [r4, #0x444]
cmp r4, #0
bne _021E7794
add lr, ip, #0x400
ldrh r4, [lr, #0xa6]
ldrb lr, [r3]
sub r5, r4, #1
mov r4, lr, lsl #0x19
cmp r5, r4, lsr #25
beq _021E7794
bic lr, lr, #0x80
add r2, r2, #1
strb lr, [r3]
and r2, r2, #0xff
b _021E77A0
_021E7794:
ldrb lr, [r3]
orr lr, lr, #0x80
strb lr, [r3]
_021E77A0:
ldrb lr, [r0, #0xd12]
add r1, r1, #1
add r3, r3, #4
cmp r1, lr
add ip, ip, #0xc0
blt _021E7754
_021E77B8:
mov r0, r2
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E7730
arm_func_start ov4_021E77C0
ov4_021E77C0: ; 0x021E77C0
ldrb ip, [r0, #0xd12]
mov r3, #0
mov r2, r3
cmp ip, #0
bls _021E77FC
_021E77D4:
add r1, r0, r2, lsl #2
ldrb r1, [r1, #0x447]
mov r1, r1, lsl #0x18
movs r1, r1, lsr #0x1f
moveq r3, r2
beq _021E77FC
add r1, r2, #1
and r2, r1, #0xff
cmp r2, ip
blo _021E77D4
_021E77FC:
mov r0, r3
bx lr
arm_func_end ov4_021E77C0
.rodata
.global Unk_ov4_02215898
Unk_ov4_02215898: ; 0x02215898
.ascii "Wayport2"
.global Unk_ov4_022158A0
Unk_ov4_022158A0: ; 0x022158A0
.ascii "FREESPOT"
.global Unk_ov4_022158A8
Unk_ov4_022158A8: ; 0x022158A8
.asciz "NINTENDOWFC"
.data
.global Unk_ov4_0221760C
Unk_ov4_0221760C: ; 0x0221760C
.asciz "NWCUSBAP"

View File

@ -1,375 +0,0 @@
.include "macros/function.inc"
.include "include/nintendospot.inc"
.text
arm_func_start DWC_AC_StartupGetWDSInfo
DWC_AC_StartupGetWDSInfo: ; 0x021E91B4
stmfd sp!, {r4, lr}
mov r4, r0
bl ov4_021E8E98
mov r1, r0
mov r0, #1
bl DWC_Alloc
ldr r2, _021E9210 ; =0x0221AE44
mov r1, #0x790
str r0, [r2, #4]
mov r0, #1
bl DWC_Alloc
ldr r3, _021E9210 ; =0x0221AE44
mov r1, #0
mov r2, #0x790
str r0, [r3, #0]
bl MI_CpuFill8
ldr r1, _021E9210 ; =0x0221AE44
mov r2, #0
ldr r3, [r1, #0]
mov r0, #1
str r4, [r3, #0]
str r2, [r1, #8]
ldmia sp!, {r4, pc}
; .align 2, 0
_021E9210: .word Unk_ov4_0221AE44
arm_func_end DWC_AC_StartupGetWDSInfo
arm_func_start DWC_AC_ProcessGetWDSInfo
DWC_AC_ProcessGetWDSInfo: ; 0x021E9214
stmfd sp!, {r4, r5, r6, r7, r8, lr}
ldr r3, _021E9528 ; =0x0221AE44
ldr r0, [r3, #4]
cmp r0, #0
ldrne r4, [r3]
cmpne r4, #0
moveq r0, #3
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
ldr r1, [r3, #8]
mov r6, #1
cmp r1, #0xb
addls pc, pc, r1, lsl #2
b _021E9520
_021E9248: ; jump table
b _021E9278 ; case 0
b _021E9520 ; case 1
b _021E92A0 ; case 2
b _021E9520 ; case 3
b _021E92F8 ; case 4
b _021E935C ; case 5
b _021E9520 ; case 6
b _021E9384 ; case 7
b _021E9520 ; case 8
b _021E9458 ; case 9
b _021E94F4 ; case 10
b _021E951C ; case 11
_021E9278:
ldr r1, _021E952C ; =ov4_021E95D8
mov r2, #0
str r6, [r3, #8]
bl ov4_021E8EA4
cmp r0, #0
beq _021E9520
ldr r0, _021E9528 ; =0x0221AE44
mov r1, #0xb
str r1, [r0, #8]
b _021E9520
_021E92A0:
ldr r0, _021E9530 ; =ov4_021E95EC
mov r1, #3
str r1, [r3, #8]
bl ov4_021E8F74
cmp r0, #0
bne _021E92E8
ldr r0, _021E9528 ; =0x0221AE44
ldr r1, [r0, #0]
ldr r0, [r1, #8]
ldr r1, [r1, #4]
cmp r0, #0
cmpeq r1, #0
bne _021E9520
bl OS_GetTick
ldr r2, _021E9528 ; =0x0221AE44
ldr r2, [r2, #0]
stmib r2, {r0, r1}
b _021E9520
_021E92E8:
ldr r0, _021E9528 ; =0x0221AE44
mov r1, #0xa
str r1, [r0, #8]
b _021E9520
_021E92F8:
bl OS_GetTick
ldr r3, _021E9528 ; =0x0221AE44
ldr r2, _021E9534 ; =0x000082EA
ldr r4, [r3, #0]
mov r3, #0
ldr r5, [r4, #4]
ldr r4, [r4, #8]
subs r5, r0, r5
sbc r0, r1, r4
mov r1, r0, lsl #6
orr r1, r1, r5, lsr #26
mov r0, r5, lsl #6
bl _ull_div
ldr r2, _021E9538 ; =0x00000BB8
cmp r1, #0
cmpeq r0, r2
bhs _021E934C
ldr r0, _021E9528 ; =0x0221AE44
mov r1, #2
str r1, [r0, #8]
b _021E9520
_021E934C:
ldr r0, _021E9528 ; =0x0221AE44
mov r1, #5
str r1, [r0, #8]
b _021E9520
_021E935C:
ldr r0, _021E953C ; =ov4_021E9600
mov r1, #6
str r1, [r3, #8]
bl ov4_021E903C
cmp r0, #0
beq _021E9520
ldr r0, _021E9528 ; =0x0221AE44
mov r1, #0xa
str r1, [r0, #8]
b _021E9520
_021E9384:
add r0, r4, #0xc
bl ov4_021E9110
cmp r0, #0
mov r4, #0
ldrne r0, _021E9528 ; =0x0221AE44
movne r1, #0xa
strne r1, [r0, #8]
ldr r8, _021E9528 ; =0x0221AE44
sub r1, r4, #1
ldr r0, [r8]
mov r5, r4
mov r7, r4
str r1, [r0, #0x78c]
_021E93B8:
ldr r2, [r8]
add r1, r2, r7
ldr r0, [r1, #0xc]
cmp r0, #0
beq _021E941C
ldrb r0, [r1, #0x78]
tst r0, #2
beq _021E941C
ldrb r0, [r1, #0x77]
cmp r0, #3
bhi _021E941C
add r0, r2, #0x32
add r0, r0, r7
bl ov4_021E95A4
cmp r0, #0
beq _021E941C
ldr r1, [r8]
add r0, r1, r7
ldrh r0, [r0, #0x10]
cmp r0, r5
blo _021E941C
str r4, [r1, #0x78c]
ldr r0, [r8]
add r0, r0, r7
ldrh r5, [r0, #0x10]
_021E941C:
add r4, r4, #1
cmp r4, #0x10
add r7, r7, #0x78
blt _021E93B8
ldr r1, _021E9528 ; =0x0221AE44
mov r2, #8
ldr r0, _021E9540 ; =ov4_021E9614
str r2, [r1, #8]
bl ov4_021E8F34
cmp r0, #0
beq _021E9520
ldr r0, _021E9528 ; =0x0221AE44
mov r1, #0xb
str r1, [r0, #8]
b _021E9520
_021E9458:
ldr r2, [r4, #0x78c]
cmp r2, #0
movlt r0, #0xb
strlt r0, [r3, #8]
blt _021E9520
add r1, r4, #0x12
mov r0, #0x78
mla r0, r2, r0, r1
ldr r1, [r4, #0]
mov r2, #0x20
bl MI_CpuCopy8
ldr r1, _021E9528 ; =0x0221AE44
mov r0, #0x78
ldr r4, [r1, #0]
mov r2, #0x20
ldr r1, [r4, #0]
ldr r3, [r4, #0x78c]
add r4, r4, #0x56
mla r0, r3, r0, r4
add r1, r1, #0x20
bl MI_CpuCopy8
ldr r1, _021E9528 ; =0x0221AE44
mov r0, #0x78
ldr r4, [r1, #0]
mov r2, #0xa
ldr r5, [r4, #0x78c]
ldr r3, [r4, #0]
mla r4, r5, r0, r4
ldrb r4, [r4, #0x77]
str r4, [r3, #0x40]
ldr r4, [r1, #0]
ldr r1, [r4, #0]
ldr r3, [r4, #0x78c]
add r4, r4, #0x32
mla r0, r3, r0, r4
add r1, r1, #0x44
bl MI_CpuCopy8
mov r6, #2
b _021E9520
_021E94F4:
ldr r0, _021E9544 ; =ov4_021E9628
mov r1, #8
str r1, [r3, #8]
bl ov4_021E8F34
cmp r0, #0
beq _021E9520
ldr r0, _021E9528 ; =0x0221AE44
mov r1, #0xb
str r1, [r0, #8]
b _021E9520
_021E951C:
mov r6, #3
_021E9520:
mov r0, r6
ldmia sp!, {r4, r5, r6, r7, r8, pc}
; .align 2, 0
_021E9528: .word Unk_ov4_0221AE44
_021E952C: .word ov4_021E95D8
_021E9530: .word ov4_021E95EC
_021E9534: .word 0x000082EA
_021E9538: .word 0x00000BB8
_021E953C: .word ov4_021E9600
_021E9540: .word ov4_021E9614
_021E9544: .word ov4_021E9628
arm_func_end DWC_AC_ProcessGetWDSInfo
arm_func_start DWC_AC_CleanupGetWDSInfo
DWC_AC_CleanupGetWDSInfo: ; 0x021E9548
stmfd sp!, {r3, lr}
ldr r0, _021E95A0 ; =0x0221AE44
ldr r1, [r0, #4]
cmp r1, #0
beq _021E9574
mov r0, #1
mov r2, #0
bl DWC_Free
ldr r0, _021E95A0 ; =0x0221AE44
mov r1, #0
str r1, [r0, #4]
_021E9574:
ldr r0, _021E95A0 ; =0x0221AE44
ldr r1, [r0, #0]
cmp r1, #0
ldmeqia sp!, {r3, pc}
mov r0, #1
mov r2, #0
bl DWC_Free
ldr r0, _021E95A0 ; =0x0221AE44
mov r1, #0
str r1, [r0, #0]
ldmia sp!, {r3, pc}
; .align 2, 0
_021E95A0: .word Unk_ov4_0221AE44
arm_func_end DWC_AC_CleanupGetWDSInfo
arm_func_start ov4_021E95A4
ov4_021E95A4: ; 0x021E95A4
mov r2, #0
_021E95A8:
ldrb r1, [r0, r2]
cmp r1, #0x20
blo _021E95BC
cmp r1, #0x7e
bls _021E95C4
_021E95BC:
mov r0, #0
bx lr
_021E95C4:
add r2, r2, #1
cmp r2, #0xa
blt _021E95A8
mov r0, #1
bx lr
arm_func_end ov4_021E95A4
arm_func_start ov4_021E95D8
ov4_021E95D8: ; 0x021E95D8
ldr r0, _021E95E8 ; =0x0221AE44
mov r1, #2
str r1, [r0, #8]
bx lr
; .align 2, 0
_021E95E8: .word Unk_ov4_0221AE44
arm_func_end ov4_021E95D8
arm_func_start ov4_021E95EC
ov4_021E95EC: ; 0x021E95EC
ldr r0, _021E95FC ; =0x0221AE44
mov r1, #4
str r1, [r0, #8]
bx lr
; .align 2, 0
_021E95FC: .word Unk_ov4_0221AE44
arm_func_end ov4_021E95EC
arm_func_start ov4_021E9600
ov4_021E9600: ; 0x021E9600
ldr r0, _021E9610 ; =0x0221AE44
mov r1, #7
str r1, [r0, #8]
bx lr
; .align 2, 0
_021E9610: .word Unk_ov4_0221AE44
arm_func_end ov4_021E9600
arm_func_start ov4_021E9614
ov4_021E9614: ; 0x021E9614
ldr r0, _021E9624 ; =0x0221AE44
mov r1, #9
str r1, [r0, #8]
bx lr
; .align 2, 0
_021E9624: .word Unk_ov4_0221AE44
arm_func_end ov4_021E9614
arm_func_start ov4_021E9628
ov4_021E9628: ; 0x021E9628
ldr r0, _021E9638 ; =0x0221AE44
mov r1, #0xb
str r1, [r0, #8]
bx lr
; .align 2, 0
_021E9638: .word Unk_ov4_0221AE44
arm_func_end ov4_021E9628
.bss
.global Unk_ov4_0221AE44
Unk_ov4_0221AE44: ; 0x0221AE44
.space 0x4
.global Unk_ov4_0221AE48
Unk_ov4_0221AE48: ; 0x0221AE48
.space 0x4
.global Unk_ov4_0221AE4C
Unk_ov4_0221AE4C: ; 0x0221AE4C
.space 0x4

View File

@ -1,74 +0,0 @@
.include "macros/function.inc"
.include "include/retry.inc"
.text
arm_func_start ov4_021E7804
ov4_021E7804: ; 0x021E7804
stmfd sp!, {r3, r4, r5, lr}
mov r0, #0x10
bl ov4_021E62EC
mov r4, r0
mov r5, #9
bl WCM_GetPhase
cmp r0, #0xc
addls pc, pc, r0, lsl #2
b _021E78D8
_021E7828: ; jump table
b _021E78D8 ; case 0
b _021E78D8 ; case 1
b _021E78D8 ; case 2
b _021E785C ; case 3
b _021E78D8 ; case 4
b _021E78D8 ; case 5
b _021E78A8 ; case 6
b _021E78D8 ; case 7
b _021E78D8 ; case 8
b _021E78B0 ; case 9
b _021E78D8 ; case 10
b _021E78CC ; case 11
b _021E78B8 ; case 12
_021E785C:
ldrb r0, [r4, #0xd0c]
ldrb r5, [r4, #0xd0e]
mov r0, r0, lsl #0x18
mov r0, r0, lsr #0x1e
cmp r0, #1
bne _021E788C
ldrb r0, [r4, #0xd13]
mov r1, #0
mov r5, #7
add r0, r4, r0, lsl #2
strb r1, [r0, #0x444]
b _021E78D8
_021E788C:
cmp r5, #3
blo _021E78D8
cmp r5, #5
bhi _021E78D8
mov r0, r5
bl ov4_021E7A40
b _021E78D8
_021E78A8:
bl WCM_EndSearchAsync
b _021E78D8
_021E78B0:
bl WCM_DisconnectAsync
b _021E78D8
_021E78B8:
bl WCM_TerminateAsync
mov r0, #4
bl ov4_021E63C0
mov r5, #0x11
b _021E78D8
_021E78CC:
mov r0, #0
bl ov4_021E63C0
mov r5, #0x11
_021E78D8:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E7804

View File

@ -1,608 +0,0 @@
.include "macros/function.inc"
.include "include/search_dwcac.inc"
.extern WCM_Bssid_Any
.extern WCM_Essid_Any
.text
arm_func_start ov4_021E78E0
ov4_021E78E0: ; 0x021E78E0
stmfd sp!, {r3, r4, r5, lr}
mov r0, #0x10
bl ov4_021E62EC
mov r4, r0
bl ov4_021E63A4
mov r5, r0
bl WCM_GetPhase
cmp r5, #2
cmpeq r0, #3
bne _021E7918
mov r0, r4
bl ov4_021E7B20
mov r5, r0
b _021E799C
_021E7918:
cmp r5, #6
bne _021E7934
mov r0, r4
mov r1, r5
bl ov4_021E7F68
mov r5, r0
b _021E799C
_021E7934:
cmp r0, #3
cmpne r0, #6
bne _021E799C
mov r0, r4
mov r1, r5
bl ov4_021E7F68
mov r5, r0
cmp r5, #7
beq _021E799C
cmp r5, #3
bne _021E7970
mov r0, r4
bl ov4_021E7B70
mov r5, r0
b _021E799C
_021E7970:
cmp r5, #4
bne _021E7988
mov r0, r4
bl ov4_021E7C5C
mov r5, r0
b _021E799C
_021E7988:
cmp r5, #5
bne _021E799C
mov r0, r4
bl ov4_021E7D84
mov r5, r0
_021E799C:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E78E0
arm_func_start ov4_021E79A4
ov4_021E79A4: ; 0x021E79A4
stmfd sp!, {r4, lr}
mov r4, r0
mov r0, #0x10
bl ov4_021E62EC
add r0, r0, #0xd00
cmp r4, #0xd
movhi r4, #0xd
ldrh r3, [r0, #0x16]
sub r1, r4, #1
mov r2, #1
orr r1, r3, r2, lsl r1
strh r1, [r0, #0x16]
ldmia sp!, {r4, pc}
arm_func_end ov4_021E79A4
arm_func_start ov4_021E79D8
ov4_021E79D8: ; 0x021E79D8
stmfd sp!, {r4, lr}
mov r4, r0
mov r0, #0x10
bl ov4_021E62EC
add r0, r0, #0xd00
ldrh ip, [r0, #0x16]
cmp ip, #0
mvneq r0, #0
ldmeqia sp!, {r4, pc}
mov r2, #0
mov r3, r2
mov r1, #1
_021E7A08:
tst ip, r1, lsl r2
beq _021E7A28
cmp r3, r4
moveq r0, r2, lsl #0x18
moveq r0, r0, asr #0x18
ldmeqia sp!, {r4, pc}
add r0, r3, #1
and r3, r0, #0xff
_021E7A28:
add r0, r2, #1
and r2, r0, #0xff
cmp r2, #0xd
blo _021E7A08
mvn r0, #0
ldmia sp!, {r4, pc}
arm_func_end ov4_021E79D8
arm_func_start ov4_021E7A40
ov4_021E7A40: ; 0x021E7A40
stmfd sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, #0x10
bl ov4_021E62EC
mov r4, r0
cmp r5, #3
beq _021E7A70
cmp r5, #4
beq _021E7A98
cmp r5, #5
beq _021E7AE4
ldmia sp!, {r3, r4, r5, pc}
_021E7A70:
bl OS_GetTick
str r0, [r4, #0xcb0]
str r1, [r4, #0xcb4]
add r0, r4, #0xd00
ldrsb r2, [r0, #0x11]
ldr r0, _021E7B18 ; =0x02215E48
ldr r1, _021E7B1C ; =0x02215E50
mov r3, #0x200000
bl ov4_021E808C
ldmia sp!, {r3, r4, r5, pc}
_021E7A98:
bl OS_GetTick
str r0, [r4, #0xcb0]
str r1, [r4, #0xcb4]
ldrb r2, [r4, #0xd0f]
mov r0, #0xc0
add r1, r4, #0x74
smulbb ip, r2, r0
add r0, r4, ip
add r0, r0, #0x400
ldrh r2, [r0, #0xa6]
add r0, r4, #0x7c
add r3, r1, #0x400
add r1, r0, #0x400
add r0, r3, ip
add r1, r1, ip
sub r2, r2, #1
mov r3, #0x300000
bl ov4_021E808C
ldmia sp!, {r3, r4, r5, pc}
_021E7AE4:
bl OS_GetTick
str r0, [r4, #0xcb0]
str r1, [r4, #0xcb4]
ldrb r3, [r4, #0xd0f]
add r1, r4, #0x304
mov r0, #0x24
add r2, r4, #0xd00
mla r1, r3, r0, r1
ldrsb r2, [r2, #0x11]
ldr r0, _021E7B18 ; =0x02215E48
mov r3, #0x300000
bl ov4_021E808C
ldmia sp!, {r3, r4, r5, pc}
; .align 2, 0
_021E7B18: .word WCM_Bssid_Any
_021E7B1C: .word WCM_Essid_Any
arm_func_end ov4_021E7A40
arm_func_start ov4_021E7B20
ov4_021E7B20: ; 0x021E7B20
stmfd sp!, {r4, lr}
mov r4, r0
bl OS_GetTick
str r0, [r4, #0xcb0]
str r1, [r4, #0xcb4]
mov r0, #0
strb r0, [r4, #0xd11]
bl OS_GetTick
str r0, [r4, #0xcb0]
str r1, [r4, #0xcb4]
add r0, r4, #0xd00
ldrsb r2, [r0, #0x11]
ldr r0, _021E7B68 ; =0x02215E48
ldr r1, _021E7B6C ; =0x02215E50
mov r3, #0x200000
bl ov4_021E808C
mov r0, #3
ldmia sp!, {r4, pc}
; .align 2, 0
_021E7B68: .word WCM_Bssid_Any
_021E7B6C: .word WCM_Essid_Any
arm_func_end ov4_021E7B20
arm_func_start ov4_021E7B70
ov4_021E7B70: ; 0x021E7B70
stmfd sp!, {r4, lr}
mov r4, r0
bl OS_GetTick
ldr r3, [r4, #0xcb0]
ldr r2, [r4, #0xcb4]
subs r3, r0, r3
sbc r0, r1, r2
mov r1, r0, lsl #6
ldr r2, _021E7C08 ; =0x000082EA
orr r1, r1, r3, lsr #26
mov r0, r3, lsl #6
mov r3, #0
bl _ull_div
cmp r1, #0
cmpeq r0, #0x12c
blo _021E7C00
add r0, r4, #0xd00
ldrsb r1, [r0, #0x11]
add r1, r1, #2
strb r1, [r4, #0xd11]
ldrsb r0, [r0, #0x11]
cmp r0, #0xd
blt _021E7BDC
mov r0, r4
mov r1, #3
bl ov4_021E7EA4
ldmia sp!, {r4, pc}
_021E7BDC:
bl OS_GetTick
str r0, [r4, #0xcb0]
str r1, [r4, #0xcb4]
add r0, r4, #0xd00
ldrsb r2, [r0, #0x11]
ldr r0, _021E7C0C ; =0x02215E48
ldr r1, _021E7C10 ; =0x02215E50
mov r3, #0x200000
bl ov4_021E808C
_021E7C00:
mov r0, #3
ldmia sp!, {r4, pc}
; .align 2, 0
_021E7C08: .word 0x000082EA
_021E7C0C: .word WCM_Bssid_Any
_021E7C10: .word WCM_Essid_Any
arm_func_end ov4_021E7B70
arm_func_start ov4_021E7C14
ov4_021E7C14: ; 0x021E7C14
stmfd sp!, {r4, lr}
mov r4, r0
mov r0, #0
strb r0, [r4, #0xd15]
ldrb r2, [r4, #0xd0b]
mov r1, r2, lsl #0x18
mov r1, r1, lsr #0x1c
add r1, r1, #1
and r1, r1, #0xff
bic r2, r2, #0xf0
mov r1, r1, lsl #0x1c
orr r1, r2, r1, lsr #24
strb r1, [r4, #0xd0b]
bl ov4_021E73FC
mov r0, #1
strb r0, [r4, #0xd11]
mov r0, #3
ldmia sp!, {r4, pc}
arm_func_end ov4_021E7C14
arm_func_start ov4_021E7C5C
ov4_021E7C5C: ; 0x021E7C5C
stmfd sp!, {r4, lr}
mov r4, r0
bl OS_GetTick
ldr r3, [r4, #0xcb0]
ldr r2, [r4, #0xcb4]
subs r3, r0, r3
sbc r0, r1, r2
mov r1, r0, lsl #6
ldr r2, _021E7D80 ; =0x000082EA
orr r1, r1, r3, lsr #26
mov r0, r3, lsl #6
mov r3, #0
bl _ull_div
cmp r1, #0
cmpeq r0, #0x96
bhs _021E7CB8
ldrb r0, [r4, #0xd0f]
add r0, r4, r0, lsl #2
ldrb r0, [r0, #0x447]
mov r0, r0, lsl #0x18
mov r0, r0, lsr #0x1f
cmp r0, #1
bne _021E7D78
_021E7CB8:
ldrb r1, [r4, #0xd0f]
add r0, r4, #0x47
add r2, r0, #0x400
ldrb r0, [r2, r1, lsl #2]
orr r0, r0, #0x80
strb r0, [r2, r1, lsl #2]
ldrb r2, [r4, #0xd12]
ldrb r1, [r4, #0xd0f]
cmp r1, r2
bhs _021E7D10
_021E7CE0:
add r0, r4, r1, lsl #2
ldrb r0, [r0, #0x447]
mov r0, r0, lsl #0x18
movs r0, r0, lsr #0x1f
beq _021E7D10
ldrb r0, [r4, #0xd0f]
add r0, r0, #1
strb r0, [r4, #0xd0f]
ldrb r2, [r4, #0xd12]
and r1, r0, #0xff
cmp r1, r2
blo _021E7CE0
_021E7D10:
cmp r2, r1
bhi _021E7D30
mov r2, #0
mov r0, r4
mov r1, #4
strb r2, [r4, #0xd0f]
bl ov4_021E7EA4
ldmia sp!, {r4, pc}
_021E7D30:
bl OS_GetTick
str r0, [r4, #0xcb0]
str r1, [r4, #0xcb4]
ldrb r2, [r4, #0xd0f]
mov r0, #0xc0
add r1, r4, #0x74
smulbb ip, r2, r0
add r0, r4, ip
add r0, r0, #0x400
ldrh r2, [r0, #0xa6]
add r0, r4, #0x7c
add r3, r1, #0x400
add r1, r0, #0x400
add r0, r3, ip
add r1, r1, ip
sub r2, r2, #1
mov r3, #0x300000
bl ov4_021E808C
_021E7D78:
mov r0, #4
ldmia sp!, {r4, pc}
; .align 2, 0
_021E7D80: .word 0x000082EA
arm_func_end ov4_021E7C5C
arm_func_start ov4_021E7D84
ov4_021E7D84: ; 0x021E7D84
stmfd sp!, {r4, lr}
mov r4, r0
bl OS_GetTick
ldr r3, [r4, #0xcb0]
ldr r2, [r4, #0xcb4]
subs r3, r0, r3
sbc r0, r1, r2
mov r1, r0, lsl #6
ldr r2, _021E7E9C ; =0x000082EA
orr r1, r1, r3, lsr #26
mov r0, r3, lsl #6
mov r3, #0
bl _ull_div
cmp r1, #0
cmpeq r0, #0x96
bhs _021E7DE4
ldrb r1, [r4, #0xd0f]
mov r0, #0x24
mla r0, r1, r0, r4
ldrb r0, [r0, #0x300]
mov r0, r0, lsl #0x1c
mov r0, r0, lsr #0x1c
cmp r0, #1
bne _021E7E94
_021E7DE4:
ldrb r1, [r4, #0xd0f]
mov r0, #0x24
add r2, r4, #0x300
smulbb r1, r1, r0
ldrb r0, [r2, r1]
bic r0, r0, #0xf
strb r0, [r2, r1]
ldrb r0, [r4, #0xd0f]
add r0, r0, #1
strb r0, [r4, #0xd0f]
ldrb r1, [r4, #0xd10]
and r0, r0, #0xff
cmp r1, r0
bhi _021E7E3C
ldrb r1, [r4, #0xd15]
mov r0, #0
add r1, r1, #1
strb r1, [r4, #0xd15]
strb r0, [r4, #0xd0f]
ldrb r0, [r4, #0xd15]
bl ov4_021E79D8
strb r0, [r4, #0xd11]
_021E7E3C:
add r0, r4, #0xd00
ldrsb r0, [r0, #0x11]
cmp r0, #0
bge _021E7E64
mov r2, #0
mov r0, r4
mov r1, #5
strb r2, [r4, #0xd15]
bl ov4_021E7EA4
ldmia sp!, {r4, pc}
_021E7E64:
bl OS_GetTick
str r0, [r4, #0xcb0]
str r1, [r4, #0xcb4]
ldrb r3, [r4, #0xd0f]
add r1, r4, #0x304
mov r0, #0x24
add r2, r4, #0xd00
mla r1, r3, r0, r1
ldrsb r2, [r2, #0x11]
ldr r0, _021E7EA0 ; =0x02215E48
mov r3, #0x300000
bl ov4_021E808C
_021E7E94:
mov r0, #5
ldmia sp!, {r4, pc}
; .align 2, 0
_021E7E9C: .word 0x000082EA
_021E7EA0: .word WCM_Bssid_Any
arm_func_end ov4_021E7D84
arm_func_start ov4_021E7EA4
ov4_021E7EA4: ; 0x021E7EA4
stmfd sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
cmp r4, #3
beq _021E7ECC
cmp r4, #4
beq _021E7F2C
cmp r4, #5
beq _021E7F38
b _021E7F58
_021E7ECC:
ldrb r1, [r5, #0xd12]
cmp r1, #0
addeq r1, r5, #0xd00
ldreqh r1, [r1, #0x16]
cmpeq r1, #0
beq _021E7F08
mov r0, #1
bl ov4_021E73FC
cmp r0, #0
movne r4, #4
bne _021E7F58
mov r0, r5
bl ov4_021E802C
mov r4, r0
b _021E7F58
_021E7F08:
ldrb r1, [r5, #0xd0b]
mov r1, r1, lsl #0x18
mov r1, r1, lsr #0x1c
cmp r1, #1
movhs r4, #6
bhs _021E7F58
bl ov4_021E7C14
mov r4, r0
b _021E7F58
_021E7F2C:
bl ov4_021E802C
mov r4, r0
b _021E7F58
_021E7F38:
ldrb r1, [r5, #0xd0b]
mov r1, r1, lsl #0x18
mov r1, r1, lsr #0x1c
cmp r1, #1
movhs r4, #6
bhs _021E7F58
bl ov4_021E7C14
mov r4, r0
_021E7F58:
mov r0, r4
bl ov4_021E7A40
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E7EA4
arm_func_start ov4_021E7F68
ov4_021E7F68: ; 0x021E7F68
stmfd sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
cmp r4, #0x11
moveq r0, r4
ldmeqia sp!, {r3, r4, r5, pc}
ldrb r2, [r5, #0xd12]
mov r1, #0
cmp r2, #0
bls _021E7FB0
_021E7F90:
add r0, r5, r1, lsl #2
ldrb r0, [r0, #0x444]
cmp r0, #0
beq _021E7FB0
add r0, r1, #1
and r1, r0, #0xff
cmp r1, r2
blo _021E7F90
_021E7FB0:
cmp r4, #6
bne _021E7FE4
cmp r2, r1
bne _021E8010
cmp r1, #0
bne _021E7FD4
mov r0, #5
bl ov4_021E63C0
b _021E7FDC
_021E7FD4:
mov r0, #6
bl ov4_021E63C0
_021E7FDC:
mov r0, #0x11
ldmia sp!, {r3, r4, r5, pc}
_021E7FE4:
cmp r2, #0
moveq r0, r4
ldmeqia sp!, {r3, r4, r5, pc}
cmp r2, r1
moveq r0, r4
ldmeqia sp!, {r3, r4, r5, pc}
add r0, r5, r1, lsl #2
ldrb r0, [r0, #0x446]
cmp r0, #0x14
movlo r0, r4
ldmloia sp!, {r3, r4, r5, pc}
_021E8010:
strb r1, [r5, #0xd13]
bl WCM_EndSearchAsync
cmp r0, #1
strneb r4, [r5, #0xd0e]
movne r4, #7
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E7F68
arm_func_start ov4_021E802C
ov4_021E802C: ; 0x021E802C
stmfd sp!, {r4, lr}
mov r4, r0
add r0, r4, #0xd00
ldrh r0, [r0, #0x16]
cmp r0, #0
beq _021E8068
mov r0, #2
bl ov4_021E73FC
cmp r0, #0
beq _021E8068
mov r0, #0
bl ov4_021E79D8
strb r0, [r4, #0xd11]
mov r0, #5
ldmia sp!, {r4, pc}
_021E8068:
ldrb r0, [r4, #0xd0b]
mov r0, r0, lsl #0x18
mov r0, r0, lsr #0x1c
cmp r0, #1
movhs r0, #6
ldmhsia sp!, {r4, pc}
mov r0, r4
bl ov4_021E7C14
ldmia sp!, {r4, pc}
arm_func_end ov4_021E802C
arm_func_start ov4_021E808C
ov4_021E808C: ; 0x021E808C
stmfd sp!, {r3, lr}
ldr ip, _021E80AC ; =0x022158B4
cmp r2, #0xc
movgt r2, #0xc
ldr r2, [ip, r2, lsl #2]
orr r2, r3, r2
bl WCM_SearchAsync
ldmia sp!, {r3, pc}
; .align 2, 0
_021E80AC: .word Unk_ov4_022158B4
arm_func_end ov4_021E808C
.rodata
.global Unk_ov4_022158B4
Unk_ov4_022158B4: ; 0x022158B4
.incbin "incbin/search_dwcac.bin", 0x0, 0x34

View File

@ -1,519 +0,0 @@
.include "macros/function.inc"
.include "include/shop_usb.inc"
.text
arm_func_start ov4_021E85F4
ov4_021E85F4: ; 0x021E85F4
stmfd sp!, {r3, lr}
sub sp, sp, #0x18
add r1, sp, #0
bl ov4_021E86D4
ldr r1, _021E8628 ; =0x0221768C
add r0, sp, #0
mov r2, #8
bl memcmp
cmp r0, #0
moveq r0, #1
movne r0, #0
add sp, sp, #0x18
ldmia sp!, {r3, pc}
; .align 2, 0
_021E8628: .word Unk_ov4_0221768C
arm_func_end ov4_021E85F4
arm_func_start ov4_021E862C
ov4_021E862C: ; 0x021E862C
stmfd sp!, {r4, lr}
sub sp, sp, #0x18
mov r4, r1
add r1, sp, #0
bl ov4_021E86D4
add r0, sp, #0
mov r1, r4
bl ov4_021E87D8
add sp, sp, #0x18
ldmia sp!, {r4, pc}
arm_func_end ov4_021E862C
arm_func_start ov4_021E8654
ov4_021E8654: ; 0x021E8654
stmfd sp!, {r4, lr}
sub sp, sp, #0x18
mov r4, r1
add r1, sp, #0
bl ov4_021E86D4
ldr r1, _021E869C ; =0x0221768C
add r0, sp, #0
mov r2, #8
bl memcmp
cmp r0, #0
addne sp, sp, #0x18
ldmneia sp!, {r4, pc}
add r0, sp, #8
mov r1, r4
mov r2, #0xa
bl MI_CpuCopy8
add sp, sp, #0x18
ldmia sp!, {r4, pc}
; .align 2, 0
_021E869C: .word Unk_ov4_0221768C
arm_func_end ov4_021E8654
arm_func_start ov4_021E86A0
ov4_021E86A0: ; 0x021E86A0
stmfd sp!, {r3, lr}
ldr r1, _021E86C0 ; =0x02217698
mov r2, #8
bl memcmp
cmp r0, #0
moveq r0, #1
movne r0, #0
ldmia sp!, {r3, pc}
; .align 2, 0
_021E86C0: .word Unk_ov4_02217698
arm_func_end ov4_021E86A0
arm_func_start ov4_021E86C4
ov4_021E86C4: ; 0x021E86C4
ldr ip, _021E86D0 ; =ov4_021E8824
add r0, r0, #0xc
bx ip
; .align 2, 0
_021E86D0: .word ov4_021E8824
arm_func_end ov4_021E86C4
arm_func_start ov4_021E86D4
ov4_021E86D4: ; 0x021E86D4
stmfd sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x18
ldr lr, _021E87D0 ; =0x02215943
add ip, sp, #0
mov r4, r1
mov r3, #0xc
_021E86EC:
ldrb r2, [lr]
ldrb r1, [lr, #1]
add lr, lr, #2
strb r2, [ip]
strb r1, [ip, #1]
add ip, ip, #2
subs r3, r3, #1
bne _021E86EC
mov r1, r4
mov r2, #0x20
mov r3, #0x18
bl ov4_021E8A40
ldr r0, _021E87D4 ; =0x02217624
mov r3, #0
_021E8724:
ldr r1, [r0, #8]
ldrb r2, [r4, r3]
ldrsb r1, [r1, r3]
eor r1, r2, r1
strb r1, [r4, r3]
add r3, r3, #1
cmp r3, #0x18
blt _021E8724
mov r7, #0
add ip, sp, #0
mov r1, #0xff
_021E8750:
and lr, r7, #0xff
ldrb r0, [ip, lr]
mov r5, lr
ldrb r6, [r4, r7]
cmp r0, #0xff
beq _021E8794
_021E8768:
add r3, ip, r5
ldrb r5, [ip, r5]
ldrb r0, [ip, lr]
ldrb r2, [r4, r5]
mov lr, r5
strb r6, [r4, r0]
strb r1, [r3]
ldrb r0, [ip, r5]
mov r6, r2
cmp r0, #0xff
bne _021E8768
_021E8794:
add r7, r7, #1
cmp r7, #0x18
blt _021E8750
ldr r0, _021E87D4 ; =0x02217624
mov r3, #0
_021E87A8:
ldr r1, [r0, #0]
ldrb r2, [r4, r3]
ldrsb r1, [r1, r3]
eor r1, r2, r1
strb r1, [r4, r3]
add r3, r3, #1
cmp r3, #0x18
blt _021E87A8
add sp, sp, #0x18
ldmia sp!, {r3, r4, r5, r6, r7, pc}
; .align 2, 0
_021E87D0: .word Unk_ov4_02215943
_021E87D4: .word Unk_ov4_02217624
arm_func_end ov4_021E86D4
arm_func_start ov4_021E87D8
ov4_021E87D8: ; 0x021E87D8
stmfd sp!, {r4, r5, lr}
sub sp, sp, #0x6c
mov r5, r0
add r0, sp, #0x14
mov r4, r1
bl DGT_Hash1Reset
add r0, sp, #0x14
mov r1, r5
mov r2, #0x18
bl DGT_Hash1SetSource
add r0, sp, #0
add r1, sp, #0x14
bl DGT_Hash1GetDigest_R
add r0, sp, #3
mov r1, r4
mov r2, #0xd
bl MI_CpuCopy8
add sp, sp, #0x6c
ldmia sp!, {r4, r5, pc}
arm_func_end ov4_021E87D8
arm_func_start ov4_021E8824
ov4_021E8824: ; 0x021E8824
stmfd sp!, {r4, lr}
sub sp, sp, #0x10
ldr lr, _021E89C0 ; =0x92492493
mov r4, r1
mov r1, #0
mov ip, #7
_021E883C:
smull r2, r3, lr, r1
add r3, r1, r3
mov r2, r1, lsr #0x1f
add r3, r2, r3, asr #2
smull r2, r3, ip, r3
sub r3, r1, r2
add r2, r0, r3
ldrb r3, [r0, r1]
ldrb r2, [r2, #0xd]
eor r2, r3, r2
strb r2, [r4, r1]
add r1, r1, #1
cmp r1, #0xd
blt _021E883C
mov ip, #0
_021E8878:
add r3, r4, ip
add r1, r0, ip
ldrb r2, [r3, #3]
ldrb r1, [r1, #0xd]
add ip, ip, #1
cmp ip, #7
eor r1, r2, r1
strb r1, [r3, #3]
blt _021E8878
ldr r0, _021E89C4 ; =0x02217624
mov r3, #0
_021E88A4:
ldr r1, [r0, #4]
ldrb r2, [r4, r3]
ldrsb r1, [r1, r3]
eor r1, r2, r1
strb r1, [r4, r3]
add r3, r3, #1
cmp r3, #0xd
blt _021E88A4
add r1, sp, #0
mov r0, r4
mov r2, #0xd
bl MI_CpuCopy8
ldr r3, _021E89C8 ; =0x0221595C
add r2, sp, #0
mov ip, #0
_021E88E0:
ldrb r1, [r2], #1
ldrb r0, [r3], #1
add ip, ip, #1
cmp ip, #0xd
strb r1, [r4, r0]
blt _021E88E0
ldr r0, _021E89C4 ; =0x02217624
mov r3, #0
_021E8900:
ldr r1, [r0, #0xc]
ldrb r2, [r4, r3]
ldrsb r1, [r1, r3]
eor r1, r2, r1
strb r1, [r4, r3]
add r3, r3, #1
cmp r3, #0xd
blt _021E8900
ldr r2, _021E89CC ; =0x0221596C
mov ip, #0
_021E8928:
ldrb r3, [r4, ip]
mov r0, r3, asr #4
and r1, r0, #0xf
and r0, r3, #0xf
ldrb r1, [r2, r1]
ldrb r0, [r2, r0]
orr r0, r0, r1, lsl #4
strb r0, [r4, ip]
add ip, ip, #1
cmp ip, #0xd
blt _021E8928
mov r1, #0
_021E8958:
add r0, r4, r1
ldrb r3, [r4, r1]
ldrb r2, [r0, #6]
eor r2, r3, r2
strb r2, [r4, r1]
ldrb r3, [r0, #3]
ldrb r2, [r0, #9]
eor r2, r3, r2
strb r2, [r0, #3]
ldrb r3, [r0, #6]
and r2, r2, #0xff
eor r2, r3, r2
strb r2, [r0, #6]
ldrb r3, [r0, #9]
ldrb r2, [r4, r1]
eor r2, r3, r2
strb r2, [r0, #9]
ldrb r0, [r4, r1]
ldrb r2, [r4, #0xc]
add r1, r1, #1
cmp r1, #3
eor r0, r2, r0
strb r0, [r4, #0xc]
blt _021E8958
add sp, sp, #0x10
ldmia sp!, {r4, pc}
; .align 2, 0
_021E89C0: .word 0x92492493
_021E89C4: .word Unk_ov4_02217624
_021E89C8: .word Unk_ov4_0221595C
_021E89CC: .word Unk_ov4_0221596C
arm_func_end ov4_021E8824
arm_func_start ov4_021E89D0
ov4_021E89D0: ; 0x021E89D0
cmp r0, #0x41
blo _021E89E4
cmp r0, #0x5a
subls r0, r0, #0x41
bxls lr
_021E89E4:
cmp r0, #0x61
blo _021E89FC
cmp r0, #0x7a
subls r0, r0, #0x61
addls r0, r0, #0x1a
bxls lr
_021E89FC:
cmp r0, #0x30
blo _021E8A14
cmp r0, #0x39
subls r0, r0, #0x30
addls r0, r0, #0x34
bxls lr
_021E8A14:
cmp r0, #0x2b
moveq r0, #0x3e
bxeq lr
cmp r0, #0x2f
moveq r0, #0x3f
bxeq lr
cmp r0, #0x3d
movne r0, #1
moveq r0, #0
rsb r0, r0, #0
bx lr
arm_func_end ov4_021E89D0
arm_func_start ov4_021E8A40
ov4_021E8A40: ; 0x021E8A40
stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x18
add r4, r2, r2, lsl #1
str r0, [sp]
mov r0, r4, lsr #2
str r1, [sp, #4]
cmp r3, r4, lsr #2
str r0, [sp, #8]
blo _021E8A74
and fp, r2, #3
sub r0, r2, fp
str r0, [sp, #0xc]
b _021E8A80
_021E8A74:
add sp, sp, #0x18
mvn r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021E8A80:
cmp r0, #0
mov r7, #0
ble _021E8B08
mov sb, r7
add r5, sp, #0x14
mov r4, #6
_021E8A98:
ldr r0, [sp]
mov r6, #0
mov r8, r6
add sl, r0, r7
_021E8AA8:
ldrb r0, [sl], #1
bl ov4_021E89D0
rsb r1, r8, #3
mul r2, r1, r4
orr r6, r6, r0, lsl r2
add r8, r8, #1
cmp r8, #4
blt _021E8AA8
ldr r0, [sp, #4]
add r1, sb, sb, lsl #1
mov r2, #0
str r6, [sp, #0x14]
add r1, r0, r1
_021E8ADC:
rsb r0, r2, #2
ldrb r0, [r5, r0]
add r2, r2, #1
cmp r2, #3
strb r0, [r1], #1
blt _021E8ADC
ldr r0, [sp, #0xc]
add r7, r7, #4
cmp r7, r0
add sb, sb, #1
blt _021E8A98
_021E8B08:
cmp fp, #0
beq _021E8B9C
mov r5, #0
mov r6, r5
str r5, [sp, #0x10]
ble _021E8B5C
ldr r1, [sp]
ldr r0, [sp, #0xc]
mov r8, r5
add r4, r1, r0
mov r7, #6
_021E8B34:
ldrb r0, [r4], #1
bl ov4_021E89D0
rsb r1, r6, #3
mul r2, r1, r7
orr r5, r5, r0, lsl r2
add r6, r6, #1
cmp r6, fp
orr r8, r8, r5
blt _021E8B34
str r8, [sp, #0x10]
_021E8B5C:
cmp fp, #0
mov r3, #0
ble _021E8B9C
ldr r0, [sp, #0xc]
add r1, r0, r0, lsl #1
mov r0, r1, asr #1
add r1, r1, r0, lsr #30
ldr r0, [sp, #4]
add r2, r0, r1, asr #2
add r1, sp, #0x10
_021E8B84:
rsb r0, r3, #2
ldrb r0, [r1, r0]
add r3, r3, #1
cmp r3, fp
strb r0, [r2], #1
blt _021E8B84
_021E8B9C:
ldr r0, [sp, #8]
add sp, sp, #0x18
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end ov4_021E8A40
.rodata
.global Unk_ov4_02215940
Unk_ov4_02215940: ; 0x02215940
.ascii "aaa"
.global Unk_ov4_02215943
Unk_ov4_02215943: ; 0x02215943
.byte 0x17, 0x14, 0x11, 0xD, 0xB
.byte 0x6, 0xF, 0xE, 0x9, 0x15, 0xC, 0x4, 0x2, 0x1, 0x12, 0x10, 0x5, 0x3, 0x13, 0xA, 0x7
.short 0x8, 0x16
.global Unk_ov4_0221595C
Unk_ov4_0221595C: ; 0x0221595C
.byte 0x5, 0x1, 0xC, 0x4, 0x2, 0x3, 0xA, 0x0, 0xB, 0x7, 0x9, 0x8
.word 0x6
.global Unk_ov4_0221596C
Unk_ov4_0221596C: ; 0x0221596C
.byte 0xA, 0xD, 0xE, 0x8, 0x9, 0x3, 0x6, 0x0, 0xC, 0x5, 0x2, 0x7
.byte 0xB, 0x1, 0xF, 0x4
.data
.global Unk_ov4_02217624
Unk_ov4_02217624: ; 0x02217624
.word Unk_ov4_02217670
.global Unk_ov4_02217628
Unk_ov4_02217628: ; 0x02217628
.word Unk_ov4_02217634
.global Unk_ov4_0221762C
Unk_ov4_0221762C: ; 0x0221762C
.word Unk_ov4_02217654
.global Unk_ov4_02217630
Unk_ov4_02217630: ; 0x02217630
.word Unk_ov4_02217644
.global Unk_ov4_02217634
Unk_ov4_02217634: ; 0x02217634
.asciz "gwi'6&fs=0Nf~"
.space 0x2
.global Unk_ov4_02217644
Unk_ov4_02217644: ; 0x02217644
.asciz "%(egEr)ag(s&m"
.space 0x2
.global Unk_ov4_02217654
Unk_ov4_02217654: ; 0x02217654
.ascii "952uybjnpmu903bia@bk5m[-"
.space 0x4
.global Unk_ov4_02217670
Unk_ov4_02217670: ; 0x02217670
.ascii "38g6zxjk20gvmv]6^=j&%vY1"
.space 0x4
.global Unk_ov4_0221768C
Unk_ov4_0221768C: ; 0x0221768C
.ascii "NDWCSHAP"
.space 0x4
.global Unk_ov4_02217698
Unk_ov4_02217698: ; 0x02217698
.ascii "NWCUSBAP"
.space 0x4

View File

@ -1,49 +0,0 @@
.include "macros/function.inc"
.include "include/start.inc"
.text
arm_func_start ov4_021E80B0
ov4_021E80B0: ; 0x021E80B0
stmfd sp!, {r4, lr}
sub sp, sp, #0x10
bl WCM_GetPhase
mov r4, r0
mov r0, #0x10
bl ov4_021E62EC
cmp r4, #1
bne _021E811C
ldrb r1, [r0, #0xd0a]
mov r0, #0
str r1, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
str r0, [sp, #0xc]
bl ov4_021E73FC
ldr r1, _021E8134 ; =ov4_021E6B04
add r0, sp, #0
bl WCM_StartupAsync
cmp r0, #1
beq _021E8108
cmp r0, #4
blt _021E8128
_021E8108:
mov r0, #1
bl ov4_021E63C0
add sp, sp, #0x10
mov r0, #0x11
ldmia sp!, {r4, pc}
_021E811C:
add sp, sp, #0x10
mov r0, #1
ldmia sp!, {r4, pc}
_021E8128:
mov r0, #2
add sp, sp, #0x10
ldmia sp!, {r4, pc}
; .align 2, 0
_021E8134: .word ov4_021E6B04
arm_func_end ov4_021E80B0

View File

@ -1,394 +0,0 @@
.include "macros/function.inc"
.include "include/test.inc"
.extern SOCLiYieldWait
.text
arm_func_start ov4_021E8138
ov4_021E8138: ; 0x021E8138
stmfd sp!, {r3, r4, r5, lr}
bl ov4_021E63A4
mov r4, r0
mov r0, #0x10
bl ov4_021E62EC
mov r5, r0
bl WCM_GetPhase
cmp r0, #9
bne _021E81DC
sub r0, r4, #0xa
cmp r0, #5
addls pc, pc, r0, lsl #2
b _021E822C
_021E816C: ; jump table
b _021E8184 ; case 0
b _021E81D0 ; case 1
b _021E8194 ; case 2
b _021E81A4 ; case 3
b _021E81B0 ; case 4
b _021E81C0 ; case 5
_021E8184:
mov r0, r5
bl ov4_021E8234
mov r4, r0
b _021E822C
_021E8194:
mov r0, r5
bl ov4_021E8298
mov r4, r0
b _021E822C
_021E81A4:
bl ov4_021E8328
mov r4, r0
b _021E822C
_021E81B0:
mov r0, r5
bl ov4_021E8354
mov r4, r0
b _021E822C
_021E81C0:
mov r0, r5
bl ov4_021E83C0
mov r4, r0
b _021E822C
_021E81D0:
bl ov4_021E83D4
mov r4, r0
b _021E822C
_021E81DC:
cmp r4, #0xb
beq _021E8204
cmp r4, #0xe
beq _021E8210
cmp r4, #0xf
bne _021E8218
mov r0, r5
bl ov4_021E83C0
mov r4, r0
b _021E822C
_021E8204:
bl ov4_021E83D4
mov r4, r0
b _021E822C
_021E8210:
bl DWC_Netcheck_Abort
bl DWC_Netcheck_Destroy
_021E8218:
ldrb r0, [r5, #0xd13]
mov r1, #2
mov r4, #0xb
add r0, r5, r0, lsl #2
strb r1, [r0, #0x444]
_021E822C:
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov4_021E8138
arm_func_start ov4_021E8234
ov4_021E8234: ; 0x021E8234
stmfd sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, #1
bl ov4_021E62EC
mov r5, r0
mov r0, #4
bl ov4_021E62EC
mov r4, r0
mov r0, r5
mov r1, r6
mov r2, r4
bl ov4_021E8404
ldr r1, _021E8294 ; =0x0221DBF0
mov r2, #4
mov r0, r4
str r2, [r1, #0]
bl SOC_Startup
cmp r0, #0
moveq r0, #0xc
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, #2
bl ov4_021E63C0
mov r0, #0x11
ldmia sp!, {r4, r5, r6, pc}
; .align 2, 0
_021E8294: .word SOCLiYieldWait
arm_func_end ov4_021E8234
arm_func_start ov4_021E8298
ov4_021E8298: ; 0x021E8298
stmfd sp!, {r4, lr}
mov r4, r0
bl SOC_GetHostID
cmp r0, #0
beq _021E82D0
mov r0, r4
bl ov4_021E856C
ldrb r0, [r4, #0xd0c]
mov r0, r0, lsl #0x1a
mov r0, r0, lsr #0x1e
cmp r0, #1
moveq r0, #0xf
movne r0, #0xd
ldmia sp!, {r4, pc}
_021E82D0:
bl OS_GetTick
ldr r3, [r4, #0xcb0]
ldr r2, [r4, #0xcb4]
subs r3, r0, r3
sbc r0, r1, r2
mov r1, r0, lsl #6
ldr r2, _021E8324 ; =0x01FF6210
orr r1, r1, r3, lsr #26
mov r0, r3, lsl #6
mov r3, #0
bl _ull_div
cmp r1, #0
cmpeq r0, #0xa
movlo r0, #0xc
ldmloia sp!, {r4, pc}
ldrb r1, [r4, #0xd13]
mov r2, #1
mov r0, #0xb
add r1, r4, r1, lsl #2
strb r2, [r1, #0x444]
ldmia sp!, {r4, pc}
; .align 2, 0
_021E8324: .word 0x01FF6210
arm_func_end ov4_021E8298
arm_func_start ov4_021E8328
ov4_021E8328: ; 0x021E8328
stmfd sp!, {r3, lr}
mov r0, #8
bl ov4_021E62EC
bl DWC_Netcheck_Create
cmp r0, #0
moveq r0, #0xe
ldmeqia sp!, {r3, pc}
mov r0, #3
bl ov4_021E63C0
mov r0, #0x11
ldmia sp!, {r3, pc}
arm_func_end ov4_021E8328
arm_func_start ov4_021E8354
ov4_021E8354: ; 0x021E8354
stmfd sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, #1
bl ov4_021E62EC
mov r4, r0
bl DWC_Netcheck_GetError
movs r5, r0
beq _021E83B8
ldrb r0, [r6, #0xd0d]
bl ov4_021E64A0
ldrb r1, [r4, #0x15]
cmp r1, r0
bne _021E8390
bl DWC_Netcheck_GetReturnCode
str r0, [r4, #0x10]
_021E8390:
bl DWC_Netcheck_Destroy
cmp r5, #0xb
moveq r0, #0xf
ldmeqia sp!, {r4, r5, r6, pc}
ldrb r1, [r6, #0xd13]
mov r2, #1
mov r0, #0xb
add r1, r6, r1, lsl #2
strb r2, [r1, #0x444]
ldmia sp!, {r4, r5, r6, pc}
_021E83B8:
mov r0, #0xe
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ov4_021E8354
arm_func_start ov4_021E83C0
ov4_021E83C0: ; 0x021E83C0
stmfd sp!, {r3, lr}
ldrb r0, [r0, #0xd0d]
bl ov4_021E63F8
mov r0, #0x10
ldmia sp!, {r3, pc}
arm_func_end ov4_021E83C0
arm_func_start ov4_021E83D4
ov4_021E83D4: ; 0x021E83D4
stmfd sp!, {r3, lr}
bl SOCL_CalmDown
cmp r0, #0
movne r0, #0xb
ldmneia sp!, {r3, pc}
bl SOC_Cleanup
cmp r0, #0
mvnne r1, #0x26
cmpne r0, r1
moveq r0, #9
movne r0, #0xb
ldmia sp!, {r3, pc}
arm_func_end ov4_021E83D4
arm_func_start ov4_021E8404
ov4_021E8404: ; 0x021E8404
stmfd sp!, {r4, r5, r6, lr}
mov r6, r0
mov r4, r2
mov r5, r1
ldr r0, _021E84C0 ; =0x022158E8
mov r1, r4
mov r2, #0x58
bl MI_CpuCopy8
ldr r0, [r6, #0]
str r0, [r4, #4]
ldr r0, [r6, #4]
str r0, [r4, #8]
ldrb r0, [r5, #0xd0d]
cmp r0, #6
ldmhsia sp!, {r4, r5, r6, pc}
bl ov4_021E64A0
add r5, r5, r0, lsl #8
ldrb r0, [r5, #0xc0]
cmp r0, #0
beq _021E849C
mov r0, #0
str r0, [r4, #0xc]
add r0, r5, #0xc0
bl ov4_021E84C4
str r0, [r4, #0x10]
ldrb r0, [r5, #0xd0]
bl ov4_021E8518
str r0, [r4, #0x14]
add r0, r5, #0xc4
bl ov4_021E84C4
str r0, [r4, #0x18]
add r0, r5, #0xc8
bl ov4_021E84C4
str r0, [r4, #0x1c]
add r0, r5, #0xcc
bl ov4_021E84C4
str r0, [r4, #0x20]
ldmia sp!, {r4, r5, r6, pc}
_021E849C:
mov r0, #1
str r0, [r4, #0xc]
mov r0, #0
str r0, [r4, #0x10]
str r0, [r4, #0x14]
str r0, [r4, #0x18]
str r0, [r4, #0x1c]
str r0, [r4, #0x20]
ldmia sp!, {r4, r5, r6, pc}
; .align 2, 0
_021E84C0: .word Unk_ov4_022158E8
arm_func_end ov4_021E8404
arm_func_start ov4_021E84C4
ov4_021E84C4: ; 0x021E84C4
ldrb r1, [r0]
ldrb r2, [r0, #1]
mov r3, #0
orr r3, r3, r1, lsl #24
ldrb r1, [r0, #2]
orr r2, r3, r2, lsl #16
ldrb r0, [r0, #3]
orr r1, r2, r1, lsl #8
orr r3, r1, r0
mov r1, r3, lsr #0x18
mov r0, r3, lsr #8
mov r2, r3, lsl #8
mov r3, r3, lsl #0x18
and r1, r1, #0xff
and r0, r0, #0xff00
and r2, r2, #0xff0000
orr r0, r1, r0
and r1, r3, #0xff000000
orr r0, r2, r0
orr r0, r1, r0
bx lr
arm_func_end ov4_021E84C4
arm_func_start ov4_021E8518
ov4_021E8518: ; 0x021E8518
rsb r1, r0, #0x20
cmp r1, #0
mvn r3, #0
mov r0, #0
ble _021E853C
_021E852C:
add r0, r0, #1
cmp r0, r1
mov r3, r3, lsl #1
blt _021E852C
_021E853C:
mov r1, r3, lsr #0x18
mov r0, r3, lsr #8
mov r2, r3, lsl #8
mov r3, r3, lsl #0x18
and r1, r1, #0xff
and r0, r0, #0xff00
and r2, r2, #0xff0000
orr r0, r1, r0
and r1, r3, #0xff000000
orr r0, r2, r0
orr r0, r1, r0
bx lr
arm_func_end ov4_021E8518
arm_func_start ov4_021E856C
ov4_021E856C: ; 0x021E856C
stmfd sp!, {r4, lr}
sub sp, sp, #8
mov r4, r0
ldrb r0, [r4, #0xd0d]
cmp r0, #6
addhs sp, sp, #8
ldmhsia sp!, {r4, pc}
bl ov4_021E64A0
add r4, r4, r0, lsl #8
ldrb r0, [r4, #0xc0]
ldrb r2, [r4, #0xc8]
ldrb r1, [r4, #0xc9]
cmp r0, #0
ldrb r3, [r4, #0xca]
add r1, r2, r1
ldrb r2, [r4, #0xcb]
add r1, r3, r1
addne sp, sp, #8
add r0, r2, r1
ldmneia sp!, {r4, pc}
cmp r0, #0
addeq sp, sp, #8
ldmeqia sp!, {r4, pc}
add r0, r4, #0xc8
bl ov4_021E84C4
str r0, [sp, #4]
add r0, r4, #0xcc
bl ov4_021E84C4
str r0, [sp]
add r0, sp, #4
add r1, sp, #0
bl SOC_SetResolver
add sp, sp, #8
ldmia sp!, {r4, pc}
arm_func_end ov4_021E856C
.rodata
.global Unk_ov4_022158E8
Unk_ov4_022158E8: ; 0x022158E8
.incbin "incbin/test.bin", 0x0, 0x48
.word Unk_ov4_02217618
.word 0x4, 0x0, 0x0
.data
.global Unk_ov4_02217618
Unk_ov4_02217618: ; 0x02217618
.asciz "NINTENDO-DS"

View File

@ -1,466 +0,0 @@
.include "macros/function.inc"
.include "include/wds.inc"
.text
arm_func_start ov4_021E8BA8
ov4_021E8BA8: ; 0x021E8BA8
tst r0, #2
mov r0, r0, asr #2
addeq r0, r0, #0x19
and r0, r0, #0xff
bx lr
arm_func_end ov4_021E8BA8
arm_func_start ov4_021E8BBC
ov4_021E8BBC: ; 0x021E8BBC
stmfd sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x410
ldr r1, _021E8E8C ; =0x0221AE40
mov r6, r0
ldr r0, [r1, #0]
mov r1, #0x400
add r0, r0, #0xf00
bl DC_InvalidateRange
ldrh r0, [r6, #2]
cmp r0, #0
ldreqh r0, [r6, #8]
cmpeq r0, #5
bne _021E8E50
ldrh r0, [r6, #0xe]
mov r5, #0
cmp r0, #0
bls _021E8E50
_021E8C00:
add r0, r6, r5, lsl #2
ldr r0, [r0, #0x10]
ldrh r1, [r0, #0x40]
cmp r1, #1
ldreq r2, [r0, #0x44]
ldreq r1, _021E8E90 ; =0x00000857
cmpeq r2, r1
bne _021E8E40
ldr r1, _021E8E8C ; =0x0221AE40
mov r4, #0
ldr ip, [r1]
mov r3, r4
add r2, ip, #0x1000
ldr r1, [r2, #0xa88]
cmp r1, #0
bls _021E8C6C
ldrh r7, [r0, #0x48]
_021E8C44:
add r1, ip, r3, lsl #1
add r1, r1, #0x1a00
ldrh r1, [r1, #0x68]
cmp r1, r7
moveq r4, #1
beq _021E8C6C
ldr r1, [r2, #0xa88]
add r3, r3, #1
cmp r3, r1
blo _021E8C44
_021E8C6C:
cmp r4, #1
beq _021E8E40
ldr r1, _021E8E8C ; =0x0221AE40
mov r2, #0x70
ldr r1, [r1, #0]
add r0, r0, #0x50
add r3, r1, #0x1000
add r1, r1, #0x348
ldr r3, [r3, #0xa8c]
add r1, r1, #0x1000
mla r1, r3, r2, r1
bl MI_CpuCopy8
ldr r0, _021E8E94 ; =0x0221597C
add r1, sp, #0
mov r2, #4
bl MI_CpuCopy8
add r0, r6, r5, lsl #2
ldr r0, [r0, #0x10]
add r1, sp, #4
add r0, r0, #6
mov r2, #4
bl MI_CpuCopy8
add r0, sp, #8
add r1, sp, #0
mov r2, #8
bl CRYPTO_RC4FastInit
ldr r0, _021E8E8C ; =0x0221AE40
mov r2, #0x70
ldr r3, [r0, #0]
add r0, sp, #8
add r1, r3, #0x348
add r4, r1, #0x1000
add r1, r3, #0x1000
ldr r1, [r1, #0xa8c]
mul r3, r1, r2
add r1, r4, r3
add r3, r4, r3
bl CRYPTO_RC4FastEncrypt
ldr r0, _021E8E8C ; =0x0221AE40
mov r1, #0x70
ldr ip, [r0]
mov r3, #0x6e
add r0, ip, #0x348
add r4, r0, #0x1000
add r0, ip, #0x1000
ldr r2, [r0, #0xa8c]
add r0, ip, #0x96
mul r7, r2, r1
add r1, ip, #0x294
add r0, r0, #0x1a00
add r1, r1, #0x1800
add r2, r4, r7
bl MATHi_CRC16UpdateRev
ldr r0, _021E8E8C ; =0x0221AE40
add r1, r4, r7
ldr r0, [r0, #0]
mov r2, #0x6e
add r0, r0, #0x96
add r0, r0, #0x1a00
bl MATH_CalcCRC16
ldr r1, _021E8E8C ; =0x0221AE40
mov r2, #0x70
ldr r4, [r1, #0]
add r1, r4, #0x1000
ldr r1, [r1, #0xa8c]
mul r3, r1, r2
add r1, r4, r3
add r1, r1, #0x1300
ldrh r1, [r1, #0xb6]
cmp r0, r1
cmpne r1, #0
beq _021E8DA4
add r0, r4, #0x348
add r0, r0, #0x1000
add r0, r0, r3
mov r1, #0
bl MI_CpuFill8
b _021E8E40
_021E8DA4:
add r0, r6, r5, lsl #2
ldr r0, [r0, #0x10]
ldrh r0, [r0, #2]
and r0, r0, #0xff
bl ov4_021E8BA8
add r1, r4, #0x1000
ldr r1, [r1, #0xa8c]
ldr r3, _021E8E8C ; =0x0221AE40
add r1, r4, r1, lsl #1
add r1, r1, #0x1a00
strh r0, [r1, #0x48]
ldr r2, [r3, #0]
add r1, r6, r5, lsl #2
add r0, r2, #0x1000
ldr r1, [r1, #0x10]
ldr r0, [r0, #0xa8c]
ldrh r1, [r1, #0x48]
add r0, r2, r0, lsl #1
add r0, r0, #0x1a00
strh r1, [r0, #0x68]
ldr r0, [r3, #0]
add r2, r0, #0x1000
ldr r0, [r2, #0xa8c]
add r0, r0, #1
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #28
add r0, r1, r0, ror #28
str r0, [r2, #0xa8c]
ldr r0, [r3, #0]
add r0, r0, #0x1000
ldr r1, [r0, #0xa88]
add r1, r1, #1
str r1, [r0, #0xa88]
ldr r0, [r3, #0]
add r0, r0, #0x1000
ldr r1, [r0, #0xa88]
cmp r1, #0x10
movgt r1, #0x10
strgt r1, [r0, #0xa88]
_021E8E40:
ldrh r0, [r6, #0xe]
add r5, r5, #1
cmp r5, r0
blo _021E8C00
_021E8E50:
ldr r1, _021E8E8C ; =0x0221AE40
mov r2, #2
ldr r0, [r1, #0]
add r0, r0, #0x1000
str r2, [r0, #0xa90]
ldr r0, [r1, #0]
add r0, r0, #0x1000
ldr r1, [r0, #0x344]
cmp r1, #0
addeq sp, sp, #0x410
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r6
blx r1
add sp, sp, #0x410
ldmia sp!, {r3, r4, r5, r6, r7, pc}
; .align 2, 0
_021E8E8C: .word Unk_ov4_0221AE40
_021E8E90: .word 0x00000857
_021E8E94: .word Unk_ov4_0221597C
arm_func_end ov4_021E8BBC
arm_func_start ov4_021E8E98
ov4_021E8E98: ; 0x021E8E98
ldr r0, _021E8EA0 ; =0x00001CA0
bx lr
; .align 2, 0
_021E8EA0: .word 0x00001CA0
arm_func_end ov4_021E8E98
arm_func_start ov4_021E8EA4
ov4_021E8EA4: ; 0x021E8EA4
stmfd sp!, {r3, r4, r5, lr}
movs r5, r1
mov r4, r2
mvneq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldr r1, _021E8F2C ; =0x0221AE40
str r0, [r1, #0]
bl ov4_021E8E98
ldr r1, _021E8F2C ; =0x0221AE40
mov r2, r0
ldr r0, [r1, #0]
mov r1, #0
bl MI_CpuFill8
ldr r2, _021E8F2C ; =0x0221AE40
mov r3, #0
ldr r0, [r2, #0]
ldr r1, _021E8F30 ; =0x0000A001
add r0, r0, #0x1000
str r3, [r0, #0xa90]
ldr r0, [r2, #0]
add r0, r0, #0x1a00
strh r3, [r0, #0x94]
ldr r0, [r2, #0]
add r0, r0, #0x96
add r0, r0, #0x1a00
bl MATHi_CRC16InitTableRev
ldr r0, _021E8F2C ; =0x0221AE40
mov r1, r5
ldr r0, [r0, #0]
mov r2, r4
bl WM_Initialize
cmp r0, #2
moveq r0, #0
ldmia sp!, {r3, r4, r5, pc}
; .align 2, 0
_021E8F2C: .word Unk_ov4_0221AE40
_021E8F30: .word 0x0000A001
arm_func_end ov4_021E8EA4
arm_func_start ov4_021E8F34
ov4_021E8F34: ; 0x021E8F34
stmfd sp!, {r3, lr}
cmp r0, #0
mvneq r0, #0
ldmeqia sp!, {r3, pc}
ldr r2, _021E8F70 ; =0x0221AE40
mov ip, #3
ldr r1, [r2, #0]
mov r3, #0
add r1, r1, #0x1000
str ip, [r1, #0xa90]
str r3, [r2, #0]
bl WM_End
cmp r0, #2
moveq r0, #0
ldmia sp!, {r3, pc}
; .align 2, 0
_021E8F70: .word Unk_ov4_0221AE40
arm_func_end ov4_021E8F34
arm_func_start ov4_021E8F74
ov4_021E8F74: ; 0x021E8F74
stmfd sp!, {r4, lr}
movs r4, r0
mvneq r0, #0
ldmeqia sp!, {r4, pc}
ldr r1, _021E9034 ; =0x0221AE40
mov r2, #0x400
ldr r0, [r1, #0]
add r3, r0, #0xf00
add r0, r0, #0x1000
str r3, [r0, #0x300]
ldr r0, [r1, #0]
add r0, r0, #0x1300
strh r2, [r0, #4]
bl WM_GetAllowedChannel
ldr r1, _021E9034 ; =0x0221AE40
ldr r1, [r1, #0]
add r1, r1, #0x1300
strh r0, [r1, #6]
bl WM_GetDispersionScanPeriod
ldr r3, _021E9034 ; =0x0221AE40
mov ip, #1
ldr r2, [r3, #0]
mov r1, #0xff
add r2, r2, #0x1300
strh r0, [r2, #8]
ldr r0, [r3, #0]
mov r2, #6
add r0, r0, #0x1300
strh ip, [r0, #0x10]
ldr r0, [r3, #0]
add r0, r0, #0xa
add r0, r0, #0x1300
bl MI_CpuFill8
ldr r2, _021E9034 ; =0x0221AE40
mov r3, #1
ldr r1, [r2, #0]
ldr r0, _021E9038 ; =ov4_021E8BBC
add r1, r1, #0x1000
str r4, [r1, #0x344]
ldr r1, [r2, #0]
add r1, r1, #0x1000
str r3, [r1, #0xa90]
ldr r1, [r2, #0]
add r1, r1, #0x1300
bl WM_StartScanEx
cmp r0, #2
moveq r0, #0
ldmia sp!, {r4, pc}
; .align 2, 0
_021E9034: .word Unk_ov4_0221AE40
_021E9038: .word ov4_021E8BBC
arm_func_end ov4_021E8F74
arm_func_start ov4_021E903C
ov4_021E903C: ; 0x021E903C
stmfd sp!, {r3, lr}
cmp r0, #0
mvneq r0, #0
ldmeqia sp!, {r3, pc}
ldr r1, _021E9070 ; =0x0221AE40
mov r2, #2
ldr r1, [r1, #0]
add r1, r1, #0x1000
str r2, [r1, #0xa90]
bl WM_EndScan
cmp r0, #2
moveq r0, #0
ldmia sp!, {r3, pc}
; .align 2, 0
_021E9070: .word Unk_ov4_0221AE40
arm_func_end ov4_021E903C
arm_func_start ov4_021E9074
ov4_021E9074: ; 0x021E9074
stmfd sp!, {r3, r4, r5, lr}
ldr r2, _021E910C ; =0x0221AE40
mov r5, r0
ldr r0, [r2, #0]
mov r4, r1
add r0, r0, #0x1000
ldr r1, [r0, #0xa90]
cmp r1, #2
mvnne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
cmp r5, #0
blt _021E90B0
ldr r0, [r0, #0xa88]
cmp r5, r0
blt _021E90B8
_021E90B0:
mvn r0, #0
ldmia sp!, {r3, r4, r5, pc}
_021E90B8:
mov r0, r4
mov r1, #0
mov r2, #0x78
bl MI_CpuFill8
mov r0, #1
ldr r3, _021E910C ; =0x0221AE40
str r0, [r4, #0]
ldr r0, [r3, #0]
mov r2, #0x70
add r0, r0, r5, lsl #1
add r0, r0, #0x1a00
ldrh r0, [r0, #0x48]
add r1, r4, #6
strh r0, [r4, #4]
ldr r0, [r3, #0]
add r0, r0, #0x348
add r0, r0, #0x1000
mla r0, r5, r2, r0
bl MI_CpuCopy8
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
; .align 2, 0
_021E910C: .word Unk_ov4_0221AE40
arm_func_end ov4_021E9074
arm_func_start ov4_021E9110
ov4_021E9110: ; 0x021E9110
stmfd sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _021E91B0 ; =0x0221AE40
mov r5, r0
ldr r1, [r1, #0]
add r1, r1, #0x1000
ldr r1, [r1, #0xa90]
cmp r1, #2
mvnne r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
mov r1, #0
mov r2, #0x780
bl MI_CpuFill8
mov r0, #0
mov r1, r5
mov r4, r0
_021E914C:
add r0, r0, #1
cmp r0, #0x10
str r4, [r1, #0], #0x78
blt _021E914C
ldr r7, _021E91B0 ; =0x0221AE40
ldr r0, [r7, #0]
add r0, r0, #0x1000
ldr r0, [r0, #0xa88]
cmp r0, #0
ble _021E91A8
mvn r6, #0
_021E9178:
mov r0, r4
mov r1, r5
bl ov4_021E9074
cmp r0, r6
beq _021E91A8
ldr r0, [r7, #0]
add r4, r4, #1
add r0, r0, #0x1000
ldr r0, [r0, #0xa88]
add r5, r5, #0x78
cmp r4, r0
blt _021E9178
_021E91A8:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
; .align 2, 0
_021E91B0: .word Unk_ov4_0221AE40
arm_func_end ov4_021E9110
.rodata
.global Unk_ov4_0221597C
Unk_ov4_0221597C: ; 0x0221597C
.ascii "!SDW"
.bss
.global Unk_ov4_0221AE40
Unk_ov4_0221AE40: ; 0x0221AE40
.space 0x4

View File

@ -1,25 +0,0 @@
libdwcac_srcs = files(
'asm/dwc_ac.s',
'asm/beacon.s',
'asm/callback.s',
'asm/connect.s',
'asm/close.s',
'asm/error.s',
'asm/makelist.s',
'asm/retry.s',
'asm/search_dwcac.s',
'asm/start.s',
'asm/test.s',
'asm/shop_usb.s',
'asm/wds.s',
'asm/nintendospot.s'
)
libdwcac = static_library('dwcac',
sources: libdwcac_srcs,
nasm_args: asm_args,
include_directories: public_includes,
pic: false
)
nitrodwc_libs += libdwcac

View File

@ -1,20 +0,0 @@
libdwcaccount_srcs = files(
'src/dwc_init.c',
'src/dwc_account.c'
)
libdwcaccount = static_library('dwcaccount',
sources: [libdwcaccount_srcs],
c_args: [c_args, sdk_args],
dependencies: [
gamespy_dep,
nitrosdk_dep,
nitrosystem_dep,
nitrowifi_dep
],
include_directories: [public_includes],
c_pch: nitro_pch,
pic: false
)
nitrodwc_libs += libdwcaccount

View File

@ -1,492 +0,0 @@
#include <base/dwc_account.h>
#include <bm/util_wifiidtool.h>
#include <nitro.h>
#define DWCi_CHECK_FLAG(flag, mask) ((flag & mask) == mask)
static inline u32 DWCi_Acc_GetMaskBits (u32 data, u32 shift, u32 mask) {
return (data >> shift) & mask;
}
static BOOL DWCi_Acc_SetMaskBits (u32 * ptr, u32 data, u32 shift, u32 mask) {
if ((data & ~mask) != 0) {
return FALSE;
}
*ptr = (*ptr & ~(mask << shift)) | (data << shift);
return TRUE;
}
u64 DWCi_Acc_GetUserId (const DWCAccLoginId * userdata) {
u32 hi32;
hi32 = DWCi_Acc_GetMaskBits(userdata->id_data, DWC_ACC_USERID_HI32_SHIFT, DWC_ACC_USERID_HI32_MASK);
return (u64)hi32 << 32 | userdata->userid_lo32;
}
u32 DWCi_Acc_GetPlayerId (const DWCAccLoginId * userdata) {
return userdata->playerid;
}
u64 DWCi_Acc_GetFriendKey (const DWCAccFriendKey * data) {
return (u64)data->friendkey_hi32 << 32 | data->friendkey_lo32;
}
int DWCi_Acc_GetGsProfileId (const DWCAccGsProfileId * data) {
return data->id;
}
void DWCi_Acc_SetUserId (DWCAccLoginId * userdata, u64 userid) {
if (!DWCi_Acc_SetMaskBits(&userdata->id_data, (u32)(userid >> 32), DWC_ACC_USERID_HI32_SHIFT, DWC_ACC_USERID_HI32_MASK)) {
}
userdata->userid_lo32 = (u32)userid;
}
void DWCi_Acc_SetPlayerId (DWCAccLoginId * userdata, u32 playerid) {
userdata->playerid = playerid;
}
void DWCi_Acc_SetFriendKey (DWCAccFriendKey * data, u64 friendkey) {
data->friendkey_lo32 = (u32)friendkey;
data->friendkey_hi32 = (u32)(friendkey >> 32);
}
void DWCi_Acc_SetGsProfileId (DWCAccGsProfileId * data, int gs_profile_id) {
data->id = gs_profile_id;
}
static u32 DWCi_Acc_GetFlags (const DWCAccFlag * userdata) {
return DWCi_Acc_GetMaskBits(userdata->flags, DWC_ACC_FLAGS_SHIFT, DWC_ACC_FLAGS_MASK);
}
static u32 DWCi_Acc_GetFlag_DataType (const DWCAccFlag * userdata) {
return DWCi_Acc_GetFlags(userdata) & DWC_ACC_FRIENDDATA_MASK;
}
BOOL DWC_IsBuddyFriendData (const DWCAccFriendData * frienddata) {
if (DWCi_Acc_GetFlag_DataType(&frienddata->flags) == DWC_ACC_FRIENDDATA_GS_PROFILE_ID) {
u32 type;
type = DWCi_Acc_GetFlags(&frienddata->flags);
return (DWCi_CHECK_FLAG(type, DWC_ACC_FRIENDDATA_ISBUDDY)) ? TRUE : FALSE;
}
return FALSE;
}
int DWC_GetFriendDataType (const DWCAccFriendData * frienddata) {
return (int)DWCi_Acc_GetFlag_DataType(&frienddata->flags);
}
static void DWCi_Acc_SetFlags (DWCAccFlag * userdata, u32 flags) {
DWCi_Acc_SetMaskBits(&userdata->flags, flags, DWC_ACC_FLAGS_SHIFT, DWC_ACC_FLAGS_MASK);
}
static void DWCi_Acc_SetFlag_DataType (DWCAccFlag * userdata, int type) {
u32 flags;
flags = DWCi_Acc_GetFlags(userdata);
flags = (flags & ~DWC_ACC_FRIENDDATA_MASK) | type;
DWCi_Acc_SetFlags(userdata, flags);
}
void DWCi_SetBuddyFriendData (DWCAccFriendData * frienddata) {
if (DWCi_Acc_GetFlag_DataType(&frienddata->flags) == DWC_ACC_FRIENDDATA_GS_PROFILE_ID) {
u32 flags;
flags = DWCi_Acc_GetFlags(&frienddata->flags);
flags = (flags & ~DWC_ACC_FRIENDDATA_ISBUDDY_MASK) | DWC_ACC_FRIENDDATA_ISBUDDY;
DWCi_Acc_SetFlags(&frienddata->flags, flags);
}
}
void DWC_ClearBuddyFlagFriendData (DWCAccFriendData * frienddata) {
if (DWCi_Acc_GetFlag_DataType(&frienddata->flags) == DWC_ACC_FRIENDDATA_GS_PROFILE_ID) {
u32 flags;
flags = DWCi_Acc_GetFlags(&frienddata->flags);
flags &= ~DWC_ACC_FRIENDDATA_ISBUDDY_MASK;
DWCi_Acc_SetFlags(&frienddata->flags, flags);
}
}
u64 DWC_Acc_CreateFriendKey (int gs_profile_id, u32 gamecode) {
MATHCRC8Table table;
u32 code[2];
int crc;
code[0] = (u32)gs_profile_id;
code[1] = gamecode;
MATH_CRC8InitTable(&table);
crc = MATH_CalcCRC8(&table, code, sizeof(code)) & 0x7f;
return ((u64)crc << 32) | (u32)gs_profile_id;
}
BOOL DWC_CheckFriendKey (const DWCAccUserData * userdata, u64 friendkey) {
return DWC_Acc_CheckFriendKey(friendkey, userdata->gamecode);
}
BOOL DWC_Acc_CheckFriendKey (u64 friendkey, u32 gamecode) {
MATHCRC8Table table;
u32 code[2];
int crc;
if (friendkey & 0x80000000) {
return FALSE;
}
code[0] = (u32)friendkey;
code[1] = gamecode;
MATH_CRC8InitTable(&table);
crc = MATH_CalcCRC8(&table, code, sizeof(code)) & 0x7f;
if (crc != (friendkey >> 32)) {
return FALSE;
}
return TRUE;
}
int DWC_Acc_FriendKeyToGsProfileId (u64 friendkey, u32 gamecode) {
if (!DWC_Acc_CheckFriendKey(friendkey, gamecode)) {
return 0;
}
return (int)(friendkey & 0xffffffff);
}
void DWC_FriendKeyToString (char * string, u64 friendKey) {
OS_SNPrintf(string, DWC_ACC_FRIENDKEY_STRING_BUFSIZE, "%012llu", friendKey);
}
u64 DWC_StringToFriendKey (const char * string) {
int i;
u64 result = 0;
u64 dec = 1;
for (i = 0 ; i < DWC_ACC_FRIENDKEY_STRING_LENGTH ; ++i) {
char tmp = *(string + DWC_ACC_FRIENDKEY_STRING_LENGTH - 1 - i);
if ((tmp < '0') || (tmp > '9')) {
return 0;
}
result += (tmp - '0') * dec;
dec *= 10;
}
return result;
}
static void DWCi_Acc_U64ToString32 (u64 num, int bitnum, char * result) {
int i;
const int loopnum = (bitnum + 4) / 5;
const char * const sStringTable = "0123456789abcdefghijklmnopqrstuv";
for (i = 0 ; i < loopnum ; ++i) {
*(result + loopnum - 1 - i) = *(sStringTable + (num & 0x1f));
num >>= 5;
}
*(result + loopnum) = 0;
}
void DWCi_Acc_LoginIdToUserName (const DWCAccLoginId * loginid, u32 gamecode, char * username) {
char userid[DWC_ACC_USERNAME_STRING_BUFSIZE];
char playerid[DWC_ACC_USERNAME_STRING_BUFSIZE];
DWCi_Acc_U64ToString32(DWCi_Acc_GetUserId(loginid), DWC_ACC_USERID_BITS, userid);
DWCi_Acc_U64ToString32(DWCi_Acc_GetPlayerId(loginid), DWC_ACC_PLAYERID_BITS, playerid);
OS_SNPrintf(username, DWC_ACC_USERNAME_STRING_BUFSIZE, "%s%c%c%c%c%s", userid, (u8)(gamecode >> 24), (u8)(gamecode >> 16), (u8)(gamecode >> 8), (u8)gamecode, playerid);
}
void DWCi_Acc_CreateUserData (DWCAccUserData * userdata, u32 gamecode) {
MATHCRC32Table table;
MI_CpuClear8(userdata, DWC_ACC_USERDATA_BUFSIZE);
userdata->size = DWC_ACC_USERDATA_BUFSIZE;
userdata->gs_profile_id = 0;
userdata->gamecode = gamecode;
DWCi_Acc_CreateTempLoginId(&userdata->pseudo);
DWCi_Acc_SetFlag_DataType((DWCAccFlag *)&userdata->authentic, DWC_ACC_FRIENDDATA_NODATA);
MATH_CRC32InitTable(&table);
userdata->crc32 = MATH_CalcCRC32(&table, userdata, sizeof(DWCAccUserData) - 4);
userdata->flag |= DWC_ACC_USERDATA_DIRTY;
}
void DWCi_Acc_CreateTempLoginId (DWCAccLoginId * loginid) {
DWCAuthWiFiId authid;
MATHRandContext32 randcontext;
u32 buffer[8];
u32 i;
OS_GetLowEntropyData(buffer);
for (i = 1; i < 8; i++) {
buffer[i] = buffer[i] ^ buffer[i - 1];
}
MATH_InitRand32(&randcontext, buffer[7]);
DWC_Auth_GetId(&authid);
if (authid.flg) {
DWCi_Acc_SetUserId(loginid, authid.uId);
} else {
DWCi_Acc_SetUserId(loginid, authid.notAttestedId);
}
#if 0
DWCi_Acc_SetPlayerId(loginid, 1);
#else
DWCi_Acc_SetPlayerId(loginid, MATH_Rand32(&randcontext, 0));
#endif
DWCi_Acc_SetFlag_DataType((DWCAccFlag *)loginid, DWC_ACC_FRIENDDATA_LOGIN_ID);
}
BOOL DWCi_Acc_CheckConsoleUserId (const DWCAccLoginId * loginid) {
DWCAuthWiFiId authid;
DWC_Auth_GetId(&authid);
if (authid.flg) {
return (DWCi_Acc_GetUserId(loginid) == authid.uId) ? TRUE : FALSE;
} else {
return (DWCi_Acc_GetUserId(loginid) == authid.notAttestedId) ? TRUE : FALSE;
}
}
BOOL DWCi_Acc_IsValidLoginId (const DWCAccLoginId * loginid) {
return (DWCi_Acc_GetFlag_DataType((DWCAccFlag *)loginid) == DWC_ACC_FRIENDDATA_LOGIN_ID) ? TRUE : FALSE;
}
BOOL DWCi_Acc_IsAuthentic (const DWCAccUserData * userdata) {
return DWCi_Acc_IsValidLoginId(&userdata->authentic);
}
BOOL DWC_IsValidFriendData (const DWCAccFriendData * frienddata) {
u32 type = DWCi_Acc_GetFlag_DataType(&frienddata->flags);
if (type == DWC_ACC_FRIENDDATA_NODATA) {
return FALSE;
}
return TRUE;
}
BOOL DWCi_Acc_IsValidFriendData (const DWCAccFriendData * frienddata) {
return DWC_IsValidFriendData(frienddata);
}
void DWC_CreateUserData (DWCAccUserData * userdata, u32 gamecode) {
DWCi_Acc_CreateUserData(userdata, gamecode);
}
BOOL DWC_CheckUserData (const DWCAccUserData * userdata) {
u32 crc32;
MATHCRC32Table table;
MATH_CRC32InitTable(&table);
crc32 = MATH_CalcCRC32(&table, userdata, sizeof(DWCAccUserData) - 4);
return (crc32 == userdata->crc32) ? TRUE : FALSE;
}
BOOL DWC_CheckHasProfile (const DWCAccUserData * userdata) {
return (DWCi_Acc_IsValidLoginId(&userdata->authentic) && (userdata->gs_profile_id > 0)) ? TRUE : FALSE;
}
BOOL DWC_CheckValidConsole (const DWCAccUserData * userdata) {
DWCAuthWiFiId authid;
if (DWCi_Acc_GetFlag_DataType((DWCAccFlag *)&userdata->authentic) == DWC_ACC_FRIENDDATA_NODATA) {
return TRUE;
}
DWC_Auth_GetId(&authid);
if (!authid.flg) {
return FALSE;
}
return (DWCi_Acc_GetUserId(&userdata->authentic) == authid.uId) ? TRUE : FALSE;
}
void DWCi_Acc_SetLoginIdToUserData (DWCAccUserData * userdata, const DWCAccLoginId * loginid, int gs_profile_id) {
MATHCRC32Table table;
userdata->authentic = *loginid;
userdata->gs_profile_id = gs_profile_id;
MATH_CRC32InitTable(&table);
userdata->crc32 = MATH_CalcCRC32(&table, userdata, sizeof(DWCAccUserData) - 4);
userdata->flag |= DWC_ACC_USERDATA_DIRTY;
}
BOOL DWC_CheckDirtyFlag (const DWCAccUserData * userdata) {
return DWCi_Acc_IsDirty(userdata);
}
BOOL DWCi_Acc_IsDirty (const DWCAccUserData * userdata) {
return DWCi_CHECK_FLAG(userdata->flag, DWC_ACC_USERDATA_DIRTY) ? TRUE : FALSE;
}
void DWC_ClearDirtyFlag (DWCAccUserData * userdata) {
DWCi_Acc_ClearDirty(userdata);
}
void DWCi_Acc_ClearDirty (DWCAccUserData * userdata) {
MATHCRC32Table table;
userdata->flag &= ~DWC_ACC_USERDATA_DIRTY;
MATH_CRC32InitTable(&table);
userdata->crc32 = MATH_CalcCRC32(&table, userdata, sizeof(DWCAccUserData) - 4);
}
void DWCi_Acc_TestFlagFunc (void) {
DWCAccLoginId id;
u32 flags;
MI_CpuClear8(&id, sizeof(DWCAccLoginId));
flags = DWCi_Acc_GetFlags((DWCAccFlag *)&id);
OS_TPrintf("%08x: %08x\n", flags, DWCi_Acc_GetFlag_DataType((DWCAccFlag *)&id));
if (DWCi_Acc_IsValidLoginId(&id)) {
OS_TPrintf("valid\n");
} else {
OS_TPrintf("invalid\n");
}
DWCi_Acc_SetFlag_DataType((DWCAccFlag *)&id, DWC_ACC_FRIENDDATA_LOGIN_ID);
flags = DWCi_Acc_GetFlags((DWCAccFlag *)&id);
OS_TPrintf("%08x: %08x\n", flags, DWCi_Acc_GetFlag_DataType((DWCAccFlag *)&id));
if (DWCi_Acc_IsValidLoginId(&id)) {
OS_TPrintf("valid\n");
} else {
OS_TPrintf("invalid\n");
}
}
u64 DWC_GetFriendKey (const DWCAccFriendData * frienddata) {
if (DWCi_Acc_GetFlag_DataType(&frienddata->flags) == DWC_ACC_FRIENDDATA_FRIEND_KEY) {
return DWCi_Acc_GetFriendKey(&frienddata->friend_key);
}
return 0;
}
int DWC_GetGsProfileId (const DWCAccUserData * userdata, const DWCAccFriendData * frienddata) {
u32 type = DWCi_Acc_GetFlag_DataType(&frienddata->flags);
switch (type) {
case DWC_ACC_FRIENDDATA_FRIEND_KEY:
{
u64 friend_key = DWCi_Acc_GetFriendKey(&frienddata->friend_key);
if (DWC_Acc_CheckFriendKey(friend_key, userdata->gamecode)) {
return DWC_Acc_FriendKeyToGsProfileId(friend_key, userdata->gamecode);
}
return 0;
}
break;
case DWC_ACC_FRIENDDATA_GS_PROFILE_ID:
return DWCi_Acc_GetGsProfileId(&frienddata->gs_profile_id);
break;
case DWC_ACC_FRIENDDATA_LOGIN_ID:
return -1;
break;
default:
break;
}
return 0;
}
u64 DWC_CreateFriendKey (const DWCAccUserData * userdata) {
u64 ret = 0;
if (userdata->gs_profile_id != 0) {
ret = DWC_Acc_CreateFriendKey(userdata->gs_profile_id, userdata->gamecode);
}
return ret;
}
void DWC_CreateFriendKeyToken (DWCAccFriendData * token, u64 friend_key) {
MI_CpuClear8(token, sizeof(DWCAccFriendData));
DWCi_Acc_SetFriendKey(&token->friend_key, friend_key);
DWCi_Acc_SetFlag_DataType(&token->flags, DWC_ACC_FRIENDDATA_FRIEND_KEY);
}
void DWC_CreateExchangeToken (const DWCAccUserData * userdata, DWCAccFriendData * token) {
MI_CpuClear8(token, sizeof(DWCAccFriendData));
if (DWCi_Acc_IsAuthentic(userdata)) {
DWCi_Acc_SetGsProfileId(&token->gs_profile_id, userdata->gs_profile_id);
DWCi_Acc_SetFlag_DataType(&token->flags, DWC_ACC_FRIENDDATA_GS_PROFILE_ID);
} else {
token->login_id = userdata->pseudo;
}
}
void DWC_SetGsProfileId (DWCAccFriendData * frienddata, int gs_profile_id) {
MI_CpuClear8(frienddata, sizeof(DWCAccFriendData));
DWCi_Acc_SetGsProfileId(&frienddata->gs_profile_id, gs_profile_id);
DWCi_Acc_SetFlag_DataType(&frienddata->flags, DWC_ACC_FRIENDDATA_GS_PROFILE_ID);
}
void DWC_LoginIdToUserName (const DWCAccUserData * userdata, const DWCAccFriendData * frienddata, char * username) {
DWCi_Acc_LoginIdToUserName(&frienddata->login_id, userdata->gamecode, username);
}
BOOL DWC_IsEqualFriendData (const DWCAccFriendData * frienddata1, const DWCAccFriendData * frienddata2) {
u32 type1, type2;
type1 = DWCi_Acc_GetFlag_DataType(&frienddata1->flags);
type2 = DWCi_Acc_GetFlag_DataType(&frienddata2->flags);
if (type1 != type2) {
return FALSE;
} else if (type1 == DWC_ACC_FRIENDDATA_GS_PROFILE_ID) {
return (DWCi_Acc_GetGsProfileId(&frienddata1->gs_profile_id) == DWCi_Acc_GetGsProfileId(&frienddata2->gs_profile_id)) ?
TRUE : FALSE;
} else if (type1 == DWC_ACC_FRIENDDATA_LOGIN_ID) {
return ((DWCi_Acc_GetUserId(&frienddata1->login_id) == DWCi_Acc_GetUserId(&frienddata2->login_id)) &&
(DWCi_Acc_GetPlayerId(&frienddata1->login_id) == DWCi_Acc_GetPlayerId(&frienddata2->login_id))) ?
TRUE : FALSE;
} else if (type1 == DWC_ACC_FRIENDDATA_FRIEND_KEY) {
return (DWCi_Acc_GetFriendKey(&frienddata1->friend_key) == DWCi_Acc_GetFriendKey(&frienddata2->friend_key)) ?
TRUE : FALSE;
}
return FALSE;
}
void DWC_ReportFriendData (const DWCAccUserData * userdata, const DWCAccFriendData * frienddata) {
if (DWCi_Acc_GetFlag_DataType(&frienddata->flags) == DWC_ACC_FRIENDDATA_GS_PROFILE_ID) {
if (DWC_IsBuddyFriendData(frienddata)) {
OS_TPrintf(" GS_ID : %d (ok)\n", DWCi_Acc_GetGsProfileId(&frienddata->gs_profile_id));
} else {
OS_TPrintf(" GS_ID : %d\n", DWCi_Acc_GetGsProfileId(&frienddata->gs_profile_id));
}
} else if (DWCi_Acc_GetFlag_DataType(&frienddata->flags) == DWC_ACC_FRIENDDATA_FRIEND_KEY) {
char name[DWC_ACC_FRIENDKEY_STRING_BUFSIZE];
DWC_FriendKeyToString(name, DWCi_Acc_GetFriendKey(&frienddata->friend_key));
OS_TPrintf(" F_KEY : %s\n", name);
} else if (DWCi_Acc_GetFlag_DataType(&frienddata->flags) == DWC_ACC_FRIENDDATA_LOGIN_ID) {
char name[DWC_ACC_USERNAME_STRING_BUFSIZE];
DWCi_Acc_LoginIdToUserName(&frienddata->login_id, userdata->gamecode, name);
OS_TPrintf(" LN_ID : %s\n", name);
} else {
OS_TPrintf(" NO_DATA \n");
}
}
void DWC_ReportUserData (const DWCAccUserData * userdata) {
OS_TPrintf("*******************************\n");
OS_TPrintf(" [pseudo login id]\n");
DWC_ReportFriendData(userdata, (DWCAccFriendData *)&userdata->pseudo);
OS_TPrintf("+++++++++++++++++++++++++++++++\n");
OS_TPrintf(" [authentic login id]\n");
DWC_ReportFriendData(userdata, (DWCAccFriendData *)&userdata->authentic);
OS_TPrintf("+++++++++++++++++++++++++++++++\n");
OS_TPrintf(" GS_ID : %d\n", userdata->gs_profile_id);
OS_TPrintf("*******************************\n");
}

View File

@ -1,97 +0,0 @@
#include <base/dwc_init.h>
#include <base/dwc_report.h>
#include <bm/dwc_bm_init.h>
#include <bm/util_wifiidtool.h>
#include <dwc_version.h>
#include <nitro.h>
#include <nitro/version_begin.h>
static char id_string [] = SDK_MIDDLEWARE_STRING("NINTENDO", DWC_VERSION_STRING);
#include <nitro/version_end.h>
static char s_work[0x400] ATTRIBUTE_ALIGN(32);
extern BOOL DWCi_AUTH_MakeWiFiID(void * work);
extern BOOL DWCi_BACKUPlInit(void * work);
extern BOOL DWCi_BACKUPlRead(void * mem);
extern BOOL DWCi_BACKUPlWritePage(const void * data, const BOOL * page, void * work);
int DWC_Init (void * work) {
int ret;
BOOL created = FALSE;
SDK_USING_MIDDLEWARE(id_string);
SDK_ASSERTMSG(((u32)work & 0x1f) == 0, "work must be 32bytes alignment - %p\n", work);
ret = DWC_BM_Init(work);
if (DWC_Auth_CheckWiFiIDNeedCreate()) {
DWC_Printf(DWC_REPORTFLAG_INFO, "Create UserID\n");
DWCi_AUTH_MakeWiFiID(work);
created = TRUE;
} else {
DWC_Printf(DWC_REPORTFLAG_INFO, "Read UserID from DS\n");
}
if (ret < 0) {
if (created) {
return DWC_INIT_RESULT_DESTROY_USERID;
} else {
return DWC_INIT_RESULT_DESTROY_OTHER_SETTING;
}
} else if (created) {
return DWC_INIT_RESULT_CREATE_USERID;
}
return DWC_INIT_RESULT_NOERROR;
}
u64 DWC_GetAuthenticatedUserId (void) {
DWCAuthWiFiId wifiid;
DWC_Auth_GetId(&wifiid);
return wifiid.uId;
}
void DWC_Debug_DWCInitError (void * work, int dwc_init_error) {
BOOL needCrc = FALSE;
int crcPage;
if (dwc_init_error == DWC_INIT_RESULT_NOERROR) {
return;
}
DWCi_BACKUPlInit(work);
if (dwc_init_error == DWC_INIT_RESULT_CREATE_USERID) {
DWCi_BACKUPlRead(s_work);
MI_CpuClear8(&s_work[0xf0], 10);
s_work[0xf0 + 0x0a] &= ~0x3f;
needCrc = TRUE;
crcPage = 0;
} else if (dwc_init_error == DWC_INIT_RESULT_DESTROY_USERID) {
DWCi_BACKUPlRead(s_work);
MI_CpuClear8(&s_work[0x100 + 0xf0], 10);
s_work[0x100 + 0xf0 + 0x0a] &= ~0x3f;
s_work[0x100 + 0xef] = 1;
needCrc = TRUE;
crcPage = 1;
}
if (needCrc) {
u16 hash;
BOOL page[4] = {FALSE, FALSE, FALSE, FALSE};
MATHCRC16Table crc16_tbl;
MATH_CRC16InitTable(&crc16_tbl);
hash = MATH_CalcCRC16(&crc16_tbl, (u16 *)&s_work[crcPage * 0x100], 0xFE);
*(u16 *)(&s_work[crcPage * 0x100 + 0xFE]) = hash;
page[crcPage] = TRUE;
DWCi_BACKUPlWritePage(s_work, page, work);
}
if ((dwc_init_error == DWC_INIT_RESULT_DESTROY_USERID) ||
(dwc_init_error == DWC_INIT_RESULT_DESTROY_OTHER_SETTING)) {
BOOL page[4] = {TRUE, FALSE, FALSE, FALSE};
MI_CpuClear8(s_work, sizeof(s_work));
DWCi_BACKUPlWritePage(s_work, page, work);
}
}

View File

@ -1,4 +0,0 @@
libdwcaccount_srcs = files(
'dwc_init.c',
'dwc_account.c'
)

File diff suppressed because it is too large Load Diff

View File

@ -1,94 +0,0 @@
.include "macros/function.inc"
.data
.global Unk_ov4_02216670
Unk_ov4_02216670: ; 0x02216670
.short 0x1
.short 0x1
.global Unk_ov4_02216674
Unk_ov4_02216674: ; 0x02216674
.word Unk_ov4_02216688
.short 0x100, 0x0
.word Unk_ov4_022166BC
.short 0x3, 0x0
.word Unk_ov4_02216670
.global Unk_ov4_02216688
Unk_ov4_02216688: ; 0x02216688
.asciz "BE, GlobalSign nv-sa, Root CA, GlobalSign Root CA"
.short 0x0
.global Unk_ov4_022166BC
Unk_ov4_022166BC: ; 0x022166BC
.incbin "incbin/dwc_ca_cybertrust.bin", 0x0, 0x100
.global Unk_ov4_022167BC
Unk_ov4_022167BC: ; 0x022167BC
.short 0x1
.short 0x1
.global Unk_ov4_022167C0
Unk_ov4_022167C0: ; 0x022167C0
.word Unk_ov4_022167D4
.word 0x100
.word Unk_ov4_0221680C
.word 0x3
.word Unk_ov4_022167BC
.global Unk_ov4_022167D4
Unk_ov4_022167D4: ; 0x022167D4
.ascii "IE, Baltimore, CyberTrust, Baltimore CyberTrust Root"
.word 0x0
.global Unk_ov4_0221680C
Unk_ov4_0221680C: ; 0x0221680C
.incbin "incbin/dwc_ca_cybertrust.bin", 0x100, 0x200 - 0x100
.global Unk_ov4_0221690C
Unk_ov4_0221690C: ; 0x0221690C
.short 0x1
.short 0x1
.global Unk_ov4_02216910
Unk_ov4_02216910: ; 0x02216910
.word Unk_ov4_02216924
.word 0x80
.word Unk_ov4_02216974
.word 0x3
.word Unk_ov4_0221690C
.global Unk_ov4_02216924
Unk_ov4_02216924: ; 0x02216924
.asciz "US, GTE Corporation, GTE CyberTrust Solutions, Inc., GTE CyberTrust Global Root"
.global Unk_ov4_02216974
Unk_ov4_02216974: ; 0x02216974
.incbin "incbin/dwc_ca_cybertrust.bin", 0x200, 0x280 - 0x200
.global Unk_ov4_022169F4
Unk_ov4_022169F4: ; 0x022169F4
.short 0x1
.short 0x1
.global Unk_ov4_022169F8
Unk_ov4_022169F8: ; 0x022169F8
.word Unk_ov4_02216A0C
.word 0x80
.word Unk_ov4_02216A38
.word 0x3
.word Unk_ov4_022169F4
.global Unk_ov4_02216A0C
Unk_ov4_02216A0C: ; 0x02216A0C
.ascii "US, GTE Corporation, GTE CyberTrust Root"
.word 0x0
.global Unk_ov4_02216A38
Unk_ov4_02216A38: ; 0x02216A38
.incbin "incbin/dwc_ca_cybertrust.bin", 0x280, 0x80

View File

@ -1,28 +0,0 @@
.include "macros/function.inc"
.data
.global Unk_ov4_02217270
Unk_ov4_02217270: ; 0x02217270
.short 0x1
.short 0x1
.global Unk_ov4_02217274
Unk_ov4_02217274: ; 0x02217274
.word Unk_ov4_02217288
.word 0x100
.word Unk_ov4_022172B8
.word 0x3
.word Unk_ov4_02217270
.global Unk_ov4_02217288
Unk_ov4_02217288: ; 0x02217288
.asciz "GlobalSign Root CA - R2, GlobalSign, GlobalSign"
.global Unk_ov4_022172B8
Unk_ov4_022172B8: ; 0x022172B8
.incbin "incbin/dwc_ca_globalsign.bin", 0x0, 0x100

View File

@ -1,29 +0,0 @@
.include "macros/function.inc"
.data
.global Unk_ov4_02216AB8
Unk_ov4_02216AB8: ; 0x02216AB8
.short 0x1
.short 0x1
.global Unk_ov4_02216ABC
Unk_ov4_02216ABC: ; 0x02216ABC
.word Unk_ov4_02216AD0
.word 0x80
.word Unk_ov4_02216B20
.word 0x3
.word Unk_ov4_02216AB8
.global Unk_ov4_02216AD0
Unk_ov4_02216AD0: ; 0x02216AD0
.asciz "US, Washington, Nintendo of America Inc, NOA, Nintendo CA, ca@noa.nintendo.com"
.byte 0x0
.global Unk_ov4_02216B20
Unk_ov4_02216B20: ; 0x02216B20
.incbin "incbin/dwc_ca_nas_self.bin", 0x0, 0x80

View File

@ -1,28 +0,0 @@
.include "macros/function.inc"
.data
.global Unk_ov4_02216BA0
Unk_ov4_02216BA0: ; 0x02216BA0
.short 0x1
.short 0x1
.global Unk_ov4_02216BA4
Unk_ov4_02216BA4: ; 0x02216BA4
.word Unk_ov4_02216C38
.word 0x80
.word Unk_ov4_02216BB8
.word 0x3
.word Unk_ov4_02216BA0
.global Unk_ov4_02216BB8
Unk_ov4_02216BB8: ; 0x02216BB8
.incbin "incbin/dwc_ca_thawte_premiumserver.bin", 0x0, 0x80
.global Unk_ov4_02216C38
Unk_ov4_02216C38: ; 0x02216C38
.asciz "ZA, Western Cape, Cape Town, Thawte Consulting cc, Certification Services Division, Thawte Premium Server CA, premium-server@thawte.com"

View File

@ -1,29 +0,0 @@
.include "macros/function.inc"
.data
.global Unk_ov4_02216CC0
Unk_ov4_02216CC0: ; 0x02216CC0
.short 0x1
.short 0x1
.global Unk_ov4_02216CC4
Unk_ov4_02216CC4: ; 0x02216CC4
.word Unk_ov4_02216CD8
.word 0x80
.word Unk_ov4_02216D58
.word 0x3
.word Unk_ov4_02216CC0
.global Unk_ov4_02216CD8
Unk_ov4_02216CD8: ; 0x02216CD8
.asciz "ZA, Western Cape, Cape Town, Thawte Consulting cc, Certification Services Division, Thawte Server CA, server-certs@thawte.com"
.short 0x0
.global Unk_ov4_02216D58
Unk_ov4_02216D58: ; 0x02216D58
.incbin "incbin/dwc_ca_thawte_server.bin", 0x0, 0x80

View File

@ -1,95 +0,0 @@
.include "macros/function.inc"
.data
.global Unk_ov4_02216DD8
Unk_ov4_02216DD8: ; 0x02216DD8
.short 0x1
.short 0x1
.global Unk_ov4_02216DDC
Unk_ov4_02216DDC: ; 0x02216DDC
.word Unk_ov4_02216E70
.word 0x80
.word Unk_ov4_02216DF0
.word 0x3
.word Unk_ov4_02216DD8
.global Unk_ov4_02216DF0
Unk_ov4_02216DF0: ; 0x02216DF0
.incbin "incbin/dwc_ca_verisign.bin", 0x0, 0x80
.global Unk_ov4_02216E70
Unk_ov4_02216E70: ; 0x02216E70
.asciz "US, VeriSign, Inc., Class 3 Public Primary Certification Authority - G2, (c) 1998 VeriSign, Inc. - For authorized use only, VeriSign Trust Network"
.byte 0x0
.global Unk_ov4_02216F04
Unk_ov4_02216F04: ; 0x02216F04
.short 0x1
.short 0x1
.global Unk_ov4_02216F08
Unk_ov4_02216F08: ; 0x02216F08
.word Unk_ov4_02216F1C
.word 0x100
.word Unk_ov4_02216FB8
.word 0x3
.word Unk_ov4_02216F04
.global Unk_ov4_02216F1C
Unk_ov4_02216F1C: ; 0x02216F1C
.asciz "US, VeriSign, Inc., VeriSign Trust Network, (c) 1999 VeriSign, Inc. - For authorized use only, VeriSign Class 3 Public Primary Certification Authority - G3"
.global Unk_ov4_02216FB8
Unk_ov4_02216FB8: ; 0x02216FB8
.incbin "incbin/dwc_ca_verisign.bin", 0x80, 0x100
.global Unk_ov4_022170B8
Unk_ov4_022170B8: ; 0x022170B8
.short 0x1
.short 0x1
.global Unk_ov4_022170BC
Unk_ov4_022170BC: ; 0x022170BC
.word Unk_ov4_022170D0
.word 0x80
.word Unk_ov4_02217114
.word 0x3
.word Unk_ov4_022170B8
.global Unk_ov4_022170D0
Unk_ov4_022170D0: ; 0x022170D0
.asciz "US, VeriSign, Inc., Class 3 Public Primary Certification Authority"
.byte 0x0
.global Unk_ov4_02217114
Unk_ov4_02217114: ; 0x02217114
.incbin "incbin/dwc_ca_verisign.bin", 0x180, 0x80
.global Unk_ov4_02217194
Unk_ov4_02217194: ; 0x02217194
.short 0x1
.short 0x1
.global Unk_ov4_02217198
Unk_ov4_02217198: ; 0x02217198
.word Unk_ov4_022171AC
.word 0x7D
.word Unk_ov4_022171F0
.word 0x3
.word Unk_ov4_02217194
.global Unk_ov4_022171AC
Unk_ov4_022171AC: ; 0x022171AC
.asciz "US, RSA Data Security, Inc., Secure Server Certification Authority"
.byte 0x0
.global Unk_ov4_022171F0
Unk_ov4_022171F0: ; 0x022171F0
.incbin "incbin/dwc_ca_verisign.bin", 0x200, 0x7D

View File

@ -1,541 +0,0 @@
.include "macros/function.inc"
.include "include/dwc_cal.inc"
.text
arm_func_start DWC_Auth_GetCalInfoFromNVRAM
DWC_Auth_GetCalInfoFromNVRAM: ; 0x021D3E5C
stmfd sp!, {r3, r4, lr}
sub sp, sp, #0x14
mov r4, r0
add r0, sp, #0
bl sub_020A283C
add r1, sp, #0
mov r0, r4
bl DWC_Auth_GetCalInfoFromWiFiInfo
add sp, sp, #0x14
ldmia sp!, {r3, r4, pc}
arm_func_end DWC_Auth_GetCalInfoFromNVRAM
arm_func_start DWC_Auth_GetCalInfoFromWiFiInfo
DWC_Auth_GetCalInfoFromWiFiInfo: ; 0x021D3E84
stmfd sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x8c
mov r6, r1
mov r1, #0
mov r2, #0x94
mov r4, r0
bl MI_CpuFill8
ldmia r6, {r3, r5}
cmp r5, #0
cmpeq r3, #0
mov r1, #0xe
beq _021D3EC8
ldr r2, _021D4114 ; =0x02215FD0
mov r0, r4
str r5, [sp]
bl OS_SNPrintf
b _021D3EE0
_021D3EC8:
ldr r3, [r6, #8]
ldr r5, [r6, #0xc]
ldr r2, _021D4114 ; =0x02215FD0
mov r0, r4
str r5, [sp]
bl OS_SNPrintf
_021D3EE0:
ldrh r3, [r6, #0x10]
ldr r2, _021D4118 ; =0x02215FD8
add r0, r4, #0xe
mov r1, #7
bl OS_SNPrintf
ldr r0, _021D411C ; =0x027FFE0C
ldrb r0, [r0]
cmp r0, #0
bne _021D3F08
bl OS_Terminate
_021D3F08:
ldr r0, _021D411C ; =0x027FFE0C
add r1, r4, #0x15
mov r2, #4
bl MI_CpuCopy8
ldr r0, _021D4120 ; =0x027FFE10
ldrb r0, [r0]
cmp r0, #0
bne _021D3F2C
bl OS_Terminate
_021D3F2C:
ldr r0, _021D4120 ; =0x027FFE10
add r1, r4, #0x1a
mov r2, #2
bl MI_CpuCopy8
mov r1, #0x30
add r0, sp, #0x16
strb r1, [r4, #0x1d]
bl OS_GetMacAddress
ldr r5, _021D4124 ; =0x02215FE0
add r7, sp, #0x16
add r8, r4, #0x1f
mov r6, #0
_021D3F5C:
ldrb r2, [r7], #1
mov r0, r8
mov r1, r5
bl OS_SPrintf
add r6, r6, #1
cmp r6, #6
add r8, r8, #2
blt _021D3F5C
add r0, sp, #0x38
bl OS_GetOwnerInfo
ldrb r0, [sp, #0x38]
ldr r2, _021D4124 ; =0x02215FE0
mov r1, #3
cmp r0, #8
movhs r0, #1
strhsb r0, [sp, #0x38]
ldrb r3, [sp, #0x38]
add r0, r4, #0x2c
bl OS_SNPrintf
add r0, sp, #0x3c
add r1, r4, #0x7e
mov r2, #0x14
bl MI_CpuCopy8
ldrb r1, [sp, #0x3b]
ldr r2, _021D4128 ; =0x02215FE8
add r0, r4, #0x2f
str r1, [sp]
ldrb r3, [sp, #0x3a]
mov r1, #5
bl OS_SNPrintf
add r0, sp, #0x28
add r1, sp, #0x1c
bl RTC_GetDateTime
cmp r0, #0
addne sp, sp, #0x8c
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
ldr r0, [sp, #0x2c]
ldr r2, _021D412C ; =0x02215FF4
str r0, [sp]
ldr r1, [sp, #0x30]
add r0, r4, #0x34
str r1, [sp, #4]
ldr r3, [sp, #0x1c]
mov r1, #0xd
str r3, [sp, #8]
ldr r3, [sp, #0x20]
str r3, [sp, #0xc]
ldr r3, [sp, #0x24]
str r3, [sp, #0x10]
ldr r3, [sp, #0x28]
bl OS_SNPrintf
bl OS_DisableInterrupts
mov r6, r0
bl WCM_GetApMacAddress
mov r7, r0
mov r1, #6
bl DC_InvalidateRange
cmp r7, #0
bne _021D4060
mov r0, r6
bl OS_RestoreInterrupts
add sp, sp, #0x8c
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
_021D4060:
ldr r5, _021D4124 ; =0x02215FE0
add r8, r4, #0x41
mov sb, #0
_021D406C:
ldrb r2, [r7, sb]
mov r0, r8
mov r1, r5
bl OS_SPrintf
add sb, sb, #1
cmp sb, #6
add r8, r8, #2
blt _021D406C
bl DWC_AC_GetApType
mov r3, r0
cmp r3, #0xff
beq _021D40A4
cmp r3, #0x63
bls _021D40A8
_021D40A4:
mov r3, #0x63
_021D40A8:
ldr r2, _021D4130 ; =0x02216010
add r0, r4, #0x6f
mov r1, #0xe
bl OS_SNPrintf
add r0, sp, #0x14
bl WCM_GetApEssid
mov r5, r0
mov r1, #0x20
bl DC_InvalidateRange
cmp r5, #0
bne _021D40E8
mov r0, r6
bl OS_RestoreInterrupts
add sp, sp, #0x8c
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
_021D40E8:
mov r0, r5
add r1, r4, #0x4e
mov r2, #0x20
bl MI_CpuCopy8
add r0, r4, #0x72
bl DWC_AC_GetApSpotInfo
mov r0, r6
bl OS_RestoreInterrupts
mov r0, #1
add sp, sp, #0x8c
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
; .align 2, 0
_021D4114: .word Unk_ov4_02215FD0
_021D4118: .word Unk_ov4_02215FD8
_021D411C: .word 0x027FFE0C
_021D4120: .word 0x027FFE10
_021D4124: .word Unk_ov4_02215FE0
_021D4128: .word Unk_ov4_02215FE8
_021D412C: .word Unk_ov4_02215FF4
_021D4130: .word Unk_ov4_02216010
arm_func_end DWC_Auth_GetCalInfoFromWiFiInfo
arm_func_start DWC_Auth_SetCalInfoToHttp
DWC_Auth_SetCalInfoToHttp: ; 0x021D4134
stmfd sp!, {r4, r5, r6, lr}
sub sp, sp, #0x28
mov r4, r2
mov r6, r0
mov r5, r1
mov r3, #2
ldr r2, _021D4430 ; =0x02216020
add r0, sp, #4
mov r1, #0x21
str r3, [sp]
bl OS_SNPrintf
add r0, sp, #4
bl strlen
mov r3, r0
ldr r1, _021D4434 ; =0x0221602C
mov r0, r6
add r2, sp, #4
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r5
bl strlen
mov r3, r0
ldr r1, _021D4438 ; =0x02216034
mov r0, r6
mov r2, r5
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
add r0, r5, #0xe
bl strlen
mov r3, r0
ldr r1, _021D443C ; =0x0221603C
mov r0, r6
add r2, r5, #0xe
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
add r0, r5, #0x41
bl strlen
mov r3, r0
ldr r1, _021D4440 ; =0x02216044
mov r0, r6
add r2, r5, #0x41
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
add r0, r5, #0x6f
bl strlen
mov r3, r0
ldr r1, _021D4444 ; =0x0221604C
mov r0, r6
add r2, r5, #0x6f
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
add r0, r5, #0x15
bl strlen
mov r3, r0
ldr r1, _021D4448 ; =0x02216054
mov r0, r6
add r2, r5, #0x15
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
add r0, r5, #0x1a
bl strlen
mov r3, r0
ldr r1, _021D444C ; =0x0221605C
mov r0, r6
add r2, r5, #0x1a
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
add r0, r5, #0x1d
bl strlen
mov r3, r0
ldr r1, _021D4450 ; =0x02216064
mov r0, r6
add r2, r5, #0x1d
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
add r0, r5, #0x1f
bl strlen
mov r3, r0
ldr r1, _021D4454 ; =0x0221606C
mov r0, r6
add r2, r5, #0x1f
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
add r0, r5, #0x2c
bl strlen
mov r3, r0
ldr r1, _021D4458 ; =0x02216074
mov r0, r6
add r2, r5, #0x2c
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
add r0, r5, #0x2f
bl strlen
mov r3, r0
ldr r1, _021D445C ; =0x0221607C
mov r0, r6
add r2, r5, #0x2f
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
add r0, r5, #0x34
bl strlen
mov r3, r0
ldr r1, _021D4460 ; =0x02216084
mov r0, r6
add r2, r5, #0x34
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
add r0, r5, #0x7e
bl wcslen
mov r3, r0
ldr r1, _021D4464 ; =0x0221608C
mov r0, r6
add r2, r5, #0x7e
mov r3, r3, lsl #1
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
cmp r4, #1
bne _021D43D4
add r0, r5, #0x4e
bl strlen
mov r3, r0
ldr r1, _021D4468 ; =0x02216094
mov r0, r6
add r2, r5, #0x4e
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
_021D43D4:
ldr r2, _021D446C ; =0x0221609C
mov r3, #2
add r0, sp, #4
mov r1, #0x21
str r3, [sp]
bl OS_SNPrintf
ldr r1, _021D4470 ; =0x022160B4
add r2, sp, #4
mov r0, r6
bl DWC_Http_Add_HeaderItem
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
ldr r1, _021D4474 ; =0x022160C0
mov r0, r6
add r2, r5, #0x15
bl DWC_Http_Add_HeaderItem
cmp r0, #0
moveq r0, #1
movne r0, #0
add sp, sp, #0x28
ldmia sp!, {r4, r5, r6, pc}
; .align 2, 0
_021D4430: .word Unk_ov4_02216020
_021D4434: .word Unk_ov4_0221602C
_021D4438: .word Unk_ov4_02216034
_021D443C: .word Unk_ov4_0221603C
_021D4440: .word Unk_ov4_02216044
_021D4444: .word Unk_ov4_0221604C
_021D4448: .word Unk_ov4_02216054
_021D444C: .word Unk_ov4_0221605C
_021D4450: .word Unk_ov4_02216064
_021D4454: .word Unk_ov4_0221606C
_021D4458: .word Unk_ov4_02216074
_021D445C: .word Unk_ov4_0221607C
_021D4460: .word Unk_ov4_02216084
_021D4464: .word Unk_ov4_0221608C
_021D4468: .word Unk_ov4_02216094
_021D446C: .word Unk_ov4_0221609C
_021D4470: .word Unk_ov4_022160B4
_021D4474: .word Unk_ov4_022160C0
arm_func_end DWC_Auth_SetCalInfoToHttp
.data
.global Unk_ov4_02215FD0
Unk_ov4_02215FD0: ; 0x02215FD0
.asciz "%013llu"
.global Unk_ov4_02215FD8
Unk_ov4_02215FD8: ; 0x02215FD8
.ascii "%03u"
.word 0x0
.global Unk_ov4_02215FE0
Unk_ov4_02215FE0: ; 0x02215FE0
.ascii "%02x"
.word 0x0
.global Unk_ov4_02215FE8
Unk_ov4_02215FE8: ; 0x02215FE8
.ascii "%02x%02x"
.word 0x0
.global Unk_ov4_02215FF4
Unk_ov4_02215FF4: ; 0x02215FF4
.ascii "%02d%02d%02d%02d%02d%02d"
.word 0x0
.global Unk_ov4_02216010
Unk_ov4_02216010: ; 0x02216010
.asciz "%02d:0000000-00"
.global Unk_ov4_02216020
Unk_ov4_02216020: ; 0x02216020
.ascii "%03d%03d"
.word 0x0
.global Unk_ov4_0221602C
Unk_ov4_0221602C: ; 0x0221602C
.asciz "sdkver"
.byte 0x0
.global Unk_ov4_02216034
Unk_ov4_02216034: ; 0x02216034
.asciz "userid"
.byte 0x0
.global Unk_ov4_0221603C
Unk_ov4_0221603C: ; 0x0221603C
.asciz "passwd"
.byte 0x0
.global Unk_ov4_02216044
Unk_ov4_02216044: ; 0x02216044
.asciz "bssid"
.short 0x0
.global Unk_ov4_0221604C
Unk_ov4_0221604C: ; 0x0221604C
.asciz "apinfo"
.byte 0x0
.global Unk_ov4_02216054
Unk_ov4_02216054: ; 0x02216054
.asciz "gamecd"
.byte 0x0
.global Unk_ov4_0221605C
Unk_ov4_0221605C: ; 0x0221605C
.asciz "makercd"
.global Unk_ov4_02216064
Unk_ov4_02216064: ; 0x02216064
.asciz "unitcd"
.byte 0x0
.global Unk_ov4_0221606C
Unk_ov4_0221606C: ; 0x0221606C
.asciz "macadr"
.byte 0x0
.global Unk_ov4_02216074
Unk_ov4_02216074: ; 0x02216074
.ascii "lang"
.word 0x0
.global Unk_ov4_0221607C
Unk_ov4_0221607C: ; 0x0221607C
.asciz "birth"
.short 0x0
.global Unk_ov4_02216084
Unk_ov4_02216084: ; 0x02216084
.asciz "devtime"
.global Unk_ov4_0221608C
Unk_ov4_0221608C: ; 0x0221608C
.asciz "devname"
.global Unk_ov4_02216094
Unk_ov4_02216094: ; 0x02216094
.ascii "ssid"
.word 0x0
.global Unk_ov4_0221609C
Unk_ov4_0221609C: ; 0x0221609C
.ascii "Nitro WiFi SDK/%d.%d"
.word 0x0
.global Unk_ov4_022160B4
Unk_ov4_022160B4: ; 0x022160B4
.asciz "User-Agent"
.byte 0x0
.global Unk_ov4_022160C0
Unk_ov4_022160C0: ; 0x022160C0
.asciz "HTTP_X_GAMECD"

File diff suppressed because it is too large Load Diff

View File

@ -1,227 +0,0 @@
.include "macros/function.inc"
.include "include/dwc_nastime.inc"
.extern errno
.text
arm_func_start DWC_Auth_SetNasTimeDiff
DWC_Auth_SetNasTimeDiff: ; 0x021D6A88
stmfd sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x3c
mov r6, r0
bl strlen
mov r4, r0
ldr r0, _021D6C94 ; =0x02216570
bl strlen
cmp r4, r0
ldreqsb r0, [r6, #7]
cmpeq r0, #0x20
ldreqsb r0, [r6, #0xb]
cmpeq r0, #0x20
ldreqsb r0, [r6, #0x10]
cmpeq r0, #0x20
ldreqsb r0, [r6, #0x13]
cmpeq r0, #0x3a
ldreqsb r0, [r6, #0x16]
cmpeq r0, #0x3a
ldreqsb r0, [r6, #0x19]
cmpeq r0, #0x20
bne _021D6C88
add r0, sp, #0x2c
add r1, sp, #0x20
bl RTC_GetDateTime
cmp r0, #0
bne _021D6C88
add r0, sp, #0x2c
add r1, sp, #0x20
bl RTC_ConvertDateTimeToSecond
mov r4, r0
mov r5, r1
mvn r0, #0
cmp r5, r0
cmpeq r4, r0
beq _021D6C88
add r0, sp, #0
mov r1, r6
bl strcpy
mov r2, #0
ldr r1, _021D6C98 ; =0x021D0D40
add r0, sp, #0xc
strb r2, [sp, #7]
strb r2, [sp, #0xb]
strb r2, [sp, #0x10]
strb r2, [sp, #0x13]
strb r2, [sp, #0x16]
strb r2, [sp, #0x19]
str r2, [r1, #0]
bl atoi
ldr r1, _021D6C98 ; =0x021D0D40
str r0, [sp, #0x2c]
ldr r1, [r1, #0]
cmp r1, #0x22
beq _021D6C88
sub r1, r0, #0x7d0
mov r0, #0xd
ldr r7, _021D6C9C ; =0x02216540
str r1, [sp, #0x2c]
str r0, [sp, #0x30]
mov r8, #0
add r6, sp, #8
_021D6B7C:
ldr r0, [r7, r8, lsl #2]
mov r1, r6
bl strcmp
cmp r0, #0
addeq r0, r8, #1
streq r0, [sp, #0x30]
beq _021D6BA4
add r8, r8, #1
cmp r8, #0xc
blt _021D6B7C
_021D6BA4:
ldr r0, [sp, #0x30]
cmp r0, #0xc
bhi _021D6C88
ldr r1, _021D6C98 ; =0x021D0D40
mov r2, #0
add r0, sp, #5
str r2, [r1, #0]
bl atoi
ldr r1, _021D6C98 ; =0x021D0D40
str r0, [sp, #0x34]
ldr r0, [r1, #0]
cmp r0, #0x22
beq _021D6C88
mov r2, #0
add r0, sp, #0x11
str r2, [r1, #0]
bl atoi
ldr r1, _021D6C98 ; =0x021D0D40
str r0, [sp, #0x20]
ldr r0, [r1, #0]
cmp r0, #0x22
beq _021D6C88
mov r2, #0
add r0, sp, #0x14
str r2, [r1, #0]
bl atoi
ldr r1, _021D6C98 ; =0x021D0D40
str r0, [sp, #0x24]
ldr r0, [r1, #0]
cmp r0, #0x22
beq _021D6C88
mov r2, #0
add r0, sp, #0x17
str r2, [r1, #0]
bl atoi
ldr r1, _021D6C98 ; =0x021D0D40
str r0, [sp, #0x28]
ldr r0, [r1, #0]
cmp r0, #0x22
beq _021D6C88
add r0, sp, #0x2c
add r1, sp, #0x20
bl RTC_ConvertDateTimeToSecond
mvn r2, #0
cmp r1, r2
cmpeq r0, r2
beq _021D6C88
ldr r2, _021D6CA0 ; =0x0221A4B4
subs r0, r4, r0
str r0, [r2, #0xc]
sbc r0, r5, r1
str r0, [r2, #0x10]
stmib r2, {r4, r5}
mov r0, #1
str r0, [r2, #0]
add sp, sp, #0x3c
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
_021D6C88:
mov r0, #0
add sp, sp, #0x3c
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
; .align 2, 0
_021D6C94: .word Unk_ov4_02216570
_021D6C98: .word errno
_021D6C9C: .word Unk_ov4_02216540
_021D6CA0: .word DWCnastimediffvalid
arm_func_end DWC_Auth_SetNasTimeDiff
.data
.global Unk_ov4_02216510
Unk_ov4_02216510: ; 0x02216510
.asciz "Jun"
.global Unk_ov4_02216514
Unk_ov4_02216514: ; 0x02216514
.asciz "Jul"
.global Unk_ov4_02216518
Unk_ov4_02216518: ; 0x02216518
.asciz "Dec"
.global Unk_ov4_0221651C
Unk_ov4_0221651C: ; 0x0221651C
.asciz "Sep"
.global Unk_ov4_02216520
Unk_ov4_02216520: ; 0x02216520
.asciz "Aug"
.global Unk_ov4_02216524
Unk_ov4_02216524: ; 0x02216524
.asciz "Nov"
.global Unk_ov4_02216528
Unk_ov4_02216528: ; 0x02216528
.asciz "Oct"
.global Unk_ov4_0221652C
Unk_ov4_0221652C: ; 0x0221652C
.asciz "May"
.global Unk_ov4_02216530
Unk_ov4_02216530: ; 0x02216530
.asciz "Apr"
.global Unk_ov4_02216534
Unk_ov4_02216534: ; 0x02216534
.asciz "Mar"
.global Unk_ov4_02216538
Unk_ov4_02216538: ; 0x02216538
.asciz "Feb"
.global Unk_ov4_0221653C
Unk_ov4_0221653C: ; 0x0221653C
.asciz "Jan"
.global Unk_ov4_02216540
Unk_ov4_02216540: ; 0x02216540
.incbin "incbin/dwc_nastime.bin", 0x0, 0x30
.global Unk_ov4_02216570
Unk_ov4_02216570: ; 0x02216570
.asciz "Fri, 03 Mar 2006 01:28:13 GMT"
.bss
.global DWCnastimediffvalid
DWCnastimediffvalid: ; 0x0221A4B4
.space 0x4
.global DWCnastimediffbase
DWCnastimediffbase: ; 0x0221A4B8
.space 0x8
.global DWCnastimediff
DWCnastimediff: ; 0x0221A4C0
.space 0x8

File diff suppressed because it is too large Load Diff

View File

@ -1,523 +0,0 @@
.include "macros/function.inc"
.include "include/dwc_svl.inc"
.extern OSi_ThreadInfo
.extern errno
.extern Unk_ov4_02215EA0
.text
arm_func_start DWC_Svl_Init
DWC_Svl_Init: ; 0x021D6CA4
stmfd sp!, {r3, r4, r5, lr}
ldr r2, _021D6D2C ; =0x0221A4C8
mov r5, r0
ldr r0, [r2, #0]
mov r4, r1
cmp r0, #0
beq _021D6CD4
ldr r1, _021D6D30 ; =0xFFFFA1DC
mov r0, #9
bl DWCi_SetError
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_021D6CD4:
ldr r0, _021D6D34 ; =0x02216590
ldr r1, _021D6D38 ; =0x00001C20
blx r5
ldr r1, _021D6D2C ; =0x0221A4C8
cmp r0, #0
str r0, [r1, #0]
bne _021D6D04
ldr r1, _021D6D30 ; =0xFFFFA1DC
mov r0, #9
bl DWCi_SetError
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_021D6D04:
ldr r2, _021D6D38 ; =0x00001C20
mov r1, #0
bl MI_CpuFill8
ldr r1, _021D6D2C ; =0x0221A4C8
mov r0, #1
ldr r2, [r1, #0]
str r5, [r2, #0]
ldr r1, [r1, #0]
str r4, [r1, #4]
ldmia sp!, {r3, r4, r5, pc}
; .align 2, 0
_021D6D2C: .word Unk_ov4_0221A4C8
_021D6D30: .word 0xFFFFA1DC
_021D6D34: .word Unk_ov4_02216590
_021D6D38: .word 0x00001C20
arm_func_end DWC_Svl_Init
arm_func_start DWC_Svl_Cleanup
DWC_Svl_Cleanup: ; 0x021D6D3C
stmfd sp!, {r3, lr}
ldr r0, _021D6D80 ; =0x0221A4C8
ldr r0, [r0, #0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
add r0, r0, #8
bl DWC_Http_Destroy
ldr r1, _021D6D80 ; =0x0221A4C8
ldr r0, _021D6D84 ; =0x022165A0
ldr r1, [r1, #0]
mov r2, #0
ldr r3, [r1, #4]
blx r3
ldr r0, _021D6D80 ; =0x0221A4C8
mov r1, #0
str r1, [r0, #0]
ldmia sp!, {r3, pc}
; .align 2, 0
_021D6D80: .word Unk_ov4_0221A4C8
_021D6D84: .word Unk_ov4_022165A0
arm_func_end DWC_Svl_Cleanup
arm_func_start DWC_Svl_GetTokenAsync
DWC_Svl_GetTokenAsync: ; 0x021D6D88
stmfd sp!, {r3, r4, r5, lr}
sub sp, sp, #0xb0
ldr r2, _021D6FCC ; =0x0221A4C8
mov r5, r0
ldr r2, [r2, #0]
mov r0, r1
add r2, r2, #0x1000
str r1, [r2, #0xc1c]
mov r1, #0
mov r2, #0x174
bl MI_CpuFill8
ldr r0, _021D6FCC ; =0x0221A4C8
ldr r1, [r0, #0]
add r0, r1, #0x1000
ldr r0, [r0, #0xbac]
cmp r0, #0
beq _021D6DE0
add r0, r1, #0x1b40
bl OS_IsThreadTerminated
cmp r0, #0
bne _021D6DE0
bl OS_Terminate
_021D6DE0:
ldr r0, _021D6FD0 ; =0x02215EA0
ldr r1, _021D6FCC ; =0x0221A4C8
ldr r0, [r0, #0]
mov r3, #0
ldr r4, [r1, #0]
mov r2, #0x1000
str r0, [sp]
str r3, [sp, #4]
str r2, [sp, #8]
ldr r2, [r4, #0]
ldr r1, _021D6FD4 ; =0x022165B0
str r2, [sp, #0xc]
ldr r2, [r4, #4]
str r2, [sp, #0x10]
bl strcmp
cmp r0, #0
movne r0, #1
strne r0, [sp, #0x14]
moveq r0, #0
ldr r2, _021D6FD8 ; =0x00004E20
streq r0, [sp, #0x14]
add r1, sp, #0
add r0, r4, #8
str r2, [sp, #0x18]
bl DWC_Http_Create
cmp r0, #0
beq _021D6E64
ldr r1, _021D6FDC ; =0xFFFFA1DC
mov r0, #9
bl DWCi_SetError
add sp, sp, #0xb0
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_021D6E64:
add r0, sp, #0x1c
bl DWC_Auth_GetCalInfoFromNVRAM
cmp r0, #0
beq _021D6E94
ldr r0, _021D6FCC ; =0x0221A4C8
add r1, sp, #0x1c
ldr r0, [r0, #0]
mov r2, #0
add r0, r0, #8
bl DWC_Auth_SetCalInfoToHttp
cmp r0, #0
bne _021D6EBC
_021D6E94:
ldr r0, _021D6FCC ; =0x0221A4C8
ldr r0, [r0, #0]
add r0, r0, #8
bl DWC_Http_Destroy
ldr r1, _021D6FDC ; =0xFFFFA1DC
mov r0, #9
bl DWCi_SetError
add sp, sp, #0xb0
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_021D6EBC:
ldr r0, _021D6FCC ; =0x0221A4C8
ldr r1, _021D6FE0 ; =0x022165D0
ldr r0, [r0, #0]
ldr r2, _021D6FE4 ; =0x022165D8
add r0, r0, #8
mov r3, #6
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
bne _021D6F04
ldr r0, _021D6FCC ; =0x0221A4C8
ldr r1, _021D6FE8 ; =0x022165E0
ldr r0, [r0, #0]
mov r2, r5
add r0, r0, #8
mov r3, #4
bl DWC_Http_Add_PostBase64Item
cmp r0, #0
beq _021D6F2C
_021D6F04:
ldr r0, _021D6FCC ; =0x0221A4C8
ldr r0, [r0, #0]
add r0, r0, #8
bl DWC_Http_Destroy
ldr r1, _021D6FDC ; =0xFFFFA1DC
mov r0, #9
bl DWCi_SetError
add sp, sp, #0xb0
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_021D6F2C:
ldr r0, _021D6FCC ; =0x0221A4C8
ldr r0, [r0, #0]
add r0, r0, #8
bl DWC_Http_FinishHeader
cmp r0, #0
beq _021D6F6C
ldr r0, _021D6FCC ; =0x0221A4C8
ldr r0, [r0, #0]
add r0, r0, #8
bl DWC_Http_Destroy
ldr r1, _021D6FDC ; =0xFFFFA1DC
mov r0, #9
bl DWCi_SetError
add sp, sp, #0xb0
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_021D6F6C:
ldr r0, _021D6FEC ; =0x021CCC80
ldr r0, [r0, #4]
bl OS_GetThreadPriority
ldr r1, _021D6FCC ; =0x0221A4C8
ldr r2, [r1, #0]
sub r1, r0, #1
add r0, r2, #8
bl DWC_Http_StartThread
ldr r0, _021D6FCC ; =0x0221A4C8
ldr r1, [r0, #0]
add r0, r1, #0x1000
ldr r0, [r0, #0xbac]
cmp r0, #0
addne sp, sp, #0xb0
movne r0, #1
ldmneia sp!, {r3, r4, r5, pc}
add r0, r1, #8
bl DWC_Http_Destroy
ldr r1, _021D6FDC ; =0xFFFFA1DC
mov r0, #9
bl DWCi_SetError
mov r0, #0
add sp, sp, #0xb0
ldmia sp!, {r3, r4, r5, pc}
; .align 2, 0
_021D6FCC: .word Unk_ov4_0221A4C8
_021D6FD0: .word Unk_ov4_02215EA0
_021D6FD4: .word Unk_ov4_022165B0
_021D6FD8: .word 0x00004E20
_021D6FDC: .word 0xFFFFA1DC
_021D6FE0: .word Unk_ov4_022165D0
_021D6FE4: .word Unk_ov4_022165D8
_021D6FE8: .word Unk_ov4_022165E0
_021D6FEC: .word OSi_ThreadInfo
arm_func_end DWC_Svl_GetTokenAsync
arm_func_start DWC_Svl_Process
DWC_Svl_Process: ; 0x021D6FF0
stmfd sp!, {r3, lr}
ldr r0, _021D70BC ; =0x0221A4C8
ldr r1, [r0, #0]
cmp r1, #0
moveq r0, #0
ldmeqia sp!, {r3, pc}
add r0, r1, #0x1000
ldr r0, [r0, #0xbac]
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, pc}
add r0, r1, #0x1b40
bl OS_IsThreadTerminated
cmp r0, #1
bne _021D70B4
ldr r0, _021D70BC ; =0x0221A4C8
ldr r1, [r0, #0]
add r0, r1, #0x1000
ldr r0, [r0, #0x28]
cmp r0, #7
beq _021D7088
cmp r0, #8
bne _021D7098
bl ov4_021D70C4
cmp r0, #0
bne _021D7070
ldr r0, _021D70BC ; =0x0221A4C8
ldr r0, [r0, #0]
add r0, r0, #8
bl DWC_Http_Destroy
mov r0, #4
ldmia sp!, {r3, pc}
_021D7070:
ldr r0, _021D70BC ; =0x0221A4C8
ldr r0, [r0, #0]
add r0, r0, #8
bl DWC_Http_Destroy
mov r0, #3
ldmia sp!, {r3, pc}
_021D7088:
add r0, r1, #8
bl DWC_Http_Destroy
mov r0, #5
ldmia sp!, {r3, pc}
_021D7098:
add r0, r1, #8
bl DWC_Http_Destroy
ldr r1, _021D70C0 ; =0xFFFFA1DB
mov r0, #0x11
bl DWCi_SetError
mov r0, #4
ldmia sp!, {r3, pc}
_021D70B4:
mov r0, #2
ldmia sp!, {r3, pc}
; .align 2, 0
_021D70BC: .word Unk_ov4_0221A4C8
_021D70C0: .word 0xFFFFA1DB
arm_func_end DWC_Svl_Process
arm_func_start ov4_021D70C4
ov4_021D70C4: ; 0x021D70C4
stmfd sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r0, _021D72B4 ; =0x0221A4C8
mov r1, #0
ldr r4, [r0, #0]
add r0, r4, #8
bl DWC_Http_ParseResult
cmp r0, #0
bne _021D7100
ldr r1, _021D72B8 ; =0xFFFF9DF3
mov r0, #0x10
bl DWCi_SetError
add sp, sp, #4
mov r0, #0
ldmia sp!, {r3, r4, pc}
_021D7100:
ldr r1, _021D72BC ; =0x022165E4
add r0, r4, #8
bl DWC_Http_GetResult
cmp r0, #0
beq _021D7118
bl DWC_Auth_SetNasTimeDiff
_021D7118:
ldr r1, _021D72C0 ; =0x022165EC
add r0, r4, #8
bl DWC_Http_GetResult
cmp r0, #0
bne _021D7144
ldr r1, _021D72B8 ; =0xFFFF9DF3
mov r0, #0x10
bl DWCi_SetError
add sp, sp, #4
mov r0, #0
ldmia sp!, {r3, r4, pc}
_021D7144:
bl atoi
ldr r1, _021D72C4 ; =0x021D0D40
mov r2, r0
ldr r0, [r1, #0]
cmp r0, #0x22
bne _021D7174
ldr r1, _021D72B8 ; =0xFFFF9DF3
mov r0, #0x10
bl DWCi_SetError
add sp, sp, #4
mov r0, #0
ldmia sp!, {r3, r4, pc}
_021D7174:
cmp r2, #0xc8
beq _021D7198
ldr r1, _021D72C8 ; =0xFFFF9E58
mov r0, #0x10
sub r1, r1, r2
bl DWCi_SetError
add sp, sp, #4
mov r0, #0
ldmia sp!, {r3, r4, pc}
_021D7198:
ldr r1, _021D72CC ; =0x022165F8
add r2, sp, #0
add r0, r4, #8
mov r3, #4
bl DWC_Http_GetBase64DecodedResult
cmp r0, #0
bgt _021D71CC
ldr r1, _021D72B8 ; =0xFFFF9DF3
mov r0, #0x10
bl DWCi_SetError
add sp, sp, #4
mov r0, #0
ldmia sp!, {r3, r4, pc}
_021D71CC:
add r0, sp, #0
bl atoi
ldr r1, _021D72C4 ; =0x021D0D40
mov r2, r0
ldr r0, [r1, #0]
cmp r0, #0x22
bne _021D7200
ldr r1, _021D72B8 ; =0xFFFF9DF3
mov r0, #0x10
bl DWCi_SetError
add sp, sp, #4
mov r0, #0
ldmia sp!, {r3, r4, pc}
_021D7200:
cmp r2, #0x64
blt _021D7224
ldr r1, _021D72D0 ; =0xFFFFA240
mov r0, #0x10
sub r1, r1, r2
bl DWCi_SetError
add sp, sp, #4
mov r0, #0
ldmia sp!, {r3, r4, pc}
_021D7224:
ldr r0, _021D72B4 ; =0x0221A4C8
ldr r1, _021D72D4 ; =0x02216604
ldr r2, [r0, #0]
add r0, r4, #8
add r2, r2, #0x1000
ldr r2, [r2, #0xc1c]
mov r3, #0x40
add r2, r2, #4
bl DWC_Http_GetBase64DecodedResult
ldr r0, _021D72B4 ; =0x0221A4C8
ldr r1, _021D72D8 ; =0x0221660C
ldr r2, [r0, #0]
add r0, r4, #8
add r2, r2, #0x1000
ldr r2, [r2, #0xc1c]
mov r3, #0x12c
add r2, r2, #0x45
bl DWC_Http_GetBase64DecodedResult
ldr r1, _021D72DC ; =0x0221661C
add r2, sp, #0
add r0, r4, #8
mov r3, #1
bl DWC_Http_GetBase64DecodedResult
ldrsb r0, [sp]
cmp r0, #0x59
ldreq r0, _021D72B4 ; =0x0221A4C8
moveq r1, #1
ldrne r0, _021D72B4 ; =0x0221A4C8
movne r1, #0
ldr r0, [r0, #0]
add r0, r0, #0x1000
ldr r0, [r0, #0xc1c]
str r1, [r0, #0]
mov r0, #1
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
; .align 2, 0
_021D72B4: .word Unk_ov4_0221A4C8
_021D72B8: .word 0xFFFF9DF3
_021D72BC: .word Unk_ov4_022165E4
_021D72C0: .word Unk_ov4_022165EC
_021D72C4: .word errno
_021D72C8: .word 0xFFFF9E58
_021D72CC: .word Unk_ov4_022165F8
_021D72D0: .word 0xFFFFA240
_021D72D4: .word Unk_ov4_02216604
_021D72D8: .word Unk_ov4_0221660C
_021D72DC: .word Unk_ov4_0221661C
arm_func_end ov4_021D70C4
.data
.global Unk_ov4_02216590
Unk_ov4_02216590: ; 0x02216590
.asciz "ALLOC intwork"
.short 0x0
.global Unk_ov4_022165A0
Unk_ov4_022165A0: ; 0x022165A0
.ascii "FREE intwork"
.word 0x0
.global Unk_ov4_022165B0
Unk_ov4_022165B0: ; 0x022165B0
.asciz "https://nas.nintendowifi.net/ac"
.global Unk_ov4_022165D0
Unk_ov4_022165D0: ; 0x022165D0
.asciz "action"
.byte 0x0
.global Unk_ov4_022165D8
Unk_ov4_022165D8: ; 0x022165D8
.asciz "SVCLOC"
.byte 0x0
.global Unk_ov4_022165E0
Unk_ov4_022165E0: ; 0x022165E0
.asciz "svc"
.global Unk_ov4_022165E4
Unk_ov4_022165E4: ; 0x022165E4
.ascii "Date"
.word 0x0
.global Unk_ov4_022165EC
Unk_ov4_022165EC: ; 0x022165EC
.asciz "httpresult"
.byte 0x0
.global Unk_ov4_022165F8
Unk_ov4_022165F8: ; 0x022165F8
.ascii "returncd"
.word 0x0
.global Unk_ov4_02216604
Unk_ov4_02216604: ; 0x02216604
.asciz "svchost"
.global Unk_ov4_0221660C
Unk_ov4_0221660C: ; 0x0221660C
.ascii "servicetoken"
.word 0x0
.global Unk_ov4_0221661C
Unk_ov4_0221661C: ; 0x0221661C
.asciz "statusdata"
.bss
.global Unk_ov4_0221A4C8
Unk_ov4_0221A4C8: ; 0x0221A4C8
.space 0x4

View File

@ -1,42 +0,0 @@
.public sub_020A283C
.public DWCi_AUTH_MakeWiFiID
.public sub_020A3C5C
.public sub_020A3CAC
.public OS_CreateThread
.public OS_JoinThread
.public OS_IsThreadTerminated
.public OS_WakeupThreadDirect
.public OS_GetThreadPriority
.public OS_Sleep
.public OS_InitMutex
.public OS_LockMutex
.public OS_UnlockMutex
.public OS_GetTick
.public MI_CpuFill8
.public MI_CpuCopy8
.public strlen
.public strcmp
.public strtol
.public atoi
.public wcslen
.public _ull_div
.public ov4_021D316C
.public ov4_021D3410
.public ov4_021D3520
.public ov4_021D37D4
.public ov4_021D39AC
.public ov4_021D3C74
.public ov4_021D3E18
.public DWC_Auth_GetCalInfoFromWiFiInfo
.public DWC_Auth_SetCalInfoToHttp
.public DWC_Http_Create
.public DWC_Http_FinishHeader
.public DWC_Http_StartThread
.public DWC_Http_Abort
.public DWC_Http_Destroy
.public DWC_Http_Add_PostBase64Item
.public DWC_Http_ParseResult
.public DWC_Http_GetResult
.public DWC_Http_GetBase64DecodedResult
.public DWC_Http_GetRawResult
.public DWC_Auth_SetNasTimeDiff

View File

@ -1,21 +0,0 @@
.public sub_020A283C
.public OS_SPrintf
.public OS_SNPrintf
.public DC_InvalidateRange
.public OS_DisableInterrupts
.public OS_RestoreInterrupts
.public OS_GetMacAddress
.public OS_GetOwnerInfo
.public OS_Terminate
.public MI_CpuFill8
.public MI_CpuCopy8
.public RTC_GetDateTime
.public strlen
.public wcslen
.public DWC_Auth_GetCalInfoFromWiFiInfo
.public DWC_Http_Add_HeaderItem
.public DWC_Http_Add_PostBase64Item
.public DWC_AC_GetApType
.public DWC_AC_GetApSpotInfo
.public WCM_GetApMacAddress
.public WCM_GetApEssid

View File

@ -1,56 +0,0 @@
.public OS_SNPrintf
.public OS_CreateThread
.public OS_JoinThread
.public OS_IsThreadTerminated
.public OS_WakeupThreadDirect
.public OS_Sleep
.public OS_InitMutex
.public OS_LockMutex
.public OS_UnlockMutex
.public OS_GetTick
.public OS_GetLowEntropyData
.public MI_CpuFill8
.public MI_CpuCopy8
.public memmove
.public strlen
.public strcpy
.public strncpy
.public strcmp
.public strncmp
.public strstr
.public atoi
.public _ull_div
.public ov4_021D4744
.public ov4_021D47BC
.public ov4_021D4814
.public ov4_021D4828
.public ov4_021D4910
.public ov4_021D4CE0
.public DWC_Http_Add_HeaderItem
.public ov4_021D5010
.public ov4_021D501C
.public ov4_021D5074
.public ov4_021D50B4
.public ov4_021D515C
.public ov4_021D52B0
.public DWC_Http_GetResult
.public ov4_021D5790
.public DWC_Auth_Base64Encode
.public DWC_Auth_Base64Decode
.public CPS_SocRegister
.public CPS_SocUnRegister
.public CPS_SocBind
.public CPS_SocUse
.public CPS_SocRelease
.public CPS_TcpConnect
.public CPS_TcpShutdown
.public CPS_TcpClose
.public CPS_SocRead
.public CPS_SocConsume
.public CPS_SocWrite
.public CPS_SocGetLength
.public CPS_SocFlush
.public CPS_Resolve
.public CPS_SetRootCa
.public CPS_SslAddRandomSeed
.public CPS_SetSsl

View File

@ -1,6 +0,0 @@
.public RTC_GetDateTime
.public RTC_ConvertDateTimeToSecond
.public strlen
.public strcpy
.public strcmp
.public atoi

View File

@ -1,36 +0,0 @@
.public sub_020A283C
.public OS_CreateThread
.public OS_JoinThread
.public OS_IsThreadTerminated
.public OS_WakeupThreadDirect
.public OS_GetThreadPriority
.public OS_Sleep
.public OS_InitMutex
.public OS_LockMutex
.public OS_UnlockMutex
.public MI_CpuFill8
.public strlen
.public strncpy
.public strcmp
.public atoi
.public DWC_Auth_Create
.public DWC_Auth_Abort
.public DWC_Auth_Destroy
.public DWC_Auth_Join
.public DWC_Auth_GetError
.public DWC_Auth_GetResult
.public DWC_Auth_GetCalInfoFromNVRAM
.public DWC_Auth_SetCalInfoToHttp
.public DWC_Http_Create
.public DWC_Http_FinishHeader
.public DWC_Http_StartThread
.public DWC_Http_Abort
.public DWC_Http_Destroy
.public DWC_Http_Add_PostBase64Item
.public DWC_Http_Add_Body
.public DWC_Http_ParseResult
.public DWC_Http_GetResult
.public DWC_Http_GetBase64DecodedResult
.public ov4_021D5AB0
.public ov4_021D5B38
.public ov4_021D6A44

View File

@ -1,19 +0,0 @@
.public OS_IsThreadTerminated
.public OS_GetThreadPriority
.public OS_Terminate
.public MI_CpuFill8
.public strcmp
.public atoi
.public DWC_Auth_GetCalInfoFromNVRAM
.public DWC_Auth_SetCalInfoToHttp
.public DWC_Http_Create
.public DWC_Http_FinishHeader
.public DWC_Http_StartThread
.public DWC_Http_Destroy
.public DWC_Http_Add_PostBase64Item
.public DWC_Http_ParseResult
.public DWC_Http_GetResult
.public DWC_Http_GetBase64DecodedResult
.public DWC_Auth_SetNasTimeDiff
.public ov4_021D70C4
.public DWCi_SetError

Some files were not shown because too many files have changed in this diff Show More