mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-03-21 17:55:13 -05:00
Include sdk subprojects as wraps
This commit is contained in:
parent
31483189f8
commit
a4809c2133
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -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-*/
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
89
meson.build
89
meson.build
|
|
@ -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]
|
||||
)
|
||||
|
||||
|
||||
############################################################
|
||||
|
|
|
|||
8
subprojects/NitroDWC.wrap
Normal file
8
subprojects/NitroDWC.wrap
Normal 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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -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
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
.public ov4_021E62EC
|
||||
.public ov4_021E6588
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
.public ov4_021E62EC
|
||||
.public ov4_021E63C0
|
||||
.public ov4_021E6B04
|
||||
.public ov4_021E73FC
|
||||
.public WCM_StartupAsync
|
||||
.public WCM_GetPhase
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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");
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
libdwcaccount_srcs = files(
|
||||
'dwc_init.c',
|
||||
'dwc_account.c'
|
||||
)
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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"
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
.public RTC_GetDateTime
|
||||
.public RTC_ConvertDateTimeToSecond
|
||||
.public strlen
|
||||
.public strcpy
|
||||
.public strcmp
|
||||
.public atoi
|
||||
|
|
@ -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
|
||||
|
|
@ -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
Loading…
Reference in New Issue
Block a user